《演算法图鉴》

石田保辉,宫崎修一. 2017[2015]. 《演算法图鉴》. 陈彩华译. 台北:脸谱出版

安全性算法内容整理

传输数据会产生的四个主要问题

窃听(Eavesdrop):数据在传输时被第三方偷取。因此需要加密。

欺骗(Spoofing):第三方伪装成接收方接受数据,或伪装成发送方发送数据。用消息认证码和数字签名防范此问题。

篡改(Falsification):第三方在传输过程中改动数据。用消息认证码和数字签名防范此问题。

抵赖(Repudiation):发送方否认已发出的消息。用数字签名防范此问题。

 

哈希函数(Hash Function)

根据输入数据生成固定长度的不规则值(哈希码)的函数。

输入完全不同的数据时,有很低的概率得到相同的哈希码,发生哈希碰撞(Hash Collision)。

例如:MD5(Messege-Digest Algorithm 5),SHA-1(Secure Hash Algorithm 1),SHA-2(Secure Hash Algorithm 2,最普遍和安全)。

 

对称加密算法(共享密钥加密算法,Shared-Key Cryptosystem)

发送和接收方使用同一个密钥解密和加密。

例如:凯撒密码(Caesar cipher),AES(Advanced Encryption Standard),DES(Data Encryption Standard),一次性密码本(One-Time Pad)。

案例:英格玛(Enigma)。

意义和特点:易于设计,加密和解密的速度快。但有密钥被偷窥的风险,或者说密钥传输比较困难。

 

非对称加密算法(公开密钥加密算法,Public-Key Cryptosystem)

接收方设计一对加密公钥和解密私钥,将公钥公开,发送方使用公钥加密,接收方使用私钥解密。

例如:RSA,圆锥曲线密码(ECC,Elliptic-Curve Cryptosystem)。

案例:紫操学姐寻人帖(笑)。

意义和特点:设计困难,加密和解密更费时。

 

混合加密系统(Hybrid Cryptosystem)

接收方设计一对加密公钥A和解密私钥B,将A公开。发送方设计另一个密钥C,使用A公钥加密C后发送给接收方。接收方使用B解密得到C。

此后发送和接收方使用同一个密钥C解密和加密。

案例:SSL(Secure Sockets Layer),TLS(Transport Layer Security)。

意义和特点:解决非对称加密算法费时的问题。因此兼具安全性和处理速度。

 

迪菲-赫尔曼密钥交换(Diffie–Hellman Key Exchange)

A、B两方共享原始公钥P,分别设计私钥SA,SB。

根据公钥P,分别合成新的公钥P-SA,P-SB并直接发送给对方。

根据手上的私钥和新获得的公钥,A、B进一步合成密钥P-SB-SA,P-SA-SB。

密钥合成的方法要求合成结果与顺序无关,因此密钥P-SB-SA和P-SA-SB是等价的,都称为P-SA-SB。

现在双方可以用P-SA-SB为密钥实现非对称加密传输。而第三方根据公钥P,P-SA,P-SB无法合成密钥P-SA-SB。

例如:基于离散对数问题(Discrete Logarithm Problem)设计的密钥合成方法:

P为底数G和被除数Q(一个非常大的素数)。

SA为指数A。SB为指数B。

P-SA为G^A mod Q。P-SB为G^B mod Q。

P-SA-SB为(G^A mod Q)^B mod Q。

P-SB-SA为(G^B mod Q)^A mod Q。

P-SB-SA和P-SA-SB是等价的,而第三方根据P,P-SA,P-SB无法合成P-SA-SB。

意义和特点:解决对称加密算法密钥传输困难的问题。

 

消息认证码(Message Authentication Code,MAC)

MAC是对信息(在安全性算法中,信息是传输的密文)进行处理得到的认证码。MAC不包含原始内容,只是作为识别用。

在传输信息时也传输MAC进行核对以防篡改,

例如:HMAC(Hash-based MAC),OMAC(One-key MAC),CMAC(Cipher-based MAC)

 

数字签名(Digital Signature)

发送方设计一对加密私钥和解密公钥,将公钥公开,发送方使用私钥加密信息制作数字签名,接收方使用公钥解密验证数字签名。因此只有发送方能制作与信息相对应的合法的数字签名。

意义:防范欺骗、篡改和抵赖。

 

数字证书(Digital Certificate)

证书授权中心(Certificate Authority,CA)是独立于发送方和接收方的机构。它用于解决无法确认公钥是否为发送方发送的问题。

发送方A欲将原始信息P0(发送方设计的公钥)传送给接受方B前,首先在CA申请取得数字证书。CA设计与A的身份信息对应的一组加密私钥S1和解密公钥P1。CA用S1加密P0得到P0-S1,发送给A。A将P0-S1告知B。B再根据A的身份信息(电子邮件)从CA处获得公钥P1,用P1解密P0-S1得到A的原始信息P0。因第三方无法以A的身份信息向CA获得数字证书,因此它可以防止第三方伪装成A发送信息。

当发送方为网站时,证书即是服务器证书(Server Certificate)。

CA的真实性由上一层CA认证,因此CA呈现一种套娃的树状担保结构。最上层的根认证机构(Root CA)多为大企业或政府机关。这形成了公开密钥基础建设(Public Key Infrastructure,PKI)。

Ref

https://blog.csdn.net/baidu_22254181/article/details/82594072