《BITCOIN AND CRYPTOCURRENCY TECHNOLOGIES》Chapter 1系列

1.3. DIGITAL SIGNATURES数字签名

目录

1.3. DIGITAL SIGNATURES数字签名

一、数字签名性质

二、数字签名方案

三、Unforgeability game 不可伪造游戏

四、Practical Concerns 实践中的考量

五、ECDSA


一、数字签名性质

我们希望数字签名需要有两个性质:

1、只有你自己可以签名,别人看到签名可以验证它是否有效。

2、希望你的签名和你签名的文档进行绑定,这样这个签名不会被乱用,比如拿去签(贴)到别的文档上。

二、数字签名方案

● (sk, pk) :=generateKeys(keysize)

  把keysize作为输入,来产生一对公钥pk和私钥sk。私钥sk是属于私密的,用来对消息进行签名;公钥pk是人人都可以找到的,拿到它,就可以用来验证签名。

● sig:=sign(sk, message)

  即签名过程,把一段消息和私钥作为一个输入,输出签名(a signature for message under sk)。

● isValid:=verify(pk, message, sig)

  验证过程,通过把公钥、一段消息、签名作为输入,如果返回的结果是真,证明签名属实;如果返回的结果为假,证明签名消息为假。

我们要求以下两个性质有效:

  1、 有效签名可以通过验证,即:verify(pk, message, sign(sk, message))==true2、签名不可伪造。

我们注意到generateKeys和签名可以是随机算法,事实上generateKeys最好是随机的,因为它需要为不同的人产生不同的Keys。相反的,验证通常是确定的。

更详细的讨论数字签名的两个性质:

  1. straightforward:有效的签名必须能够验证。如果我对一段消息message用私钥sk签名,那么某个人用公钥pk和同样的一段消息message对我的签名sign进行验证时,签名一定是正确有效的。
  2. unforgeability:不可伪造性。an adversary who knows your public key and sees your signatures on some other messages can’t forge your signature on some message for which he has not seen your signature.

三、Unforgeability game 不可伪造游戏

FIGURE 1.9. Unforgeability game. The attacker and the challenger play the unforgeability game. If the attacker is able to successfully output a signature on a message that he has not previously seen, he wins. If he is unable to do so, the challenger wins, and the digital signature scheme is unforgeable. Photograph of Whit Diffie (right), cropped, © Kevin Bocek. Licensed under Creative Commons CC BY 2.0.

即不可伪造游戏。如果黑客可以在一个之前没有见过的消息上进行签名,那么黑客就赢得这个游戏;反之,如果黑客做不到,挑战者就赢得游戏,从而可以证明这个数字签名方案是不可伪造的。(具体游戏过程参考书的53页)

  • 这个游戏的设定与真实世界相似,现实中的攻击者很可能可以从潜在受害者的很多不同文件中看到有效签名,攻击者甚至还可能操控受害者签署一份看起来无害但对黑客有利的文件。
  • 将这一点建模到我们的游戏中,允许黑客自己选择一些文件进行签名,只要猜测的数量合情(允许攻击者尝试猜测一百万次,但不能是280次)。
  • 一旦攻击者满意他所看到的签名数量,那他就可以挑选某条信息M,尝试在上面伪造签名。对M的唯一限制就是, 它必须为攻击者之前未在之上看过签名的信息(因为很明显,攻击者可以发出他发出到过的签名)。
  • 挑战者运行验证算法,以此确定攻击者生成的关于M信息签名在经过公共验证密钥验证后,是否属实。如果验证成功,攻击者赢得游戏。

不论对手使用什么算法,当且仅当他成功伪造信息的机会非常小——小到我们可以假设在实践中从不会发生时,我们就说签名方案不可伪造。

四、Practical Concerns 实践中的考量

1、要将算法概念转化为现实中可执行的数字签名机制,还需要一些实际操作。例如,很多签名算法是随机的(特别是比特币使用的算法),因此我们需要一个好的随机性来源。。我们不能低估这一点的重要性,因为糟糕的随机性会使原本安全的算法变得不安全。

2、信息的size。实际上,要签名的message是有长度大小限制的。解决:假设hash是一个具有256位输出的哈希函数。我们就在hash(message)上进行签名,而不是在message上直接签名。这样message的长度就没有限制了。且哈希函数有抗碰撞性的性质,所以可以放心用。

3、我们后面会用到的另一个技巧是,可以对于哈希指针进行签署。如果你签署了哈希指针,那么该签名覆盖(或者说保护)整个结构——这不仅仅是哈希指针本身,还包括哈希指针指向的整个区块链。比如,如果签署了区块链末尾的哈希指针,其结果就是你有效地数字签署了整条区块链。

五、ECDSA

比特币使用一种特殊的数字签名方案,称为椭圆曲线数字签名算法(ECDSA)。ECDSA是美国政府标准,是早期DSA算法的更新,适用于使用椭圆曲线。多年来,这些算法已经接受了大量的密码分析,并且通常被认为是安全的。

参考:

《BITCOIN AND CRYPTOCURRENCY TECHNOLOGIES》

https://blog.csdn.net/xiaohuanglv/article/details/89032522

1.3. DIGITAL SIGNATURES数字签名相关推荐

  1. PDF格式分析(五十二)Digital Signatures 数字签名

    数字签名(PDF 1.3)可用于验证用户的身份和文档的内容. 它在签名时,保存了有关签名者和文档状态的信息. 签名可以是纯数学的,例如公钥/私钥加密文档摘要,也可以是生物识别形式的,例如手写签名,指纹 ...

  2. PDF格式分析(五十三)Digital Signatures 数字签名-补充

    撤销信息 adbe撤销信息属性:adbe-revocationInfoArchival OBJECT IDENTIFIER ::={ adbe(1.2.840.113583) acrobat(1) s ...

  3. 《A Graduate Course in Applied Cryptography》Chapter 13 Digital Signatures(2)

    原文教材 与 参考资料: Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址(可以免费获取) ...

  4. 《A Graduate Course in Applied Cryptography》Chapter 13 Digital Signatures(4)

    原文教材 与 参考资料: Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址(可以免费获取) ...

  5. signature=27ba8feff228d8babc1d1762f8da4445,Embedding digital signatures into digital payloads

    摘要: A file may be transferred from one processor-based system to another. The file may include execu ...

  6. 《A Graduate Course in Applied Cryptography》Chapter 13 Digital Signatures(3)

    原文教材 与 参考资料: Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址(可以免费获取) ...

  7. 区块链数学建模_试图通过高中数学课程来解释区块链

    区块链数学建模 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 试图通过高中数学课程来解释区块链 (Blockchain explained by trying ...

  8. 理解区块链的“非对称加密”

    区块链和密码学的关系,就像是鱼和水,可以说没有密码学,就没有区块链.比特币最早诞生的来源,正是中本聪当时所在的'"密码学邮件组".在所有的加密技术中,非对称加密又是加密术之中的皇冠 ...

  9. CAN201 网络编程 笔记

    CAN201 复习 0.概述 +传输计算 1. 应用层Appilication Layer HTTP (Hypertext Transfer Protocol)超文本传输协议 FTP +Email + ...

最新文章

  1. EditText 中文文档
  2. linux下mysql的root密码忘记解决方案
  3. python映射类型-详解Python中映射类型(字典)操作符的概念和使用
  4. can't find a register in class `GENERAL_REGS' while reloading `asm'
  5. 【STM32】DAC相关函数和类型
  6. 【Tools】TeamViewer安装教程
  7. android jni jbyteArray转char*
  8. ug冲模标准件库_昆山兴模lt;携手gt;武汉益模,打通冲模“智能设计+精益管理”的最后一道关卡...
  9. PHP、 Ruby、Python、Java、C++、C、Objective C——编程语言之禅
  10. 第一次使用SSE指令集
  11. 最大流的四种常用算法
  12. 实现仿微信朋友圈评论输入框
  13. h3c服务器怎么更换无线密码,如何更换无线网密码_怎么更换无线网密码?-192路由网...
  14. 破解WEP无线网络WLAN全攻略
  15. 多元逻辑回归(Multinomial Logistic Regression)
  16. 织梦模板:用织梦建站的五大好处
  17. 无代码开发+MES管理系统双向奔赴,MES进化新方向
  18. 【已解决】error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’ typedef struct { long
  19. Angular页面出不来,显示空白页面。。。
  20. FTP 登陆的常见问题与FTP命令集锦

热门文章

  1. 8年一线.NET开发程序员求职
  2. 为什么c语言排在第一位,c语言我排第几个
  3. 802.11ac知识整合
  4. 【opencv学习笔记】2用摄像头识别指定颜色
  5. phpmyadmin没有接收到要导入的数据.可能是文件名没有提交,也可能是文件大小超出 PHP 限制.
  6. 微信前台WEUI前台实例+EXCEL导出,SSM框架完整流程
  7. iphone6s html5没声音,iphone6S来电没声音怎么回事?解决iphone来电没声音的方法
  8. python 播放本地音乐_python播音乐_python放音乐_python本地音乐播放器 - 云+社区 - 腾讯云...
  9. 【Mac OS】如何快速复制文件或文件夹路径
  10. (网络)网络层:IP协议解析、地址管理(IP地址、子网掩码)、路由选择