Online Store

NFC Digital signing software SDK

Digital signing source code software for µFR Series NFC RFID contactless readers

数字签名是在线业务的未来,无论我们谈论的是简单的文档、代码和电子邮件签名,还是我们现在在加密货币和区块链中看到的更高级的加密实施。
Digital Logic Ltd.是世界上首批使用非接触式RFID卡实施数字签名解决方案的公司之一。
我们预计,仍然使用联系人卡片的旧系统将很快成为过去。

μFR 签名器软件支持 RSA 和 ECDSA 加密算法,用于对文件进行数字签名。
软件旨在与我们的μFR系列NFC设备一起使用:纳米,经典,经典CS高级
μFR 签名器适用于所有支持 RSA 和 ECDSA 的卡。 在我们的演示视频中,我们使用了JCOP卡J3D081。

Docs & Software Download

[spacer height=”20″]

Digital Signing and Verification Tools

DL 签名者卡使用 RSA 或 ECDSA 非对称加密算法提供卡本身中的数据和文档的数字签名。 支持 PKI 基础结构,在 DL 签名者卡中,可以存储与卡本身生成的加密密钥对相关的 X.509 证书。 支持存储构成从根证书到最终实体证书的信任链的所有 X.509 证书。

在创建证书签名要求(以下简称 CSR)时,DL 签名者卡中生成的公钥将放置在请求正文中。 请求使用适当的私钥在卡本身中签名,该私钥永远不会离开卡本身,并且在生成密钥对后无法读取。 此外,CSR 将发送到认证机构,以基于它创建和签署 X.509 证书。 此最终实体证书与信任链中的其他证书一起放置在 DL 签名者卡中,并准备好对数据和文档进行数字签名。 用户可以将CSR发送给他希望使用其服务的任何认证机构。 数字逻辑提供了一种机制,用于颁发最终实体证书来测试系统。 最终实体证书的基本特征之一是,不得使用与此类证书包含的公钥配对的私钥来签署其他证书。

启动加密密钥对生成、生成 CSR、管理 DL 签名者卡的 PIN 和 PUK 代码、操作 X.509 证书的内容以及对数据和文件进行签名的 Windows 软件工具作为“ufr-signer”分发。

“签名验证程序”是一个验证 RSA 和 ECDSA 数字签名的 Windows 应用程序。

签名的数字签名和验证也可以使用我们为此目的开发的 ufr-pkcs11 模块从 Adobe Acrobat Reader DC 应用程序完成。 我们的 PKCS#11 模块还可以与流行的 Mozilla 电子邮件客户端和 Web 浏览器以及与 PKCS#11 规范兼容的其他软件工具一起使用。

我们还提供 Web 服务,用于在线检查 X.509 证书和签名的 pdf 文件。

uFR 签名者

“uFR Signer”是一种软件工具,用于启动加密密钥对的生成,生成CSR请求,用于管理DL签名者卡的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码是“个人识别号码”的缩写。 DL 签名卡包含 2 个不同的 PIN 码。 这些是SO(安全官)PIN码和用户PIN码。 所谓的“安全官”是指具有访问DL签名卡上安全对象的管理权限的用户。 因此,PIN 码应与用户 PIN 码不同。

在需要更改PIN码和PUK码以及更改密钥和证书的存储内容的情况下,需要登录“安全官”才能访问卡。 必须使用用户 PIN 码登录才能获取散列数据字符串的数字签名。

DL 签名卡上的 PIN 码最少可以包含 4 个字符,最多可以包含 8 个字符。 在这里,在字符下,有任何字母数字(区分大小写)或任何可打印字符。 可打印字符主要是指标准键盘上的标点符号。 更改 PIN 码时,不建议使用只能在单个本地化小键盘上找到的特定字符,而只能使用符合 ASCII 标准且存在于标准美国英语键盘上的字符。

在所有DL签名卡中,默认PIN码和用户PIN码最初都是由八个连续的数字字符“0”(零)或“00000000”组成的。

输入的连续错误 PIN 码的最大数量为 5。 如果超过输入 PIN 码的错误连续尝试次数,则会阻止该 PIN 码。 虽然 PIN 码未被阻止,但输入正确的 PIN 码会重置错误输入的 PIN 码计数器。

解锁 PIN 的唯一方法是输入正确的 PUK 代码。 PUK是“PIN解锁密钥”的缩写。 SO PUK 代码专门用于解锁 SO PIN 码和用户 PUK 以解锁用户 PIN 码。 如果连续 10 个错误输入的 PUK 代码,PUK 代码将变得不可用,并且与被阻止的 PIN 码相关的卡的功能将永远被阻止。

uFR DL 签名器引脚

RSA 密钥

在“RSA 密钥”选项卡上,有用于创建和管理 RSA 密钥的选项。 在使用 RSA 密钥之前,DL 签名者卡必须位于连接到运行 ufr-signer 应用程序的计算机的 uFR 读取器字段中。 此外,SO(安全官)需要登录。

uFR DL 签名者 RSA 密钥

欧共体钥匙

在“EC密钥”选项卡上,有用于创建和管理EC密钥的选项。 在使用 EC 密钥之前,DL 签名者卡必须位于连接到运行 ufr 签名者应用程序的计算机的 uFR 读取器字段中。 此外,SO(安全官)需要登录。

uFR DL 签名者 ECC

DL 签名卡支持以下标准 ECC 曲线:

DL 签名者 22:

secp112r1, secp112r2, secp128r1, secp128r2, secp160k1, secp160r1, secp160r2, secp192k1, secp192r1, secp224k1, secp224r1, secp256k1, secp256r1, secp384r1, secp521r1, sect113r1, sect113r2, sect131r1, sect131r2, sect163k1, sect163r1, sect163r2, sect193r1, sect193r2, sect233k1, sect233r1, sect239k1, 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 标准定义,表示标准化记录,其中包含有关可分辨名称中证书用户的基本信息。 根据特征名称,在最终的 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 可以根据自己的规则和在先前实施的用户身份验证期间获得的数据形成。

DN 的形成是通过从组合框中选择适当的 RDN 并在文本框中键入所需值来完成的。 通过按“放置”按钮,声明的 RDN 将被放置在定义 DN 的列表(列表框)上。 如果在列表中选择了其中一个 RDN 字段,则会在所选字段和上一个字段之间插入新的 RDN。 如果未在 DN 列表中选择任何内容,则会在列表末尾插入一个新的 RDN 字段。 要取消列表中的选择,请按“取消选择”按钮。 不正确的RDN可以通过按“删除”从列表中删除。 可以使用“上移”和“下移”按钮更改 RDN 字段的顺序,这些按钮会影响列表中所选 RDN 的冗余。

扩展是 CSR 的可选部分,证书颁发机构 (CA) 可以根据其认证策略考虑或拒绝它们。 可以分配更多属性,并且最好在主题的备用主题(主题备用名称,缩写为 subjectAltName)中定义电子邮件地址,因为这是通常用于此目的的常用位置的证书颁发者。 对于扩展,各个属性的顺序并不重要。 可以设想,仍然可以定义密钥的所需用途、密钥的扩展用途以及与合格证书相关的语句。 再次强调的是,证书的颁发者可以忽略扩展名,只有其中一些可以颁发所谓的合格电子证书。 无论如何,在扩展名中,用户可以指示未来证书的所需元素,但是,X.509证书的最终消除再次完全取决于其颁发者,并且在签订颁发合同之前,所有详细信息都需要完全熟悉其策略。

uFR DL 签名者 CSR

哈希算法的选择是从标有“签名者摘要算法”的组合框中完成的。 默认选择是 SHA-256,它与输出端有 256 位或 32 字节的 SHA2 算法有关,建议将其用于 CSR。 不再推荐使用 SHA1,并且 SHA2 在输出处具有更高的字节数(384 和 512),并且计划在未来更频繁地使用 SHA3 算法。

密钥及其参数(“签名者密码算法”和“签名者密钥索引(卡)”)不能在此处更改,并且已经在打开此对话框的选项卡上定义(“RSA 密钥”或“EC 密钥”),它们在此处的目的仅供参考。 如果您打开 CSR 对话框的“RSA 密钥”或“EC 密钥”在指示 RSA 密钥大小的标签上没有相应的公钥,以前从卡中读取,ECDSA 曲线将指示为“未设置公钥”。 如果未设置公钥,则无法执行“签名并保存CSR”,但可以从现有CSR或所谓的TBS CSR加载DN和扩展。

TBS CSR 是我们的内部记录格式,即所谓的“待签名”请求,可以作为创建具有多个常见功能的 CSR 请求的模板。 TBS CSR 不包含加密密钥,而仅存储 DN 和扩展。

按“清除条目”按钮可删除 DN 和扩展中的所有项目,以便为新条目准备对话框。

通过按“签名并保存CSR”键,即可在卡中签署CSR并将其存储在所选文件中。 如果卡不在连接的uFR读卡器的字段中或输入了错误的用户PIN码,您将收到一条带有相应描述的错误消息。

生成 CSR 后要做的最后一件事是将其发送到证书颁发者以接收 X.509 证书。 您可以选择任何商业或非商业证书颁发者,或者通过按“在线获取证书”按钮,您可以将CSR发送到我们的网络服务,以获得由“Digital Logic Ltd.”颁发的演示,测试证书。测试证书。 演示,测试证书仅供测试使用,有效期为3个月。 随附的根和中间 CA 证书,您可以从 http://ca.d-logic.com 下载。

如果单击“在线获取证书”按钮,系统将提示您输入以前保存的扩展名为“.pem”的CSR文件,该文件将发送到HTTP服务器。 如果成功连接 https://certificates.d-logic.com 上的服务器并颁发 X.509 证书,系统将提示您输入文件名以保存证书。 否则,您将收到相应的错误消息。

X.509 对象

此选项卡用于管理与 DL 签名卡上的证书相关的 X.509 对象。 要从卡中读取 X.509 对象,无需使用任何 PIN 码登录。 要更改卡上 X.509 对象的存储内容,您需要在“PIN 码”页面上使用 SO PIN 码登录。

uFR DL Signer objs

在“X.509 对象”选项卡上,应用程序立即尝试读取 uFR 读卡器字段中存在的卡。 如果字段中没有DL签名卡,则会出现一条错误消息,如下图所示:

错误图像

如果从卡中成功读取 X.509 对象存储,则证书显示列表将填充该内容。 您可以随时刷新这些列表,方法是将所需的卡放在读卡器字段中,然后按“刷新卡中的对象”按钮。

X.509 证书文件选择是通过按“打开证书文件”键完成的。 也可以从PEM格式(Base64编码)的文件(通常具有扩展名“.pem”)或以ASN.1标准(DER编码)编写的二进制文件中读取证书,这些文件可以具有扩展名“.crt”,“.cer”或“.der”。 如果选择了有效文件,将显示一个系统对话框,显示所选 X.509 证书的内容。 检查证书项目后,只需按“确定”按钮即可确认这一点。

要将所选证书存储在卡中,您需要输入所需的对象 ID(任意字母数字字符串),对于存储在卡上的其他证书,该对象 ID 必须是唯一的。 对象 ID 在标有“对象 ID:”的文本框中输入。 建议是包含RSA公钥的证书应标有ID例如。“0001”到“0003”以及包含ECDSA公钥的公钥将被标记为例如。“1001”到“1003”。 CA 证书还必须在卡上具有唯一的 ID 标签,因此建议使用例如“5001”到“5012”对其进行标记。 仍然需要选择密钥类型。 对于 RSA 和 ECDSA 类型,卡中的私钥索引绑定到该证书,并且这些索引必须一致。 对于CA证书颁发机构,索引的顺序无关紧要,但由于建议的透明度,它们应按顺序输入,一个接一个地成对输入,例如,从根到中间。 支持 PKCS#11 模块并使用 X.509 证书的应用程序通过从卡读取所有公共对象,然后根据证书本身的内容检查信任链来工作。 最后,您需要按下带有描述性名称的按钮“将文件中的证书放入具有指定 ID、对象类型和索引的卡中”。

我们提到了 CA 证书的根证书对和中间对,可能有必要进一步澄清这一点。 在这里,我们假设信任链中的最终实体证书是通过中间到根 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码登录。

uFR DL 签名者签名

成功签名后,数字签名的值将以十六进制或 Base64 格式显示在“签名”文本框中,具体取决于所选选项。 通过更改HEX / Base64选择,可以转换签名显示。 签名可以通过按“将签名保存到二进制文件”按钮保存在二进制文件中。

还实现了可选的计算数字签名的哈希值。 出于历史原因,为此目的选择哈希算法还包括过时的MD5算法,因为一些旧的加密系统仍然依赖于这种机制。 数字签名的哈希值可以通过按“将哈希保存到文件”按钮存储在二进制文件中。

软件下载

软件开发工具包 (SDK) 可从 我们的软件存储库下载。

先决条件

μFR 系列 NFC 读卡器,μFR 固件版本 3.9.53 或更高版本,μFR 库版本 4.3.3 或更高版本。

视频演示:

软件截图:

使用 NFC RFID 阅读器 uFR 经典 CS 2 进行数字签名

其他链接:

要浏览或下载其他软件示例,请访问我们的 Gitlab 软件存储库

要购买我们的设备,请访问 我们的官方在线商店

如果您对我们的软件示例有任何疑问,请随时 联系我们的技术支持