区块链相关的加密算法研究

加密算法总的可以分为两种,对称加密与非对称加密算法。
RSA是1977年三位数学家Rivest,Shamir,Adleman设计的一种非对称的加密算法,该算法破解的关键在于寻找大数的两个质数因子。大数长度越大,破解难度也就越大,目前768位的密钥已被破解,安全性建立在公钥长度足够的基础上,如iOS9中引入的新特性ATS中对公钥长度就有明确的要求,至少为2048位。
“RSA是第一个也是目前唯一一个既能用于密钥交换又能用于数字签名的算法。
1.RSA算法
涉及的定理概念
1>.欧拉定理
欧拉函数φ(n): 小于等于n的正整数中与n构成互质关系的数的数目
条件: 如果两个正整数a和n互质,则:
2> 费马小定理
3>模反元素
密钥生成过程
1 随机选择两个大质数p, q;
2 n = p * q, φ(n)=(p-1)(q-1);
3 e 是随机小于φ(n)的正整数,且与φ(n)互质。
4 计算e对于φ(n)的模反元素d, ed = 1 (mod φ(n)) —> ed -1 = k φ(n)
5 公钥(n,e) 私钥(n, d)
过程与证明
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
常见的对称加密算法
from SSL常见加密算法

  • DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
  • 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
  • AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高
    常见的非对称加密算法
  • RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
  • DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
  • ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
    哈希算法
    常用的HASH算法:MD5和SHA,哈希算法的特点: 不可逆和无冲突(不存在不同字符的哈希结果是一样的)。
  • MD5:加密后长度为32
  • SHA: 包括SHA1,SHA224,SHA256,SHA384,SHA512,长度分别为40,56,64,96,128。

hyper ledger fabric-ca加密
PKI(公钥基础设施)技术的核心是认证机构(简称CA)。认证系统的关键是密钥算法的实现,在对称与非对称密码算法实行交互的基础上进行数字认证设计。
算法和密钥大小
CSR可以定制生成X.509证书和支持椭圆曲线(ECDSA)的密钥。以下设置是曲线素数256V1的椭圆曲线数字签名算法(ECDSA)和签名算法ecdsa-with-SHA256.
bccsp(blockchain crypto service provider)

bccsp:
    default: SW
    sw:
        hash: SHA2
        security: 256
        filekeystore:
            # The directory used for the software file-based keystore
            keystore: msp/keystore

算法和密钥大小的选择是基于安全需求的。
(ECDSA)提供下列关键尺寸选择

算法选择
ecdsa-with-SHA256属于椭圆曲线非对称加密算法,包含一种椭圆曲线参数,同时在证书签名时使用椭圆曲线和基于SHA-256杂凑算法组合。
X509证书
X509证书包括证书主题和一系列属性数据。证书由证书版本号,证书序列号,用于证书签名的签名算法,版本号,证书有效期,公钥信息等组成。
CA发放证书用于用户相互认证的过程,这个认证过程要求这个用户获得另一个用户的公钥。为了保证所用用户相信这个公钥,CA中心采用数字签名技术来保证信息的完整性和签名者的不可抵赖性。CA中心也可增加证书拓展,包括CA和其他用户的额外信息。
所有的证书路径开始于一个信任根。一个信任根是一个用户信任的CA。信任根的公钥以信任根证书的形式被发送到所有证书的用户。一个信任根证书包括:

-自签名,用与公钥对应的私钥进行签名,公钥包含在对象公钥域里。

-在主题公钥域中包含任何需要的参数,用于证书数字签名的算法需要这些参数。

-只有极少或扩展项不包含扩展项。

-被保存在受保护的存储器里面,或者其他措施防止侵入者改动。

-以授权的方式被传递到应用或用证书的系统。在信任根上的签名不能鉴别该证书。

被证书用于应用的信任根可能是一个给它颁发证书的CA,也可能是CA中的最顶层。X509

猜你喜欢

转载自blog.csdn.net/weixin_42388551/article/details/84281823
今日推荐