一、几个问题

在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书。大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的。在传输的投标书时,提出了以下三个问题:

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函数 保证信息的保密性、完整性、可用性和不可否认性?的更多相关文章

  1. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】

    1.  HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...

  2. https处理的一个过程,对称加密和非对称加密

    一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...

  3. https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名

    声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...

  4. 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理

    http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...

  5. 对称加密与非对称加密,以及RSA的原理

    一 , 概述 在现代密码学诞生以前,就已经有很多的加密方法了.例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊.16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码.猪圈密码, ...

  6. 几个例子理解对称加密与非对称加密、公钥与私钥、签名与验签、数字证书、HTTPS加密方式

    # 原创,转载请留言联系 为什么会出现这么多加密啊,公钥私钥啊,签名啊这些东西呢?说到底还是保证双方通信的安全性与完整性.例如小明发一封表白邮件给小红,他总不希望给别人看见吧.而各种各样的技术就是为了 ...

  7. (转)对称加密与非对称加密,以及RSA的原理

    一 概述 二对称加密和非对称加密 对称加密 非对称加密 区别 三RSA原理 整数运算 同余运算 当模数为合数n时 当模数为质数p的时候 离散对数问题 RSA原理 一 , 概述 在现代密码学诞生以前,就 ...

  8. 【上】安全HTTPS-全面具体解释对称加密,非对称加密,数字签名,数字证书和HTTPS

    一,对称加密 所谓对称加密.就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的步骤例如以下: 发送端和接收端首先要共享同样的密钥k(即通信前两方都须要知道相应 ...

  9. 你知道,HTTPS用的是对称加密还是非对称加密?

    1.引言 随着互联网安全意识的普遍提高,对安全要求稍高的应用中,HTTPS的使用是很常见的,甚至在1年前,苹果公司就将使用HTTPS作为APP上架苹果应用市场的先决条件之一(详见<苹果即将强制实 ...

随机推荐

  1. 服务性能监控之Micrometer详解

    Micrometer 为基于 JVM 的应用程序的性能监测数据收集提供了一个通用的 API,支持多种度量指标类型,这些指标可以用于观察.警报以及对应用程序当前状态做出响应. 通过添加如下依赖可以将 M ...

  2. CSS命名规范整理

    基于网易NEC修改后,整理的命名规范 单行写完一个选择器定义 便于选择器的寻找和阅读,也便于插入新选择器和编辑,便于模块等的识别.去除多余空格,使代码紧凑减少换行. 如果有嵌套定义,可以采取内部单行的 ...

  3. Android官方文档翻译 四 1.2Running Your App

    Running Your App If you followed the previous lesson to create an Android project, it includes a def ...

  4. Ubuntu16桌面版编译和安装OpenCV4

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. 《剑指offer》面试题12. 矩阵中的路径

    问题描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...

  6. rocketmq实现延迟队列(精确到秒级)

    最近项目里需要在延时队列,但是开源版本rocketmq不支持任意时间延时,造成有些任务无法执行 参考了网上的不少文章,但是都么有实现,所以再开源的基础上改造了个支持任意时间延时的队列. 源码地址: h ...

  7. Git:解决报错:fatal: The remote end hung up unexpectedly

    使用全局代理即可.字面意思连接时间过长,被github中断了连接.

  8. FilterChain过滤器链(Servlet)

    在 Web 应用中,可以部署多个 Filter,若这些 Filter 都拦截同一目标资源,则它们就组成了一个 Filter 链(也称过滤器链).过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求 ...

  9. python16day

    昨日回顾 自定义模块 模块的两种执行方式:脚本方式.调用方式 name 模块导入的方式 相对导入 random:获取随机数相关 今日内容 常用模块的介绍 time:和时间相关 datetime os ...

  10. 学习JAVAWEB第九天

    ## XML: 1. 概念:Extensible Markup Language 可扩展标记语言 * 可扩展:标签都是自定义的. <user> <student> * 功能 * ...