KMS密钥算法总结

对称加密

对称密钥加密在加密和解密时使用相同的密钥,或是使用两个可以简单地互相推算的密钥。对称加密的速度比公钥加密快很多,加密算法有DES,3DES,AES,Blowfish,IDEA,RC5,RC6。

  • DES(Data Encryption Standard)数据加密标准:DES现在已经不是一种安全的加密方法,主要因为它使用56位密钥过短。
  • 3DES(Triple Data Encryption Algorithm)三重数据加密算法:相当于对每个数据块应用三次DES,DES密码的密钥长度很容易被暴力破解,3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的加密算法。
  • AES(Advanced Encryption Standard)高级加密标准:在密码学中又称为Rijndael加密法。严格地讲,AES和Rijndael加密法并不完全一样(虽然在实际应用中两者可以互换)。因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128比特,密钥长度则可以是128,192或256比特。而Rijndael使用的密钥和区块长度均可以是128,192或256比特。
  • Blowfish :由Bruce Schneider于1993年设计,现在已应用于多种加密产品,Blowfish能够保证很好的加密速度,目前为止没有发现有效地破解方法。AES比Blowfish有更广大的知名度。
  • IDEA(International Data Encryption Algorithm)国际数据加密算法 :算法的提出是为了取代DES。

注意: 对称密钥加密法主要是基于分组加密 的,选取固定长的密钥,去加密明文中固定长度的块,生成的密文块与明文块长度一样。显然密钥长度十分重要,块的长度也是很重要。如果太短,则很容易枚举出所有的明文-密文映射;如果太长,性能则会急剧下降。例如, AES中规定分组长度可以选择128,192或256bit,DES和三重DES都是64bit。

非对称加密

非对称加密算法就是说加密解密文件需要两个密钥,公钥用来加密,私钥用来解密。证书可以授权公钥的使用。

  • RSA是一个既能用于数据加密也能用于数据签名的算法,它易于理解和操作。

    openssl生成公私钥 :

    1.生成密钥
    openssl genrsa -out test.key 1024
    注意:-out 指定生成的文件,注意这个文件包含公钥和密钥两部分。
    2.提取公钥
    openssl rsa -in test.key -pubout -out test_pub.key
    注意:-in 指定输入文件,-out指定提取公钥的文件名。
  • DSA(Digital Signature Algorithm) 只是签名算法,用它来确保信息发布人的身份和信息的完整性,不能用来做加密传输。

    区别: DSA和RSA一样,签名者持有私钥,对应公钥公开。当需要对信息签名时,签名者用私钥对信息签名,然后将签名信息和信息原文发送给对方(RSA协议中,信息原文不需要发送给对方,签名信息解密后就是信息原文),验证者可用签名者公开的公钥对签名信息和信息原文验证签名。由于信息长度可能比较长,在实际操作中,大家通常在信息的HASH摘要上进行签名。

  • EIGamal是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。GnuPG和PGP等很多密码学系统中都应用到了ElGamal算法。

分组密码工作模式:

密码学中,分组密码的工作模式允许使用同一个分组密码密钥对过于一块的数据进行加密,并保证其安全性。分组密码自身只能加密长度等于密码分组长度的单独数据,若要加密变长数据,则数据必须被划分为一些单独的密码块(又称为块加密 )。通常而言,最后一块数据也需要使用合适填充方式将数据扩展到匹配密码块大小的长度。

虽然工作模式通常用于对称加密,但同时也可以应用于非对称加密(在使用中,非对称加密通常不用于加密较长的信息,而是结合对称加密和非对称加密的混合加密方案),工作模式主要用来进行加密和认证。

  • 电子密码本(Electronic codebook, ECB)

    需要加密的消息按照密码块的大小被分为多个块,并对每个块进行独立加密。

    缺点: 同样的明文块会被加密成相同的密文块,不能够很好的隐藏数据。

  • 密码块链接(Cipher-block chaining,CBC)

    每个明文块先与一个密文块进行异或后,再进行加密。这种方法中,每个密文块都依赖于它前面的所有的明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量。

    缺点: 加密过程是串行化的,无法被并行化,而且消息必须被填充到块大小的整数倍。

  • 明文密码块链接(Plaintext cipher-block chaining,PCBC)

    可以使密文中的微小更改在解密时导致明文大部分错误的模式

  • 密文反馈(Cipher feedback,CFB)

    可以将块密码变成自同步的流密码,工作过程亦非常相似,CFB的解密过程几乎就是颠倒的CBC的加密过程。

  • 输出反馈(Output feedback,OFB)

    可以将块密码变成同步的流密码。它产生密钥流的块,然后将其与明文块进行异或,得到密文。

  • 计数器模式(Integer Counter Mode,CTR)

    CTR将块密码变成流密码。通过递增一个加密计数器以产生连续的密钥流,其中计数器可以是任意保证长度时间不产生重复输出的函数。

    缺点: 使用简单的,定义好的输入函数是有争议的,有人认为,它有意的将密码系统暴露在已知的、系统的输入会造成不必要的风险。

参考:AES五种加密模式——http://www.cnblogs.com/starwolf/p/3365834.html

​ 读《图解密码技术》——https://keeganlee.me/post/reading/20160629

国密算法说明

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度长度和分组长度均为128位。

  • SM1对称加密。加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
  • SM2为非对称加密,基于ECC(椭圆曲线密码学) 。该算法已公开,由于该算法基于ECC,故其签名速度与秘钥生成的速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位更高,但运算速度快于RSA。
  • SM3消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
  • SM4无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

MessageDigest(消息摘要)

message digest是一个数据的数字指纹,对一个任意长度的数据进行计算,产生一个唯一指纹好。

message digest的特性:

  • 保证数据的完整性,两个不同的数据,难产生相同的指纹号。
  • 保证数据的完整性,对于指定的指纹号,难以逆向计算出原始数据。

算法:md5、sha

Message Authentication Code(消息认证码)

message authentication code是一种密钥相关联的单向散列函数,它的输入包含任意长度的消息和一个发送者和接收者之间的共享密钥 ,然后输出固定长度的数据,这个数据程MAC值。

MAC特性:

  • 保证数据完整性
  • 保证数据真实性,进行身份认证

算法:md5、sha,通过hash算法,作为mac算法,通过计算得到的mac,就是HMAC,所以HMAC和MAC并无太大差别。

参考:https://xiaoxueying.gitbooks.io/graphic-cryptology/content/message_authentication_code.html

Digital Signature(数字签名)

digital signature用私钥加密相当于生成签名,用公钥解密相当于验证签名。

digital signature特性:

  • 保证数据的完整性
  • 保证数据真实性,进行身份认证
  • “没有私钥的人事实上无法生成密文”这一性质,保证不可否认的特性。

参考: https://xiaoxueying.gitbooks.io/graphic-cryptology/content/digital_signature.html

你可能感兴趣的:(密钥)