精华内容
下载资源
问答
  • 为何软件需要数字签名

    千次阅读 2019-06-21 16:32:37
    1. 什么是数字签名?为何需要数字签名? 微软网站上是这样定义的。 “数字签名”是指可以添加到文件的电子安全标记。 使用它可以验证文件的发布者以及帮助验证文件自被数字签名后是否发生更改。 如果文件没有有效...

    1. 什么是数字签名?为何需要数字签名?

    微软网站上是这样定义的。

    “数字签名”是指可以添加到文件的电子安全标记。 使用它可以验证文件的发布者以及帮助验证文件自被数字签名后是否发生更改。

    如果文件没有有效的数字签名,则无法确保该文件确实来自它所声称的源,或者无法确保它在发布后未被篡改(可能被病毒篡改)。

    较为安全的做法是,除非您确定该文件的创建者而且知道其内容才可以安全地打开,否则不要打开该文件。

    即便是有效的数字签名也无法验证文件的内容没有危害。 必须决定是否应根据发布者的身份以及下载文件的位置信任文件的内容。

    2. 有了数字签名是什么样?没有数字签名又怎样?

    请大家参考 微软网站的有关代码验证机制文章,简单地讲:就是给软件代码加上数字签名,用来保证:

    (1) 真实性 ( authenticity ) :让用户确信此软件的来源 ( 软件开发商的真实性 );

    (2) 完整性 ( integrity ) :确保软件发布后没有被篡改。

    看看以下截图就能理解以上两点,当您从 MSN中国 网站上下载和安装 MSN 保护盾( http://im.live.cn/safe)时,系统会告诉你此软件的发行者是 上海美斯恩网络通讯技术有限公司,能证明软件的 真实身份。

    还是看Windows在运行没有数字签名的软件是提示什么,如下图所示,会提示“发行者:未知发行者”,并显示一个红色的叉号警告:此文件没有包含有效的数字签名以验证其发行者;而有数字签名的则只是黄色问号警告。没有数字签名的软件是绝对不能轻易信任的!

    对于ActiveX控件,如果没有数字签名,则Windows 直接拦截不允许运行。由此可见数字签名的重要性。

    展开全文
  • 数字签名

    万次阅读 2020-02-26 08:54:09
    文章目录我们需要数字签名签名的生成和验证数字签名的方法直接对消息进行签名对消息的hash值进行签名数字签名可以替代现实生活中的签名吗?数字签名无法解决的问题 我们需要数字签名 之前的文章我们讲了MAC(Message...

    我们需要数字签名

    之前的文章我们讲了MAC(Message Authentication Code)消息认证码,MAC是认证消息的完整性的技术。它是由任意长度的消息和在发送者和接受者中间共享的密钥生成的。

    MAC有个缺点就是秘钥是共享的,因为是共享的所以发送者可以计算MAC值,接收者也可以计算出同样的MAC值。因为两者都可以计算出同样的MAC值,所以我们无法判断这个MAC值到底是由谁来计算出来的。这里提到了MAC的缺点就是无法防止否认。

    如果发送者A和接收者B使用不同的密钥,例如A发送消息的时候使用私钥对消息进行加密,B接收消息的时候使用公钥对消息进行解密。因为消息只能由A的私钥进行加密,所以这个签名一定是由A签发的,这样就没有否认的问题了。这个就是数字签名(digital signature)。

    签名的生成和验证

    生成消息签名这一行为是由发送者A来完成的,也称为对消息进行签名。生成签名就是根据消息内容计算签名值,生成签名意味着A认可这个消息的内容。

    验证数字签名可以由消息接受者B来完成,也可以由第三方来完成。验证成功意味着这个消息是由A发出,失败则表示这个消息不是A发出的。

    在数字签名的过程中,消息发送者A和消息接受者B使用不同的密钥来进行签名和验证。这里使用的不同的密钥就是公钥和私钥。

    数字签名其实就是公钥密码的反向应用,下面我们看看两种的不同:

    名称 私钥 公钥
    公钥密码 接受者解密时使用 发送者加密时使用
    数字签名 签名者生成签名时使用 验证者验证签名时使用
    谁持有密钥? 个人持有 主要需要,任何人都可以持有

    数字签名的方法

    通常来说数字签名一般有两种方式:

    • 直接对消息进行签名
    • 对消息的hash值进行签名

    下面我们分别来介绍两种方式。

    直接对消息进行签名

    直接对消息签名包含如下几个步骤:

    1. 发送者A用自己的私钥对消息进行加密生成签名。
    2. A将加密后的签名和消息发送给B。
    3. B用A的公钥对消息签名进行解密,从而得到签名之前的消息M1。
    4. B将M1和A直接发送过来的消息M2进行对比,两者一致则签名成功,否则失败。

    这里我们注意一下第四个步骤,签名的目的是保证消息是由只持有该密钥的人生成的,而并不是要保证消息传递的机密性。也就是说数字签名本身并不是用来保证机密性的。如果要保证机密性则可以将消息加密之后再发出去。

    对消息的hash值进行签名

    上面的直接对消息进行签名,看起来非常简单,但是在实际应用中很少用到。因为要对整个消息进行签名时一个非常耗时的操作,所以通常我们会使用单向散列函数对消息进行处理得出一个hash值,然后对这个hash值进行签名:

    1. A用单向散列函数对消息进行计算hash值。
    2. A用自己的私钥对hash值进行签名。
    3. A将消息和签名发给B
    4. B用A的公钥对签名进行解密得到hash值。
    5. B使用单向散列函数对消息进行计算,将结果和4进行比对。

    数字签名可以替代现实生活中的签名吗?

    我们讲解了怎么实现数字签名,我们也可能听说在现实生活中有电子签名这个东西。

    数字签名有很多技术上的优点,不需要物理交互就可以签订合同,并可以对任何数据进行签名。那么在实际上数字签名能不能替代实际签名的问题是一个复杂的社会行为。

    因为我们在使用电子签的时候,没有人会亲自去设计签名算法,而是简单的根据软件提供的信息按下签名按钮。

    那么这个签名软件是否值得信任,就是我们需要关注的问题。

    数字签名无法解决的问题

    使用数字签名我们可以防止伪造和篡改,也无法防止否认。但是还需要一个大前提就是验证签名的公钥必须是真正属于发送者。

    这里我们就需要一个可信任的机构来为我们颁发可信任的公钥,这里就涉及到证书和PKI的知识了。我们将会在后面的文章中讲到。

    更多精彩内容且看:

    更多教程请参考 flydean的博客

    展开全文
  • 今天将给大家介绍8款不错的Windows免费数字签名软件。我们可以使用这些软件对文档进行数字签名,作为真实性的证明。文章较为详细地介绍了软件和使用过程,感兴趣的朋友一起来了解一下。

    Adobe Acrobat Reader DC

    图片1

    Adobe Acrobat Reader DC是Adobe的一个免费PDF阅读器,可以阅读文档并注释。 本软件提供的选项之一是Fill&Sign,它允许您对PDF进行数字签名。

    在这款软件当中,有3种方法可以对文档进行数字签名:

    • 从键盘输入文本,这将被呈现为手写文本。 您可以从4种不同的文字字体中选择。
    • 手动绘制签名。但前提是你有一个触摸敏感设备或数字绘图板,或者你也可以使用你的鼠标。
    • 上传您的签名的图像,并使用它以数字方式签署PDF。

    JSignPdf

    JSignPdf是一个用于Windows的高级免费数字签名软件。 要用数字签名PDF,需要数字证书,数字证书是对真实性的批准的数字印章。 这些证书是私钥,通常存储在Windows密钥库或JKS或PKCS#12格式的文件中。

    图片2

    这款软件的使用方法如下:选择要签署的PDF后,选择创建新的数字签名的PDF副本,或者使用签名的PDF替换原始PDF。 我们不必担心PDF是加密的,只需选择加密类型并输入密码即可。设置签名位置后,填写其他必填字段,然后按“签名”按钮。

    PDF Digital Signer

    图片3

    PDF数字签名是一个非常简单数字签名软件,要使用此软件对PDF进行数字签名,需要保存PFX格式的证书文件及其密码(如果有)。

    在应用签名之前,可以添加各种参数和内容,也可以设置签名位置,另外如果有需要,输入签名元数据,您可以在其中输入作者,职称,主题,关键字,创建者和制作者。还可以添加附加信息,例如原因,联系人,位置等。

    Perfect PDF Reader

    图片4

    Perfect PDF Reader是一个免费的PDF阅读器软件。为了证明您的签名,您可以在这里找到各种方法,比如:自签名证书,使用PFX或PVK文件认证,使用Windows用户的个人存储认证,或智能卡或eToken证书。

    具体使用过程如下:

    • 在第一步中,我们需要设置签名属性,输入签名的原因,位置和联系信息即可。
    • 选择签名的签名证书类型。如果您要使用Windows用户的智能卡/ eToken或个人存储,您必须在您的PC上具有有效的证书。如果您有PFX或PVK密钥库文件,您还可以使用它来验证您的签名。如果您没有上述任何选项可用,也可以创建自签名证书。对于自签名证书,您必须给它一个名字,输入电子邮件地址和有效期。
    • 如果需要,也可以添加时间戳。请注意,只有在Perfect PDF Reader中打开时,时间戳才会可见。
    • 软件也可以设置签名外观。您可以选择要显示签名文本或使用图像作为签名。您可以从PC浏览和选择图像,或使用此阅读器中提供的默认PNG文件。签名位置也可以从这里设置。

    PDF Shaper

    图片5

    PDF Shaper是一个PDF实用程序,可用于使用PFX证书文件对PDF文件进行数字签名。但此软件仅供个人使用,商业用途你必须购买许可证。

    您可以在这里批量对PDF文件进行数字签名。添加PDF文件进行签名后,您必须从PC中选择PFX证书文件,然后输入PDF密码和PFX密码(如果有)。

    Foxit Reader

    图片6

    Foxit Reader提供了与Adobe Acrobat Reader DC类似的PDF签名选项。在以数字方式签署文档之前需要新建。您可以绘制签名,键入签名或导入具有签名的图像以创建数字签名。如果您选择键入签名,则必须键入文本,然后您可以选择看起来像手写的各种字体。其他功能允许您将签名转换为黑白,为签名设置密码,并在程序关闭时删除签名。

    添加数字签名后,它将出现在签名列表中。 只需选择您的签名,并将其放在您的文档即可。

    另外Foxit阅读器还会提供您可能喜欢的各种其他选项,比如:注释PDF,附加文件,修改文档安全设置,以及做更多。

    OpenOffice Writer

    图片7

    OpenOffice Writer是一个字处理程序工具,它是OpenOffice Suite的一部分。 它可以用于数字签名文档,但是对数字签名功能有一定的限制。 与上述其他数字签名软件不同,您只能在此处对ODT(OpenDocument Text)文件进行数字签名。 如果您有要进行数字签名的PDF或DOC / DOCX文件,则必须将其保存为ODT,然后对其进行数字签名。 只有在以OpenOffice格式共享文档时,OpenOffice Writer的数字签名才是最适合的。

    当您准备好要签名的ODT文档时,请转到文件菜单并选择数字签名选项。将打开一个窗口,自动检测并显示您的电脑上可用的数字证书。您可以在选择证书之前查看证书的详细信息。只需选择您要在文档上应用的签名。添加标志后,文档底部会显示一个小数字签名图标,然后保存文档。

    LibreOffice Writer

    图片8

    LibreOffice Writer是另一个文字处理器工具,在着名的开源办公套件LibreOffice中可用。 LibreOffice Writer与OpenOffice Writer几乎相同,数字签名工具也是如此。

    您只能在此处对ODT文件进行数字签名,如果要对其他文档进行数字签名,则必须先将其转换为ODT格式。

    使用数字证书签署文档的过程与上面对OpenOffice Writer所讨论的完全相同。

    相关阅读

    展开全文
  • 添加数字签名前 添加正规数字签名数字签名相关文件的后缀 .pfx一定包含或可以转换为所有文件,.pem可以包含或可以转换为所有文件但不一定全部包含或可以转换为所有文件,证书和公钥通常包含在同一个文件中,...

    工具链接

    废话不说,先上图。

    添加数字签名前

    添加正规数字签名后


    数字签名相关文件的后缀

    .pfx一定包含或可以转换为所有文件,.pem可以包含或可以转换为所有文件但不一定全部包含或可以转换为所有文件,证书和公钥通常包含在同一个文件中,.crt和.cer是同一个文件在不同平台上的扩展名。

    公钥:.key、.crt、.cer(.crt和.cer同时包含证书和公钥)

    证书:.crt、.cer(.crt和.cer同时包含证书和公钥)

    私钥:.key、.pvk


    数字签名文件作用

    希望被特定人员解密,其他人无法篡改被保护的内容,改了也会被发现[用于加密传输]:

    例如我给A发一封邮件,但不想让别人更改,我可以用A的打开的锁[公钥]来锁定,而A想验证时,拿他的钥匙[私钥]来解密。

    不希望被任何一个人解密[用于版权认证]:

    例如我写了一个软件,B黑客在软件中加入了病毒,我不想让被篡改有病毒的软件流行,我可以使用私钥[在这里也作为一把没有钥匙的锁]来加密软件,任何一个人篡改后数字签名[我的]都会消失或被替换,用户可以甄别出这是不是我发布的原版软件。


    格式之间的转换

    1. 首先你要有一个数字签名打包文件[.pfx],这个需要申请。本文以ziyuanxiaozhan@outlook.com.pfx为例。
    2. 其次双击安装,注意将“标志此密钥为可导出的密钥(M)。这将允许你在稍后备份和传输密钥。”前面的选择框选中。
    3. 然后在蓝奏云下载工具。
    4. 提取.cer
      使用“数字签名工具箱”中的“certmgr.exe”,选中证书,点击导出,选择“不,不要导出私钥”,选择导出位置和文件名。
    5. 以下内容全部使用OpenSSL[Windows-64 bit].rar中的OpenSSL-Win64\bin\openssl.exe来操作。
    6. 将.pfx文件复制到“bin”文件夹中。
    7. 提取.pem[同时含有证书和密钥](请输入3次密码,每次输入后回车,第一次是密码,第二次是为.pem设置密码,第三次是验证)
      键入或修改后粘贴以下代码,其中文件须替换为自己的文件。
      pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -out ziyuanxiaozhan@outlook.com.pem
    8. 提取.spc[关键,最终签名使用证书](.pem转.spc)

      crl2pkcs7 -nocrl -certfile ziyuanxiaozhan@outlook.com.pem -outform der -out ziyuanxiaozhan@outlook.com.spc
    9. 提取.crt(.cer转.crt,推荐)

      x509 -inform DER -in ziyuanxiaozhan@outlook.com.cer -out ziyuanxiaozhan@outlook.com.crt



      提取.crt(.pem转.crt,不推荐)

      x509 -inform PEM -in ziyuanxiaozhan@outlook.com.pem -out ziyuanxiaozhan@outlook.com.crt
    10. 提取.key[所有密钥](没必要提取,不常用。)

      pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -nodes -out ziyuanxiaozhan@outlook.com_siyao.key
    11. 提取.key[公钥&证书]

      pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -nokeys -nodes -out ziyuanxiaozhan@outlook.com_siyao.key
    12. 提取.key[私钥](没必要提取,不常用。)

      pkcs12 -in ziyuanxiaozhan@outlook.com.pfx -nocerts -nodes -out ziyuanxiaozhan@outlook.com_siyao.key
    13. 提取.pvk[关键,提取加密私钥](.pem转.pvk)

      rsa -in ziyuanxiaozhan@outlook.com.pem -outform pvk -pvk-strong -out ziyuanxiaozhan@outlook.com.pvk
      
    14. 其实很好理解,“ -nokeys”就是不要私钥,“nocerts”就是不要证书[包含公钥]。


    给软件添加数字签名

    1. 解压“数字签名工具箱.rar”。
    2. 打开SignTool\signcode.exe。
    3. 单击下一步。
    4. 打开一个文件。
    5. 选择自定义,下一步。
    6. 单击“从文件选择”,选择密钥,下一步。
    7. 浏览密钥文件,选择.pvk文件,键入密码。
    8. 下一个随便选,sha1更安全,但我习惯用MD5。
    9. 只有签名证书,没有其他证书。
    10. 不用填。
    11. 勾选时间戳,时间戳在证书有效期内,证书即使过期也依然可信。在这里我提供一个免费的时间戳服务器URL:
      http://timestamp.comodoca.com/
    12. 完成,确定。

    大功告成。

    展开全文
  • 【C++】获取软件数字签名

    千次阅读 2019-04-28 09:54:18
    #include <...//作用:获取软件数字签名 //参数: // v_pwszFilePath --- 程序的全路径 // v_pwszSign --- 用于返回数字签名的缓冲区,如果为NULL, // 那么将会需要的缓冲区大小 ...
  • 本文将详细介绍什么是数字签名,并采用Signtool工具对EXE文件进行签名,后续深入分析数字签名的格式及PE病毒内容。这些基础性知识不仅和系统安全相关,同样与我们身边常用软件、文档、操作系统紧密联系,希望这些...
  • 数字签名(代码签名)流程 出处: http://www.cnblogs.com/itech/archive/2011/07/21/2110924.html Authenticode : 这里翻译为数字认证代码。  code sign : 字面的翻译为代码签名,但是通常的我们...
  • 数字签名 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性(integrity)和来源(或不可抵赖,non-repudiation)。 实际应用中,由于直接对原消息进行签名安全性问题,而且原消息往往比较...
  • 请大家参考 微软网站 的有关代码验证机制文章,简单地讲:就是给软件代码加上数字签名,仅用来保证: (1) 真实性 ( authenticity ) :让用户确信此软件的来源 ( 软件开发商的真实性 ); (2) 完整性 ( integrity ...
  • 对于嵌入式初学者,都会遇到的64位windows无法解决数字签名问题的神器
  • 数字签名(代码签名)流程和数字签名的验证 http://blog.csdn.net/shifancc/article/details/41313969 Authenticode : 这里翻译为数字认证代码。  code sign : 字面的翻译为代码签名,但是通常的...
  • 软件数字签名一点基础知识整理

    千次阅读 2010-05-11 15:43:00
    主要参考《MSDN:Introduction to Code Signing》,没有直译,算是自己的理解整理的。 为什么要对软件进行数字签名?现在软件都是通过Internet发布,由于Internet上病毒和黑客...但要注意,不是说有数字签名软件就是
  • 软件代码数字签名基本原理

    千次阅读 2013-09-27 07:31:17
    在通过精美的包装盒销售软件的时代,大家使用什么防伪标志等来让用户识别什么是正版软件。但在当今的网络时代,有利的一面是软件开发商可以通过网络不受时间、地域的限制而快速发行软件,但不利的一面,则是用户无法...
  • PGP生成数字签名

    千次阅读 2018-10-14 15:19:34
    下图展示了PGP中生成数字签名的过程。在这张图中,消息与相应的签名进行拼合,并最终转换成报文数据(文本数据)。顺便提一下,对于是否要将报文数据转换成文本数据,在PGP中是可以选择的。 二 生成数字签名的...
  • 一、制作根证书 1、开始菜单—运行—输入cmd,弹出命令行窗体。 2、输入命令:cd /d F:\SignTool,将当前工作目录修改到SignTool路径下。 3、使用makecert命令制作证书,可通过... 13、点击“确定”,完成数字签名
  • 数字签名 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性(integrity)和来源(或不可抵赖,non-repudiation)。 实际应用中,由于直接对原消息进行签名安全性问题,而且原消息往往比较...
  • 数字签名原理及其应用

    万次阅读 多人点赞 2017-06-25 15:40:34
    签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。 我们知道,手写签名之所以不能伪造,是因为每一个人的...而数字签名
  • 同一款Android软件有两样东西是不会变的:包名和数字签名(package name and certificate),这是开发者应该共同遵守的原则。 如果包名改变了,就是另外一款软件了。 如果数字签名改变了,这个软件可能被...
  • Android应用数字签名详解

    万次阅读 2015-11-26 15:23:26
    数字签名证书生成方法 命令行工具keytooljarsinger Android Studio  小结 查看应用签名信息 查看自签名证书的信息 查看第三方应用或Android系统应用签名证书信息概述Android系统要求所有的应用必须被证书进行数字...
  • Windows数字签名

    万次阅读 2013-12-11 10:43:30
    数字签名(代码签名)流程 出处: http://www.cnblogs.com/itech/archive/2011/07/21/2110924.html Authenticode : 这里翻译为数字认证代码。 code sign : 字面的翻译为代码签名,但是通常的我们称为数字签名...
  • 数字签名和数字证书

    千次阅读 2013-01-21 16:36:14
    数字签名是什么? 今天,我读到一篇好文章。 它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 ==============================================...
  • verisign软件代码数字签名

    千次阅读 2005-11-27 14:35:00
    verisign软件代码安全认证解决方案当用户从商店中购买软件产品时,用户可以通过询问软件发布者,并检查软件的外包装来确认产品的来源,从而决定是否购买并在多大程度上信任该软件。然而当软件放到了Internet上,当...
  • 数字签名的原理及其应用

    千次阅读 2018-03-24 00:27:26
    概述 我们日常都亲自签过各种名,...数字签名和这个类似,是用来保证一段信息不可伪造而且使这段信息产生者不可抵赖。 例如小明和二狗互不相识,碰巧在各自家里组局打王者荣耀,小明总抢二狗的蓝爸爸,二狗怒了...
  • 大家在使用PDF的过程中应该发现有些PDF文件中会签名,文字签名也会有数字签名时候这些不必要的签名可能会影响到自己对文件的评估。 其实数字签名是可以删掉的,今天小编就来为大家介绍删除PDF数字签名的...
  • PGP验证数字签名原理

    千次阅读 2018-10-14 15:32:52
    下图展示了用PGP验证数字签名的过程,即接受者在接收到报文数据后,得到原始数据并验证数字签名的过程。 二 PGP验证数字签名过程 1 将报文数据(文本数据)转换为二进制数据。 2 将经过压缩的数据进行解压缩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,160
精华内容 22,464
关键字:

常用的数字签名软件有