用于数据安全的系统、方法和计算机程序产品与流程

文档序号:31709985发布日期:2022-10-04 17:39阅读:264来源:国知局
用于数据安全的系统、方法和计算机程序产品与流程

1.本公开涉及数据安全,且在一些非限制性实施例或方面中涉及具有一次性令牌解密的可扩展数据安全服务。


背景技术:

2.硬件安全模块(hsm)为一种物理计算装置,其保护并管理数字密钥,执行数字签名的加密和解密函数、强认证和其它密码函数。硬件安全模块包含用于执行密码运算、嵌入具有多种物理安全措施的封装中的一个或多个安全的密码处理器芯片,所述密码处理器芯片赋予所述硬件安全模块一定程度的防篡改性。
3.数据安全服务可使用hsm来保护交易和文件。然而,数据安全服务使用hsm来保护交易和文件可能相对昂贵且难以扩展和维护。


技术实现要素:

4.因此,提供了用于数据安全的改进的系统、装置、产品、设备和/或方法。
5.根据一些非限制性实施例或方面,提供了方法、系统和计算机程序产品,所述方法、系统和计算机程序产品:在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
),其中所述多个密码(c1、c2、
…cn
)包括利用密钥加密密钥(kek)进行加密的多个秘密密钥(sk1、sk2、

skn),并且其中所述多个秘密密钥(sk1、sk2、

skn)对应于所述多个公钥(pk1、pk2、

pkn);接收数据组块(mi)用于加密;基于散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的公钥(pki)和随机数(r)而生成数据加密密钥(dek);利用所述dek对所述数据组块(mi)进行加密,以生成已加密数据组块(cmi);生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的密码(ci)和密钥封装数据的报头(hdr);在数据库中存储包括所述报头(hdr)和所述已加密数据组块(c
mi
)的密文(ct);接收对所述密文(ct)进行解密的请求;响应于接收到对所述密文(ct)进行解密的请求,向硬件安全模块(hsm)提供所述密码(ci);从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成所述已加密数据组块(c
mi
)的所述dek;基于从所述hsm接收到的所述秘密密钥(ski)和所述密钥封装数据而导出用于生成所述已加密数据组块(c
mi
)的所述dek;并且提供所导出dek用于对所述已加密数据组块(c
mi
)进行解密,以获得所述数据组块(mi)。
6.在以下编号条款中阐述其它实施例或方面:
7.条款1.一种计算机实施的方法,包括:利用至少一个处理器在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
),其中所述多个密码(c1、c2、
…cn
)包括利用密钥加密密钥(kek)进行加密的多个秘密密钥(sk1、sk2、

skn),并且其中所述多个秘密密钥(sk1、sk2、

skn)对应于所述多个公钥(pk1、pk2、

pkn);利用至少一个处理器接收数据组块(mi)用于加密;利用至少一个处理器基于散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的公钥(pki)和随机数(r)而生成数据加密密钥(dek);利用至少一个处理器利用所述dek对所述数据组块(mi)进行加密,以生成已加密数据组块(c
mi
);利用至少一个处理器生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的密码(ci)和密钥封装数据的报头(hdr);利用至少一个处理器在数据库中存储包括所述报头(hdr)和所述已加密数据组块(c
mi
)的密文(ct);利用至少一个处理器接收对所述密文(ct)进行解密的请求;响应于接收到对所述密文(ct)进行解密的请求,利用至少一个处理器向硬件安全模块(hsm)提供所述密码(ci);利用至少一个处理器从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成所述已加密数据组块(c
mi
)的所述dek;利用至少一个处理器基于从所述hsm接收到的所述秘密密钥(ski)和所述密钥封装数据而导出用于生成所述已加密数据组块(c
mi
)的所述dek;以及利用至少一个处理器提供所导出dek用于对所述已加密数据组块(c
mi
)进行解密,以获得所述数据组块(mi)。
8.条款2.根据条款1所述的计算机实施的方法,进一步包括:利用至少一个处理器从所述hsm接收多个随机密钥(r1、r2、
…rn
);利用至少一个处理器基于发生器函数(g)和所述多个随机密钥(r1、r2、
…rn
)而生成所述多个公钥(pk1、pk2、

pkn);利用至少一个处理器基于所述散列函数(h)和所述多个公钥(pk1、pk2、

pkn)而生成对应于所述多个公钥(pk1、pk2、

pkn)的所述多个秘密密钥(sk1、sk2、

skn);利用至少一个处理器向所述hsm提供所述多个秘密密钥(sk1、sk2、

skn);以及利用至少一个处理器从所述hsm接收利用所述kek进行加密的所述多个秘密密钥(sk1、sk2、

skn)作为所述多个密码(c1、c2、
…cn
)。
9.条款3.根据条款1或2所述的计算机实施的方法,进一步包括:在于所述存储器中存储与所述多个公钥(pk1、pk2、

pkn)相关联的所述多个密码(c1、c2、
…cn
)之后,利用至少一个处理器删除所述多个秘密密钥(sk1、sk2、

skn)和所述多个随机密钥(r1、r2、
…rn
)。
10.条款4.根据条款1至3中任一项所述的计算机实施的方法,其中所述密钥封装数据包括所述公钥的散列h(pki)、所述密码(ci)、所述随机数的发生器函数gr,且对应公钥的散列自乘为所述dek的散列的幂h(pki)
h(dek)

11.条款5.根据条款1至4中任一项所述的计算机实施的方法,进一步包括:利用至少一个处理器接收另外的数据组块(mj)用于加密;利用至少一个处理器基于所述散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)和另外的随机数(r)而生成另外的数据加密密钥(dek');利用至少一个处理器利用所述另外的dek'对所述另外的数据组块(mj)进行加密,以生成另外的已加密数据组块(c
mj
);利用至少一个处理器生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述另外的公钥(pkj)的另外的密码(cj)和另外的密钥封装数据的另外的报头(hdr');利用至少一个处理器在所述数据库中存储包括所述另外的报头(hdr')和所述另外的已加密数据组块(c
mj
)的另外的密文(ct');利用至少一个处理器接收对所述另外的密文(ct')进行解密的请求;响应于接收到对所述另外的密文(ct')进行解密的请求,利用至少一个处理器向所述hsm提供所述另外的密码(cj);利用至少一个处理器从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述另外的公钥(pkj)的另外的秘密密钥(skj),所述另外的公钥用以生成用于生成所述另外的已加密数据组块(c
mj
)的所述另外的dek';利用至少一个处理器基于从所述hsm接收到的所述另外的秘密密钥(skj)和所述另外
的密钥封装数据而导出用于生成所述另外的已加密数据组块(c
mj
)的所述另外的dek';以及利用至少一个处理器提供另外的所导出dek用于对所述另外的已加密数据组块(c
mj
)进行解密,以获得所述另外的数据组块(mi)。
12.条款6.根据条款1至5中任一项所述的计算机实施的方法,进一步包括:利用至少一个处理器基于所述秘密密钥(ski)和所述另外的秘密密钥(skj)而生成令牌;利用至少一个处理器基于所述令牌和所述密钥封装数据而导出所述dek;以及利用至少一个处理器基于所述令牌和所述另外的密钥封装数据而导出所述另外的dek'。
13.条款7.一种计算系统,包括:一个或多个处理器,其被编程和/或配置成:在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
),其中所述多个密码(c1、c2、
…cn
)包括利用密钥加密密钥(kek)进行加密的多个秘密密钥(sk1、sk2、

skn),并且其中所述多个秘密密钥(sk1、sk2、

skn)对应于所述多个公钥(pk1、pk2、

pkn);接收数据组块(mi)用于加密;基于散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的公钥(pki)和随机数(r)而生成数据加密密钥(dek);利用所述dek对所述数据组块(mi)进行加密,以生成已加密数据组块(c
mi
);生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的密码(ci)和密钥封装数据的报头(hdr);在数据库中存储包括所述报头(hdr)和所述已加密数据组块(c
mi
)的密文(ct);接收对所述密文(ct)进行解密的请求;响应于接收到对所述密文(ct)进行解密的请求,向硬件安全模块(hsm)提供所述密码(ci);从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成所述已加密数据组块(c
mi
)的所述dek;基于从所述hsm接收到的所述秘密密钥(ski)和所述密钥封装数据而导出用于生成所述已加密数据组块(c
mi
)的所述dek;并且提供所导出dek用于对所述已加密数据组块(c
mi
)进行解密,以获得所述数据组块(mi)。
14.条款8.根据条款7中任一项所述的系统,其中所述一个或多个处理器进一步被编程和/或配置成:从所述hsm接收多个随机密钥(r1、r2、
…rn
);基于发生器函数(g)和所述多个随机密钥(r1、r2、
…rn
)而生成所述多个公钥(pk1、pk2、

pkn);基于所述散列函数(h)和所述多个公钥(pk1、pk2、

pkn)而生成对应于所述多个公钥(pk1、pk2、

pkn)的所述多个秘密密钥(sk1、sk2、

skn);向所述hsm提供所述多个秘密密钥(sk1、sk2、

skn);并且从所述hsm接收利用所述kek进行加密的所述多个秘密密钥(sk1、sk2、

skn)作为所述多个密码(c1、c2、
…cn
)。
15.条款9.根据条款7或8所述的系统,其中所述一个或多个处理器进一步被编程和/或配置成:在于所述存储器中存储与所述多个公钥(pk1、pk2、

pkn)相关联的所述多个密码(c1、c2、
…cn
)之后,删除所述多个秘密密钥(sk1、sk2、

skn)和所述多个随机密钥(r1、r2、
…rn
)。
16.条款10.根据条款7至9中任一项所述的系统,其中所述密钥封装数据包括所述公钥的散列h(pki)、所述密码(ci)、所述随机数的发生器函数gr,且对应公钥的散列自乘为所述dek的散列的幂h(pki)
h(dek)

17.条款11.根据条款7至10中任一项所述的系统,其中所述一个或多个处理器进一步被编程和/或配置成:接收另外的数据组块(mj)用于加密;基于所述散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)和另外的随机数(r)而生成另外的数据加密密
钥(dek');利用所述另外的dek'对所述另外的数据组块(mj)进行加密,以生成另外的已加密数据组块(c
mj
);生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述另外的公钥(pkj)的另外的密码(cj)和另外的密钥封装数据的另外的报头(hdr');在所述数据库中存储包括所述另外的报头(hdr')和所述另外的已加密数据组块(c
mj
)的另外的密文(ct');接收对所述另外的密文(ct')进行解密的请求;响应于接收到对所述另外的密文(ct')进行解密的请求,向所述hsm提供所述另外的密码(cj);从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述另外的公钥(pkj)的另外的秘密密钥(skj),所述另外的公钥用以生成用于生成所述另外的已加密数据组块(c
mj
)的所述另外的dek';基于从所述hsm接收到的所述另外的秘密密钥(skj)和所述另外的密钥封装数据而导出用于生成所述另外的已加密数据组块(c
mj
)的所述另外的dek';并且提供另外的所导出dek用于对所述另外的已加密数据组块(c
mj
)进行解密,以获得所述另外的数据组块(m
ji
)。
18.条款12.根据条款7至11中任一项所述的系统,进一步包括:基于所述秘密密钥(ski)和所述另外的秘密密钥(skj)而生成令牌;基于所述令牌和所述密钥封装数据而导出所述dek;并且基于所述令牌和所述另外的密钥封装数据而导出所述另外的dek'。
19.条款13.一种计算机程序产品,所述计算机程序产品包括包括程序指令的至少一个非瞬态计算机可读介质,所述程序指令在由至少一个处理器执行时使所述至少一个处理器:在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
),其中所述多个密码(c1、c2、
…cn
)包括利用密钥加密密钥(kek)进行加密的多个秘密密钥(sk1、sk2、

skn),并且其中所述多个秘密密钥(sk1、sk2、

skn)对应于所述多个公钥(pk1、pk2、

pkn);接收数据组块(mi)用于加密;基于散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的公钥(pki)和随机数(r)而生成数据加密密钥(dek);利用所述dek对所述数据组块(mi)进行加密,以生成已加密数据组块(c
mi
);生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的密码(ci)和密钥封装数据的报头(hdr);在数据库中存储包括所述报头(hdr)和所述已加密数据组块(c
mi
)的密文(ct);接收对所述密文(ct)进行解密的请求;响应于接收到对所述密文(ct)进行解密的请求,向硬件安全模块(hsm)提供所述密码(ci);从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成所述已加密数据组块(c
mi
)的所述dek;基于从所述hsm接收到的所述秘密密钥(ski)和所述密钥封装数据而导出用于生成所述已加密数据组块(c
mi
)的所述dek;并且提供所导出dek用于对所述已加密数据组块(c
mi
)进行解密,以获得所述数据组块(mi)。
20.条款14.根据条款13所述的计算机程序产品,其中所述指令进一步使所述至少一个处理器:从所述hsm接收多个随机密钥(r1、r2、
…rn
);基于发生器函数(g)和所述多个随机密钥(r1、r2、
…rn
)而生成所述多个公钥(pk1、pk2、

pkn);基于所述散列函数(h)和所述多个公钥(pk1、pk2、

pkn)而生成对应于所述多个公钥(pk1、pk2、

pkn)的所述多个秘密密钥(sk1、sk2、

skn);向所述hsm提供所述多个秘密密钥(sk1、sk2、

skn);并且从所述hsm接收利用所述kek进行加密的所述多个秘密密钥(sk1、sk2、

skn)作为所述多个密码(c1、c2、
…cn
)。
21.条款15.根据条款13或14所述的计算机程序产品,其中所述指令进一步使所述至
少一个处理器:在于所述存储器中存储与所述多个公钥(pk1、pk2、

pkn)相关联的所述多个密码(c1、c2、
…cn
)之后,删除所述多个秘密密钥(sk1、sk2、

skn)和所述多个随机密钥(r1、r2、
…rn
)。
22.条款16.根据条款13至15中任一项所述的计算机程序产品,其中所述密钥封装数据包括所述公钥的散列h(pki)、所述密码(ci)、所述随机数的发生器函数gr,且对应公钥的散列自乘为所述dek的散列的幂h(pki)
h(dek)

23.条款17.根据条款13至16中任一项所述的计算机程序产品,其中所述指令进一步使所述至少一个处理器:接收另外的数据组块(mj)用于加密;基于所述散列函数(h)、所述多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)和另外的随机数(r)而生成另外的数据加密密钥(dek');利用所述另外的dek'对所述另外的数据组块(mj)进行加密,以生成另外的已加密数据组块(c
mj
);生成包括所述多个密码(c1、c2、
…cn
)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述另外的公钥(pkj)的另外的密码(cj)和另外的密钥封装数据的另外的报头(hdr');在所述数据库中存储包括所述另外的报头(hdr')和所述另外的已加密数据组块(c
mj
)的另外的密文(ct');接收对所述另外的密文(ct')进行解密的请求;响应于接收到对所述另外的密文(ct')进行解密的请求,向所述hsm提供所述另外的密码(cj);从所述hsm接收所述多个秘密密钥(sk1、sk2、

skn)中的对应于所述多个公钥(pk1、pk2、

pkn)中的所述另外的公钥(pkj)的另外的秘密密钥(skj),所述另外的公钥用以生成用于生成所述另外的已加密数据组块(c
mj
)的所述另外的dek';基于从所述hsm接收到的所述另外的秘密密钥(skj)和所述另外的密钥封装数据而导出用于生成所述另外的已加密数据组块(c
mj
)的所述另外的dek';并且提供另外的所导出dek用于对所述另外的已加密数据组块(c
mj
)进行解密,以获得所述另外的数据组块(mj)。
24.条款18.根据条款13至17中任一项所述的计算机程序产品,其中所述指令进一步使所述至少一个处理器:基于所述秘密密钥(ski)和所述另外的秘密密钥(skj)而生成令牌;基于所述令牌和所述密钥封装数据而导出所述dek;并且基于所述令牌和所述另外的密钥封装数据而导出所述另外的dek'。
25.在参考附图考虑以下描述和所附权利要求书时,本公开的这些和其它特征和特性以及相关结构元件和各部分的组合的操作方法和功能以及制造经济性将变得更加显而易见,所有附图形成本说明书的部分,其中相似附图标号在各图中标示对应部分。然而,应明确地理解,各图式仅用于说明和描述目的,并非旨在作为对限制的定义。除非上下文另外明确规定,否则在本说明书和权利要求书中所用时,单数形式“一”及“所述”包括多个指示物。
附图说明
26.下文参考示意性附图中示出的示范性实施例更详细地解释额外优势和细节,附图中:
27.图1是其中可实施本文所描述的系统、装置、产品、设备和/或方法的环境的非限制性实施例或方面的图;
28.图2是图1的一个或多个装置和/或一个或多个系统的组件的非限制性实施例或方面的图;
29.图3a-3c是数据安全的流程的非限制性实施例或方面的流程图;
30.图4a-4c是数据安全系统的非限制性实施例或方面的实施图;并且
31.图5a和5b是现有数据安全系统的图。
具体实施方式
32.应理解,除了明确指定为相反的情况之外,本公开可采用各种替代变化和步骤顺序。还应当理解,附图中所示的以及在以下说明书中描述的特定装置和过程仅仅是示例性和非限制性实施例或方面。因此,与本文公开的实施例或方面有关的特定尺寸和其它物理特性不应被视为限制。
33.本文所使用的方面、组件、元件、结构、动作、步骤、功能、指令等都不应当被理解为关键的或必要的,除非明确地如此描述。并且,如本文所使用,冠词“一(a)”和“一(an)”旨在包括一个或多个项目,并且可以与“一个或多个”和“至少一个”互换使用。此外,如本文所使用,术语“组”旨在包括一个或多个项目(例如,相关项目、不相关项目、相关项目与不相关项目的组合等),并且可与“一个或多个”或“至少一个”互换使用。在希望仅有一个项目的情况下,使用术语“一个”或类似语言。且,如本文中所使用,术语“具有”等希望是开放式术语。另外,除非另外明确陈述,否则短语“基于”希望意味着“至少部分地基于”。
34.如本文中所使用,术语“通信”可以指数据(例如,信息、信号、消息、指令、命令等)的接收、接纳、发送、传送、提供等。一个单元(例如,装置、系统、装置或系统的组件、其组合等)与另一单元通信意味着所述一个单元能够直接或间接地从所述另一单元接收信息和/或向所述另一单元发送信息。这可指在本质上有线和/或无线的直接或间接连接(例如,直接通信连接、间接通信连接等)。另外,尽管所发送的信息可以在第一单元与第二单元之间被修改、处理、中继和/或路由,但这两个单元也可以彼此通信。例如,即使第一单元被动地接收信息且不会主动地将信息发送到第二单元,第一单元也可以与第二单元通信。作为另一实例,如果至少一个中间单元处理从第一单元接收到的信息且将处理后的信息传送到第二单元,则第一单元可以与第二单元通信。
35.显然,本文所描述的系统和/或方法可以不同形式的硬件、软件或硬件和软件的组合实施。用于实施这些系统和/或方法的实际专用控制硬件或软件代码并不限制实施方案。因此,本文在不参考特定软件代码的情况下描述了系统和/或方法的操作和行为,应当理解,软件和硬件可以设计成基于本文的描述来实施系统和/或方法。
36.本文中结合阈值描述一些非限制性实施例或方面。如本文所使用,满足阈值可以指大于阈值、多于阈值、高于阈值、大于或等于阈值、小于阈值、少于阈值、低于阈值、小于或等于阈值、等于阈值等的值。
37.如本文所使用,术语“交易服务提供商”可指向商家或其它实体接收交易授权请求且在一些情况下通过交易服务提供商与发行方机构之间的协议来提供支付保证的实体。例如,交易服务提供商可包括例如之类的支付网络,或处理交易的任何其它实体。术语“交易处理系统”可以指由交易服务提供商或代表交易服务提供商操作的一个或多个计算装置,例如执行一个或多个软件应用程序的交易处理服务器。交易处理系统可包括一个或多个处理器,并且在一些非限制性实施例中可由交易服务提供商或代表交易服务提供商操作。
38.如本文所使用,术语“移动装置”可以指被配置为与一个或多个网络通信的一个或
多个便携式电子装置。例如,移动装置可以包括蜂窝电话(例如,智能电话或标准蜂窝电话)、便携式计算机(例如,平板计算机、膝上型计算机等)、可穿戴装置(例如,手表、眼镜、镜片、衣服等)、个人数字助理(pda)和/或其它类似装置。如本文所使用,术语“客户端装置”和“用户装置”是指被配置为与一个或多个服务器或远程装置和/或系统通信的任何电子装置。客户端装置或用户装置可以包括移动装置、支持网络的设备(例如,支持网络的电视、冰箱、恒温器等)、计算机、pos系统和/或能够与网络通信的任何其它装置或系统。
39.如本文中所使用,术语“计算装置”可以指被配置成处理数据的一个或多个电子装置。在一些示例中,计算装置可以包括接收、处理和输出数据的必要组件,例如处理器、显示器、存储器、输入装置、网络接口等。计算装置可以是移动装置。例如,移动装置可包括蜂窝电话(例如,智能电话或标准蜂窝电话)、便携式计算机、可穿戴装置(例如,手表、眼镜、镜片、服装和/或其类似者)、pda和/或其它类似装置。计算装置还可以是台式计算机或其它形式的非移动计算机。
40.如本文中所使用,术语“服务器”和/或“处理器”可以指或包括由例如互联网等网络环境中的多方操作或促进所述多方的通信和处理的一个或多个计算装置,但应了解,可通过一个或多个公共或专用网络环境促进通信,并且可能有各种其它布置。另外,在网络环境中直接或间接通信的多个计算装置(例如,服务器、pos装置、移动装置等)可构成“系统”。如本文所使用,对“服务器”或“处理器”的提及可指陈述为实施先前步骤或功能的先前所述服务器和/或处理器、不同的服务器和/或处理器,和/或服务器和/或处理器的组合。例如,如在说明书和权利要求书中所使用,陈述为实施第一步骤或功能的第一服务器和/或第一处理器可指代陈述为实施第二步骤或功能的相同或不同服务器和/或处理器。
41.如本文中所使用,术语“应用程序编程接口”(api)可以指允许不同系统或(硬件和/或软件)系统组件之间的通信的计算机代码。例如,api可包括可由其它系统或其它(硬件和/或软件)系统组件使用和/或访问的功能调用、功能、子例程、通信协议、字段等。
42.如本文中所使用,术语“用户界面”或“图形用户界面”可指生成的画面,例如用户可直接或间接(例如,通过键盘、鼠标、触摸屏等)与其交互的一个或多个图形用户界面(gui)。
43.图5a和5b是使用safenet protectfile代理、文件服务和keysecure hsm来保护静态数据的现有数据安全系统500的图。此现有数据安全系统500采用内核级的透明加密,这降低了应用内核升级和/或安全补丁的能力。此现有数据安全系统500还使用相同的密钥加密密钥(kek)(例如,相同的秘密密钥等)来保护由数据安全系统500创建(例如,由数据安全系统的相同节点创建等)的每个文件(例如,所有数据),并且kek一直保存在存储器中,直到托管数据安全系统(例如,safenet protectfile代理、文件服务等)的机器重启。因此,此现有数据安全系统500缺乏前向保密性(forward secrecy)。另外,此现有数据安全系统500针对每一交易调用hsm——由此需要越来越多的昂贵且难以维护和扩展的hsm,从而尝试减少操作超负荷和/或文件处理阻碍。
44.本公开的非限制性实施例或方面提供了系统、方法和计算机程序产品,所述系统、方法和计算机程序产品:在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
),其中多个密码(c1、c2、
…cn
)包括利用密钥加密密钥(kek)进行加密的多个秘密密钥(sk1、sk2、

skn),并且其中多个秘密密钥(sk1、sk2、

skn)对应于多个公钥(pk1、
pk2、

pkn);接收数据组块(mi)用于加密;基于散列函数(h)、多个公钥(pk1、pk2、

pkn)中的公钥(pki)和随机数(r)而生成数据加密密钥(dek);利用dek对数据组块(mi)进行加密,以生成已加密数据组块(c
mi
);生成包括多个密码(c1、c2、
…cn
)中的对应于多个公钥(pk1、pk2、

pkn)中的公钥(pki)的密码(ci)和密钥封装数据的报头(hdr);在数据库中存储包括报头(hdr)和已加密数据组块(c
mi
)的密文(ct);接收对密文(ct)进行解密的请求;响应于接收到对密文(ct)进行解密的请求,向硬件安全模块(hsm)提供密码(ci);从hsm接收多个秘密密钥(sk1、sk2、

skn)中的对应于多个公钥(pk1、pk2、

pkn)中的公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成已加密数据组块(c
mi
)的dek;基于从hsm接收到的秘密密钥(ski)和密钥封装数据而导出用于生成已加密数据组块(c
mi
)的dek;并且提供所导出dek用于对已加密数据组块(c
mi
)进行解密,以获得数据组块(mi)。
45.以此方式,本公开的非限制性实施例或方面使得数据安全:(i)在前向保密性方面更安全,(ii)使用用于检验数据组块(例如,用于每一文件,用于文件的每一组块等)的临时kek和数据加密密钥(dek)以及用于每一数据组块或文件的避免将秘密(例如,kek、秘密密钥等)长期或长时间存储在存储器中的新的或不同的秘密密钥,(iii)提供局部加密而不需要调用hsm(例如,加密不取决于hsm可用性等),(iv)实现更快的密钥轮替,和/或(v)避免随着待处理和存储的交易或文件的数目的增加而需要添加额外的hsm来减少操作超负荷和/或文件处理阻碍。
46.现在参考图1,图1是其中可实施本文所描述的装置、系统、方法和/或产品的示例环境100的图。如图1所示,环境100可包括数据安全系统102、硬件安全模块(hsm)104、用户装置106和/或通信网络108。数据安全系统102、硬件安全模块(hsm)104和/或用户装置106可经由有线连接、无线连接或有线和无线连接的组合互连(例如,建立连接以进行通信等)。
47.数据安全系统102可包括能够(例如,经由通信网络108等)从hsm 104和/或用户装置106接收信息和/或数据,和/或能够(例如,经由通信网络108等)将信息和/或数据传送到hsm 104和/或用户装置106的一个或多个装置。例如,数据安全系统102可包括计算装置,例如服务器、服务器群组、客户端装置、客户端装置群组和/或其它类似装置。在一些非限制性实施例或方面中,数据安全系统102可与如本文所描述的交易服务提供商相关联。
48.hsm 104可包括能够(例如,经由通信网络108等)从数据安全系统102和/或用户装置106接收信息和/或数据,和/或能够(例如,经由通信网络108等)将信息和/或数据传送到数据安全系统102和/或用户装置106的一个或多个装置。例如,hsm 104可包括计算装置,例如服务器、服务器群组、客户端装置、客户端装置群组和/或其它类似装置。在一些非限制性实施例或方面中,hsm 104可包括keysecure hsm。
49.用户装置106可包括能够(例如,经由通信网络108等)从数据安全系统102和/或hsm104接收信息和/或数据,和/或能够(例如,经由通信网络108等)将信息和/或数据传送到数据安全系统102和/或hsm 104的一个或多个装置。例如,用户装置106可以包括客户端装置等。在一些非限制性实施例或方面中,用户装置106可向用户提供用户界面,用于访问和/或控制数据安全系统102(例如,用于访问和/或控制数据安全系统102的应用程序等)。
50.通信网络108可包括一个或多个有线和/或无线网络。例如,通信网络108可包括蜂窝网络(例如,长期演进(lte)网络、第三代(3g)网络、第四代(4g)网络、第五代网络(5g)网络、码分多址(cdma)网络等)、公用陆地移动网络(plmn)、局域网(lan)、广域网(wan)、城域
网(man)、电话网络(例如,公共交换电话网络(pstn))、专用网络、自组网络、内联网、因特网、基于光纤的网络、云计算网络等和/或这些或其它类型的网络的组合。
51.提供图1所示的装置和系统的数目和布置作为实例。可存在额外装置和/或系统、更少装置和/或系统、不同装置和/或系统,和/或以与图1所示的那些不同的方式布置的装置和/或系统。此外,可在单个装置和/或系统内实施图1所示的两个或更多个装置和/或系统,或图1所示的单个装置和/或系统可实施为多个分布式装置和/或系统。另外或替代地,环境100的一组装置和/或系统(例如,一个或多个装置或系统)可执行被描述为由环境100的另一组装置和/或系统执行的一个或多个功能。
52.现在参考图2,图2是装置200的示例组件的图。装置200可对应于数据安全系统102的一个或多个装置、hsm 104(例如,hsm 104的系统的一个或多个装置等)和/或用户装置106(例如,用户装置106的系统的一个或多个装置等)。在一些非限制性实施例或方面中,数据安全系统102的一个或多个装置、hsm 104(例如,hsm 104的系统的一个或多个装置等)和/或用户装置106(例如,用户装置106的系统的一个或多个装置等)可包括至少一个装置200和/或装置200的至少一个组件。如图2所示,装置200可包括总线202、处理器204、存储器206、存储组件208、输入组件210、输出组件212,和通信接口214。
53.总线202可包括准许装置200的组件之间的通信的组件。在一些非限制性实施例或方面中,处理器204可以硬件、软件,或硬件和软件的组合实施。例如,处理器204可包括处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)、加速处理单元(apu)等)、微处理器、数字信号处理器(dsp)和/或可以被编程为执行功能的任何处理组件(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)。存储器206可包括随机存取存储器(ram)、只读存储器(rom),和/或存储供处理器204使用的信息和/或指令的另一类型的动态或静态存储装置(例如,闪存存储器、磁存储器、光学存储器等)。
54.存储组件208可存储与装置200的操作和使用相关联的信息和/或软件。例如,存储组件208可以包括硬盘(例如,磁盘、光盘、磁光盘、固态磁盘等)、压缩光盘(cd)、数字多功能光盘(dvd)、软盘、盒带、磁带和/或另一类型的计算机可读介质,以及对应的驱动器。
55.输入组件210可以包括准许装置200例如通过用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关、麦克风等)接收信息的组件。另外或替代地,输入组件210可以包括用于感测信息的传感器(例如,全球定位系统(gps)组件、加速度计、陀螺仪、致动器等)。输出组件212可以包括提供来自装置200的输出信息的组件(例如,显示器、扬声器、一个或多个发光二极管(led)等)。
56.通信接口214可以包括收发器式组件(例如,收发器、独立的接收器和发送器等),所述收发器式组件使装置200能够例如经由有线连接、无线连接,或有线连接和无线连接的组合与其它装置通信。通信接口214可以准许装置200接收来自另一装置的信息和/或向另一装置提供信息。例如,通信接口214可包括以太网接口、光学接口、同轴接口、红外接口、射频(rf)接口、通用串行总线(usb)接口、接口、蜂窝网络接口等。
57.装置200可以执行本文所描述的一个或多个过程。装置200可以基于处理器204执行由例如存储器206和/或存储组件208的计算机可读介质存储的软件指令来执行这些过程。计算机可读介质(例如,非瞬态计算机可读介质)在本文中定义为非瞬态存储器装置。存储器装置包括位于单个物理存储装置内的存储器空间或跨多个物理存储装置扩展的存储
器空间。
58.软件指令可以经由通信接口214从另一计算机可读介质或从另一装置读取到存储器206和/或存储组件208中。在被执行时,存储在存储器206和/或存储组件208中的软件指令可以使处理器204执行本文描述的一个或多个过程。另外或替代地,硬接线电路系统可以替代或结合软件指令使用以执行本文中所描述的一个或多个过程。因此,本文所描述的实施例或方面不限于硬件电路系统和软件的任何特定组合。
59.存储器206和/或存储组件208可包括数据存储装置或一个或多个数据结构(例如,数据库等)。装置200能够从存储器206和/或存储组件208中的数据存储装置或一个或多个数据结构接收信息、将信息存储在所述数据存储装置或一个或多个数据结构中、向所述数据存储装置或一个或多个数据结构传送信息或搜索其中存储的信息。
60.提供图2中示出的组件的数目和布置作为实例。在一些非限制性实施例或方面中,与图2中所示的那些相比,装置200可以包括额外组件、更少组件、不同组件或以不同方式布置的组件。另外或替代地,装置200的一组组件(例如一个或多个组件)可执行被描述为由装置200的另一组组件执行的一个或多个功能。
61.现参考图3a-3c和4a-4c,图3a-3c是数据安全的流程300的非限制性实施例或方面的流程图,且图4a-4c是与数据安全系统有关的实施方案400的非限制性实施例或方面的图。如图4a-4c所示,实施方案400包括应用程序402、可扩展数据安全服务(sdss)404和hsm104。在一些非限制性实施例或方面中,可由数据安全系统102(例如,数据安全系统102的一个或多个装置等)(例如,完全地、部分地等)执行流程300的一个或多个步骤。例如,可由数据安全系统102的sdss 404(例如,完全地、部分地等)执行流程300的一个或多个步骤。例如,可由数据安全系统102的应用程序402(例如,完全地、部分地等)执行流程300的一个或多个步骤。在一些非限制性实施例或方面中,可由与数据安全系统102分离或包括所述数据安全系统的另一装置或装置群组,例如hsm 104(例如,hsm 104的系统的一个或多个装置等)和/或用户装置106(例如,用户装置106的系统的一个或多个装置等),(例如完全地、部分地等)执行流程300的一个或多个步骤。
62.如图3a所示,在步骤302处,流程300包括从hsm接收随机密钥。例如,数据安全系统102(例如,sdss 404等)可从hsm 104接收多个随机密钥(r1、r2、
…rn
)。例如,且如图4a的附图标记450所示,应用程序402和sdss 404可开动(例如,启动、刷新、起动等),并且在附图标记452处,sdss 404中的keypool daemon可从hsm 104请求并接收多个随机密钥(r1、r2、
…rn
),例如随机数批次。每当需要刷新可用密码或dek池时(例如,当密码或dek的可用数目满足阈值数目等时),keypool daemon可自动请求新的随机数批次。
63.如图3a所示,在步骤304处,流程300包括生成公钥。例如,数据安全系统102(例如,sdss 404等)可基于发生器函数(g)和多个随机密钥(r1、r2、
…rn
)而生成多个公钥(pk1、pk2、

pkn)。例如,且如图4a的附图标记454所示,sdss 404可根据以下等式(1)生成公钥pki:
64.pki=g
ri
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
65.其中pki是多个公钥(pk1、pk2、

pkn)中的公钥,g是群组g的发生器函数,且ri是多个随机密钥(r1、r2、
…rn
)中的随机密钥。
66.如图3a所示,在步骤306处,流程300包括生成秘密密钥。例如,数据安全系统102
(例如,sdss 404等)可基于散列函数(h)和多个公钥(pk1、pk2、

pkn)而生成对应于多个公钥(pk1、pk2、

pkn)的多个秘密密钥(sk1、sk2、

skn)。例如,且如图4a的附图标记456所示,sdss 404可根据以下等式(2)生成秘密密钥ski:
67.ski=hashtogroup(ri)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
68.pki=g
ri
69.其中ski是多个秘密密钥(sk1、sk2、

skn)中的秘密密钥,hashtogroup是应用于多个随机密钥(r1、r2、
…rn
)的群组g的散列函数h,ri是多个随机密钥(r1、r2、
…rn
)中的随机密钥,且g是群组g的发生器函数。
70.如图3a所示,在步骤308处,流程300包括向hsm提供秘密密钥。例如,数据安全系统102(例如,sdss 404等)可向hsm 104提供多个秘密密钥(sk1、sk2、

skn)。例如,且如图4a的附图标记458所示,sdss 404可向hsm 104提供多个秘密密钥(sk1、sk2、

skn)以请求包装秘密密钥。在此实例中,hsm 104可利用密钥加密密钥(kek)对多个秘密密钥(sk1、sk2、

skn)进行加密,以生成多个密码(c1、c2、
…cn
)(例如,多个已包装秘密密钥等)。
71.如图3a所示,在步骤310处,流程300包括从hsm接收密码。例如,数据安全系统102(例如,sdss 404等)可从hsm 104接收利用kek进行加密的多个秘密密钥(sk1、sk2、

skn)作为多个密码(c1、c2、
…cn
)。例如,且如图4a的附图标记460所示,sdss 404可从hsm 104接收利用kek进行加密的多个秘密密钥(sk1、sk2、

skn)作为多个密码(c1、c2、
…cn
)。
72.如图3a所示,在步骤312处,流程300包括在存储器中存储密码。例如,数据安全系统102(例如,sdss 404等)可在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
)。例如,多个密码(c1、c2、
…cn
)可包括利用kek进行加密的多个秘密密钥(sk1、sk2、

skn),并且多个秘密密钥(sk1、sk2、

skn)可对应于多个公钥(pk1、pk2、

pkn)。例如,多个密码(c1、c2、
…cn
)中的密码c
isk
可与多个公钥(pk1、pk2、

pkn)中的对应公钥pki相关联地存储在存储器中。在此实例中,且如图4a的附图标记462所示,sdss 404可在存储器中存储与多个公钥(pk1、pk2、

pkn)相关联的多个密码(c1、c2、
…cn
)。
73.如图4a的附图标记464所示,sdss 404可在流程300的步骤306之后立即、在步骤308之后立即、在步骤310之后立即或在步骤312之后立即删除多个秘密密钥(sk1、sk2、

skn)和/或多个随机密钥(r1、r2、
…rn
)。例如,多个秘密密钥(sk1、sk2、

skn)和/或多个随机密钥(r1、r2、
…rn
)可能不会长期存储在存储器中(例如,仅在生成秘密密钥和/或向hsm提供秘密密钥以用于包装所需的时间内存储在所述存储器中等)。因此,通过缩短秘密保存在存储器中的时间量来改进数据安全。
74.如图4a的附图标记466所示,应用程序402可从sdss 404请求并接收存储在存储器中的一个或多个密码与公钥对[c
isk
,pki]。例如,应用程序402可从sdss 404请求并接收一个或多个密码与公钥对[c
isk
,pki],以用于对一个或多个数据文件和/或数据文件的一个或多个组块进行加密。在一些非限制性实施例或方面中,可经由用户装置106(例如,经由用户装置106的用户界面等)提供对数据安全系统102上的应用程序402的访问和/或控制。
[0075]
如图3b所示,在步骤314处,流程300包括接收数据组块用于加密。例如,数据安全系统102(例如,应用程序402、sdss 404等)可接收数据组块(mi)用于加密。例如,数据安全系统102(例如,应用程序402、sdss 404等)可接收另外的数据组块(mj)用于加密。在此实例中,且如图4b中的附图标记468所示,应用程序402可接收数据组块(mi)(和/或另外的数据
组块(mj)等)用于加密。
[0076]
在一些非限制性实施例或方面中,数据组块可包括数据文件的一部分。例如,应用程序402可将数据文件或较大数据组块分组或分割为多个数据组块。例如,应用程序402可将10kb的文件分组为十个1kb的数据组块。在此实例中,应用程序402可使用不同的密码与公钥对[c
isk
,pki]来对多个数据组块中的每一数据组块进行加密。例如,应用程序402可使用密码与公钥对[c
isk
,pki]来导出dek以对数据组块(mi)进行加密,且使用不同于密码与公钥对[c
isk
,pki]的另外的密码与公钥对[c
jsk
,pkj]来导出另外的dek(例如,dek')以对另外的数据组块(mj)进行加密,如下文更详细地描述的。因此,即使密码与公钥对[c
isk
,pki]被破解,整个文件或每一数据组块也无法由恶意方恢复,这是因为每一数据组块都是基于不同的密码与公钥对[c
isk
,pki]进行加密。
[0077]
如图3b所示,在步骤316处,流程300包括针对每一数据组块生成dek。例如,数据安全系统102(例如,应用程序402、sdss 404等)可基于散列函数(h)、多个公钥(pk1、pk2、

pkn)中的公钥(pki)和随机数(r)而生成dek。例如,数据安全系统102(例如,应用程序402、sdss 404等)可基于散列函数(h)、多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)和另外的随机数(r)而生成另外的dek(例如,dek')。在此实例中,且如图4b中的附图标记470所示,应用程序402可根据以下等式(3)导出或生成dek:
[0078]
dek=h(pk
ir
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0079]
其中h是散列函数,pki是多个公钥(pk1、pk2、

pkn)中的公钥,且r是随机数。
[0080]
如图3b所示,在步骤318处,流程300包括利用不同的dek对每一数据组块进行加密。例如,数据安全系统102(例如,应用程序402、sdss 404等)可利用dek对数据组块(mi)进行加密,以生成已加密数据组块(c
mi
)。例如,数据安全系统102(例如,应用程序402、sdss 404等)可利用不同于dek的另外的dek对另外的数据组块(mj)进行加密,以生成另外的已加密数据组块(c
mj
)。在此实例中,且如图4b中的附图标记472所示,应用程序402可利用dek(和/或另外的dek等)对数据组块(mi)(和/或另外的数据组块(mj)等)进行加密,以生成已加密数据组块(c
mi
)(和/或另外的已加密数据组块(c
mj
)等)。在一些非限制性实施例或方面中,应用程序402可使用具有伽罗瓦/计数器模式(aes-gcm)加密技术的高级标准加密来对数据组块(mi)进行加密。因此,如前文所述,即使dek被破解,由应用程序加密的整个文件或每一数据组块也无法由恶意方恢复,这是因为每一数据组块是通过不同的dek进行加密的。
[0081]
如图3b所示,在步骤320处,流程300包括针对每一已加密数据组块生成报头。例如,数据安全系统102(例如,应用程序402、sdss 404等)可生成包括多个密码(c1、c2、
…cn
)中的对应于多个公钥(pk1、pk2、

pkn)中的公钥(pki)的密码(ci)和密钥封装数据的报头(hdr)。例如,数据安全系统102(例如,应用程序402、sdss 404等)可生成包括多个密码(c1、c2、
…cn
)中的对应于多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)的另外的密码(cj)和另外的密钥封装数据的另外的报头(hdr')。在此实例中,且如图4b中的附图标记474所示,应用程序402可生成包括密码(ci)(和/或密码(cj))和密钥封装数据的报头(hdr)(和/或另外的报头(hdr'))。
[0082]
在一些非限制性实施例或方面中,用于已加密数据组块(c
mj
)的密钥封装数据可包括对应公钥的散列h(pki)、对应密码(ci)、随机数的发生器函数gr,对应公钥的散列自乘为对应dek的散列(h)的幂h(pki)
h(dek)
。例如,报头(hdr)可表示为h(pki)||(ci)||gr||h(pki)
h(dek)
。类
似地,另外的报头(hdr')可表示为h(pkj)||(cj)||gr||h(pkj)
h(dek
'
)

[0083]
如图3b所示,在步骤322处,流程300包括针对每一数据组块,在数据库中存储包括报头和已加密数据组块的密文。例如,数据安全系统102(例如,应用程序402、sdss 404等)可在数据库中存储包括报头(hdr)和已加密数据组块(c
mi
)的密文(ct)。例如,数据安全系统102(例如,应用程序402、sdss 404等)可在数据库中存储包括另外的报头(hdr')和另外的已加密数据组块(c
mj
)的另外的密文(ct')。在此实例中,且如图4b中的附图标记476和478所示,应用程序402可创建包括报头(hdr)和已加密数据组块(c
mi
)(和/或另外的报头(hdr'))和另外的已加密数据组块(c
mj
)的密文(ct)(和/或另外的密文(ct'))并在数据库中存储所述密文。例如,报头(例如,hdr、hdr'等)可充当和/或被称为密钥封装机制(kem),且已加密数据组块(例如,c
mi
、c
mj
等)可充当和/或被称为数据封装机制(dem)。
[0084]
如图3c所示,在步骤324处,流程300包括接收对密文进行解密的请求。例如,数据安全系统102(例如,应用程序402、sdss 404等)可接收对密文(ct)进行解密的请求。例如,数据安全系统102(例如,应用程序402、sdss 404等)可接收对另外的密文(ct')进行解密的请求。在此实例中,且如图4c中的附图标记480和482所示,应用程序402可向sdss 404提供针对秘密密钥的用以对包括报头(hdr)(和/或密文(ct)(和/或另外的密文(ct')的另外的报头(hdr'))的密文(ct)(和/或另外的密文(ct'))进行解密的请求。例如,可接收对密文批次或集合进行解密的请求,且可向sdss 404提供针对秘密密钥的用于对批次或集合中的每一密文进行解密的请求。
[0085]
如图3c所示,在步骤326处,流程300包括向hsm提供密码。例如,数据安全系统102(例如,应用程序402、sdss 404等)可响应于接收到对密文(ct)进行解密的请求而向hsm104提供密码(ci)。例如,数据安全系统102(例如,应用程序402、sdss 404等)可响应于接收到对另外的密文(ct')进行解密的请求而向hsm 104提供另外的密码(cj)。在此实例中,且如图4c的附图标记484所示,sdss 404可从报头(hdr)(和/或另外的报头(hdr'))提取密码(ci)(和/或密码(cj)),并且向hsm 104提供所提取密码(ci、cj)以及解开密码(ci、cj)以恢复秘密密钥(ski、skj)的请求。例如,可向hsm 104提供解开所提取密码批次或集合的请求。例如,hsm 104可利用kek对密码(ci、cj)进行解密,以获得秘密密钥(ski、skj)。因此,代替向hsm 104发送整个文件用于解密或对具有单个报头的整个文件进行解密——这会增加操作开销和处理时间,本公开的非限制性实施例或方面可仅向hsm 104发送所提取密码用于解密、向所述hsm发送具有不同报头/密码的文件的每一数据组块用于加密——这会增加操作开销和处理时间但通过实现前向保密性而提高安全性。
[0086]
如图3c所示,在步骤328处,流程300包括从hsm接收秘密密钥。例如,数据安全系统102(例如,应用程序402、sdss 404等)可从hsm 104接收多个秘密密钥(sk1、sk2、

skn)中的对应于多个公钥(pk1、pk2、

pkn)中的公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成已加密数据组块(c
mi
)的dek。例如,数据安全系统102(例如,应用程序402、sdss 404等)可从hsm 104接收多个秘密密钥(sk1、sk2、

skn)中的对应于多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)的另外的秘密密钥(skj),所述另外的公钥用以生成用于生成另外的已加密数据组块(c
mj
)的另外的dek(例如,dek')。在此实例中,且如图4c的附图标记486所示,sdss 404可从hsm 104接收多个秘密密钥(sk1、sk2、

skn)中的对应于多个公钥(pk1、pk2、

pkn)中的公钥(pki)的秘密密钥(ski),所述公钥用以生成用于生成已加密数据组块(c
mi
)的
dek,和/或接收多个秘密密钥(sk1、sk2、

skn)中的对应于多个公钥(pk1、pk2、

pkn)中的另外的公钥(pkj)的另外的秘密密钥(skj),所述另外的公钥用以生成用于生成另外的已加密数据组块(c
mj
)的另外的dek(例如,dek')。例如,sdss404可从hsm 104接收对应于提交用于解开的密码批次或集合的秘密密钥批次或集合。
[0087]
在一些非限制性实施例或方面中,且如图4c的附图标记488所示,sdss 404可基于秘密密钥(ski)和另外的秘密密钥(skj)而生成令牌且向应用程序402提供令牌,用于基于令牌和密钥封装数据而导出dek且基于令牌和另外的密钥封装数据而导出另外的dek'。例如,令牌可包括秘密密钥(ski)和另外的秘密密钥(skj)(例如,从hsm 104请求的秘密密钥批次或集合中的每一秘密密钥,对应于应用程序402提供用于解密的数据组块批次或集合的每一秘密密钥等)。因此,可提供用于对数据组块或文件批次进行解密的一次性令牌。
[0088]
如图3c所示,在步骤330处,流程300包括基于秘密密钥而导出dek。例如,数据安全系统102(例如,应用程序402、sdss 404等)可基于从hsm 104接收到的秘密密钥(ski)和密钥封装数据而导出用于生成已加密数据组块(c
mi
)的dek。例如,数据安全系统102(例如,应用程序402、sdss 404等)可基于从hsm 104接收到的另外的秘密密钥(skj)和另外的密钥封装数据而导出用于生成另外的已加密数据组块(c
mj
)的另外的dek(例如,dek')。在此实例中,且如图4c的附图标记490所示,应用程序402和/或sdss 404可分析报头(hdr)且基于从hsm 104接收到的秘密密钥(ski)和密钥封装数据而导出用于生成已加密数据组块(c
mi
)的dek,并且分析另外的报头(hdr')且基于从hsm 104接收到的另外的秘密密钥(skj)和另外的密钥封装数据而导出用于生成另外的已加密数据组块(c
mj
)的另外的dek(例如,dek')。例如,可根据以下等式(4)导出dek:
[0089]
dek=h(g
r,ski
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0090]
其中h是散列函数,g是发生器函数,r是随机数,且ski是秘密密钥。
[0091]
在一些非限制性实施例或方面中,如图4c中的附图标记492所示,应用程序402和/或sdss 404可验证所导出dek(和/或另外的所导出dek')。例如,应用程序402和/或sdss 404可根据以下等式(5)验证所导出dek:
[0092]
h(pki)==(h(pki)
h(dek)
)
1/h(dek)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0093]
其中h是散列函数,且pki是公钥。
[0094]
如图3c所示,在步骤332处,流程300包括提供所导出dek用于对已加密数据组块进行解密,如图4c中的附图标记494所示,以获得数据组块。例如,数据安全系统102(例如,应用程序402、sdss 404等)可提供所导出dek用于对已加密数据组块(c
mi
)进行解密,以获得数据组块(mi)。在此实例中,数据安全系统102(例如,应用程序402、sdss 404等)可利用所导出dek对已加密数据组块(c
mi
)进行解密,以获得数据组块(mi)。例如,数据安全系统102(例如,应用程序402、sdss 404等)可利用所导出另外的dek(例如,dek')提供另外的已加密数据组块(c
mj
),以获得另外的数据组块(mj)。在此实例中,数据安全系统102(例如,应用程序402、sdss 404等)可利用所导出另外的dek对另外的已加密数据组块(c
mj
)进行解密,以获得另外的数据组块(mj)。在一些非限制性实施例或方面中,应用程序402可使用具有伽罗瓦/计数器模式(aes-gcm)加密技术的高级标准加密来对数据组块(mi)进行解密。
[0095]
在一些非限制性实施例或方面中,如图4c中的附图标记496所示,应用程序402可通过以下方式迭代地对数据组块批次或集合进行解密:对组块c
mi
进行解密、将报头更新为
下一报头(例如,从报头(hdr)更新为另外的报头(hdr')),以及将用于生成dek的密钥移动为令牌中的下一密钥(例如,从ski到skj等)。因此,如前文所述,即使dek被破解,由应用程序加密的整个文件或每一数据组块也无法由恶意方恢复,这是因为每一数据组块是通过不同的dek进行加密的。
[0096]
尽管已出于说明和描述的目的详细描述了实施例或方面,但应当理解,这种细节仅用于所述目的,并且所述实施例或方面不限于所公开的实施例或方面,而是相反,旨在涵盖在所附权利要求书的精神和范围内的修改和等效布置。例如,应当理解,本公开预期,尽可能地,任何实施例或方面的一个或多个特征可以与任何其它实施例或方面的一个或多个特征组合。实际上,这些特征中的任一个可以未在权利要求书中具体地叙述和/或在说明书中公开的方式组合。尽管下文列出的每项从属权利要求可能直接取决于仅一项权利要求,但可能的实施方案的公开内容包括与权利要求集中的每项其它权利要求相组合的每项从属权利要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1