赞
踩
实现机密性最常用的手段是“加密”(encrypt),就是把消息用某种方式转换成谁也看不懂的乱码,只有掌握特殊“钥匙”的人才能再转换出原始文本。
这里的“钥匙”就叫做“密钥”(key),加密前的消息叫“明文”(plain text/clear text),加密后的乱码叫“密文”(cipher text),使用密钥还原明文的过程叫“解密”(decrypt),是加密的反操作,加密解密的操作过程就是“加密算法”。
所有的加密算法都是公开的,任何人都可以去分析研究,而算法使用的“密钥”则必须保密。 “密钥”就是一长串的数字,但约定俗成的度量单位是“位”(bit),而不是“字节”(byte)。比如,说密钥长度是 128,就是 16 字节的二进制串,密钥长度 1024,就是 128 字节的二进制串。
按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密。
“对称加密”很好理解,就是指加密和解密时使用的密钥都是同一个,是“对称”的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性。
举个例子,你想要登录某网站,只要事先和它约定好使用一个对称密码,通信过程中传输的全是用密钥加密后的密文,只有你和网站才能解密。黑客即使能够窃听,看到的也只是乱码,因为没有密钥无法解出明文,所以就实现了机密性。
数据加密标准(DES)算法 采用的 56 位密钥,每次计算加密 64 位的数据。目前已经被证明可以被暴力破解。所谓暴力破解,就是遍历所有可能的密钥解析数据的方法。举个例子,已知张三和李四传输的是中文,加密算法是 DES,那么拿出一小段数据进行暴力破解,尝试所有的密钥,如果能成功解析出中文词语(词语在词库中可以查到),那么说明破解成功。
为了应对暴力破解等问题,很多团队选择对称加密算法时开始使用高级加密标准(AES),这个加密法用 128 位密钥,并设计了更难破解的算法。推荐在项目中使用
RC4、DES、3DES、AES、ChaCha20 ,但前三种算法都被认为是不安全的,通常都禁止使用,目前常用的只有 AES 和 ChaCha20。
对称加密看上去好像完美地实现了机密性,但其中有一个很大的问题:如何把密钥安全地传递给对方,术语叫“密钥交换”。如果你和网站约定的密钥在传递途中被黑客窃取,那就没有安全性可言了。所以需要一种新的可以保证安全传递秘钥的算法。
非对称加密也叫公钥加密算法。它有两个密钥,一个叫“公钥”(public key),一个叫“私钥”(private key)。两个密钥是不同的,“不对称”,公钥可以公开给任何人使用,而私钥必须严格保密。
公钥和私钥有个特别的“单向”性,虽然都可以用来加密解密,但公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密。
非对称加密可以解决“密钥交换”的问题。网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为没有私钥,所以就无法破解密文。
RSA 几乎可以说是非对称加密的代名词,它的安全性基于“整数分解”的数学难题,使用两个超大素数的乘积作为生成密钥的材料,想要从公钥推算出私钥是非常困难的。
10 年前 RSA 密钥的推荐长度是 1024,但随着计算机运算能力的提高,现在 1024 已经不安全,普遍认为至少要 2048 位。
DH、DSA、ECC 等。
HTTPS 协议的握手和交换密钥过程需要非对称加密算法;
应用
HTTPS 协议的握手和交换密钥过程需要非对称加密算法
比如利用证书实现 git 账号的免密操作也是基于非对称加密算法
比如利用证书实现 git 账号的免密操作也是基于非对称加密算法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。