数字签名原理及讲解,数字签名的原理和作用

首页 > 教育 > 作者:YD1662024-05-02 12:53:49

大家好,互联网的初期是以传输数据为主,而随着应用程序的不断扩大。我们需要加传输的数据进行加密,比如对在线支付的信息进行加密,或者银行系统、公安系统的登陆账号信息,用数字证书来明确登陆人是谁。今天我们讲一下数字证书。

1.生日碰撞问题

有小伙伴发朋友圈说:“两个人同一间宿舍,而且同年同月同日生,这个缘分真的是醉了”。那同一班级中出现生日相同的概率有多大?有的同学,一年有365天,每个有有365种选择,是真的吗?今天我就来分析一下。

至少有2个学生的生日在同一天的对立事件是没有任何学生的生日在同一天。我们把这个问题设想成,每个人排队依次进入一个房间。而房间数量是365间。

若班级有1人,他可以进365中的任何一个房间,则不相同生日概率是365/365

若班级有2人,则第1人进365中的任何一个房间,而第2人为了不一样可进364中的任何一间,故不相同生日概率365/365* 364/365

若班级有3人,则不相同生日概率365/365 * 364/365 * 364/365

如此这般,现在我们有k个人,生日不在同一天的概率是。

数字签名原理及讲解,数字签名的原理和作用(1)

P生日概率

我们代入数据计算一下,若一个班有10人,有P=88%,则1-P=12%

若一个班有23人,而P=50%,则1-P=50%

若一个班有50人,而P=3%,则1-P=97%

可见只要班级有23人,有相同生日的概率就很大了,然后一个班有50人时,基本上必有生日相同的同学。

2.哈希函数

哈希函数有这样的功能,比如如下的功能:

数字签名原理及讲解,数字签名的原理和作用(2)

hash 运算

哈希函数有几个特点:

一是单向(one-way)的,只能从左向右算结果,而你从结果推不出运算原先的输入,比如只能从name推出123,但是问123原先的输入是谁,就不知道了。

二是输入可以任意长度,输出是固定长度(fixed length)

不管原先输入是多少项,经hash运算后,输出的长度是固定的。比如非常有名的SHA256哈希函数,输入一本《三国演义》或者仅仅输入一个字母a,出来的都是256位比特长度的数据。

由于特点二这样有个缺点:几个不同的输入可能产生相同的输出,即哈希函数会出现生日碰撞,我们不是希望出现生日碰撞,因为就会引起混淆,不法区分输入。

所以说要尽量不出现生日碰撞,经过分析。如果有k个哈希值,出现生日碰撞大于50%的概率是1.2倍速根号k。比如,现在有100个哈希值,12个输入出现相同输出的概率大于50%;而如果有10000个哈希值,要检验120次才能确定是否有相同的输出。

3.数字签名

数字签名是目的是确定信息来自谁?分为单向加密与双向加密。

数字签名原理及讲解,数字签名的原理和作用(3)

用户向银行发数据

当用户向银行发送查账户余额的数据时,用户没确定接收的数据是银行的真实数据还是来自黑客的窃听数据。

怎么办呢?

用户向银行发送数据,约定如下:

用户向银行的加密盒子:任何人都可以加密数据;

而银行向用户发送的加密盒子,是相反的,只能用户解密,但只有银行能加密,而且银行发送的数据是经hash计算的。

例如,用户把name会给银行后,而银行name做hash计算后,将123传给用户,用户解密后得出123值与原先传入的name进行比较,若二值一样,则证明数据来源无误。

其中,经hash计算的123值,是公开的,别人获取到也无法推出其输入。就像你知道一个人的生日,而要根据生日来推某个人就很难了。

而由于hash函数的个数是一样的,如同生日一样,所以有可能产生生日碰撞,所有数字签名不是百分之百的安全。在理论是黑客只要一直尝试,会有可能产生一样的哈希输出的,所在在实际应用中,一般会限制登陆次数或出错次数,而降低尝试操作的可能。

数字签名原理及讲解,数字签名的原理和作用(4)

4.参考文献

Zhao W , Shi R , Shi J , et al. Multibit quantum digital signature with continuous variables using basis encoding over insecure channels[J]. 2021.

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.