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

目录

1、对称加密

2、非对称加密

3、如何分配对称密钥?

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


1、对称加密

        所谓对称加密,就是指加密密钥与解密密钥都使用相同的密钥。如下图所示,通信双方使用的就是对称加密密钥。//代表:DES和AES

        数据加密标准 DES(Data Encryption Standard) 属于对称密钥密码体制。它由 IBM 公司研制出,于 1977 年被美国定为联邦信息标准后,在国际上引起了极大的重视。ISO 曾将 DES 作为数据加密标准。

        DES 是一种分组密码。在加密前,先对整个的明文进行分组。每一个组为 64 位长的二进制数据。然后对每一个 64 位二进制数据进行加密处理,产生一组 64 位密文数据。最后将各组密文串接起来,即得出整个的密文。使用的密钥占有 64 位(实际密钥长度为 56 位,外加 8 位用于奇偶校验)。

        DES 的机密性仅取决于对密钥的保密,而算法是公开的。DES 的问题是它的密钥长度。56 位长的密钥意味着共有 2^{56} 种可能的密钥,也就是说,共有约 7.6 ×10^{16} 种密钥。假设一台计算机 1 us 可执行一次 DES 加密,同时平均只需搜索密钥空间的一半即可找到密钥,那么破译 DES 要超过 1000 年。

        然而芯片的发展出乎意料地快。不久,56 位 DES 已不再被认为是安全的。对于 DES 56 位密钥的问题,又提出了 三重DES(3DES) 的方案,把一个 64 位明文用一个密钥加密,再用另一个密钥解密,然后再使用第一个密钥加密,即

        Y=DES_{k1}(DES^{-1}_{K2}(DES_{k1}(X)))))

        这里,X 是明文,Y 是密文,K1 和 K2 分别是第一个和第二个密钥,DES_{k1}(.) 表示用密钥 K1 进行 DES 加密,而 DES_{k2}^{-1}(.) 表示用密钥 K2 进行 DES 解密。//加密,解密,再加密

        在 DES 之后,1997 年美国标准与技术协会(NIST),对一种新的加密标准即 高级加密标准 AES(Advanced Encryption Standard) 进行遴选,最后由两位年轻比利时学者 Joan Daemen 和 Vincent Rijmen 提交的 Rijndael算法 被选中,在 2001 年正式成为 NIST 的加密标准。在 2002 年成为美国政府加密标准。现在 AES 也是 ISO/IEC 18033-3 标准。

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

        至此,全文结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/568914.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据库】MongoDB

文章目录 [toc]数据库操作查询数据库切换数据库查询当前数据库删除数据库查询数据库版本 数据集合操作创建数据集合查询数据集合删除数据集合 数据插入插入id重复的数据 数据更新数据更新一条丢失其他字段保留其他字段 数据批量更新 数据删除数据删除一条数据批量删除 数据查询…

如何启用启用WordPress调试模式

最近我们的WordPress网站在访问时,经常出现打不开的现象,我们向主机提供商Hostease咨询后,他们提到这是由于WordPress的某个插件导致的问题,我们在将插件版本升级至最新后,这个问题就消失了。为了方便后续的检查&#…

【VI/VIM】基本操作备忘录

简介 新建/打开文件 工作模式 常用命令 补全命令 命令模式输入:ctrl p 移动命令 文本选中 撤销、删除 复制粘贴 替换 缩排 查找 替换 插入 分屏 练习

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

setTimeout回调函数 this指向问题

本文主要介绍setTimeout的回调函数的this指向问题 例子1&#xff1a;回调函数是一个普通函数 setTimeout 的回调函数是一个普通函数&#xff0c;而不是箭头函数&#xff0c;因此它有自己的上下文&#xff0c;this 指向全局对象&#xff08;在浏览器中是 window 对象&#xff…

MySQL创建数据库与表

要求&#xff1a; 1.在本机安装数据库 2.创建一个数据库db_classes 3.创建一行表db_hero 4.将四大名著中的常见人物插入这个英雄表 目录 要求&#xff1a; 过程&#xff1a; 结果&#xff1a; 命令总结&#xff1a; 过程&#xff1a; 1.安装数据库 http://t.csdnimg…

QML 不同风格和主题的切换

Quick程序提供了方便的用于切换不同风格和主题的配置文件&#xff0c;如果没有设计稿&#xff0c;又想界面没那么丑&#xff0c;那么可以用这套配置&#xff0c;让应用看起来相对专业一点。 一&#xff0c;在 qrc 资源文件中添加 qtquickcontrols2.conf 文件。 二&#xff0c;…

iOS - 多线程的安全隐患

文章目录 iOS - 多线程的安全隐患1. 卖票案例2. 多线程安全隐患的解决方案2.1 iOS中的线程同步方案2.2 同步方案的使用2.2.1 OSSpinLock2.2.1.1 使用方法&#xff1a;2.2.1.2 案例 2.2.2 os_unfair_lock2.2.2.1 使用方法&#xff1a;2.2.2.2 案例 2.2.3 pthread_mutex2.2.3.1 使…

uniapp APP检测更新

需求&#xff1a; 1.首次进入APP给出弹窗提示是否存在最新版本APP&#xff0c;可选择更新或者取消 2.选择取消后&#xff0c;在使用期间不再弹出该弹窗 3.在设置中增加按钮&#xff0c;点击进行版本检测&#xff0c;再弹窗 效果图&#xff1a; 使用到的插件&#xff1a;APP升…

“三三裂变”,实体书营销实操细节分享……

“三三裂变”实操细节 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: 如果你用这种方法有…

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志

一&#xff1a;系统版本: 二&#xff1a;部署环境&#xff1a; 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Log-001 10.10.100.1 zookeeper:3.4.13 kafka:2.8.1 elasticsearch:7.7.0 logstash:7.7.0 kibana:7.7.0 zookeeper:/data/zookeep…

微服务项目实战-黑马头条(八):App端-文章ES搜索、MongoDB搜索记录和关键词联想

文章目录 一、今日内容介绍1.1 App端搜索-效果图1.2 今日内容 二、搭建ElasticSearch环境2.1 拉取镜像2.2 创建容器2.3 配置中文分词器 ik2.4 使用postman测试 三、app端文章搜索3.1 需求分析3.2 思路分析3.3 创建索引和映射3.4 数据初始化到索引库3.4.1 导入es-init到heima-le…

JS -正则表达式

正则表达式 关于正则表达式&#xff0c;其实我写过几篇了&#xff0c;但是真正的正则表达式其实主要用于定义一些字符串的规则&#xff0c;计算机根据给出的正则表达式&#xff0c;来检查一个字符串是否符合规则。 我们来看一下&#xff0c;在JS中如何创建正则表达式对象。 语…

HTML:PC和手机的自适应图形布局样例

作者:私语茶馆 1.前言 有时我们需要开发一个自适应PC和手机的HTML页面,由于屏幕大小不同,会涉及到自动部署。W3School提供了一个非常好的案例:Responsive Image Gallery。本文利用独立CSS文件详细介绍一下这个案例。 2.案例详细介绍 2.1.Project项目文件结构 企业级项目…

电脑问题快速判断

电脑开机没有任何反应 检查电源 检查电源是否有问题或损坏&#xff0c;可以短接方法检测 板电源卡口对自己接第四或第五根线&#xff0c;若风扇匀速转动&#xff0c;电源无问题&#xff0c;若不转动或转一下停一下&#xff0c;电源有问题 检查内部连线 确保主板上的线插的…

Docker常用命令(镜像、容器、网络)

一、镜像 1.1 存出镜像 将镜像保存成为本地文件 格式&#xff1a;docker save -o 存储文件名 存储的镜像docker save -o nginx nginx:latest 1.2 载入镜像 将镜像文件导入到镜像库中 格式&#xff1a;docker load < 存出的文件或docker load -i 存出的文件…

蓝桥杯2024年第十五届省赛真题-小球反弹

以下两个解法感觉都靠谱&#xff0c;并且网上的题解每个人答案都不一样&#xff0c;目前无法判断哪个是正确答案。 方法一&#xff1a;模拟 代码参考博客 #include <iostream> #include <cmath> #include <vector>using namespace std;int main() {const i…

Axure实现tab页面切换功能

1. 实现效果 2. 实现原理 创建两个标签&#xff0c;并实现点击时选中状态点击时&#xff0c;设置面板状态 3. 实现步骤 3.1 实现可切换的标签 在页面上拖拽两个矩形作为两个tab标签&#xff0c;并命名 tab1 和 tab2 设置每个矩形的边框显示&#xff0c;只显示下边框即可 …

Flutter 上架如何解决 ITMS-91053 问题

最近&#xff0c;我的 Flutter App 发布到 TestFlight 后&#xff0c;就会收到一封邮件&#xff1a;The uploaded build for YOUR APP has one or more issues. 上面的邮件主要是说&#xff0c;我的 App 缺少了调用 API 的声明&#xff0c;以前从来没看到过&#xff0c;上网一查…

WEB攻防-ASP中间件IIS文件上传解析安全漏洞

漏洞原理&#xff1a; 基于文件 IIS6.0默认不解析;号后面的内容&#xff0c;例如1.asp;.jpg会当成1.asp解析&#xff0c;相当于分号截断。 基于文件夹 IIS6.0会将/*.asp/文件夹下的文件当成asp解析。 案例&#xff1a; 写一个木马文件&#xff0c;并改为jpg后缀 GIF89agif8…