复制成功

分享至

主页 > 比特币 >

详解 Sui 密码学中的灵活性

2023.01.08

原文作者:SophonLabs

Sui 在设计底层技术时考虑到了密码学的灵活性。该系统支持多种密码算法和 cryptography primitives(密码原语),并可以在它们之间快速切换。开发人员不仅可以为系统选择同类最佳的 best-of-breed cryptography(公开密钥密码体系),还可以实施最新的 algorithms(可用算法)。

Sui 在一个统一的类型别名或整个存储库共享的枚举包装器下定义其 cryptography primitives(密码学原语),例如公钥、签名、聚合签名和哈希函数。对这些原语进行更改会影响应用程序的所有组件。开发人员可以快速更新应用程序密码并确保统一的安全性。

目前 Sui 通过执行交易端点支持以下用户交易签名方案:

1.Pure Ed 25519 

2.Secp 256 k 1 ECDSA

用户账户密钥对的接口实现

下面是 Sui 中密钥对表示的 Demo。扩展到新的签名方案非常简单:

1.把它添加到 enum(枚举类)

2.实现 fastcrypto 库中定义的 KeyPair trait

详解 Sui 密码学中的灵活性

用户签名通过扩展一个额外的 1 字节标志来序列化,该标志标识关联的签名方案。尽管 Sui 团队考虑过使用 Multiformats(用于自描述数据的协议),但其可变标志长度的性质使得序列化存在问题。相反,Sui 采用了单字节零起始标志模型。签名方案及其对应的标志定义如下:

详解 Sui 密码学中的灵活性

当用户提交签名交易时,交易执行指定以下参数:

  1. BSC(Binary Canonical Serialization)序列化 transaction bytes 为 Base 64 
  2. Signature scheme flag(签名方案标识),可以传参为“ed 25519 ”或“secp 256 k 1 ”
  3. 公钥的 Base 64 格式
  4. 其 scheme 对应的签名的 Base 64 

如下代码是执行已签名的交易,curl 如果成功则返回证书和交易结果。

详解 Sui 密码学中的灵活性

如下代码展示了 Sui 的全节点如何将 API 请求字段组装成序列化签名 flag || signature || pubkey 并在执行前进行验证检查。

详解 Sui 密码学中的灵活性

Sui 支持不同的签名方案的缘由剖析

使用 secp 256 k 1 椭圆曲线的 ECDSA 被比特币、以太坊和其他加密货币广泛采用。用户可能更喜欢这种签名方案,因为他们想利用现有的钱包和托管密钥管理工具,例如阈值签名(国内密码学中的 翻译为“门限密码体系的门限签名”)和多签。此外,它与云基础设施和硬件安全模块(常见的如密码机 uk 硬件钱包等)具有更好的兼容性,同时支持从消息和签名负载中恢复公钥。

同时,Ed 25519 是一种更现代的签名方案,具有确定性快速签名和简化数学的特点。虽然 Typescript SDK 支持这两种签名方案。但是 Sui 还是选择 Ed 25519 作为推荐的 Sui 钱包算法。

因为 Sui 支持不同签名方案,在后面使用 secp 256 r 1 曲线(也称为 NIST-P 256 )添加诸如 ECDSA 之类的方案将花费很少的精力,这条曲线目前是原生手机和未来密码学中都要支持的一条曲线,也是目前社区一个普遍要求的功能。

对这种灵活的签名方案支持还使 Sui 系统与不安全的空签名方案进行基准测试。对于像 Sui 这样的快速执行系统,并行设计签名和验证也发生在事务级别,而不仅仅是区块层,加密灵活性让 Sui Check 出加密操作给系统带来的开销。这些基准测试结果已经能够为 Sui 提供识别瓶颈和优化方向。


授权密钥对


Authority on Sui(验证者集合)持有三个不同的密钥对:

  1. Protocol keypair 协议密钥对
  2. Account keypair 帐户密钥对
  3. Network keypair 网络密钥对

Protocol keypair 协议密钥对

如果用户签名的交易经过验证,协议密钥对会提供授权签名。当为用户交易提供签名的权力机构的占比超过所需的三分之二门槛时,Sui 将执行交易。目前选择 BLS 12381 方案来快速验证给定数量的授权机构的聚合签名。特别是决定使用 minSig BLS 模式,根据该模式,每个单独的公钥为 96 字节,而签名为 48 字节。后者很重要,因为通常验证者在每个纪元开始时注册一次他们的密钥,然后他们不断地签署交易;因此 Sui 优化了最小签名大小。

注意!使用 BLS 方案,可以聚合独立签名,从而产生单个 BLS 签名有效负载。Sui 还将聚合签名与bitmap(位图)一起表示签名的验证器。这有效地将当局的签名大小从( 2 f + 1) × BLS_sig 大小减少到只有一个 BLS_sig 有效负载,这反过来具有网络开销优势,可以独立于验证器集大小的压缩交易证书。

免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

加⼊OKEx全球社群

和全球数字资产投资者交流讨论

扫码加入OKEx社群

相关推荐

industry-frontier