PKI:编码和算法
ASN.1
Abstract Syntax Notation One 抽象文法描述语言。西方移动电话中协议消息就是采用ASN.1描述的,使用BER
Basic Encoding Rules编码规则。
SNMP
Simple Network Management Protocol也是用ASN.1对所有数据进行描述的。
所以这种语言虽然一般人陌生,但是是有用的,它为抽象数据结构的描述说明定义了一种记法。核心就是抽象。人类要是不会抽象,社会发展简直要停滞。
ASN.1成为描述通信协议/消息的标准文法。还可以用于生成应用程序编程语言代码(通过ASN.1软件工具)。
ASN.1的编码规则是把ASN.1语言说明的数据转化为一种标准格式的系列规则。编码规则有BER,DER
Distinguished Encoding Rule。
说了那么多,来看一个ASN.1描述。编码过程就不看了,实在太枯燥了。
下面要说密码算法了
- 对称的
DES
是IBM提出的。1977年被美国家标准局颁布为商业数据加密标准。它是分组的,就是将数据以64位作为分组对数据进行加解密,密钥长度是56位(8个字节,64位,每个字节的第8位做奇偶校验,所以实际是56位)。3DES
triple DES. 用3个56位的密钥依次进行3次加密。简单粗暴。AES
1997年美国开始征集高级加密标准AES来替代DES,经过多个候选算法打擂台后,2000年推荐Rijndael作为AES,01年发布,02年成为正式标准。它是一种迭代分组密码。既然是迭代,你就知道会有很多轮的加密流程了。SM4
国家密码管理局2006年发布。也是迭代分组密码算法,密钥长度128位。
- 非对称的
RSA
这个名称是美国3个科学家的首字母来命名的,1978年正式发表。算法基于数论中的大数分解难题。ECC
Elliptic Curve Cryptography 椭圆曲线密码体制,1985年提出。椭圆曲线离散对数问题很难求解。计算量小,速度快,能以更小的密钥长度来产生于其他算法相同等级的安全性。(对称密钥128位的安全水平 == 3072位RSA密钥 == 256位ECC)SM2
国家密码管理局2012年发布的椭圆曲线公钥密码算法。
- 摘要的
MD5
以512位分组来处理输入,产生128位散列值。SHA1
以512位分组来处理输入,产生160位散列值。SM3
国家密码管理局2012年发布的摘要算法。
Mode of Operation 运算模式,也叫工作模式,是分组密码算法,如何对多个分组进行处理(分组与分组之间的关系)的技术方案,有ECB、CBC、CFB、OFB等。
对上述密码算法的扩展,有MAC和HMAC。
MAC
Message Authentication Code 消息认证码。对消息使用密码算法和密钥进行处理,生成一个固定大小的小数据块,就是MAC值。收消息的人通过MAC值验证消息的完整性和来源。之前双方要协商好密码算法和密钥。常用的有:
CBC-DEC-MAC
基于DES/3DES。MAC值取最后一个分组密文最左端的4-8字节。既然是部分值,好奇怎么能保证完整性呢?
HMAC
Keyed-Hashing for Message Authentication 基于MD5或SHA1。
OTP One-Time Password 一次性口令。还基于密码算法和密钥,对同步因子进行处理后,得到口令,同步因子随时变化,所以每次口令不同。因为口令有很短的时效性,所以这个思路在短信验证码上广泛使用,但是应该没什么算法,应该就是简单的产生几位随机数字。还有工行推出过电子密码器,就是在交易时,比如转账时,在密码器输入一些要素(金额、账号等),得到一个密码,用于转账验证,不知道是不是这个技术。
数字签名/电子签名,就用到了摘要算法和非对称算法。先将数据电文/信息(合同或其他文件)生成摘要,然后用私钥对摘要进行签名(加密),将信息和签名一起发出。收到者也生成摘要,再用公钥对签名进行验签(解密),然后和摘要对比,一致就表示身份和信息都对的上。谁也别想赖。
还有数字信封,结合对称和非对称加密算法,扬长避短。
还有Base64
编码方式,在网络上常用,将任意二进制数据编码成64个可打印的ASCII码字符。
- 点赞
- 收藏
- 关注作者
评论(0)