首页 / 技术领域 / 素数 / 电子邮件签名方法、装置及存储介质

电子邮件签名方法、装置及存储介质

热词 邮件 素数 电子邮件 签名 电子 modd 生成 私钥 数列 合数
专利类型 发明授权 法律事件 公开; 实质审查; 授权; 权利转移;
专利有效性 有效专利 当前状态 授权
申请号 CN201910498033.6 申请日 2019-06-10
公开(公告)号 CN110098940B 公开(公告)日 2020-02-11
申请人 卓尔智联(武汉)研究院有限公司; 申请人类型 企业
发明人 蔡恒进; 吴良顺; 第一发明人 蔡恒进
权利人 卓尔智联(武汉)研究院有限公司 权利人类型 企业
当前权利人 贵州合赢科技服务有限公司 当前权利人类型 企业
省份 当前专利权人所在省份:湖北省 城市 当前专利权人所在城市:湖北省武汉市
具体地址 当前专利权人所在详细地址:湖北省武汉市黄陂区盘龙城经济开发区汉口北大道88号汉口北国际交易中心D1区7层 邮编 当前专利权人邮编:430000
主IPC国际分类 H04L9/32 所有IPC国际分类 H04L9/32H04L12/58
专利引用数量 1 专利被引用数量 0
专利权利要求数量 8 专利文献类型 B
专利代理机构 深圳市赛恩倍吉知识产权代理有限公司 专利代理人 饶智彬; 孙芬;
摘要 本 发明 提供一种 电子 邮件签名方法,包括:获取私钥对电子邮件电子签名,其中,生成私钥包括:基于斐波那契数列的模周期性 算法 生成两个素数,并利用所述两个素数根据RSA密钥对生成算法生成私钥和公钥。其中,生成所述素数的方法包括:获取预设的有理数k的集合;随机生成第一整数N;计算其中,为勒让德符号;遍历所述有理数k的集合,计算模判断所述模是否为零,若为零,则确定所述第一整数N为素数,并将所述第一整数N作为第一素数,并按照同样方法生成第二素数。本发明还提供一种电子邮件签名装置及存储介质。本发明使得电子邮件安全性得到提高。
权利要求

1.一种电子邮件签名方法,其特征在于,所述方法包括:
获取私钥,其中,所述私钥的生成方法包括:
基于斐波那契数列的模周期性算法生成两个素数p和q,包括:获取预设的有理数k的集合;随机生成第一整数N;计算 其中, 为勒让德符号;遍历所述有理数k的集合,计算模 判断所述模 是否为零,若为
零,则确定所述第一整数N为素数,并将所述第一整数N作为生成的第一个素数,并按照所述方法生成第二个素数;其中,所述预设的有理数k的集合生成方法包括:对于素数序列(Pn)=2,3,5,7,...(n=1,2,3,4,...),依次计算 其中T为F(x)(mod p)的周
期,F(x)为斐波那契数列的第x项,F(x)(mod p)表示所述斐波那契数列第x项F(x)模整数p的最小非负剩余, 为勒让德符号;确定Pn中n的多个取值区间,并计算每个取值区间中k值的分布;计算k值的出现频率,将频率超过预设值的k值集合作为所述预设的有理数k的取值集合;
计算所述两个素数的乘积n=p×q;
计算φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值;
随机生成第二整数e;
判断所述第二整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1;
若所述第二整数e满足1<e<φ(n),且gcd(φ(n),e)=1,则计算满足d·e≡1modφ(n)的d值;
将PK={e,n}作为公钥,将SK={d,n}作为私钥;
利用所述私钥对待发送的电子邮件进行电子签名。
2.如权利要求1所述的电子邮件签名方法,其特征在于,所述预设的有理数k的集合为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
3.如权利要求1所述的电子邮件签名方法,其特征在于,在随机生成第一整数N后,所述步骤还包括:
判断所述第一整数N是否为合数,若是合数,则舍弃所述第一整数N并重新生成整数N。
4.如权利要求1所述的电子邮件签名方法,其特征在于,在步骤“遍历所述有理数k的集合,计算模 中,通过快速斐波那契数列求模算法计算所述模
包括:
判断 是否为偶数;
若是偶数,则根据如下第一公式计算所述模值:
其中,
若非偶数,则根据如下第二公式计算所述模值:
其中,
5.一种电子邮件签名装置,其特征在于,所述电子邮件签名装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如下步骤:
获取私钥,其中,所述私钥的生成方法包括:基于斐波那契数列的模周期性算法生成两个素数p和q;计算所述两个素数的乘积n=p×q;计算φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值;随机生成第二整数e;判断所述第二整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1;若所述第二整数e满足1<e<φ(n),且gcd(φ(n),e)=1,则计算满足d·e≡1 modφ(n)的d值;将PK={e,n}作为公钥,将SK={d,n}作为私钥;其中,基于斐波那契数列的模周期性算法生成两个素数p和q,包括:获取预设的有理数k的集合;随机生成第一整数N;
计算 其中, 为勒让德符号;遍历所述有理数k的集合,计算模
判断所述模 是否为零,若为零,则确定
所述第一整数N为素数,并将所述第一整数N作为生成的第一个素数,并按照所述方法生成第二个素数;其中,生成所述预设的有理数k的集合包括:对于素数序列(Pn)=2,3,5,7,...(n=1,2,3,4,...),依次计算系数 其中T为F(x)(mod p)的周期,F(x)为斐波那契数列的第x项,F(x)(mod p)表示所述斐波那契数列第x项F(x)模整数p的最小非负剩余, 为勒让德符号;确定Pn中n的多个取值区间,并计算每个取值区间中k值的分布;确定计算k值的出现频率,将频率超过预设值的k值集合作为所述预设的有理数k的取值集合;
利用所述私钥对待发送的电子邮件进行电子签名。
6.如权利要 求5所述的电 子邮件 签名装置 ,其特征在于 ,在计算 模时 ,通过快 速斐波 那契数 列求模 算法计 算所述 模
包括:
判断 是否为偶数;
若是偶数,则根据如下第一公式计算所述模值:
其中,
若非偶数,则根据如下第二公式计算所述模值:
其中,
7.如权利要求5所述的电子邮件签名装置,其特征在于,所述预设的有理数k的集合为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的电子邮件签名方法。

说明书全文

电子邮件签名方法、装置及存储介质

技术领域

[0001] 本发明涉及密码学技术领域,具体涉及一种电子邮件签名方法、电子邮件签名装置及计算机可读存储介质。

背景技术

[0002] 电子邮件我们日常生活和工作沟通中必不可少的工具。为了提高电子邮件内容传输过程中的安全性,经常使用密钥进行数字签名。数字签名是使用非对称加密领域的技术实现的用于鉴别数字信息的方法。而如何使生成的密钥更可靠,且生成速度更快速从而不断提高加密数据的安全性一直是本领域中不断追求的目标。

发明内容

[0003] 鉴于以上问题,本发明提出一种电子邮件签名方法、装置及存储介质,能够快速、可靠的生成私钥,并利用所述私钥对电子邮件进行电子签名,进一步提高电子邮件的安全性。
[0004] 本申请的第一方面提供一种电子邮件签名方法,所述方法包括:
[0005] 获取私钥,其中,所述私钥的生成方法包括:基于斐波那契数列的模周期性算法生成两个素数p和q;计算所述两个素数的乘积n=p×q;计算φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值;随机生成第二整数e;判断所述第二整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1;若所述第二整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1,则计算满足d·e=1modφ(n)的d值;采用所述(N,e)作为公钥,采用(N,d)作为私钥;其中,基于斐波那契数列的模周期性算法生成两个素数p和q,包括:获取预设的有理数k的集合;随机生成第一整数N;计算 其中, 为勒让德符号;遍历所述有理数k的集合,计算模判断所述模 是否为零,若为零,则确定所述第一整数N为素数,并将所述第一整数N作为生成的第一素数;并按照所述方法生成第二素数;
[0006] 利用所述私钥对待发送的电子邮件进行电子签名。
[0007] 优选的,所述预设的有理数k的集合生成方法包括:
[0008] 对于素数序列(Pn)=2,3,5,7,...(n=1,2,3,4,...),依次计算系数其中T为F(x)(mod p)的周期,F(x)为斐波那契数列的第x项,F(x)(mod p)表示所述斐波那契数列第x项F(x)模整数p的最小非负剩余; 为勒让德符号;
[0009] 确定Pn中n的多个取值区间,并计算每个取值区间中k值的分布;
[0010] 确定计算k值的出现频率,将频率超过预设值的k值集合作为所述预设的有理数k的取值集合。
[0011] 优选的,所述预设的有理数k的集合为:{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
[0012] 优选的,在随机生成第一整数N后,所述步骤还包括:判断所述第一整数N是否为合数,若是合数,则舍弃所述第一整数N并重新生成整数N。
[0013] 优选的,在步骤“遍历所述有理数k的集合,计算模 中,通过快速斐波那契数列求模算法计算所述模 包括:
[0014] 判断 是否为偶数;
[0015] 若是偶数,则根据如下第一公式计算所述模值:
[0016]
[0017] 其中,
[0018] 若非偶数,则根据如下第二公式计算所述模值:
[0019]
[0020] 其中,
[0021] 本申请的第二方面提供一种电子邮件签名装置,所述电子邮件签名装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如下步骤:
[0022] 获取私钥,其中,所述私钥的生成方法包括:基于斐波那契数列的模周期性算法生成两个素数p和q;计算所述两个素数的乘积n=p×q;计算φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值;随机生成第二整数e;判断所述第二整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1;若所述第二整数e满足1<e<φ(n),且gcd(φ(n),e)=1,则计算满足d·e=1modφ(n)的d值;将PK={e,n}作为公钥,将SK={d,n}作为私钥;其中,基于斐波那契数列的模周期性算法生成两个素数p和q,包括:获取预设的有理数k的集合;随机生成第一整数N;计算 其中, 为勒让德符号;遍历所述有理数k的集合,计算模判断所述模 是否为零,若为零,则确定所
述第一整数N为素数,并将所述第一整数N作为生成的第一个素数,并按照所述方法生成第二个素数;
[0023] 利用所述私钥对待发送的电子邮件进行电子签名。
[0024] 本发明第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述的电子邮件签名方法。
[0025] 本发明中在对待发送的电子邮件进行电子签名时,使用的密钥是通过基于斐波那契数列的模周期性算法生成的两个素数p和q生成的,使得私钥的可靠性更好,且生成速度更加快速,使得电子邮件的安全性得到进一步提高。附图说明
[0026] 图1是本发明一实施方式提供的密钥生成方法流程图
[0027] 图2是图1中密钥生成方法中生成素数的方法流程图。
[0028] 图3是本发明一实施方式提供的快速斐波那契数列求模方法流程图。
[0029] 图4是本发明一实施方式提供的利用图1方法生成的密钥进行电子邮件签名方法的流程图。
[0030] 图5是本发明一实施方式提供的电子邮件签名系统的功能模示意图。
[0031] 图6是本发明一实施方式提供的电子邮件签名装置硬件架构示意图。

具体实施方式

[0032] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0033] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
[0035] 请参阅图1,为本发明一个实施方式提供的密钥生成方法流程图。通过所述密钥生成方法生成的公钥和私钥可以用于对电子邮件进行电子签名。电子签名的具体方法将在后面结合图4进行说明。
[0036] 在本实施例中,所述密钥生成方法可以应用于电子邮件签名装置中,所述电子邮件签名装置可以是但不限于邮件服务器、个人计算机、智能手机等电子设备。例如,当所述计算机装置是邮件服务器时,所述邮件服务器利用所述密钥生成方法生成公钥和私钥后,在移动终端请求生成电子邮箱时,邮件服务器向所述移动终端发送所述电子邮箱对应的公钥和私钥,并公开所述公钥,而所述私钥由电子邮箱的所有者保存。当使用者通过所述电子邮箱发送邮件时,可以通过所述私钥对电子邮件进行签名。
[0037] 对于需要生成密钥的电子邮件签名装置,可以直接在电子邮件签名装置上集成本发明的方法所提供的用于生成密钥的功能,或者以软件开发工具包(Software Development Kit,SDK)的形式运行在电子邮件签名装置上。
[0038] 如图1所示,所述密钥生成方法包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
[0039] 步骤S11、基于斐波那契数列的模周期性算法生成两个素数p和q。
[0040] 所述基于斐波那契数列在数学上以递归的方式定义:F(0)=0,F(1)=1,F(x)=F(x-1)+F(x-2),x≥2。即,所述斐波那契数列的形式为:0,1,1,2,3,5,8,…。设F(x)为斐波那契数列的第x项(x∈N*),F(x)(mod d)表示所述斐波那契数列第x项F(x)模整数d的最小非负剩余。例如,当d=2时,{F(x)(mod2)}={0,1,1,0,1,1,...}。如果对于任意x,都有F(x+T)(modd)=F(x)(modd),则称F(x)模整数d的周期为T。因为对于任意整数d,都有F(0)(modd)=0(modd)=0,F(1)(modd)=1(modd)=1|。所以,F(T)(modd)=0,F(T+1)(modd)=1。如本领域技术人员所周知,对于一个素数p来说, 其中 为勒让德符号,也就是说, 被素数p整除。从某种意义上说,周期性即整除性,因为F(0)=0,所以F(0)(modp)=0,根据周期性的定义,有F(T)(modp)=0,也就是说F(T)被素数P整除,即p∣F(T)。由此可见,周期T与 存在关联关系。
[0041] 有基于此,设定F(x)(modp)的周期T为:
[0042]
[0043] 其中,k是有特定分布的有理数。在优选实施方式中,取k值集合为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
[0044] 具体地,确定所述k值集合取值的方法如下:
[0045] (1)对于素数序列(Pn)=2,3,5,7,...(n=1,2,3,4,...),依次计算系数其中n的范围为0~100000时,部分结果如下表1所示。
[0046] 表1模素数周期的系数k值
[0047] p T k2 3 1
3 8 2
5 20 5
7 16 2
11 10 1
13 28 2
17 36 2
19 18 1
23 48 2
29 14 1/2
… … …
[0048] 取第n个素数p=pn,当n的范围取0~100000,100000~110000,1000000~1010000时,分别记为第1、2、3次测试。对于每一个素数p=pn,均计算
[0049] (2)确定k值在上述区间内的分布,其中,出现频率在0.1%以上的k值如下表2所示:
[0050] 表2模素数周期系数k值分布表
[0051]
[0052] (3)计算k值的出现频率,将频率超过预设值(例如99%)的k值集合作为所述k值的取值集合。
[0053] 由表1、2可得,n在不同区间内,即不同位置的素数,k的分布均呈现一定的稳定性。在3次测试中,k的集合为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}出现的频率分别为99.07%、99.06%、99.17%。
[0054] 可见,k的集合为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}出现的频率超过99%。因此,在本实施方式中,所述k值集合的取值为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
[0055] 基于以上描述,本发明中基于斐波那契数列的模周期性算法生成两个素数p和q的具体方法将在下面结合图2进行详细说明。如图2所示,所述步骤S1中基于斐波那契数列的模周期性算法生成两个素数的方法包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
[0056] 步骤S201、获取预设的有理数k的集合。
[0057] 其中,所述有理数k的集合为如前所述的k值的集合为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
[0058] 步骤S202、随机生成整数N。
[0059] 本发明优选实施方式中,所述随机生成的整数N为100位以上的十进制数,即所述整数N为大整数。
[0060] 步骤S203、判断所述整数N是否为合数,若是合数,则舍弃所述整数N并返回步骤S202,重新生成整数N;若所述整数N不是合数,则执行步骤S204。
[0061] 在本发明一个实施方式中,判断所述整数N是否为合数的方法包括:
[0062] 判断所述随机生成的整数N的最后一位是否为1,3,7,9中的任一个;若所述整数N的最后一位为1,3,7,9中的任一个,则确定所述整数N不是合数,执行所述步骤S204;若所述整数N的最后一位不是1,3,7,9中的任一个,则确定所述整数N为合数,那么舍弃所述整数N并执行步骤S202,重新生成整数N。
[0063] 在本发明另一个实施方式中,判断所述整数N是否为合数的方法包括:
[0064] 判断所述整数N是否能够被2或5整除,如果能够被2或者5整除,则确定所述整数N为合数,那么舍弃所述整数N并重新生成整数N,如果所述整数N不能不2或者5整除,则执行步骤S204。可以理解,所述数值并不仅限于2和5,在其他实施方式中,也可以是其他能够通过整除N来验证所述整数N是否为合数的数值。
[0065] 所述步骤203中通过判断所述整数N是否为合数,并在确定整数N是合数时直接舍弃,先排除非素数的数值,这一步骤取得的有益效果是可以对整数N进行初步筛选,排除非素数的数值,减小后续运算量,减小运算复杂度,从而提高运算效率。
[0066] 在本发明一些其他实施例中,所述步骤S203也可以省略,也就是说,也可以不进行所述整数N的初步筛选判断。
[0067] 步骤S204、计算 其中, 为勒让德符号。
[0068] 勒让德符号可以计算当p为素数的情况的二次剩余判别问题。上述勒让德符号表示的意义为:若存在整数x,使得x2≡N(mod5),那么就记 否则就记当N被5整除,即N|5时,
[0069] 步骤S205、遍历所述有理数k的集合,计算模
[0070] 在本发明一较佳实施例中,计算所述模 可以通过快速斐波那契数列求模方法实现。所述快速斐波那契数列求模方法将在后面结合图3进行进一步的详细介绍,这里先不做详述。
[0071] 步骤S206、判断所述模 是否为零,若是,则执行步骤S207,若否,则返回步骤S202。
[0072] 因为对于素数P来说,F(T)(modp)=0,而 据此可得,如果所述模为0,则说明所述整数N为素数。如果不为0,则说明所述整数N不是素数,若所述随机生成的整数N不是素数,则返回步骤S202重新生成整数N。
[0073] 步骤S207、确定所述整数N为素数,并输出所述素数N。
[0074] 重复所述步骤S201-S207,生成第二个素数q。
[0075] 步骤S12、计算所述两个素数的乘积n=p*q。
[0076] 步骤S13、计算φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值。
[0077] 步骤S14、随机生成整数e。
[0078] 步骤S15、判断所述整数e是否大于1且小于φ(n),且所述整数e与φ(n)互质。即,判断所述整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1,若满足,则执行步骤S16,若不满足,则返回步骤S14。
[0079] 步骤S16、计算e在模φ(n)下的乘法逆元d。即,计算满足d·e=1modφ(n)的d值。
[0080] 步骤S17、将PK={e,n}作为公钥,将SK={d,n}作为私钥。
[0081] 步骤S18、将所述公钥和私钥作为一对密钥对进行输出。
[0082] 本实施方式中根据RSA密钥对生成算法生成私钥和公钥时,使用的两个素数是基于斐波那契数列的模周期性算法生成的,所述生成素数的方法更可靠和快速,使得私钥的可靠性也更高。
[0083] 如图3所示,为上述步骤205中所述的快速斐波那契数列求模方法。所述方法包括如下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
[0084] 步骤S301、判断 是否为偶数,若是,则执行步骤S302,若否,则执行步骤S303;
[0085] 步骤S302、根据第一公式计算所述模值。其中,所述第一公式为:
[0086] 其 中 ,
[0087] 步骤S303、根据第二公式计算所述模值。其中,所述第二公式为:
[0088]
[0089] 其中,
[0090] 其中,所述第一公式和所述第二公式是根据矩阵幂算法(Maxtrix exponentiation)得到的,过程如下:
[0091]
[0092] 令(式1)中参数n=2k,则:
[0093]
[0094] 因此,有:
[0095] F(2k+1)=F(k+1)2+F(k)2
[0096] F(2k)=F(k)[F(k+1)+F(k-1)]
[0097] =F(k)[F(k+1)+(F(k+1)-F(k))]
[0098] =F(k)[2F(k+1)-F(k)]
[0099] 即,我们可以得到如下两个方程:
[0100] F(2k)=F(k)[2F(k+1)-F(k)]   (式2)
[0101] F(2k+1)=F(k+1)2+F(k)2  (式3)
[0102] 我们称(式2)和(式3)为快速加倍算法。快速加倍算法可用于求斐波那契数列第n项模整数d的结果:
[0103] F(2k)(modd)=[F(k)[2F(k+1)-F(k)]](modd)
[0104] =[F(k)(modd)*[2F(k+1)-F(k)](modd)](modd)   (式4)
[0105] F(2k+1)(modd)=[F(k+1)2+F(k)2](modd)
[0106] =[F(k+1)2(modd)+F(k)2(modd)](modd)   (式5)
[0107] 根据(式4)和(式5),得到所述第一公式和所述第二公式。
[0108] 请参阅图4,为本发明一实施例提供的利用图1至图3所述方法生成的密钥进行电子邮件签名的方法流程图。如图4所示,所述密钥生成方法包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
[0109] 步骤S401、当接收到邮件发送请求时,获取待发送的电子邮件,并对所述电子邮件内容采用散列函数生成摘要信息。
[0110] 在一实施方式中,对所述电子邮件内容采用MD5消息摘要算法生成摘要信息。MD5消息摘要算法为本领域现有技术,在此不再赘述。
[0111] 步骤S402、获取发送所述电子邮件的电子邮箱对应的私钥,利用所述私钥对上述摘要信息电子签名。其中,所述私钥是通过图1至图3所述方法生成的私钥。
[0112] 在一实施方式中,设m为需要加密的摘要信息,c为加密后的摘要密文。加密时,先将明文比特串进行分组,让每个明文分组的十进制数mi<n,记ci为对应的mi加密后的密文,则加密算法为
[0113] 利用所述私钥对电子邮件进行电子签名后,将所述电子邮件发送至邮件接收方的电子邮件。邮件接收方采用所述电子邮箱对应的公钥解密所述摘要信息。解密算法为:0≤mi≤n,0≤ci<n, 接收方在利用相同的散列函数(如MD5)对收到的原文产生一个摘要信息,并与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此所述电子签名能够验证信息的完整性。
[0114] 在本发明一些实施方式中,在所述步骤S401之前,所述电子邮件签名方法还可以包括如下步骤:
[0115] 判断所述待发送邮件的等级是否达到预设级别;
[0116] 当所述待发送邮件的等级达到所述预设级别时,执行所述步骤S401-S402,利用本发明所述的密钥生成方法生成的私钥对待发送电子邮件进行电子签名。
[0117] 进一步地,判断所述待发送邮件的等级是否达到预设级别的方法可以包括如下一种或多种:
[0118] (1)根据待发送电子邮件的等级标识信息确定所述电子邮件的等级是否达到预设级别,例如,电子邮箱的功能选项中包括一般、机密、极机密等代表邮件等级信息的选项,当用户选择机密或极机密等预设选项时,确定所述邮件等级达到所述预设级别;
[0119] (2)根据收件人和/寄件人身份信息确定所述电子邮件的等级是否达到预设级别,所述身份信息包括但不限于收件人/寄件人的职位级别、所属部信息等,例如,当收件人和/或寄件人的职位级别为董事长等较高级别,或者收件人/寄件人所属的部门为涉及企业机密技术的部门,那么属于这个部门的所有人员对应较高级别,当收件人/寄件人身份达到预设级别时需要使用本发明的电子签名方法对邮件进行电子签名;
[0120] (3)根据电子邮件中的关键字确定所述电子邮件的等级是否达到预设级别,例如,计算机装置中预先存储有关键字库,当邮件中存在与关键字库中的关键字匹配的文字时,确定所述电子邮件达到预设级别。
[0121] 通过如前所述的电子邮件签名方法,在对待发送的电子邮件进行电子签名时,使用的密钥是通过基于斐波那契数列的模周期性算法生成的两个素数p和q生成的,使得私钥的可靠性更好,且生成速度更加快速,使得电子邮件的安全性得到进一步提高。
[0122] 上述图1至图4详细介绍了本发明的电子邮件签名方法,下面结合图5和图6,对实现所述电子邮件签名方法的软件系统的功能模块以及实现所述电子邮件签名方法的硬件装置架构进行介绍。
[0123] 应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
[0124] 请参阅图5,为本发明一实施方式提供的电子邮件签名系统的功能模块结构图。
[0125] 在一些实施方式中,所述电子邮件签名系统100运行于电子邮件签名装置中。所述电子邮件签名系统100可以包括多个由程序代码段所组成的功能模块。所述电子邮件签名系统100中的各个程序段的程序代码可以存储于电子邮件签名装置的存储器中,并由电子邮件签名装置中的至少一个处理器所执行,以实现如前所述的电子邮件签名功能。
[0126] 本实施方式中,电子邮件签名系统100根据其所执行的功能,可以被划分为多个功能模块。所述电子邮件签名系统100的功能模块可以包括:素数生成模块101、计算模块102,整数生成模块103、密钥生成模块104、签名模块105。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。各个功能模块的功能将在下面的实施例中进行详述。
[0127] 所述素数生成模块101用于基于斐波那契数列的模周期性算法生成两个素数p和q。
[0128] 具体地,所述素数生成模块101生成所述两个素数的步骤包括:
[0129] A1、获取预设的有理数k的集合,其中,所述有理数k的集合为如前所述的集为{1,2,4/3,8/7,10/9,12/11,14/13,22/21,18/17,20/19,28/27}。
[0130] A2、随机生成整数N。
[0131] 本发明优选实施方式中,所述随机生成的整数N为100位以上的十进制数,即所述整数N为大整数。
[0132] A3、判断所述整数N是否为合数,若是合数,则舍弃所述整数N并返回步骤A2,重新生成整数N;若所述整数N不是合数,则执行步骤A4。
[0133] A4、计算 其中, 为勒让德符号。
[0134] 勒让德符号可以计算当p为素数的情况的二次剩余判别问题。上述勒让德符号表示的意义为:若存在整数x,使得x2≡N(mod5),那么就记 否则就记当N被5整除,即N|5时,
[0135] A5、遍历所述有理数k的集合,计算模
[0136] 在本发明一较佳实施例中,计算所述模 可以通过快速斐波那契数列求模方法实现,具体包括:
[0137] 判断 是否为偶数;
[0138] 若是偶数,根据如下第一公式计算所述模值:
[0139]
[0140] 其中,
[0141] 若不是偶数,根据如下第二公式计算所述模值:
[0142]
[0143] 其中,
[0144] A6、判断所述模 是否为0,若是,则执行步骤A7,若否,则返回步骤A2。
[0145] A7、确定所述整数N为素数,并输出所述素数N。
[0146] 所述计算模块102用于计算所述两个素数的乘积n=p×q,并计算φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值。
[0147] 所述整数生成模块103用于随机生成整数e,并判断所述整数e是否满足1<e<φ(n),且gcd(φ(n),e)=1,即,判断所述整数e是否大于1且小于φ(n),且所述整数e与φ(n)互质,若不满足,则重新生成整数e。
[0148] 所述计算模块102还用于在整数生成模块103确定所述整数e满足1<e<φ(n),且gcd(φ(n),e)=1时,计算整数e在模φ(n)下的乘法逆元d,即,计算满足d·e≡1modφ(n)的d值。
[0149] 所述密钥生成模块104根据所述(N,e)生成公钥,根据(N,d)生成私钥。
[0150] 所述签名模块105用于获取所述私钥并利用所述私钥对待发送的电子邮件进行电子签名。
[0151] 图5为本发明一实施方式提供的电子邮件签名装置的功能模块示意图。所述电子邮件签名装置200包括存储器201、处理器202以及存储在所述存储器201中并可在所述处理器202上运行的计算机程序203,例如电子邮件签名程序。所述处理器202执行所述计算机程序203时实现上述方法实施例中电子邮件签名方法的步骤S11-S18、步骤S201-S207、S301-S303。或者,所述处理器202执行所述计算机程序203实现上述装置实施例中各模块/单元的功能,例如图4中的模块101-105。
[0152] 本领域技术人员可以理解,所述示意图5仅仅是电子邮件签名装置200的示例,并不构成对电子邮件签名装置200的限定,电子邮件签名装置200可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子邮件签名装置200还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与所述至少一个处理器202逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子邮件签名装置200还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
[0153] 在一些实施例中,所称处理器202可以是中央处理单元(Central Processing Unit,CPU),还可以包括其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0154] 在一些实施例中,所述存储器201可用于存储所述计算机程序203和/或模块/单元,所述处理器202通过运行或执行存储在所述存储器201内的计算机程序和/或模块/单元,以及调用存储在存储器201内的数据,实现所述计算机装置200的各种功能。存储器201可以包括包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
[0155] 所述电子邮件签名装置200集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0156] 对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。计算机装置权利要求中陈述的多个单元或计算机装置也可以由同一个单元或计算机装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
[0157] 最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
QQ群二维码
意见反馈