CN110943843B - 一种适用于小内存嵌入式设备的pkcs#7签名实现方法 - Google Patents
一种适用于小内存嵌入式设备的pkcs#7签名实现方法 Download PDFInfo
- Publication number
- CN110943843B CN110943843B CN201911141816.5A CN201911141816A CN110943843B CN 110943843 B CN110943843 B CN 110943843B CN 201911141816 A CN201911141816 A CN 201911141816A CN 110943843 B CN110943843 B CN 110943843B
- Authority
- CN
- China
- Prior art keywords
- signature
- oid
- pkcs
- domain
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3268—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种适用于小内存嵌入式设备的PKCS#7签名实现方法,所述实现方法包括如下步骤,S1、解析签名所需要的私钥文件和证书文件,并判断所述私钥文件和所述证书文件是否匹配,若是,则执行步骤S2;若否,则反馈匹配错误信息,并终止签名;S2、对源数据进行摘要运算和签名运算,以获取签名结果;S3、根据PKCS#7规范,采用ASN.1标准打包所述签名结果所需要的各个域数据。优点是:实现方法占用内存小,可以在嵌入式设备或者单片机设备上运行,在达到客户的需求下能节省硬件成本;而且开发、移植方便,代码采用C语言编写,基本上可以在所有的嵌入式平台运行,可以免去复杂的重复的开发工作。
Description
技术领域
本发明涉及POS机应用程序开发领域,尤其涉及一种适用于小内存嵌入式设备的PKCS#7签名实现方法。
背景技术
PKCS#7也叫做加密消息的语法标准,由RSA安全体系在公钥加密系统中交换数字证书产生的一种加密标准。PKCS#7描述数字证书的语法和其他加密消息——尤其是,数据加密和数字签名的方法,也包含了算法。当使用PKCS#7进行数字签名时,结果包含签名证书(一列相关证书撤回列表)和已证明路径上任何其他证书。如果使用PKCS#7加密数据,通常包含发行者的参考消息和证书的序列号,它与用于解密已加密数据的公共密钥相关。PKCS#7包括6种数据内容:数据(data)、签名数据(sign)、数字信封数据(enveloped)、签名数字信封数据(signed_and_enveloped)、摘要数据(digest)、加密数据(encrypted)。
目前POS机大量普及及运用于各种行业中,有些银行需要POS支持网银证书的申请,申请使用过程需要POS能够生成证书、解析后台下发的证书、用证书对报文进行签名。签名的算法是PKCS#7,目前主流的做法是移植OpenSSL的开源代码到项目里头,OpenSSL已实现了PKCS标准的所有算法,可以直接使用PKCS#7签名。如果是带操作系统如嵌入式Linux、WINCE设备等,因为内存相对较大,移植OpenSSL过来比较方便,但是对于一般的小内存不带操作系统的嵌入式设备,基本上无法把整个OpenSSL进行移植,如果要移植的话也是在OpenSSL开源代码里头裁剪代码,这样工作量巨大,而且容易出问题。
发明内容
本发明的目的在于提供一种适用于小内存嵌入式设备的PKCS#7签名实现方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种适用于小内存嵌入式设备的PKCS#7签名实现方法,所述实现方法包括如下步骤,
S1、解析签名所需要的私钥文件和证书文件,并判断所述私钥文件和所述证书文件是否匹配,若是,则执行步骤S2;若否,则反馈匹配错误信息,并终止签名;
S2、对源数据进行摘要运算和签名运算,以获取签名结果;
S3、根据PKCS#7规范,采用ASN.1标准打包所述签名结果所需要的各个域数据。
优选的,步骤S1中,所述小内存嵌入式设备采用mbedtls加密库的X509协议加载私钥文件和证书文件,并判断私钥文件和证书文件的公钥信息是否匹配。
优选的,步骤S2中,使用指定的摘要算法对源数据进行摘要运算,获取摘要运算结果;使用步骤S1中解析出的所述私钥文件对摘要运算结果进行RSA签名,获取签名结果。
优选的,各个域数据包括签名数据域、证书链数据域、源数据域、摘要信息OID域、版本号信息域和PKCS#7的OID域。
优选的,所述签名数据域的打包具体过程为,使用ASN.1的BITS TRING类型打包步骤S2获取的签名结果、签名算法OID标识、摘要运算的OID标识以及证书文件,并采用ASN.1的INT类型,打包SEQUENCE(0x30)和SET(0x31),以生成SignedData域。
优选的,所述证书链数据域的打包过程为,打包所述证书文件,如果所述证书文件是证书链,则打包整个证书链,并打包CONTEXT_CONSTRUCTED(0xA0)以生证书链数据域。
优选的,使用ASN.1的字节或8位元组串格式打包源数据,打包CONTEXT_CONSTRUCTED(0xA0)、源数据的OID标志以及SEQUENCE(0x30),以生成源数据域;所述源数据的OID标志包括0x2A、0x86、0x48、0x86、0xF7、0x0D、0x01、0x07和0x01。
优选的,所述摘要信息OID域的打包过程为,根据所述摘要算法,获取所述摘要算法对应的OID信息,打包OID信息和SET(0x31),以生成摘要信息OID域。
优选的,所述版本信息域的打包过程为,采用ASN.1的INT类型,打包SEQUENCE(0x30)和CONTEXT_CONSTRUCTED(0xA0),以生成版本号信息域。
优选的,所述PKCS#7的OID域的打包过程为,打包PKCS#7的OID标识和SEQUENCE(0x30),以生成PKCS#7的OID标识域;所述PKCS#7的OID标识包括0x2A、0x86、0x48、0x86、0xF7、0x0D、0x01、0x07和0x02。
本发明的有益效果是:1、本发明提供的实现方法占用内存小,可以在嵌入式设备或者单片机设备上运行,在达到客户的需求下能节省硬件成本。2、本发明提供的实现方法开发、移植方便,代码采用C语言编写,基本上可以在所有的嵌入式平台运行,可以免去复杂的重复的开发工作。
附图说明
图1是本发明实施例中实现方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本实施例中提供了一种适用于小内存嵌入式设备的PKCS#7签名实现方法,所述实现方法包括如下步骤,
S1、解析签名所需要的私钥文件和证书文件,并判断所述私钥文件和所述证书文件是否匹配,若是,则执行步骤S2;若否,则反馈匹配错误信息,并终止签名;
S2、对源数据进行摘要运算和签名运算,以获取签名结果;
S3、根据PKCS#7规范,采用ASN.1标准打包所述签名结果所需要的各个域数据。
本实施例中,所述源数据为需要被签名的数据。源数据在签名完成后将形成PKCS#7签名后的数据结构,根据PKCS#7规范,采用ASN.1标准打包PKCS#7签名后的数据结构所需要的各个域数据。
本实施例中,步骤S3执行完之后,也就相当于签名过程执行完毕,生成符合PKCS#7规范要求的数据结构,之后将该数据结构送给后台,后台会按照相应的规范去验签该数据结构是否合法,如果打包的数据不是PKCS#7规范要求的结构的话,会解析失败,自然验签失败。
本实施例中,步骤S1中,所述小内存嵌入式设备采用mbedtls加密库的X509协议加载私钥文件和证书文件,并判断私钥文件和证书文件的公钥信息是否匹配。判断私钥文件和证书文件的公钥信息是否匹配的具体过程为:判断私钥文件和证书文件里的密钥是不是统一种类型密钥,比如是否都是RSA密钥;如果是是同一种类型密钥,则继续判断公钥的模和私钥的模是否一模一样,如果一样则表示匹配,否则,不匹配。
本实施例中,步骤S2中,使用指定的摘要算法对源数据进行摘要运算,获取摘要运算结果;使用步骤S1中解析出的所述私钥文件对摘要运算结果进行RSA签名,获取签名结果。
本实施例中,摘要算法有很多种,比如md5、sh1、sh256等,所述mbedtls加密库中存储有这些算法的函数,可以直接调用去进行摘要运算。
本实施例中,使用步骤S1中解析出的所述私钥文件对摘要运算结果进行RSA签名的具体过程为,采用mbedtls加密库提供的私钥签名接口,流程是采用RSA_PKCS1_PADDING填充模式对待签名的数据进行填充,填充跟私钥模长度一样长的数据,然后再用rsa私钥加密,形成签名结果。
本实施例中,各个域数据包括签名数据域、证书链数据域、源数据域、摘要信息OID域、版本号信息域和PKCS#7的OID域。
本实施例中,所有的打包采用的规则都是ASN.1的规范组织数据,类似TLV(TAG标识,长度标识,具体的内容)的格式。
本实施例中,所述签名数据域的打包具体过程为,使用ASN.1的BITS TRING类型打包步骤S2获取的签名结果、签名算法OID标识、摘要运算的OID标识以及证书文件,并采用ASN.1的INT类型,打包SEQUENCE(0x30)和SET(0x31),以生成SignedData域。
本实施例中,所述证书链数据域的打包过程为,打包所述证书文件,如果所述证书文件是证书链,则打包整个证书链,并打包CONTEXT_CONSTRUCTED(0xA0)以生证书链数据域。打包证书文件采用的是X509的证书格式打包。
本实施例中,使用ASN.1的字节或8位元组串格式打包源数据,打包CONTEXT_CONSTRUCTED(0xA0)、源数据的OID标志以及SEQUENCE(0x30),以生成源数据域;所述源数据的OID标志包括0x2A、0x86、0x48、0x86、0xF7、0x0D、0x01、0x07和0x01。
本实施例中,所述摘要信息OID域的打包过程为,根据所述摘要算法,获取所述摘要算法对应的OID信息,打包OID信息和SET(0x31),以生成摘要信息OID域。所述摘要信息OID域的打包采用的是OBJECT IDENTIFIER(0x06)对象标识符,进行打包;该标识符为从对象树派生出的一系列点分数字串的形式,用来表示对象。
本实施例中,所述版本信息域的打包过程为,采用ASN.1的INT类型,打包SEQUENCE(0x30)和CONTEXT_CONSTRUCTED(0xA0),以生成版本号信息域。
本实施例中,所述PKCS#7的OID域的打包过程为,打包PKCS#7的OID标识和SEQUENCE(0x30),以生成PKCS#7的OID标识域;所述PKCS#7的OID标识包括0x2A、0x86、0x48、0x86、0xF7、0x0D、0x01、0x07和0x02。所述版本信息域的打包采用的是OBJECT IDENTIFIER(0x06)对象标识符,进行打包;该标识符为从对象树派生出的一系列点分数字串的形式,用来表示对象。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提供了一种适用于小内存嵌入式设备的PKCS#7签名实现方法,该实现方法占用内存小,可以在嵌入式设备或者单片机设备上运行,在达到客户的需求下能节省硬件成本;而且,实现方法开发、移植方便,代码采用C语言编写,基本上可以在所有的嵌入式平台运行,可以免去复杂的重复的开发工作。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (2)
1.一种适用于小内存嵌入式设备的PKCS#7签名实现方法,其特征在于:所述实现方法包括如下步骤,
S1、解析签名所需要的私钥文件和证书文件,并判断所述私钥文件和所述证书文件是否匹配,若是,则执行步骤S2;若否,则反馈匹配错误信息,并终止签名;
S2、对源数据进行摘要运算和签名运算,以获取签名结果;
S3、根据PKCS#7规范,采用ASN.1标准打包所述签名结果所需要的各个域数据;
步骤S2中,使用指定的摘要算法对源数据进行摘要运算,获取摘要运算结果;使用步骤S1中解析出的所述私钥文件对摘要运算结果进行RSA签名,获取签名结果;
各个域数据包括签名数据域、证书链数据域、源数据域、摘要信息OID域、版本号信息域和PKCS#7的OID域;
所述签名数据域的打包具体过程为,使用ASN.1的BITS TRING类型打包步骤S2获取的签名结果、签名算法OID标识、摘要运算的OID标识以及证书文件,并采用ASN.1的INT类型,打包SEQUENCE(0x30)和SET(0x31),以生成SignedData域;
所述证书链数据域的打包过程为,打包所述证书文件,如果所述证书文件是证书链,则打包整个证书链,并打包CONTEXT_CONSTRUCTED(0xA0)以生证书链数据域;
使用ASN.1的字节或8位元组串格式打包源数据,打包CONTEXT_CONSTRUCTED(0xA0)、源数据的OID标志以及SEQUENCE(0x30),以生成源数据域;所述源数据的OID标志包括0x2A、0x86、0x48、0x86、0xF7、0x0D、0x01、0x07和0x01;
所述摘要信息OID域的打包过程为,根据所述摘要算法,获取所述摘要算法对应的OID信息,打包OID信息和SET(0x31),以生成摘要信息OID域;
所述版本号信息域的打包过程为,采用ASN.1的INT类型,打包SEQUENCE(0x30)和CONTEXT_CONSTRUCTED(0xA0),以生成版本号信息域;
所述PKCS#7的OID域的打包过程为,打包PKCS#7的OID标识和SEQUENCE (0x30),以生成PKCS#7的OID标识域;所述PKCS#7的OID标识包括0x2A、0x86、0x48、0x86、0xF7、0x0D、0x01、0x07和0x02。
2.根据权利要求1所述的适用于小内存嵌入式设备的PKCS#7签名实现方法,其特征在于:步骤S1中,所述小内存嵌入式设备采用mbedtls加密库的X509协议加载私钥文件和证书文件,并判断私钥文件和证书文件的公钥信息是否匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911141816.5A CN110943843B (zh) | 2019-11-20 | 2019-11-20 | 一种适用于小内存嵌入式设备的pkcs#7签名实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911141816.5A CN110943843B (zh) | 2019-11-20 | 2019-11-20 | 一种适用于小内存嵌入式设备的pkcs#7签名实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110943843A CN110943843A (zh) | 2020-03-31 |
CN110943843B true CN110943843B (zh) | 2022-03-25 |
Family
ID=69907053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911141816.5A Active CN110943843B (zh) | 2019-11-20 | 2019-11-20 | 一种适用于小内存嵌入式设备的pkcs#7签名实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110943843B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114268431B (zh) * | 2021-12-16 | 2023-06-16 | 统信软件技术有限公司 | 浏览器证书转码方法及装置、计算设备、可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015126136A1 (en) * | 2014-02-21 | 2015-08-27 | Samsung Electronics Co., Ltd. | Method and apparatus for authenticating client credentials |
EP3108613A1 (en) * | 2014-02-21 | 2016-12-28 | Samsung Electronics Co., Ltd. | Method and apparatus for authenticating client credentials |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107769924B (zh) * | 2017-09-11 | 2023-04-14 | 福建新大陆支付技术有限公司 | 校验pos机apk签名的方法及系统 |
US10574451B2 (en) * | 2017-10-19 | 2020-02-25 | Bank Of America Corporation | Method and apparatus for perfect forward secrecy using deterministic hierarchy |
CN109981287B (zh) * | 2019-03-14 | 2020-03-17 | 亚数信息科技(上海)有限公司 | 一种代码签名方法及其存储介质 |
-
2019
- 2019-11-20 CN CN201911141816.5A patent/CN110943843B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015126136A1 (en) * | 2014-02-21 | 2015-08-27 | Samsung Electronics Co., Ltd. | Method and apparatus for authenticating client credentials |
EP3108613A1 (en) * | 2014-02-21 | 2016-12-28 | Samsung Electronics Co., Ltd. | Method and apparatus for authenticating client credentials |
Non-Patent Citations (1)
Title |
---|
PKI-X.509公钥证书及其CA的研究进展;韦卫等;《信息安全与通信保密》;19990228(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110943843A (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9537657B1 (en) | Multipart authenticated encryption | |
CN101977193B (zh) | 安全下载证书的方法及系统 | |
CN111131278B (zh) | 数据处理方法及装置、计算机存储介质、电子设备 | |
CN112507328B (zh) | 一种文件签名方法、计算设备及存储介质 | |
CN105391717A (zh) | 一种apk签名认证方法及其系统 | |
CN110362990A (zh) | 应用安装的安全处理方法、装置及系统 | |
CN108710500A (zh) | 资源发布方法、更新方法和装置 | |
CN112560017B (zh) | 一种使用三级证书认证实现apk统一签名的方法 | |
CN110414190B (zh) | 应用安装包的签名方法、相关装置、存储介质及电子设备 | |
CN108196851A (zh) | 应用发布方法及装置 | |
CN104426658A (zh) | 对移动终端上的应用进行身份验证的方法及装置 | |
CN100401309C (zh) | 税控设备软件版本智能升级加密验证方法 | |
CN109845182A (zh) | 密码消息与认证指令 | |
CN109586920A (zh) | 一种可信验证方法及装置 | |
US8675871B2 (en) | Protecting a control vector in an optional block of a standard key block | |
CN109214146A (zh) | 应用软件的签名方法、验签方法和装置 | |
CN105656889A (zh) | WebApp的发布方法、服务器及客户端 | |
CN110943843B (zh) | 一种适用于小内存嵌入式设备的pkcs#7签名实现方法 | |
CN109857385A (zh) | 应用程序文件打包方法、安装方法及启动方法 | |
Urbanek et al. | Package ‘PKI’ | |
CN110276665A (zh) | 基于大数据的电网工程物资采购需求申报方法 | |
CN104317817B (zh) | 一种组态文件的版本兼容方法及装置 | |
CN112202565A (zh) | 一种区块链系统密码补丁插件实现方法 | |
CN108563927A (zh) | 一种主机升级软件的打包加密方法 | |
CN114143098B (zh) | 数据存储方法和数据存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |