浅析数字签名的工作原理【小白级别的原创文章仅供扫盲】

最近发现个问题,很多摆弄电脑多年的朋友对“数字签名、数字证书”的概念一知半解,也搞不清它们的区别,对其重要性更是不得而知。看了看网上关于“数字签名”的解释,不是晦涩难懂就是枯燥高深,难怪很多朋友没耐心去了解它。

在正文之前先说几句废话,本人是个由内而外、白里透白的小白,稍微复杂点儿的东东一概不懂,稍微费点儿脑子的东东一概不碰,所以水平有限。为了提高内容的可读性,尽量避免乏味无趣的概念定义,高手务必无视此文。

数字签名是啥啊?

数字签名、数字化签名、电子签名、数字证书,四者概念不同。

你用笔在纸上签上名字或盖个印章,再用扫描仪数码相机之类的设备折腾到电脑里生成图片文件,这叫“数字化签名”。你可以复制粘贴到文档、作品中以声明:“这是我的大作啊!不是别人的啊!”试想一下,在这个连猴子都会用鼠标玩滚轮的挨踢时代,这种签名方式安全性可想而知。

“电子签名”是个广义概念,而“数字签名”则是电子签名的一种,也可以说是电子签名技术的一个子集。它通过密钥算法生成一系列代码组成电子密码进行签名,以代替书写签名或盖章,通过技术验证,其准确度是传统手工签名和图章验证无法比拟的。

在阐述数字签名、数字证书的概念时需要先知道:一般来说,加密技术有两种——对称加密和非对称加密。

还是举例说明形象些。

所谓“对称加密”,你可以把它理解成你和银行之间的关系。要想从银行取钱,你必须正确输入密码(爱好抢银行的朋友可以无视),这个密码就是你和银行之间共享的密钥,且这个密钥不应有第三方知道。这种加密方式对你来说倒是蛮方便的,但对银行来讲却非常麻烦,因为银行不是专为你一个人开的,管理众多密钥对于技术和维护成本来说都是极限挑战。而且,一旦密码被第三方知道,后果不堪设想。可以说这种方式并不怎么可靠。

另一种是“非对称加密”,也叫做公开密钥加密,理解起来比前者略复杂些。

假设你叫王翠花,有两把钥匙——“翠花专用公钥、翠花专用私钥”。你把公钥每人一把的给了和你经常发E-mail的网友赵泰短、张麻子和刘大棍。

有一天晚上,刘大棍给你写信并用你送他的“翠花专用公钥”加密了信的内容——“尰a#岊9,潃蟽@荝篹wp甤%衄!”(别告诉我你能看得懂哦)。

而你在收到信时利用你的“翠花专用私钥”将其解密——“美女啊,见面约个会呗”。可以说,这封信是非常安全的,即便落到别人手中,没有“翠花专用私钥”解锁,鬼也看不懂。

在你给刘大棍的回信中,你使用了“翠花专用私钥”加密了内容:“+8%屵,攷樖*f爂6爴爯畀s&甁!”并通过RSA算法生成加密摘要,这就是“数字签名”。在加密的基础上,以表示这封信确实是你写的。

刘大棍在收到回信后,用你给的“翠花专用公钥”得到如下内容:“不去,因为张麻子比你帅!”刘大棍看着公钥读取出的具有唯一标识的“数字签名”,只能面对残酷的现实。

事情还没完,有个叫陈建仁的骗子悄悄出现,偷偷使用赵泰短的电脑,把自己的公钥换走了你给的“翠花专用公钥”,这样就能冒充你给赵泰短写信:“巹帱5&巪帋z7x瀥,灲瀅茍@艴艝%-a踒赿!”

赵泰短在不知情的情况下,用假冒的“翠花专用公钥”解读此信:“咱俩是不可能的,没人能接受你的短处!”

谨慎小心的赵泰短发现有些不对劲,亲自给你打电话证实,而你告诉他:“那信不是我写的呀,我觉得你挺好的啊。”

放下电话后你很气愤,居然有人敢冒充你。为了避免以后再发生此类事件,你来到了“证书中心(certificate authority,简称CA)”为你那把“翠花专用公钥”做认证,证书中心对你的公钥和相关信息一起加密,并颁发给你一个独一无二的证书,这就是“数字证书”。

从此,你的朋友们再收到你的来信时,要先通过证书中心给的公钥解开“数字证书”,才能获得你的真实“翠花专用公钥”,这样才能证明“数字签名”是否真是你的。

数字签名的种类有哪些啊?

数字签名的加密算法有很多,比较常见的是HASH签名、DSS签名和RSA签名,挨个说说吧(喝口水先):

Hash(哈希)签名——也叫做数字摘要法、数字指纹法。大家比较熟知的MD5、SH-1算法就是哈希签名的通用加密标准。它的应用非常广泛,优点是加密解密快,CPU负担小,属于弱计算密集型算法。最大的局限就是接收方必须持有发送方的密钥副本,也正是由于双方都持有生成签名的密钥(你的MD5计算器就是密钥生成工具,发送/接收方都有),所以被伪造签名的可能性大大增加。据说网上经常爆料的那些被破解的签名,也是来自此算法。

DSS签名——是一种相当安全的公钥算法,米国政府的技术,呵呵。可以说是Schnorr和ElGamal算法的变种,安全性基于有限域上的离散对数,特点是不涉及专利或版权问题。这就好比压缩格式中rar和zip的关系,我听说要想破解这玩意儿,按现在的计算机运行速度,需要“1.5乘以10的12次方”年,当然,这个说法我等平民无从考证。

RSA签名——正如上文所举的例子,它也是一种基于公钥算法的签名,并可以说是目前最为流行的数字签名,Windows系统本身就包含RSA类库,我们所熟知的Internet Explorer、Windows Media Player、Java、Flash Player、Outlook、Firefox等都包含RSA算法,和Hash签名相比,在公钥系统中,由于生成签名的密钥只存储于用户的计算机中,安全系数陡然增加了很多,听朋友说,MacOS用的也是这个。

其它算法还有很多,就不逐一举例了。本想结束此文,突然又想到了一个和数字签名概念相关的题外话:

现在有很多病毒非常可怕,可怕之处不仅仅在于它的破坏性,最重要的是当它们感染exe文件后,会有意不去破坏exe中和数字签名有关的部分!我觉得吧,识别猫腻的方法说简单也简单,那就是比较哈希值。说复杂也复杂,谁也没功夫去比较无数被感染的exe,呵呵。现在很多网站已使用https技术,这就是数字签名和数字证书技术在互联网的一个重要应用,无论是资源下载还是网上购物(这里不排除钓鱼网站的存在),安全性自然也大了许多,貌似还有FQ的作用?试试Google的相关页面哦,呵呵!

对了,上个图,请以后不要忽视它!

既然我用废话开始了此文,就再用废话来结束此文吧:

本想引入一些离散数学的基础知识来说明公钥、密钥的生成方式,但想了想必然会搞出公共模数、素数、随机数这些无聊的玩意儿,这就和本文的初衷背道而驰。所以,认真看完这篇文章的朋友,不要指望能从理论上搞清数字签名的工作原理,仅仅是从概念上有个感性认识即可,严格来讲连“浅析”都算不上,扫盲才是核心目的。

小白我的水平嘎嘎有限,大道理也讲不出,文章写了三个多小时,原创不易,欢迎高手斧正,我只求不被拍死。

浅析数字签名的工作原理 【小白级别的原创文章 仅供扫盲】相关推荐

  1. Redis学习总结(23)——Redis如何实现故障自动恢复?浅析哨兵的工作原理

    前言 Redis是如何实现故障自动恢复的,它的实现正是要基于之前所讲的数据持久化和数据多副本而做的.Redis作为非常火热的内存数据库,其除了具有非常高的性能之外,还需要保证高可用,在故障发生时,尽可 ...

  2. 观察者模式(浅谈监听器工作原理)

    从某种角度来说,我们总是处于两种生活状态:观察者与被观察者.当处于观察者状态时,被观察的对象会向我们发出某种信息,使我们产生某种心理活动或行为状态的改变.当我们处于被观察者状态时,我们的行为活动又可以 ...

  3. 深入理解HTTPS工作原理

    前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器.搜索引擎.CA机构.大型互联网企业的共同促进下,互联网迎来了"HTT ...

  4. SAP Fiori Elements 框架里 Smart Table 控件的工作原理介绍

    这是 Jerry 2021 年的第 34 篇文章,也是汪子熙公众号总共第 310 篇原创文章. Jerry 前一篇文章 深入掌握 SAP Fiori Elements 工作原理系列之二:如何给 Fio ...

  5. BT下载会损害硬盘吗?--硬盘的工作原理,硬盘寿命

    关键字:硬盘,电脑维修,电脑故障,BT,Emule,P2P,S2P,FlashXP,FlashGet,ftp,NetAnts电骡,电驴,资源下载,软件下载,损坏硬盘,硬盘的工作原理,硬盘寿命,磁盘整理 ...

  6. 转载 调试器工作原理

    调试器工作原理--基础篇 本文是一系列探究调试器工作原理的文章的第一篇.我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起. 关于本文 我打算在这篇文章中介绍关于Li ...

  7. PXE工作原理(有图有真相)

    source: http://blog.51cto.com/lavenliu/1629922 PXE工作原理(有图有真相) 原创 bigstone2012 2015-04-08 10:27 评论(0) ...

  8. Linux下调试器工作原理

    Linux下调试器工作原理之一-基础篇 介绍关于Linux下的调试器实现的主要组成部分--ptrace系统调用.本文中出现的代码都在32位的Ubuntu系统上开发.请注意,这里出现的代码是同平台紧密相 ...

  9. 调试器工作原理系列三篇

    基础篇 关于本文 我打算在这篇文章中介绍关于Linux下的调试器实现的主要组成部分--ptrace系统调用.本文中出现的代码都在32位的Ubuntu系统上开发.请注意,这里出现的代码是同平台紧密相关的 ...

最新文章

  1. android组件化开发视频教程,教你打造一个Android组件化开发框架
  2. KeyMob:为国内应用开发者管理的广告聚合平台
  3. Javascript单例模式概念与实例
  4. SAPUI5教程——URLHelper的使用技巧
  5. 利用Aforge Net实现两张图的查找不同处、抠图、合成图
  6. iOS 在线下载字体
  7. Android 手机遥控器控制机顶盒(电视)
  8. 二维码和app扫码下载
  9. 基于uniapp的校园社区小程序
  10. 脚本录制软件python 按键精灵 tc_《脚》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  11. 计算长方形的面积 周长 C语言,c语言计算长方形的面积和周长
  12. Python实现电话号码的数字组合
  13. 前端路由和 VueRouter
  14. linux安装TensorFlow-GPU版本 非常详细安装必看
  15. 服务了可口可乐、海底捞、某头部商业银行,我有这些体会
  16. 千峰培训_day15_Linux笔记
  17. python日本 老龄化分析_基于Python关于世界自杀率影响因素的分析以及机器学习预测...
  18. 浪子燕青Dburstnbsp;0.9nbsp;发布
  19. 人生苦短,我要学Python,2019年最靠谱Python书单送你
  20. python123数字转换_Python将汉字数字转换成阿拉伯数字的方法

热门文章

  1. 区块链研究生专业_滁州区块链平台技术开发专业软件公司
  2. java与sql心得体会_学习心得
  3. delphi mysql 加密_Delphi对Access文件加密
  4. css3动画保持状态不变
  5. java xml 单标签,如何修改java中的xml标签特定值?
  6. oracle 二进制与运算,Oracle怎么操作进行二进制的比对
  7. wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
  8. c语言未初始化的指针下标访问是0,C语言的二数组的指针访问.doc
  9. i2c传输距离_使用 ToF 传感器进行距离测量和手势识别的基本原理
  10. 如何将Web项目的默认编译输出目录改为WebContent/WEB-INF/classe