如果没了密钥,那密码学也就没什么意义了。SubtleCrypto 对象使用CryptoKey 类的实例来生
成密钥。CryptoKey 类支持多种加密算法,允许控制密钥抽取和使用。
CryptoKey 类支持以下算法,按各自的父密码系统归类。
RSA(Rivest-Shamir-Adleman):公钥密码系统,使用两个大素数获得一对公钥和私钥,可用
于签名/验证或加密/解密消息。RSA 的陷门函数被称为分解难题(factoring problem)。
RSASSA-PKCS1-v1_5:RSA 的一个应用,用于使用私钥给消息签名,允许使用公钥验证签名。
SSA(Signature Schemes with Appendix),表示算法支持签名生成和验证操作。
PKCS1(Public-Key Cryptography Standards #1),表示算法展示出的RSA 密钥必需的数学特性。
RSASSA-PKCS1-v1_5 是确定性的,意味着同样的消息和密钥每次都会生成相同的签名。
RSA-PSS:RSA 的另一个应用,用于签名和验证消息。
PSS(Probabilistic Signature Scheme),表示生成签名时会加盐以得到随机签名。
与RSASSA-PKCS1-v1_5 不同,同样的消息和密钥每次都会生成不同的签名。
与RSASSA-PKCS1-v1_5 不同,RSA-PSS 有可能约简到RSA 分解难题的难度。
通常, 虽然RSASSA-PKCS1-v1_5 仍被认为是安全的, 但RSA-PSS 应该用于代替
RSASSA-PKCS1-v1_5。
RSA-OAEP:RSA 的一个应用,用于使用公钥加密消息,用私钥来解密。
OAEP(Optimal Asymmetric Encryption Padding),表示算法利用了Feistel 网络在加密前处理未
加密的消息。
OAEP 主要将确定性RSA 加密模式转换为概率性加密模式。
ECC(Elliptic-Curve Cryptography):公钥密码系统,使用一个素数和一个椭圆曲线获得一对公
钥和私钥,可用于签名/验证消息。ECC 的陷门函数被称为椭圆曲线离散对数问题(elliptic curve
discrete logarithm problem)。ECC 被认为优于RSA。虽然RSA 和ECC 在密码学意义上都很强,
但ECC 密钥比RSA 密钥短,而且ECC 密码学操作比RSA 操作快。
ECDSA(Elliptic Curve Digital Signature Algorithm):ECC 的一个应用,用于签名和验证消息。
这个算法是数字签名算法(DSA,Digital Signature Algorithm)的一个椭圆曲线风格的变体。
ECDH(Elliptic Curve Diffie-Hellman):ECC 的密钥生成和密钥协商应用,允许两方通过公开通
信渠道建立共享的机密。这个算法是Diffie-Hellman 密钥交换(DH,Diffie-Hellman key exchange)
协议的一个椭圆曲线风格的变体。
AES(Advanced Encryption Standard):对称密钥密码系统,使用派生自置换组合网络的分组
密码加密和解密数据。AES 在不同模式下使用,不同模式算法的特性也不同。
AES-CTR:AES 的计数器模式(counter mode)。这个模式使用递增计数器生成其密钥流,其行
为类似密文流。使用时必须为其提供一个随机数,用作初始化向量。AES-CTR 加密/解密可以
并行。
AES-CBC:AES 的密码分组链模式(cipher block chaining mode)。在加密纯文本的每个分组之
前,先使用之前密文分组求XOR,也就是名字中的“链”。使用一个初始化向量作为第一个分组
的XOR 输入。
AES-GCM:AES 的伽罗瓦/计数器模式(Galois/Counter mode)。这个模式使用计数器和初始化
向量生成一个值,这个值会与每个分组的纯文本计算XOR。与CBC 不同,这个模式的XOR 输
入不依赖之前分组密文。因此GCM 模式可以并行。由于其卓越的性能,AES-GCM 在很多网络
安全协议中得到了应用。
AES-KW:AES 的密钥包装模式(key wrapping mode)。这个算法将加密密钥包装为一个可移植
且加密的格式,可以在不信任的渠道中传输。传输之后,接收方可以解包密钥。与其他AES 模
式不同,AES-KW 不需要初始化向量。
HMAC(Hash-Based Message Authentication Code):用于生成消息认证码的算法,用于验证
通过不可信网络接收的消息没有被修改过。两方使用散列函数和共享私钥来签名和验证消息。
KDF(Key Derivation Functions):可以使用散列函数从主密钥获得一个或多个密钥的算法。KDF
能够生成不同长度的密钥,也能把密钥转换为不同格式。
HKDF(HMAC-Based Key Derivation Function):密钥推导函数,与高熵输入(如已有密钥)
一起使用。
PBKDF2(Password-Based Key Derivation Function 2):密钥推导函数,与低熵输入(如密钥
字符串)一起使用。
02-05
05-23
3176