如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?
一、几个问题
在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书。大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的。在传输的投标书时,提出了以下三个问题:
1、怎么保证发送方(甲方)发送的投标书不泄密给攻击者呢
2、在传输过程中,攻击者虽然解密不了密文,但是对密文进行编辑,比如截掉了一段信息,加上了一段乱码,怎么办?在这个场景中,举一个极端的例子,修改了标的,怎么办
3、接收者(乙方)接到了投标书,怎么确定是甲方发出的呢?就是说甲方抵赖,说没有发送过这样的一份标书怎么办?
带着这三个问题,来学习一下对称加密技术、非对称加密机制、Hash函数等密码学基础理论。
一、基本概念
保密性:防止信息泄露给未授权个人、实体,信息仅被合法用户使用的特性。
完整性:是指所有资源只能由授权方或以授权的方式修改,即信息未经授权不能进行改变的特性。
可用性:是指所有资源在适当的时候可以由授权方访问,即信息可被授权实体访问并按需求使用的特性
不可否认性:也就是不可抵赖性,确认发送方是发送方本人的特性。
信道的传输 模型如下图一。
二、第一个问题:怎么保证保密性呢?
很显然,加密!
对于较大文件,需要使用对称加密算法。
在对称加密算法中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理使其变成复杂的加密密文,然后在信道中传输。
接收方收到密文后,需要使用同一个密钥及加密算法的逆算法对密文进行解密,得到明文。
在对称加密算法中,使用的密钥只有一个,收发双方使用同一个密钥对数据进行加密和解密,这就要求解密方事先知道加密密钥。
如果攻击者截获了在信道中传输的信息了,由于攻击者没有密钥,没办法得到明文,也就是标书,这就保证了数据的保密性。
对称加密算法的优点:对称密钥保密,算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的缺点:怎样安全无误地将对称密钥传输给接收方?这是对称加密算法的天生的缺点,胎里带来的。
图二:对称加密技术的原理图
2.2对称加密的算法
对称加密的算法包括两种,一种是分组加密,包括DES、AES、SM4算法等;
另一种是序列密码,包括RSA密码、ElGamal密码、SM2椭圆曲线公钥加密算法等。
2.3对称加密的问题
对称加密算法最大的问题,就是怎样安全无误地将密钥传输给接收方?
三、第二个问题:怎样传输对称加密算法的密钥K呢?
实际上,图一中安全信道是不存在的,如果有安全信道,那么就不需要加密了,直接把明文丢进安全信道内,一切都解决了。这样的安全信道是不存在的。那么怎样传输对称加密技术中的密钥呢?在此我们引入了另一项加密技术,公钥密码体制。公钥是指公开的密钥。
在对称加密技术中,发送方和接收方公用一套密钥,而公钥密码技术中,发送方和接收方分别有公钥和私钥,公钥公开,私钥只有自己知道,并且公钥和私钥是成对的,可以并且只能相互加解密。原理见图三。
图三 非对称加密技术
公钥密码算法,由于加密、解密的密钥不同,也叫作非对称加密算法。
在公钥密码体制中,发送方和接收方都有两套密码,一套公钥,一套私钥。也就是说发送方有自己的公钥、私钥和接收方的公钥。接收方有自己的公钥、私钥和发送方的公钥。公钥和私钥互为加解密密钥。也就是说用公钥加密可以用同一方的私钥解密;用私钥加密,可以用同一方的公钥解密。
对称加密算法简单,加解密密钥相同且密钥较短,并且需要传输密钥,因此安全性较弱,加密耗时短,常用来加密大数据。
非对称加密算法,算法复杂,密钥相对于对称加密算法比较长,因此安全性强,加密耗时时间也长,适合加密少量数据。那么可以用对称加密技术加密真正的明文(通常是大数据),而后用非对称加密技术加密对称加密的密钥(通常数据量较少),这样综合利用两种加密技术,配合堪称完美。这就是数字信封技术。相当于将对称加密的密钥放在一个安全的信封内,在信道中传输。
图4 数字信封技术
第三个问题:怎么保证不可否认性呢?怎么样保证是甲方发送的标书,如果有人冒充甲方用同样的加密算法加密了一份假的标书,发送给乙方,乙方误认为是甲方发送的,甲方怎么证明不是自己发送的呢?或者甲方发给了乙方一份标书,后续又否认自己发过这份标书,这样的情况怎样用技术避免呢?
在现实场景中,可以用手工签名保证不可否认,同样在网络场景中,可以用数字签名来确保不可否认性。
在公钥密码体制中,发送方和接收方都有公钥和私钥,公钥是公开的,私钥只有自己知道。如果用发送方的私钥加密,用公钥解密,就可以确保是发送方本人发送的,不是伪造的。这就是数字签名技术,也是公钥密码体制的另一个应用:认证。原理见图5。
图5 数字签名技术
提出一个问题:公钥密码体制加密算法复杂,加密时间较长,不适合加密大数据,那么用发送方的私钥加密标书明文需要很长时间,怎么样解决这样的问题呢?
第四个问题:怎么样知道标书的密文在传输过程中没有被攻击者篡改呢?
攻击者截获了密文,由于不知道密钥,没办法解密,看不到标书的明文;但是可以修改密文,添加一段乱码或者截掉一段密文,尤其截掉的密文是标的时。那么怎样知道在传输的过程中,信息有没有被修改过呢?在这里再次引入一个函数,散列函数,也就是常说的Hash函数。Hash函数可以将任意长度的输入,映射成固定长度的输出h,输出h称作报文摘要,输出的位数要比输入的位数小很多。
Hash函数的定义:Hash函数将任意长度的输入M映射成固定长度的输出hash码h。
定义中有两个点:①任意长度的输入②固定长度的输出。
为什么Hash函数可以知道密文在传输过程中没有被篡改呢?这就牵扯到Hash函数的两个特性
①无论是多长的输入,改变输入的任意一位或者多位,都会导致输出的改变。也就是说是不存在x、y,x不等于y,但是x、y的hash值是一样的。在传输的过程中,如果改变了密文的任一位,那么解密出来的明文的Hash值和原来的Hash值是不一样的,接收方就可以知道密文在信道中被篡改了。
②Hash函数的单向性。也就是由Hash值不能得到相应的报文。如果Hash函数不具有单向性,攻击者截获了明文的Hash值之后,就可以得到明文了,Hash函数也就失去了保证报文完整性的基础。
使用Hash函数保证数据的完整性、可用性原理件图三。
步骤:
①对标书明文,用对称密钥K进行对称加密,形成密文
②对标书明文求Hash值,步骤①和步骤②可以互换
③将标书的Hash值拼接在密文后面,形成新的密文,在信道上传输
④接收方收到拼接成的密文后,先将密文和Hash值分开,用对称密钥K进行解密,得到标书的明文
⑤对步骤④中得到的明文求Hash值
⑥将步骤⑤中的Hash值和步骤④中的原始Hash值进行比较,
综上所述,我们运用了对称加密算法、非对称加密算法(加密、认证两个功能)、数字信封技术、Hash函数等技术保证了标书在传输过程中的保密性、完整性、不可否认性。
如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?的更多相关文章
- 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】
1. HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...
- https处理的一个过程,对称加密和非对称加密
一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...
- https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名
声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...
- 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理
http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...
- 对称加密与非对称加密,以及RSA的原理
一 , 概述 在现代密码学诞生以前,就已经有很多的加密方法了.例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊.16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码.猪圈密码, ...
- 几个例子理解对称加密与非对称加密、公钥与私钥、签名与验签、数字证书、HTTPS加密方式
# 原创,转载请留言联系 为什么会出现这么多加密啊,公钥私钥啊,签名啊这些东西呢?说到底还是保证双方通信的安全性与完整性.例如小明发一封表白邮件给小红,他总不希望给别人看见吧.而各种各样的技术就是为了 ...
- (转)对称加密与非对称加密,以及RSA的原理
一 概述 二对称加密和非对称加密 对称加密 非对称加密 区别 三RSA原理 整数运算 同余运算 当模数为合数n时 当模数为质数p的时候 离散对数问题 RSA原理 一 , 概述 在现代密码学诞生以前,就 ...
- 【上】安全HTTPS-全面具体解释对称加密,非对称加密,数字签名,数字证书和HTTPS
一,对称加密 所谓对称加密.就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的步骤例如以下: 发送端和接收端首先要共享同样的密钥k(即通信前两方都须要知道相应 ...
- 你知道,HTTPS用的是对称加密还是非对称加密?
1.引言 随着互联网安全意识的普遍提高,对安全要求稍高的应用中,HTTPS的使用是很常见的,甚至在1年前,苹果公司就将使用HTTPS作为APP上架苹果应用市场的先决条件之一(详见<苹果即将强制实 ...
随机推荐
- Redis真的又小又快又持久吗
一本正经 面试官:小伙子,谈谈对Redis的看法. 我:啊,看法呀,坐着看还是躺着看.Redis很小?很快?但很持久? 面试官:一本正经的说,我怀疑你在开车,不仅开开车还搞颜色. 我:... 面试官: ...
- Java 总结 数据底层原理 【包括 ArrayList、LinkedList、hash table、HashMap、Hashtable、ConcurrentHashMap、hash code、HashSet、LinkedHashMap、LinkedHashSet】
1.ArrayList (1)底层是由动态数组实现的[使用了List接口]. (2)动态数组是长度不固定,随着数据的增多而变长. (3)如果不指定,默认长度为10,当添加的元素超过当前数组的长度时,会 ...
- JSR-303规范
规范链接 CONSTRAINT 详细信息 @Valid 被注释的元素是一个对象,需要检查此对象的所有字段值 @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null ...
- vue爬坑之路(插件安装)
npm install vue-table-with-tree-grid --save import ZkTable from 'vue-table-with-tree-grid' Vue.use(Z ...
- 机器学习|线性回归算法详解 (Python 语言描述)
原文地址 ? 传送门 线性回归 线性回归是一种较为简单,但十分重要的机器学习方法.掌握线性的原理及求解方法,是深入了解线性回归的基本要求.除此之外,线性回归也是监督学习回归部分的基石. 线性回归介绍 ...
- KMP算法解题模板(更新)
/* kmp算法的主要作用在于对next数组的运用,所以这里只给出next数组的模板 性质1:对于每一个长度len的子串,该子串的最小循环节为len-next[len] 性质2:kmp的next不断向 ...
- python+selenium 定位元素的主要方法
selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name ...
- springBoot--原理分析
起步依赖分析 分析spring-boot-starter-parent 按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-star ...
- Java的JDBC
第一个JDBC程序 创建测试数据库 CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStud ...
- HTTP2和WebSocket
HTTP http是目前应用最广泛的应用层协议,截止到目前为止已经发布了多个版本,最常用的是http1.1和http2. http0.9是最早的版本,功能很简单,没有header,只支持GET. ht ...