首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈 Shabal

本文大概1888字,阅读需6分钟

Shabal 名字来源于一位名为S´ebastien Chabal 的法国橄榄球运动员,因为其比赛时的勇猛表现和他那标志性的胡须和长发,被人起了个绰号叫“穴居人”。

近期区块链中PoC(Proof of Capacity)共识机制越来越火。在市面中正在使用PoC共识机制的币就有 Burst、BTCHD 等。由于 PoC 的自身机制,使得其对加密函数的复杂度和运算速度有一定的要求,而 Shabal 函数正好可以实现这个特殊的需求,所以在 BurstCoin 中,广泛使用 Shabal 算法作为 PoC 共识的基础。

Shabal 名字来源于一位名为 S´ebastien Chabal 的法国橄榄球运动员,因为其比赛时的勇猛表现和他那标志性的胡须和长发,被人起了个绰号叫“穴居人”,可见当时 Shabal 的团队对于他们研发的算法的期望是很高的。

Shabal 函数是加密哈希函数的一种,由法国代理商(ANR)组织和研究的一个项目,其团队成员均为业界有一定影响力的人物。Shabal 在名字上与常用的另一种加密哈希函数 SHA-256 相似,但实则完全不同。SHA-256 全称为(Secure Hash Algorithm),即安全哈希算法,是美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数的一个变体。而 Shabal-256 是 Shabal 函数的一个变体,作为标准哈希函数的竞争者之一被提交给 NIST,虽然最后 Shabal 并没有被选中,但是因为其优秀的性能和特点,也越来越广泛地被大家所认知。

Shabal 算法

Shabal算法是一种很慢的算法,允许输入任意长度的有序位序列,甚至是一个空序列。也适应任何长度的字节流,但是由于考虑到安全性,适用长度最好小于 2^7 位。输入长度可以是任何整数值和8的倍数。假如给定一个bit序列,按其左右顺序索引编号,即第一位的索引为0。使用左和右来描述有序的位序列:序列中的第一位称为最左位,最后一位称为最右位。

Shabal的使用的数据(数据的预处理):首先输入序列,即以默认方式添加额外的长度不等于0并且是32的倍数的bit数加入序列,然后将序列分成8位组,此时一个组即为一个byte(字节)。第一个字节由最左边的八位组成,接下来的八位为第二个字节,依此类推。由于输入的序列长度是32的倍数,所以这个过程中会产生整数个字节,并且字节数是4的倍数。每个字节的值都在0和255之间(包括255)。

此时字节值可以看做是以 2 为基底从 8 位的序列中派生出来的,此时最左边的字节是最重要的(其代表了数的正负)。如果一个八位的位组被表示为 b0,b1,b2...b7,那么这个字节的值等于

在 byte 字节产生时,会给最左边的位自动设置为 1(即表示为一个正数)。所以当所给这个字节输入一个 8 位的数时,其数的最大值是 128,因为最左边的位数不表示数的大小,而表示的是数的正负。

Shabal 算法的优点和缺点:

优点:

设计简单:Shabal 在设计的一个目标就是保持简单的同时保证其安全性。

安全性:Shabal 的结构式不可微的,并且有足够良好的次原象攻击抗性(这一点是可以被证明的),并且这一点也是 Shabal 算法与其他的哈希算法相比的主要优势之一。

性能相对较好:Shabal 中没有使用其他加密算法中非常流行的 S-Box ,因为它的性能成本非常高,对于硬件和软件都是如此。虽然使用它能够抵抗各种各样的攻击,但是在这里并没有采用它,所以 Shabal 能够拥有相对较好的性能

缺点:

速度较慢

上图表示了在不同的平台中不同算法的表现。Shabal 的表现处于中下游水准,所以Shabal是一个相对来说较慢的算法。

2.数据量相对较大:

上图表示了不同算法的数据量,Shabal 算法也处于一个比较尴尬的位置,相对于其他算法来说,Shabal的数据量是比较大的。

Shabal

由上述内容可以知道,Shabal 算法是很适合 PoC 共识的一种算法,但是在数字货币中,并不是只有一种加密算法存在,每一种币都会涉及到几种算法,比如 BurstCoin中不仅仅使用了 Shabal 256,还使用了 Curve25519、RIPEMD160 等等,在不同的地方实现不同的功能,在此先简单介绍,如果想要了解更多,请关注我们。与此同时,第一个 Shabal256 应用将在 Gravity 计算平台启用,敬请关注。

写在最后

如果你也对世界充满好奇和探索精神,加入我们!Gravity分布式计算技术社区是一个长期关注大数据和区块链底层技术发展的社区,会定期举办社区活动,讨论底层大数据和区块链技术的发展。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190814A0TF6R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券