CN110611570B - 一种加密、密钥信息提供以及数据获取方法、装置 - Google Patents

一种加密、密钥信息提供以及数据获取方法、装置 Download PDF

Info

Publication number
CN110611570B
CN110611570B CN201910918688.4A CN201910918688A CN110611570B CN 110611570 B CN110611570 B CN 110611570B CN 201910918688 A CN201910918688 A CN 201910918688A CN 110611570 B CN110611570 B CN 110611570B
Authority
CN
China
Prior art keywords
hash
key
parameter
data
seed
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
Application number
CN201910918688.4A
Other languages
English (en)
Other versions
CN110611570A (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.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
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 Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN201910918688.4A priority Critical patent/CN110611570B/zh
Publication of CN110611570A publication Critical patent/CN110611570A/zh
Application granted granted Critical
Publication of CN110611570B publication Critical patent/CN110611570B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/3236Cryptographic 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 cryptographic hash functions
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供了一种加密方法、密钥信息提供方法以及信息获取方法,其中,数据拥有方执行加密方法,基于口令生成每一单位时长的密钥,由此,将数据按照时间序列加密并上传至云服务器。可信服务器执行密钥信息提供方法为数据请求方提供陷门信息、密钥参数和哈希参数。数据请求方执行信息获取方法,使用密钥信息得到授权时段内的各个单位时长的密钥,并使用密钥解密服务器发送的密文。

Description

一种加密、密钥信息提供以及数据获取方法、装置
技术领域
本申请涉及信息技术领域,更具体地说,涉及一种加密、密钥信息提供以及数据获取方法、装置。
背景技术
随着互联网技术的发展,各种云端为网络用户提供了低成本的数据存储和计算优势。其中,云端可以为客户提供多种基础服务,例如办公应用程序、基础设施以及各种软件设计平台。可见,云端的应用能够减少网络用户在本地设备上维护各种资源的麻烦,并为公共第三方服务提供商提供所需的高度可扩展和可靠存储资源。因此,越来越多的数据拥有方将大量的数据资源外包至云端,以降低他们在本地投资上的成本支出。
然而,由于外包的方式中数据资源在物理上并非完全由数据拥有方控制,并且无法确保云服务器完全受信任,所以引发了网络用户(尤其是数据拥有方)对数据安全和数据隐私的担忧。因此,将敏感数据存储在公共云平台上之前对数据进行加密,可以为数据拥有方实现外包数据的机密性。
目前,口令是数据拥有方习惯的一种加密方式,且定期更新口令能够提高数据资源的安全性。另外,对于具有时间控制属性的数据,存储到云端后,由于不同的时间段被授权的使用者不同,所以,需要对不同时间段的数据使用不同的密钥。例如,基于云端的网络会议系统,在该系统中,同一网络会议室中的不同时间段将举行的不同级别的会议。任一时间段的会议记录只能由该时间段被授权的使用者查看。因此,需要使用不同的密钥对不同时间段的会议数据进行加密。
但是,目前还没有基于用户输入的一个可更新口令,产生不同的密钥,从而加密不同时段的数据的技术。
发明内容
有鉴于此,本申请提供了一种加密方法、密钥信息提供方法以及数据获取方法、装置,如下:
一种加密方法,由数据拥有方执行,包括:
获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
依据所述密钥种子,为每个所述单位时长生成第一类密钥;
依据所述哈希种子,为每个所述单位时长生成哈希值;
依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
使用任意一个单位时长的密钥,加密该单位时长内的数据。
可选地,获取密钥种子,包括:
使用所述可信服务器提供的共享参数和所述第一口令生成第一验证参数;
向所述可信服务器发送所述第一验证参数;
接收所述可信服务器发送的第二验证参数和生成参数,所述第二验证参数由所述可信服务器在所述第一验证参数验证通过的情况下,依据所述第一验证参数和所述共享参数生成,所述生成参数依据所述共享参数生成;
在所述第二验证参数验证通过后,依据所述生成参数生成所述密钥种子。
可选地,依据所述密钥种子,为每个所述单位时长生成第一类密钥,包括:
构建单向散列二叉树,所述单向散列二叉树的根节点为所述密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,所述单向散列二叉树的各节点的值不同,所述单向散列二叉树的最末端叶子节点的数量为n;
按照预设的叶子节点与所述单位时长在所述口令中的序号的对应关系,为每个所述单位时长唯一分配一个所述最末端叶子节点。
可选地,获取所述哈希种子,包括:
接收可信服务器发送的哈希种子,所述哈希种子由所述可信服务器使用所述数据拥有方的私钥进行哈希运算得到,所述数据拥有方的私钥由所述可信服务器生成。
可选地,哈希种子包括前向哈希种子和后向哈希种子,所述前向哈希种子为对所述私钥执行第一数量的哈希运算得到,所述后向哈希种子为对所述私钥执行第二数量的哈希运算得到;
所述依据所述哈希种子,为每个所述单位时长生成哈希值,包括:
获取前向哈希链,所述前向哈希链包括m*n个前向哈希值,所述前向哈希链中的第i个前向哈希值为将所述前向哈希种子执行i次哈希运算的结果,i=1、2.....m*n,m为获取到的口令的数量,所述获取到的口令包括所述第一口令和历史口令;
获取后向哈希链,所述后向哈希链包括m*n个后向哈希值,在i不大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行n-i+1次哈希运算的结果,在i大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,r为所述第一口令在所述口令中的序号;
为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在第一口令中的序号。
可选地,加密方法还包括:
从所述数据中提取关键字信息;
使用所述数据拥有方的私钥和可信服务器提供的共享参数,加密所述关键字信息;
发送信息至云服务器,所述信息包括加密所述数据得到的密文、加密所述关键字得到的密文、所述关键字信息和所述数据的时间戳。
一种密钥信息提供方法,由可信服务器执行,包括:
接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
可选地,获取所述口令的有效期内的每个所述单位时长的第一类密钥,包括:
与所述数据拥有方协商生成所述密钥种子;
构建单向散列二叉树,所述单向散列二叉树的根节点为所述密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,所述单向散列二叉树的各节点的值不同,所述单向散列二叉树的最末端叶子节点的数量,为所述口令的有效期内的所述单位时长的数量;
按照预设的叶子节点与所述单位时长在所述口令中的序号的对应关系,为每个所述单位时长唯一分配一个所述最末端叶子节点。
可选地,确定密钥参数,包括:
确定为所述授权时段包括的各个所述单位时长分配的最末端叶子节点,作为目标叶子节点;
将所述目标叶子节点的最低层公共祖先节点,作为所述密钥参数。
可选地,与所述数据拥有方协商生成所述密钥种子,包括:
接收所述数据拥有方发送的第一验证参数,所述第一验证参数使用预先生成的共享参数和所述第一口令生成;
在所述第一验证参数验证通过的情况下,依据所述第一验证参数和所述共享参数生成第二验证参数;
依据所述共享参数生成生成参数;
将所述第二验证参数和所述生成参数发送至所述数据拥有方;
接收所述数据拥有方发送的第三验证参数,所述第三验证参数在所述第二验证参数验证通过后,由所述数据拥有方依据所述生成参数和所述共享参数生成;
在所述第三验证参数验证通过后,依据所述生成参数生成所述密钥种子;
永久保存所述密钥种子。
可选地,哈希种子包括前向哈希种子和后向哈希种子,所述前向哈希种子为对所述私钥执行第一数量的哈希运算得到,所述后向哈希种子为对所述私钥执行第二数量的哈希运算得到;
获取所述口令的有效期内的每个所述单位时长的哈希值的过程,包括:
获取前向哈希链,所述前向哈希链包括m*n个前向哈希值,所述前向哈希链中的第i个前向哈希值为将所述前向哈希种子执行i次哈希运算的结果,i=1、2…m*n,m为获取到的口令的数量,所述获取到的口令包括所述第一口令和历史口令;
获取后向哈希链,所述后向哈希链包括m*n个后向哈希值,在i不大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行n-i+1次哈希运算的结果,在i大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,r为所述第一口令在所述口令中的序号;
为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在所述第一口令中的序号。
可选地,确定哈希参数,包括:
将所述授权时段中最早的单位时长的前向哈希值,作为前向哈希参数;
将所述授权时段中最新有效期中最早的单位时长的后向哈希值,作为后向哈希参数,所述最新有效期为最新的口令的有效期;
将所述前向哈希参数和所述后向哈希参数,作为所述哈希参数。
可选地,陷门信息请求中还包括:
关键字信息,所述关键字信息用于检索请求的数据;
所述已获取的参数还包括:
关键字信息。
一种数据获取方法,由数据请求方执行,包括:
从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数生成;
将所述陷门信息发送至云服务器;
接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
使用所述密钥参数获取第一类密钥;
使用所述哈希参数获取哈希值;
使用所述第一类密钥和所述哈希值,生成密钥;
使用所述密钥解密所述数据密文,得到数据。
可选地,使用所述密钥参数获取第一类密钥,包括:
依据所述密钥参数以及单向散列二叉树构建算法,由所述密钥参数构建单向散列二叉树的最末端叶子节点,得到所述授权时段中的每个单位时长的第一类密钥,所述单向散列二叉树构建算法预先配置在所述数据请求方、所述可信服务器和所述数据拥有方。
可选地,哈希参数为所述数据请求方的授权时段的有效期内的第一个单位时长的前向哈希值和后向哈希值;
所述使用所述哈希参数获取哈希值,包括:
依据所述哈希参数和哈希链生成算法,生成所述授权时段中的每个单位时长的哈希值,所述哈希链生成算法预先配置在所述数据请求方、所述可信服务器和所述数据拥有方。
一种加密装置,应用于数据拥有方,包括:
口令获取模块,用于获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
种子获取模块,用于获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
第一类密钥生成模块,用于依据所述密钥种子,为每个所述单位时长生成第一类密钥;
哈希值生成模块,用于依据所述哈希种子,为每个所述单位时长生成哈希值;
密钥生成模块,用于依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
数据加密模块,用于使用任意一个单位时长的密钥,加密该单位时长内的数据。
可选地,种子获取模块用于获取密钥种子和哈希种子,包括:所述种子获取模块具体用于:
使用所述可信服务器提供的共享参数和所述第一口令生成第一验证参数;
向所述可信服务器发送所述第一验证参数;
接收所述可信服务器发送的第二验证参数和生成参数,所述第二验证参数由所述可信服务器在所述第一验证参数验证通过的情况下,依据所述第一验证参数和所述共享参数生成,所述生成参数依据所述共享参数生成;
在所述第二验证参数验证通过后,依据所述生成参数生成所述密钥种子。
可选地,第一类密钥生成模块用于依据所述密钥种子,为每个所述单位时长生成第一类密钥,包括:所述第一类密钥生成模块具体用于:
构建单向散列二叉树,所述单向散列二叉树的根节点为所述密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,所述单向散列二叉树的各节点的值不同,所述单向散列二叉树的最末端叶子节点的数量为n;
按照预设的叶子节点与所述单位时长在所述口令中的序号的对应关系,为每个所述单位时长唯一分配一个所述最末端叶子节点。
可选地,种子获取模块用于获取密钥种子和哈希种子,包括:所述种子获取模块具体用于:
接收可信服务器发送的哈希种子,所述哈希种子由所述可信服务器使用所述数据拥有方的私钥进行哈希运算得到,所述数据拥有方的私钥由所述可信服务器生成。
可选地,所述哈希种子包括前向哈希种子和后向哈希种子,所述前向哈希种子为对所述私钥执行第一数量的哈希运算得到,所述后向哈希种子为对所述私钥执行第二数量的哈希运算得到;
所述哈希值生成模块用于依据所述哈希种子,为每个所述单位时长生成哈希值,包括:所述哈希值生成模块具体用于:
获取前向哈希链,所述前向哈希链包括m*n个前向哈希值,所述前向哈希链中的第i个前向哈希值为将所述前向哈希种子执行i次哈希运算的结果,i=1、2.....m*n,m为获取到的口令的数量,所述获取到的口令包括所述第一口令和历史口令;
获取后向哈希链,所述后向哈希链包括m*n个后向哈希值,在i不大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行n-i+1次哈希运算的结果,在i大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,r为所述第一口令在所述口令中的序号;
为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在第一口令中的序号。
可选地,加密装置还包括:
关键字提取模块,用于从所述数据中提取关键字信息;
关键字加密模块,用于使用所述数据拥有方的私钥和可信服务器提供的共享参数,加密所述关键字信息;
密文发送模块,用于发送信息至云服务器,所述信息包括加密所述数据得到的密文、加密所述关键字得到的密文、所述关键字信息和所述数据的时间戳。
一种密钥信息提供装置,应用于可信服务器,包括:
信息请求接收模块,用于接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
陷门信息生成模块,用于依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
授权时段获取模块,用于获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
哈希值获取模块,用于获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
密钥参数确定模块,用于确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
哈希参数确定模块,用于确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
密钥信息发送模块,用于将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
可选地,哈希值获取模块用于获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值,包括:所述哈希值获取模块具体用于:
与所述数据拥有方协商生成所述密钥种子;
构建单向散列二叉树,所述单向散列二叉树的根节点为所述密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,所述单向散列二叉树的各节点的值不同,所述单向散列二叉树的最末端叶子节点的数量,为所述口令的有效期内的所述单位时长的数量;
按照预设的叶子节点与所述单位时长在所述口令中的序号的对应关系,为每个所述单位时长唯一分配一个所述最末端叶子节点。
可选地,密钥参数确定模块用于确定密钥参数,包括:所述密钥参数确定模块具体用于:
确定为所述授权时段包括的各个所述单位时长分配的最末端叶子节点,作为目标叶子节点;
将所述目标叶子节点的最低层公共祖先节点,作为所述密钥参数。
可选地,哈希值获取模块用于与所述数据拥有方协商生成所述密钥种子包括:所述哈希值获取模块具体用于:
接收所述数据拥有方发送的第一验证参数,所述第一验证参数使用预先生成的共享参数和所述第一口令生成;
在所述第一验证参数验证通过的情况下,依据所述第一验证参数和所述共享参数生成第二验证参数;
依据所述共享参数生成生成参数;
将所述第二验证参数和所述生成参数发送至所述数据拥有方;
接收所述数据拥有方发送的第三验证参数,所述第三验证参数在所述第二验证参数验证通过后,由所述数据拥有方依据所述生成参数和所述共享参数生成;
在所述第三验证参数验证通过后,依据所述生成参数生成所述密钥种子;
永久保存所述密钥种子。
可选地,哈希种子包括前向哈希种子和后向哈希种子,所述前向哈希种子为对所述私钥执行第一数量的哈希运算得到,所述后向哈希种子为对所述私钥执行第二数量的哈希运算得到;
哈希值获取模块用于获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值,包括:所述哈希值获取模块具体用于:
获取前向哈希链,所述前向哈希链包括m*n个前向哈希值,所述前向哈希链中的第i个前向哈希值为将所述前向哈希种子执行i次哈希运算的结果,i=1、2.....m*n,m为获取到的口令的数量,所述获取到的口令包括所述第一口令和历史口令;
获取后向哈希链,所述后向哈希链包括m*n个后向哈希值,在i不大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行n-i+1次哈希运算的结果,在i大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,r为所述第一口令在所述口令中的序号;
为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在所述第一口令中的序号。
可选的,哈希参数确定模块用于确定哈希参数,包括:所述哈希参数确定模块具体用于:
将所述授权时段中最早的单位时长的前向哈希值,作为前向哈希参数;
将所述授权时段中最新有效期中最早的单位时长的后向哈希值,作为后向哈希参数,所述最新有效期为最新的口令的有效期;
将所述前向哈希参数和所述后向哈希参数,作为所述哈希参数。
一种数据获取装置,应用于数据请求方,包括:
密钥信息获取模块,用于从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的模块,用于将所述陷门信息发送至云服务器;
数据密文接收模块,用于接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
第一类密钥获取模块,用于使用所述密钥参数获取第一类密钥;
哈希值获取模块,用于使用所述哈希参数获取哈希值;
密钥生成模块,用于使用所述第一类密钥和所述哈希值,生成密钥;
数据解密模块,用于使用所述密钥解密所述数据密文,得到数据。
可选地,第一类密钥获取模块用于使用所述密钥参数获取第一类密钥,包括:所述第一类密钥获取模块具体用于:
依据所述密钥参数以及单向散列二叉树构建算法,由所述密钥参数构建单向散列二叉树的最末端叶子节点,得到所述授权时段中的每个单位时长的第一类密钥,所述单向散列二叉树构建算法预先配置在所述数据请求方、所述可信服务器和所述数据拥有方。
可选地,哈希参数为所述数据请求方的授权时段的有效期内的第一个单位时长的前向哈希值和后向哈希值;
哈希值获取模块用于使用所述哈希参数获取哈希值,包括:所述哈希值获取模块具体用于:
依据所述哈希参数和哈希链生成算法,生成所述授权时段中的每个单位时长的哈希值,所述哈希链生成算法预先配置在所述数据请求方、所述可信服务器和所述数据拥有方。
一种设备,包括存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如上任一项所述的方法的各个步骤。
一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如上任一项所述的方法的各个步骤。
从上述的技术方案可以看出,本申请实施例提供的加密方法,由数据拥有方为每个数据请求方分配授权时段,基于口令生成每个单位时长的密钥,使用密钥对所有单位时长产生的数据进行加密,并且将加密的数据上传至云服务器。由此,提供了按照时间序列生成不同的密钥从而加密不同单位时长内数据,并上传云服务器实现共享的方案。本申请实施例提供的密钥信息提供方法,由可信服务器保存历史口令以及第一口令有效期内所有单位时长的密钥,并提供给数据请求方密钥信息。由于可信服务器完全可信,所以大大提高了密钥管理的安全性。本申请实施例提供的数据获取方法,由数据请求方发送陷门信息至云服务器,并接收云服务器发送的满足要求的数据密文。并且,数据请求方可以基于密钥参数和哈希参数获取授权时段内的单位时长的密钥,并基于密钥解密数据密文,从而实现了云服务器加密数据的共享。并且,因为数据请求方无需从可信服务器获取多个密钥,而使用密钥参数生成密钥,所以降低了与可信服务器的通信次数,从而降低了安全风险。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种加密方法的信令图;
图2为本申请实施例提供的口令有效期示意图;
图3为本申请实施例提供的一种密钥种子生成方法的信令图;
图4为本申请实施例提供的一种单向散列二叉树结构示意图;
图5为本申请实施例提供的一种关键字加密方法的信令图;
图6为本申请实施例提供的密钥信息提供方法的信令图;
图7为本申请实施例提供的一种数据获取方法的信令图;
图8为本申请实施例提供的一种加密装置的结构示意图;
图9为本申请实施例提供的一种密钥信息提供装置的结构示意图;
图10为本申请实施例提供的一种数据获取装置的结构示意图;
图11为本申请实施例提供的一种设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
云平台提供给网络用户各种云服务,应用云服务的网络用户成为云用户。本申请实施例中的云用户包括:数据拥有方、可信服务器、数据请求方以及云服务器。其中每一云用户都具有唯一的标识,该标识可以用身份ID表征。本申请实施例中,以UID0作为数据拥有方的标识,以UIDu(u为大于0的正整数)作为数据请求方的标识,以UIDTA作为可信服务器的标识,以UIDS作为云服务器(云端)的标识。
图1为本申请实施例提供的加密方法的信令图,其中,数据拥有方为将数据外包至云端(云服务器)的云用户,该数据拥有方加密数据的过程如图1所示,具体可以包括:
S101、数据拥有方获取第一口令。
具体地,第一口令为数据拥有方在上一口令过期或者初次加密数据时配置的口令,即为当前有效的口令。由上可知,数据拥有方使用不同的密钥来加密不同时间段内制作的数据内容(即一个固定时间段对应一个数据加密密钥),并根据时间序列将这些数据外包给云端。因此,可以基于时间序列预设多个单位时长,该第一口令的有效期可以包括n个预设的单位时长,n为大于0的整数。
如图2所示,第一口令的有效期记为PL(password lifetime),预设的单位时长记为TP(time period)。其中,PL1为数据拥有方配置的第一个口令(即历史口令)的有效期,在n=4的情况下,该PL1包括4个预设的单位时长,即TP1、TP2、TP3和TP4。PL2为数据拥有方配置的第一口令(即当前口令)的有效期,该PL2包括4个预设的单位时长,即TP5、TP6、TP7和TP8,其中,TP5相当于PL2的TP 1。
S102、数据拥有方获取由数据拥有方和可信服务器协商生成密钥种子。
具体地,密钥种子由第一口令触发生成。图3为本申请实施例提供的一种密钥种子生成方法的信令图。其中,密钥种子是由数据拥有方和可信服务器协商生成的。
如图3所示,数据拥有方获取密钥种子的过程具体可以包括:
S301、可信服务器生成共享参数,并将共享参数发送至数据拥有方。
可选地,可信服务器可以在应用云服务的初始化过程中生成共享参数,下面介绍可信服务器生成共享参数的过程:
首先,可信服务器生成系统参数D=(p,G,GT,e),其中G,GT为素数阶为p的乘法循环群,e是双线性映射函数,e=G×G→GT,选择G的生成元g,选择随机项u、h、w和α,其中,w∈G,α∈zp,zp表示阶为素数p的整数群。
然后,可信服务器选择两个大的素数:p'和q',满足q'|(p'-1)。选择一个具有素数阶q'的群Gq',系统密钥β∈zq',系统生成元g'∈Gq',选择具有适当完整性保护的对称加密函数E(*),构造伪随机函数集F,选择三个单向哈希函数H0,f:{0,1}*→zq',H1:{0,1}*→zp,计算v=g'β
最后,可信服务器基于上述各个参数,生成共享参数集合,其中包括上述多个共享参数。共享参数集合可以表示为pp=(D,g,u,h,w,E(*),H0(*),H1(*),p',q',g',v,f(*),F,e(g,g)α)。进一步,可信服务器可以将上述共享参数集合中的共享参数发送至数据拥有方。
另外,可信服务器生成并保留主私钥参数msk=(α,β)。
需要说明的是,本方案提供的可信服务器初始化的过程,应用的一阶(素数阶)双线性群(D=(p,G,GT,e))比现有的应用复合阶双线性群,运行效率高,灵活性较好。
S302、数据拥有方使用可信服务器提供的共享参数和第一口令生成第一验证参数,并向可信服务器发送第一验证参数。
具体地,可信服务器提供的共享参数为pp=(D,g,u,h,w,E(*),H0(*),H1(*),p',q',g',v,f(*),F,e(g,g)α),第一口令记为pw0。数据拥有方随机选择x,满足x←zq'并计算A=(g')x以及
Figure BDA0002216949700000151
其中,A、B为第一验证参数,UID0为数据拥有方的标识。进一步,数据拥有方将A、B以及UID0发送至可信服务器。
S303、可信服务器接收数据拥有方发送的第一验证参数,并且验证第一验证参数。
具体地,可信服务器接收到上述第一验证参数以及数据拥有方的标识后,基于第一验证参数计算B/Aβ,并验证B/Aβ是否等于
Figure BDA0002216949700000152
S304、可信服务器在第一验证参数验证通过的情况下,依据第一验证参数和共享参数生成第二验证参数,并依据共享参数生成生成参数。
具体地,若
Figure BDA0002216949700000153
则验证通过。可信服务器随机选择y←zq',r←zq',并计算C=B/f(pw0,UID0),D=(g')rvy,σ=ArCy,akT=Fσ(1),
Figure BDA0002216949700000154
其中,akT为生成的第二验证参数,D、E为生成的生成参数。
S305、可信服务器将第二验证参数和生成参数发送至数据拥有方。
具体地,可信服务器将上述第二验证参数akT以及生成参数D、E发送至数据拥有方。另外,可信服务器还将自己的标识UIDTA发送至数据拥有方。
S306、数据拥有方接收可信服务器发送的第二验证参数,并且验证第二验证参数。
具体地,数据拥有方首先计算σ'=Dx,并验证akT是否等于Fσ'(1)以及E是否等于vxvakT
S307、数据拥有方在第二验证参数验证通过后,依据生成参数生成密钥种子。
具体地,若akT=Fσ'(1)并且
Figure BDA0002216949700000161
则验证通过,数据拥有方进一步计算Kseed=Fσ'(3)。其中,Kseed即为数据拥有方生成的密钥种子。
需要说明的是,若口令发生变化(例如过期),则重新获取新的当前第一口令,并处触发上述S302~S307生成新的密钥种子K'seed。
S103、可信服务器使用数据拥有方的私钥进行哈希运算得到哈希种子,并将哈希种子发送至数据拥有方。
其中,数据拥有方的私钥由可信服务器生成,哈希运算为调用共享参数中的单向哈希函数H0进行的运算。具体地,可信服务器可以在初始化过程中,生成共享参数以后,基于共享参数生成每一云用户的私钥和公钥。其中,数据请求方的私钥记为sku=H1(α||UIDu),数据请求方的公钥记为
Figure BDA0002216949700000162
u为大于0的整数。数据拥有方的私钥记为sk0=H1(α||UID0),公钥记为
Figure BDA0002216949700000163
云服务器的私钥记为skS=H1(α||UIDS),数据请求方的公钥记为
Figure BDA0002216949700000164
“||”表示连接操作。需要说明的是,可信服务器可以进一步将生成的各个云用户的公钥私钥对发送至相应的云用户。
可信服务器可以使用上述sk0计算哈希种子,并将哈希种子发送至数据拥有方。其中,哈希种子包括前向哈希种子和后向哈希种子。前向哈希种子FHS为对私钥sk0执行第一数量的哈希运算得到。后向哈希种子BHS为对私钥执行第二数量的哈希运算得到。可选地,第一数量为1,第二数量为2,则FHS=H0(sk0),BHS=H0(sk0)2
可选地,在本步骤的另一种实施方式中,可以由数据拥有方接收可信服务器发送的数据拥有方的公钥私钥对,并由数据拥有方使用私钥sk0计算得到哈希种子。
S104、数据拥有方依据密钥种子,为每个单位时长生成第一类密钥。
具体地,数据拥有方为每个单位时长生成第一类密钥的方法可以包括:
首先,数据拥有方构建单向散列二叉树(OHBT,one-way hash binary tree)。其中,OHBT的根节点为密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,OHBT的各节点的值不同,单向散列二叉树的最末端叶子节点的数量为n,显然n为口令有效期包括的单位时长的数量。
然后,数据拥有方按照预设的叶子节点与单位时长在口令中的序号的对应关系,为每个单位时长唯一分配一个最末端叶子节点。
以n=4为例,图4为本申请实施例提供的一种单向散列二叉树结构示意图。
如图4所示,OHBT(1)为当第一口令为pw0时,数据拥有方构建的单向散列二叉树结构示意图。该OHBT(1)的根节点为pw0触发生成的密钥种子Kseed。根节点Kseed的每个叶子节点的值如图4所示分别为K00(K00=H0(Kseed||0))和K01(K01=H0(Kseed||1))。K00的两个叶子节点分别为K10(K10=H0(K00||0))和K11(K11=H0(K00||1))。K01的两个叶子节点分别为K12(K12=H0(K01||0))和K13(K13=H0(K01||1))。
按照上述方法,将K10作为第一类密钥分配给单位时长TP1,将K11作为第一类密钥分配给单位时长TP2,将K12作为第一类密钥分配给单位时长TP3,将K13作为第一类密钥分配给单位时长TP4。其中,触发生成Kseed的第一口令pw0的有效期内包括的单位时长按照顺序分别为TP1、TP2、TP3、TP4,其中,TP1、TP2、TP3、TP4在第一口令pw0中的序号分别为1、2、3、4。
可以理解的是,若第一口令的有效期只包括一个单位时长,则第一类密钥即为该第一口令触发生成的密钥种子Kseed。
若口令发生变化(例如过期),则数据拥有方可以重新获取新的当前的第一口令pw'0(此时,上述pw0可以作为历史口令),并触发生成新的密钥种子K'seed。在这种情况下,数据拥有方可以按照上述方法,重新构建一个新的单向散列二叉树,如图4所示的OHBT(2)为当第一口令为pw'0时,数据拥有方构建的单向散列二叉树结构示意图。该OHBT(2)的根节点为当前的密钥种子K'seed,根节点K'seed的每个叶子节点的值如图4所示分别为K'00和K'01
如图4所示,OHBT(2)的最末端的叶子节点分别为K'10、K'11、K'12、K'13。数据拥有方可以根据该OHBT(2),将K'10作为第一类密钥分配给单位时长TP5,将K'11作为第一类密钥分配给单位时长TP6,将K'12作为第一类密钥分配给单位时长TP7,将K'13作为第一类密钥分配给单位时长TP8。其中,第一口令pw'0的有效期内包括的单位时长按照顺序分别为TP5、TP6、TP7、TP8,即,TP5、TP6、TP7、TP8在第一口令pw'0中的序号分别为1、2、3、4。需要说明的是,上述OHBT(2)中的所有叶子节点的值可以参照上述OHBT(1)的计算方法。
S105、数据拥有方依据哈希种子,为每个单位时长生成哈希值。
具体地,哈希种子为S103中数据拥有方获取的哈希种子,其中包括前向哈希种子FHS和后向哈希种子BHS。数据拥有方为每个单位时长生成哈希值的方法可以包括:
首先,数据拥有方获取前向哈希链以及后向哈希链。
其中,前向哈希链包括m*n个前向哈希值,定义i为从获取第一个口令开始,所有口令包括的单位时长按照时间序列的总序号,例如,第3个口令有效期包括的第1个单位时长的总序号为i=9,并且,定义r为从获取第一个口令开始,口令在m个口令中的序号,例如,上述第一口令pw'0在口令中的序号为r=2。
基于此,前向哈希链中的第i个前向哈希值为将前向哈希种子执行i次哈希运算的结果,即H0(FHS)i,i=1、2…m*n,m为获取到的口令的数量,获取到的口令包括第一口令和历史口令。
后向哈希链包括m*n个后向哈希值。其中,在i不大于n的情况下,i为第一个历史口令有效期内的单位时长的序号,则后向哈希链中第i个后向哈希值为将后向哈希种子执行n-i+1次哈希运算的结果,即H0(BHS)n-i+1
在i大于n的情况下,后向哈希链中的第i个后向哈希值为将后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,即H0(BHS)(2r-1)n-i+1
图4中的FHC为口令包括历史口令pw0和第一口令pw'0时的前向哈希链示意图,BHC为口令包括历史口令pw0和第一口令pw'0时的后向哈希链示意图。其中,m=2,n=4。
如图4所示,前向哈希链FHC包括8个前向哈希值,该前向哈希链FHC中的第i个前向哈希值为将前向哈希种子执行i次哈希运算的结果,i=1、2…8。即FHC为:H0(FHS)1,H0(FHS)2,H0(FHS)3,H0(FHS)4,H0(FHS)5,H0(FHS)6,H0(FHS)6,H0(FHS)8。后向哈希链BHC包括8个后向哈希值。如图4所示,按照上述方法计算可得BHC为:H0(BHS)4,H0(BHS)3,H0(BHS)2,H0(BHS)1,H0(BHS)8,H0(BHS)7,H0(BHS)6,H0(BHS)5
进一步,数据拥有方为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在第一口令中的序号。
当数据拥有方按照时间序列为每一单位时长分配哈希值时,该单位时长的总序号为j。
若j不大于n,则当前第一口令为获取的第一个口令,此时m=1,j=k,第j个单位时长即为第一个口令中的第k个单位时长,分配前向哈希链中的第k个前向哈希值和后向哈希链中的第k个后向哈希值即可。
若j大于n,则当前第一口令为获取的第m个口令,第j个单位时长即为第m个口令中的第k个单位时长,分配前向哈希链中的第(m-1)*n+k个前向哈希值和后向哈希链中的第(m-1)*n+k个后向哈希值即可。
图4中示例了OHBT(1)、OHBT(2)、FHC和BHC的对应关系。在j不大于4的情况下,前向哈希链FHC和后向哈希链BHC对应的是OHBT(1)中的各个末端叶子节点。在j大于4的情况下,前向哈希链FHC和后向哈希链BHC对应的是OHBT(2)中的各个末端叶子节点。其中,数据拥有方为第j(j=1,2,3,4)个单位时长,分配上述FHC中的第j(j=1,2,3,4)个前向哈希值和上述BHC中的第j(j=1,2,3,4)个后向哈希值。数据拥有方为第j(j=5,6,7,8)个单位时长,分配上述FHC中的第j(j=5,6,7,8)个前向哈希值和上述BHC中的第j(j=5,6,7,8)个后向哈希值。
S106、数据拥有方依据每个单位时长的第一类密钥和哈希值,生成每个单位时长的密钥。
具体地,定义任一个单位时长的密钥为该单位时长的第一类密钥、该单位时长的前向哈希值、以及该单位时长的后向哈希值的加和。
以图4为例,计算前4个单位时长的密钥如下:
deki=K1(i-1)+H0(FH S)i+H0(BHS)n-i+1
式中,deki(i=1,2,3,4)为第i个单位时长的密钥,K1(i-1)为第i个单位时长的第一类密钥,H0(FH S)i为第i个单位时长的前向哈希值,H0(BHS)n-i+1为第i个单位时长的后向哈希值。
计算后4个单位时长的密钥如下:
deki=K'1(i-n-1)+H0(FH S)i+H0(BHS)(2r-1)n-i+1
式中,deki(i=4,5,6,7)为第i个单位时长的密钥,K'1(i-n-1)为第i个单位时长的第一类密钥,H0(FH S)i为第i个单位时长的前向哈希值,H0(BHS)(2r-1)n-i+1为第i个单位时长的后向哈希值。
S107、数据拥有方使用任意一个单位时长的密钥,加密该单位时长内的数据。即,当外包任一单位时长TPi内产生或制作的数据至云服务器时,应用该单位时长的密钥deki,并应用共享参数中的对称加密函数E(*),将TPi内的数据加密,生成数据密文。进一步,将该数据密文以及时间戳发送至云服务器,其中每一数据密文的时间戳为该数据密文对应的时间。
本申请实施例还提供的加密方法还可以加密关键字。如图5所示,图5为本申请实施例提供的一种关键字加密方法的信令图。具体可以包括:
S501、数据拥有方从数据中提取关键字信息。
具体地,一般情况下,单位时长内会产生海量的数据,可以提取每一单位时长内数据的关键字信息,可选地,针对任一单位时长内的数据,其关键字信息中包括至少一个关键字,每一关键字可以由关键字名称和关键字值组成。例如关键字信息为W,W可以为一个包括多个关键字的集合,其中每一关键字Wε为集合中第ε个关键字,该关键字由关键字名称WεN以及关键字值WεV组成。
S502、数据拥有方使用数据拥有方的私钥和可信服务器提供的共享参数,加密关键字信息。
其中,数据拥有方的私钥sk0和共享参数(pp中的任一项参数)可以从可信服务服务器获取。上述已经对共享参数的获取步骤进行介绍,本步骤可以直接使用。
具体地,数据拥有方随机选择s,r1,r2,...,rX∈zp,并计算关键字密文如下:
CTW=(CT,CT0,{CTε,1,CTε,2,CTε,3}ε∈[X])
式中,X为关键字的个数,CT=e(g,g)αs,CT0=gs
Figure BDA0002216949700000201
Figure BDA0002216949700000202
S503、数据拥有方发送信息至云服务器。
具体地,数据拥有方发送的信息包括S107中加密数据得到的数据密文、S502加密关键字得到的关键字密文。另外,信息还包括:关键字信息和数据的时间戳。
从上述的技术方案可以看出,本申请实施例提供的加密方法,由数据拥有方为每个数据请求方分配授权时段,基于口令生成每个单位时长的密钥,使用密钥对所有单位时长产生的数据进行加密,并且将加密的数据上传至云服务器。由此,本方法提供了一种数据拥有方按照时间序列生成不同的密钥从而加密不同单位时长内数据,并上传云端实现共享的方案。并且,本申请提供的加密方法中的口令具有有效期,并且支持数据拥有方更新口令。从而提高了安全性。
进一步,本申请实施例提供的加密方法通过加密关键字,支持数据请求方按照关键字检索在授权范围内感兴趣的部分数据,降低数据传输量,并且可以减少带宽成本。
图6为本申请实施例提供的密钥信息提供方法的信令图。结合图6对密钥信息提供方法进行介绍,具体可以包括:
S601、可信服务器接收数据请求方发送的陷门信息请求。
具体地,当数据请求方请求共享的数据时,将发送陷门信息请求至可信服务器,该陷门信息请求中包括数据请求方的标识。可信服务器接收数据请求方发送的陷门信息请求后依据该标识,验证数据请求方的身份是否合法。例如,数据请求方的标识集合为U,接收的数据请求方的标识为UIDu,若UIDu∈U,则身份验证通过。
另外,陷门信息请求中还包括数据请求方输入的关键字信息。
S602、可信服务器获取数据拥有方为数据请求方分配的授权时段。
具体地,第一口令有效期内包括的各个单位时长对应的数据由不同的密钥加密,因此,数据拥有方为每个数据请求方分配授权时段,每一数据请求方的授权时段包括至少一个单位时长。例如,(UID3,{访问时间段:TP3-TP5}),表示数据请求方UID3可以访问如图2所示的单位时长TP3、TP4和TP5内生成的数据。可选地,每一数据请求方都对应于一个授权时段,由此数据拥有方可以生成所有数据请求方与其授权时段的对应关系。数据拥有方可以进一步将该对应关系发送至可信服务器和云服务器。可选地,也可由可信服务器将该对应关系发送至云服务器。
本步骤中,可信服务器可以基于数据请求方的标识,从上述所有数据请求方与其授权时段的对应关系中查询该数据请求方对应的授权时段。例如,陷门信息请求中包括的数据请求方的标识为UID3,则可信服务器从上述对应关系中查询得到数据拥有方为UID3分配的授权时段包括单位时长TP3、TP4和TP5。
S603、可信服务器依据已获取的参数,生成数据请求方的陷门信息。
其中,已获取的参数包括数据请求方的标识UIDu、数据拥有方的标识UID0和可信服务器预先生成的共享参数pp,还可以包括关键字信息。
预设的关键字的线性秘密共享访问结构为LASMρW=(M,ρ,{Wρ(δ)}),其中,ρ为将Mδ映射至通用关键字名称的函数,即关键字名称为{ρ(δ)|δ∈[l]},其对应的关键字值为Wρ(δ)
当数据请求方的身份认证通过后,可信服务器选择一个向量
Figure BDA0002216949700000221
其中,y2,y3,...,yη∈Zp,设主私钥α的秘密共享份额的向量为
Figure BDA0002216949700000222
选择t0,t1,t2,...,tl∈Zp。另外,获取的参数具体包括:共享参数pp、主私有参数msk、云服务器的公钥pks、数据请求方的口令pwu、云服务器的标识UIDs、数据请求方的标识UIDu、数据拥有方的标识UID0
基于上述所有参数可信服务器计算:
Figure BDA0002216949700000223
进一步,可信服务器生成的陷门信息如下:
TDW=(UIDu,(M,ρ),{Tδ,0,Tδ,1,Tδ,2,Tδ,3}δ∈l,T4,T5)
式中:
Figure BDA0002216949700000224
Figure BDA0002216949700000225
Figure BDA0002216949700000226
Figure BDA0002216949700000227
Figure BDA0002216949700000228
Figure BDA0002216949700000229
S604、可信服务器获取口令的有效期内的每个单位时长的第一类密钥和哈希值。
具体地,口令的有效期内的任意一个单位时长的第一类密钥,依据由口令获取的密钥种子生成。因此,可信服务器首先生成密钥种子,生成方法为与数据拥有方协商生成。如图3所示,在S307之后,继续执行下述步骤:
S308、数据拥有方在第二验证参数验证通过后,依据生成参数和共享参数生成第三验证参数。
具体地,数据拥有方验证第二验证参数通过后,进一步计算ak0=Fσ'(2),其中,ak0即为生成的第三验证参数。
S309、数据拥有方将第三验证参数发送至可信服务器。
具体地,数据拥有方将上述第三验证参数ak0发送至可信服务器,同时,再次将数据拥有方的标识UID0发送至可信服务器。
S310、可信服务器接收数据拥有方发送的第三验证参数,并且验证第三验证参数。并在第三验证参数验证通过后,依据生成参数生成密钥种子。
具体地,可信服务器验证ak0是否等于Fσ(2)。若ak0=Fσ(2),则验证通过,可信服务器进一步计算Kseed=Fσ'(3)。
显然,当上述第一验证参数、第二验证参数和第三验证参数均验证通过后,可信服务器计算的Kseed=Fσ'(3)和数据拥有方计算的Kseed=Fσ'(3)相等。
S311、可信服务器永久保存密钥种子。
可以理解的是,任一历史口令或当前第一口令触发生成的所有密钥种子,都将由可信服务器永久保存,直到相关数据文件从云服务器中删除。由此,确保在当前单位时长之后任何数据请求方也可以正常访问这些在该当前单位时长制作的文件。
进一步,可信服务器依据密钥种子生成每一单位时长的第一类密钥的过程具体可以参照S104中数据拥有方生成第一类密钥的过程,本申请实施例不做赘述。并且,可信服务器生成单位时长的哈希值的方法具体可以参照S105中数据拥有方生成哈希值的过程,本申请实施例不做赘述。
S605、可信服务器确定密钥参数以及哈希参数。
具体地,用于获取授权时段包括的各个单位时长的第一类密钥,确定密钥参数的方法为:
可信服务器确定为授权时段包括的各个单位时长分配的最末端叶子节点,作为目标叶子节点。并将目标叶子节点的最低层公共祖先节点,作为密钥参数。
哈希参数用于获取授权时段包括的各个单位时长的哈希值,确定哈希参数的方法为:
可信服务器将授权时段中最早的单位时长的前向哈希值,作为前向哈希参数,将授权时段中最新有效期中最早的单位时长的后向哈希值,作为后向哈希参数,最新有效期为最新的口令的有效期。由此,将前向哈希参数和后向哈希参数,作为哈希参数。
以图4为例,其中,数据请求方的授权时段包括TP1、TP2、TP5、TP6、TP7、TP8一共6个预设单位时长,可信服务器确定在单向散列二叉树上为上述6个单位时长分配的叶子节点,如图4所示的阴影叶子节点K10、K11、K'10、K'11、K'12、K'13,其中,目标叶子节点K10、K11的最低层公共祖先节点为K00,目标叶子节点K'10、K'11、K'12、K'13的最低层公共祖先节点为K'seed。则,密钥参数为{K00,K'seed}。
可以理解的是,基于OHBT(1)以及OHBT(2),在获取授权时段中包括的各个单位时长的情况下,可以利用密钥参数检索各单位时长对应的末端子节点,由此可以获得个单位时长的第一类密钥。
授权时段内的口令有效期包括历史口令有效期内的TP1、TP2以及最新的口令的有效期TP5、TP6、TP7、TP8。将最早的单位时长TP1的前向哈希值H0(FHS)1,作为前向哈希参数,将授权时段中最新有效期中最早的单位时长TP5的后向哈希值H0(BHS)8作为后向哈希参数。则,哈希参数为{H0(FHS)1,H0(BHS)8}。
可以理解的是,基于FHC以及BHC,在获取授权时段中包括的各个单位时长的情况下,可以利用哈希参数,迭代生成各单位时长的哈希值。
S606、可信服务器将密钥信息发送至数据请求方。
具体地,可信服务器将陷门信息、密钥参数和哈希参数发送至数据请求方。可选地,可信服务器在发送密钥信息之前还可以使用数据请求方的口令(pwu)以及适当带完整性保护的算法(E(*))将密钥参数和哈希参数加密。
从上述技术方案可以看出,本申请实施例提供的密钥信息提供方法,由可信服务器基于密钥种子以及哈希种子管理所有单位时长的密钥,并且,可信服务器永久保存所有口令(历史口令和第一口令)的密钥种子,使得密钥可以追溯,提高了抵抗破解攻击的能力,大大提高了云服务的安全性。同时,使用可信服务器基于口令的方式管理所有密钥,不需要安装或使用额外的用户认证方法,提高用户友好性。
图7为本申请实施例提供的一种数据获取方法的信令图。具体可以包括:
S701、数据请求方从可信服务器获取密钥信息,并将陷门信息发送至云服务器。
其中,密钥信息包括陷门信息TDW、密钥参数和哈希参数。其中:陷门信息为TDW=(UIDu,(M,ρ),{Tδ,0,Tδ,1,Tδ,2,Tδ,3}δ∈l,T4,T5)。
S702、云服务器接收陷门信息并对陷门信息进行验证,验证通过后,发送数据密文至数据请求方。
其中,上述可知云服务器中保存有数据拥有方为每个数据请求方分配的授权时段,所以云服务器在接收到陷门信息后,依据其中的该数据请求方的标识,确定该数据请求方的授权时段。并检索数据库中所有数据密文的时间戳,以查找在数据库中是否存储有该授权时段内的数据密文。
如果没有存储该授权时段内的数据密文,则验证失败。云服务器无数据输出,并且云服务器可以发送无数据输出的消息至数据请求方。
如果数据库中存储有该授权时段内的数据密文,则云服务器从陷门信息中的(M,ρ)生成集合IM,ρ,其中,IM,ρ为一组满足(M,ρ)的最小子集的集合。
云服务器检查是否存在
Figure BDA0002216949700000251
使得常数
Figure BDA0002216949700000252
满足:
Figure BDA0002216949700000253
使下述等式成立:
e(g,Tθ,3)=e(pku,Tθ,1)
e(g,CTτ,3)=e(pk0,CTτ,2)
Figure BDA0002216949700000254
其中τ为关键字ρ(θ)在CTW中的索引,τ可以通过遍历的方式将关键字名称ρ(θ)与附加在CTW上的通用关键字名称进行比较来计算得出,取决于θ。
若不存在
Figure BDA0002216949700000255
使得上述各等式成立,则验证失败。云服务器无数据输出,并且云服务器可以发送无数据输出的消息至数据请求方。
若存在
Figure BDA0002216949700000256
使得上述各等式成立,则验证成功。云服务器输出相关的数据密文至数据请求方。
S703、数据请求方使用密钥参数获取第一类密钥,使用哈希参数获取哈希值。
具体地,密钥参数中包括数据请求方授权时段内的所有单位时长在单向散列二叉树中,对应的叶子节点的最低层公共祖先节点。因此,数据请求方可以依据密钥参数以及单向散列二叉树构建算法,由密钥参数构建单向散列二叉树的最末端叶子节点,得到授权时段中的每个单位时长的第一类密钥。
其中,单向散列二叉树构建算法预先配置在数据请求方、可信服务器和数据拥有方。具体地构建单向散列二叉树的方法及过程可以参照上述S104。
哈希参数为数据请求方的授权时段的有效期内的第一个单位时长的前向哈希值和后向哈希值。因此,数据请求方依据哈希参数和哈希链生成算法,生成授权时段中的每个单位时长的哈希值。其中,哈希链生成算法预先配置在数据请求方、可信服务器和数据拥有方。
例如,数据请求方获取的密钥参数为{K00,K'seed},哈希参数为{H0(FHS)1,H0(BHS)8}。
数据请求方使用密钥参数中的K00和K'seed,基于单向散列二叉树构建算法,构建单向散列二叉树的最末端叶子节点为K00的所有最末端子节点K10和K11,以及K'seed的所有最末端子节点为K'10、K'11、K'12和K'13。进一步,数据请求方根据授权时段从上述所有最末端子节点中获取授权时段内的第一类密钥。例如,当数据请求方的授权时段为TP1、TP2、TP5、TP6、TP7、TP8时,获取对应的第一类密钥:K10、K11、K'10、K'11、K'12、K'13
数据请求方基于哈希链生成算法生成前向哈希链以及后向哈希链,并使用哈希参数中的H0(FHS)1以及H0(BHS)8,迭代使用哈希运算,生成授权时段内的每个单位时长的前向哈希值。例如,当数据请求方的授权时段为TP1、TP2、TP5、TP6、TP7、TP8时,获取对应的前向哈希值分别为:H0(FHS)1,H0(FHS)2,H0(FHS)5,H0(FHS)6,H0(FHS)7,H0(FHS)8。后向哈希值分别为:H0(BHS)4,H0(BHS)3,H0(BHS)8,H0(BHS)7,H0(BHS)6,H0(BHS)5
S704、数据请求方使用第一类密钥和哈希值生成密钥,并使用密钥解密数据密文,得到数据。
具体地,密钥为第一类密钥、前向哈希值以及后向哈希值的加和。使用每一单位时长的密钥解密时间戳为该单位时长的数据密文,得到数据。
例如,上述TP1的密钥为:dek1=K'10+H0(FHS)1+H0(BHS)4,使用该密钥可以解密时间戳为TP1的数据密文,得到数据。
从上述技术方案可以看出,本申请实施例提供的数据获取方法,由数据请求方发送陷门信息至云服务器,并接收云服务器发送的满足要求的数据密文。进一步,数据请求方可以基于密钥参数和哈希参数获取授权时段内的单位时长的密钥,由此减少与可信服务器的通信次数,降低网络开销并且大大降低了通信过程中的安全风险。
本申请实施例还提供了一种加密装置,下面对本申请实施例提供的加密装置进行描述,下文描述的加密装置与上文描述的加密方法可相互对应参照。
请参阅图8,示出了本申请实施例提供的一种加密装置的结构示意图,如图8所示,该装置可以包括:
口令获取模块801,用于获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
种子获取模块802,用于获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
第一类密钥生成模块803,用于依据所述密钥种子,为每个所述单位时长生成第一类密钥;
哈希值生成模块804,用于依据所述哈希种子,为每个所述单位时长生成哈希值;
密钥生成模块805,用于依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
数据加密模块806,用于使用任意一个单位时长的密钥,加密该单位时长内的数据。
本申请实施例还提供了一种密钥信息提供装置,下面对本申请实施例提供的密钥信息提供装置进行描述,下文描述的密钥信息提供装置与上文描述的密钥信息提供方法可相互对应参照。
请参阅图9,示出了本申请实施例提供的一种密钥信息提供装置的结构示意图,如图9所示,该装置可以包括:
信息请求接收模块901,用于接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
陷门信息生成模块902,用于依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
授权时段获取模块903,用于获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
哈希值获取模块904,用于获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
密钥参数确定模块905,用于确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
哈希参数确定模块906,用于确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
密钥信息发送模块907,用于将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
本申请实施例还提供了一种数据获取装置,下面对本申请实施例提供的数据获取装置进行描述,下文描述的数据获取装置与上文描述的数据获取方法可相互对应参照。
请参阅图10,示出了本申请实施例提供的一种数据获取装置的结构示意图,如图10所示,该装置可以包括:
密钥信息获取模块1001,用于从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的模块,用于将所述陷门信息发送至云服务器;
数据密文接收模块1002,用于接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
第一类密钥获取模块1003,用于使用所述密钥参数获取第一类密钥;
哈希值获取模块1004,用于使用所述哈希参数获取哈希值;
密钥生成模块1005,用于使用所述第一类密钥和所述哈希值,生成密钥;
数据解密模块1006,用于使用所述密钥解密所述数据密文,得到数据。
本申请实施例还提供了一种设备,请参阅图11,示出了该设备的结构示意图,该设备可以包括:至少一个处理器1101,至少一个通信接口1102,至少一个存储器1103和至少一个通信总线1104;
在本申请实施例中,处理器1101、通信接口1102、存储器1103、通信总线1104的数量为至少一个,且处理器1101、通信接口1102、存储器1103通过通信总线1104完成相互间的通信;
处理器1101可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器1103可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
依据所述密钥种子,为每个所述单位时长生成第一类密钥;
依据所述哈希种子,为每个所述单位时长生成哈希值;
依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
使用任意一个单位时长的密钥,加密该单位时长内的数据。
所述程序还可以用于:
接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
所述程序还可以用于:
从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数生成;
将所述陷门信息发送至云服务器;
接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
使用所述密钥参数获取第一类密钥;
使用所述哈希参数获取哈希值;
使用所述第一类密钥和所述哈希值,生成密钥;
使用所述密钥解密所述数据密文,得到数据。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:
获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
依据所述密钥种子,为每个所述单位时长生成第一类密钥;
依据所述哈希种子,为每个所述单位时长生成哈希值;
依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
使用任意一个单位时长的密钥,加密该单位时长内的数据。
所述程序还可以用于:
接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
所述程序还可以用于:
从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数生成;
将所述陷门信息发送至云服务器;
接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
使用所述密钥参数获取第一类密钥;
使用所述哈希参数获取哈希值;
使用所述第一类密钥和所述哈希值,生成密钥;
使用所述密钥解密所述数据密文,得到数据。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (21)

1.一种加密方法,其特征在于,由数据拥有方执行,包括:
获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
依据所述密钥种子,为每个所述单位时长生成第一类密钥;
依据所述哈希种子,为每个所述单位时长生成哈希值;
依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
使用任意一个单位时长的密钥,加密该单位时长内的数据。
2.根据权利要求1所述的方法,其特征在于,所述获取密钥种子,包括:
使用可信服务器提供的共享参数和所述第一口令生成第一验证参数;
向所述可信服务器发送所述第一验证参数;
接收所述可信服务器发送的第二验证参数和生成参数,所述第二验证参数由所述可信服务器在所述第一验证参数验证通过的情况下,依据所述第一验证参数和所述共享参数生成,所述生成参数依据所述共享参数生成;
在所述第二验证参数验证通过后,依据所述生成参数生成所述密钥种子。
3.根据权利要求1或2所述的方法,其特征在于,所述依据所述密钥种子,为每个所述单位时长生成第一类密钥,包括:
构建单向散列二叉树,所述单向散列二叉树的根节点为所述密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,所述单向散列二叉树的各节点的值不同,所述单向散列二叉树的最末端叶子节点的数量为n;
按照预设的叶子节点与所述单位时长在所述口令中的序号的对应关系,为每个所述单位时长唯一分配一个所述最末端叶子节点。
4.根据权利要求1所述的方法,其特征在于,获取所述哈希种子,包括:
接收可信服务器发送的哈希种子,所述哈希种子由所述可信服务器使用所述数据拥有方的私钥进行哈希运算得到,所述数据拥有方的私钥由所述可信服务器生成。
5.根据权利要求1或4所述的方法,其特征在于,所述哈希种子包括前向哈希种子和后向哈希种子,所述前向哈希种子为对所述私钥执行第一数量的哈希运算得到,所述后向哈希种子为对所述私钥执行第二数量的哈希运算得到;
所述依据所述哈希种子,为每个所述单位时长生成哈希值,包括:
获取前向哈希链,所述前向哈希链包括m*n个前向哈希值,所述前向哈希链中的第i个前向哈希值为将所述前向哈希种子执行i次哈希运算的结果,i=1、2…m*n,m为获取到的口令的数量,所述获取到的口令包括所述第一口令和历史口令;
获取后向哈希链,所述后向哈希链包括m*n个后向哈希值,在i不大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行n-i+1次哈希运算的结果,在i大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,r为所述第一口令在所述口令中的序号;
为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在第一口令中的序号。
6.根据权利要求1所述的方法,其特征在于,还包括:
从所述数据中提取关键字信息;
使用所述数据拥有方的私钥和可信服务器提供的共享参数,加密所述关键字信息;
发送信息至云服务器,所述信息包括加密所述数据得到的密文、加密所述关键字得到的密文、所述关键字信息和所述数据的时间戳。
7.一种密钥信息提供方法,其特征在于,由可信服务器执行,包括:
接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
8.根据权利要求7所述的方法,其特征在于,所述获取所述口令的有效期内的每个所述单位时长的第一类密钥,包括:
与所述数据拥有方协商生成所述密钥种子;
构建单向散列二叉树,所述单向散列二叉树的根节点为所述密钥种子,任意一个叶子节点依据上一级父节点进行哈希运算生成,所述单向散列二叉树的各节点的值不同,所述单向散列二叉树的最末端叶子节点的数量,为所述口令的有效期内的所述单位时长的数量;
按照预设的叶子节点与所述单位时长在所述口令中的序号的对应关系,为每个所述单位时长唯一分配一个所述最末端叶子节点。
9.根据权利要求8所述的方法,其特征在于,所述确定密钥参数,包括:
确定为所述授权时段包括的各个所述单位时长分配的最末端叶子节点,作为目标叶子节点;
将所述目标叶子节点的最低层公共祖先节点,作为所述密钥参数。
10.根据权利要求8所述的方法,其特征在于,所述可信服务器与所述数据拥有方协商生成所述密钥种子,包括:
接收所述数据拥有方发送的第一验证参数,所述第一验证参数使用预先生成的共享参数和第一口令生成;
在所述第一验证参数验证通过的情况下,依据所述第一验证参数和所述共享参数生成第二验证参数;
依据所述共享参数生成生成参数;
将所述第二验证参数和所述生成参数发送至所述数据拥有方;
接收所述数据拥有方发送的第三验证参数,所述第三验证参数在所述第二验证参数验证通过后,由所述数据拥有方依据所述生成参数和所述共享参数生成;
在所述第三验证参数验证通过后,依据所述生成参数生成所述密钥种子;
永久保存所述密钥种子。
11.根据权利要求7所述的方法,其特征在于,所述哈希种子包括前向哈希种子和后向哈希种子,所述前向哈希种子为对所述私钥执行第一数量的哈希运算得到,所述后向哈希种子为对所述私钥执行第二数量的哈希运算得到;
获取所述口令的有效期内的每个所述单位时长的哈希值的过程,包括:
获取前向哈希链,所述前向哈希链包括m*n个前向哈希值,所述前向哈希链中的第i个前向哈希值为将所述前向哈希种子执行i次哈希运算的结果,i=1、2…m*n,m为获取到的口令的数量,所述获取到的口令包括第一口令和历史口令;
获取后向哈希链,所述后向哈希链包括m*n个后向哈希值,在i不大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行n-i+1次哈希运算的结果,在i大于n的情况下,所述后向哈希链中的第i个后向哈希值为将所述后向哈希种子执行(2r-1)*n-i+1次哈希运算的结果,r为所述第一口令在所述口令中的序号;
为第j个单位时长,分配第j个前向哈希值和第j个后向哈希值,其中,j=(m-1)*n+k,k为单位时长在所述第一口令中的序号。
12.根据权利要求11所述的方法,其特征在于,所述确定哈希参数,包括:
将所述授权时段中最早的单位时长的前向哈希值,作为前向哈希参数;
将所述授权时段中最新有效期中最早的单位时长的后向哈希值,作为后向哈希参数,所述最新有效期为最新的口令的有效期;
将所述前向哈希参数和所述后向哈希参数,作为所述哈希参数。
13.根据权利要求7所述的方法,其特征在于,所述陷门信息请求中还包括:
关键字信息,所述关键字信息用于检索请求的数据;
所述已获取的参数还包括:
关键字信息。
14.一种数据获取方法,其特征在于,由数据请求方执行,包括:
从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数生成;
将所述陷门信息发送至云服务器;
接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
使用所述密钥参数获取第一类密钥;
使用所述哈希参数获取哈希值;
使用所述第一类密钥和所述哈希值,生成密钥;
使用所述密钥解密所述数据密文,得到数据。
15.根据权利要求14所述的方法,其特征在于,所述使用所述密钥参数获取第一类密钥,包括:
依据所述密钥参数以及单向散列二叉树构建算法,由所述密钥参数构建单向散列二叉树的最末端叶子节点,得到授权时段中的每个单位时长的第一类密钥,所述单向散列二叉树构建算法预先配置在所述数据请求方、所述可信服务器和所述数据拥有方。
16.根据权利要求14所述的方法,其特征在于,所述哈希参数为所述数据请求方的授权时段的有效期内的第一个单位时长的前向哈希值和后向哈希值;
所述使用所述哈希参数获取哈希值,包括:
依据所述哈希参数和哈希链生成算法,生成所述授权时段中的每个单位时长的哈希值,所述哈希链生成算法预先配置在所述数据请求方、所述可信服务器和所述数据拥有方。
17.一种加密装置,其特征在于,应用于数据拥有方,包括:
口令获取模块,用于获取第一口令,所述第一口令的有效期包括n个预设的单位时长,n为大于0的整数;
种子获取模块,用于获取密钥种子和哈希种子,所述密钥种子由所述第一口令触发生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
第一类密钥生成模块,用于依据所述密钥种子,为每个所述单位时长生成第一类密钥;
哈希值生成模块,用于依据所述哈希种子,为每个所述单位时长生成哈希值;
密钥生成模块,用于依据每个所述单位时长的所述第一类密钥和所述哈希值,生成每个所述单位时长的密钥,其中,任意一个所述单位时长的密钥依据该单位时长的所述第一类密钥和所述哈希值生成;
数据加密模块,用于使用任意一个单位时长的密钥,加密该单位时长内的数据。
18.一种密钥信息提供装置,其特征在于,应用于可信服务器,包括:
信息请求接收模块,用于接收数据请求方发送的陷门信息请求,所述陷门信息请求中包括所述数据请求方的标识;
陷门信息生成模块,用于依据已获取的参数,生成所述数据请求方的陷门信息,所述已获取的参数包括所述数据请求方的标识、数据拥有方的标识和所述可信服务器预先生成的共享参数;
授权时段获取模块,用于获取所述数据拥有方为所述数据请求方分配的授权时段,所述授权时段包含在所述数据请求方的口令的有效期内,所述口令的有效期包括至少一个预设的单位时长,所述授权时段包括至少一个所述单位时长;
哈希值获取模块,用于获取所述口令的有效期内的每个所述单位时长的第一类密钥和哈希值;其中,所述口令的有效期内的任意一个所述单位时长的第一类密钥,依据由所述口令获取的密钥种子生成,所述口令的有效期内的任意一个所述单位时长的哈希值依据哈希种子生成,所述哈希种子通过对所述数据拥有方的私钥进行哈希运算得到;
密钥参数确定模块,用于确定密钥参数,所述密钥参数用于获取所述授权时段包括的各个所述单位时长的第一类密钥;
哈希参数确定模块,用于确定哈希参数,所述哈希参数用于获取所述授权时段包括的各个所述单位时长的哈希值;
密钥信息发送模块,用于将密钥信息发送至所述数据请求方,所述密钥信息包括所述陷门信息、所述密钥参数和所述哈希参数。
19.一种数据获取装置,其特征在于,应用于数据请求方,包括:
密钥信息获取模块,用于从可信服务器获取密钥信息,所述密钥信息包括陷门信息、密钥参数和哈希参数,所述陷门信息依据所述数据请求方的标识、数据拥有方的模块,用于将所述陷门信息发送至云服务器;
数据密文接收模块,用于接收所述云服务器发送的数据密文,所述数据密文在所述云服务器验证所述陷门信息通过后发送;
第一类密钥获取模块,用于使用所述密钥参数获取第一类密钥;
哈希值获取模块,用于使用所述哈希参数获取哈希值;
密钥生成模块,用于使用所述第一类密钥和所述哈希值,生成密钥;
数据解密模块,用于使用所述密钥解密所述数据密文,得到数据。
20.一种加密设备,其特征在于,包括存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1-6或7-13或14-16中任一项所述的方法的各个步骤。
21.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-6或7-13或14-16中任一项所述的方法的各个步骤。
CN201910918688.4A 2019-09-26 2019-09-26 一种加密、密钥信息提供以及数据获取方法、装置 Active CN110611570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910918688.4A CN110611570B (zh) 2019-09-26 2019-09-26 一种加密、密钥信息提供以及数据获取方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910918688.4A CN110611570B (zh) 2019-09-26 2019-09-26 一种加密、密钥信息提供以及数据获取方法、装置

Publications (2)

Publication Number Publication Date
CN110611570A CN110611570A (zh) 2019-12-24
CN110611570B true CN110611570B (zh) 2022-03-22

Family

ID=68893578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910918688.4A Active CN110611570B (zh) 2019-09-26 2019-09-26 一种加密、密钥信息提供以及数据获取方法、装置

Country Status (1)

Country Link
CN (1) CN110611570B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111865832B (zh) * 2020-07-23 2023-01-17 咪咕文化科技有限公司 一种资源分配的方法、终端、服务器及存储介质
CN113792332A (zh) * 2021-08-31 2021-12-14 远光软件股份有限公司 一种数据访问控制的方法及相关装置
CN113468585B (zh) * 2021-09-02 2021-11-19 国网浙江省电力有限公司营销服务中心 基于能源密匙表的加密方法、装置及存储介质
CN114553412B (zh) * 2022-02-28 2024-02-23 百果园技术(新加坡)有限公司 一种数据传输方法、装置、设备及存储介质
CN114629661B (zh) * 2022-04-27 2024-02-23 中国科学技术大学 加密信息处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101330379B (zh) * 2007-06-22 2011-02-09 华为技术有限公司 一种密钥下发方法和设备
US8340280B2 (en) * 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
CN108599937B (zh) * 2018-04-20 2020-10-09 西安电子科技大学 一种多关键字可搜索的公钥加密方法
CN108650549B (zh) * 2018-05-09 2020-10-23 深圳市汇星数字技术有限公司 数字电视数据管理方法及系统
CN109347832A (zh) * 2018-10-24 2019-02-15 中国银行股份有限公司 一种动态数据共享方法、终端设备及代理服务器

Also Published As

Publication number Publication date
CN110611570A (zh) 2019-12-24

Similar Documents

Publication Publication Date Title
CN110611570B (zh) 一种加密、密钥信息提供以及数据获取方法、装置
CN103731432B (zh) 一种支持多用户的可搜索加密方法
CN108768951B (zh) 一种云环境下保护文件隐私的数据加密和检索方法
Örencik et al. Efficient and secure ranked multi-keyword search on encrypted cloud data
CN109768987A (zh) 一种基于区块链的数据文件安全隐私存储和分享方法
CN111447209B (zh) 一种黑盒可追踪密文策略属性基加密方法
WO2016197769A1 (zh) 一种基于表格属性的云存储密文访问控制系统
CN111431898B (zh) 用于云协助物联网的带搜索的多属性机构属性基加密方法
JP2005537711A (ja) 証明書に基づく暗号化および公開鍵構造基盤
CN108092972B (zh) 一种多授权中心基于属性的可搜索加密方法
CN107465681B (zh) 云计算大数据隐私保护方法
CN108197499B (zh) 一种可验证的密文数据范围查询方法
CN108632385B (zh) 基于时间序列的多叉树数据索引结构云存储隐私保护方法
RuWei et al. Study of privacy-preserving framework for cloud storage
CN114244838B (zh) 区块链数据的加密方法及系统、解密方法、装置及设备
CN104168320B (zh) 一种用户数据分享的方法和系统
WO2022025822A1 (en) Cloud data sharing systems and methods for sharing data using the systems
CN107294701B (zh) 具有高效密钥管理的多维密文区间查询装置及查询方法
CN109740383B (zh) 一种面向雾计算医疗系统的隐私保护控制方法
CN109743327B (zh) 基于无证书的云存储中共享数据的完整性公开验证方法
CN109783456B (zh) 去重结构搭建方法、去重方法、文件取回方法、去重系统
Al-Sakran Accessing secured data in cloud computing environment
Zhang et al. KT-ORAM: A bandwidth-efficient ORAM built on k-ary tree of PIR nodes
CN107203723B (zh) 基于散列表方法的多公共云上的文件存储及其检索方法
CN107395609B (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