Let's Go!

什么是数字签名

上一篇 / 下一篇  2009-04-09 10:01:47 / 个人分类:经典转载

什么是数字签名

 

数字签名是在公钥加密系统的基础上建立起来的,数字签名的产生涉及的运算方式是为人们所知的散列函数功能,也称"哈希函数功能"(Hash Function).哈希函数功能其实是一种数学计算过程.这一计算过程建立在一种以"哈希函数值""哈希函数结果"形式创建信息的数字表达式或压缩形式(通常被称作"信息摘要""信息标识")的计算方法之上.在安全的哈希函数功能(有时被称作单向哈希函数功能)情形下,要想从已知的哈希函数结果中推导出原信息来,实际上是不可能的.因而,哈希函数功能可以使软件在更少且可预见的数据量上运作生成数字签名,却保持与原信息内容之间的高度相关,且有效保证信息在经数字签署后并未做任何修改.

所谓数字签名,就是只有信息的发送者才能产生的,别人无法伪造的一段数字串,它同时也是对发送者发送的信息的真实性的一个证明.签署一个文件或其他任何信息时,签名者首先须准确界定要签署内容的范围.然后,签名者软件中的哈希函数功能将计算出被签署信息惟一的哈希函数结果值(为实用目的).最后使用签名者的私人密码将哈希函数结果值转化为数字签名.得到的数字签名对于被签署的信息和用以创建数字签名的私人密码而言都是独一无二的.

一个数字签名(对一个信息的哈希函数结果的数字签署)被附在信息之后,并随同信息一起被储存和传送.然而,只要能够保持与相应信息之间的可靠联系,它也可以作为单独的数据单位被存储和传送.因为数字签名对它所签署的信息而言是独一无二的,因此,假如它与信息永久地失去联系则变得毫无意义.

在书面文件上签名是确认文件的一种手段,数字签名同传统的手写签名相比有许多特点.

首先,数字签名中的签名同信息是分开的,需要一种方法将签名与信息联系在一起,而在传统的手写签名中,签名与所签署之信息是一个整体;

其次,在签名验证的方法上,数字签名利用一种公开的方法对签名进行验证,任何人都可以对之进行检验.而传统的手写签名的验证,是由经验丰富的接收者,通过同预留的签名样本相比较而作出判断的;

最后,在数字签名中,有效签名的复制同样是有效的签名,而在传统的手写签名中,签名的复制是无效的.

数字签名可以同时具有两个作用:确认数据的来源,以及保证数据在发送的过程中未作任何修改或变动.因此,在某些方面而言,数据签名的功能,更有些近似于整体性检测值的功能.但是,二者的一个主要区别在于,数字签名必须能够保证以下特点,即发送者事后不能抵赖对报文的签名.这一点相当重要.由此,信息的接收者可以通过数字签名,使第三方确信签名人的身份及发出信息的事实.当双方就信息发出与否及其内容出现争论时,数字签名就可成为一个有力的证据.一般来说因信息篡改而受影响较大的是接收方.因此,接收方最好使用与信息发送方不同的数字签名,以示区别.这是整体性检测值所不具有的功能.在这种意义上说来,确认一个数字签名,有些类似于通过辩认手写签名来确认某一书面文件的来源一样的意义.

采用数字签名和加密技术相结合的方法,可以很好地解决信息传输过程中的完整性,身份认证以及防抵赖性等问题.

(1)完整性.因为它提供了一项用以确认电子文件完整性的

术和方法,可认定文件为未经更改的原件.

(2)可验证性.可以确认电子文件之来源.由于发件人以私钥产生的电子签章惟有与发件人的私钥对应的公钥方能解密,故可确认文件之来源.

(3)不可否认性.由于只有发文者拥有私钥,所以其无法否认该电子文件非由其所发送.

数字签名的确认

数字签名的确认是一个参照原信息和给定的公共密码来查验数字签名的过程,进而决定为同一信息使用私人密码创建的数字签名与被参照的公共密码是否保持一致.通过使用与创建数字签名相同的哈希函数功能,来计算出原信息新的哈希函数结果,以达到对数据签名的确认.接着,使用公共密码和新的哈希函数结果,确认者可以检查数字签名是否是使用相应的私人密码签署的,新计算出来的哈希函数结果是否与在签名过程中被转化为数字签名的原哈希函数结果值相匹配.

确认软件将认同数字签名为"已被确认",假如:

(1)签名者的私人密码是用来对信息进行数据签名的,而公共密码是用来确认数字签名的,因为,公共密码将只确认签名者使用私人密码签署数字签名.而事实上,公共密码已经确认了签名是由私人密码作出的;

(2)信息未曾被改变,在确认过程中,这一点可以通过将确认者计算出来的哈希函数结果与从数字签名中的哈希函数结果相对比得出结论来.

数字签名过程

数字签名的使用一般涉及以下几个步骤,这几个步骤即可由签名者也可由被签署信息的接受者来完成:

(1)用户生成或取得独一无二的加密密码组.

(2)发件人在计算机上准备一个信息(如以电子邮件的形式).

(3)发件人用安全的哈希函数功能准备好"信息摘要".数字签名由一个哈希函数结果值生成.该函数值由被签署的信息和一个给定的私人密码生成,并对其而言是独一无二的.为了确保哈希函数值的安全性,应该使通过任意信息和私人密码的组合而产生同样的数字签名的可能性为零.

(4)发件人通过使用私人密码将信息摘要加密.私人密码通过使用一种数学算法被应用在信息摘要文本中.数字签名包含被加密的信息摘要.

(5)发件人将数字签名附在信息之后.

(6)发件人将数字签名和信息(加密或未加密)发送给电子收件人.

(7)收件人使用发件人的公共密码确认发件人的电子签名.使用发件人的公共密码进行的认证证明信息排他性地来自于发件人.

(8)收件人使用同样安全的哈希函数功能创建信息的"信息摘要".

(9)收件人比较两个信息摘要.假如两者相同,则收件人可以确信信息在签发后并未作任何改变.信息被签发后哪怕是有一个字节的改变,收件人创建的数据摘要与发件人创建的数据摘要都会有所不同.

(10)收件人从证明机构处获得认证证书(或者是通过信息发件人获得),这一证书用以确认发件人发出信息上的数字签名的真实性.证明机构在数字签名系统中是一个典型的受委托管理证明业务的第三方.该证书包含发件人的公共密码和姓名(以及其他可能的附加信息),由证明机构在其上进行数字签名.

其中,(1)(6)是数字签名的制作过程,(7)(10)是数字签名的核实过程.</P< p>

 

 

 

SHA

  安全散列算法SHA

  (Secure Hash AlgorithmSHA)

  是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1。其对长度不超过264二进制位的消息产生160位的消息摘要输出。

  SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说时对明文的一种指纹或是摘要所以对散列值的数字签名就可以视为对此明文的数字签名。

 

 


TAG:

 

评分:0

我来说两句

Open Toolbar