NFC数字签名软件SDK
µFR系列NFC RFID非接触式阅读器的数字签名源代码软件bob全站版
文档和软件下载
数字签名和验证工具
DL签名者卡使用RSA或ECDSA非对称加密算法为卡本身中的数据和文档提供数字签名。支持PKI基础设施,并且在DL签名者卡中,可以存储与卡本身生成的加密密钥对相关的X.509证书。支持存储构成从根证书到最终实体证书信任链的所有X.509证书。
在DL签名者卡中生成的公钥被放置在创建证书签名需求(以下简称CSR)的请求正文中。请求在卡本身中使用适当的私钥进行签名,该私钥永远不会离开卡本身,并且在生成密钥对后无法读取它。此外,CSR被发送到认证机构,以创建并签署基于它的X.509证书。该终端实体证书与信任链中的其他证书一起放置在DL签名者卡中,可以对数据和文档进行数字签名。用户可以将CSR发送给他希望使用其服务的任何认证机构。Digital Logic提供了一种颁发终端实体证书的机制来测试系统。最终实体证书的基本特征之一是,不能使用与此类证书所包含的公钥配对的私钥对其他证书进行签名。
Windows软件工具启动加密密钥对的生成,生成csr,管理DL Signer卡的PIN和PUK代码,操作X.509证书的内容,并对数据和文件进行签名,作为“ufr-signer”分发。
“Signature-verifier”是一个用于验证RSA和ECDSA数字签名的Windows应用程序。
数字签名和签名验证也可以在adobeacrobat Reader DC应用程序中使用我们为此目的开发的ufr-pkcs11模块完成。我们的PKCS#11模块也可以用于流行的Mozilla电子邮件客户端和web浏览器,以及与PKCS#11规范兼容的其他软件工具。
我们还提供了在线检查X.509证书和签名pdf文件的web服务。
在这里签名者
“uFR Signer”是一个软件工具,它可以启动加密密钥对的生成,生成CSR请求,用于管理DL Signer卡的PIN和PUK代码,操作X.509证书的内容,并对数据和文件进行签名。
应用程序使用选项卡控件可视化组件划分为几个逻辑单元。标签由这些单元的名称标记:
“RSA密钥”和“EC密钥”用于创建和操作RSA或ECC密钥对。
RSA (Rivest, Shamir, & Adleman)和ECC(椭圆曲线密码学)代表了当代的非对称密码算法。DL签名卡支持分别存储3个RSA和3个ECC密钥。每个加密密钥可以具有不同的长度和特征,并且由加密算法和密钥索引表示。
“PIN码”选项卡指的是管理和记录用户PIN码到位于uFR阅读器字段的DL签名者卡。PIN是“个人识别号码”的缩写。除了PIN码,在这个选项卡上,您还可以使用PUK码解锁最终被阻止的卡。PUK代表“PIN解锁密钥”。
“卡片对象”选项卡用于管理CA证书和最终实体证书,这些证书通过索引与各自的加密密钥相关联。证书必须在X.509版本3之下。终端实体凭据必须包含最初在DL签名者卡中生成的公钥和相关的私钥。该证书的主要用途是用于准备通过PKCS#11模块进行签名。对于在专有应用程序中使用DL签名者卡,X.509证书的存在不是强制性的。
在“签名”选项卡上有创建数字签名的选项。可以对字节数组、文本输入或文件进行签名。这些签名可以使用“签名验证器”应用程序进行验证。
为了有效地解决性能问题,DL签名者卡被设计成尽可能简洁地对数据块进行签名。因此,使用PKCS#1 v1.5方案定义的RSA算法对数据进行数字签名是一种实践。对于ECDSA算法,在RFC 6979中定义了数字签名生成过程、填充和对齐机制。
uFRSigner应用程序的最新版本为1.5.3.0,必须使用uFCoder库5.0.1或更高版本,uFR固件5.0.7或更高版本。
密码
PIN code是“个人识别号码”的缩写。DL签名卡包含2个不同的PIN码。这些是SO(安全官员)PIN码和用户PIN码。所谓的“安全人员”是具有访问DL签名卡上安全对象的管理权限的用户。所以PIN码应该与用户PIN码不同。
如有需要更改个人识别码和PUK码,以及更改密钥和证书的存储内容,必须由“保安主任”登录才能存取该卡。使用用户PIN码登录是获得散列数据字符串的数字签名的必要条件。
DL签名卡上的PIN码最少4个字符,最多8个字符。这里,在字符下面,有任何字母数字(区分大小写)或任何可打印字符。可打印字符主要指标准键盘上的标点符号。在更改PIN码时,不建议使用只能在单个本地化键盘上找到的特定字符,而只建议使用ASCII标准字符和标准美式英语键盘上存在的字符。
在所有DL签名卡中,初始设置默认PIN码和用户PIN码,由8个连续的数字字符“0”(零)或“00000000”组成。
连续输入错误PIN码最多为5次。如果超过连续错误尝试输入PIN码的次数,该PIN码将被阻止。当PIN码不被阻塞时,输入正确的PIN码将重置错误输入的PIN码计数器。
解锁PIN的唯一方法是输入正确的PUK代码。PUK是“PIN Unlock Key”的缩写。SO PUK代码专门用于解锁SO PIN码和用户PUK来解锁用户PIN码。如果连续10次错误输入PUK代码,PUK代码将无法使用,与被阻止PIN码相关的卡的功能将永远被阻止。
RSA密钥
在“RSA密钥”选项卡上有创建和管理RSA密钥的选项。在使用RSA密钥之前,DL签名者卡必须位于连接到运行uFR签名者应用程序的计算机的uFR读取器字段中。此外,SO (Security Officer)也需要登录。
EC的钥匙
在“EC键”选项卡上有创建和管理EC键的选项。在使用EC密钥之前,DL签名者卡必须位于连接到运行uFR签名者应用程序的计算机的uFR读取器字段中。此外,SO (Security Officer)也需要登录。
DL签名卡支持以下标准ECC曲线:
DL签署人22:
Secp112r1, secp112r2, secp128r1, secp128r2, secp160k1, secp160r1, secp192k1, secp192r1, secp224r1, secp256k1, secp256r1, secp384r1, secp521r1, sect113r1, sect131r1, sect131r2, sect163k1, sect163r1, sect163r2, sect193r1, sect193r2, sect233k1, sect233r1, sect283k1, sect283r1, sect409k1, sect409r1。
DL签字人30:
Secp192k1, secp192r1, secp256k1, secp256r1, secp384r1。
DL签字人145:
Secp160k1, secp160r1, secp160r2, secp192k1, secp192r1, secp224k1, secp224r1, secp256k1, secp256r1, secp384r1, secp521r1。
生成证书签名请求(CSR)
它是由PKCS#10标准定义的,表示一个标准化的记录,其中包括以专有名称包含证书用户的基本信息。基于特征名,所谓的Subject(主题字段)在最终的X.509证书中形成。此外,CSR记录还可能包含X.509标准指定的扩展,证书颁发机构(CA)可以根据其认证策略考虑或放弃这些扩展。CSR的基本部分当然是公钥及其参数。所有这些数据以PKCS#10标准定义的形式打包,最后通过适当的加密摘要算法传递,并在卡中使用适当的私钥签署结果。由此获得的数字签名成为企业社会责任的一个组成部分。
CSR被发送到所需的证书颁发者,该证书颁发者表示所谓的证书颁发机构(CA)。证书颁发者将生成您的X.509终端实体证书,该证书由它们各自的私钥签名,现在与适当的中间证书或根CA证书中包含的公钥相关联。通过这种方式,您的最终实体证书成为由证书颁发机构(CA)保证的信任链的一部分。
“证书签名请求(CSR)”对话框是一个单独的组,用于输入“区别名称(DN)”、“扩展名”,并在组的右上角组合框中,用于控制哈希算法和加密密钥的定义。右下方是一组按钮,用于选择与生成CSR相关的活动。
一个专有名称,称为DN,由表示属性组的相对专有名称(RDN)组组成。在定义DN时,RDN字段的顺序非常重要。需要注意的是,可以在DN内多次重复单个RDN字段。必须记住,证书颁发机构(CA)没有义务颁发具有与CSR中定义的相同DN的证书,但是DN可以根据自己的规则和之前实现的用户身份验证期间获得的数据形成。
通过从组合框中选择适当的RDN并在文本框中键入所需的值,即可形成DN。通过按“放置”按钮,声明的RDN将被放置在定义DN的列表(列表框)中。如果列表中有一个RDN字段已被选中,则新的RDN将插入在所选字段和前一个字段之间。如果在DN列表中没有选择任何内容,则在列表的末尾插入一个新的RDN字段。要取消列表上的选择,请按“取消选择”按钮。不正确的RDN可以通过“删除”从列表中删除。RDN字段的顺序可以使用“上移”和“下移”按钮来改变,这些按钮会影响列表中所选RDN的冗余。
扩展是CSR的可选部分,证书颁发机构(CA)可以根据其认证策略考虑或拒绝扩展。可以分配更多的属性,并且需要在主题的替代主题(主题替代名称,缩写为subjectAltName)中定义电子邮件地址,因为这是用于此目的的通常位置中最常见的证书颁发者。对于扩展,单个属性的顺序并不重要。可以设想,密钥的预期用途、扩展用途以及与合格证书相关的语句仍然可以定义。需要再次强调的是,证书的颁发者可以忽略延期,只有其中的一些颁发者可以颁发所谓的合格电子证书。在任何情况下,在扩展中,用户都可以指明未来证书的所需元素,但是,X.509证书的最终消除完全取决于它们的颁发者,并且在缔结颁发合同之前,所有细节都需要完全熟悉它们的策略。
哈希算法的选择是从标记为“签名者摘要算法”的组合框中完成的。默认选择是SHA-256,这与输出为256位或32字节的SHA2算法有关,建议用于CSR。SHA1不再被推荐使用,SHA2的输出字节数更高(384和512),SHA3算法计划在未来更频繁地使用。
密钥及其参数(“签名者密码算法”和“签名者密钥索引(卡)”)不能在这里更改,并且已经在您打开这个对话框的选项卡上定义了(“RSA密钥”或“EC密钥”),它们在这里的目的只是提供信息。如果从“RSA密钥”或“EC密钥”中打开CSR对话框,在指示RSA密钥大小的标签上没有相应的公钥,则ECDSA曲线将显示为“公钥未设置”。当没有设置公钥时,不可能执行“签署并保存CSR”,但可以从现有CSR或所谓的TBS CSR加载DN和扩展。
TBS CSR是我们的内部记录格式,称为“待签署”请求,可以作为创建具有多种共同特征的CSR请求的模板。TBS CSR不包含加密密钥,只存储DN和扩展名。
按下“Clear Entries”按钮删除DN和扩展中的所有项,以便为新条目准备好对话框。
按下“签名保存CSR”键,在卡片上签名CSR,并将CSR保存到选定的文件中。如果该卡不在连接的uFR读卡器的字段中,或者输入了错误的用户PIN码,您将收到带有适当描述的错误消息。
生成CSR后要做的最后一件事是将其发送给证书颁发者以接收X.509证书。您可以选择任何商业或非商业证书颁发机构,或按“在线获取证书”按钮,将CSR发送到我们的web服务,以获得由“Digital Logic Ltd.”颁发的演示测试证书。测试证书。BOB直播官网app演示,测试证书仅用于测试使用,有效期为3个月。附带的根证书和中间CA证书,您可以从中下载http://ca.d-logic.com.
如果单击“联机获取证书”按钮,将提示您输入以前保存的CSR文件。该扩展名将被发送到HTTP服务器。连接到服务器上的https://certificates.d-logic.comX.509证书已颁发,系统将提示您输入保存证书的文件名。否则,您将收到一条适当的错误消息。
x对象
该选项卡用于管理与DL签名者卡上的证书相关的X.509对象。要从卡中读取X.509对象,不需要使用任何PIN码登录。要更改卡上X.509对象的存储内容,您需要在“PIN码”页面上使用SO PIN码登录。
在X.509上选项卡,应用程序立即尝试读取出现在uFR读取器字段中的卡片。如果该字段中没有DL Signer Card,则会出现错误信息,如下图所示:
如果成功地从卡中读取X.509对象存储,则证书显示列表将填充该内容。您可以随时刷新这些列表,只需将所需的卡片放在读卡器字段中,并按下“从卡片中刷新对象”按钮。
X.509证书文件选择是通过按“打开证书文件”键完成的。也可以从PEM格式(Base64编码)的文件中读取证书,该文件通常具有“扩展名”。pem”或从ASN.1标准(der编码)编写的二进制文件,可以有扩展名”。crt”、“。Cer”或“。der”。如果选择了有效文件,则会显示一个系统对话框,显示所选X.509证书的内容。在检查证书项后,按下“OK”按钮就足以确认这一点。
要将所选证书存储在卡片中,需要输入所需的对象ID(任意字母数字字符串),该对象ID对于存储在卡片上的其他证书必须是唯一的。对象ID在“Objects ID:”文本框中输入。建议包含RSA公钥的证书应该用ID标记为eg。“0001”到“0003”,包含ECDSA公钥的将被标记为ID,例如。1001 ~ 1003。CA证书还必须在卡上有一个唯一的ID标签,因此建议用例如“5001”到“5012”来标记它们。仍然需要选择密钥类型。对于RSA和ECDSA类型,卡中的私钥索引绑定到该证书,并且这些索引必须一致。对于CA证书颁发机构,索引的顺序是不相关的,但是由于推荐的透明性,它们应该依次成对地输入,例如,从根到中间。支持PKCS#11模块并使用X.509证书的应用程序通过从卡中读取所有公共对象,然后根据证书本身的内容检查信任链来工作。 In the end, you need to press the button with a descriptive name “Put certificate from a file in the card with a designated ID, object type and index”.
我们提到了根证书对和中间证书对,可能有必要进一步澄清这一点。在这里,我们假设信任链中的最终实体证书是通过根CA证书的中间端建立的。这是由证书的正式发行者形成信任链的通常方式。但是,这不是一个严格的规则,并且可以通过其他配置更改形成信任链的CA证书。需要强调的是,总有两个最终证书,在链的开头,即所谓的根(根)CA证书,在链的末端,则是末端实体证书(叶证书)
签名
在“签名”选项卡上有从卡中获取数字签名的命令。来自标记为“M:”(消息)的输入行的一组数据或可以通过单击“设置文件签名”单选按钮来设置路径的文件都可以签名。数据可以输入十六进制(HEX)格式、Base64编码或ASCII码布局。
十六进制(HEX)格式包括可以用空格分隔的十六进制数字对。Base64格式通常用于X.509证书的密码学和PEM记录。这里我们将不详细处理Base64格式。ASCII码布局是一种常用的标准,用于记录包括所有字母数字字符以及所有标准标点符号的文本数据集。原则上,所有可以通过标准美式英语键盘输入的内容都包含在ASCII码布局中。如果碰巧输入了不属于ASCII码布局的字符,并且选择了此选项,则这些字符将在内部被字符' ? '替换。不属于ASCII码布局的字符可以通过一些本地化的键盘输入,或者从“M:”文本框的上下文菜单中选择“粘贴”选项输入。
当在输入行中输入一些数据时,只需选择所需的记录格式(HEX / Base64 / ASCII选项),就可以将其转换为另一种类型的记录,除非出现输入错误。
点击“设置文件签名”单选按钮,打开Windows操作系统标准的文件选择对话框。选中文件后,文件路径设置为“M:”文本框。
通过按“保存消息到二进制文件”按钮,可以将“M:”文本框中输入的字节数组存储到二进制文件中。
通过选择“获取签名”,待签名的数据通过所选的哈希算法(消息摘要算法),哈希算法的结果被发送到卡片上。然后,该卡根据从“密码算法”组合框(RSA或ECDSA)中选择的加密算法和该卡中的密钥索引(“卡中的密钥索引”组合框)生成签名。要在卡上签名,必须事先用用户PIN码登录。
签名成功后,数字签名的值会根据所选选项的不同,以HEX或Base64格式显示在“签名”文本框中。通过更改HEX / Base64选择,可以转换签名显示。按“将签名保存到二进制文件”按钮可将签名保存到二进制文件中。
还实现了可选计算数字签名的哈希值。出于历史原因,为此目的选择哈希算法还包括过时的MD5算法,因为一些旧的密码系统仍然依赖于这种机制。数字签名的哈希值可以通过按“Save hash to file”按钮存储在二进制文件中。
软件下载
软件开发工具包(SDK)可用于从我们的软件库下载。
先决条件
µFR系列NFC阅读器,µFR固件版本3.9.53或更高,µFR库版本4.3.3或更高。
视频演示:
软件截图:
额外的链接:
要浏览或下载其他软件示例,请访问我们的Gitlab软件仓库.
要购买我们的设备,请访问我们的官方网店.
请随意联系我们的技术支持如果您对我们的软件示例有任何问题。