`
youyun_2008
  • 浏览: 113510 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

转 白话数字签名

阅读更多
在实际使用非对称加密的时候,往往不直接对文件进行加密,而是使用摘要算法与非对称算法相结合(适用于数字签名)或对称加密和非对称加密相结合(适用于加密传输文件)的办法来解决或者说绕过非对称加密算法速度慢的问题。

摘要算法,又叫作Hash算法或散列算法,是一种将任意长度的输入浓缩成固定长度的字符串的算法,注意是“浓缩”而不是“压缩”,因为这个过程是不可逆的。
它的特点是:
1. 不同内容的文件生成的散列值一定不同;相同内容的文件生成的散列值一定相同。由于这个特性,摘要算法又被形象地称为文件的“数字指纹”。
    2. 不管文件多小(例如只有一个字节)或多大(例如几百GB),生成的散列值的长度都相同,而且一般都只有几十个字符。



实际对文件作数字签名的方法:
由于非对称加密的速度实在太慢了,所以在实际对文件作数字签名的时候,例如对上一篇中我用Word写给Clark的借条进行签名,总是先生成这个借条的散列值,然后用我的私钥对这个散列值进行非对称加密,然后把加密后的散列值(我们就叫它“散列值密文”吧)和借条一同发送到Clark那里。Clark在收到借条和散列值密文后,用从网上下载的我的公钥将散列值解密,然后Clark自己再生成一次借条的散列值,比对这两个散列值是否相同,如果相同,就叫作验证签名成功。由于散列值只有几十个字节,所以签名的速度还可以忍受。

数字信封:
方法是,先把小电影用对称加密算法加密,然后把解密密钥用非对称加密算法加密。再将小电影的密文与解密密钥的密文同时传送给Clark。Clark收到这两样东西后,先用自己的私钥将解密密钥的密文解密,得到解密密钥,再用解密密钥将小电影的密文解密,就得到了小电影的明文。Clark收到的这两样东西——小电影的密文和解密密钥的密文——加在一起就叫作数字信封。


数字证书:
非对称加密的公钥和私钥的长度都很长,一般都在1024位以上。这么长且无规律的密码,用户是记不住的,所以只能保存在文件中啦。保存了公钥的文件就叫作数字证书。且慢,这个定义是十分错误的!为什么呢?想一想第1篇里的那个我给Clark发送小电影的例子。例子中我在网上下载了Clark的公钥(也就是数字证书),然后用它对小电影进行非对称加密,然后心想只有拥有Clark的私钥的Clark才能解密——Clark的老婆一定没辙啦。没想到螳螂捕蝉,黄雀在后,我下载Clark的公钥的那个网站是Clark的老婆制作的钓鱼网站!里面的公钥证书统统都是Clark的老婆的公钥!!结果呢,我的小电影用Clark的私钥解不开,反倒是只有用Clark老婆的私钥才能解开,用Clark的话来说,就是“无语了......”。
    所以聪明的你一定想到了,数字证书之所以可以称之为“证书”,就一定要有“防伪”功能。方法是,数字证书里不但要包含Clark的公钥,还要包含Clark的自然信息(姓名、单位等),并且最重要的,要有证书颁发部门对这些信息的数字签名(每个证书颁发部门也都有自己的数字证书——称之为根证书——和与之配对使用的私钥)。这样我就可以验证数字证书的真伪了。所以,让我们重新定义数字证书,数字证书是由一个权威机构发行的,至少包含一个公开密钥、证书持有人(或单位)的名称以及证书授权中心对这些信息的数字签名的文件。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUT X.509国际标准。





数字签名理解:
“好在我早就申请了数字证书。我先用我的私钥对借条进行加密,然后将加密后的密文用QQ发送给Clark。Clark收到了借条的密文后,在数字证书认证中心的网站上下载我的公钥,然后使用我的公钥将密文解密,发现确实写的是“借纹银200两”,Clark就可以把银子放心的借给我了,我也不会担心Clark会篡改我的借条,原因是:
    1. 由于我发给Clark的是密文,Clark无法进行修改。Clark倒是可以修改解密后的借条,但是Clark没有我的私钥,没法模仿我对借条进行加密。这就叫防篡改。
    2. 由于用我的私钥进行加密的借条,有且只有我的公钥可以解密。反过来讲,能用我的公钥解密的借条,一定是使用我的私钥加密的,而只有我才拥有我的私钥,这样Clark就可以证明这个借条就是我写的。这就叫防抵赖。
    3. 如果我一直赖着不还钱,Clark把我告上了法庭,这个用我的私钥加密过的Word文档就可以当作程堂证供。因为我国已经出台了《中华人民共和国电子签名法》,使数字签名具有了法律效力。
您一定已经注意到了,这个使用我的私钥进行了加密的借条,具有了防篡改、防抵赖的特性,并且可以作为程堂证供,就跟我对这个借条进行了“签名”的效果是一样的。对了,“使用我的私钥对借条进行加密”的过程就叫做数字签名。






转自:http://www.cnblogs.com/1-2-3/archive/2007/09/17/colloquialism-digital-certificate-part1.html
http://www.cnblogs.com/1-2-3/archive/2007/09/19/colloquialism-digital-certificate-part2.html
分享到:
评论

相关推荐

    白话数字签名------整理版

    ### 数字签名技术详解 #### 一、引言 随着信息技术的发展,网络安全变得越来越重要。在众多保障信息安全的技术中,数字签名技术因其独特的安全性而备受关注。数字签名不仅能够确保数据的完整性和真实性,还能实现...

    白话数字签名.pdf

    在《白话数字签名》这一篇章中,作者采用通俗易懂的语言介绍了数字签名的基本原理和技术背景,特别强调了数字签名建立在非对称加密技术之上。为了更好地理解数字签名的工作机制,本文首先将概述对称加密与非对称加密...

    白话机器学习的数学-立石贤吾-源代码.zip

    白话机器学习的数学-立石贤吾-源代码.zip

    子平真诠白话解释.doc

    子平真诠白话解释 子平真诠白话解释是对《子平真诠》书中语言的白话形式记录。《子平真诠》书中语言虽接近现在,但也有不少生涩的地方;因此,需要将其语义以现在白话形式记录下来,方便自己日后翻看。 子平真诠...

    【推荐】数字孪生白皮书及实践方案资料精选合集.zip

    漫画白话数字孪生 让企业轻松构建数字孪生驱动的工业互联网云平台 数字孪生城市白皮书-信通院-202012 数字孪生城市白皮书(2020年) 数字孪生城市典型场景与应用案例(2020年) 数字孪生打造未来社区规划建设新模式 ...

    白话中台战略-中台是个什么鬼.pdf

    白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-...

    《罗织经》白话全译.doc

    《罗织经》白话全译.doc

    白话c++(绝对经典)

    《白话C++》是一本深受读者喜爱的编程著作,由中国的编程大师撰写,旨在以通俗易懂的方式解析复杂的C++编程语言。作者通过简洁幽默的语言,使得这本教程不仅适合初学者,也对有一定经验的程序员有很高的参考价值。在...

    《白话 Windows 编程》

    《白话 Windows 编程》EXE格式电子书,收藏版!!!

    白话文运动的危机

    白话文运动的危机,CAJViewer 文件,使用CAJViewer软件查看

    白话C++

    白话 C++ 第二学堂 适合入门级C++的学习,比较全的C++细节知识

    《白话C++》适合初学者

    《白话C++》是一本非常适合初学者入门的编程书籍,其主要目标是用通俗易懂的语言教授C++编程知识,让学习者在轻松愉快的氛围中掌握这门强大的编程语言。C++作为一门静态类型、编译型、并发型且支持面向对象编程的...

    白话机器学习的数学.docx

    白话机器学习的数学 机器学习是一种人工智能的方法论,通过让计算机自主学习数据中的规律和模式,从而完成特定的任务。机器学习有监督学习和无监督学习两种类型。在监督学习中,我们向模型提供带有标签的训练数据,...

    白话windows编程.rar

    《白话Windows编程》是一本面向初学者和中级程序员的指南,旨在用通俗易懂的语言讲解Windows操作系统下的程序开发技术,主要关注C++语言在Windows平台的应用。这本书深入浅出地介绍了如何使用C++进行Windows API编程...

    白话C++编程(有用)

    "白话C++编程"这个资源显然旨在以通俗易懂的方式介绍C++编程的基础知识,这对于初学者或者需要巩固基础的开发者来说是非常有价值的。以下是基于这个主题的详细知识点解释: 1. **C++简介**:C++是C语言的一个扩展,...

    白话CMMI

    白话CMMI,用通熟的方法讲解CMMI

    白话C++编程.rar

    《白话C++编程》是一本面向初学者和进阶者的C++编程教程,旨在用通俗易懂的语言讲解复杂的C++概念。C++是一种强大的、通用的编程语言,被广泛应用于系统软件、游戏开发、应用软件以及高性能计算等多个领域。本书以...

Global site tag (gtag.js) - Google Analytics