数字签名原理

简介:

以下内容摘自笔者编著的《网管员必读——网络安全》(第2版)

 

9.5.3  数字签名原理

    数字签名是一种确保数据完整性和原始性的方法。数字签名可以提供有力的证据,表明自从数据被签名以来数据尚未发生更改,并且它可以确认对数据签名的人或实体的身份。数字签名实现了“完整性”和“认可性”这两项重要的安全功能,而这是实施安全电子商务的基本要求。
    当数据以明文或未加密形式分发时,通常使用数字签名。在这种情况下,由于消息本身的敏感性无法保证加密,因此必须确保数据仍然保持其原来的格式,并且不是由冒名者发送的。因为在分布式计算环境中,网络上具有适当访问权的任何人,无论是否被授权都可以很容易读取或改变明文文本。
    数字签名主要是为了证明发件人身份,就像我们来看到的某文件签名一样。但现在要说的签名是采取电子数字签名的方式。这种签名还可以防止别人仿签,因为经过加密过的签名会变得面目全非,别人根本不可能看到真正的签名样子。在第9.5.2节介绍了在文件传输和邮件发送中利用文件加密方式来阻止非法用户打开的原理,其实仅用了文件加密方式还不足以保证邮件传输的真正安全,因为邮件内容还可能被非法用户替换,尽管这些非法用户不能查看原邮件中的真正内容。这就涉及到如何确保自己收到的邮件就是自己希望的用户发来的问题了,此时就需要用到数字签名技术。但是在邮件传输中,通常又不是单独使用文件加密或者数字签名,而是一起结合起来使用,它们两者一起作用就可取到非常好的安全保护了。下面仍以第9.5.2节实例为例进行介绍,不同的只是在此封邮件发送中同时采用了文件加密和数字签名,实施双重保护。具体步骤如下。
n          AliceBob互换公钥。
n          Alice用自己的私钥对TXT文件进行数字签名。
n          AliceBob的公钥对TXT文件进行加密。
n          Alice把经过数字签名和加密的文件TXT,通过邮件或其他传输途径,如QQMSN等)传给Bob
n          Bob在收到签名并加密的邮件后首先用Bob自己的私钥进行文件加密的解密,然后再用Alice的公钥进行数字签名解密。
    同样,在这个过程中Cinda也可以获取BobAlice的公钥和签名并加密的标书文件TXT。同时因无Bob的私钥而无法打开邮件。同时由于Alice在发送文件前已用自己的私钥进行了数字签名,所以当Bob在收到邮件后完全可以证实自己收到的就是Alice发来的邮件,而不可能是其他用户的。试想如果Cinda非法用户想要改变邮件,冒充AliceBob发送邮件,因Cinda没有Alice的私钥,所以在用其他用户的私钥进行数字签名时就不可能再以Alice的公钥来解密数字签名了。
在这里要注意文件加密和数字签名的先后顺序,一定是先签名再加密,这样加密技术就可以同时保证邮件中的数字签名了。如果先加密,而后签名,非法用户在得到邮件后就可通过获取的公钥破解数字签名了,因为公钥是可以公开的,很容易被一些别有用心的人得到。数字签名破解后很可能签名被替换。当然邮件中的内容在没有收件人私钥的情况下还是无法打开的。

    以上介绍的是利用公钥和私钥进行文件加密和数字签名的原理,其实在实际应用中,这些公钥和私钥用户是不用具体关心它们的组成,而是由证书颁发机构或者软件自己生成。就拿公钥来说吧,那么长的代码,看起来都怕,而且随着密钥位置的增加,代码长度也随之增加,当然破解难度也将增加,也就越安全。但在一定程度上对使用有一些影响

本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/36962如需转载请自行联系原作者


茶乡浪子

相关文章
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1017 0
【密码学】一文读懂XTEA加密
|
4月前
|
算法 安全 Go
C/C++ 常用加密与解密算法
计算机安全和数据隐私是现代应用程序设计中至关重要的方面。为了确保数据的机密性和完整性,常常需要使用加密和解密算法。C++是一种广泛使用的编程语言,提供了许多加密和解密算法的实现。本文将介绍一些在C++中常用的加密与解密算法,这其中包括Xor异或、BASE64、AES、MD5、SHA256、RSA等。
80 1
C/C++ 常用加密与解密算法
|
5月前
|
数据安全/隐私保护
非对称加密原理与欺骗、ca原理
非对称加密原理与欺骗、ca原理
48 0
|
6月前
|
算法 安全 数据安全/隐私保护
XTEA加密算法实现过程
XTEA加密算法实现过程
62 0
|
算法 安全 数据安全/隐私保护
非对称加密加密原理和开发场景解析
过上一节,就能很好的理解非对称加密就是加密和解密双方使用的是不同的密钥。比喻就是:一把锁,如果被A用钥匙锁上了,那么A无法继续使用自己的钥匙打开,只能让B用他的钥匙打开。而如果B用钥匙把锁给锁上之后,同样必须只有A的钥匙才能打开。所以非对称加密主要解决的问题就是:可信问题,防窃听问题。
583 0
|
安全 算法 大数据
对称加密加密原理和开发场景解析
加密是自古以来人们都在不断使用的技术,目的是为了隐藏信息,只是随着时代在不断的变化,加密也在不断的更新。从古代的藏宝图对藏宝地点进行隐藏。到二战时候,破译敌方电台,都是属于加密和破解的过程。进入21世纪后,加密在互联网时代也有了新的加密方法。也创造了密码学这个学科。目前在加密的场景下,通常分为:可逆加密和不可逆加密。而在可逆加密场景里又分为:对称加密和非对称加密。本次主要讨论集中在可逆加密上。可逆加密顾名思义就是在对明文进行加密后生成密文,能够通过解密把密文再还原成明文。数据加密一般主要解决三个问题:可信问题(非对称加密可解决),防篡改问题(不可逆加密解决),防窃听问题...
295 0
|
算法 Java 数据安全/隐私保护
加密解决方案-Java实现RSA非对称加密
本文基于RSA加密算法原理,详述什么是RSA算法、RSA加密解密原理进行实践的过程。
826 1
加密解决方案-Java实现RSA非对称加密
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂基于Elgamal的数字签名
本文来先填一下之前挖的坑,简单介绍一个实际的数字签名的方案,给自己挖的坑总是要自己来填的。
【密码学】一文读懂基于Elgamal的数字签名
|
算法
【密码学】一文读懂数字签名
本文来简单的聊一聊数字签名,先来看下面一个例子。
【密码学】一文读懂数字签名
|
安全 算法 数据安全/隐私保护
HTTPS加密原理,搞懂什么是对称加密、非对称加密、证书、数字签名
众所周知,http协议是一种未加密的协议,我们未加密的数据,在传输的过程中会经过一个又一个的物理节点,如果被人通过抓包的方式拿到了我们的数据,将会给我们造成无法估量的损失。 为了解决解决这个问题,https应运而生。https通过加密的手段,保障的数据的安全性。那https的怎么加密的呢?这就是我们接下来需要讨论的内容。
HTTPS加密原理,搞懂什么是对称加密、非对称加密、证书、数字签名