密码学:一文读懂非对称密码体制

news2024/12/23 18:31:44

文章目录

  • 前言
  • 非对称密码体制的保密通信模型
    • 私钥加密-公钥解密的保密通信模型
    • 公钥加密-私钥解密的保密通信模型
  • 复合式的非对称密码系统
  • 散列函数
  • 数字签名
    • 数字签名满足的三个基本要求
    • 先加密还是先签名?
    • 数字签名成为公钥基础设施以及许多网络安全机制的基础
    • 什么是单向认证?什么是双向认证?
  • 总结和回顾
  • 参考

请添加图片描述

前言

花十分钟阅读完这篇文章,你将对密码学中大名鼎鼎的非对称密码体制有个整体的理解和把握。
对整体的框架有所了解之后,再去看RSA,散列函数、数字证书、单双向认证等等这些密码学的知识,或者去开发安全相关的项目开发就不会迷路,能找到正确的方向。

上篇讲述关于对称加密体系的博文一度被推上热榜,说明应该是能帮助到一些朋友的。今天来介绍下作为对称密码体制的补充:非对称密码体制。

对于对称密钥体系不了解的朋友可以翻看:密码学:一文读懂对称密钥体系

下面开始正文:

非对称密码体制的保密通信模型

非对称密码体制的保密通信模型如图所示。非对称密码体制与对称密码体制相对,其主要的区别在于,非对称密码体制的加密密钥和解密密钥不相同,分为两个密钥,一个公开,一个保密。公开的密钥称为公钥,保密的密钥称为私钥。因此非对称密码体制也称为公钥密码体制。非对称密码体制使得发送者和接收者无密钥传输的保密通信成为可能,弥补了对称密码体制的缺陷。

在这里插入图片描述

在非对称密码体制中,公钥和私钥均可用于加密与解密操作,但它与对称密码体制有极大的不同。公钥与私钥分属通信双方,一份消息的加密与解密需要公钥与私钥共同参与。公钥加密则需要私钥解密,反之,私钥加密则需要公钥解密。

我们把通信双方定义为甲乙两方,甲乙两方分场景扮演信息发送者或接收者。公钥与私钥分属甲乙两方,甲方拥有私钥,乙方拥有公钥。

为了更好地描述非对称密码体制通信流程,我们通过图片来说明甲乙双方如何完成一次完整的会话。

私钥加密-公钥解密的保密通信模型

在这里插入图片描述

公钥加密-私钥解密的保密通信模型

在这里插入图片描述

非对称密码体制的主要优点是可以适应开放性的使用环境,密钥管理问题相对简单,可以方便、安全地实现数字签名和验证

RSA是非对称密码体制的典范,它不仅可以完成一般的数据保密操作,同时它也支持数字签名与验证。除了数字签名,非对称密码体制还支持数字信封等技术。

非对称密码算法的安全性完全依赖于基于计算复杂度上的难题,通常来自于数论例如:
RSA源于整数因子分解问题。
DSA(数字签名算法)源于离散对数问题。
ECC(圆曲线加密算法)源于离散对数问题。

复合式的非对称密码系统

由于这些数学难题的实现多涉及底层模数乘法或指数运算,相对于分组密码需要更多的计算资源。为了弥补这一缺陷,非对称密码系统通常是复合式的。用高效率的对称密码算法对信息进行加密解密处理,用非对称密钥加密对称密码系统所使用的密钥。通过结合对称密码和非对称密码的优势,以提高整体系统的效率和安全性。

对称密码算法更高效: 对称密码算法在加密和解密过程中使用相同的密钥,因此通常比非对称密码算法更快。对称密码算法对数据进行加密和解密的速度很快,因为操作只涉及简单的数学运算,例如替换、置换和异或操作。

非对称密码算法更安全: 非对称密码算法提供了更高的安全性,因为它涉及到两个密钥:公钥和私钥。信息可以使用公钥加密,但只有拥有相应私钥的实体才能解密。这种体系结构解决了密钥分发和管理的问题,但由于计算复杂度较高,不适合对大量数据进行直接加密和解密。

为了克服对称密码算法和非对称密码算法各自的缺点,通常采用复合式的方法。具体而言,可以使用对称密码算法来对大量数据进行高效的加密和解密操作,而非对称密码算法则用于安全地传输和管理对称密码算法所使用的密钥。

这种复合方式的好处在于,对称密码算法提供了高效性,而非对称密码算法增加了系统的安全性。通过使用非对称密钥对对称密钥进行加密,可以确保在密钥传输过程中的安全性,同时仍然能够利用对称密码算法的高效性。这种组合可以在实际应用中平衡安全性和性能需求。

散列函数

曾经提到过对于信息完整性验证需要其在讲到对称密码体制的流密码实现方式时,他技术来支持,这种技术就是由散列函数提供的消息认证技术。
散列函数,也称做哈希函数、消息摘要函数、单向函数或杂凑函数。与上述密码体制不同的是,散列函数的主要作用不是完成数据加密与解密的工作,它是用来验证数据的完整性的重要技术。通过散列函数,可以为数据创建“数字指纹” (散列值)。散列值通常是一个短的随机字母和数字组成的字符串。
在这里插入图片描述
在上述认证流程中,信息收发双方在通信前已经商定了具体的散列算法,并且该算法是公开的。如果消息在传递过程中被篡改,则该消息不能与已获得的数字指纹相匹配。

散列函数具有以下一些特性:

  • 消息的长度不受限制

  • 对于给定的消息,其散列值的计算是很容易的。

  • 如果两个散列值不相同,则这两个散列值的原始输入消息也不相同,这个特性使得散列函数具有确定性的结果

  • 散列函数的运算过程是不可逆的,这个特性称为函数的单向性。这也是单向函数命名的由来

  • 对于一个已知的消息及其散列值,要找到另一个消息使其获得相同的散列值是不可能的,这个特性称为抗弱碰撞性。这被用来防止伪造

  • 任意两个不同的消息的散列值一定不同,这个特性称为抗强碰撞性

散列函数广泛用于信息完整性的验证,是数据签名的核心技术。散列函数的常用算法有MD一消息摘要算法、SHA一安全散列算法及MAC一消息认证码算法。

数字签名

通过散列函数可以确保数据内容的完整性,但这还远远不够。此外,还需要确保数据来源的可认证(鉴别)性和数据发送行为的不可否认性。

完整性、认证性和不可否认性,正是数字签名的主要特征。

数字签名针对以数字形式存储的消息进行处理,产生一种带有操作者身份信息的编码。

执行数字签名的实体称为签名者,签名过程中所使用的算法称为签名算法 (Signature Algorithm) ,签名操作中生成的编码称为签名者对该消息的数字签名。

发送者通过网络将消息连同其数字签名一起发送给接收者。接收者在得到该消息及其数字签名后,可以通过一个算法来验证签名的真伪以及识别相应的签名者。这一过程称为验证过程,其过程中使用的算法称为验证算法 (Verification Algorithm),执行验证的实体称为验证者。

数字签名离不开非对称密码体制,签名算法受私钥控制,且由签名者保密,验证算法受公钥控制,且对外公开。

RSA算法则既是最为常用的非对称加密算法,也是最为常用的签名算法。DSA算法是典型的数字签名算法,虽然本身属于非对称加密算法不具备数据加密与解密的功能。

数字签名满足的三个基本要求

  • 签名者任何时候多无法否认自己曾经签发的数字签名。
  • 信息接收者能够验证和确认收到的数字签名,但任何人无法伪造信息发送者的数字签名。
  • 当收发双方对数字签名的真伪产生争议时,通过仲裁机构 (可信赖的第三方)进行仲裁

数字签名认证流程如图所示。在这里提请大家注意: 私钥用于签名,公钥用于验证。签名操作只能由私钥完成,验证操作只能有公钥完成,公钥与私钥成对出现,用公钥加密的消息只能用私钥解密,用私钥加密的消息只能用公钥解密。
在这里插入图片描述

先加密还是先签名?

当然,我们可以对消息先加密,然后对加密后的消息做签名处理,这样乙方获得消息后,先做验证处理,如果验证通过则对消息解密。反之,验证失败则抛弃消息。这样做显然可以提高系统的处理速度,但即便如此,作者仍建议大家对消息先做签名,再做加密处理。加密与签名都应该只针对原始消息 (明文) 做处理。加密是为了确保消息在传送过程中避免被破解,签名是为了确保消息的有效性。消息本身可能就是一个可执行的文件,消息的接收方通过对消息的验证来判别该文件是否有权执行,而这个文件本身是不需要加密的。

数字签名成为公钥基础设施以及许多网络安全机制的基础

由于签名不可伪造,甲方不能否认自己已发送的消息,而乙方可验证消息的来源以及消息是否完整。数字签名可提供OSI参考模型五类安全服务中的三种服务: 认证(鉴别)服务、抗否认服务和数据完整性服务。正因如此,数字签名成为公钥基础设施以及许多网络安全机制的基础。

什么是单向认证?什么是双向认证?

在上述认证过程的描述中,似乎大家有这样一个疑问: 当乙方作为发送方,通过公钥将消息加密后发送给甲方时,由于算法、公钥公开,任何一个已获得公钥的窃听者都可以截获乙方发送的消息,替换成自己的消息发送给甲方,而甲方无法辨别消息是否来源于乙方。也就是说,上述的认证方式是单向的,属于单向认证。如果有两套公私钥,甲乙两方都对数据做签名及验证就可以避免这一问题。没错,这种认证方式正是双向认证。以网银交易为例,一般的网银交易使用的都是单向认证方式,无法验证使用者的身份,而要求较高的网银交易则都是双向认证方式,交易双方身份都可以得到验证。

总结和回顾

从密码体制上划分,现代密码学共分为两种密码体制:对称密码体制和非对称密码体制。对称与非对称的差别源于加密密钥和解密密钥是否对称,即加密密钥与解密密钥是否相同 (对称)。
在对称密码体制中,加密与解密操作使用相同的密钥,我们把这个密钥称为秘密究钥。DES、AES算法都是常用的对称密码算法。流密码和分组密码都属于对称密码体制。流密码实现简单,对环境要求低,适用于手机平台的加密,广泛应用于军事、外交领域。RC4算法就是典型的流密码算法。流密码的理论、算法受限于国家安全因素未能公布。分组密码在这一点上与流密码恰恰相反,其理论、算法公开分类众多。DES、AES算法等主要的对称密码算法均属于分组密码。分组密码共有五种工作模式:电子密码本模式 (ECB) 、密文链接模式 (CBC) 、密文反馈模式(CFB) 、输出反馈模式 (OFB) 、计数器模式 (CTR) 。分组密码会产生短块,关于短块的处理方法有填充法、流密码加密法、密文挪用技术。

在非对称密码体制中,加密与解密操作使用不同的密钥。对外公开的密钥,称为公钥;对外保密的密钥,称为私钥。用公钥加密的数据,只能用私钥解密,反之,用私钥加密的数据,只能用公钥解密。RSA算法是常用的非对称密码算法。非对称密码体制同时支持数字签名技术,如RSA、DSA都是常用的数字签名算法。

散列函数可以有效地确保数据完整性,被作为消息认证技术。常用的散列函数算注有MD5、SHA、MAC。散列函数也是数字签名技术中最重要的技术环节。

数字签名离不开非对称密码体制,其私钥用于签名,公钥用于验证。基于数字签名的不伪造性,数字签名技术成为五类安全服务中数据完整性服务、认证性服务和抗否议性服务的核心技术。通信双方只有一方提供数字签名的认证方式称为单向认证,通信双方都提供数字签名的认证方式称为双向认证。一般网银系统多采用单向认证式,而要求较高的网银交易则都采用双向认证方式。密码学在不断地向前发展,只不过它的发展通常是以其密码算法的破解而引发,以更高安全系数算法的诞生而段落,密码学的明天将无可限量。

参考

《Java加密和解密的艺术》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】七、图

一、概念 图:记为G(V,E) 有向图:每条边都有方向 无向图:边无方向 完全图:每个顶点都与剩下的所有顶点相连 完全有向图有n(n-1)条边;完全无向图有n(n-1)/2条边 对于完全无向图,第一个节点与剩下n-1个节点…

本地生活服务再起波澜,这些数据告诉你该选哪些行业?

当地生活领域的竞争异常激烈,市场形势也在发生变化,以"变革、拓展、创新、尝试"为中心的当地生活领域每天都有新的故事。艾瑞咨询的数据显示,2020年中国当地生活服务市场规模达到19.5万亿元,预计到2025年,这…

众和策略股市行情分析:为什么不建议在登记日前买入股票?

为什么不主张在挂号日前买入股票? 之所以不主张在挂号日前买入股票,是因为挂号日之后股票会除息,从而使得股价跌落。而挂号日前买入虽说可以享有当期分红,但持股达不到一定年限的,分红是需要付税的,所以不…

常用环境部署(十三)——GitLab整体备份及迁移

一、GitLab备份 注意:由于我的GitLab是docker安装的,所以我的操作都是在容器内操作的,大家如果不是用docker安装的则直接执行命令就行。 1、Docker安装GitLab 链接:常用环境部署(八)——Docker安装GitLab-CSDN博客 2、GitLab备…

DNS测试和管理工具

一、dig 命令 说明: (1)dig只用于测试dns系统,不会查询hosts文件进行解析。 (2)加"server-ip":根据指定的DNS服务器来解析,绕过了本地解析库中设置的DNS服务器。 &…

Model::unguard()的作用

这是在生成假数据时碰见的,浅查了一下 Model::unguard() 是 Laravel 框架中的一个方法,它的作用是取消对 Eloquent 模型的属性赋值的安全性保护。 在默认情况下,Laravel 的 Eloquent 模型会对属性赋值做一些安全性检查,例如防止…

实现区域地图散点图效果,vue+echart地图+散点图

需求:根据后端返回的定位坐标数据实现定位渲染 1.效果图 2.准备工作,在main.js和index.js文件中添加以下内容 main.js app.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M…

ARM CCA机密计算架构软件栈之软件组件介绍

在本节中,您将了解Arm CCA的软件组件,包括Realm World和Monitor Root World。以下图表展示了Arm CCA系统中的软件组件: 在这个图表中,世界之间的边界显示为粗虚线。由较高权限的软件强制执行的较低权限软件组件之间的边界显示为细虚线。例如,非安全EL2处的虚拟机监视器强制…

QT上位机开发(会员管理软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了ini文件的解析办法,通过QSettings类就可以很轻松地访问ini文件里面的数据。除了ini文件之外,另外一种经常出…

安装 Node.js、npm

安装 nodejs 安装Node.js的最简单的方法是通过软件包管理器。 Node.js官网:https://nodejs.org/en/download/ cd /usr/local/src/wget -c https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz xz -d node-v18.16.0-linux-x64.tar.xz tar -xf node…

探究Chrome仿真模拟设备时Click区域不准确问题

一、开发环境 windows版本: windows 10 Chrome 版本: 116.0.5845.141 二、问题描述 在Chrome DevTools中开启仿真设备(微信开发者工具也有类似问题),如果页面元素有绑定click时,实际点击事件响应区域会…

如何使用Docker部署Swagger Editor结合内网穿透实现远程编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

【DevOps】搭建 项目管理软件 禅道

文章目录 1、简介2、环境要求3、搭建部署环境3.1. 安装Apache服务3.2. 安装PHP环境(以php7.0为例 )3.3. 安装MySQL服务 4、搭建禅道4.1、下载解压4.2、 配置4.2.1、 启动4.2.2、自启动4.2.3、确认是否开机启动 5、成功安装 1、简介 禅道是国产开源项目管…

一篇文章掌握系统架构的演变和常见微服务框架

目录 前言 一、系统架构的演变 1、单体应用架构 优点: 缺点: 2、垂直应用架构 优点: 缺点: 3、分布式SOA架构 3.1 什么是SOA 3.2 SOA架构 优点: 缺点: 4、微服务架构 优点: 缺点…

os-ten-ta-tion

在线词源词典 这是一张展现英语发展轨迹的地图。词源不是定义,但词源解释了我们现在所使用的单词,在过去的 600 年甚至 2000 年前的意思和发音是怎样的。 正文中的日期表示该单词最早留下文献记录的年份(除非另有说明,一般指英文文献)。但这…

【解决】电脑上的WIFI图标不见了咋整?

相信不少同学都遇到过这种情况:电脑上的wifi图标莫名不见了,甚至有时候还是在使用的中途突然断网消失的。 遇到这种情况一般有两种解决方案: 1. 在开机状态下长按电源键30秒以上 这种办法应该是给主板放电,一般应用在wifi6上面。…

Vue3-32-路由-重定向路由

什么是重定向 路由的重定向 :将匹配到的路由 【替换】 为另一个路由。 redirect : 重定向的关键字。 重定向的特点 1、重定向是路由的直接替换,路由的地址是直接改变的; 2、在没有子路由配置的情况下,重定向的路由可以省略 component 属性的配…

HackTheBox - Medium - Linux - Investigation

Investigation Investigation 是一款 Linux 机器,难度为中等,它具有一个 Web 应用程序,可为图像文件的数字取证分析提供服务。服务器利用 ExifTool 实用程序来分析图像,但是,正在使用的版本存在命令注入漏洞&#xff…

带大家做一个,易上手的家常糖醋白菜

准备 如果是大白菜就一个 小白菜就要两个 因为白菜炒完之后会变少 将白菜叶剥开每叶分成三个小块 整个剥完之后 放入盆中清洗干净 调一个糖醋汁 一勺料酒 两勺生抽 三勺白砂糖 四勺香醋 起锅烧油 放两个干辣椒 辣椒炒一下 然后倒入白菜 翻炒直到油全部融入白菜 然后倒入…

python打开文件的方式比较

open(addr,w) 打开之后文件无论以前有什么,打开后都要清空 /// open(addr,r) 文件打开后,不删除以前内容