前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识补充3:对称加密与非对称加密简介

基础知识补充3:对称加密与非对称加密简介

原创
作者头像
春风大魔王
修改2020-07-30 09:55:25
2K0
修改2020-07-30 09:55:25
举报
文章被收录于专栏:认证协议的形式化分析

一、对称加密与非对称加密简介

(一)对称加密

对称加密最快速最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。

对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

优点:最快速、简单。

缺点:安全的密钥管理与分配问题。

(二)非对称加密

非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

优点:安全性高。

缺点:与对称相比,加密较慢。

应用:习惯性,用非对称加密对称的密钥。用对称的密钥进行消息的传递。

虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子:

(1)Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。

(2)Alice的浏览器向银行的网站请求公钥。

(3)银行将公钥发送给Alice。

(4)Alice的浏览器使用银行的公钥将自己的对称密钥加密。

(5)Alice的浏览器将加密后的对称密钥发送给银行。

(6)银行使用私钥解密得到Alice浏览器的对称密钥。

(7)Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。

(三)总结

(1)对称加密。加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。

(2)非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。

(3)解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

二、消息摘要算法

MD5/SHA/MAC,主要用于数字签名领域

消息摘要算法是密码学中非常重要的一个分支,它通过对数据提取指纹信息来实现数据签名数据完整性校验等功能。而且消息摘要算法在加密过程中是不需要私钥的,加密后的数据是不可逆的(目前可以解密逆向的只有CRC32算法)。

数字签名是保证信息的完整性和不可否认性的方法。数据的完整性是指信宿接收到的消息一定是信源发送的信息,而中间绝无任何更改;信息的不可否认性是指信源不能否认曾经发送过的信息。其实,通过数字签名还能实现对信源的身份识别(认证),即确定"信源"是否是信宿意定的通信伙伴。数字签名应该具有唯一性,即不同的消息的签名是不一样的;

数字签名的作用:a.保证信息的完整性;b.保证不可否认性;c.对信源的身份识别(认证)

应用注意事项:提取摘要用仅双方知道的信息。可以防止第三方的篡改。

用在注册、登录模块,在数字证书的签名算法中,SHA算法更广泛。

MAC算法

MAC算法(MessageAuthenticationCodes)带秘钥的哈希函数:消息的散列值由只有通信双方知道的秘钥K来控制,此时哈希值称作MAC。MAC吸收了MD和SHA的精髓,安全程度更高。

商业银行中一般都会使用MAC算法,比如POS终端加密。

登录认证

客户端需要将认证标识传送给服务器,此认证标识(可能是一个随机数)其它客户端可以知道,因此需要用私钥加密,客户端保存的是私钥。服务器端保存的是公钥,其它服务器知道公钥没有关系,因为客户端不需要登录其它服务器

数字签名是为了表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面。就像手写的签名一样,具有不可抵赖性和简洁性。

简洁性:对信息原文做哈希运算,得到消息摘要,信息越短加密的耗时越少。

不可抵赖性:信息拥有者要保证签名的唯一性,必须是唯一能够加密消息摘要的人,因此必须用私钥加密(就像字迹他人无法学会一样),得到签名。如果用公钥,那每个人都可以伪造签名了。

三方机构就是CA(CertificateAuthority),证书中心。

CA用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。

DSA算法

简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名,如果数据和签名不匹配则认为验证失败。数字签名的作用就是校验数据在传输过程中不被修改,数字签名,是单向加密的升级。

实现机理:

(1)使用消息摘要算法将发送数据加密生成数字摘要

(2)发送方用自己的私钥对摘要再加密,形成数字签名

(3)将原文和加密的摘要同时传给对方。

(4)接受方用发送方的公钥对摘要解密,同时对收到的数据用消息摘要算法产生同一摘要

(5)将解密后的摘要和收到的数据在接收方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性和保密性。

ECC算法(椭圆算法)

5G用认证就是用的这个算法

基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

(1)安全性高,有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同。

(2)处理速度快,在私钥的加密解密速度上,ECC算法比RSA、DSA速度更快,存储空间占用小,带宽要求低。

DH,全称为"Diffie-Hellman",它是一种确保共享KEY安全穿越不安全网络的方法,也就是常说的密钥一致协议。(在基础知识里有介绍)由公开密钥密码体制的奠基人Diffie和Hellman所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。也就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。

以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥(SecretKey)对数据加密。这样,在互通了本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯。

椭圆加密—椭圆曲线对称加密方案

该方法主要采用Diffie-Hellman密钥交换算法,使用非对称密钥进行对称加解密。下面是获取共享对称密钥的过程:

(1)Alice向Bob发送点G。点G被Eve知道也没关系。

(2)Alice生成随机数a。这个数没有必要告诉Bob,也不能让Eve知道。将a称为Alice的私钥。

(3)Bob生成随机数b。这个数没有必要告诉Alice,也不能让Eve知道。将b称为Bob的私钥。

(4)Alice向Bob发送aG。点aG被Eve知道也没有关系,他是Alice的公钥。

(5)Bob向Alice发送bG。点bG被Eve知道也没有关系,他是Bob的公钥。

(6)Alice对Bob发送的点bG计算其在椭圆曲线上a倍的点。Alice在椭圆曲线上计算a(bG)=abG,它就是Alice和Bob的共享密钥。

(7)Bob对Alice发送的点aG计算其在椭圆曲线上b倍的点。Bob在椭圆曲线上计算b(aG)=abG,它就是Alice和Bob的共享密钥。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、对称加密与非对称加密简介
    • (一)对称加密
      • (二)非对称加密
        • (三)总结
        • 二、消息摘要算法
          • MD5/SHA/MAC,主要用于数字签名领域
            • MAC算法
            • DSA算法
        • ECC算法(椭圆算法)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档