主页 > imtoken新版本 > 本文让你成为密码算法专家:国内外算法的秘密

本文让你成为密码算法专家:国内外算法的秘密

imtoken新版本 2023-05-25 05:20:55

MD4、MD5(还记得电影和文件下载的 MD5 校验和吗?)

MD (Messge Digest) 4 是 Rivest 在 1990 年设计的一种单向哈希函数,可以生成 128 位的哈希值。现在已经不安全了。 MD(Messge Digest)5 是 Rivest 在 1991 年设计的一种单向哈希函数,可以生成 128 位的哈希值。 MD5强大的抗碰撞能力被打破了。也就是说,现在可以生成具有相同哈希值的两条不同消息,因此不再安全。

SHA-1、SHA-256、SHA-384、SHA512

SHA-1 是由 NIST(美国国家标准与技术研究院)设计的一种单向哈希函数,可以生成 160 位的哈希值。现在已弃用。 SHA-256、SHA-384、SHA512 都是 NIST 设计的单向哈希函数,其哈希值长度分别为 256 位、384 位和 512 位。这些单向哈希函数统称为 SHA-2。

SHA-1的强抗碰撞性在2005年就被打破了,但是SHA-2还没有被打破。

单向哈希函数可以识别“篡改”,但不能识别“伪装”,则需要认证。

4.消息验证码

消息认证码(Message Authentication Code)是一种确认完整性和进行认证的技术,简称MAC。

消息认证是指“消息来自正确的发送者”的属性。消息认证码的输入包括任意长度的消息和发送方和接收方共享的密钥,可以输出固定长度的数据,成为MAC值。

要计算 MAC,必须持有共享密钥。没有共享密钥的人无法计算 MAC 值。消息认证码使用这个属性来完成认证。此外,与单向哈希函数的哈希值一样,即使消息发生 1 位变化,MAC 值也会发生变化。消息身份验证代码使用此属性来确认完整性。消息认证码可以说是与密钥关联的单向哈希函数。

可以使用单向哈希函数和对称密码等技术来实现消息验证码。

MAC 和 HASH 比较

MAC进程

HMAC

HMAC是一种使用单向哈希函数构造消息认证码的方法,其中HMAC的H表示哈希。

消息认证码不能解决所有问题,比如“向第三方证明”,“防止拒绝”,这两个问题都不能通过消息认证码解决。

5.数字签名

消息认证码之所以不能防止拒绝,是因为消息认证码需要在发送者和接收者之间共享一个密钥。

数字签名是一种身份验证技术,可以向第三方验证消息并防止通信对象拒绝它们。

由公钥和私钥组成的密钥对也用于数字签名,但这两个密钥的用法与公钥密码学相反,即用私钥加密相当于生成一个签名,用公钥解密相当于验证签名。

生成签名并验证签名

实现数字签名的算法如下:

RSA

RSA是一种公钥加密算法,它的名字是由它的三位开发者Ron Rivest、Adi Shamir和Leonard Adleman(Rivest-Shamir-Adleman)姓氏的首字母组成的。

用RSA生成签名和验证签名的过程可以用以下公式表示:

Signature=message^D mod NMessage从signature=ciphertext^E mod N得到

p>

EIGamal

EIGamal 是 Taher EIGamal 设计的一种公钥算法。利用在 mod N 中找到离散对数的困难。EIGamal 方法可用于公钥加密和数字签名。

动态搜索广告

DSA(Digital Signature Algorithm)是一种数字签名算法,是 NIST 在 1991 年制定的数字签名规范。

DSA 是 Scnorr 算法和 EIGammal 方法的变体,只能用于数字签名。

ECDSA

ECDSA(Elliptic Curve Digital Signature Algorithm)是一种使用椭圆曲线密码学实现的数字签名算法。

拉宾模式

Rabin Mode 是 M.O.Rabin 设计的一种公钥算法。利用 mod N 下求平方根的难点。Rabin 方法可用于公钥密码学和数字签名。

数字签名不仅可以识别篡改和伪造,还可以防止拒绝,但不能确认用于验证签名的公钥是否属于真正的发送者。

为了确认公钥是否合法,可以对公钥进行数字签名,即证书。

6.证书

公钥证书 (PKC) 实际上与驾驶执照非常相似。它包含个人信息,例如姓名、组织、电子邮件地址和地址。 ,以及属于此人并由证书颁发机构 (CA) 进行数字签名的公钥。只要我们看到公钥证书,就可以知道认证机构认为公钥确实属于这个人。公钥证书也简称为证书。

证书颁发机构是可以确认“公钥确实属于此人”并可以生成数字签名的个人或组织。

消息的发送者使用认证权限将密文发送给消息的接收者

X.509

X .509 是证书生成和交换的标准规范。

7.PKI(身份认证,银行U盾就是这个系统)

PKI(Public-Key Infrastructure)被制定为能够更有效地使用公钥的一系列规范和规范的总称。 X.509 也是一种 PKI。

各种按键

1.对称密码的密钥和公钥密码的密钥

2.消息验证码密钥和数字签名密钥

3.保密密钥和认证密钥

4.会话密钥和主密钥

当我们访问以 开头的网页时,网络服务器和浏览器之间会发生基于 SSL/TLS 的加密通信。这种通信中使用的密钥是一次性密钥,仅限于当前通信,不能用于下一次通信。像这样每次通信只能使用一次的密钥称为会话密钥。

与每次通信都更改的会话密钥相比,被重复使用的密钥称为主密钥。

5.用于加密内容的密钥和用于加密密钥的密钥

一般来说,加密的对象是消息(内容),这种情况下使用的密钥称为CEK(Contents Encrypting Key);相对而言,用于加密密钥的密钥称为KEK(Key Encrypting Key)。

上面提到的会话密钥用作 CEK,而主密钥用作 KEK。

CEK 和 KEK

CEK 和 KEK.png

Diffe-Hellman 密钥交换

Diffe-Hellman 密钥交换是 Whitfield Diffe 和 Martin Hellman 在 1976 年共同发明的一种算法。使用该算法,通信双方可以通过交换一些公开的信息来生成一个共享的秘密号码,这个秘密号码可以用作对称密码的密钥。

Diffee-Hellman 密钥交换

8. nonce(比特币钱包的最爱)

随机数的使用

随机数的性质

真随机数生成器

硬件生成的随机数序列是从传感器收集的。它是从有关自然现象的信息中生成的,例如热量和声音的变化,这些信息几乎无法预测和再现。像这样的硬件设备称为随机数发生器。

伪随机数生成器

可以生成随机数的软件称为伪随机数生成器。因为软件本身无法生成真正的随机数,所以加了一个“伪”字。

9.国家密码算法:中国自主的密码算法标准(国家金融安全的核心,必须大力支持)

保证安全最根本的方法是基础软件,基础硬件由自身控制。目前,当我国短期内无法本地化时,数据加密是最好的办法。如果加密算法和实现都是国外提供的,那么安全性从何而来?因此,我国国家密码管理局发布了自主可控的国家加密算法,包括SM1\SM2\SM3\SM4算法

SM1 算法

分组密码算法是分组对称加解密算法,分组长度为128位,密钥长度为128位。仅以IP核的形式存在于芯片中。利用该算法,开发了一系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务和国民经济的各个应用领域(包括国家政务、警务等)。重要领域)。

SM4 分组密码算法

它是一种特殊的分组密码算法,用于无线局域网和可信计算系统。该算法的块长度为 128 位,密钥长度为 128 位。 SM4算法是我国制定WAPI标准不可或缺的一部分,也可用于其他环境下的数据加密保护。

SM1算法和SM4算法是我国自主设计的分组对称密码算法,用于实现数据加密/解密操作,保证数据和信息的机密性。 SM1算法和SM4算法都可以用于网络数据的加密保护和存储的数据或文件的加密保护。

SM1算法和SM4算法还可以抵抗分组密码算法的各种攻击方法,包括穷举搜索攻击、差分攻击、线性攻击等,并且在实际应用中可以抵抗这些攻击方法。国际通用分组密码算法,包括国际DES算法、AES算法、IDEA算法等。

SM2算法

国家密码管理局于2010年12月17日发布,全称椭圆曲线算法。椭圆曲线不是椭圆,之所以叫椭圆曲线,是因为它们用三次方程表示,类似于计算椭圆周长的方程。

摘要算法——自制SM3

摘要函数在密码学中占有重要地位,广泛应用于数字签名、消息认证、数据完整性检测等领域。总结函数一般被认为满足三个基本性质:碰撞鲁棒性、原根鲁棒性和第二原根鲁棒性。 SM3密码摘要算法是中国国家密码管理局于2010年发布的中国商用密码哈希算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是基于SHA-256的改进算法。 SM3算法采用Merkle-Damgard结构,消息包长度为512位,摘要值长度为256位。

SM3算法的压缩函数与SHA-256的压缩函数结构类似,但SM3算法的设计更复杂。例如,每一轮压缩函数使用两个消息词。

到目前为止,SM3算法的安全性还是比较高的。

当然,仅仅因为算法本身是安全的并不意味着它是安全的。在许多过程中,可能会出现漏洞。比如保险柜虽然很强大,但是如果保险柜的钥匙被偷了比特币钱包密码是几位数,保险柜就不是保险柜了。

因此,无论算法的数学理论多么强大,如果运行算法的过程不安全,很容易泄露密钥。

攻击算法的常用方法是SCA(侧信道攻击)。算法的关键很容易被攻击。 RSA/AES/DES 都可以被破解。国密算法 SM2、SM4 也是如此,它是遵循国际算法。

因此,金融领域的产品需要通过算法的安全认证。在这里,具有独立算法引擎的安全硬件非常重要。认证过程是对多种算法实现的安全性进行认证。具体来说就是做各种攻击比特币钱包密码是几位数,看能不能拿到key。同样,国密局要求内置国密算法的安全产品必须达到算法实现的安全性,才能通过国密认证。