文档章节

密码学基础概念

o
 onedotdot
发布于 2017/03/23 13:30
字数 2202
阅读 35
收藏 0

这里记录一下我对密码学的知识的了解:

  1. 先说一下基础的知识和术语

    1.1.明文:指没有加密的字符串,一般人都能看懂的意思(如web开发中以http协议请求时,可通过抓包来获取到浏览器或服务器发送的数据包)。

    1.2.密文:指经过某个加密算法,将明文变成其他字符串。从密文本身,一般不能看出明文本身的意思。不然就失去加密的意义。要想得到明文,就能通过对应的解密算法,才能得到明文,从而知道本来的意思。

    1.3.加密算法和解密算法:指是将明文变成密文或密文变成明文的逻辑步骤。

    1.4.密钥:指一种参数,它是在加密中或解密中输入的数据。

    1.5.消息摘要:指唯一对应一个消息(字符串)的固定长度的值,它由一个消息摘要算法对消息进行作用而产生的。

      特点:抗冲突性高,单向性的

      抗冲突性使得如果一段明文稍有变化,哪怕只更改该段落的一个字母,通过消 息摘要算法作用后都将产生不同的值。

      单向性是指无法从经消息摘要算法作用后产生的值,还原到消息本身。

      作用:检验数据的完整性

      消息摘要算法又叫散列算法,杂凑算法,消息摘要又叫散列值。常见的有MD2,MD4, MD5,SHA-1, SM3(国产的)等等。

 

    1.6.对称加密和解密:指在加解密过程中,参数-->-密钥是相同的,即用的是相同的密钥。

        相对于非对称加密和解密的优点:计算开销小,速度快。缺点是密钥管理困难,需要发送方采用安全的机制共享密钥。

        加解密算法是公开的。常见的有DES,AES,3DES,SM1(国产),SM4(国产)等等

   1.7.非对称加密和解密:指在加解密过程中,参数-->密钥是不相同的。其中一个密钥是公开的,发布出去给别人使用的,称为公钥;另一个密钥是保密的,称之为私钥。

       特点:用公钥或私钥加密的密文,只能由私钥或公钥解密才可以得到相应的明文,否则,无法从密文中得到明文。

       优点:便于密钥管理,分发。缺点是计算开销大,处理速度相对较慢。

       加解密算法是公开的。常见的有RSA、DSA、ECC,SM2(国产)等等

   1.8.数字签名/验签:

       方式1:A要通过网络发送数据(C)给B:

        a.A先将C用非对称私钥加密得到C0,

        b.再将C0和C一起发送给B,

        c.B用公钥解密C0得到明文,再与C做比较,若相同,说明传输过程中没有被人篡改内容。

      方式1的流程图

               密码学总结记录(一)

    

        方式2:a.先将数据C做消息摘要算法,得到消息摘要,

             b.用私钥加密消息摘要得到密文C0,

             c.再和C一起发送给B,

             d.B用公钥解密C0得到消息摘要,再将C以相同的消息摘要算法计算得到消 息摘要,再做比较,若相同,说明传输过程中没有被人篡改内容。

            方式2的流程图

                密码学总结记录(一)

           

             可为什么不用对称加解密来实现呢?为什么不直接用摘要来实现呢?

               这里就说到了数字签名/验签的作用了:

                1.确定该数据包是由发送方发送的(私钥只有发送方才有的,只要用公钥解密后, 两者数据包相同,过程称为验签。就可以确定是发送者发送的)。

                2.确定该数据包在传输的过程中没有被修改(被黑客操作了)。

          

这里举个案例

    场景:A要与B通信,并且保证数据的安全传输

    要求:1.确保通信双方是彼此;

        2.确保通信内容不被别人知道(即使被抓包,也无法知道消息内容)

        3.内容在传输中若被修改,接收方在接受数据后可以知道

       以上是信息安全传输的最基本要求。

    分析:数字签名正好可以解决要求1的问题,私钥只有发送方有,发送方发送一个数字签名包,若接收方能用对应的公钥验签成功,就可以说明发送方是与之通信的一方。

        要求2是不可以用数字签名的方式来解决的,因为消息明文也在数字签名数据包中。

        要求3就不说了,true&&false --------->已经是false了(短路运算)。

       通过上面分析,若只通过一次交互就满足上述的3个要求,显然不太可能。所以解决的办法  只有通过多次的交互,来满足这3个要求。

       步骤1:先确认通信双方的身份(要求1),这个可以通过数字签名来实现

       步骤2:要确保内容不被别人知道,不能采用非对称加密的方式(因为公钥是公开的),这里采用对称加密的方式(加密算法和密钥应该是在会话的过程中临时产生,保存在内存中的)。通信双发需要商量两者都支持的

            对称加密类型。

       步骤3:要确保内容传输中被修改后,接收方能够知道,可以采用对消息做消息摘要,然后再用对称加密消息本身和消息摘要。

       总结:双方发送数字签名包,作用:1.确定通信双方的身份;2.协商好一个对称加密类型(算法);3.协商好一个摘要算法类型

             双方通过数字信封来传递对称密钥(双方只确定了对称加密的类型,还需要密钥才 可以进行对称加解密)。

         数字信封:

           密码学总结记录(一)

       上图是带数字签名的数字信封(好处是既有通信双发的身份确认,有可以确保对称密钥的可靠传输;缺点是A所支持的对称加密类型算法,B都支持),不适合本文讲述的应用场景。所以采用不带数字签名的数字

         信封,如下图:

           密码学总结记录(一)

   

       现在还有一个问题没有解决:A的私钥对应的公钥,B如何获得;B的私钥对应的公钥, A如何获得?因为A和B之间可能没有任何的联系,如浏览器与某一台web服务器。

       这里采用数字证书的方式来解决。

     数字证书:  

       干什么的:1.可以确保身份

              2.可以使接收者安全的接收发送方的公钥

       怎么生成的:这里说一个组织(CA),简而言之就是一个给人发数字证书的这么一个机构。B需要证书,B提交申请给CA,CA会审核,通过后就会给你发一个证书。过程就不介绍了(自行google)。说一下证书里面的主要

               信息(如下图)

           密码学总结记录(一)

       

       颁发者:一般就是指CA了

       有效期:证书的寿命

       使用者:就是申请者了

       公钥:申请者私钥对应的公钥

       签名哈希算法:数字证书的摘要算法

       指纹:CA的私钥对证书的摘要值得加密值(签名值)

       签名算法:CA的非对称加密算法类型

       指纹算法:证书的摘要算法

      大致产生证书的过程:申请者B提交数据给CA(申请者的公钥,申请者的说明等),CA审核通过后,会对申请者提交的数据以一定数据格式封装,再用CA的私钥做数字签名(带摘要的签名),然后再给到申请者B,供B通

                   信用。

     A得到B的数字证书后,怎么确保B的呢?A的操作系统在安装时就已经有了CA的一个数字证书(跟着系统来的),A只需要从CA证书中取出CA的公钥,用公钥去解密指纹,再用指纹算法去对整个证书做摘要,然后比较两者的

     摘要是否相同即可(CA证书可通过ie浏览器---->internet选项------>内容------>证书)。

 

     暂时就到了,第一次写博客,写了好几个小时,文中有误的地方,欢迎指出。后面会举例:https网站的交互(密码学的一种应用)。

本文转载自:http://www.zuidaima.com/blog/2759127586540544.htm

o
粉丝 11
博文 382
码字总数 16064
作品 0
朝阳
私信 提问
软考信息安全工程师基础知识考试大纲

1.信息安全基本知识 1.1信息安全概念 1.2信息安全法律法规 1.3信息安全管理基础 1.4信息安全标准化知识 1.5信息安全专业英语 2.计算机网络基础知识 2.1训算机刚络的体系结构 2.2 Internet协议...

软考徐朋
2017/03/31
0
0
密码学-学习资料和网站

我接触密码学有一段时间了,把我收集的资料整理出来,以便后期查阅。另外也给网友一些捷径。 书籍 计算机安全和密码学.Computer.Security.And.Cryptography.pdf 英文版 《深入浅出密码学——...

BjarneCpp
2018/01/09
0
0
区块链(BlockChain)介绍 | 系列目录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GavinZhou/article/details/81904474 AI、Block Chain、IoT是今天科技圈出现频率最高的三个词,比特币价格的走...

GavinZhou_xd
2018/08/21
0
0
第二章、区块链基础概念及其分类与特征

BIU区块营 精读——第二章、区块链基础概念及其分类与特征 《区块链社会:从数字货币到信用社会》 作者:长铗、韩锋等著 出版社:中信出版社 B-0026(@syg文过饰非) 第二章、区块链基础 ——...

Biu区块营
2018/10/15
0
0
我写了一本书《深入浅出HTTPS:从原理的实战》

花了一年半的时间,写了一本书《深入浅出HTTPS:从原理的实战》,目前已经可以购买了,对密码学和 HTTPS 感兴趣的同学可以关注下。 这篇博文是本书的前言,解释了我和这本书的渊源、写书的原...

虞大胆
2018/06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部