什么是非对称数据签名法?

在计算机中,经常会遇到这么一个问题,怎么证明你妈是你妈呢?,因为数据是很容易被伪造和篡改,比如说,小A和小B通信,小A对小B说:" I love you!我宣你",而A的信需要经过邮局(路由器和交换机),则数据很可能被邮递员篡改,例如改成

"I hate you,you are 八嘎(`Δ´)!"

此时意思完全变了,小B可能就此把小A拉黑,完全不理它了。

怎么解决这个问题呢?常用的办法就是数字签名啦(๑ᴖᴖ๑),

小A和小B先两个人私下约会,确认好一个接头暗号,然后,当小A要给小B写信的时候,先把自己的名字(公钥),写信的时间,和信的内容,计算出sha1,sumsha1。然后把这四样,一起交给邮局,小B收到信后,先不急着看信的内容,而是先看信是不是小A的,不是小A的信,其它的内容都不用看了,肯定是垃圾信息,但光看名字还不行,因为名字写在信外面,邮局的人很可能会冒充,这个时候就可以看签名了sumsha1,小B也按约定,拿自己的暗语和小A的名字以及时间和主体内容,算一遍签名,两边签名一对比,一模一样说明这封信的内容确实是小A签发的,因为sha1具有不可逆的特性,

攻击者没法通过sha1值,逆推出暗语的内容,这就是利用了两边信息不对称,实现了对数据的签名。

实际应用时,一般还会加入对签名时间加入时效,以免攻击者,利用已经签名的数据多次提交给小B造成小B给烦死,

同时有小A,小C都给小B写信息,故公钥可能会有多对,而两边的计算sha1的格式,既可以写死一个固定的格式,即先姓名后时间然后数据,也可以按字母A-Z排序参数,然后计算,后者的好处是,在大量接口当中,两边不必约定详细的签名顺序,统一按同一个规范,也可能加上前后缀防止被他人猜解,

但只想私钥是安全的,没有泄露,那么签名就是安全的,对于未通过签名校验的数据,我们不信任它即可。

水果版

小A和小B两人约定的暗语是苹果。

小A先拿一根香蕉和一个苹果榨成香蕉苹果汁,然后把香蕉苹果汁和香蕉一起交给邮局,投递给小B,

小B拿到果汁后,先不喝,怕有毒,而是先拿小A给的香蕉,还有自己的苹果,榨汁。两杯果汁对比一下,是一样的果汁,口味一样,说明这杯果汁确实是小A榨的,有一点味道不一样,,那说明要么香蕉是假的或被换了,要么果汁是假的或换了或掺了东西。没有人能伪造出香蕉苹果汁,因为人们并不知道这杯果汁除了香蕉外还有什么水果,信息不对称...除了小A或小B知道外~

你可能感兴趣的:(什么是非对称数据签名法?)