【杂记】数字签名概述

1. 公钥私钥

  • 公钥其实是用来加密/验章用的;私钥是用来解密/签章 (信息通讯&数字签名两大应用)
  • 公开的密钥公钥,只有自己知道的叫私钥;公钥和私钥成对出现
  • 如果用公钥解密,则必然是对应的私钥加的密;如果用私钥解密,则必然是对应的公钥加的密

2. 签名功能

  •  保证信息自签发后到收到为止未曾作过任何修改(防篡改)

  • 保证信息是由签名者自己签名发送的,签名者不能否认或难以否认(认证,防抵赖)

 3. 签名算法与CA

  • 签名算法:RSA、DSA、ECDSA
  • 加解密算法:(1)对称加密(私钥加密解密);(2) 非对称加密(公开密钥加密/验章;私钥解密/签秘)

  •  CA的作用

        CA是证书的签发机构,它是公钥基础设施核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。CA 拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

 参考:1)数字签名及数字证书2)数字证书及CA详解3)国内网站都用哪几家CA的SSL证书4)一篇文章让你搞懂 SSL 证书5)数字签名是什么? - 阮一峰的网络日志

4. 制作签名

4.1 工具下载&准备  数据标签制作所需要的软件文件-其它文档类资源-CSDN下载

  • makecert.exe、cert2spc.exe、pvk2pfx.exe、signtool.exe

    • makecert.exe:证书创建工具,生成仅用于测试目的的X509证书;pvk存私,cer存公钥
    • cert2spc.exe :公钥证书格式转换成SPC(软件发行者证书)
    • pvk2pfx.exe :将公钥证书和私钥合并成一个PFX格式的证书文件
    • signtool.exe :二进制文件数字签名工具

 参考文献:MakeCert - Windows driverswindows下如何制作和应用数字签名证书 全流程

 4.2 实施过程

  • 步骤1:生成一个自签名的根证书(issuer,签发者

    扫描二维码关注公众号,回复: 14324398 查看本文章
makecert.exe -n "CN=Kaspersky Lab" -r -sv ./output/mykey.pvk ./output/mycert.cer
-n: 指定证书的名称,必须符合 X.500 标准
-r: 创建自签署证书
-sv:指定主题的 .pvk私钥文件。 如果该文件不存在,系统将创建1个。 
  • 步骤2:输入口令用私钥(.pvk文件中)来给公钥(.cer文件中)加密,公钥证书格式转换成SPC

cert2spc.exe ./output/mycert.cer ./output/mycert.spc
  • 步骤3:将公钥证书和私钥合并成一个PFX格式的证书文件

pvk2pfx.exe -pvk ./output/mykey.pvk -spc ./output/mycert.spc -pfx ./output/mycert.pfx
  • 步骤4:签名文件

#SignTool 对文件进行数字签名并加盖时间戳
signtool.exe sign /f ./output/mycert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe

#signcode进行代码签名
双击运行signcode.exe,弹出图形界面,按提示选择

详细操作过程如下所示:

(1)双击signcode.exe,打开代码签名工具,并点击next

(2)选择要签名的文件,点击next

 

 (3)选择签名类型,推荐使用自定义,然后点击next

 (4)选择数字证书,然后点击next

 

 

 (5)添加时间戳,点击next

 

 

  •  步骤5:首次自签名,需要进行证书信任设置

         (1)打开签名文件属性,找到数字签名项,安装证书       

(2)设置完成后,重新打开签名文档属性,可以看到数字签名显示为正常

猜你喜欢

转载自blog.csdn.net/qq_32643313/article/details/123132874