加密技术对称与非对称加密简介

Posted 从善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加密技术对称与非对称加密简介相关的知识,希望对你有一定的参考价值。

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解


一、加密技术

不同的远程⽹络通过Internet连接时,⽹络之间直接通过私有地址进⾏互访只是需求之⼀,除此之外,还有个⾮常重要的需求,那就是数据安全

在远程⽹络之间布置的VPN除了实现隧道功能之外,还必须在隧道中实现对数据的加密,隧道与加密是VPN不得不同时实现的功能,两者缺⼀不可,否则就不算是完整的VPN。


二、加密算法

加密算法分为对称加密算法⾮对称加密算法两类

对称加密算法⼜叫做私钥算法

⾮对称加密算法⼜叫做公钥算法

⽆论何种加密算法都分为加密解密两个过程

⽆论何种加密算法,在加密和解密的时候都需要密钥(算法的产物)

⽆论是私钥算法还是公钥算法都有优缺点,⼀般都是结合两种算法使⽤


三、对称加密算法—私钥算法

对称加密算法很简单:通过算法⽣成⼀个密钥,加密数据和解密数据都是⽤该密钥。之所以对称加密算法叫做私钥算法是因为唯⼀的密钥必须要保持私密性,即不能被任何第三者获取到。

3.1几种对称加密算法

  • DES(Data Encryption Standard)
    DES加密共有三种形式,分为DES(40-bit⻓度加密),DES(56-bit⻓度加密)以及3DES(3倍的56-bit⻓度加密,即168-bit⻓度加密);由于3DES加密⻓度够⻓,安全性够⾼,所以推荐使⽤3DES。

  • AES(Advanced Encryption Standard)
    AES加密共有三种形式,分为AES 128(128-bit⻓度加密),AES 192(192-bit⻓度加密)以及AES 256(256-bit⻓度加密);由于AES 256加密⻓度够⻓,安全性够⾼,所以推荐使⽤AES 256。

  • CAST
    类似于DES,使⽤的是128位或256位的密钥结构,它不如3DES安全,但是更快。

  • IDEA(内部加密算法)
    由瑞⼠联邦物理⼯学开发,使⽤128位的密钥结构。它在安全性⽅⾯介于CAST和3DES之间,但是速度不是最快的。

  • RC-6和RC-4
    由RSA实验室开发,它⽀持可变⻓的密钥,最⼤可以到2040位(RC-6),RC-4⽀持40位 和128位的密钥,RC-4在软件和硬件加密/解密⽅⾯⽐3DES更快,但是不如3DES安全。

  • Skipjack
    由美国国家安全局开发(NSA),使⽤80位的密钥结构。

3.2 图解对称加密算法

3.3 思考

思考一:
问:Alice如何获取KEY,注意这个KEY不能被第三人获取,否则没有安全可言。
如果没有思路接着看下面的讲解吧。

思考二:

如果使用相同的KEY,意味着A发给B的消息,C和D也可以解密看到,完全没有私密性。如何解决呢,继续看下面的讲解。


四、非对称加密算法—公钥算法

非对称加密算法:通过算法⽣成⼀对密钥,⼀个是公钥,⼀个是私钥,公钥加密数据只能被成对的私钥解开,私钥加密数据只能⽤成对的公钥解开,使⽤公钥加密和私钥加密数据对应不同的应⽤场景。之所以非对称加密算法叫做公钥算法,原因是⼀对密钥中的公钥是可以共享出去的。

4.1 常见的非对称加密算法

  • RSA算法
    RSA 是一种目前应用非常广泛、历史也比较悠久的非对称秘钥加密技术,在1977年被麻省理工学院的罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)三位科学家提出,由于难于破解,RSA 是目前应用最广泛的数字加密和签名技术,比如国内的支付宝就是通过RSA算法来进行签名验证。它的安全程度取决于秘钥的长度,目前主流可选秘钥长度为 1024位、2048位、4096位等,理论上秘钥越长越难于破解,按照维基百科上的说法,小于等于256位的秘钥,在一台个人电脑上花几个小时就能被破解,512位的秘钥和768位的秘钥也分别在1999年和2009年被成功破解,虽然目前还没有公开资料证实有人能够成功破解1024位的秘钥,但显然距离这个节点也并不遥远,所以目前业界推荐使用 2048 位或以上的秘钥,不过目前看 2048 位的秘钥已经足够安全了,支付宝的官方文档上推荐也是2048位,当然更长的秘钥更安全,但也意味着会产生更大的性能开销。

  • DSA算法
    DSA-Digital Signature Algorithm 是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。如果数据和签名不匹配则认为验证失败!数字签名的作用就是校验数据在传输过程中不被修改。数字签名,是单向加密的升级。

  • ECDSA
    Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC(Elliptic curve cryptography,椭圆曲线密码学)和 DSA 的结合,椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障,据称256位的ECC秘钥的安全性等同于3072位的RSA秘钥,和普通DSA相比,ECDSA在计算秘钥的过程中,部分因子使用了椭圆曲线算法。

4.2 图解⾮对称加密算法

4.3 非对称加密算法致命缺点

公钥加密算法会随着加密数据的变⼤⽽增⻓加密时间,所以当需要加密的数据⼤到⼀定程度时,采⽤公钥算法加密速度会远慢于私钥算法加密

4.4 思考

思考一:

图中是4个人在相互通信,如果是100人、1000人呢,需要多少个密钥对?


五、对称算法和非对称算法的结合—解决数据加密问题

5.1 思考

思考一:
问:传输的数据这样就安全了吗?
答:不安全,传输的数据可能被篡改

针对上面的问题,我们可以通过在数据的末尾添加一个校验和,实现数据的完整性

HMAC哈希算法
每个数据包都会在后⾯写上⼀个对数据计算后的校验和(Checksum)
如果发现⾃⼰计算的校验和与数据包附带的校验和不同,便认为数据发⽣了偏移或错误,因此将数据>包丢弃或要求重传。

Hash算法的特征在于任何⼤⼩的数据计算出的Hash值的⻓度都是⼀样的
Hash多⽤于认证,认证对等体双⽅在相互认证时,只需要交换密码的Hash值即可
⽬前Hash算法有:

  • MD5(Message Digest 5)
    将任何数据通过计算后输出128-bit⻓度的Hash值
  • SHA-1(Secure Hash Algorithm 1)
    将任何数据通过计算后输出160-bit⻓度的Hash值
    SHA-1拥有着⽐MD5更⾼的安全性
  • SHA256
    将任何数据通过计算后输出256-bit⻓度的Hash值
  • SHA512
    将任何数据通过计算后输出512-bit⻓度的Hash值

引入末尾校验和之后的流程:

思考二:
问:如果数据发送方抵赖曾发送的数据怎么处理?

答:通过加入数字签名防止发送方抵赖。

上面的过程真的安全了吗(注意上面步骤⑤是使用对称加密算法进行加密,同理步骤⑥也是使用对称加密算法进行解密,Bob如何获取到Alice的私钥看上面的第五节,此图不再赘述)?

No🛑,还是不安全,因为我们无法确认Bob就是Bob,看下面的图解:

Xiao将自己的Public Key发送给Alice,并谎称这是Bob的Public Key。Alice收下这个Public Key之后,她与Bob的私信都将发送给Xiao,造成信息泄露。

问:如何确认公钥的身份

答:引入三方认证,即数字证书(CA)。

上面的过程就是Bob向Alice证明“我就是Bob!”。这里被CA加密(签名)后的数据就是数字证书,有了这个证书就可以证明自己的身份。


总结

安全的数据传输需要如下四点:

  • 传输的数据必须要被加密;
  • 传输的数据不能被篡改;
  • 传输的数据必须要有“签名” ,防止抵赖;
  • 必须进⾏身份认证
  • 防⽌重放攻击

解决⽅案:

  • 数据加密使⽤加密算法(对称⾮对称结合)
  • 哈希算法
  • 数据签名
  • 数字证书
  • 随机数(随机值)


这里是从善若水的博客,感谢您的阅读🎃


以上是关于加密技术对称与非对称加密简介的主要内容,如果未能解决你的问题,请参考以下文章

对称加密与非对称加密算法

Java对称与非对称加密解密,AES与RSA

技术解读区块链密码学的起源,了解多链与非对称加密

非对称加密和对称加密

对称加密与非对称加密

对称加密与非对称加密