CN106789037A - 一种pkcs#11接口调用密码设备的签名方法及装置 - Google Patents
一种pkcs#11接口调用密码设备的签名方法及装置 Download PDFInfo
- Publication number
- CN106789037A CN106789037A CN201710054906.5A CN201710054906A CN106789037A CN 106789037 A CN106789037 A CN 106789037A CN 201710054906 A CN201710054906 A CN 201710054906A CN 106789037 A CN106789037 A CN 106789037A
- Authority
- CN
- China
- Prior art keywords
- signature
- data
- initialization
- function
- encryption device
- 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.)
- Granted
Links
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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种PKCS#11接口调用密码设备的签名方法,该方法包括以下步骤:在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对第一数据签名的第一对象;使用对象查找函数查找第一对象的对象句柄;通过签名初始化函数使用第一对象的对象句柄进行签名初始化,获得第一签名初始化结果;根据第一签名初始化结果,使用签名函数对第一数据进行签名操作。应用本发明实施例所提供的方法,实现了PKCS#11接口调用密码设备进行数据签名操作的目的,增强了数据安全性,可以保证密钥没有暴露在密码设备外部,提高密钥的安全性。本发明还公开了一种PKCS#11接口调用密码设备的签名装置,具有相应的技术效果。
Description
技术领域
本发明涉及信息安全技术领域,特别是涉及一种PKCS#11接口调用密码设备的签名方法及装置。
背景技术
随着计算机技术的快速发展,对信息安全的关注程度越来越大。为增强数据的安全性,多需要通过密码设备对数据进行签名等处理。在使用密码设备时,密钥对存放在密码设备内部,不允许导出。
目前国际上使用较频繁的密码算法接口为PKCS#11接口,PKCS全称为Public-keyCryptography Standards,即公钥密码学标准。PKCS#11接口定义没有考虑使用硬件算法运算的情况。如何使用PKCS#11接口调用密码设备进行数据签名,是目前本领域技术人员亟需解决的技术问题。
发明内容
本发明的目的是提供一种PKCS#11接口调用密码设备的签名方法及装置,以实现PKCS#11接口调用密码设备进行数据签名操作的目的,增强数据安全性。
为解决上述技术问题,本发明提供如下技术方案:
一种PKCS#11接口调用密码设备的签名方法,包括:
在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对所述第一数据签名的第一对象,所述对象集合为PKCS#11接口将密码设备中预先生成的每个密钥对进行封装后得到的对象的集合;
使用对象查找函数查找所述第一对象的对象句柄;
通过签名初始化函数使用所述第一对象的对象句柄进行签名初始化,获得第一签名初始化结果;
根据所述第一签名初始化结果,使用签名函数对所述第一数据进行签名操作。
在本发明的一种具体实施方式中,所述在已封装的对象集合中,使用对象查找初始化函数查找针对所述第一数据签名的第一对象,包括:
获得已封装的对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用对象查找初始化函数确定针对所述第一数据签名的第一对象。
在本发明的一种具体实施方式中,所述根据所述第一签名初始化结果,使用签名函数对所述第一数据进行签名操作,包括:
通过签名函数将所述第一数据和所述第一对象中包含的第一密钥号传给所述密码设备,以使所述密码设备根据所述第一密钥号使用相应私钥对所述第一数据进行签名操作,并将签名结果通过所述签名函数返回给PKCS#11接口;
接收所述密码设备返回的签名结果。
在本发明的一种具体实施方式中,还包括:
在要对第二数据的签名值进行验证时,在所述对象集合中,使用所述对象查找初始化函数查找针对所述第二数据签名的第二对象;
使用所述对象查找函数查找所述第二对象的对象句柄;
通过所述签名初始化函数使用所述第二对象的对象句柄进行签名初始化,获得第二签名初始化结果;
根据所述第二签名初始化结果,验证所述第二数据的签名值是否合法。
在本发明的一种具体实施方式中,所述在所述对象集合中,使用所述对象查找初始化函数查找针对所述第二数据签名的第二对象,包括:
获得所述对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用所述对象查找初始化函数确定针对所述第二数据签名的第二对象。
在本发明的一种具体实施方式中,所述根据所述第二签名初始化结果,验证所述第二数据的签名是否为合法签名,包括:
通过所述签名函数将所述第二数据、所述第二数据的签名值和所述第二对象中包含的第二密码号传给所述密码设备,以使所述密码设备根据所述第二密钥号使用相应公钥对所述第二数据进行签名值验证操作,并将验证结果返回给所述PKCS#11接口;
根据接收到的所述密码设备返回的验证结果,确定所述第二数据的签名值是否合法。
一种PKCS#11接口调用密码设备的签名装置,包括:
第一对象查找模块,用于在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对所述第一数据签名的第一对象,所述对象集合为PKCS#11接口将密码设备中预先生成的每个密钥对进行封装后得到的对象的集合;
第一对象句柄查找模块,用于使用对象查找函数查找所述第一对象的对象句柄;
第一签名初始化结果获得模块,用于通过签名初始化函数使用所述第一对象的对象句柄进行签名初始化,获得第一签名初始化结果;
签名模块,用于根据所述第一签名初始化结果,使用签名函数对所述第一数据进行签名操作。
在本发明的一种具体实施方式中,所述第一对象查找模块,具体用于:
获得已封装的对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用对象查找初始化函数确定针对所述第一数据签名的第一对象。
在本发明的一种具体实施方式中,所述签名模块,具体用于:
通过签名函数将所述第一数据和所述第一对象中包含的第一密钥号传给所述密码设备,以使所述密码设备根据所述第一密钥号使用相应私钥对所述第一数据进行签名操作,并将签名结果通过所述签名函数返回给PKCS#11接口;
接收所述密码设备返回的签名结果。
在本发明的一种具体实施方式中,还包括:
第二对象查找模块,用于在要对第二数据的签名值进行验证时,在所述对象集合中,使用所述对象查找初始化函数查找针对所述第二数据签名的第二对象;
第二对象句柄查找模块,用于使用所述对象查找函数查找所述第二对象的对象句柄;
第二签名初始化结果获得模块,用于通过所述签名初始化函数使用所述第二对象的对象句柄进行签名初始化,获得第二签名初始化结果;
签名验证模块,用于根据所述第二签名初始化结果,验证所述第二数据的签名值是否合法。
应用本发明实施例所提供的技术方案,在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对第一数据签名的第一对象,使用对象查找函数查找第一对象的对象句柄,通过签名初始化函数使用第一对象的对象句柄进行签名初始化,获得第一签名初始化结果,根据该第一签名初始化结果,使用签名函数对第一数据进行签名操作,实现了PKCS#11接口调用密码设备进行数据签名操作的目的,增强了数据安全性,而且可以保证密钥没有暴露在密码设备外部,提高了密钥的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种PKCS#11接口调用密码设备的签名方法的实施流程图;
图2为本发明实施例中一种PKCS#11接口调用密码设备的签名装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1所示,为本发明实施例所提供的一种PKCS#11接口调用密码设备的签名方法,该方法可以包括以下步骤:
S110:在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对第一数据签名的第一对象。
对象集合为PKCS#11接口将密码设备中预先生成的每个密钥对进行封装后得到的对象的集合。密码设备可以是密码卡、IC卡等。
在实际应用中,通过密码设备中的密钥生成工具可以生成密钥对,一个密码对包含一个公钥和一个私钥,预先生成的密钥对存放在密码设备内部,不允许被导出,以保证密钥的安全性。
PKCS#11接口可以将密码设备中预先生成的每个密钥对封装成一个对象,构成对象集合。每个密钥对对应的对象中包含标签属性,如密钥号等。PKCS#11接口可以将封装后的对象放在内存链表中。
在要对第一数据进行数据签名时,即需要使用PKCS#11接口进行数据签名时,可以在已封装的对象集合中,使用对象查找初始化函数C_FindObjectsInit查找针对第一数据签名的第一对象。
在本发明的一种具体实施方式中,步骤S110可以包括以下步骤:
步骤一:获得已封装的对象集合中每个对象的标签属性;
步骤二:根据每个对象的标签属性,使用对象查找初始化函数确定针对第一数据签名的第一对象。
为便于描述,将上述两个步骤结合起来进行说明。
在本发明实施例中,可以使用参数CK_ATTRIBUTE定义一个属性集合,在该属性集合中添加自定义的标签属性LABEL。针对已封装的对象集合中的每个对象,可以获得该对象的标签属性。根据每个对象的标签属性,使用对象查找初始化函数可以确定第一数据签名的第一对象。
具体的,可以根据传入的参数CK_ATTRIBUTE属相表,找到LABEL属性值,判断LABEL值的前10个字节是否是“DEV_LEBEL_”,如果是,则取紧接着的后两个字节,将后两个字节XX转换成整数,作为密码设备内部的密钥号。可以将分析出的密钥号作为上下文放到缓存中。
比如,标签属性如下:
CK_ATTRIBUTE PriKey[]={
{CKA_CLASS,&PriKeyClass,sizeof(PriKeyClass)},
{CKA_LABEL,”DEV_KEY_01”,10},
{CKA_SIGN,&isTrue,sizeof(isTrue)}
}
可以确定针对第一数据签名的第一对象中包含的密钥号为1。
这样能够在PKCS#11接口层区分密码设备中不同的密钥对。
S120:使用对象查找函数查找第一对象的对象句柄。
在步骤S110查找到针对第一数据签名的第一对象后,可以获得做签名要使用的密钥对的密钥号,可以使用对象查找函数C_FindObjects查找第一对象的对象句柄。
具体的,可以根据查找到的密钥号,查找PKCS#11接口的对象列表中与该属性LABEL一样的令牌TOKEN对象,找到后返回该TOEKN对象句柄。
S130:通过签名初始化函数使用第一对象的对象句柄进行签名初始化,获得第一签名初始化结果。
通过签名初始化函数C_SignInit使用第一对象的对象句柄可以进行签名初始化操作,如确定签名算法、算法类型、HASH算法等,获得第一签名初始化结果。
S140:根据第一签名初始化结果,使用签名函数对第一数据进行签名操作。
在步骤S130获得了第一签名初始化结果,根据第一签名初始化结果,可以使用签名函数C_Sign对第一数据进行签名操作。
在本发明的一种具体实施方式中,步骤S140可以包括以下步骤:
第一个步骤:通过签名函数将第一数据和第一对象中包含的第一密钥号传给密码设备,以使密码设备根据第一密钥号使用相应私钥对第一数据进行签名操作,并将签名结果通过签名函数返回给PKCS#11接口;
第二个步骤:接收密码设备返回的签名结果。
为便于描述,将上述两个步骤结合起来进行说明。
在本发明实施例中,可以根据CK_SESSION_HANDLE会话句柄找到需要使用的密钥号,通过签名函数将需要签名的第一数据和第一对象中包含的第一密码号,即签名需要的密钥对的密钥号传给密码设备,密码设备根据第一密钥号决定使用密码设备内部的相应私钥对第一数据进行签名操作,并将签名结果通过签名函数返回给PKCS#11接口。PKCS#11接口接收到密码设备返回的签名结果后,确定对第一数据签名完成。
应用本发明实施例所提供的方法,在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对第一数据签名的第一对象,使用对象查找函数查找第一对象的对象句柄,通过签名初始化函数使用第一对象的对象句柄进行签名初始化,获得第一签名初始化结果,根据该第一签名初始化结果,使用签名函数对第一数据进行签名操作,实现了PKCS#11接口调用密码设备进行数据签名操作的目的,增强了数据安全性,而且可以保证密钥没有暴露在密码设备外部,提高了密钥的安全性。
在本发明的一个实施例中,该方法还可以包括以下步骤:
步骤一:在要对第二数据的签名值进行验证时,在对象集合中,使用对象查找初始化函数查找针对第二数据签名的第二对象。
在要对的第二数据的签名值进行验证时,即需要使用PKCS#11接口进行签名验证时,可以在对象集合中,使用对象查找初始化函数查找针对第二数据签名的第二对象。
具体的,可以先获得对象集合中每个对象的标签属性,再根据每个对象的标签属性,使用对象查找初始化函数确定针对第二数据签名的第二对象。
步骤二:使用对象查找函数查找第二对象的对象句柄。
在本发明实施例中,验证签名中步骤一、步骤二的具体实现方式可以参考在步骤S110、S120中描述的实现方式,本发明实施例在此不再赘述。
步骤三:通过签名初始化函数使用第二对象的对象句柄进行签名初始化,获得第二签名初始化结果。
通过验证初始化函数C_VerifyInit使用第二对象的对象句柄可以进行签名初始化操作,获得第二签名初始化结果。
步骤四:根据第二签名初始化结果,验证第二数据的签名值是否合法。
在上述步骤三获得了第二签名初始化结果,根据第二签名初始化结果,可以使用验证函数C_Verify验证第二数据的签名值是否合法。
在本发明的一种具体实施方式中,上述步骤四可以包括以下步骤:
第一个步骤:通过签名函数将第二数据、第二数据的签名值和第二对象中包含的第二密码号传给密码设备,以使密码设备根据第二密钥号使用相应公钥对第二数据进行签名值验证操作,并将验证结果返回给PKCS#11接口;
第二个步骤:根据接收到的密码设备返回的验证结果,确定第二数据的签名值是否合法。
为便于描述,将上述两个步骤结合起来进行说明。
在本发明实施例中,可以根据CK_SESSION_HANDLE会话句柄找到需要使用的密钥号,通过验证函数将要验证的第二数据、第二数据的签名值和第二对象中包含的第二密码号传给密码设备,密码设备根据第二密钥号决定使用密码设备内部的相应公钥对第二数据进行签名验证操作,并将验证结果通过签名函数返回给PKCS#11接口。PKCS#11接口接收到密码设备返回的验证结果后,根据验证结果,可以确定第二数据的签名值是否合法。
在本发明实施例中,在签名验证过程中,不需要密钥暴露于密码设备外部,保证了密钥的安全性。
在实际应用中,可以将密码设备硬件设备集成到PKCS#11接口中,使密码设备的应用更加灵活,同时可以增加密码设备的市场范围。
相应于上面的方法实施例,本发明实施例还提供了一种PKCS#11接口调用密码设备的签名装置,下文描述的PKCS#11接口调用密码设备的签名装置与上文描述的PKCS#11接口调用密码设备的签名方法可相互对应参照。
参见图2所示,该装置可以包括以下模块:
第一对象查找模块210,用于在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对第一数据签名的第一对象,对象集合为PKCS#11接口将密码设备中预先生成的每个密钥对进行封装后得到的对象的集合;
第一对象句柄查找模块220,用于使用对象查找函数查找第一对象的对象句柄;
第一签名初始化结果获得模块230,用于通过签名初始化函数使用第一对象的对象句柄进行签名初始化,获得第一签名初始化结果;
签名模块240,用于根据第一签名初始化结果,使用签名函数对第一数据进行签名操作。
应用本发明实施例所提供的装置,在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对第一数据签名的第一对象,使用对象查找函数查找第一对象的对象句柄,通过签名初始化函数使用第一对象的对象句柄进行签名初始化,获得第一签名初始化结果,根据该第一签名初始化结果,使用签名函数对第一数据进行签名操作,实现了PKCS#11接口调用密码设备进行数据签名操作的目的,增强了数据安全性,而且可以保证密钥没有暴露在密码设备外部,提高了密钥的安全性。
在本发明的一种具体实施方式中,第一对象查找模块210,具体用于:
获得已封装的对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用对象查找初始化函数确定针对第一数据签名的第一对象。
在本发明的一种具体实施方式中,签名模块240,具体用于:
通过签名函数将第一数据和第一对象中包含的第一密钥号传给密码设备,以使密码设备根据第一密钥号使用相应私钥对第一数据进行签名操作,并将签名结果通过签名函数返回给PKCS#11接口;
接收密码设备返回的签名结果。
在本发明的一种具体实施方式中,还包括:
第二对象查找模块,用于在要对第二数据的签名值进行验证时,在对象集合中,使用对象查找初始化函数查找针对第二数据签名的第二对象;
第二对象句柄查找模块,用于使用对象查找函数查找第二对象的对象句柄;
第二签名初始化结果获得模块,用于通过签名初始化函数使用第二对象的对象句柄进行签名初始化,获得第二签名初始化结果;
签名验证模块,用于根据第二签名初始化结果,验证第二数据的签名值是否合法。
在本发明的一种具体实施方式中,第二对象查找模块,具体用于:
获得对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用对象查找初始化函数确定针对第二数据签名的第二对象。
在本发明的一种具体实施方式中,签名验证模块,具体用于:
通过签名函数将第二数据、第二数据的签名值和第二对象中包含的第二密码号传给密码设备,以使密码设备根据第二密钥号使用相应公钥对第二数据进行签名值验证操作,并将验证结果返回给PKCS#11接口;
根据接收到的密码设备返回的验证结果,确定第二数据的签名值是否合法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种PKCS#11接口调用密码设备的签名方法,其特征在于,包括:
在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对所述第一数据签名的第一对象,所述对象集合为PKCS#11接口将密码设备中预先生成的每个密钥对进行封装后得到的对象的集合;
使用对象查找函数查找所述第一对象的对象句柄;
通过签名初始化函数使用所述第一对象的对象句柄进行签名初始化,获得第一签名初始化结果;
根据所述第一签名初始化结果,使用签名函数对所述第一数据进行签名操作。
2.根据权利要求1所述PKCS#11接口调用密码设备的签名方法,其特征在于,所述在已封装的对象集合中,使用对象查找初始化函数查找针对所述第一数据签名的第一对象,包括:
获得已封装的对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用对象查找初始化函数确定针对所述第一数据签名的第一对象。
3.根据权利要求1所述的PKCS#11接口调用密码设备的签名方法,其特征在于,所述根据所述第一签名初始化结果,使用签名函数对所述第一数据进行签名操作,包括:
通过签名函数将所述第一数据和所述第一对象中包含的第一密钥号传给所述密码设备,以使所述密码设备根据所述第一密钥号使用相应私钥对所述第一数据进行签名操作,并将签名结果通过所述签名函数返回给PKCS#11接口;
接收所述密码设备返回的签名结果。
4.根据权利要求1至3任一项所述的PKCS#11接口调用密码设备的签名方法,其特征在于,还包括:
在要对第二数据的签名值进行验证时,在所述对象集合中,使用所述对象查找初始化函数查找针对所述第二数据签名的第二对象;
使用所述对象查找函数查找所述第二对象的对象句柄;
通过所述签名初始化函数使用所述第二对象的对象句柄进行签名初始化,获得第二签名初始化结果;
根据所述第二签名初始化结果,验证所述第二数据的签名值是否合法。
5.根据权利要求4所述的PKCS#11接口调用密码设备的签名方法,其特征在于,所述在所述对象集合中,使用所述对象查找初始化函数查找针对所述第二数据签名的第二对象,包括:
获得所述对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用所述对象查找初始化函数确定针对所述第二数据签名的第二对象。
6.根据权利要求4所述的PKCS#11接口调用密码设备的签名方法,其特征在于,所述根据所述第二签名初始化结果,验证所述第二数据的签名是否为合法签名,包括:
通过所述签名函数将所述第二数据、所述第二数据的签名值和所述第二对象中包含的第二密码号传给所述密码设备,以使所述密码设备根据所述第二密钥号使用相应公钥对所述第二数据进行签名值验证操作,并将验证结果返回给所述PKCS#11接口;
根据接收到的所述密码设备返回的验证结果,确定所述第二数据的签名值是否合法。
7.一种PKCS#11接口调用密码设备的签名装置,其特征在于,包括:
第一对象查找模块,用于在要对第一数据进行数据签名时,在已封装的对象集合中,使用对象查找初始化函数查找针对所述第一数据签名的第一对象,所述对象集合为PKCS#11接口将密码设备中预先生成的每个密钥对进行封装后得到的对象的集合;
第一对象句柄查找模块,用于使用对象查找函数查找所述第一对象的对象句柄;
第一签名初始化结果获得模块,用于通过签名初始化函数使用所述第一对象的对象句柄进行签名初始化,获得第一签名初始化结果;
签名模块,用于根据所述第一签名初始化结果,使用签名函数对所述第一数据进行签名操作。
8.根据权利要求7所述PKCS#11接口调用密码设备的签名装置,其特征在于,所述第一对象查找模块,具体用于:
获得已封装的对象集合中每个对象的标签属性;
根据每个对象的标签属性,使用对象查找初始化函数确定针对所述第一数据签名的第一对象。
9.根据权利要求7所述的PKCS#11接口调用密码设备的签名装置,其特征在于,所述签名模块,具体用于:
通过签名函数将所述第一数据和所述第一对象中包含的第一密钥号传给所述密码设备,以使所述密码设备根据所述第一密钥号使用相应私钥对所述第一数据进行签名操作,并将签名结果通过所述签名函数返回给PKCS#11接口;
接收所述密码设备返回的签名结果。
10.根据权利要求7至9任一项所述的PKCS#11接口调用密码设备的签名装置,其特征在于,还包括:
第二对象查找模块,用于在要对第二数据的签名值进行验证时,在所述对象集合中,使用所述对象查找初始化函数查找针对所述第二数据签名的第二对象;
第二对象句柄查找模块,用于使用所述对象查找函数查找所述第二对象的对象句柄;
第二签名初始化结果获得模块,用于通过所述签名初始化函数使用所述第二对象的对象句柄进行签名初始化,获得第二签名初始化结果;
签名验证模块,用于根据所述第二签名初始化结果,验证所述第二数据的签名值是否合法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710054906.5A CN106789037B (zh) | 2017-01-24 | 2017-01-24 | 一种pkcs#11接口调用密码设备的签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710054906.5A CN106789037B (zh) | 2017-01-24 | 2017-01-24 | 一种pkcs#11接口调用密码设备的签名方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789037A true CN106789037A (zh) | 2017-05-31 |
CN106789037B CN106789037B (zh) | 2018-09-25 |
Family
ID=58942867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710054906.5A Active CN106789037B (zh) | 2017-01-24 | 2017-01-24 | 一种pkcs#11接口调用密码设备的签名方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789037B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109525396A (zh) * | 2018-09-30 | 2019-03-26 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
CN110851328A (zh) * | 2019-11-12 | 2020-02-28 | 成都三零嘉微电子有限公司 | 一种密码卡在pkcs#11应用时异常掉电的检测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131407A1 (en) * | 2009-11-30 | 2011-06-02 | Robert Relyea | Using a pkcs module for opening multiple databases |
CN103425939A (zh) * | 2013-08-07 | 2013-12-04 | 成都卫士通信息产业股份有限公司 | 一种sm3算法在java环境中的实现方法及*** |
CN105653319A (zh) * | 2015-12-25 | 2016-06-08 | 飞天诚信科技股份有限公司 | 一种自动向应用程序加载pkcs#11模块的方法及装置 |
-
2017
- 2017-01-24 CN CN201710054906.5A patent/CN106789037B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131407A1 (en) * | 2009-11-30 | 2011-06-02 | Robert Relyea | Using a pkcs module for opening multiple databases |
CN103425939A (zh) * | 2013-08-07 | 2013-12-04 | 成都卫士通信息产业股份有限公司 | 一种sm3算法在java环境中的实现方法及*** |
CN105653319A (zh) * | 2015-12-25 | 2016-06-08 | 飞天诚信科技股份有限公司 | 一种自动向应用程序加载pkcs#11模块的方法及装置 |
Non-Patent Citations (3)
Title |
---|
唐卫中: "《中国优秀硕士学位论文全文数据库信息科技辑》", 15 June 2014 * |
山东渔翁信息技术股份有限公司: "渔翁信息PCI-E密码卡系列产品", 《道客巴巴》 * |
无名: "《PKCS #11 v2.11密码令牌接口》", 31 October 2001 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109525396A (zh) * | 2018-09-30 | 2019-03-26 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
CN109525396B (zh) * | 2018-09-30 | 2021-02-23 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
CN110851328A (zh) * | 2019-11-12 | 2020-02-28 | 成都三零嘉微电子有限公司 | 一种密码卡在pkcs#11应用时异常掉电的检测方法 |
CN110851328B (zh) * | 2019-11-12 | 2023-03-21 | 成都三零嘉微电子有限公司 | 一种密码卡在pkcs#11应用时异常掉电的检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106789037B (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107392040B (zh) | 一种共识验证的方法及装置 | |
US10769628B2 (en) | Transaction messaging | |
CN104579649B (zh) | 身份识别方法和*** | |
CN109460966A (zh) | 基于请求方类别的合同签订方法、装置及终端设备 | |
CN108055125A (zh) | 一种产品信息的加密、解密方法及装置 | |
CN106416124A (zh) | 半确定性数字签名生成 | |
CN108848058A (zh) | 智能合约处理方法及区块链*** | |
CN109741063A (zh) | 基于区块链的数字签名方法和装置 | |
CN106713508A (zh) | 一种基于云服务器的数据存取方法及*** | |
CN110401615A (zh) | 一种身份认证方法、装置、设备、***及可读存储介质 | |
CN108768963A (zh) | 可信应用与安全元件的通信方法和*** | |
CN106897761A (zh) | 一种二维码生成方法及装置 | |
CN105791277B (zh) | 一种身份认证的方法 | |
CN109818730A (zh) | 盲签名的获取方法、装置和服务器 | |
CN107453874A (zh) | 数字***及其生成方法、服务请求和提供方法和电子设备 | |
CN108718313A (zh) | 应用软件数据安全使用方法、终端设备及服务器 | |
CN109495270A (zh) | 数字签名生成中的临时乱数到消息的结合 | |
CN104092545B (zh) | 一种集成多种动态口令的认证***及其工作方法 | |
CN107257284A (zh) | 一种用于进行虚拟卡交易的方法和装置 | |
CN108416224B (zh) | 一种数据加解密方法及装置 | |
CN106789037B (zh) | 一种pkcs#11接口调用密码设备的签名方法及装置 | |
CN109271189A (zh) | 一种嵌入式***固件的处理方法以及相关装置 | |
CN108449322A (zh) | 身份注册、认证方法、***及相关设备 | |
Focardi et al. | An introduction to security API analysis | |
CN108229210A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 264200 No. 12-1, Chuhe North Road, chucun Town, gaoqu District, Weihai City, Shandong Province Patentee after: Yuweng Information Technology Co.,Ltd. Address before: No.12, Chuhe North Road, gaoqu District, Weihai City, Shandong Province Patentee before: SHANDONG FISHERMAN INFORMATION TECHNOLOGY Co.,Ltd. |