【网络安全】对称加密、非对称加密以及密钥分配

AES 也是一种分组密码,分组长度为 128 位。AES 有三种加密标准,其密钥分别为 128 位、192 位和 256 位,加密步骤相当复杂,运算速度比 3DES 快得多,且安全性也大大加强。在 2001 年,NIST 曾有一个大致的估计,就是假定有一台高速计算机,仅用 1 秒钟就能够破译 56 位的 DES,那么要破译 128 位的 AES,就需要 10^{12} 年!

2、非对称加密

非对称加密使用不同的加密密钥与解密密钥。也就是所谓的公钥密码体制。

公钥密码产生主要有两个方面的原因,一是由于对称密钥的密钥分配问题,二是对数字签名的需求

在对称加密中,加解密的双方使用的是相同的密钥。但怎样才能做到这一点呢?

一种是事先约定,另一种是用信使来传送。在高度自动化的大型计算机网络中,用信使来传送密钥显然是不合适的。如果事先约定密钥,就会给密钥的管理和更换带来极大的不便。若使用高度安全的密钥分配中心 KDC(Key Distribution Center),也会使得网络成本增加。//密钥分配

对数字签名的强烈需要也是产生公钥加密的一个原因。在许多应用中,人们需要对纯数字的电子信息进行签名,表明该信息确实是某个特定的人产生的。//数字签名

对于公钥密码体制,目前最著名的是由美国三位科学家 Rivest, Shamir 和 Adleman 于1976 年提出并在 1978 年正式发表的 RSA 体制,它是一种基于数论中的大数分解问题的体制

在公钥加密中,加密密钥 PK(Public Key 公钥) 是向公众公开的,而解密密钥 SK(Secret Key 私钥) 则是需要保密的。

公钥加密的加密和解密过程有如下特点:

  1. 首先,密钥对生成器会为接收者 B 生成一对密钥:即公钥 PK_{B} 和私钥 SK_{B}
  2. 然后,发送者 A 用 B 的公钥 PK_{B} 对明文 X 加密,得出密文 Y,发送给 B。
  3. 最后,B 接收到密文后,用自己的私钥 SK_{B} 进行解密,恢复出明文。

//这个过程其实很好理解,就是如果要与B通信,就必须按照B给的方式对信息进行处理。处理后的信息,除了B,其他人都不能对这条信息进行解密。

//就比如你向你的朋友转账(通信),首先必须知道对方的账号(公钥),然后把钱转到对方的账户上(公钥加密),这样你的朋友使用密码就可以取得到你转账的钱(私钥解密)

下图,给出了使用公钥进行加密的过程:

需要注意的是,任何加密方法的安全性都取决于密钥的长度,以及攻破密文所需的计算量,而不是简单地取决于加密的方式(对称加密或非对称加密)

3、如何分配对称密钥?

对称密钥分配存在以下两个问题:

  1. 第一,如果 n 个人中的每一个需要和其他 n-1 个人通信,就需要 n(n-1) 个密钥。但每两人共享一个密钥,因此密钥数是 n(n - 1)/2。这常称为 n^{2} 问题。如果 n 是个很大的数,所需要的密钥数量就非常大。//密码数量大
  2. 第二,通信的双方怎样才能安全地得到共享的密钥呢?正是因为网络不安全,所以才需要使用加密技术。但密钥又需要怎样传送呢?//网络不安全

目前常用的密钥分配方式是设立 密钥分配中心KDC(Key Distribution Center)。 KDC 是大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)。

如下图,用户 A 和 B 都是 KDC 的登记用户。A 和 B 在 KDC 登记时就已经在 KDC 的服务器上安装了各自和 KDC 进行通信的 主密钥(master key) K_{A}K_{B}

密钥分配分为三个步骤://单纯的对称密钥的分配比较麻烦

  1. 用户 A 向密钥分配中心 KDC 发送时用明文,说明想和用户 B 通信。在明文中给出了 A 和 B 在 KDC 登记的身份。
  2. KDC 用随机数产生“一次一密”的会话密钥 K_{AB} 供 A 和 B 的这次会话使用,然后向 A 发送回答报文。这个回答报文用 A 的密钥 K_{A} 加密。这个报文中包含这次会话使用的密钥 K_{AB} 和请 A 转给 B 的一个 票据(ticket),该票据包括 A 和 B 在 KDC 登记的身份,以及这次会话将要使用的密钥K_{AB}。票据用 B 的密钥 K_{B} 加密,A 无法知道此票据的内容,因为 A 没有 B 的密钥K_{B},当然 A 也不需要知道此票据的内容。
  3. 当 B 收到 A 转来的票据并使用自己的密钥K_{B}解密后,就知道 A 要和他通信,同时也知道 KDC 为这次和 A 通信所分配的会话密钥K_{AB}

此后,A 和 B 就可使用会话密钥*K_{AB}*进行这次通信了。需要注意的是,在网络上传送密钥时,都是经过加密的。解密用的密钥都不在网上传送。

4、如何分配非对称密钥?

我们都知道,使用非对称密钥时大家都各自保存有自己的私钥,然后把各自的公钥发布在网上。

但是,如何能确信获取的公钥真的就是对方的呢?

例如,A 和 B 都是公司。有个捣乱者给 A 发送邮件,声称自己是 B,要购买 A 生产的设备,货到付款,并给出了 B 的收货地址。邮件中还附上“B的公钥”(其实是捣乱者的公钥)。最后用捣乱者的私钥对邮件进行了签名。A 收到邮件后,就用邮件中给出的捣乱者的公钥,对邮件中的签名进行了鉴别,就误认为 B 真的是要购买设备。当 A 把生产的设备运到 B 的地址后,B 才知道被愚弄了!//B被冒充,A无法确认对方身份,因此交易会存在抵赖的可能性

现在流行的办法,这就是找一个可信任的第三方机构,给拥有公钥的实体发一个具有数字签名的数字证书(digital certificate)数字证书就是对公钥与其对应的实体进行绑定(binding)的一个证明,因此它常称为公钥证书。这种签发证书的机构就叫作认证中心CA(Certification Authority),它由政府或知名公司出资建立(这样就可以得到大家的信任)。

每个证书中写有公钥及其拥有者的标识信息(人名、地址、电子邮件地址或 IP 地址等)。更重要的是,证书中有 CA 使用自己私钥的数字签名,这就是认证中心 CA 把 B 的未签名的证书进行散列函数运算,再用 CA 的私钥对散列值进行 D 运算(也就是对散列值进行签名)。这样就得到了 CA 的数字签名。把 CA 的数字签名和未签名的 B 的证书放在一起,就最后构成了已签名的 B 的数字证书。//CA使用自己的私钥对证书的散列值进行加密

CA 证书无法伪造,任何用户都可从可信任的地方(如代表政府的报纸)获得认证中心 CA 的公钥,以验证证书的真伪。这种数字证书是公开的,不需要加密。

公司 A 拿到 B 的数字证书后,可以对 B 的数字证书的真实性进行核实。A 使用数字证书上给出的 CA 的公钥,对数字证书中 CA 的数字签名进行 E 运算,得出一个数值。再对 B 的数字证书(把 CA 的数字签名除外的部分)进行散列运算,又得出一个数值。比较这两个数值。若一致,则证明数字证书是真的。

关于数字证书的内容,X.509 规定了一个数字证书必须包括以下这些重要字段:

  • X.509 协议的版本
  • 数字证书名称及序列号
  • 本数字证书所使用的签名算法
  • 数字证书签发者的唯一标识符
  • 数字证书的有效期(有效期开始到结束的日期范围)
  • 主体名(或主题名,公钥和数字证书拥有者的唯一标识符)
  • 公钥(数字证书拥有者的公钥和使用算法的标识符,对应的私钥由证书拥有者保存)

至此,全文结束。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值