[网络安全入门]密码学基础-数字签名到底是什么?

2021年准备在工作之余加强网络安全这块知识的学习,博文主要是记录自己的学习笔记,内容比较基础。

数字签名:公钥数字签名,只有信息的发送者才能产生别人无法伪造的一段数字串,类似于合同上的签名。

一、安全通讯所需特征:
机密性,完整性,端点鉴别

1.机密性
简单来说就是只有发送方和希望接受方能看到文件的内容
[网络安全入门]密码学基础-数字签名到底是什么?_第1张图片
要实现机密性很明显要用到加密,即将发送的明文运用加密算法进行加密形成密文,让别人看不懂,只有接收方能使用解密算法解密出明文

[网络安全入门]密码学基础-数字签名到底是什么?_第2张图片

2.完整性
不能让其他人篡改或增删通信内容

A给B发送文件被中间人纂改后发送给B
[网络安全入门]密码学基础-数字签名到底是什么?_第3张图片
3.端点鉴别
通信双方能鉴别另一方身份,以及确信通信的另一方确认具有声称的身份,别人不能冒充我给你写信,也不能冒充你收到我写给你寄的信。

二、下面介绍三种基于数学原理的工具:
1.对称加密(对称密钥系统)

密钥其实就是一串数据,可以把它看成是一把钥匙,用它加密数据就相当于用这把钥匙给数据上了把锁,接收方和发送方手里都有这把钥匙,即对称密钥。
在这种密钥系统中如何安全的分发密钥是一个问题

2.非对称加密(公开密钥系统)
与对称加密不同的是非对称加密使用的是两把钥匙(私钥,公钥),用其中一把钥匙加密的数据只有另外一把钥匙才能解密。比如发送方A给接收方B发送信息(发送方A拥有接收方B的公钥,接收方B拥有自己的私钥和公钥)这时不管是谁拿到了A发送的数据都是无法解密的,因为A的数据用B的公钥加密而用B公钥加密的数据只有B的私钥可以解密,而B的私钥只有B自己拥有,如此一来便能保证数据不被泄露。但是这样还会有一个问题,中间人获取到了A发送的数据后虽然无法解密数据但是可以胡乱修改或删除加密报文的一部分,将纂改后的数据再发送给B,B拿到数据解密后无法判断数据是否被修改。

3 密码散列函数
散列函数又称哈希函数
散列函数以一段数据m为输入 计算得到一串定长的字符串h(m)称之为散列值,任意两个不同的数据计算的到的散列值一定不一样,而且无法根据散列值逆推出数据内容,散列值就像是数据的指纹。

三、数字签名原理
利用上面提到的三个工具,我们试着解决入侵者冒充别人身份发送伪造信息的问题,考虑如何让接收方purvis收到一条信息后确认来自所期待的发送方,要证明一条报文是来自这个人,那么将这个人独一无二的东西附在这条报文上即可,就像现实生活中的签名。那么我们想想独一无二的东西是什么?对,就是私钥,私钥是只有自己才拥有的独一无二的东西。这个时候我们只需要用私钥对报文m进行加密得到一个密文K私(m),这就叫签名,然后把签名连同实际要发送的数据一起打包((m,K私(m)))发送给接收方Purvis,接收方收到数据后用发送方的公钥解密K私(m)的到m,然后将解密得到的m与第一个m(m,K私(m))进行比较,如果匹配一致说明该报文一定是来自发送方,因为能用发送方的公钥解密该报文,那么说明该报文一定是发送方的私钥加密的,而发送方的私钥是其他人都不知道的。这种技术就叫做数字签名。

注:其实在实际环境中m会经过散列函数处理生成h(m),签名[K私(h(m))],接收方用公钥解密得到h(m) 和m,这时只需对m用同样的离散函数处理然后比较即可。

你可能感兴趣的:(网络安全,密码学基础,密码学,网络安全,数字通信)