CN105871557A - 电子邮件签名方法、装置及系统 - Google Patents

电子邮件签名方法、装置及系统 Download PDF

Info

Publication number
CN105871557A
CN105871557A CN201610329454.2A CN201610329454A CN105871557A CN 105871557 A CN105871557 A CN 105871557A CN 201610329454 A CN201610329454 A CN 201610329454A CN 105871557 A CN105871557 A CN 105871557A
Authority
CN
China
Prior art keywords
signature
instruction
key
email
host computer
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
Application number
CN201610329454.2A
Other languages
English (en)
Other versions
CN105871557B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201610329454.2A priority Critical patent/CN105871557B/zh
Publication of CN105871557A publication Critical patent/CN105871557A/zh
Application granted granted Critical
Publication of CN105871557B publication Critical patent/CN105871557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/42Mailbox-related aspects, e.g. synchronisation of mailboxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种电子邮件签名方法、装置及系统,属于信息安全领域。所述方法包括:电子邮件签名装置接收上位机下发的指令并根据接收到的指令做相应处理和向上位机返回相应数据;上位机下发的指令包括获取相关数据指令、验证管理员PIN码指令、生成签名密钥对指令、写签名密钥指纹指令、验证用户PIN码指令和签名指令。本发明的有益效果在于:本发明提供了一种独立于上位机的电子邮件签名装置,通过在该装置上生成签名密钥对、保存私钥以及使用保存的私钥在该装置上进行签名操作,实现了电子邮件的发送方和接收方之间无需第三方机构参与即可建立信任关系,相较于现有的电子邮件签名体系实现成本低且使用方便。

Description

电子邮件签名方法、装置及系统
技术领域
本发明涉及信息安全领域,尤其涉及电子邮件签名方法、装置及系统。
背景技术
现在越来越多的公司和个人从事网上电子商务活动,电子商务逐渐成了人们进行商务活动的重要模式。无论是在电子商务还是电子政务中,电子邮件都是一种不可或缺的便捷的低成本通信手段。现有技术中,通常是利用X.509PKI的私钥签名技术,以电子邮件证书作为私钥的载体,邮件发送者使用自己数字证书的私钥对电子邮件进行数字签名,邮件接收者通过验证邮件的数字签名以及签名者的证书,来验证邮件是否被篡改,并判断发送者的真实身份,从而确保电子邮件的真实性。上述方法至少存在以下缺陷:整个X.509PKI体系庞大且昂贵,系统部署也十分复杂,对于普通大众来说成本太高;电子邮件的发送方和接收方之间必须通过第三方证书机构才能建立信任关系,在很多情况下使用十分不方便;私钥保存在电脑硬盘上,容易被窃取。
发明内容
为了克服现有技术的缺陷,提供一种电子邮件签名方法、装置及系统。
本发明是通过下述技术方案实现的:
一方面,本发明提供一种电子邮件签名方法,包括电子邮件签名装置执行以下步骤:
接收上位机下发的指令,判断所述指令的类型;
若为获取相关数据指令,则获取所述电子邮件签名装置中存储的相关数据,向所述上位机返回获取到的相关数据;所述相关数据包括签名密钥指纹;
若为验证管理员PIN码指令,则验证指令中的管理员PIN码,向所述上位机返回管理员PIN码验证结果;
若为生成签名密钥对指令,则生成签名密钥对,保存签名私钥,将签名公钥返回给所述上位机;
若为写签名密钥指纹指令,则根据所述写签名密钥指纹指令中的签名密钥指纹更新所述电子邮件签名装置中存储的签名密钥指纹;
若为验证用户PIN码指令,则验证指令中的用户PIN码,向所述上位机返回用户PIN码验证结果,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
若为签名指令,则检查用户PIN码是否已验证通过,是则使用所述电子邮件签名装置中存储的签名私钥对所述签名指令中的待签名数据进行签名,得到签名值,向所述上位机返回所述签名值,标识用户PIN码未验证通过,否则向上位机返回错误码;所述待签名数据包括哈希算法标识和电子邮件哈希值。
另一方面,本发明还提供一种电子邮件签名装置,所述装置包括:
存储模块,用于存储相关数据和签名私钥,所述相关数据包括签名密钥指纹;
接收模块,用于接收上位机下发的指令;
判断模块,用于判断所述接收模块接收到的指令的类型;
第一指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为获取相关数据指令时,从所述存储模块中获取相关数据,将获取到的相关数据返回给所述上位机;
第二指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证管理员PIN码指令时,验证所述指令中的管理员PIN码,将管理员PIN码验证结果返回给所述上位机;
第三指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为生成签名密钥对指令时,生成签名密钥对,保存签名私钥到所述存储模块,将签名公钥返回给所述上位机;
第四指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为写签名密钥指纹指令时,根据所述指令中的签名密钥指纹更新所述存储模块中存储的签名密钥指纹;
第五指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证用户PIN码指令时,验证指令中的用户PIN码,将用户PIN码验证结果返回给所述上位机,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
第六指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为签名指令时,检查用户PIN码是否已验证通过,是则使用所述存储模块中存储的签名私钥对所述指令中的待签名数据进行签名,得到签名值,将所述签名值返回给所述上位机,否则向所述上位机返回错误码;所述待签名数据包括哈希算法标识和电子邮件哈希值。
再一方面,本发明还公开了一种电子邮件签名系统,包括上位机和电子邮件签名装置;
所述上位机包括:
通信处理模块,用于向所述电子邮件签名装置下发获取相关数据指令、验证管理员PIN码指令、生成签名密钥对指令、写签名密钥指纹指令、验证用户PIN码指令和签名指令;
所述电子邮件签名装置包括:
存储模块,用于存储相关数据和签名私钥,所述相关数据包括签名密钥指纹;
接收模块,用于接收上位机下发的指令;
判断模块,用于判断所述接收模块接收到的指令的类型;
第一指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为获取相关数据指令时,从所述存储模块中获取相关数据,将获取到的相关数据返回给所述上位机;
第二指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证管理员PIN码指令时,验证所述指令中的管理员PIN码,将管理员PIN码验证结果返回给所述上位机;
第三指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为生成签名密钥对指令时,生成签名密钥对,保存签名私钥到所述存储模块,将签名公钥返回给所述上位机;
第四指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为写签名密钥指纹指令时,根据所述指令中的签名密钥指纹更新所述存储模块中存储的签名密钥指纹;
第五指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证用户PIN码指令时,验证指令中的用户PIN码,将用户PIN码验证结果返回给所述上位机,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
第六指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为签名指令时,检查用户PIN码是否已验证通过,是则使用所述存储模块中存储的签名私钥对所述指令中的待签名数据进行签名,得到签名值,将所述签名值返回给所述上位机,否则向所述上位机返回错误码;所述待签名数据包括哈希算法标识和电子邮件哈希值。
本发明的有益效果在于:本发明提供了一种独立于上位机的电子邮件签名装置,通过在所述装置上生成签名密钥对,并将私钥保存在所述装置上,以及使用所述装置上保存的私钥在所述装置上进行签名操作,实现了电子邮件的发送方和接收方之间无需第三方机构参与即可建立信任关系,使用方便;签名私钥保存在所述装置上,相比于将签名私钥保存在电脑硬盘上更加安全可靠。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的电子邮件签名方法的流程图;
图2为本发明实施例2提供的电子邮件签名方法中生成签名密钥对的流程图;
图3为本发明实施例2提供的电子邮件签名方法中签名的流程图;
图4为本发明实施例3提供的电子邮件签名装置的方框图;
图5为本发明实施例4提供的电子邮件签名系统的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供一种电子邮件签名方法,如图1所示,所述方法包括电子邮件签名装置执行以下操作:
步骤S1、接收上位机下发的指令,判断所述指令的类型,若为获取相关数据指令,则执行步骤S2;若为验证PIN码指令,则执行步骤S3;若为生成签名密钥对指令,则执行步骤S4;若为写签名密钥指纹指令,则执行步骤S5;若为签名指令,则执行步骤S6;
本实施例中,判断所述指令的类型可以具体包括:
步骤i、检查所述指令的前四个字节,若为第一预设值则所述指令为获取相关数据指令;若为第二预设值或第三预设值则所述指令为验证PIN码指令;若为第四预设值则执行步骤ii;若为第五预设值则所述指令为写签名密钥指纹指令;若为第六预设值则所述指令为签名指令;否则所述指令为本发明未定义的指令或错误的指令,装置执行相应操作或向上位机报错,本发明不做具体限定;
进一步地,本实施例中验证PIN码指令包括验证管理员PIN码指令和验证用户PIN码指令,当所述指令的前四个字节为第二预设值时所述指令具体为验证管理员PIN码指令,当所述指令的前四个字节为第三预设值时所述指令具体为验证用户PIN码指令;
优选地,第一预设值为00ca 00 6e,第二预设值为00 20 00 83,第三预设值为00 20 00 81;第四预设值为00 47 80 00,第五预设值为00 da 00c7,第六预设值为00 2a 9e 9a;
步骤ii、检查所述指令的第五至第七个字节,若为第七预设值则所述指令为生成签名密钥对指令,否则所述指令为本发明未定义的指令或错误的指令,装置执行相应操作或向上位机报错,本发明不做具体限定;
优选地,第七预设值为02 b6 00。
步骤S2、获取相关数据,向所述上位机返回所述相关数据,返回步骤S1;
本实施例中,相关数据包括应用标识符和密钥指纹信息等数据,各数据存于所述装置的不同数据块内,装置分别从各数据块上获取各数据,对获取到的数据分别进行封装后顺序拼接,得到相关数据,将相关数据以TLV格式返回给上位机;进一步地,应用标识符中包含序列号,密钥指纹信息中包含签名密钥指纹。
步骤S3、验证所述指令中的PIN码,向所述上位机返回PIN码验证结果,返回步骤S1;
具体地,本实施例中,装置读取所述指令的第五个字节得到所述指令中的PIN码的长度,从所述指令的第六个字节开始按照所述PIN码的长度获取所述指令中的PIN码,对所述PIN码进行验证;
进一步地,如步骤S1中所述,当所述指令的前四个字节为第二预设值时,所述指令具体为验证管理员PIN码指令,装置将所述指令中的PIN码与装置中预先存储的管理员PIN码进行比较,若二者一致则验证通过,若二者不一致则验证未通过;当所述指令的前四个字节为第三预设值时,所述指令具体为验证用户PIN码指令,装置将所述指令中的PIN码与装置中预先存储的用户PIN码进行比较,若二者一致则验证通过,若二者不一致则验证未通过。
步骤S4、生成签名密钥对,保存签名私钥,向所述上位机返回签名公钥,返回步骤S1;
具体地,本实施例中,签名公钥包括模数(参数N)和公指数(参数E),装置对参数N和参数E分别进行封装后顺序拼接,将拼接后的数据以TLV格式返回给所述上位机。
步骤S5、根据所述指令中的签名密钥指纹更新相关数据,向所述上位机返回状态码,返回步骤S1;
步骤S6、使用签名私钥对所述指令中的待签名数据进行签名,向所述上位机返回签名值,返回步骤S1;
具体地,签名指令中的待签名数据包括哈希算法标识和电子邮件哈希值;装置读取所述指令的第五个字节得到所述指令中的待签名数据的长度,从所述指令的第六个字节开始按照所述待签名数据的长度获取待签名数据,使用签名私钥对所述待签名数据进行签名。
进一步地,本实施例中,当所述电子邮件签名装置接收到的上位机下发的验证PIN码指令具体为验证用户PIN码指令时,所述电子邮件签名装置验证所述指令中的PIN码之后还包括:若验证通过则标识用户PIN码验证状态为已通过,所述用户PIN码验证状态的初始状态为未通过;
当所述电子邮件签名装置接收到的上位机下发的指令为签名指令时,所述电子邮件签名装置使用所述电子邮件签名装置中存储的签名私钥对所述签名指令中的待签名数据进行签名之前还包括:检查所述用户PIN码验证状态是否为已通过,是则使用所述电子邮件签名装置中存储的签名私钥对所述签名指令中的待签名数据进行签名,并标识所述用户PIN码验证状态为未通过,否则向所述上位机返回错误码;
当所述电子邮件签名装置接收到的上位机下发的验证PIN码指令具体为验证管理员PIN码指令时,所述电子邮件签名装置验证所述指令中的PIN码之后还包括:若验证通过则标识管理员PIN码验证状态为已通过,所述管理员PIN码验证状态的初始状态为未通过;
当所述电子邮件签名装置接收到的上位机下发的指令为生成签名密钥对指令时,所述电子邮件签名装置生成签名密钥对之前还包括:检查所述管理员PIN码验证状态是否为已通过,是则生成签名密钥对,并标识所述管理员PIN码验证状态为未通过,否则向所述上位机返回错误码。
实施例2
本实施例提供一种电子邮件签名方法,应用于包含上位机和电子邮件签名装置的系统,上位机与电子邮件签名装置(以下简称装置)之间直接进行通信或通过其他装置或媒介等进行通信,本发明不做具体限定,所述方法具体包括:
生成签名密钥对流程,如图2所示,包括:
步骤101、上位机向装置下发获取相关数据指令;
本实施例中,获取相关数据指令可以具体为:00 ca 00 6e 00。
步骤102、装置接收获取相关数据指令,获取相关数据;
本实施例中,相关数据可具体包括:应用标识符、历史字符、扩展属性、签名算法属性、解密算法属性、认证算法属性、用户PIN码状态字符、密钥指纹信息、CA指纹信息和密钥对生成时间,上述各数据存储于装置存储区域的不同数据块中,装置从各数据块中分别获取各数据,得到相关数据。
步骤103、装置向上位机返回相关数据;
本实施例中,装置可具体将步骤102中获取到的各数据按照标签-数据长度-数据的格式(以下简称TLV格式)封装,将封装得到的数据顺序拼接,将拼接得到的数据按照TLV格式封装后返回给上位机,同时返回给上位机的还有成功状态码90 00;优选地,整体TLV对应的tag为6e 81,应用标识符对应的tag为4f,历史字符对应的tag为5f 52,扩展属性对应的tag为c0,签名算法属性对应的tag为c1,解密算法属性对应的tag为c2,认证算法属性对应的tag为c3,用户PIN码状态字符对应的tag为c4,密钥指纹信息对应的tag为c5,CA指纹信息对应的tag为c6,密钥对生成时间对应的tag为cd,例如,装置向上位机返回相关数据包括向上位机返回如下数据:
步骤104、上位机接收并解析相关数据,判断相关数据中是否存在签名密钥指纹,是则执行步骤105,否则获取相关数据中的序列号,执行步骤106;
本实施例中,判断相关数据中是否存在签名密钥指纹可以具体包括:解析相关数据,判断相关数据的密钥指纹信息中的签名密钥指纹是否为00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00,是则相关数据中不存在签名密钥指纹,否则相关数据中存在签名密钥指纹;
例如,上位机接收到的装置返回的相关数据的密钥指纹信息中的签名密钥指纹为:96 7a 18 c2 a6 33 32 2f 03 5c 95 84 a2 c8 5a 8d 1e 6d de 73,则相关数据中存在签名密钥指纹。
步骤105、上位机提示用户已经存在签名密钥对,等待接收用户操作信息,若接收到用户请求重新生成签名密钥对的操作信息则获取相关数据中的序列号,执行步骤106,否则结束。
步骤106、上位机向装置下发验证管理员PIN码指令;
本实施例中,验证管理员PIN码指令可以具体为:00 20 00 83+管理员PIN码的长度+管理员PIN码,其中,管理员PIN码为用户输入的,即步骤106之前还包括接收用户输入的管理员PIN码。
步骤107、装置接收验证管理员PIN码指令,对验证管理员PIN码指令中的管理员PIN码进行验证;
本实施例中,对验证管理员PIN码指令中的管理员PIN码进行验证可以具体包括:
步骤1-1、将验证管理员PIN码指令保存到缓存区中;
步骤1-2、判断缓存区中缓存的验证管理员PIN码指令中的管理员PIN码与装置的存储区域中预先存储的管理员PIN码是否一致,若一致则管理员PIN码验证通过,若不一致则管理员PIN码验证不通过。
本实施例中,装置可通过调用底层API接口函数OwnerPIN.check(byte[]pin,short offset,byte length)进行管理员PIN码的验证,其中pin为验证管理员PIN码指令的缓存区地址,offset为管理员PIN码在验证管理员PIN码指令的缓存区中的偏移,length为管理员PIN码的长度。
步骤108、装置向上位机返回管理员PIN码验证结果;
本实施例中,步骤108可以具体为:若管理员PIN码验证通过,则装置向上位机返回90 00;若管理员PIN码验证不通过,则装置向上位机返回63c0。
更进一步地,本实施例提供的方法中还可以设置管理员PIN码重试机制,即装置设定和维护重试次数,并且当管理员PIN码验证不通过时,将重试次数信息一并返回给上位机,优选地,可以在管理员PIN码验证不通过时向上位机返回63cx,x表示剩余重试次数,上位机接收到的管理员PIN码验证结果为验证不通过,则根据剩余重试次数决定结束还是返回重新进行管理员PIN码的验证。
步骤109、上位机接收并解析管理员PIN码验证结果,若为验证通过则执行步骤110,若为验证不通过则结束;
本实施例中,步骤109可以具体为:上位机接收管理员PIN码验证结果,若管理员PIN码验证结果为90 00则管理员PIN码验证通过,若管理员PIN码验证结果为63c0则管理员PIN码验证不通过。
步骤110、上位机向装置下发生成签名密钥对指令;
本实施例中,生成签名密钥对指令可以具体为:00 47 80 00 02 b6 00。
步骤111、装置接收生成签名密钥对指令,生成签名密钥对,保存签名私钥;
本实施例中,装置通过调用底层API接口函数KeyPair.genKeyPair()生成签名密钥对。
步骤112、装置向上位机返回签名公钥;
具体地,签名公钥包括两个参数:N和E,装置将参数N和参数E按照TLV格式拼接后以TLV格式返回给上位机,同时返回给上位机的还有成功状态码9000;优选地,整体TLV对应的tag为7f 49,参数N对应的tag为81,参数E对应的tag为82;例如装置向上位机返回签名公钥包括向上位机返回如下数据:
7f 49 82 01 09
81 82 01 00
//参数N
ab 14 67 c0 e0 7b 7f 31 e5 8d 52 76 96 74 d2 a2 7d ad 0d 18 2d de 51 4b da cf 5403 71 1e 57 14 70 b0 a7 84 24 e0 36 8d 73 bb f1 17 31 b6 8b ec 28 97 f4 8e 5f bc c1 1b01 98 cd d3 9e a0 a9 e9 c5 1f c3 af 40 02 2c 0c b0 80 c2 1b c9 f2 4f b2 cd 21 78 78 94 254c 8b fc 75 37 b7 7d 4d 67 55 07 fb 80 70 a5 14 70 0a 98 d9 ff 54 d5 53 d6 08 da 21 f66f 3d 0f 72 eb d8 4d dc da f9 c2 ab 3d f1 f4 21 cd 51 7c 50 1a fc fa 97 59 5d ad 3c 9d 7b4b c6 f5 16 dd e0 a0 d0 ad 92 e8 2e 02 00 4f 79 89 b1 64 aa 0b c4 62 6a b3 86 12 18 4234 c4 be 1b 6c 2d d6 b8 6b a4 da b4 ae 48 0c bf d8 c2 45 cf 4c ec f4 57 62 9b 70 78 730e 04 2c 1e 36 b8 69 a4 b9 0a 1a a1 fd 55 da b8 06 2d 2e b8 ff 5e f7 a7 9e 47 a7 4e 54 0867 6c 99 45 eb 74 7a b2 f0 90 35 38 cf 74 61 0f 21 15 79 55 75 6f 4a 88 6d d1 95
82 03
//参数E
01 00 01
步骤113、上位机接收签名公钥,根据签名公钥计算签名密钥指纹以及公钥ID,将公钥ID与序列号对应保存;
具体地,根据签名公钥计算签名密钥指纹可以具体包括:上位机解析装置返回的签名公钥,获取签名公钥中的参数N,使用SHA-1算法计算参数N的哈希值,将参数N的哈希值作为签名密钥指纹,将参数N的哈希值的低位端四个字节作为公钥ID。
例如,解析得到参数N为ab 14 67 c0 e0 7b 7f 31 e5 8d 52 76 96 74 d2 a2 7d ad0d 18 2d de 51 4b da cf 54 03 71 1e 57 14 70 b0 a7 84 24 e0 36 8d 73 bb f1 17 31 b6 8bec 28 97 f4 8e 5f bc c1 1b 01 98 cd d3 9e a0 a9 e9 c5 1f c3 af 40 02 2c 0c b0 80 c2 1b c9f2 4f b2 cd 21 78 78 94 25 4c 8b fc 75 37 b7 7d 4d 67 55 07 fb 80 70 a5 14 70 0a 98 d9ff 54 d5 53 d6 08 da 21 f6 6f 3d 0f 72 eb d8 4d dc da f9 c2 ab 3d f1 f4 21 cd 51 7c 50 1afc fa 97 59 5d ad 3c 9d 7b 4b c6 f5 16 dd e0 a0 d0 ad 92 e8 2e 02 00 4f 79 89 b1 64 aa0b c4 62 6a b3 86 12 18 42 34 c4 be 1b 6c 2d d6 b8 6b a4 da b4 ae 48 0c bf d8 c2 45 cf4c ec f4 57 62 9b 70 78 73 0e 04 2c 1e 36 b8 69 a4 b9 0a 1a a1 fd 55 da b8 06 2d 2e b8ff 5e f7 a7 9e 47 a7 4e 54 08 67 6c 99 45 eb 74 7a b2 f0 90 35 38 cf 74 61 0f 21 15 79 5575 6f 4a 88 6d d1 95;
使用SHA-1算法计算参数N的哈希值得到5e 34 a3 9b ef 15 ad f4 28 70 57 baf8 21 30 ee cc 39 dc 6f;
则签名密钥指纹为5e 34 a3 9b ef 15 ad f4 28 70 57 ba f8 21 30 ee cc 39 dc 6f;
公钥ID为cc 39 dc 6f。
具体地,将公钥ID与序列号对应保存可以具体包括:判断是否已有与当前获取到的序列号对应保存的公钥ID,是则更新与当前获取到的序列号对应保存的公钥ID为当前计算得到的公钥ID,否则将当前获取到的序列号与当前计算得到的公钥ID对应保存。
步骤114、上位机向装置下发写签名密钥指纹指令;
本实施例中,写签名密钥指纹指令可以具体为:00 da 00 c7+签名密钥指纹的长度+签名密钥指纹,例如,签名密钥指纹为5e 34 a3 9b ef 15 ad f4 28 70 57 baf8 21 30 ee cc 39 dc 6f。
步骤115、装置接收写签名密钥指纹指令,获取写签名密钥指纹指令中的签名密钥指纹,根据签名密钥指纹更新装置中存储的签名密钥指纹;
进一步地,步骤115中还包括向上位机返回状态码,状态码具体为90 00。
具体地,根据签名密钥指纹更新装置中存储的签名密钥指纹可以具体为:解析写签名密钥指纹指令,获取写签名密钥指纹指令中的签名密钥指纹,将装置中存储的签名密钥指纹替换为从写签名密钥指纹指令中获取的签名密钥指纹。
例如,更新前,装置存储区域中存储的密钥指纹信息如下:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00//签名密钥指纹
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00//解密密钥指纹
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00//认证密钥指纹
获取到的签名密钥指纹为5e 34 a3 9b ef 15 ad f4 28 70 57 ba f8 21 30 ee cc 39dc 6f;
则更新后,装置存储区域中存储的密钥指纹信息为:
96 7a 18 c2 a6 33 32 2f 03 5c 95 84 a2 c8 5a 8d 1e 6d de 73//签名密钥指纹
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00//解密密钥指纹
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00//认证密钥指纹。
签名流程,如图3所示,包括:
步骤201、上位机向装置下发获取相关数据指令;
步骤202、装置接收获取相关数据指令,获取相关数据;
步骤203、装置向上位机返回相关数据;
步骤204、上位机接收并解析相关数据,从相关数据中获取序列号,并判断相关数据中是否存在签名密钥指纹,是则执行步骤205,否则结束;
步骤205、上位机生成并显示公钥ID列表,等待用户选择公钥ID以指定签名密钥对;
例如,上位机生成的公钥ID列表如下:
用户信息创建日期公钥ID
test1<test1@ftsafe.com>2016-2-17 3a 62 63 4a
test2<test2@ftsafe.com>2016-1-25cc 39 dc 6f
步骤206、上位机判断是否存在与用户选择的公钥ID对应保存的序列号,是则执行步骤207,否则结束;
例如,用户选择的公钥ID为上述示例列表中的cc 39 dc 6f,根据生成签名密钥对流程中的举例,公钥ID——cc 39 dc 6f存在对应的序列号,且其对应的序列号为00 00 00 01。
步骤207、上位机判断与用户选择的公钥ID对应存储的序列号与从当前接收到的相关数据中获取的序列号是否相同,是则执行步骤208,否则结束;
例如,当前接收到的相关数据为:
则从当前接收到的相关数据中获取的序列号为00 00 00 01;
依据步骤206中举例,与用户选择的公钥ID对应存储的序列号与从当前接收到的相关数据中获取的序列号相同。
步骤208、上位机向装置下发验证用户PIN码指令;
本实施例中,验证用户PIN码指令可以具体为:00 20 00 81+用户PIN码的长度+用户PIN码,其中,用户PIN码为用户输入的,即步骤207之前还包括接收用户输入的用户PIN码。
步骤209、装置接收验证用户PIN码指令,对验证用户PIN码指令中的用户PIN码进行验证;
本实施例中,对验证用户PIN码指令中的用户PIN码进行验证可以具体包括:
步骤2-1、将验证用户PIN码指令保存到缓存区中;
步骤2-2、判断缓存区中缓存的验证用户PIN码指令中的用户PIN码与装置的存储区域中预先存储的用户PIN码是否一致,若一致则用户PIN码验证通过,若不一致则用户PIN码验证不通过。
本实施例中,装置可通过调用底层API接口函数OwnerPIN.check(byte[]pin,short offset,byte length)进行用户PIN码的验证,其中pin为验证用户PIN码指令的缓存区地址,offset为用户PIN码在验证用户PIN码指令的缓存区中的偏移,length为用户PIN码的长度。
步骤210、装置向上位机返回用户PIN码验证结果;
本实施例中,步骤210可以具体为:若用户PIN码验证通过,则装置向上位机返回90 00;若用户PIN码验证不通过,则装置向上位机返回63 c0;
更进一步地,本实施例提供的方法中还可以设置用户PIN码重试机制,即装置设定和维护重试次数,并且当用户PIN码验证不通过时,将重试次数信息一并返回给上位机,优选地,可以在用户PIN码验证不通过时向上位机返回63cx,x表示剩余重试次数,上位机接收到的用户PIN码验证结果为验证不通过,则根据剩余重试次数决定结束还是返回重新进行用户PIN码的验证。
步骤211、上位机接收并解析用户PIN码验证结果,若为验证通过则执行步骤212,若为验证不通过则结束;
步骤212、上位机根据预设哈希算法计算电子邮件的哈希值,根据预设哈希算法的OID与电子邮件的哈希值得到待签名数据;
具体地,电子邮件为用户预先指定的电子邮件;将预设哈希算法的OID与电子邮件的哈希值拼接得到待签名数据。
步骤213、上位机向装置下发包含待签名数据的签名指令;
本实施例中,签名指令可以具体为:00 2a 9e 9a+待签名数据的长度+待签名数据,其中,待签名数据由预设哈希算法的OID和电子邮件的哈希值顺序拼接得到,例如,预设哈希算法的OID为30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14,电子邮件的哈希值为6d 28 b9 80 1c 80 5e ac 6f 83 99 ea 73 a4 e2 b9 7c 9c f1 59,上位机向装置下发的签名指令为:00 2a 9e 9a 23 30 21 30 09 06 05 2b 0e 03 02 1a 05 0004 14 6d 28b9 80 1c 80 5e ac 6f 83 99ea 73 a4 e2 b9 7c 9c f1 59。
步骤214、装置接收签名指令,使用装置中存储的签名私钥对签名指令中的待签名数据进行签名,得到签名值;
本实施例中,使用装置存储区域中的签名私钥对签名指令中的待签名数据进行签名,得到签名值可以具体包括:
步骤3-1、将签名指令写入缓存区;
步骤3-2、获取装置存储区域中的签名私钥,设置用于签名的密钥为获取到的签名私钥;
具体地,步骤3-2可通过调用底层API接口函数Cipher.init(Key theKey,bytetheMode)实现,其中,theKey为用于签名的密钥,theMode为密钥使用方式,具体为Cipher.MODE_ENCRYPT;
步骤3-3、使用签名私钥对签名指令中的待签名数据进行签名,得到签名值;
具体地,步骤3-3可通过调用底层API接口函数Cipher.doFinal(byte[]inBuff,short inOffset,short inLength,byte[]outBuff,short outOffset)实现,其中,inBuff为签名指令的缓存区地址,inOffset为待签名数据在签名指令的缓存区中的偏移,inLength为待签名数据长度,outBuff为签名值的缓存区地址,outOffset为签名值在签名值的缓存区中的偏移。
步骤215、装置向上位机返回签名值;
进一步地,同时返回给上位机的还有成功状态码90 00,例如,装置向上位机返回签名值包括向上位机返回:5c 24 5e 63 80 6f 2c fd 94 44 97 43 01 d0 a7 5e f25c 14 00 74 1a af 85 b6 76 a5 2b 8c 4e 16 5d 01 97 26 98 a9 d6 f2 16 08 00 ba d4 47 7137 48 b1 a4 bd 80 32 4b ec b8 02 d1 03 00 3b 10 9a 4b 3e b4 d9 2e 11 ef c1 74 96 c1 3636 98 d0 5b e8 2b 66 39 82 de bb 67 d4 08 02 1d 5a 18 55bb fa a5 16 1b 7c ac cd c3 e361 cc 9a f2 b0 26 8b d9 cc 9c 40 ba 54 a0 d3 66 7f 47 54 21 79 47 16 83 93 02 13 e3 0786 f1 97 01 a1 aa 4a a8 64 cf 8a ba 82 c5 5e 0c 9a c0 39 7f 6e 12 ca f8 6e 16 b5 76 44 47c7 5f 3f 04 79 e4 91 4f e0 09 9c 77 b6 12 f6 56 2b 2d 43 15 1b 3d 7d 3f bd 38 60 6d 25f8 51 19 c0 d7 73 c2 3f 73 ea 16 b2 41 6d a4 13 23 40 d2 e9 af 7a bd 7d eb 3e 23 31 eeaa 09 d0 2f ca 97 7e fc 91 85 8b 14 20f2 84 fb a1 54 c9 4a 00 2b 05 09 ce 3e 6c b9 47 0de9 a8 14 5b c5 90 00,其中前256个字节为签名值。
步骤216、上位机接收签名值,根据电子邮件、签名值以及签名公钥信息生成待发送电子邮件,发送待发送电子邮件给邮件接收方。
本实施例中,根据所述电子邮件、签名值以及签名公钥信息生成待发送电子邮件可以具体为:根据所述电子邮件、签名值以及签名公钥生成待发送电子邮件;根据所述电子邮件、签名值以及签名公钥信息生成待发送电子邮件还可以具体为:根据所述电子邮件、签名值以及签名公钥的公钥ID生成待发送电子邮件;
当根据所述电子邮件、签名值以及签名公钥信息生成待发送电子邮件可以具体为根据所述电子邮件、签名值以及签名公钥生成待发送电子邮件时,接收方接收到电子邮件后,根据电子邮件中的签名公钥对电子邮件中的签名值进行验签,根据验签结果判断电子邮件来源的合法性、电子邮件的完整性以及电子邮件是否被篡改等,具体地,若验签通过,则电子邮件的来源合法,电子邮件完整且未经篡改;
当根据所述电子邮件、签名值以及签名公钥信息生成待发送电子邮件还可以具体为根据所述电子邮件、签名值以及签名公钥的公钥ID生成待发送电子邮件时,上位机接收到装置返回的签名值后还包括:将签名公钥和签名公钥的ID上传至公钥服务器;相应地,接收方接收到电子邮件后,根据电子邮件中的公钥ID从公钥服务器上获取对应的签名公钥,使用获取到的签名公钥对电子邮件中的签名值进行验签,根据验签结果判断电子邮件来源的合法性、电子邮件的完整性以及电子邮件是否被篡改等,具体地,若验签通过,则电子邮件的来源合法,电子邮件完整且未经篡改。
实施例3
本实施例提供一种电子邮件签名装置,如图4所示,所述装置包括:
存储模块301,用于存储相关数据和签名私钥,其中,相关数据包括签名密钥指纹;
接收模块302,用于接收上位机下发的指令;
判断模块303,用于判断接收模块302接收到的指令的类型;
第一指令响应模块304,用于当判断模块303判定接收模块302接收到的指令为获取相关数据指令时,从存储模块301中获取相关数据,将获取到的相关数据返回给上位机;
第二指令响应模块305,用于当判断模块303判定接收模块302接收到的指令为验证管理员PIN码指令时,验证指令中的管理员PIN码,将管理员PIN码验证结果返回给上位机;
第三指令响应模块306,用于当判断模块303判定接收模块302接收到的指令为生成签名密钥对指令时,生成签名密钥对,保存签名私钥到存储模块301,将签名公钥返回给上位机;
第四指令响应模块307,用于当判断模块303判定接收模块302接收到的指令为写签名密钥指纹指令时,根据指令中的签名密钥指纹更新存储模块301中存储的签名密钥指纹;
第五指令响应模块308,用于当判断模块303判定接收模块302接收到的指令为验证用户PIN码指令时,验证指令中的用户PIN码,将用户PIN码验证结果返回给上位机,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
第六指令响应模块309,用于当判断模块303判定接收模块302接收到的指令为签名指令时,检查用户PIN码是否已验证通过,是则使用存储模块301中存储的签名私钥对指令中的待签名数据进行签名,得到签名值,将签名值返回给上位机,否则向上位机返回错误码;具体地,待签名数据包括哈希算法标识和电子邮件哈希值。
进一步地,本实施例中,第一指令响应模块304可以具体用于:当判断模块303判定接收模块302接收到的指令为获取相关数据指令时,从存储模块301中获取相关数据,对获取到的各相关数据分别进行封装,将封装得到的数据顺序拼接,对拼接得到的数据进行整体封装后返回给上位机。
第四指令响应模块307可以具体用于:当判断模块303判定接收模块302接收到的指令为写签名密钥指纹指令时,解析写签名密钥指纹指令,获取签名密钥指纹的长度,并按照签名密钥指纹的长度获取签名密钥指纹,用获取到的签名密钥指纹替换存储模块301中存储的签名密钥指纹。
第二指令响应模块305还可以用于在管理员PIN码验证通过时标识管理员PIN码已验证通过;
第三指令响应模块306可以具体用于,当判断模块303判定接收模块302接收到的指令为生成签名密钥对指令时,检查管理员PIN码是否已验证通过,是则生成签名密钥对,保存签名私钥到存储模块301,将签名公钥返回给上位机,否则向上位机返回错误码。
实施例4
本实施例提供一种电子邮件签名系统,如图5所示,包括上位机和实施例3中所述的电子邮件签名装置,所述上位机包括:通信处理模块401,用于向电子邮件签名装置下发获取相关数据指令、验证管理员PIN码指令、生成签名密钥对指令、写签名密钥指纹指令、验证用户PIN码指令和签名指令。
具体地,通信处理模块401可以包括:
第一下发单元,用于向电子邮件签名装置下发获取相关数据指令;
第一接收单元,用于接收电子邮件签名装置返回的相关数据;
第二下发单元,用于当第一接收单元接收到的相关数据中的签名密钥指纹为空时,向电子邮件签名装置下发验证管理员PIN码指令;
第二接收单元,用于接收电子邮件签名装置返回的管理员PIN码验证结果;
第三下发单元,用于当第二接收单元接收到的管理员PIN码验证结果为验证通过时,向电子邮件签名装置下发生成签名密钥对指令;
第三接收单元,用于接收电子邮件签名装置返回的签名公钥。
进一步地,上位机还可以包括:选择判断模块402,用于生成密钥信息列表,接收用户选择签名密钥的操作信息,根据第一接收单元接收到的相关数据判断用户选择的签名密钥是否是由电子邮件签名装置生成的;
通信处理模块401还可以包括:
第四下发单元,用于当选择判断模块402判断用户选择的签名密钥是由电子邮件签名装置生成的时,向电子邮件签名装置下发验证用户PIN码指令;
第四接收单元,用于接收电子邮件签名装置返回的用户PIN码验证结果;
第五下发单元,用于当第四接收单元接收到的用户PIN码验证结果为验证通过时,向电子邮件签名装置下发签名指令;
第五接收单元,用于接收电子邮件签名装置返回的签名值。
更进一步地,通信处理模块401还可以包括:
第一获取单元,用于从第一接收单元当前接收到的相关数据中获取序列号,得到第一序列号;
计算存储单元,用于根据第三接收单元接收到的签名公钥计算公钥ID,将公钥ID与第一获取单元得到的第一序列号对应存储;
第二获取单元,用于从第一接收单元当前接收到的相关数据中获取序列号,得到第二序列号;
选择判断模块402具体用于:根据上位机中已存储的公钥ID生成密钥信息列表,接收用户通过指定所述密钥信息列表中的公钥ID以选择签名密钥的操作信息,判断计算存储单元中是否存在与用户指定的公钥ID对应存储的第一序列号且该第一序列号与第二获取单元当前获取到的第二序列号相同,是则用户选择的签名密钥是由所述电子邮件签名装置生成的,否则户选择的签名密钥不是由所述电子邮件签名装置生成的。
本实施例中,通信处理模块401还可以用于:接收电子邮件签名装置返回的签名公钥,根据签名公钥计算签名密钥指纹;进一步地,通信处理模块401具体用于:解析接收到的签名公钥,获取签名公钥中的模数,计算所述模数的哈希值,将所述模数的哈希值作为签名密钥指纹。
本实施例中,上位机还包括:邮件发送模块403,用于将电子邮件、通信处理模块401接收到的签名公钥和签名值发送给邮件接收方;相应地,通信处理模块401还用于:接收电子邮件签名装置返回的签名公钥和签名值;
或者,上位机还包括:上传模块404,用于将通信处理模块401接收到的签名公钥和通信处理模块401计算得到的公钥ID上传至公钥服务器;邮件发送模块403,用于将电子邮件、通信处理模块401计算得到的公钥ID和通信处理模块401接收到的签名值发送给邮件接收方;相应地,通信处理模块401还用于:接收电子邮件签名装置返回的签名公钥和签名值,以及根据所述签名公钥计算公钥ID。
具体地,本实施例中,通信处理模块401可以具体用于:解析接收到的签名公钥,获取签名公钥中的模数,计算所述模数的哈希值,将所述模数的哈希值的一部分作为公钥ID。
上位机还可以包括:哈希模块405,用于对电子邮件进行哈希运算,得到电子邮件哈希值,将哈希运算所采用的哈希算法对应的哈希算法标识与电子邮件哈希值拼接,得到待签名数据;相应地,通信处理模块401具体用于:向电子邮件签名装置下发包含哈希模块405得到的待签名数据的签名指令。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

Claims (27)

1.一种电子邮件签名方法,其特征在于,包括电子邮件签名装置执行以下步骤:
接收上位机下发的指令,判断所述指令的类型;
若为获取相关数据指令,则获取所述电子邮件签名装置中存储的相关数据,向所述上位机返回获取到的相关数据;所述相关数据包括签名密钥指纹;
若为验证管理员PIN码指令,则验证指令中的管理员PIN码,向所述上位机返回管理员PIN码验证结果;
若为生成签名密钥对指令,则生成签名密钥对,保存签名私钥,将签名公钥返回给所述上位机;
若为写签名密钥指纹指令,则根据所述写签名密钥指纹指令中的签名密钥指纹更新所述电子邮件签名装置中存储的签名密钥指纹;
若为验证用户PIN码指令,则验证指令中的用户PIN码,向所述上位机返回用户PIN码验证结果,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
若为签名指令,则检查用户PIN码是否已验证通过,是则使用所述电子邮件签名装置中存储的签名私钥对所述签名指令中的待签名数据进行签名,得到签名值,向所述上位机返回所述签名值,标识用户PIN码未验证通过,否则向上位机返回错误码;所述待签名数据包括哈希算法标识和电子邮件哈希值。
2.如权利要求1所述的方法,其特征在于,所述向所述上位机返回获取到的相关数据,具体包括:对获取到的各相关数据分别进行封装,将封装得到的数据顺序拼接,对拼接得到的数据进行整体封装后返回给所述上位机。
3.如权利要求1所述的方法,其特征在于,所述根据所述写签名密钥指纹指令中的签名密钥指纹更新所述电子邮件签名装置中存储的签名密钥指纹,具体包括:解析所述写签名密钥指纹指令,获取签名密钥指纹的长度,并按照所述签名密钥指纹的长度获取签名密钥指纹,用获取到的签名密钥指纹替换所述电子邮件签名装置中存储的签名密钥指纹。
4.如权利要求1所述的方法,其特征在于,当所述指令为验证管理员PIN码指令时还包括:当管理员PIN码验证通过时,所述电子邮件签名装置标识管理员PIN码已验证通过;
当所述指令为生成密钥对指令时,所述电子邮件签名装置生成签名密钥对之前还包括:检查管理员PIN码是否已验证通过,是则生成签名密钥对,否则向所述上位机返回错误码。
5.如权利要求1所述的方法,其特征在于,所述方法还包括所述上位机执行以下操作:
步骤A1、向所述电子邮件签名装置下发获取相关数据指令;
步骤A2、接收所述电子邮件签名装置返回的相关数据,当所述相关数据中的签名密钥指纹为空时,向所述电子邮件签名装置下发验证管理员PIN码指令;
步骤A3、接收所述电子邮件签名装置返回的管理员PIN码验证结果,当所述管理员PIN码验证结果为验证通过时,向所述电子邮件签名装置下发生成签名密钥对指令;
步骤A4、接收所述电子邮件签名装置返回的签名公钥。
6.如权利要求5所述的方法,其特征在于,所述方法还包括所述上位机执行以下操作:
步骤B1、向所述电子邮件签名装置下发获取相关数据指令,接收所述电子邮件签名装置返回的相关数据;
步骤B2、生成密钥信息列表,接收用户选择签名密钥的操作信息,根据所述电子邮件签名装置返回的相关数据判断用户选择的签名密钥是否是由所述电子邮件签名装置生成的;
步骤B3、当用户选择的签名密钥是由所述电子邮件签名装置生成的时,向所述电子邮件签名装置下发验证用户PIN码指令;
步骤B4、接收所述电子邮件签名装置返回的用户PIN码验证结果,当所述用户PIN码验证结果为验证通过时,向所述电子邮件签名装置下发签名指令;
步骤B5、接收所述电子邮件签名装置返回的签名值。
7.如权利要求6所述的方法,其特征在于,所述相关数据还包括序列号;
所述步骤A2中还包括:获取当前接收到的相关数据中的序列号,得到第一序列号;
所述步骤A4中还包括:根据所述签名公钥计算公钥ID,将所述公钥ID与所述第一序列号对应存储;
所述步骤B1中还包括:获取当前接收到的相关数据中的序列号,得到第二序列号;
所述B2具体包括:根据已存储的公钥ID生成密钥信息列表,接收用户通过指定所述密钥信息列表中的公钥ID以选择签名密钥的操作信息,判断是否存在与用户指定的公钥ID对应存储的第一序列号且该第一序列号与所述第二序列号相同,是则用户选择的签名密钥是由所述电子邮件签名装置生成的,否则用户选择的签名密钥不是由所述电子邮件签名装置生成的。
8.如权利要求1所述的方法,其特征在于,还包括:所述上位机接收所述电子邮件签名装置返回的签名公钥,根据所述签名公钥计算签名密钥指纹,向所述电子邮件签名装置下发写签名密钥指纹指令。
9.如权利要求8所述的方法,其特征在于,所述上位机根据所述签名公钥计算签名密钥指纹具体包括:所述上位机解析所述签名公钥,获取所述签名公钥中的模数,计算所述模数的哈希值,将所述模数的哈希值作为签名密钥指纹。
10.如权利要求1所述的方法,其特征在于,还包括:所述上位机接收所述电子邮件签名装置返回的签名值,向邮件接收方发送电子邮件、签名公钥以及所述签名值。
11.如权利要求1所述的方法,其特征在于,还包括:
所述上位机接收所述电子邮件签名装置返回的签名公钥,根据所述签名公钥计算公钥ID;
所述上位机接收所述电子邮件签名装置返回的签名值,向公钥服务器上传所述签名公钥和所述公钥ID,向邮件接收方发送电子邮件、所述公钥ID以及所述签名值。
12.如权利要求7或11所述的方法,其特征在于,所述上位机根据所述签名公钥计算公钥ID具体包括:所述上位机解析所述签名公钥,获取所述签名公钥中的模数,计算所述模数的哈希值,将所述模数的哈希值的一部分作为公钥ID。
13.如权利要求1所述的方法,其特征在于,还包括:所述上位机采用所述哈希算法标识对应的哈希算法对电子邮件进行哈希运算,得到所述电子邮件哈希值,将所述哈希算法标识与所述电子邮件哈希值拼接,得到待签名数据,向所述电子邮件签名装置下发包含所述待签名数据的签名指令。
14.一种电子邮件签名装置,其特征在于,包括:
存储模块,用于存储相关数据和签名私钥,所述相关数据包括签名密钥指纹;
接收模块,用于接收上位机下发的指令;
判断模块,用于判断所述接收模块接收到的指令的类型;
第一指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为获取相关数据指令时,从所述存储模块中获取相关数据,将获取到的相关数据返回给所述上位机;
第二指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证管理员PIN码指令时,验证所述指令中的管理员PIN码,将管理员PIN码验证结果返回给所述上位机;
第三指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为生成签名密钥对指令时,生成签名密钥对,保存签名私钥到所述存储模块,将签名公钥返回给所述上位机;
第四指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为写签名密钥指纹指令时,根据所述指令中的签名密钥指纹更新所述存储模块中存储的签名密钥指纹;
第五指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证用户PIN码指令时,验证指令中的用户PIN码,将用户PIN码验证结果返回给所述上位机,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
第六指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为签名指令时,检查用户PIN码是否已验证通过,是则使用所述存储模块中存储的签名私钥对所述指令中的待签名数据进行签名,得到签名值,将所述签名值返回给所述上位机,否则向所述上位机返回错误码;所述待签名数据包括哈希算法标识和电子邮件哈希值。
15.如权利要求14所述的装置,其特征在于,所述第一指令响应模块具体用于:当所述判断模块判定所述接收模块接收到的指令为获取相关数据指令时,从所述存储模块中获取相关数据,对获取到的各相关数据分别进行封装,将封装得到的数据顺序拼接,对拼接得到的数据进行整体封装后返回给所述上位机。
16.如权利要求14所述的装置,其特征在于,所述第四指令响应模块具体用于:当所述判断模块判定所述接收模块接收到的指令为写签名密钥指纹指令时,解析所述写签名密钥指纹指令,获取签名密钥指纹的长度,并按照所述签名密钥指纹的长度获取签名密钥指纹,用获取到的签名密钥指纹替换所述存储模块中存储的签名密钥指纹。
17.如权利要求14所述的装置,其特征在于,所述第二指令响应模块还用于在管理员PIN码验证通过时标识管理员PIN码已验证通过;
所述第三指令响应模块具体用于,当所述判断模块判定所述接收模块接收到的指令为生成签名密钥对指令时,检查管理员PIN码是否已验证通过,是则生成签名密钥对,保存签名私钥到所述存储模块,将签名公钥返回给所述上位机,否则向所述上位机返回错误码。
18.一种电子邮件签名系统,其特征在于,包括上位机和电子邮件签名装置;
所述上位机包括:
通信处理模块,用于向所述电子邮件签名装置下发获取相关数据指令、验证管理员PIN码指令、生成签名密钥对指令、写签名密钥指纹指令、验证用户PIN码指令和签名指令;
所述电子邮件签名装置包括:
存储模块,用于存储相关数据和签名私钥,所述相关数据包括签名密钥指纹;
接收模块,用于接收上位机下发的指令;
判断模块,用于判断所述接收模块接收到的指令的类型;
第一指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为获取相关数据指令时,从所述存储模块中获取相关数据,将获取到的相关数据返回给所述上位机;
第二指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证管理员PIN码指令时,验证所述指令中的管理员PIN码,将管理员PIN码验证结果返回给所述上位机;
第三指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为生成签名密钥对指令时,生成签名密钥对,保存签名私钥到所述存储模块,将签名公钥返回给所述上位机;
第四指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为写签名密钥指纹指令时,根据所述指令中的签名密钥指纹更新所述存储模块中存储的签名密钥指纹;
第五指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为验证用户PIN码指令时,验证指令中的用户PIN码,将用户PIN码验证结果返回给所述上位机,并且当用户PIN码验证结果为验证通过时标识用户PIN码已验证通过;
第六指令响应模块,用于当所述判断模块判定所述接收模块接收到的指令为签名指令时,检查用户PIN码是否已验证通过,是则使用所述存储模块中存储的签名私钥对所述指令中的待签名数据进行签名,得到签名值,将所述签名值返回给所述上位机,否则向所述上位机返回错误码;所述待签名数据包括哈希算法标识和电子邮件哈希值。
19.如权利要求18所述的系统,其特征在于,所述通信处理模块具体包括:
第一下发单元,用于向所述电子邮件签名装置下发获取相关数据指令;
第一接收单元,用于接收所述电子邮件签名装置返回的相关数据;
第二下发单元,用于当所述第一接收单元接收到的相关数据中的签名密钥指纹为空时,向所述电子邮件签名装置下发验证管理员PIN码指令;
第二接收单元,用于接收所述电子邮件签名装置返回的管理员PIN码验证结果;
第三下发单元,用于当所述第二接收单元接收到的管理员PIN码验证结果为验证通过时,向所述电子邮件签名装置下发生成签名密钥对指令;
第三接收单元,用于接收所述电子邮件签名装置返回的签名公钥。
20.如权利要求19所述的系统,其特征在于,所述上位机还包括:选择判断模块,用于生成密钥信息列表,接收用户选择签名密钥的操作信息,根据所述第一接收单元接收到的相关数据判断用户选择的签名密钥是否是由所述电子邮件签名装置生成的;
所述通信处理模块还包括:
第四下发单元,用于当所述选择判断模块判断用户选择的签名密钥是由所述电子邮件签名装置生成的时,向所述电子邮件签名装置下发验证用户PIN码指令;
第四接收单元,用于接收所述电子邮件签名装置返回的用户PIN码验证结果;
第五下发单元,用于当所述第四接收单元接收到的用户PIN码验证结果为验证通过时,向所述电子邮件签名装置下发签名指令;
第五接收单元,用于接收所述电子邮件签名装置返回的签名值。
21.如权利要求20所述的系统,其特征在于,所述通信处理模块还包括:
第一获取单元,用于从所述第一接收单元当前接收到的相关数据中获取序列号,得到第一序列号;
计算存储单元,用于根据所述第三接收单元接收到的签名公钥计算公钥ID,将所述公钥ID与所述第一获取单元得到的第一序列号对应存储;
第二获取单元,用于从所述第一接收单元当前接收到的相关数据中获取序列号,得到第二序列号;
所述选择判断模块具体用于:根据所述上位机中已存储的公钥ID生成密钥信息列表,接收用户通过指定所述密钥信息列表中的公钥ID以选择签名密钥的操作信息,判断所述计算存储单元中是否存在与用户指定的公钥ID对应存储的第一序列号且该第一序列号与所述第二获取单元当前获取到的第二序列号相同,是则用户选择的签名密钥是由所述电子邮件签名装置生成的,否则用户选择的签名密钥不是由所述电子邮件签名装置生成的。
22.如权利要求18所述的系统,其特征在于,所述通信处理模块还用于:接收所述电子邮件签名装置返回的签名公钥,根据所述签名公钥计算签名密钥指纹。
23.如权利要求22所述的系统,其特征在于,所述通信处理模块具体用于:解析接收到的签名公钥,获取所述签名公钥中的模数,计算所述模数的哈希值,将所述模数的哈希值作为签名密钥指纹。
24.如权利要求18所述的系统,其特征在于,所述通信处理模块还用于:接收所述电子邮件签名装置返回的签名公钥和签名值;
所述上位机还包括:邮件发送模块,用于将电子邮件、所述通信处理模块接收到的签名公钥和签名值发送给邮件接收方。
25.如权利要求18所述的系统,其特征在于,所述通信处理模块还用于:接收所述电子邮件签名装置返回的签名公钥和签名值,以及根据所述签名公钥计算公钥ID;
所述上位机还包括:
上传模块,用于将所述通信处理模块接收到的签名公钥和所述通信处理模块计算得到的公钥ID上传至公钥服务器;
邮件发送模块,用于将电子邮件、所述通信处理模块计算得到的公钥ID和所述通信处理模块接收到的签名值发送给邮件接收方。
26.如权利要求21或25所述的系统,其特征在于,所述通信处理模块具体用于:解析接收到的签名公钥,获取所述签名公钥中的模数,计算所述模数的哈希值,将所述模数的哈希值的一部分作为公钥ID。
27.如权利要求18所述的系统,其特征在于,所述上位机还包括:哈希模块,用于对电子邮件进行哈希运算,得到电子邮件哈希值,将哈希运算所采用的哈希算法对应的哈希算法标识与所述电子邮件哈希值拼接,得到待签名数据;
所述通信处理模块具体用于:向所述电子邮件签名装置下发包含所述哈希模块得到的待签名数据的签名指令。
CN201610329454.2A 2016-05-18 2016-05-18 电子邮件签名方法、装置及系统 Active CN105871557B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610329454.2A CN105871557B (zh) 2016-05-18 2016-05-18 电子邮件签名方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610329454.2A CN105871557B (zh) 2016-05-18 2016-05-18 电子邮件签名方法、装置及系统

Publications (2)

Publication Number Publication Date
CN105871557A true CN105871557A (zh) 2016-08-17
CN105871557B CN105871557B (zh) 2019-04-16

Family

ID=56635152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610329454.2A Active CN105871557B (zh) 2016-05-18 2016-05-18 电子邮件签名方法、装置及系统

Country Status (1)

Country Link
CN (1) CN105871557B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109462540A (zh) * 2018-10-12 2019-03-12 彩讯科技股份有限公司 邮件存证方法、装置和系统
CN109726573A (zh) * 2018-12-29 2019-05-07 飞天诚信科技股份有限公司 一种通过脚本装置实现签名的方法及脚本装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145230A (zh) * 2006-09-15 2008-03-19 汉王科技股份有限公司 加密签名板及复合加密签名的方法
CN101562521A (zh) * 2009-05-27 2009-10-21 四川长虹电器股份有限公司 一种密钥更新方法
CN101599836A (zh) * 2009-07-14 2009-12-09 北京坚石诚信科技有限公司 一种签名方法、签名设备和系统
CN103188246A (zh) * 2011-12-31 2013-07-03 上海格尔软件股份有限公司 安全电子邮件系统
CN104040555A (zh) * 2011-11-14 2014-09-10 威斯科数据安全国际有限公司 具有安全记录特征的智能卡读取器
CN104852806A (zh) * 2015-05-15 2015-08-19 飞天诚信科技股份有限公司 一种根据密钥类型进行签名的实现方法
US20160057091A1 (en) * 2011-07-06 2016-02-25 CRRC, Inc. Electronic communications management system and method

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145230A (zh) * 2006-09-15 2008-03-19 汉王科技股份有限公司 加密签名板及复合加密签名的方法
CN101562521A (zh) * 2009-05-27 2009-10-21 四川长虹电器股份有限公司 一种密钥更新方法
CN101599836A (zh) * 2009-07-14 2009-12-09 北京坚石诚信科技有限公司 一种签名方法、签名设备和系统
US20160057091A1 (en) * 2011-07-06 2016-02-25 CRRC, Inc. Electronic communications management system and method
CN104040555A (zh) * 2011-11-14 2014-09-10 威斯科数据安全国际有限公司 具有安全记录特征的智能卡读取器
CN103188246A (zh) * 2011-12-31 2013-07-03 上海格尔软件股份有限公司 安全电子邮件系统
CN104852806A (zh) * 2015-05-15 2015-08-19 飞天诚信科技股份有限公司 一种根据密钥类型进行签名的实现方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109462540A (zh) * 2018-10-12 2019-03-12 彩讯科技股份有限公司 邮件存证方法、装置和系统
CN109726573A (zh) * 2018-12-29 2019-05-07 飞天诚信科技股份有限公司 一种通过脚本装置实现签名的方法及脚本装置
CN109726573B (zh) * 2018-12-29 2021-01-15 飞天诚信科技股份有限公司 一种通过脚本装置实现签名的方法及脚本装置

Also Published As

Publication number Publication date
CN105871557B (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
CN103081399B (zh) 认证设备和系统
CN101183932B (zh) 一种无线应用服务的安全认证系统及其注册和登录方法
CN101527633B (zh) 智能密钥设备获取数字证书的方法
US6363479B1 (en) System and method for signing markup language data
US10904012B1 (en) Email authentication and data integrity validation
KR19990072671A (ko) 데이터네트워크에서양방향대화식통신장치를위한중앙증명서관리시스템
CN101977193A (zh) 安全下载证书的方法及系统
CN102761420B (zh) 一种安全认证方法
CN104836784B (zh) 一种信息处理方法、客户端和服务器
US7822689B2 (en) Maintaining privacy for transactions performable by a user device having a security module
CN105141420B (zh) 一种安全导入、签发证书的方法、设备及服务器
CN110362990A (zh) 应用安装的安全处理方法、装置及系统
CN109660330B (zh) 一种在区块链上进行身份认证的方法及系统
US20080082830A1 (en) Method and system for displaying trust level on a wireless communication device
CN107196761B (zh) 一种保护应用程序中的核心函数的方法
CN1650595B (zh) 用于提供安全消息签名状态和信任状态指示的系统和方法
CN109981287A (zh) 一种代码签名方法及其存储介质
CN110381075A (zh) 基于区块链的设备身份认证方法和装置
KR101253683B1 (ko) 연쇄 해시에 의한 전자서명 시스템 및 방법
CN108199834A (zh) 一种智能密钥设备工作的方法及装置
CN105871557A (zh) 电子邮件签名方法、装置及系统
US20030140010A1 (en) Method and apparatus for routing signed messages
CN112287312B (zh) 一种登录Windows操作系统的方法及系统
CN112073961B (zh) Sim卡的状态更新方法及装置、终端及可读存储介质
CN111737766B (zh) 一种在区块链中判断数字证书签名数据合法性的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant