密码算法支持

概述

区块链就是多种密码算法的巧妙组合,再加以共识机制,实现分布式去中心的功能。 ChainSQL区块链目前在非对称密码算法、哈希算法、对称密码算法三类上,每一类都进行算法扩充,实现多算法兼容:

  • 非对称密码算法 :支持secp256k1,ed25519, 国密sm2算法;

  • 哈希算法 :支持sha系列算法,国密sm3算法;

  • 对称密码算法 :支持AES,国密sm4算法;

不同的算法有不同的性能和使用场景,可以根据自己的需求选择合适的算法。

目前ChainSQL支持以下几种算法组合使用方式:

  • secp256k1/ed25519 + sha + AES

    节点只需指定node_alg_type为secp256k1或者ed25519即可,SDK需使用secp256k1或者ed25519算法的公私钥账户;

  • sm2 + sm3 + sm4

    节点只需指定node_alg_type为gmalg即可,SDK需使用国密算法的公私钥账户;

国密算法

目前ChainSQL对国密算法有两种支持方式:

  • 硬件加密,使用硬件设备提供国密算法运算;

  • 软件加密,使用北京大学关志副研究员基于openssl开源的GMSSL项目;

两种方式各有优点,硬件更加安全,可以保证私钥保存在硬件设备中,无法导出,但是硬件成本高; 软件使用方便,跟其他算法使用方式无异,成本低。

使用说明

1. 组建区块链网络 在组建区块链网络时,需要确定节点使用何种密码算法,在 [crypto_alg] 配置项中确定密码算法, 并使用对应的密码算法使用 validation_create 命令生成验证节点需要的validation_seed和validation_public_key。

重要

所有参与统一区块链网络的节点必须使用同一种密码算法。

2. 生成用户账户 可以通过命令行 wallet_propose 命令或者使用其他交互接口的生成账户方式,生成与节点相同算法的公私钥对及账户。

  1. 使用刚才生成的账户,在不同的交互接口(命令行,SDK等),进行交易构建发送。