初学者密码学
词汇表
密码学——在第三方在场的情况下进行安全通信的技术实践和研究。也称为密码术和密码学。
密码——执行加密或解密的算法。
明文- 未加密的消息或信息。也称为明文。
密文——加密的消息或信息。
加密——以只有授权方才能读取的形式对消息或信息进行编码的过程。
解密——将消息或信息从密文转换为明文的过程。
随机数生成器 (RNG) - 一种用于生成没有任何模式的数字序列的设备。
密钥——决定加密密码功能输出的参数。
哈希函数——一种几乎不可能被逆转的单向加密函数。
摘要——哈希函数的输出。
对称算法——使用相同加密密钥进行加密和解密的算法。
非对称算法——加密和解密使用不同密钥的算法。也称为公钥算法。
对称密码
对称加密算法有两种:
分组密码——对固定长度的位组(称为块)进行操作。
流密码——对位流进行操作。
常见分组密码
数据加密标准 (DES)
在现代密码学中,DES 是第一个用于保护电子通信安全的标准化密码。由于现代计算机的处理能力,DES 已不再使用,因为它被认为强度较低。它可以以 2 密钥或 3 密钥 3DES 的形式使用。
高级加密标准 (AES)
这是美国国家标准与技术研究院于2001年制定的电子数据加密标准。它取代了自1977年以来一直使用的DES。AES有多种形式,具体取决于密钥长度。它们缩写为AES-128、AES-192和AES-256,其中最后一个数字表示密钥长度(以位为单位)。
常见流密码
Rivest 密码 4 (RC4)
RC4 流加密算法已应用于各种协议,包括有线等效保密 (WEP)、Wi-Fi 保护访问 (WPA) 以及传输层安全 (TLS)。然而,由于 2015 年发现的一些漏洞,RC4 算法的使用率开始下降。RFC 7465 禁止在所有版本的 TLS 中使用 RC4。
非对称密码
非对称密码通常不使用流和块术语。不过,公钥加密也会加密数据块。例如,RSA 的块大小取决于密钥大小。
常见的非对称密码
里维斯特-沙米尔-阿德曼 (RSA)
这是最古老、使用最广泛的非对称算法之一。它基于这样一个事实:如果将两个巨大的素数相乘,几乎不可能从结果中推导出原始素数。事实上,一项已发表的研究声称,破解 768 位 RSA 密钥大约需要 1500 年的计算时间!
椭圆曲线密码学(ECC)
与 RSA 类似,ECC 也基于不可逆原理。在 ECC 中,一个表示曲线上某个点的数字与另一个数字相乘,会得出曲线上的另一个点。现在,要破解这个难题,你必须找到曲线上的新点。ECC 的数学构造使得即使你知道原始点,也几乎不可能找到新的点。
对称密码与非对称密码
简而言之,这种比较更多的是关于基本操作(加密和解密)的成本,而不是其他任何事情。对大量数据进行非对称加密的成本高得令人望而却步。对称密钥的计算成本低廉,但存在共享秘密的问题。公钥的计算成本高昂,但安全通信所需的信息很容易被共享。
这些算法的有效应用来自于创建另一层抽象。换句话说,研究人员必须构建一个以这些密码为原语的系统。
例如,以下混合方法是有意义的:
密钥加密- 使用公钥加密技术对动态生成的对称密钥进行加密。这是一个昂贵的操作,但只需执行一次。
数据加密- 使用对称密钥对实际数据进行加密和解密。这是一种更经济的操作。
哈希算法
这些算法通常用于验证信息完整性或存储某些类型的敏感数据,例如密码。为什么是密码?因为相同的哈希函数对于相同的输入总是会生成相同的哈希值。因此,任何尝试输入的密码都可以进行哈希运算,并将结果与保存的哈希值进行比较,以验证身份验证尝试。
另一个与加密哈希函数相关的令人难忘的概念是基于哈希的消息认证码 (HMAC)。它是一种涉及加密哈希函数和密钥的消息认证码 (MAC)。HMAC 用于同时验证数据完整性和消息真实性。
常见的哈希算法
MD5 消息摘要算法(MD5)
MD5 于 1992 年发布,也是作为 MD4 的后继者而构建的,而 MD4 又是 MD2 的后继者。MD5 的速度不如 MD4,但它被认为比之前的 MDx 实现更安全。尽管如此,MD5 在任何情况下都应避免使用,正如先前的研究表明,它应该被视为密码学上被破解的,不适合继续使用。它仍然可以用作非密码哈希算法。
安全哈希算法(SHA)
它是由美国国家标准与技术研究院 (NIST) 作为美国联邦信息处理标准 (FIPS) 发布的一系列加密哈希函数,包括以下算法:
SHA-1 - 开发于 1993 年,广泛应用于安全应用和协议,包括 SSL/TLS、PGP、SSH、IPsec 和 S/MIME。SHA-1 生成 160 位摘要,块大小为 512 位。尽管 SHA-1 至今仍被广泛使用,但密码分析人员在 2005 年发现了该算法的漏洞,严重损害了其安全性。这些漏洞源于一种能够快速发现不同输入冲突的算法,这意味着两个不同的输入会映射到同一个摘要。
SHA-2 - 发布于 2001 年,由两个哈希函数组成,分别为 SHA-256 和 SHA-512,分别使用 32 位和 64 位字。这些哈希函数还有其他截断版本,称为 SHA-224、SHA-384、SHA-512/224 和 SHA-512/256。SHA-2 生成 224 或 256 大小的摘要,块大小为 1024 位或 512 位。
SHA-3 - SHA 标准家族的最新成员,发布于 2015 年。SHA-3 是更广泛的密码原语家族 Keccak 的子集,其内部与 SHA-1 和 SHA-2 存在很大差异。尽管 SHA-3 是一种更优的算法,但 NIST 目前并不打算撤销 SHA-2 或将其从修订的安全散列标准中移除。
文章来源:https://dev.to/secure_daily/cyptography-for-beginners-1el7