数字签名是干啥用的?

论坛 期权论坛 期权     
二毛与我   2019-10-27 05:53   2282   0
签名,总的来说,是证明一份文件是某人自己提供的最重要证据,有时候还会伴有印章、指纹之类等效手段。


在信用卡年代,你刷卡买完东西,商家会要求你签下大名,然后拿着信用卡,对照一下卡片上的签名是否与现场签名一致。所以,我们在银行信用卡签名之前,总要练习好一个固定的签名字体,不然每次签名都不一致,难免担心用信用卡买东西时被拒绝。


数字签名是在计算机网络系统中使用的签名,通常是一段加密的信息,而不是你手写签名的一张扫描图片。


有一个重要的问题是,我们为什么需要数字签名?


还是说回信用卡消费,在线上支付时,是不需要签名的。双方只需要确保交易对方可靠就行了。商家怎么知道用信用卡支付的“我”是可靠的?很简单,我事先已经通过支付宝、微信或者网上银行系统,验证了身份和支付方式,商家在接受我的支付时实际上是调用这些他信任的大型机构已经验证过的我的支付手段。所以我的签名就没有必要了。


现在最常见的数字签名使用场景,是我们打开浏览器浏览网页的时候,浏览器为我们验证网站是否可靠。第一步是看网站是否使用安全连接,也就是,是否使用https协议。如果网站没有使用https协议,有些浏览器会显示“不安全”的标示:






网站常用两个信息传输协议:http和https,前者是明文传输,后者是加密传输。现在需要用户登录的网站,大多使用https协议保证传输的安全。


如果是https协议,需要验证网站证书(网站的数字签名)是否可靠,以防骗子仿冒你要访问的网站获取你的敏感信息。


数字签名另一个重要应用,是用来验证区块链这类虚拟货币,比如比特币。每一次交易,都必须添加货币持有者的签名,这样收到货币的人可以通过签名来验证是否可靠。


好了,接下来,该看一看数字签名到底是怎么回事了。


数字签名实际上是对一个原始消息加锁后得到的一个公开信息,依靠保存在权威机构的钥匙,任何人都可以解锁得到签名背后那个消息,如果解锁后得到的消息与原始消息一致,那么这个签名就是真实可靠的。






这里面,上锁的动作和使用的材料,与解锁并不相同,所以这是一个非对称加密过程,任何人都可以使用的那把解锁钥匙,就是公钥。


举一个简单的RSA加密方法的签名例子。只演示一下上锁和开锁部分,至于公钥和密钥如何获得,可以点击文末的“阅读原文”链接。


有这样几个值:N,E,D,M,M’。


N、E在一起组成私钥,是签名者用于加密生成签名的。N、D一起组成公钥,用于解锁。M是原始消息,M'是解密后消息。


我们用私钥对M加密生成签名S,再用公钥对S解密得到M’,如果M’与M相等,就说明签名有效。




设N=22, E=3, D=7, M=4
签名 S 的计算公式如下:




获得M'的解码过程如下:






M=M',签名是真的!


钥匙里面这个N是很重要的,这个数必须是两个质数的乘积,它的大小决定了这个加密方式的牢靠程度,通常实际使用的计算机系统会选取上百位的数字。


为什么选择两个大质数的乘积呢?因为大数的因数分解是一个目前公认的数学难题,还没有方法做到快速分解一个超级大数的因数。这个算法里,密钥是依赖合成N的那两个质数获取的,所以,如果N无法被分解,就可以保证密钥的安全。


参考:
约翰.麦考密克《改变未来的九大算法》

维基百科










本公众号关注儿童教育,尤其关注通过寓教于乐的方式,帮助孩子探索广阔的未知世界。 二毛是我的儿子,在这里我带您一起分享我们的探索与发现之旅:


下面是和这篇相似的一些科学话题:
人类群星闪耀时
以国家的名义[h1]公钥就是混油漆[/h1]



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP