CN106664202A - 提供多个设备上的加密的方法、***和计算机程序产品 - Google Patents
提供多个设备上的加密的方法、***和计算机程序产品 Download PDFInfo
- Publication number
- CN106664202A CN106664202A CN201580043471.3A CN201580043471A CN106664202A CN 106664202 A CN106664202 A CN 106664202A CN 201580043471 A CN201580043471 A CN 201580043471A CN 106664202 A CN106664202 A CN 106664202A
- Authority
- CN
- China
- Prior art keywords
- user
- key
- equipment
- encryption
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 185
- 238000004590 computer program Methods 0.000 title claims description 58
- 230000015654 memory Effects 0.000 claims description 131
- 230000008569 process Effects 0.000 claims description 53
- 238000009434 installation Methods 0.000 claims description 5
- 230000029058 respiratory gaseous exchange Effects 0.000 claims 1
- 230000006854 communication Effects 0.000 abstract description 13
- 238000004891 communication Methods 0.000 abstract description 12
- 239000003795 chemical substances by application Substances 0.000 description 459
- 238000011084 recovery Methods 0.000 description 119
- 238000007726 management method Methods 0.000 description 71
- 230000009471 action Effects 0.000 description 38
- 230000008859 change Effects 0.000 description 36
- 230000001360 synchronised effect Effects 0.000 description 28
- 230000006870 function Effects 0.000 description 23
- 230000005540 biological transmission Effects 0.000 description 13
- 230000004044 response Effects 0.000 description 7
- 238000012795 verification Methods 0.000 description 7
- 238000013475 authorization Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 239000003607 modifier Substances 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000002441 reversible effect Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- OGQHCUYSWDOIMP-UHFFFAOYSA-N 7-(diethylamino)-n-[2-[(2-iodoacetyl)amino]ethyl]-2-oxochromene-3-carboxamide Chemical compound C1=C(C(=O)NCCNC(=O)CI)C(=O)OC2=CC(N(CC)CC)=CC=C21 OGQHCUYSWDOIMP-UHFFFAOYSA-N 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000004075 alteration Effects 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 230000037433 frameshift Effects 0.000 description 3
- 235000012364 Peperomia pellucida Nutrition 0.000 description 2
- 240000007711 Peperomia pellucida Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 210000001525 retina Anatomy 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 108010016634 Seed Storage Proteins Proteins 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/32—User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/41—User authentication where a single sign-on provides access to a plurality of computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/062—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0892—Network architectures or network communication protocols for network security for authentication of entities by using authentication-authorization-accounting [AAA] servers or protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/12—Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3231—Biological data, e.g. fingerprint, voice or retina
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biodiversity & Conservation Biology (AREA)
- Biomedical Technology (AREA)
- Medical Informatics (AREA)
- Storage Device Security (AREA)
- Telephonic Communication Services (AREA)
Abstract
所述的实施方案涉及提供在被配置为与服务器电通信的多个设备上的数据保护和加密的方法、***和产品。具体地,所述方法、***和产品可以自动且安全地在多个设备间同步用户的文件加密/解密密钥,在从服务器接收并处理重建用户的文件加密/解密密钥所需的信息之前,在每个设备上进行用户认证。
Description
相关申请
本申请要求申请号为62/011837、提交于2014年6月13日、题为“QUARANTINEDSECURITY SYSTEMS FOR DATA PROTECTION AND SYNCHRONIZATION AND SHARING OFENCRYPTED FILES”的美国专利申请的优先权,在此通过引用方式将该美国专利申请的全部内容纳入在本申请中。
技术领域
本发明的实施方案总体涉及数据保护和加密,并且更具体地涉及用于加密的文件同步和加密的文件共享的方法。
背景技术
随着人们变得越来越依赖计算和互联网技术,数据安全变得比以往任何时间更重要。随着互联网连接变得无处不在,通过使用云来进行数据的访问(access)和分配变得相对简单。为了享受云计算的益处,个人和公司通常将数据上传到云服务器。这通常包括私有或机密数据,或者任何用户想要保护的数据。如果缺乏保护,则会增加私有且重要的数据被不必要地暴露的机率。
典型地,人们依赖于云服务提供商来确保他们数据的安全性。然而,云存储可能会有许多相关联的安全漏洞。在云安全联盟的2013年度的报告(“The notorious nine:Cloudcomputing top threats in 2013(2013年度臭名昭著的九个:云计算的顶级威胁)”,http://www.cloudsecurityalliance.org/topthreads)中,列出了包括数据泄露、数据丢失、企业内鬼以及共享技术问题等九个顶级安全威胁。这些数据安全问题是不希望的,并且会使云服务的发展变慢。
减轻数据安全问题的一种方法是通过加密。例如,在将这些文件保存且存储、上传和/或传送前,可以使用诸如WinZip和安全PDF的单机版工具来加密这些文件。没有对应的解密密钥的情况下,所加密的文件没有任何意义。
然而,使用诸如WinZip和安全PDF的单机版工具来加密文件夹中的多个文件有许多缺点。例如,可能需要用户输入密码来加密每个文件;以及输入对应的密码来解密所加密的文件以便查看和/或修改。当文件数量增加时,这种方法变得过于繁杂并且不是用户友好的。同时,如果使用不同的密码来加密不同的文件,则用户会容易混淆哪个密码解密哪个文件。此外,这些示例的加密强度取决于用户所选择的密码的强度如何。由于想出并记忆强随机密码中的困难的用户体验,用户往往会选择较弱的密码,并且最终形成的加密通常会很弱。结果,使用单机版工具加密的文件可能仍旧容易被一些复杂的攻击攻破。此外,如果忘记或丢失了密码,则难以或者不可能从加密文件恢复原始的明文文件(plaintext files,纯文本文件)。这实际上导致永久性的数据丢失。最后,当使用单机版工具来加密文件时,共享在一群人之间加密的文件会是繁杂的,并且通常需要使用侧信道来交换密码。
发明内容
根据本文所述的第一实施方案,提供了在被配置为与服务器进行电通信的多个设备上提供加密的方法,所述多个设备至少包含第一设备和第二设备。该方法可以包括为控制多个设备的第一用户生成第一账户,其中第一账户在服务器的非易失性存储器中存储账户数据,并且账户数据包括第一用户标识符和账户认证信息。该方法还能够包括:对于多个设备中的每个设备,在该设备上安装加密代理工具(agent,代理或代理客户端),并且在加密代理工具的控制下操作第一设备的处理器以随机地生成多个密钥指示符来:使用第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符,每个加密的密钥指示符与多个密钥指示符中的密钥指示符之一相对应;将多个加密的密钥指示符传送至服务器以防止将密钥指示符暴露给服务器;基于多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,所述加密代理工具能够操作来控制第一设备的处理器,以生成多个独立的加密密钥;并且基于多个密钥种子将密钥种子信息存储在第一设备的非易失性存储器中。该方法还可以包括:生成第一账户的密钥状态字符串,该密钥状态字符串包括基于多个加密的密钥指示符生成的服务器密钥指示符部分;将密钥状态字符串存储在服务器的非易失性存储器中;在第二设备处接收假定的(putative)认证信息;在安装在第二设备上的加密代理工具的控制下操作第二设备的处理器,以基于假定的认证信息生成假定的服务器认证信息并将假定的服务器认证信息传送至服务器;以及操作服务器的处理器,以将假定的服务器认证信息与账户认证信息相比较,并且在且仅在假定的服务器认证信息与账户认证信息相对应的情况下向第二设备提供对密钥状态字符串的访问。该方法还可以包括,在加密代理工具的控制下操作第二设备的处理器,以:使用第二设备解密密钥从密钥状态字符串中的多个加密的密钥指示符确定多个密钥指示符;基于多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,能够操作加密代理工具来控制第二设备的处理器,以生成与第一设备相同的多个独立的加密密钥,而不用向第二设备提供密钥种子、密钥种子信息和加密密钥中的任一种;以及基于多个密钥种子将密钥种子信息存储在第二设备的非易失性存储器上。
在一些实施方案中,该方法可以包括通过以下方式生成多个密钥种子:进一步操作服务器处理器来随机地生成第一账户的服务器密钥值,以将服务器密钥值存储在服务器的非易失性存储器中,并将该服务器密钥值传送至第一设备;以及在加密代理工具的控制下操作第一设备的处理器,以基于服务器密钥值和多个密钥指示符生成多个密钥种子;其中,服务器的处理器可***作以,在且仅在假定的服务器认证信息与账户认证信息相对应的情况下,向第二设备提供对服务器密钥值的访问;并且第二设备的处理器可以***作,以在加密代理工具的控制下,基于多个密钥指示符和服务器密钥值来生成多个密钥种子。
在一些实施方案中,该方法可以包括:在加密代理工具的控制下操作第一设备的处理器,以通过以下方式生成多个加密的密钥指示符:限定第一验证码;基于第一验证码限定第二设备加密密钥;以及使用第二设备加密密钥加密多个密钥指示符;其中第二设备解密密钥可以通过以下方式生成,即在加密代理工具的控制下操作第二设备的处理器以限定第二验证码,并且基于第二验证码生成第二设备解密密钥;并且所述第二验证码可以是所述第一验证码。
在一些实施方案中,该方法可以包括:在加密代理工具的控制下操作第一设备的处理器,以基于第一验证码生成加密的服务器代码,并将加密的服务器代码传送至服务器,以及将加密的服务器代码存储在第一账户的认证信息中,其中在第二设备处接收到的假定的认证信息可以是假定的验证码,所述假定的服务器认证信息可以是基于假定的验证码生成的假定的加密的服务器代码,并且在且仅在假定的加密的服务器代码与加密的服务器代码匹配的情况下,所述假定的服务器认证信息才与账户认证信息对应。
在一些实施方案中,该方法可以进一步包括:提供待加密且存储至第一设备的文件;在加密代理工具的控制下操作第一设备的处理器,以使用密钥信息从密钥种子信息中导出加密密钥中的一个;使用所导出的加密密钥将文件加密并将加密的文件存储到第一设备的非易失性存储器中;以及将密钥信息与加密的文件一起存储到第一设备的非易失性存储器中,其中可以在存储之前使用第一验证码将密钥种子信息加密。
在一些实施方案中,所述方法可以进一步包括:在第二设备处接收加密的文件以及密钥信息,以及在加密代理工具的控制下操作第二设备的处理器,以使用接收的密钥信息从存储在第二设备的非易失性存储器中的密钥种子信息导出加密密钥,并且使用该导出的加密密钥将加密的文件解密。
在一些实施方案中,所述方法可以进一步包括在加密代理工具接收到待要加密文件的指示时随机选择密钥信息。
在一些实施方案中,所述方法还可以包括:在加密代理工具的控制下操作第一设备的处理器,以限定第一验证码,基于该第一验证码生成加密的本地码,并将该加密的本地码存储到第一设备的非易失性存储器中。该方法可以进一步包括:随后在第一设备处接收访问文件的请求以及本地假定的验证码;以及在加密代理工具的控制下操作第一设备的处理器以生成假定的加密的本地码,将假定的加密的本地码与加密的本地码比较以确定本地假定的验证码是否是第一验证码,并且在且仅在假定的加密的本地码与加密的本地码匹配的情况下,提供对被加密代理工具加密的文件的访问。
在一些实施方案中,所述方法可以包括通过如下方式存储密钥种子信息:通过使用第一验证码将多个密钥种子加密,以及将加密的多个密钥种子存储到第一设备的非易失性存储器中。
在所述方法的一些实施方案中,第一用户可以包括多组用户,所述多组用户可以至少包括管理组用户和第二组用户。在所述方法的一些实施方案中,每组用户可以控制多个设备中的至少一个设备,其中管理组用户可以控制第一设备,而第二组用户可以控制第二设备。在所述方法的一些实施方案中,对多组用户中的每组用户,账户数据还可以包括用户专用公钥,其中每个用户的用户专用公钥可以是基于存储在多个设备的对应设备的非易失性存储器中的用户专用私钥生成的。在所述方法的一些实施方案中,对于多组用户中的每组用户,第一设备的处理器可在加密代理工具的控制下***作,以通过使用该用户的用户专用公钥生成多个用户专用的加密的密钥指示符来生成多个加密的密钥指示符。在所述方法的一些实施方案中,对于多组用户中的每组用户,第一账户的密钥状态字符串的服务器密钥指示符部分还可以包括可以基于该组用户的多个用户专用的加密密钥指示符生成的用户专用字符串部分。在所述方法的一些实施方案中,第二设备的处理器可在加密代理工具的控制下操作以使用第二设备的私钥,根据在与第二组用户对应的服务器密钥指示符部分的用户专用部分中的多个用户专用的加密密钥指示符确定多个密钥指示符。
在所述方法的一些实施方案中,对于多组用户中的每组用户,第一账户的账户认证信息可以包括用户专用的服务器加密代码。在所述方法的一些实施方案中,对于每个用户的用户专用的服务器加密代码是通过以下方式生成的,即,在加密代理工具的控制下,通过操作多个设备中的与该用户相对应的设备的处理器,以:限定用户专用验证码,基于用户专用验证码生成用户专用的服务器加密代码,并且将该用户专用的服务器加密代码传送至服务器;并将该用户专用的服务器加密代码存储在第一账户的账户认证信息中。
在所述方法的一些实施方案中,第一用户可以包括多个用户,所述多个用户进而包括控制第一设备的管理用户和控制第二设备的第二用户。在一些实施方案中,所述方法还可以包括:通过将第二用户的第二用户标识符从第一设备传送到服务器来将第二用户授权传送到第二用户;并且操作服务器的处理器:以基于第二用户标识符和第二用户密码生成第二用户注册信息,将第二用户注册信息存储在服务器的非易失性存储器中,以及将第二用户服务器授权传送至第二用户。在一些实施方案中,所述方法可以进一步包括:通过第二用户接收第二用户服务器授权,并且随后在第二设备上安装加密代理工具;在第二设备处接收假定的第二用户密码;在加密代理工具的控制下操作第二设备的处理器以基于第二用户标识符和假定的第二用户密码生成假定的第二用户注册信息,并将假定的第二用户注册信息传送至服务器;操作服务器的处理器以将假定的第二用户注册信息与存储的第二用户注册信息相比较,并仅在假定的第二用户注册信息与存储的第二用户注册信息相对应的情况下对第一账户认证第二设备;在加密代理工具的控制下操作认证的第二设备的处理器以生成第二设备解密密钥,基于所述第二设备解密密钥生成第二设备加密密钥,并将所述第二设备加密密钥传送至服务器;在第一设备处接收第二设备加密密钥;以及在加密代理工具的控制下操作第一设备的处理器以使用接收的第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符。
在所述方法的一些实施方案中,所述第二设备解密密钥可以是第二用户的用户专用私钥。在所述方法的一些实施方案中,该用户专用私钥可以存储在第二设备的非易失性存储器中。在所述方法的一些实施方案中,第二设备加密密钥可以是基于用户专用私钥生成的对应的用户专用公钥。
在所述方法的一些实施方案中,第一用户可以包括多个用户,所述多个用户包括控制第一设备的管理用户和控制第二设备的第二用户。在所述方法的一些实施方案中,所述方法还可以包括:向第一设备提供待加密的文件;在加密代理工具的控制下操作第一设备的处理器,以使用密钥信息从密钥种子信息导出加密密钥中的一个,并使用导出的加密密钥将该文件加密为加密的文件;以及将加密的文件、密钥信息以及第二用户授权传送至第二用户。在一些实施方案中,所述方法还可以包括:通过第二用户接收第二用户授权,以及随后在第二设备上安装加密代理工具;在第二设备处接收加密的文件和密钥信息;在加密代理工具的控制下操作第二设备的处理器以使用接收的密钥信息从存储于第二设备的非易失性存储器中的密钥种子信息导出加密密钥,并使用该导出的加密密钥将加密的文件解密。
在所述方法的一些实施方案中,第一用户可以是控制多个设备的单个用户,并且第一用户标识符可以包括多个用户别名标识符。在所述方法的一些实施方案中,每个用户别名标识符可以共享相同的账户认证信息。
在所述方法的一些实施方案中,第一用户可以包括多个用户,每个用户控制多个设备中的至少一个设备,并且具有用户专用标识符,而对于多个用户中的至少一个用户,该用户的用户专用标识符可以包括多个用户专用别名标识符,其中每个用户专用别名标识符共享该用户的账户认证信息。
根据本文描述的又一示例性实施方案,提供了一种用于在多个设备上使用以对多个设备提供加密的计算机程序产品,所述多个设备被配置为与服务器电通信并且至少包括具有第一设备处理器和非易失性第一设备存储器的第一设备以及第二设备,所述服务器上存储有控制多个设备的第一用户的第一账户,第一账户存储有包括第一用户标识符和账户认证信息的账户数据在服务器的非易失性存储器上,并且该计算机程序产品包括非暂态记录介质以及记录在记录介质上的指令,该指令用于使第一设备处理器配置为:随机地生成多个密钥指示符;使用第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符,每个加密的密钥指示符对应于多个密钥指示符中的一个密钥指示符,第二设备加密密钥对应于服务器未知的第二设备解密密钥;将多个加密的密钥指示符传送至服务器,以防止密钥指示符暴露给服务器,所述服务器可操作以基于多个加密的密钥指示符为第一账户生成包括服务器密钥指示符部分的密钥状态字符串,并且,在且仅在从第二设备接收到的假定的服务器认证信息与该账户认证信息相对应的情况下,提供第二设备对密钥状态字符串的访问;基于多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,第一设备处理器可以操作以生成多个独立的加密密钥;以及基于多个密钥种子将密钥种子信息存储到第一设备的非易失性存储器中。在计算机程序产品的一些实施方案中,可以在第二设备处使用第二设备解密密钥从密钥状态字符串中的多个加密的密钥指示符确定多个密钥指示符,使得可以基于多个密钥指示符生成相同的多个密钥种子,并且对于每个密钥种子,第二设备的处理器可以能够生成与第一设备相同的多个独立的加密密钥,而不用向第二设备提供密钥种子、密钥种子信息和加密密钥中的任一种。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为通过接收来自服务器的多个随机生成的服务器密钥值生成多个密钥种子,其中,服务器密钥值存储在第一账户中;并且基于服务器密钥值和多个密钥指示符生成多个密钥种子。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为:限定第一验证码,基于该第一验证码限定第二设备加密密钥,并使用第二设备加密密钥加密多个密钥指示符,其中还可以基于第一验证码生成第二设备解密密钥。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为:基于第一验证码生成加密的服务器代码,并将该加密的服务器代码传送至服务器,用于存储在第一账户的账户认证信息中,其中服务器可以被配置为在且仅在从第二设备接收到的假定的服务器认证信息与存储在第一账户的账户认证信息中的加密的服务器代码相对应的情况下,提供对密钥状态字符串的访问。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为:接收待加密的文件,使用密钥信息从密钥种子信息导出加密密钥中的一个,使用导出的加密密钥将该文件加密并将加密的文件存储在第一设备的非易失性存储器中,将密钥信息与加密的文件一起存储在第一设备的非易失性存储器中;以及在存储之前使用第一验证码将密钥种子信息加密。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为:接收加密的文件和密钥信息,使用接收到的密钥信息从存储在第一设备的非易失性存储器中的密钥种子信息导出加密密钥;以及使用导出的加密密钥将加密的文件解密。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为在接收到待加密的文件的指示后随机地选择密钥信息。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为:限定第一验证码,基于该第一验证码生成加密的本地码,将加密的本地码存储到第一设备的非易失性存储器中,随后接收访问文件的请求以及本地假定的验证码,生成假定的加密的本地码,将所述假定的加密的本地码与加密的本地码比较以确定所述本地假定的验证码是否是第一验证码,并且在且仅在所述假定的加密的本地码与所述加密的本地码匹配的情况下,提供对由加密的代理工具加密的文件的访问。
在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为通过如下方式存储密钥种子信息:使用第一验证码加密多个密钥种子,并且将加密的多个密钥种子存储到第一设备的非易失性存储器中。
在所述计算机程序产品的一些实施方案中,第一用户可以包括多组用户,这些多组用户至少包括管理组用户和第二组用户,所述多组用户中的每组用户控制多个设备中的至少一个设备,其中管理组用户可以控制第一设备而第二组用户可以控制第二设备。在所述计算机程序产品的一些实施方案中,对多组用户中的每一组用户,账户数据还可以包括用户专用公钥,其中对于每个用户的用户专用公钥是基于存储在多个设备的对应设备的非易失性存储器中的用户专用私钥生成的。在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使第一设备的处理器配置为:对于多组用户中的每组用户,通过使用该用户的用户专用公钥生成多个用户专用的加密的密钥指示符来生成多个加密的密钥指示符。在一些实施方案中,所述计算机程序产品还可以包括将多个用户专用的加密的密钥指示符传送到服务器的指令。在所述计算机程序产品的一些实施方案中,服务器可以操作以对于多组用户中的每组用户,通过基于该组用户的多个用户专用的加密的密钥指示符生成用户专用字符串部分来生成密钥状态字符串的服务器密钥指示符部分。在所述计算机程序产品的一些实施方案中,多个密钥指示符可以在第二设备处使用第二设备私钥根据与第二组用户对应的服务器密钥指示符部分的用户专用部分中的多个用户专用的加密的密钥指示符确定。
在所述计算机程序产品的一些实施方案中,对于多组用户中的每组用户,第一账户的账户认证信息可以包括用户专用的服务器加密代码。在一些实施方案中,所述计算机程序产品还可以包括指令,该指令用于使与该组用户对应的多个设备中的一设备的处理器配置为:限定用户专用验证码,基于该用户专用验证码生成用户专用服务器加密代码,并将该用户专用服务器加密代码传送至服务器,以存储到第一账户的账户认证信息中。
在所述计算机程序产品的一些实施方案中,第一用户可以包括多个用户,所述多个用户包括控制第一设备的管理用户和控制第二设备的第二用户。在一些实施方案中,所述计算机程序产品可以进一步包括指令,该指令用于使第一设备的处理器配置为通过将第二用户的第二用户标识符从第一设备传送到服务器来将第二用户授权传送至第二用户,服务器可以操作以基于第二用户标识符和第二用户密码生成第二用户注册信息,将第二用户注册信息存储在服务器的非易失性存储器上,以及将第二用户服务器授权传送至第二用户。在一些实施方案中,所述计算机程序产品可以进一步包括指令,该指令在被安装在第二设备上时,用于使第二设备的处理器配置为:接收假定的第二用户密码;基于第二用户标识符和假定的第二用户密码生成假定的第二用户注册信息;将假定的第二用户注册信息传送至服务器,服务器能够操作以比较所述假定的第二用户注册信息与存储的第二用户注册信息,并仅在假定的第二用户注册信息与存储的第二用户注册信息对应的情况下对第一账户认证第二设备;并且一旦第二设备被认证;生成第二设备解密密钥;基于第二设备解密密钥生成第二设备加密密钥;并将第二设备加密密钥传送至服务器。在一些实施方案中,所述计算机程序产品可以进一步包括指令,该指令用于使第一设备的处理器配置为:接收第二设备加密密钥,并使用所接收的第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符。
在所述计算机程序产品的一些实施方案中,第二设备解密密钥可以是第二用户的用户专用私钥,而第二设备加密密钥可以是相对应的第二用户的公钥。
在所述计算机程序产品的一些实施方案中,第一用户可以包括多个用户,所述多个用户进而可以包括控制第一设备的管理用户和控制第二设备的第二用户。在一些实施方案中,所述计算机程序产品可以进一步包括指令,该指令用于使第一设备的处理器配置为:接收待加密的文件,使用密钥信息从密钥种子信息导出加密密钥中的一个,使用该导出的加密密钥将该文件加密为加密的文件,以及将加密的文件、密钥信息和第二用户的授权传送至第二用户。在一些实施方案中,所述计算机程序产品可以进一步包括指令,该指令在被安装到第二设备上时用于使第二设备的处理器配置为:基于第二用户的授权向服务器注册第二设备;使用第二设备的解密密钥基于密钥状态字符串中的多个加密的密钥指示符确定多个密钥指示符;基于多个密钥指示符生成多个密钥种子;基于密钥种子将密钥种子信息存储在第二设备的非易失性存储器中;接收加密的文件和密钥信息;使用接收到的密钥信息从存储在第二设备的非易失性存储器中的密钥种子信息导出加密密钥;以及使用该导出的加密密钥将加密的文件解密。
在所述计算机程序产品的一些实施方案中,第一用户可以是控制多个设备的单个用户,并且第一用户标识符可以包括多个用户别名标识符,每个用户别名标识符共享账户认证信息。
在所述计算机程序产品的一些实施方案中,第一用户可以包括多个用户,其中每个用户控制多个设备中的至少一个设备并具有用户专用标识符,并且对于多个用户中的至少一个用户,该用户的用户专用标识符可以包括多个用户专用别名标识符,每个用户专用别名标识符共享该用户的账户认证信息。
根据本文描述的另一示例性实施方案,提供了为包括设备自身的多个设备提供加密的设备。在所述设备的一些实施方案中,包括该设备的多个设备内的每个设备都可以被配置为与服务器电通信。在所述设备的一些实施方案中,服务器可以具有已经存储在其上的用于控制多个设备的第一用户的第一账户。在所述设备的一些实施方案中,第一账户可以将包括第一用户标识符和账户认证信息的账户数据存储在服务器的非易失性存储器上。在一些实施方案中,该设备可以包括处理器和其上存储有指令的非易失性存储器,该指令用于使处理器配置为:随机地生成多个密钥指示符;使用第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符,每个加密的密钥指示符与多个密钥指示符中的密钥指示符中的一个相对应,第二设备加密密钥与服务器未知的第二设备解密密钥相对应;将多个加密的密钥指示符传送至服务器,以防止密钥指示符暴露于服务器,所述服务器可以操作以基于多个加密的密钥指示符为第一账户生成包括服务器密钥指示符部分的密钥状态字符串,并且在且仅在从该设备接收到的假定的服务器认证信息与账户认证信息对应的情况下,向多个设备中的第二设备提供对密钥状态字符串的访问;基于多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,处理器可以操作以生成多个独立的加密密钥;以及基于多个密钥种子将密钥种子信息存储在设备的非易失性存储器中。在所述设备的一些实施方案中,所述多个密钥指示符可以是在第二设备处使用第二设备解密密钥根据密钥状态字符串中的多个加密的密钥指示符能够确定的,使得可以基于多个密钥指示符生成相同的多个密钥种子,并且对于每个密钥种子,第二设备的处理器可以生成与该设备相同的多个独立的加密密钥,而不用向第二设备提供密钥种子、密钥种子信息和加密密钥中的任一种。
附图说明
为了更好地理解所述实施方案,并更清晰地示出如何实施这些实施方案,现在将通过示例方式参考随附附图,在附图中:
图1示出了根据一个实施方案的能够用于在多个设备上提供加密的***的框图;
图2示出了根据一个实施方案的能够用于在多个设备上提供加密的另一***的框图;
图3示出了例示出根据一个实施方案的图2的***的状态的框图;
图4A-4C示出了为多个设备提供加密的方法的示例性实施方案的一系列流程图;
图5示出了根据一个实施方案可用于在多个设备上提供加密的又一***的框图;
图6A示出了将文件加密的方法的一个示例性实施方案的流程图;
图6B示出了将文件解密的方法的一个示例性实施方案的流程图;
图6C示出了将文件解密的方法的另一示例性实施方案的流程图;
图7示出了根据一个实施方案可为多组用户在多个设备上提供加密以及文件共享的***的框图;
图8示出了为图7的多组用户在多个设备上提供加密的方法的一个示例性实施方案的流程图;
图9示出了恢复验证码的方法的一个示例性实施方案的流程图。
图10示出了生成本地和远程恢复码的方法的一个示例性实施方案的流程图,该方法可以与图9的验证码恢复方法一起使用。
图11示出了对用户进行远程认证的方法的一个示例性实施方案的流程图。
具体实施方式
下面将描述多种***或方法,以提供所要求保护的主题的实施方案的示例。下面描述的实施方案都不限制任何所要求保护的主题,并且任何要求保护的主题可以涵盖与以下描述的方法或***不同的方法或***。要求保护的主题既不限于具有下面描述的任一***或方法的所有特征的***或方法,也不限于下面描述的装置或方法的某些或所有共有的特征。可能的是以下描述的***或方法不是在任何要求保护的主题中记载的实施方案。在该文件中没有要求保护的在下面描述的***或方法中公开的任何主题可以是另一保护性文件(例如继续专利申请)的主题,并且申请人、发明人或拥有人不旨在通过公开在该文献中而放弃、否认或者向公众贡献任何这样的主题。
此外,将理解,为了例示的简单明了,在认为适当时,参考数字可以在图中重复,以指示对应或相似的元件。另外,阐述了很多具体细节,以便提供对本文所述的实施方案的透彻理解。然而,本领域普通技术人员将理解,可以实践本文所述的实施方案而不用这些具体细节。在其他实例中,没有详细地描述公知的方法、过程和部件,以免使本文所述的实施方案模糊。还有,附图和文字描述不应被认为限制本文所述的实施方案的范围。
还应该注意,如本文所使用的,措辞“和/或”旨在代表同或(inclusive-or)。即,例如“X和/或Y”旨在表示X或Y或XY二者。另一示例,“X、Y和/或Z”旨在表示X或Y或Z或它们的任何组合。
本文描述了为多个设备提供数据保护的***、方法、计算机程序产品以及设备的各种实施方案。本文所述的各种实施方案可以使能实现加密的文件在由单用户控制的多设备之间的同步和共享,和/或加密的文件在由多个不同用户控制的一个或多个设备之间的同步和共享。本文所述的各种实施方案还可以提供用于恢复由用户限定验证码的***、方法和计算机程序产品。各种实施方案还可以提供用于远程认证用户的***、方法和计算机程序产品。一般情况下,除非特别说明,本文所述的各种实施方案的特征可以相互按任何组合使用。
本文所述的一些实施方案提供了能够实现用户的设备上的用户的数据文件的自动加密和解密的安全***。本文描述的一些实施方案可以将文件加密和解密(FED)密钥存储在用户的设备上。在一些情况下,FED密钥可以不存储在设备上。而密钥种子可以存储在设备上。这些密钥种子使得使用密钥信息可以导出FED密钥。在一些情况下,为了加强生成的加密强度,FED密钥可以是随机生成的。
FED密钥或者密钥种子可以以加密的格式存储在设备的非易失性存储器中,并且通过由用户限定的验证码保护。在一些实施方案中,验证码仅为该用户所知。本地认证信息可以是基于验证码生成的并且存储在用户的设备上。所述认证信息可以用于认证试图访问或修改加密的文件的用户。在一些情况下,所述验证码不能根据任何存储的认证信息确定。
由本文描述的示例性***管理的文件,在存储在非易失性存储器中时,无论存储在用户的设备上或者其他设备(诸如云服务器)上的非易失性存储器中,一直保持加密状态。本文所述的实施方案还可以确保,与存储的加密的文件对应的明文文件只能在安装的加密代理工具内部看到和/或修改。明文文件只有在根据用户的请求被解密之后能够访问,并且在被访问时只暂时性地存储在用户的设备的易失性存储器中。
第一实施例***可以被称为具有FED密钥种子的手动同步的隔离式安全***(QSSMS)。图1示出了可以用于实施QSSMS***的***100的实施例。
***100可以包括由第一用户140控制的多个设备102a-102l。被称为Q-代理工具或加密代理工具104的应用程序可以安装在由用户140控制的设备102中的每一个上。可以在每个设备102上安装一个Q-代理工具104。安装在每个设备102上的Q-代理工具104可以负责该设备102上的加密和解密操作。Q-代理工具104还可以生成加密密钥/解密密钥,并且一旦生成就保护这些密钥。Q-代理工具104可以生成FED密钥种子106,该密钥种子可以存储在每个设备102上。Q-代理工具104可以使用FED密钥种子106生成一个或多个加密/解密密钥。在一些情况下,Q-代理工具104可以根据FED密钥种子106生成大集合的FED密钥,即FED密钥库。
在一些情形下,第一用户140可能想要将加密的文件108/110从第一设备102a移动到其他设备102b-102l中的一个或多个。第一用户140可以用多种方法(诸如使用云服务、电讯网络或其他文件传输机制诸如USB或火线密钥)将一个或多个加密的文件108/110从第一设备102a传送到第二设备102b。一旦在第二设备102b处已经接收到文件,可能需要在第二设备102b上解密该文件。为允许通过第一设备102a上的Q-代理工具104加密的文件108/110能够被第二设备102b上的Q-代理工具104解密,可以同步由第一设备102a和第二设备102b上的Q-代理工具104使用的FED密钥种子106。在***100中,FED密钥种子106可以手动地同步。然而,可能希望能够实现FED密钥种子106自动地同步。这可以允许在用户的远程定位的设备102之间同步FED密钥种子106。这还可以允许不同的用户同步FED密钥种子106,而不必间接地共享密钥种子。而且,这可以简化对于由一个或多个用户控制的多个设备同步FED密钥种子的过程。
图2示出了***200,该***可以用于实现在多个设备上提供加密的***的示例性实施方案。***200是可以被称为具有FED密钥种子自动同步的隔离式安全***(QSSAS)的***的一个示例性实施方案。***200可以用于在与第一用户240相关联的多个设备202之间自动同步FED密钥种子206。***200包括服务器230(也被称为Q-服务器或安全服务器)和多个设备202a-202l。每个设备202上可以安装有客户端204(也被称为Q-客户端或加密代理工具)。设备202上的加密代理工具204与Q-代理工具104的类似之处在于,该加密代理工具负责该设备202上的加密和解密操作。服务器230可以经由网络220与设备202通信。
加密代理工具204可以用于生成FED密钥种子206。FED密钥种子206然后可以用于导出FED密钥。在一些情况下,可以关于特定加密代理工具204与Q-服务器230之间的通信而生成FED密钥种子206。在一些情况下,在不同的设备202上的加密代理工具204之间和之中可能没有直接的通信。因此,Q-服务器230可用于自动同步在设备202上使用的加密和解密密钥。
为了提供自动且安全的密钥同步,***200可以实施与单向函数(one-wayfunctions)和公钥密码体系相关的概念。在一些实施方案中,Q-服务器230不能访问存储在设备202上的任何文件208/210。Q-服务器230也不受到FED密钥种子206和/或FED密钥中的任一个的影响。
在一些情况下,***200还可以扩展以允许组用户间的加密文件共享。第一用户可以是该组的超级用户并且可以包括多组用户,所述多组用户至少包括管理用户和第二组用户。下面将参考图7描述这种***的示例。一般地,自动同步安全***(QSSAS)的实施方案可以实现的安全等级能够比得上QSSMS的安全等级。
所述的实施方案的***和方法(诸如***100和200)的特征可以在一个或多个服务器计算机、台式计算机、笔记本电脑、平板电脑、PDA、智能手机或其他可编程计算机上实现。可编程计算机可以包括与网络(诸如网络220)的连接。网络220可以是到互联网的有线或无线连接。在一些情况下,网络220可以包括其他类型的计算机或电讯网络。
在一些实施方案中,每个可编程计算机可以包括用于将信息输入到设备的输入设备。例如,输入设备可以是键盘、小键盘、光标控制设备、触摸屏、照相机、扫描仪或麦克风。在一些实施方案中,输入信息可以是通过通信接口经由网络从其他可编程计算机接收的。在一些实施方案中,计算机设备可以包括用于呈现视觉信息的显示设备。例如,显示设备可以是计算机监视器、纯平显示器、投影仪或显示面板。在一些实施方案中,显示设备向用户显示一个或多个已经由加密代理工具根据本文所述的***和方法加密的文件。
本文所述的***、过程和方法的实施方案可以用硬件或软件或者硬件与软件的结合实现。或者,这些实施方案还可以在可编程计算机上执行的计算机程序中实现,每个可编程计算机包括至少一个处理器(例如微处理器)、数据存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。例如且没有限制,可编程计算机(下面被称为设备、计算设备或服务器)可以是个人计算机、笔记本电脑、个人数据助理、蜂窝电话、智能手机设备、平板电脑和/或无线设备。对于任何软件部件,对输入数据应用程序代码以执行本文所述的功能并且生成输出信息。以已知的方式将输出信息应用到一个或多个输出设备。
每个软件部件或程序可以由高级程式或面向对象的编程和/或脚本语言实现,以与计算机***通信。然而,如果希望,程序可以用汇编或机器语言实现。在任何情况下,语言可以是编译语言或解释语言。此外,所述实施方案的过程和方法能够分布在计算机程序产品中,该计算机程序产品包括载有用于一个或多个处理器的计算机可用指令的计算机可读介质。该介质可以用各种形式提供,包括一个或多个磁盘、光盘、磁带、芯片、有线传送、卫星传送、互联网传送或下载、电磁存储介质、数字和模拟信号等。计算机可用指令也可以为各种形式,包括已编译代码或未编译代码。
首先描述采用手动同步FED密钥种子的QSSMS***的示例实施方案。还将描述具有自动同步FED密钥种子的QSSAS***的各种示例实施方案。此外,将描述支持在组用户间共享加密的文件的QSSAS***的实施方案。还将描述用于提供恢复由用户限定的验证码的***的另外的实施方案。
QSSMS
在该部分,参考图1描述QSSMS***的示例实施方案。为了介绍背景,讨论了单向函数的概念。
定义1:如果对于域f中的每一个x,计算f(x)很容易,但是对于域f的范围内的几乎所有的y,找到某个x使得f(x)=y是计算上不可行的,则函数f(x)是单向函数。(W.Diffieand M.Hellman,“New directions in cryptography”,IEEE Transactions onInformation Theory,vol.22,no.6,pp.644–654,Nov.1976.)
一般地,***100可以被第一用户140用来控制多个设备102。例如,多个设备102可以包括L个设备102a-102l。第一用户140可能想要使用设备102来管理和存储某些类型的加密的文件108/110。对于多个设备102中的每个设备,第一用户140可以将加密代理工具或者Q-代理工具104安装在设备102上。例如,第一用户140可以下载Q-代理工具104并将Q-代理工具104安装在第一设备102上。在一些示例中,第一用户140然后可以在使用Q-代理工具104加密和解密文件之前,初始化Q-代理工具104。
第一用户140可以使用Q-代理工具104来限定验证码。例如,第一用户140可以限定验证码C。在一些情况下,验证码C或者基于验证码C生成的值可以被Q-代理工具104用来验证第一用户140。例如,这种验证可以发生在当第一用户140想要打开Q-代理工具104来访问由第一设备102a上的Q-代理工具104管理的文件108/110时。一般地,如果Q-代理工具104已经成功地在另一装置102l上安装并初始化,则第一用户140应该能够使用与对设备102l限定的验证码相同的验证码来验证安装在第一设备102a处的Q-代理工具104。
在第一用户140例如在第一设备102a处限定了第一验证码之后,加密代理工具104可以基于第一验证码生成加密的本地码。然后加密代理工具104可以将加密的本地码存储在第一设备102a的非易失性存储器中。例如,加密代理工具104通过计算β=φ(C)生成加密的本地码,其中φ(·)是可逆的单向函数。加密代理工具104然后可以将β保存到第一设备102a的非易失性存储器中。
加密代理工具104然后可以为第一设备102a确定多个密钥种子。在一些情况下,可以从另一设备102导入多个密钥种子。例如,在第一用户140先前已经在另一设备102上生成密钥种子的情况下,第一用户140可以将相同的密钥种子导入到第一设备102a。如果第一用户140还没有在任何其他设备102上生成密钥种子,则第一设备102a的加密代理工具104可以生成密钥种子。
第一设备102a上的加密代理工具104可以生成多个密钥种子。例如,加密代理工具104可以随机地生成多个独立的FED密钥种子K1,K2,…,KJ。然后加密代理工具104可以基于多个密钥种子将密钥种子信息存储到第一设备102a的非易失性存储器中。例如,可以通过加密所述密钥种子而生成密钥种子信息,并且然后将加密的密钥种子存储为密钥种子信息。在一些情况下,验证码C可被用于将密钥种子K1,K2,…,KJ加密为加密的密钥种子EC(K1,K2,…,KJ)。这些加密的密钥种子EC(K1,K2,…,KJ)然后可以存储在第一设备102a的非易失性存储器上。
如果另一设备102l上已经安装了Q-代理工具104并且具有在该设备102l上生成且存储的密钥种子,则第一用户140可以从设备102l导入密钥种子。在***100中,第一用户140可以访问设备102l上的Q-代理工具104以获取由该Q-代理工具104生成的加密的FED密钥种子EC(K1,K2,…,KJ)的副本。第一用户140然后可以将复制的密钥种子输送到第一设备102a上的Q-代理工具104。加密代理工具104然后可以导入密钥种子并将它们存储在第一设备102a的非易失性存储器中。
一旦已经在第一设备102a上生成了密钥种子,该设备上的Q-代理工具104就可以生成一个或多个FED密钥。在一些情况下,Q-代理工具104可以在第一设备102a上生成多个加密/解密密钥,即FED密钥库。一般地,由加密代理工具生成的多个加密/解密密钥可以是对称加密/解密密钥。多个加密密钥然后可以被存储在第一设备102a的非易失性存储器中。在一些情况下,多个加密密钥可以在存储到第一设备102a的非易失性存储器之前被加密(例如,使用验证码)。
例如,Q-代理工具104可以从随机密钥种子K1,K2,…,KJ中导出多个加密密钥(即FED密钥库Ψ),Ψ={ki:1≤i≤Λ},其中Λ是大数。当Q-代理工具104接收到供加密的文件时,可以使用FED密钥库Ψ中的导出的加密密钥中的一个来加密文件。类似地,当文件移动给加密代理工具104或者在加密代理工具104的控制下被修改时,加密代理工具104可以使用导出的加密密钥对新文件或者修改的文件进行加密并存储。例如,Q-代理工具104可以从密钥库选取加密密钥,以使用该加密密钥对文件进行加密。在一些情况下,当加密代理工具104接收到待加密的文件的指示时(例如,文件正被移动至加密代理工具104,在加密代理工具104中创建以存储,或者在加密代理工具104中修改的指示),加密代理工具104可以从多个加密密钥中随机地选取特定的加密密钥。然后Q-代理工具104可以将加密的文件与密钥信息一并存储,密钥信息指示如何从密钥种子K1,K2,…,KJ或者从FED密钥库Ψ导出特定的加密密钥。
例如,Q-代理工具104可以为多个导出的加密密钥生成密钥索引。该密钥索引为多个加密密钥或FED密钥库中的每个加密密钥限定密钥索引值。当从多个加密密钥选择特定的加密密钥并将其用于加密文件时,该文件的密钥信息可以包括该特定加密密钥的密钥索引值。
在一些情况下,Q-代理工具104并不会事先从密钥种子导出所有的加密密钥,以生成密钥库。Q-代理工具104可以仅在需要的情况下,即在接收到要加密文件的指示时,从密钥种子导出加密密钥。在这种情况下,加密代理工具104还可以将指示如何从存储的密钥种子信息导出加密密钥的密钥信息和加密的文件一并存储在第一设备的非易失性存储器中。此外,在加密文件之后,Q-代理工具104可以将导出的加密密钥从第一设备102a上删去。
安装在例如第一设备102a上的Q-代理工具104可以确保在其控制下管理的文件108/110在这些文件存储在该设备的非易失性存储器中时保持加密。当第一用户140想要访问这些文件108/110时,加密代理工具在提供对文件的访问权之前认证用户。
第一设备102a上的加密代理工具104可以接收访问文件108/110的请求和假定的本地验证码。例如,一旦接收到访问文件108/110的请求,Q-代理工具104可以要求第一用户140输入验证码C。然后第一用户140可以输入假定的本地验证码。
加密代理工具104可以基于假定的本地验证码生成假定的加密的本地码。然后加密代理工具104可以比较假定的加密的本地码与加密的本地码以确定本地假定的验证码是否是第一验证码。然后在且仅在假定的本地码与加密的本地码匹配时,加密代理工具104才可以提供对加密代理工具104管理的加密的文件的访问。
例如,加密代理工具可以将相同的单向函数φ(·)应用到假定的本地验证码以生成假定的加密的本地码。然后可以将单向函数φ(·)的输出值与由Q-代理工具104保存的加密的本地码β的值相比较,来确定输入的验证码是否是正确的验证码。一旦第一用户140已经通过认证,那么文件可以被解密并且被第一用户140访问。
Q-代理工具104可以解密由第一用户140选择的文件108/110,并将解密的明文文件暂时存储在第一设备102a的易失性存储器中以供第一用户140阅读和/或编辑。在第一用户140a关闭每个明文文件之后,如果明文文件没有发生改变,Q-代理工具104可以将明文文件从第一设备102a的易失性存储器中删去。加密代理工具104可以使用特定的FED密钥(例如,从密钥库Ψ随机地选取的新的FED密钥、相同密钥或者新导出的加密密钥)再次加密明文文件,并将加密的文件存储在第一设备102a的非易失性存储器中。
在一些实施方案中,Q-代理工具104可以暂时地将明文文件存储在第一设备102a的非易失性存储器中。例如,在加密的文件大于第一设备102a上的可用的易失性存储器时,这可能是用户希望的。在这种情况下,一旦第一用户140a关闭该文件或者中止访问Q-代理工具104,则Q-代理工具104可以将加密的文件从第一设备102a的非易失性存储器中删去。
如果在中止对明文文件的访问时,第一用户140已经对明文文件做出了任何改变,加密代理工具104可以用新的加密的文件覆写第一设备102a的非易失性存储器中的原始加密的文件,并且然后把明文文件从第一设备102a的易失性存储器中删去。再次地,加密代理工具104可以将密钥信息与加密的文件一并存储以使得能够根据密钥种子信息或者根据FED密钥库导出该文件的加密密钥。
为了在将文件从第一设备102a移动到第二设备102b之后,使得由第一设备102a上的Q-代理工具104加密的文件可以被第一用户140的第二设备102b(或任何其他设备102)解密,在一些示例性操作中,FED密钥种子集合{K1,K2,…,KJ}可以在第一用户140的L个设备102之间同步。正如前面所说的,在***100中,FED密钥种子需要在L个设备102之间手动地同步。
在一些情况下,可以使用任何方式从随机密钥种子K1,K2,…,KJ生成FED密钥库Ψ,使得对于任意两个独立的i和j,1≤i,j≤Λ,第一加密密钥等于第二加密密钥的概率Pr{ki=kj}不显著地大于1/Λ。例如,用于从随机密钥种子生成FED密钥库的方式本质上可以是无冲突的。在一些实施方案中,这可以被称为FED密钥库Ψ的属性(1)。
在一些情况下,可以根据随机种子K1,K2,…,KJ生成FED密钥库Ψ,使得对于任意1≤i≤Λ,FED密钥ki或多或少是均匀分布的并且因而统计上独立于i。在这种情况下,***息i不会揭示任何有关ki的实质信息。在一些实施方案中,这可以被称为FED密钥库Ψ的属性(2)。
在一些情况下,可以根据随机种子K1,K2,…,KJ生成FED密钥库Ψ,使得对于任意两个独立的i和j,1≤i,j≤Λ,已知i,j和单个FED密钥ki不会显著地减小关于另一FED密钥kj的不确定性的量,即条件香农熵H(kj|i,j,ki)接近于H(kj|j)。在这种情况下,已知一个FED密钥ki不会提供任何有关另一FED密钥kj的本质信息。在一些实施方案中,这可以被称为FED密钥库Ψ的属性(3)。
大的Λ可以提供关于生成的密钥的增加的熵。然而,存储用大值Λ生成的所有密钥可能需要大量的存储空间。在本文描述的***是移动设备或具有存储容量限制的其他设备时,这可能不是期望的。在一些情况下,可以根据随机密钥种子K1,K2,…,KJ生成FED密钥库Ψ,使得对于任意1≤i≤Λ,易于从种子K1,K2,…,KJ和索引i计算ki。在这种情况下,如上所述,不需要在第一用户140的设备102上实际存储Ψ。尤其是在Λ大时,这是期望的。在一些实施方案中,这可以被称为FED密钥库Ψ的属性(4)。
在一些情况下,加密代理工具104可以存储密钥种子,其中每个密钥种子具有第一位长度。加密代理工具104可以从存储的密钥种子导出一个或多个加密密钥,其中每个导出的加密密钥具有第二位长度。在一些实施方案中,第二位长度可以比第一位长度短。例如,密钥种子可以具有4096位的第一位长度,而加密密钥可以各自具有256位的第二位长度。
现在将描述用于从密钥种子生成一个或多个加密密钥的示例过程。在该示例中,使用了随机选取的密钥种子K1。K1有4096位的第一位长度,并且每个FED密钥ki有256位的第二位长度。我们可以将密钥种子K1写为多个密钥种子位K1=K1(0)K1(1)…K1(4095)。对于每个加密密钥可以确定多个加密密钥导出值m,其中每个加密密钥与唯一的多个导出值m相对应。对于每个加密密钥,与该加密密钥对应的多个加密密钥导出值m指示如何从密钥种子K导出该加密密钥。
在一些实施方案中,对于任意的0≤m1<m2<…<m5≤4095,我们可以限定:
其中,字符串求和是二进制加法,且整数加法是相对于模4096的。从随机种子K1生成包括多个加密密钥的密钥库Ψ的一种方式如下:
Ψ={HMAC(k(m1,m2,…,m5),m1||m2||m3||m4||m5||OtherInput):
0≤m1<m2<…<m5≤4095}
其中HMAC代表密钥的哈希消息认证码,以及此处,例如,使用SHA-256哈希作为其嵌入的哈希函数(参见,例如,National Institute of Standards and Technology,TheKeyed-Hash Message Authentication Code(HMAC).Federal Information ProcessingStandards Publication 198-1,July2008),||表示级联,并且其他输入(OtherInput)代表其他密钥材料,所述材料可以与m1,m2,…,m5一起被附加到加密的数据。在上述示例中,可以指定m1,m2,…,m5的值以根据密钥种子K1生成任何单独的加密密钥。
请注意,在该示例中,Λ≥253。还可以示出,在这种情况下,上述属性(1)至(4)都是满足的。具体来说,以下成立:
a)假定任意0≤m1<m2<…<m5≤4095,k(m1,m2,…,m5)在{0,1}256均匀分布。
b)对于任意
其中0≤m1<m2<…<m5≤4095并且
c)对于任意两个独立的(m1,m2,…,m5)和0≤m1<m2<…<m5≤4095和我们有:
结果(a)至(c)连同HMAC的属性可以反过来暗示上面的属性(1)至(4)。
在一些情况下,本文描述的***可以不要求验证码C是可恢复的。在这种情况下,用于根据验证码生成加密的本地码的单向函数不需要是可逆的。如果当C丢失或者被忘记时不需要恢复C,则单向函数φ可以是不可逆的。在这种情况下,可以使用任何加密性的哈希函数φ来根据验证码C生成加密的本地码。然而,在一些情况下,可能希望C在丢失或忘记时是可恢复的。单向函数φ的可逆性使得能够在C丢失或忘记时可靠地恢复C。以下将更加详细地描述用于使能恢复验证码C的***和方法。
假设在第一用户240在这些L个设备之间手动地同步时,没有暴露EC(K1,K2,…,KJ)。我们现在分析上述示例性QSSMS实施方案的安全性。有两个方面要考虑:(1)由于数据诸如每个Q-代理工具104本地保存的加密的本地码β和密钥种子信息(例如加密的密钥种子EC(K1,K2,…,KJ)的有可能的暴露而导致的安全风险(存储安全风险);和(2)加密文件108/110的有可能的暴露而导致的安全风险(加密安全风险)。
如果安装有Q-代理工具104的一个或多个设备102丢失或被攻击,则会暴露存储在设备102上的数据,诸如β和EC(K1,K2,…,KJ)。然而,加密文件108/110的暴露可能发生得更频繁,因为这样的文件可以很容易地传送到其他设备,上传到云服务器和/或通过互连网传送。如果我们假设所使用的所有对称密钥加密算法具有相等的加密强度,则由于加密的本地码是使用单向函数φ生成的,并且密钥种子K1,K2,…,KJ是随机生成的,所以QSSMS的存储安全风险不高于任何其他密码保护***的存储安全风险。
对于加密安全风险,再次在假设所使用的所有对称密钥加密算法具有相等的加密强度的情况下,加密安全性然后可以取决于FED密钥的强度如何。在具有随机且均匀分布的FED密钥ki的QSSMS***的实施方案中,QSSMS的文件加密强度不比任何其他对称密钥***的文件加密强度弱。因此,如果第一用户140方没有故障——即没有内部安装有Q-代理工具104的设备102丢失并且验证码C是强的并且没有被忘记——则上述QSSMS的实施方案与任何其他使用对称密钥的***一样安全。
然而,上述QSSMS的一些实施方案可能限于手动同步。如上所述,随机密钥种子集合{K1,K2,…,KJ}必须由第一用户240在这些L个设备之间手动地同步。这可能对第一用户240造成不便,同时还阻止在一组不同用户之间共享加密文件。为了克服这个问题,可能希望在设备之间自动地同步密钥种子。下面描述的QSSAS***的实施方案可以自动且安全地在第一用户140的设备上的Q-代理工具之间和一组用户的设备上的Q-代理工具之间将随机密钥种子集合{K1,K2,…,KJ}同步,视情况而定。
QSSAS
图2例示了QSSAS***200的一个示例性配置。***200可以被认为是***100的扩展或修改,并且上面有关***100的一般性操作也可应用于***200中。在下面的描述中,将参考实施方案总体地描述***200,其中第一用户240是控制多个设备202中的每一个的单个用户。然而,在一些实施方案中,第一用户240可以包括多组用户,其中每组用户控制设备202中的一个。
***200包括多个设备202,其中设备202被设置为与被称为“Q-服务器230”的服务器230进行电通信。多个设备202包括第一设备202a和第二设备202b。每个设备上安装有加密代理工具204,其可以被称为Q-代理工具或加密代理工具。在一些实施方案中,一旦加密代理工具204被安装在设备202上并成功地在Q-服务器230处注册,它就可以在线或离线工作。一般地,加密代理工具204可以执行与加密代理工具104相同的操作。设备202可以使用网络220与服务器230通信。
在一些情况下,当加密代理工具204在设备202上运行并且在设备202和Q-服务器230之间存在网络连接时,加密代理工具204可以周期性地与Q-服务器230通信。例如,加密代理工具204可以与Q-服务器230通信以检查***200的状态和/或请求或启动某些动作。在一些情况下,第一用户240的不同设备202上的加密代理工具204之间或之中可能没有直接通信。在一些实施方案中,在设备202使用的FED密钥集合(例如,随机密钥种子和/或FED密钥库)能够自动且安全地同步时,***200使得不同设备202上的加密代理工具204能够自主地工作。本文描述的***200的实施方案可以并入诸如单向函数和公钥密码体系的概念以使能实现安全同步。
应当注意,在一些实施方案中,图2中的加密代理工具204可以被相隔数天、数月或数年地安装并且在Q-服务器230处注册。例如,第一用户240可以购买新设备202并且在新设备202上安装加密代理工具204。然后,新设备202上的加密代理工具204可以被配置为自动且安全地对新设备用被安装在由第一用户240控制的其他设备上的一个或多个加密代理工具204使用的以及先前已经向服务器230注册的FED密钥集合将FED密钥种子和/或FED密钥同步。
现在将分两部分描述***200的各种实施方案的操作。第一部分从第一用户240和第一设备202a上的加密代理工具204的角度来描述示例性实施方案中的***操作。第二部分描述在加密代理工具204、第一用户240、Q-服务器230以及某些情况下其他设备202之间的一些示例性动作过程。
***操作
从第一用户240和第一设备202a上的加密代理工具204的角度来看,***200可以看起来如有限状态机器一样操作。因此,我们开始描述在QSSAS***200的各种实施方案中可能遇到的一些示例性状态,这些示例性状态包括:
非注册用户状态(NRU)。NRU指示第一用户240尚未在Q-服务器230上注册。
具有未注册的加密代理工具的注册用户的状态(RUNRC)。该状态可以指示第一用户240已经在Q-服务器230上注册,但是该第一设备202a的加密代理工具204尚未在Q-服务器230上注册。
加密代理工具正在运行并对用户开放的状态(ROU)。该状态可以指示第一用户240和第一设备202a上的加密代理工具204已经在Q-服务器230上注册,加密代理工具204正在运行,并且第一用户240已经被加密代理工具204认证以访问由加密代理工具204管理的文件208/210,创建或添加新文件以供加密代理工具204管理,和/或让或要求加密代理工具204采取某些动作。第一用户240可以采用与如以上***100中描述的相同的方式来进行认证。
加密代理工具在后台运行,但对用户关闭状态(RCU)。该状态可以指示第一用户240和第一设备202a上的加密代理工具204二者已经在Q-服务器230上注册,加密代理工具204在后台运行,但是第一用户240还没有被加密代理工具204认证。
加密代理工具执行终止状态(EXIT)。该状态可以指示第一用户240和第一设备202a上的加密代理工具204二者已经在Q-服务器230上注册,并且加密代理工具204的执行已经终止。
内容查看和/或编辑状态(CVE)。该状态可以是瞬态。在一些实施方案中,当第一用户240选择加密代理工具204中的一些加密文件208/210用于查看和/或编辑时,***200可以从ROU状态转换到CVE状态。
内容重新加密状态(CRE)。该状态可以是瞬态。在一些实施方案中,当第一用户240请求加密代理工具204使用新的FED密钥来重新加密由加密代理工具204管理的旧的加密文件时,***200从ROU状态转换到CRE状态。新的FED密钥可以如上文参考图1所述的而生成。
用户名和/或密码更改状态(UPC)。该状态可以指示第一用户240已经通过除了在第一设备202a上运行的加密代理工具204之外的方式在Q-服务器230上修改了用户名和/或密码。
验证码更改状态(VCC)。该状态可以指示第一用户240已经使用由第一用户240控制的另一设备202上的加密代理工具204修改了验证码。
在各种实施方案中,***200可具有更多或更少的状态。也可能存在许多状态转换,其中***从上述状态之一转换到另一状态,或转换到未具体提及的其他状态。响应于来自第一用户240、加密代理工具204、第一设备202a、另一设备202和/或服务器230的动作,***200可以从一种状态转换到另一状态。
在不同的实施方案中,第一用户240、加密代理工具204和/或第一设备202a可以采取许多不同的动作。这些动作的示例可以包括用户注册(UR);加密代理工具注册和密钥库种子生成(CRKG);加密代理工具重新注册(CRR);在Q-服务器230处改变ID(用户名和密码)(IDCS);加密代理工具关闭(CC),即关闭加密代理工具204,但保持加密代理工具204在后台运行;加密代理工具204的用户认证(UAC);加密代理工具执行(CE);加密代理工具终止(CT);通过正在运行的已经注册的加密代理工具204更改ID(IDCC);通过除了在第一设备202a上的运行的注册的加密代理工具204之外的其他方式更改ID(IDCO);内容访问(CA);通过使用新的对称密钥加密算法来重新加密(RE);主动的新密钥库种子生成(ANKG);被动的新密钥库种子生成(PNKG);主动验证码更改(AVCC);被动验证码更改(PVCC);PIN更改(PC);验证码更新(VCU);和内容创建和/或添加(CCA)。
上面提到的示例性动作中的一些可能需要来自Q-服务器230的协作。一般,Q-服务器230是被动的,并且响应于来自设备202上的加密代理工具204和/或第一用户240的请求而行动。在一些实施方案中,Q-服务器230对于第一用户240的文件没有访问权限。此外,在一些实施方案中,Q-服务器230可能不知道任何密钥种子和/或FED密钥。这些实施方案可以最小化由Q-服务器230的攻击和恶意内部人员导致的风险。
图3从第一设备202a上的加密代理工具204和第一用户240的角度示出了在***200的实施方案中的示例性状态转换图。一般地,如果第一用户240没有在Q-服务器230上注册,***200可以从NRU状态开始。如果第一用户240已经在服务器230上注册,***200可以从RUNRC状态开始。
如果第一用户240在服务器230上注册,则可以为第一用户240生成第一账户。第一账户可以将账户数据存储在服务器230的非易失性存储器中。账户数据可以包括标识控制所述设备202的第一用户的第一用户标识符。账户数据还可以包括账户认证信息,账户认证信息可以用于对试图访问存储在加密代理工具204上与第一账户相关联的文件或者试图访问存储在服务器230上与第一账户相关联的信息或数据的用户进行认证。例如,如下面将进一步详细描述的,当在设备202之间同步密钥种子时,账户认证信息可以用于认证用户和/或设备。
为了从NRU转换到RUNRC,可以采取UR动作。下面将进一步详细描述UR过程的示例。响应于UR的动作,***200可以从NRU转换到RUNRC。在状态RUNRC,第一用户240可以采取IDCS的动作。IDCS可以允许第一用户240直接在Q-服务器230上修改他的ID。当安装有加密代理工具204的L个设备202之一丢失或被盗并且此刻第一用户240不能访问其他加密代理工具204时,这是非常有用的。在这种情况下,第一用户240可以直接与Q-服务器230通信,以在Q-服务器230处修改他的ID。在一些实施方案中,如果丢失或被盗的设备202具有网络连接并且加密代理工具204正在运行,在丢失或被盗的设备202上的加密代理工具204在与服务器230通信过程中发现第一用户240的ID已经发生更改之后,会自动注销。
在RUNRC状态下可以采取的另一示例动作是CRKG。动作CKRG可以允许第一设备202a上的加密代理工具204在Q-服务器230上注册。在一些情况下,可以设置PIN以每当第一用户240想要稍后通过加密代理工具204访问被加密代理工具204管理的文件时,由加密代理工具204认证第一用户240。在一些情况下,例如,如果第一设备202a上的加密代理工具204是第一用户240已经安装在所有L个设备202上的第一加密代理工具,则可以设置验证码C。
在一些情况下,能够由加密代理工具204生成FED密钥种子集合(即,多个密钥种子)。加密代理工具可以使用多个密钥种子来导出一个或多个加密密钥,例如在将文件加密或者要生成FED密钥库时。在一些情况下,可以通过加密代理工具204和Q-服务器230之间的通信来生成多个密钥种子。然后加密代理工具可以基于多个密钥种子来确定密钥种子信息,并且将密钥种子信息存储在第一设备202a的非易失性存储器中。例如,加密代理工具可以通过使用验证码C作为其加密密钥来加密密钥种子而生成密钥种子信息。然后,加密的密钥种子可以作为密钥种子信息存储在第一设备202a的非易失性存储器中。
如果第一用户240已经在另一设备202上生成了多个密钥种子,则第一用户240可以在第一设备上生成与其他设备上的加密代理工具使用的密钥种子相同的多个密钥种子。下面将进一步更加详细地描述其中设备202之间同步密钥种子的***200的示例性实施方案。
***200可以从状态RUNRC转换到状态ROU,例如在CKRG之后。在状态ROU,第一用户240可以采取许多不同的动作。例如,第一用户240可以改变加密代理工具204使用的认证PIN,通过加密代理工具204改变他的ID,创建和/或添加新文件以供加密代理工具204管理、改变验证码,以及请求分别通过PC、IDCC、CCA、AVCC和ANKG的动作来生成新的FED种子密钥集合。在示出的示例中,第一用户240可以采取这些动作,而不使***200离开状态ROU。
在一些情况下,当处于状态ROU时,加密代理工具204可以通过PNKG的动作基于与Q-服务器230的通信自动生成新的FED密钥种子集合。例如,这种情况可能发生在如果加密代理工具204——在一些情况下通过Q-服务器230的协作——基于与Q-服务器230的通信确定第一用户240的另一加密代理工具204已经生成新的FED密钥种子集合时。可以由加密代理工具204使用从FED密钥库中选择的FED密钥或根据在加密代理工具204处可得并且为第一用户204指定的密钥种子而导出的FED密钥(例如,基于每个文件)来将任何新创建和/或添加的文件自动加密,除非所添加的文件已经被第一用户204的另一加密代理工具204加密。所得到的加密的文件连同可以导出FED密钥的密钥信息(诸如,密钥库中使用的FED密钥的索引,或者指示如何从密钥种子导出密钥的信息)然后可以作为加密的文件保存在第一设备202a的非易失性存储器中。
在一些情况下,除非采取CA、RE、PVCC、IDCO、CC、CT动作之一,否则***200会保持在状态ROU。现在将描述这些动作的示例。
CA:在***200处于状态ROU时,第一用户240可能想要访问由加密代理工具204管理的他的文件208/210以便查看和/或进行修改。在这种情况下,加密代理工具204可以解密由第一用户240选择的文件208/210,并将解密的明文文件存储在第一设备202a的易失性存储器中以供第一用户240读取和修改。在这种情况下,***200可以从状态ROU转换到瞬态CVE。
在第一用户240关闭每个明文文件之后,如果明文文件没有修改,加密代理工具204可以把明文文件从第一设备202a的易失性存储器中删去。在一些情况下,加密代理工具204可以使用根据密钥种子信息(例如,基于每个文件或从密钥库中选出)导出的FED密钥对明文文件再次加密,并且用新加密的文件覆写第一设备202a的非易失性存储器中的原始加密文件。不管第一用户240是否已经对明文文件进行了任何修改,这都可以发生。然后,加密代理工具204可以把明文文件从第一设备202a的易失性存储器中删去。在所有选择的文件被关闭之后,***200可以转换回到状态ROU。
RE:在一些实施方案中,当由于加密标准演变或其他原因导致用新的对称密钥加密算法更新加密代理工具204时,使用加密代理工具204内的旧的对称密钥加密算法加密的文件208/210可能必须用新的对称密钥加密算法重新加密。如果采取RE的动作,则***200可以暂时转换到瞬态CRE,在该状态下加密代理工具204首先可以使用旧的加密算法来解密受其管理的在第一设备202a上的所有文件208/210,并且然后使用新的加密算法再次重新加密所有的解密的文件。之后,QSSAS可以转换回到状态ROU。这可以允许相同的加密代理工具204保持当前状态并且例如,如果在加密代理工具204使用的加密算法中检测到漏洞,或者如果开发出更安全的加密算法,则更新到期望的安全等级。
PVCC:在一些实施方案中,如果第一用户240已经通过他的其他设备202中的一个经由其上的加密代理工具204修改了验证码,则在状态ROU下的第一设备202a上的加密代理工具204在基于与Q-服务器230的通信检测到这样的改变之后,会自动注销。在这种实施方案中,***200可以从状态ROU转换到状态VCC,在该状态VCC下第一设备202a上的加密代理工具204不会操作,除非第一用户240输入旧的和新的验证码以使得第一设备202a上的加密代理工具204能够经由VCU的动作更新其加密的本地码和存储在第一设备202a上的密钥种子信息。在VCU的动作之后,QSSAS然后可以转换回到状态ROU。
IDCO:在一些实施方案中,如果第一用户240已经通过第一设备202a上的加密代理工具204之外的方法修改了他的ID,其中***200处于状态ROU,则第一设备202a上的加密代理工具204在基于与Q-服务器230的通信检测到改变的ID之后就会自动注销。在这种情况下,***200将会从状态ROU转换到状态UPC。在状态UPC中,第一设备202a上的加密代理工具204可能变为未注册。如果第一设备202a上的加密代理工具204变为未注册,则加密代理工具204将不操作,除非使用第一用户240的新ID(例如,经由CRR动作)重新向Q-服务器230注册。在CRR动作之后,***200可以回到状态ROU。
CC:在一些实施方案中,如果***200保持在状态ROU一段时间而没有来自第一用户240的任何动作或者如果第一用户240关闭加密代理工具204(例如关闭屏幕或者第一设备202a上的加密代理工具的文件夹),***200将会从ROU转换到状态RCU。在状态RCU中,加密代理工具204可以在后台运行,但是第一用户240不能访问在其控制下的文件208/210,除非第一用户240被加密代理工具204通过输入正确的PIN或验证码(即,经由UAC动作)再次认证。在UAC动作之后,***200可以转换回到ROU。
CT:在一些实施方案中,如果加密代理工具执行被第一用户240或第一设备202a终止,则***200可以从ROU转换到状态EXIT。为了从EXIT返回到ROU,可能必须通过输入正确的用户名、密码和验证码(即,经由CE动作)再次执行加密代理工具204,并且然后第一用户240必须由加密代理工具204经由UAC动作被再次认证。
图3中***200经由IDCO动作从RCU到UPC、经由PVCC动作到VCC、经由CT动作到EXIT、以及经由PNKG动作回到RCU自身的转换类似于以上所述的***200从ROU的那些相应转换。
一般地,由加密代理工具204管理并存储在非易失性存储器中(无论是在第一用户240的L个设备202上还是在其他地方,诸如在云服务器中)的文件208/210可以始终保持加密。当它们的明文文件在暂态CVE被解密并暂时存储在第一用户240的设备202的易失性存储器中时,这些明文文件仅在第一用户240的加密代理工具204内可见。在一些实施方案中,除了第一用户240的加密代理工具204之外,包括Q-服务器230在内的其他各方都不知道在加密代理工具204处可用的任何FED密钥种子和/或FED密钥,对于这样的实施方案,文件208/210不可被解密并且因此在第一用户240的加密代理工具204的外部是没有意义的。在这样的实施方案中,文件208/210被认为仅在加密代理工具204内部是“活的”,并且只要将文件从加密代理工具204中取出来,就被认为是“死的”。以这种方式,加密代理工具204可以被认为提供隔离式的安全***,其中文件只能在加密代理工具的隔离区内访问。由于每个加密代理工具204使用并且指定给第一用户240的FED密钥种子集合可以在第一用户240的所有加密代理工具204上自动且安全地同步,所以受第一用户240的加密代理工具204管理的文件可以被那些加密代理工具204中的任意一个解密。这个属性与***200的隔离式性质一起还可以允许第一用户240经由互联网通过一些第三方云计算服务或其他方式将受这些加密代理工具204管理的文件安全地同步。
图5例示了结合云计算服务550实现的***500的一个示例性实施方案。***500通常对应于***200,多个设备502a-502l被配置为与服务器530通信。第一用户540的加密代理工具504管理的文件508/510可以与云550同步并通过云计算服务550在第一用户540的这些L个设备502之间同步。由于***200/500的隔离性质,云计算中固有的安全风险可以被显著地减少,从而使得第一用户540能够享受云计算的优点而不增加安全忧虑。
动作过程
现在将描述图3中那些在前面章节中没有详细解释的动作过程,即UR、IDCS、IDCC、CRKG、AVCC、VCU、ANKG和PNKG。再次,参考图2,我们使用第一设备202a上的加密代理工具204作为示例。
UR过程
当第一用户240想要在Q-服务器230上注册时,第一用户240可以首先提供一对用户名或第一用户标识符U和第一用户密码P。Q-服务器230将会把第一用户标识符存储到该用户U的第一账户中。服务器230还可以复制U的两个副本,一个副本被保存起来并且指定为Uo,当第一用户240稍后想要改变第一用户标识符时,Uo可以用于表示旧的第一用户标识符,并且另一个副本被保存起来并被指定为第一用户240的初始注册第一用户标识符Ur。
***200(例如,设备202a或服务器230)可以基于第一用户密码来确定第一用户密码信息。服务器230可以将第一用户密码信息存储为当前第一用户密码信息。服务器还可以存储第一用户密码信息的一个副本作为旧的第一用户密码信息并且存储第一用户密码信息的另一副本作为第一用户240的初始注册第一用户密码信息。
例如,***200可以通过计算密码P的哈希值E(P)来确定第一用户密码信息。Q-服务器230可以将密码哈希值E(P)存储为当前第一用户密码信息,并且还制作E(P)的两个副本,一个副本被保存并指定为旧的第一用户密码信息E(Po),另一个副本被保存并指定为第一用户240的初始注册第一用户密码信息E(Pr)。在一些情况下,即使在第一用户240稍后改变第一用户密码时,初始注册第一用户密码信息E(Pr)也不会改变。
Q-服务器230可以将称为密钥状态字符串的字符串初始化。密钥状态字符串可以包括密钥状态部分和服务器密钥指示符部分。密钥状态字符串可以被初始化为具有指示没有为第一用户240生成密钥种子的密钥状态部分。在一些情况下,在初始化阶段,在生成密钥种子之前,服务器密钥指示符部分可以是空白的,或者可以包括随机数据。例如,在密钥状态字符串表示为S=S0S1S2…S2(i+1)的情况下,密钥状态字符串可以被初始化为S=0。
在一些情况下,如果所提供的用户名不是电子邮箱地址,则***200可以请求第一用户240向Q-服务器提供有效的电子邮箱地址或电话号码。在这种情况下,电子邮箱地址或电话号码会被认为是第一用户标识符。在一些情况下,如下面进一步解释的,第一用户240可以具有多个别名标识符(诸如多个电子邮箱地址、用户名和/或电话号码或其他标识符)。第一用户标识符可以包括别名标识符中的每一个。
IDCS和IDCC过程
如前所述,在一些情况下,第一用户240可以直接在Q-服务器230上更改他的ID以提供一些附加的安全性。在本实施例中,我们使用密码更改作为实例来说明该过程。第一用户240当前所具有的关于Q-服务器230的第一用户密码可以被称为当前第一用户密码Pc,第一用户240想要更改的密码称为新的第一用户密码Pn。现在将描述直接在Q-服务器230上更改第一用户密码的实例过程。
第一用户240可以向服务器230传送密码更改请求。作为响应,Q-服务器230可以请求第一用户标识符(例如,用户名U)、当前第一用户密码Pc和新的第一用户密码Pn。然后,第一用户240可以向服务器230提供第一用户标识符和假定的第一用户密码。
服务器230可以基于假定的第一用户密码来计算假定的第一用户密码信息。然后服务器230可以使用第一用户标识符来识别第一账户,并且将假定的第一用户密码信息与存储在第一账户的账户认证信息中的第一用户密码信息进行比较。
例如,***200(例如,设备202a或者服务器230)可以计算假定的第一用户密码和新密码(Pc和Pn)的哈希值,并且通过存储在Q-服务器上的当前用户名和密码哈希值的记录来检查用户名U和假定的第一用户密码的哈希值E(Pc)以进行身份认证。
一旦第一用户240被认证,Q-服务器230就会将其记录上的当前密码哈希更新为E(Pn),并且将其记录上的旧密码哈希更新为E(Po)=E(Pc),同时保持初始注册密码哈希E(Pr)不变。
类似的过程适用于更改第一用户标识符/用户名或者直接在Q-服务器230上更改用户名和密码。一旦第一用户240被成功认证,Q-服务器230能够针对第一用户240想要改变(并且被授权进行更改)的任何凭证,将其记录上的相应当前凭证更新成相应的旧凭证,并且把相应的新凭证更新为其记录上的相应的当前凭证。同样地,当通过第一设备202a上的加密代理工具204更改ID时,一旦第一用户240被成功认证,更改可被记录在加密代理工具204和Q-服务器230二者上。
没有验证码恢复的CRKG过程
为了在第一用户240的所有加密代理工具240之间安全地并且自动地同步被每个加密代理工具204使用并且被指定给第一用户240的FED密钥种子的集合,我们可以将单向函数和公钥密码体系的概念集成到***200的包括CRKG、AVCC、VCU、ANKG和PNKG的工作中。现在将参考图2和图4A至图4C描述密钥种子的生成和同步。
图4A至图4C展示了用于在多个设备上提供加密的方法400的示例性实施方案的一系列流程图。例如,***200可以用于实现方法400以在受第一用户240控制的设备202上提供加密。后面将参考图6C、图8和图9描述当第一用户包括控制所述设备202的不同用户或者多组用户时的方法400的扩展。
在方法400中,服务器230已经在多个设备202的控制下为第一用户240生成了第一账户。如上所述,第一账户将账户数据存储在服务器的非易失性存储器中,其中账户数据包括第一用户标识符和账户认证信息。
虽然将详细描述***200和方法400的操作,在一些情况下,将结合公知的公钥密码体系的各个方面对具体的示例进行说明。由于存在若干公知的公钥密码体系,诸如RSA(R.L.Rivest,A.Shamir,and L.Adleman,“A method for obtaining digital signaturesand public-key cryptosystems,”Comm.ACM,第21卷第2期,第120至126页,1978年2月)ElGamal(T.ElGamal,“A public-key cryptosystem and a signature scheme based ondiscrete logarithms,”IEEE Transactions on Information Theory,第31卷第4期,第469至472页,1985年7月)和ECC公钥密码体系(I.F.Blake,G.Seroussi,and N.P.Smart,Elliptic Curves in Cryptography.Cambridge University Press,1999),具体地,下面将描述一些具体的示例,包括作为示例的ElGamal公钥***的多个方面。然而,本领域专业人员明了的是,本文所描述的***和方法的其他实施方案可以不包括ElGamal公钥密码体系的任何方面。
在下面的一些具体实施例中,可以在大的安全素数N(即,(N-1)/2也是素数)和有限域GF(N)={0,1,2,...,N-1}的背景下对***200的多个方面进行描述。在这些示例中GF(N)的原根α也是固定的(即,1≤α≤N-1,其中α是一个整数,在模N下该整数的幂生成GF(N)中的每个非零元素)。
在405,对于多个设备202中的每个设备202,在其上安装加密代理工具204。在实现方法400的各个方面时,加密代理工具204可以用于控制所述设备的处理器的操作。可以使用本文描述的各种客户端注册过程来安装加密代理工具204。
例如,第一用户240可以将第一用户标识符和假定的第一用户密码输入到安装在第一设备202a上的加密代理工具204中。加密代理工具204能够基于假定的第一用户密码生成假定的第一用户密码信息,并且将第一用户标识符、假定的第一用户密码信息和第一设备标识符传送到服务器230。例如,加密代理工具204能够计算假定的第一用户密码P的哈希值E(P),该哈希值不一定与存储在Q-服务器上的第一用户密码哈希相同,并且然后把用户名U、密码哈希值E(P)和第一设备202a的设备标识符(D)(例如,MAC地址)发送到Q-服务器230以进行认证。在一些实施方案中,第一用户设备202a的设备标识符D是唯一的。
Q-服务器230能够将第一用户标识符U和假定的第一用户密码信息E(P)与它们的当前记录(即,在Q-服务器230上记录的当前用户名和当前密码哈希值)进行对比。如果发现匹配,则用户名和密码认证成功。在一些情况下,可以通过让Q-服务器230在用户注册阶段向第一用户240提供的电子邮箱地址或者电话号码发送一些认证验证消息来进行另一轮验证。Q-服务器230请求第一用户240将消息提供给加密代理工具,加密代理工具转而将消息转发到Q-服务器以进行确认。在一些情况下,用户认证过程可能包括第一用户240的生物识别信息。下面将进一步详细描述这种远程认证过程的示例。
如果第一用户240被认证,Q-服务器230将把第一设备202a的第一设备标识符D与第一用户240相关联。如果第一用户240未被认证,则可以重复上述认证过程,直到达到成功认证以及消息确认。
Q-服务器230可以将成功认证的确认连同密钥状态字符串S=S0S1S2…S2(i+1)发送到加密代理工具204。一旦接收到成功认证的确认和密钥状态字符串S=S0S1S2…S2(i+1),加密代理工具204能够将第一用户标识符(即,用户名U)和第一用户密码信息(即,密码哈希值E(P))存储到第一设备202a的非易失性存储器中。
如果所接收的密钥状态字符串中的状态指示符部分指示没有生成密钥种子,则这表明第一设备202a是由第一用户240向服务器230注册的第一设备202(不一定是这种情况,但是指示尚未在与第一用户202a相关联的另一设备202上生成密钥种子)。例如,如果密钥状态字符串S从0开始,即S0=0,这指示第一设备202a上的加密代理工具204是第一用户240在Q-服务器230上注册的第一加密代理工具204。然后,加密代理工具204可以请求第一用户240设置第一验证码C。在一些实施方案中,验证码C可以用于管理和同步由第一用户控制的设备202上的密钥种子。验证码还可以使得能够在第一用户240的所有加密代理工具204上生成第一用户240的私钥。
加密代理工具204可以根据验证码生成多个码字。能够生成多个码字使得能够从多个码字中的所***字确定验证码,但是少于全部码字则不能确定验证码。在一些情况下,多个码字可以由第一码字和第二码字组成。
例如,加密代理工具204可以通过f(C)=(C1,C2)将验证码C转变为一对码字C1和C2。此转变可以通过一对一函数f进行,使得C1和C2看起来像来自GF(N)的随机数。可以根据第一码字C1和第二码字C2二者反过来确定验证码C,但是单独根据C1或者C2不能确定验证码C。
加密代理工具204能够基于第一验证码确定加密的本地码。例如,加密代理工具可以根据第一码字和第二码字确定第一加密的本地值,其中第一码字和第二码字都不能仅根据第一加密的本地值确定。在一些情况下,通过将第二码字乘以α的第一码字次幂来生成第一加密的本地值。加密代理工具204还可以根据第二码字确定第二加密的本地值。第二码字可以是以α为底的第二加密的本地值的离散对数。
例如,加密代理工具可以确定加密的本地码(其中β1对应于第一加密的本地值,β2对应于第二加密的本地值)。加密代理工具204能够将加密的本地码β保存在第一设备202a的非易失性存储器中,用于以后验证由第一用户240输入的本地假定的验证码。
加密代理工具204还可基于第一验证码确定加密的服务器代码。加密的服务器代码可以包括根据第一码字和第二码字确定的第一加密的服务器值。加密的服务器代码还可以包括根据第一码字确定的第二加密的服务器值。在一些实施方案中,第一码字和第二码字都不能根据第一加密的服务器值确定。通常,由于确定离散对数的复杂性,单独根据第一加密的服务器值和/或第二加密的服务器值或者根据二者的组合来确定第一码字和第二码字在计算上是不可行的。例如,加密代理工具204能够将加密的服务器代码确定为加密的服务器代码能够被传送到Q-服务器230。服务器230能够将加密的服务器代码存储在第一账户的认证信息中。
在一些情况下,服务器230能够生成独立的服务器加密值,并且在存储前基于独立的服务器加密值来随机化(或者进一步加密)已加密的服务器代码。服务器230可以基于Ur、E(Pr)以及它自己的秘密密钥v,作为独立的随机数V-1,V-2生成独立的服务器加密数值。独立的随机数V-1,V-2可以均匀地分布在{1,2,…,N-1}上。然后服务器230能够通过将转换为使随机化,并且将与用户名和密码哈希值一同存储。函数D(·,·)可以是一对一的,并且在给定或者V-j的情况下从{1,2,...,N-1}到{1,2,...,N-1}。在一些情况下,可以将秘密服务器密钥v作为其密钥,并且将加密的服务器代码作为输入,通过使用哈希值(例如,从HMAC导出的哈希值)生成服务器的加密的服务器代码。
在410,加密代理工具204能够随机地生成多个密钥指示符。例如,加密代理工具204可以独立地生成随机数Xj,j=0,1,…,J作为多个密钥指示符。在一些情况下,每个随机数(即每个密钥指示符)能够均匀地分布在{1,2,...,N-1}上。
在415,加密代理工具204能够使用第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符。每个加密的密钥指示符能够对应于多个密钥指示符中的密钥指示符的一个。第二设备加密密钥可以对应于服务器不知道的第二设备解密密钥。
在一些情况下(例如,当使用EIGamal***时),加密代理工具204也可以随机生成多个加密值。例如,加密代理工具可以将多个加密值生成为独立随机数Yj。然后,加密代理工具204能够使用第二设备加密密钥和多个加密值从多个密钥指示符生成多个加密的密钥指示符。在这种情况下,每个加密的密钥指示符也对应于多个加密值中加密值的一个。加密代理工具204还可以生成多个密钥指示符公钥。每个密钥指示符公钥可以对应于多个加密值中加密值的一个。例如,加密代理工具可以用计算所述多个加密的密钥指示符并且用j=0,1,…,J计算所述多个密钥指示符公钥。
在420,加密代理工具204可以将多个加密的密钥指示符传送到服务器230。加密的密钥指示符能够被传送到服务器230以防止将密钥指示符暴露给服务器230。同时,服务器230能够利用加密的密钥指示符来更新第一账户的密钥状态字符串。然后更新的密钥状态字符串可以用于将第一用户控制的其他设备上的密钥种子同步。
在一些情况下,加密代理工具204还能够将多个密钥指示符公钥传送到服务器230。例如,加密代理工具204将(εj,μj),j=0,1,…,J发送到Q-服务器230。
在425,加密代理工具204可以基于多个密钥指示符生成多个密钥种子。对于每个密钥种子,加密代理工具204可以操作以生成多个独立的加密密钥。如上所述,在一些实施方案中,加密代理工具204可生成包括多个加密密钥的加密密钥库。在其他实施方案中,加密代理工具204可以响应于待加密文件的指示,根据需要导出加密密钥。
在一些情况下,加密代理工具204可以在服务器230的帮助下生成多个密钥种子。服务器230可为第一账户随机地生成服务器密钥值。服务器密钥值能够被存储在服务器的非易失性存储器中并且传送到第一设备202a。加密代理工具204能够基于服务器密钥值和多个密钥指示符生成多个密钥种子。
在一些实施方案中,加密代理工具204可以将密钥指示符量发送到Q-服务器230。此密钥指示符量可以标识在410处由加密代理工具生成的密钥指示符的数量。密钥指示符量可以是整数对的形式(0,J)。密钥指示符量可以向服务器230表明要求其协助以生成FED密钥种子。
一旦接收到密钥指示符量(例如,整数对(0,J)),Q-服务器230能够基于Ur,E(Pr)以及它自己的秘密密钥v,作为独立的随机数V0,V1,…,VJ生成服务器密钥值。服务器密钥值可以是均匀分布在{1,2,…,N-1}上的随机数。然后服务器230能够将V0,V1,…,VJ发送回到加密代理工具204。基于V0,V1,…,VJ和X0,X1,…,XJ,加密代理工具204能够生成J个独立的FED密钥种子Kj=A(Xj,Vj),j=1,2,…,J。
在一些情况下,加密代理工具204还可以基于多个密钥指示符(以及在一些实施方案中,多个服务器密钥值)来生成第一用户解密密钥。加密代理工具204可以基于第一用户解密密钥生成第一用户加密密钥,并且将第一用户加密密钥传送到服务器230。第一用户加密密钥可以存储在第一账户中。
例如,加密代理工具204可以生成第一用户240的解密密钥为K0=A(X0,V0),其中函数A(·,·)是一对一的,在给定Xj或者Vj的情况下从{1,2,…,N-1}到{1,2,…,N-1}。然后,加密代理工具204可以将第一用户240的公钥发送到Q-服务器230上,服务器230继而保存并且记录γ以及用于第一用户的用户名和密码哈希。
在430,基于多个密钥种子的密钥种子信息可以存储在第一设备202a的非易失性存储器中。在一些实施方案中,存储密钥种子信息可以包括使用第一验证码加密多个密钥种子,并且将加密的多个密钥种子存储在第一设备202a的非易失性存储器中。
例如,加密代理工具204能够使用验证码C将多个密钥指示符(X0,X1,…,XJ)和多个密钥种子(K0,K1,…,KJ)分别加密成为第一设备加密的密钥指示符EC(X0,X1,…,XJ)和加密的密钥种子EC(K0,K1,…,KJ)。加密代理工具204随后可以将EC(X0,X1,…,XJ)和EC(K0,K1,…,KJ)保存在第一设备202a的非易失性存储器中。然后即使在通过第一设备202a上的加密代理工具204对第一用户240进行认证和验证时,加密代理工具204和Q-服务器230之间的网络连接不可用的情况下,加密代理工具204随后能够加密和解密受加密代理工具204管理的文件208/210。下面将参考图6A至图6C对文件的加密和解密的示例性实施方案作进一步详细描述。
在435,可以生成用于第一账户的密钥状态字符串。密钥状态字符串可以包括基于多个加密的密钥指示符生成的服务器密钥指示符部分。在某些情况下,用于第一账户的密钥状态字符串可能已存在。例如,如上所述,当第一用户240在第一设备202a上向服务器230注册加密代理工具204时,密钥状态字符串可以被初始化。在这种情况下,可以通过更新先前存储的密钥状态字符串来生成用于第一账户的密钥状态字符串。
在一些情况下,可以基于多个加密的密钥指示符和多个密钥指示符公钥生成服务器密钥指示符部分。例如,在接收到(ε0,μ0,ε1,μ1,…,εJ,μJ)时,服务器230可以将密钥状态字符串从S=0更新到S=S0S1…S2(J+1)=1ε0μ0…εJμJ。可以通过将多个加密的密钥指示符添加到密钥状态字符串来更新密钥状态字符串。在使用密钥指示符公钥的情况下,这些也可以被添加到密钥状态字符串并且与和它们对应的加密的密钥指示符相关联。还可以将状态指示符部分更新以标识当前服务器密钥指示符部分。
在440,密钥状态字符串可以存储在服务器230的非易失性存储器中。通常,密钥状态字符串可以用于同步与第一用户240相关联的设备202上的密钥种子。
如果第一设备202a接收的密钥状态字符串指示已经为第一账户生成了服务器密钥指示符部分,则然后第一设备202a可以使用密钥状态字符串来同步密钥种子。例如,每个设备可以使用存储在服务器密钥指示符部分中的值来生成多个密钥指示符,然后基于多个密钥指示符生成多个密钥种子。
例如,接收到的密钥状态字符串S=S0S1S2…S2(i+1)可能具有状态指示符部分诸如S0=1,指示在第一用户240的那些L个设备202的一个上的至少一个其他加密代理工具204已经向Q-服务器230注册,已经限定了验证码C,并且已经生成FED密钥种子的集合{K1,K2,…,Ki},其中i是J的整数倍。在一些情况下,还将生成第一用户240的私人密钥K0(对应于第一用户240的公钥)。
为了简单起见,将参考第二设备202b来描述同步密钥种子的过程。然而,如上所述,本文描述的该过程通常可以由***200中的任何设备202上的加密代理工具204来执行。此外,如下面将进一步详细描述的,在单个用户控制第一设备202a和第二设备202b的背景中描述了该过程,但是当不同的用户控制所述设备202时,可以使用类似的过程。
一般来说,在向第二设备202b提供对密钥状态字符串的访问之前,服务器230可以在第二设备202b上认证第一用户240。在一些情况下,服务器230可以在需要认证之前将密钥状态字符串的状态指示符部分传送给第二设备202b上的加密代理工具204。例如,服务器230可以接收用于第二设备202b的注册请求。该注册请求可以包括第一账户的第一用户标识符和假定的用户密码。
作为响应,服务器230可以将第一用户标识符和假定的用户密码与存储的账户数据和账户认证数据进行比较。密钥状态字符串的状态指示符部分可被传送给第二设备202b,并且可以指示第二设备202b上的加密代理工具204已经限定了验证码,并且需要认证第一用户240。服务器230还可以将认证请求连同状态指示符部分一起发送给设备202b。第二设备202b上的加密代理工具204能够提示第一用户240输入验证码C。
在445,可在第二设备202b接收假定的认证信息。该假定的认证信息可是假定的验证码。
在450,第二设备202b上的加密代理工具204能够基于假定的认证信息生成假定的服务器认证信息。加密代理工具204能够将假定的服务器认证信息传送到服务器230。例如,加密代理工具204可以基于假定的验证码生成假定的服务器认证信息作为假定的加密的服务器代码。加密代理工具204可以使用与上述相同的函数来计算并且将该值发送到服务器230。
在455,服务器230可以将假定的服务器认证信息与账户认证信息进行比较。服务器230可以将假定的服务器认证信息与存储在第一账户的账户认证信息中的加密的服务器代码进行比较。服务器230可以将从第二设备202b接收的的接收值与的存储值进行比较。
在一些情况下,服务器230还可以生成服务器加密的假定服务器认证信息。当加密的服务器代码是在存储之前在服务器上生成的另一加密的服务器代码时,可以使用这种方式。例如,服务器230可以使用用于在存储之前将服务器加密代码随机化的相同的函数D(即,用值V-1和V-2)来计算接收到的加密的服务器代码的然后,将其与保存在服务器230的非易失性存储器中的的存储值进行比较,以确定假定的加密的服务器代码是否与加密的服务器代码匹配。
在460,当且仅当假定的服务器认证信息与账户认证信息相对应时,服务器230可以向第二设备202b提供对密钥状态字符串的访问。在一些情况下,当且仅当假定的加密的服务器代码与加密的服务器代码匹配时,假定的服务器认证信息才与账户认证信息相对应。在使用服务器密钥生成密钥种子的实施方案中,当且仅当假定的服务器认证信息与账户认证信息相对应时,服务器230还可以向第二设备202b提供对服务器密钥值的访问。当在第二设备202b处对第一用户240进行认证之后,服务器230可以将存储在第一账户中的服务器密钥值传送到第二设备202b上的加密代理工具204。
如果在460认证成功,则第二设备202b上的加密代理工具204可以接受从第一用户240接收到的假定验证码作为正确的验证码。然后加密代理工具204可以计算加密的本地码并且将加密的本地码存储在第二设备202b的非易失性存储器中。例如,加密代理工具204可以如上所述计算加密的本地码(比如),并且将β存储在第二用户设备202b的非易失性存储器中。
在465,第二设备202b上的加密代理工具204可以使用第二设备解密密钥从密钥状态字符串中的多个加密的密钥指示符确定多个密钥指示符。例如,可以使用第二设备加密密钥来加密多个加密的密钥指示符。第二设备加密密钥对应于第二设备解密密钥,并且可以基于第二设备解密密钥生成第二设备加密密钥。
例如,可以基于验证码生成第二设备加密密钥。类似地,还可以基于验证码生成第二设备解密密钥。在单个用户场景中,在第一设备202a和第二设备202b上限定的验证码可以相同。相应地,可能分别生成第二设备解密密钥和第二设备加密密钥。例如,甚至在第二设备202b向服务器230注册之前,第一设备202a可以生成第二设备加密密钥并且使用第二设备加密密钥对多个密钥指示符进行加密。当第二设备202b向服务器230注册时,然后第二设备202b可以基于第二设备202b处限定的验证码生成对应的第二设备解密密钥。
如下所述,在一些实施方案中,第二设备202b可以生成第二设备的解密密钥并且将第二设备加密密钥发送到服务器230。然后第一设备202a可以使用从服务器230接收的第二设备加密密钥生成用于第二设备202b的多个加密的密钥指示符。在一些情况下,这甚至可以在已经将一些文件208/210从第一设备202a传送到第二设备202b之后发生。
在一些实施方案中,第二设备202b上的加密代理工具204可能通过利用j=1,2,…,i+1从密钥状态字符串S=S0S1S2…S2(i+1)中确定Xj,j=0,1,…,i,来从密钥状态字符串的密钥指示符部分确定多个密钥指示符。由第二设备202b上的加密代理工具204所确定的密钥指示符可以和第一设备202a上生成的多个密钥指示符相同。这允许第二设备202b上的加密代理工具204生成与第一设备202a上的加密代理工具204生成的相同多个密钥种子。
在470,第二设备202b的加密代理工具204可以基于多个密钥指示符生成多个密钥种子。对于每个密钥种子,第二设备202b的加密代理工具204可以生成和第一设备202a相同的多个独立的加密密钥,而不用向第二设备202b提供密钥种子、密钥种子信息和加密密钥中的任一种。多个密钥种子可以以与上面对于第一设备202a所描述的相同的方式在第二设备202b上生成。在一些实施方案中,与第一设备202a相同,第二设备202b上的加密代理工具204可以基于从服务器230接收的多个密钥指示符和服务器密钥值来生成多个密钥种子。
第二设备202b上的加密代理工具204能够以与上面在425处对于第一设备202a所描述的类似的方式生成多个密钥种子。例如,在验证码C和随机数Xj,j=0,1,…,i可用的情况下,第二设备202b上的加密代理工具204可以用i代替J执行在425中描述的操作。在第一用户240的公钥已经生成并且存储在第一账户中的情况下,第二设备202b不必将公钥γ发送到Q-服务器230。第二设备202b上的加密代理工具204可以完成第二设备202b的注册并且为加密代理工具204生成密钥种子和第一用户的私钥(或者第二设备的解密密钥)。
在一些实施方案中,上述方法400中的所有涉及数字的计算均可以在有限域GF(N)中进行。我们还可以验证由第二设备202b的加密代理工具204生成并且保存的多个FED密钥种子以及第一用户240的私钥是否与在其他设备202上在新注册的加密代理工具(在单用户情况下)之前注册的所有最新加密代理工具204所使用的多个FED密钥种子以及第一用户240的私钥相同。例如,假设在[0191]段中i=J。可以验证在465中由第二设备202b的加密代理工具204确定的多个密钥指示符Xj,j=0,1,2,…,J是否与在410中由第一设备202a的加密代理工具204生成的多个密钥指示符相同:
对于j=1,2,…,J+1。
在475中,第二设备202b的加密代理工具204可以将基于多个密钥种子的密钥种子信息存储在第二设备202b的非易失性存储器上。第二设备202b的加密代理工具204可以以与上面在430中对于第一设备202a所描述的相同的方式来存储密钥种子信息。
在一些实施方案中,可以假定加密代理工具204和Q-服务器230之间的通讯和握手是安全的。此外,上面描述中的整数i可以是J的整数倍,并且每当第一用户240的任何注册的加密代理工具204请求新的FED密钥种子集合时,i就增加J。当每个Kj较长但每个FED密钥k相对较短时,J可以较小。例如,当Kj是4096比特长并且k是256比特长时,可以选择J=1。在上述描述的实施方案中,当第一次生成独立的并且均匀分布的随机服务器值和服务器密钥值V-2,V-1,V0,V1,…,Vi时,它们可被Q-服务器230用该Q-服务器自己的秘密密钥v进行加密,并且然后被保存在用于第一用户240的第一账户中,以用于其他可能的由第一用户240的注册的加密代理工具随后作出的生成密钥种子和第一用户240的私钥的请求。
在一些实施方案中,不论第一用户设备202a上的加密代理工具204是否是向Q-服务器230注册的第一用户240的第一加密代理工具,在CRKG过程结束时,在第一用户设备202a上的注册的加密代理工具204可以具有存储在第一用户设备202a的非易失性存储器中的以下信息中的一些或者全部:
用户标识符或者用户名U;
第一用户密码信息,例如密码哈希E(P);
PIN哈希E(R);
加密的本地码,例如基于验证码C的
多个加密的密钥指示符(例如,随机数EC(X0,X1,…,Xi))以及;
密钥种子信息,例如加密的密钥种子EC(K0,K1,…,Ki)。
相应地,在一些实施方案中,Q-服务器230可以具有存储在其非易失性存储器中的以下信息中的一些或者全部,例如,在用于第一用户240的第一账户中:
第一用户标识符,例如,当前的、旧的和初始的注册用户名U、Uo和Ur;
第一用户密码信息,例如当前的、旧的和初始的注册密码哈希值E(P)、E(Po)和E(Pr);
已经在其上安装了加密代理工具204并且向服务器230注册的第一用户240的所有设备202的设备标识符;
第一用户240的第二设备加密密钥,诸如公钥γ;
加密的服务器代码或者基于验证码C的另外的加密的服务器代码,例如,和/或以及
包括服务器密钥指示符部分的密钥状态字符串,以及某些情况下的状态指示符部分,例如,S=S0S1S2…S2(i+1)。
在一些实施方案中,由注册的加密代理工具204存储在第一用户设备202a的非易失性存储器中的信息以及存储在用于第一用户240的服务器230的非易失性存储器中的信息可以满足以下属性的一个或者多个:
U at Q-Client=U at Q-Server (1)
E(P)at the Q-Client≡E(P)at Q-Server (2)
K0≡γ (5)
Kj=A(Xj,Vj),j=0,1,2,…,i (6)
在属性(2)、(3)和(5)中,≡代表右侧与左侧一致。通常,这六个一致属性可以保持有效,直到由第一用户240请求的对用户名、密码、验证码C的任何更改和/或通过Q-服务器230或者通过第一用户240的那些L个设备202之一上另一个注册的加密代理工具204而生成新的密钥种子和第一用户240的公钥和私钥。因此,通过检查这些一致属性中一个或者多个,第一用户设备202a上的注册的加密代理工具204可以检测由第一用户240请求的更改是否事实上已经通过Q-服务器230或者第一用户240的那些L个设备202之一上的另一个注册的加密代理工具204(视情况而定)作出。如果是,则第一用户设备202a上的注册的加密代理工具204可以更新其对应的信息,以确保这些一致属性再次有效,并且通过这样做也使其自身与这些更改同步。为了促进该检测过程,第一用户设备202a上的加密代理工具204一旦在Q-服务器230上注册成功,就可以在每当它想和Q-服务器230通讯时,在它与Q-服务器230的握手认证过程期间要求将它本地存储的信息和Q-服务器230的相应信息进行比较。将会在后面通过AVCC、VCU、ANKG和PNKG的过程讨论检测更改和更新相关的信息以获得与更改同步的第一用户设备202a上的注册的加密代理工具204。
由于计算离散对数的困难,服务器230可能很难根据加密的服务器代码确定验证码,特别是由于可能需要第一码字和第二码字二者来确定
验证码。此外,另外的加密的服务器代码(例如,作为随机化或者的密钥哈希生成的)可能使此任务更加困难(即,Q-服务器230可能难以从计算出验证码C,特别是C1)。因此,Q-服务器230可能无法知道第一用户240的所有注册的加密代理工具204所使用的FED密钥种子和第一用户240的私钥的集合。
在***200中,仅在第一用户240的设备202上的注册的加密代理工具204处通常以加密的形式暴露多个密钥种子(以及第一用户240的私钥或者设备解密密钥)。密钥状态字符串S在信息论的意义上不会暴露任何关于多个FED密钥种子、第一用户240的私钥和/或验证码C的任何信息。同样地,每个注册的加密代理工具204也会很难根据本地的加密代码β确定验证码C。因此,在一些实施方案中,即使在第一用户240的注册的加密代理工具204处,在第一用户240将与正确的验证码C相对应的假定认证信息提供给加密代理工具之后,多个FED密钥种子(和第一用户240的私钥或者设备解密密钥)仅可用于每个注册的加密代理工具204。
上面的描述解释了如何使用服务器230在多个设备之间同步多个密钥指示符、多个密钥种子并且从而使加密密钥同步的各种实施方案。现在将参考图6A至图6C来描述使用***200对文件进行加密和解密的一些示例性实施方案。在图6A至图6C的描述中,为了清楚起见,将参考第一设备202a和第二设备202b来描述操作。然而,一般来说,由这些设备202a和202b中的每一个执行的操作可以由其上安装有加密代理工具204的多个设备202中的任何一个来执行。
图6示出了可被加密代理工具204用于将提供给第一设备202a的文件进行加密和存储的一种示例方法600。
在605,将待加密的文件提供给第一设备202a。该待加密的文件可被加密以存储在第一设备202a上,以传送到云服务器用于存储,传送到第二设备202b(例如,通过诸如网络230的网络,或者通过云服务器或者以其他方式传输到第二设备)或者其他设备或者存储平台用于加密存储、或者解密以及查看或者编辑。
在610,可以使用密钥信息从存储在第一设备202a上的密钥种子信息导出加密密钥的一个。如上所述,可以以各种方式导出加密密钥,诸如通过使用指示该特定加密密钥的索引值的密钥信息从密钥库中选择特定的加密密钥,或者通过从对应于存储在第一设备202a上的密钥种子信息的密钥种子生成/导出特定的加密密钥。当加密代理工具204接收到待加密的文件的指示时,可以随机地选择加密密钥。
在615,可以使用导出的加密密钥来加密文件。在一些情况下,在文件被加密之后,可以从第一设备202a擦除所导出的加密密钥。
在620,然后可以将加密的文件存储到第一设备202a的非易失性存储器。用于导出加密文件的密钥信息也可以与加密文件一起存储。
在一些情况下,加密文件不需要存储在第一设备202a。例如,加密文件可以与密钥信息一起被传送到另一设备202或者云服务器。在一些实施方案中,文件和加密文件可以在传送后从第一设备202a擦除。
图6B示出了根据一些实施方案的可以用于将加密文件解密的示例性方法630。在635,在第二设备202b接收加密文件和密钥信息。
在640,第二设备202b可以使用接收到的密钥信息从存储在第二设备202b的非易失性存储器上的密钥种子信息中导出加密密钥。在一些实施方案中,根据存储在第二设备202b上的密钥种子信息的性质,第二设备202b可以采用很多不同方式——例如上述示例性方法——导出加密密钥。
在645,第二设备202b可以使用在640获得的加密密钥对加密文件进行解密。然后第二设备202b的用户可以访问该文件以查看和/或修改或者进行任何其他上述与文件相关的动作。在一些实施方案中,解密的文件可以以明文的形式存储在第二设备202b的易失性存储器中,并且在用户已经完成期望的动作时,从易失性存储器擦除。该解密的文件还可以在使用导出的加密密钥(相同密钥或者新的密钥)被加密之后,连同密钥信息存储在第二设备202b的非易失性存储器。
图6C示出了当不同的用户控制第二设备202b时用于对加密文件进行解密的示例性方法650。在此方法650的描述中,第一用户240可以被认为是多个用户。多个用户可以包括控制第一设备202a的管理用户和控制第二设备202b的第二用户。
通常的,在方法650之前的文件的加密可以根据上述方法600进行。第一设备202a可以使用密钥信息从密钥种子信息导出加密密钥中的一个,使用导出的加密将文件加密为加密文件,并且将加密文件和密钥信息传送到第二设备202b。在方法650的一些实施方案中,可以经第二用户授权将加密文件和密钥信息发送到第二设备202b,这将在下面讨论。
在655,在第二设备202b接收加密文件和密钥信息。为了解密该加密文件,安装在第二设备202b上的加密代理工具204可以从存储在第二设备202b的非易失性存储器中的密钥种子信息导出加密密钥,然后可以使用导出的加密密钥解密该加密文件。
然而,在一些实施方案中,第二设备202b可以在密钥种子信息被生成在第二设备202b上之前接收该加密文件。尽管如此,本文描述的***和方法的实施方案可以使得即使在安装加密代理工具和/或向服务器230注册第二设备202b之前接收该加密文件,第二设备202b也能解密该加密文件。
管理用户可以通过将第二用户标识符传送到服务器230而将第二用户授权传送到第二用户,例如使用与管理用户相关联的设备中的一个或者其他方式。然后,服务器230可以基于第二用户标识符和第二用户密码生成第二用户服务器授权。第二用户密码可以是由服务器230分配给与第二用户标识符(即,第二用户)相关联的用户的临时密码。通常,第二用户服务器授权可以指示服务器230,一旦被认证,可以给第二用户提供对第一账户的访问。
服务器230还可以基于第二用户标识符和第二用户密码生成第二用户注册信息。然后,当第二用户向服务器230注册第二设备202b时,第二用户可以使用第二用户密码。第二用户注册信息可以存储在服务器230的非易失性存储器中。
在660,第二用户在接收到第二用户服务器授权之后,可以向服务器230注册第二设备202b。在一些情况下,第二用户可以在注册过程期间在第二设备202b上安装加密代理工具204(或者可能已经在其上安装了一个)。第二用户可以与第一用户账户相关联地向服务器230注册,并且还可以用第一用户账户向第二设备202b注册。这可以允许第二设备202b(或者第二用户的其他设备)访问存储在服务器230的非易失性存储器中的密钥状态字符串(在被认证之后)。
然后,第二用户可以在第二设备202b处输入假定的第二用户密码(即,用户尝试输入第二用户密码)。第二设备202b的加密代理工具204可以基于第二用户标识符和假定的第二用户密码生成假定的第二用户注册信息。然后,可以将假定的第二用户注册信息传送到服务器230。
服务器230可以将假定的第二用户注册信息和存储的第二用户注册信息相比较。仅当假定的第二用户注册信息和存储的第二用户注册信息相对应时,服务器230可以认证第二设备202b用于第一账户。当且仅当第二设备202b被认证用于第一账户时,服务器230可以向第二设备提供用第一账户对密钥状态字符串的访问。
然而,如果第二设备202b之前没有向第一账户注册,和/或用于第二设备202b的第二设备加密密钥之前对于第一设备202a不是已知的,则存储在第一账户中的密钥状态字符串可能没有为第二设备202b提供足够的信息来确定多个密钥指示符并且从而确定加密密钥。在一些实施方案中,为了避免这样的问题,第一设备202a可以生成用于第二用户的密钥状态字符串的用户专用部分。
在665,第二设备202b可以生成第二设备加密密钥。第二设备202b可以生成第二设备解密密钥,并且基于第二设备解密密钥生成第二设备加密密钥。在一些实施方案中,第二设备解密密钥可以是第二用户的私钥,也被称为用户专用私钥(此私钥的生成可以类似于如上所述的私钥K0),并且第二设备加密密钥可是第二用户的公钥,也被称为用户专用公钥(此公钥的生成可以类似于上述公钥γ)。第二设备202b可以将第二设备加密密钥传送到服务器230。
服务器230可以将用于第二设备202b的第二设备加密密钥存储在第二用户的第二用户账户中。服务器230还可以向第一设备202a提供用于第二设备202b的第二设备加密密钥,以帮助第一设备202a上的加密代理工具204生成多个加密的密钥指示符。例如,服务器230可以将用于第二设备202b的第二设备加密密钥存储在第一账户的账户数据中作为第二用户的用户专用公钥。
在670,第一设备202a可以使用从服务器230接收的用于第二设备202b的第二设备加密密钥,根据存储在其上的多个密钥指示符生成多个加密的密钥指示符。例如,第一设备202a可以使用用于第二设备202b的用户专用公钥来生成多个加密的密钥指示符以包括多个用户专用的加密密钥指示符。
第一设备202a可以将用于第二用户的多个用户专用的加密的密钥指示符传送到服务器230。服务器230可以基于用于第二用户的多个用户专用的加密的密钥指示符生成在(第一账户的)密钥状态字符串中(对于第二用户)的用户专用的字符串部分。服务器230可以认证第二设备202b,并且在向第二设备202b上的加密代理工具204提供用于第一账户的密钥状态字符串的访问之前认证第二用户。当且仅当第二设备202b被认证用于第一账户时,服务器230可以向第二设备202b提供用于第二用户(存储在第一账户中)的密钥状态字符串的用户专用部分的访问。
在675,一旦对于第一账户已经注册和认证第二设备202b(并且已经例如使用如上所述的验证码,在第二设备202b对第二用户进行了验证/认证),则第二设备202b可以接收密钥状态字符串(或者密钥状态字符串的第二用户专用部分)。
在680,第二设备202b上的加密代理工具204通常以与上述相同的方式使用第二设备解密密钥从密钥状态字符串的第二用户专用部分导出密钥种子信息。然后第二设备202b上的加密代理工具204可以使用接收的密钥信息从密钥种子信息导出加密密钥,并且对加密的文件进行解密。
带验证码恢复的CRKG过程
在上述CRKG的一些实施方案中,如果第一用户240忘记他的验证码C,则***200可能不能将其恢复(或者将其恢复是计算上不可行的)。在一些情况下,这可以是确保***200的安全性的期望属性。然而,如果忘记了验证码C,这可能对第一用户240造成问题。
在本小节中描述的一些实施方案中,可以稍微修改上述CRKG过程的实施方案以使得能够恢复遗失或者忘记的验证码C。一些实施方案允许通过在第一用户240、设备202上的一个或者多个加密代理工具204和Q-服务器230或者远程服务提供商服务器之间的协作来恢复验证码。这些实施方案仍然可以维持与之前相同的安全级别。
在一些实施方案中,除了Q-服务器230、加密代理工具204和第一用户240之外,还可以使用分立的远程服务提供商服务器。远程服务提供商服务器可以与提供***200的服务提供商相关联。然而,在其他实施方案中,可能不需要使用附加的服务器。虽然为了简单起见,下面结合自动同步***200描述了验证码恢复***和方法的具体实施方案,但是本文描述的验证码***和方法同样可以用于其它***或者方法中,以恢复由用户在受用户控制的设备上限定的验证码。
图9示出了用于恢复验证码的示例方法,该验证码是由用户在受用户控制的至少一个设备上安装的加密代理工具中限定的。每个设备可以被配置为与远程服务提供商服务器通信。为了清楚理解,将参考作为控制多个设备202的单个用户的第一用户240对随后的图9和图10的说明进行描述。此外,在下面的描述中,远程服务提供商服务器可以与服务器230分立,或者它可以是同一个服务器230。
在905,对于每一设备,加密代理工具204可以基于验证码和基于验证码的远程恢复码来生成本地恢复码。可以根据本地恢复码和远程恢复码的组合确定验证码,但是不能单独根据远程恢复码确定验证码。
对于每个设备202,安装在该设备上的加密代理工具204可以根据验证码生成多个码字。可以生成多个码字,使得可以根据多个码字中的所***字确定验证码,但是不能根据少于所***字的码字确定验证码。加密代理工具204可以使用多个码字来生成本地恢复码。本地恢复码可以包括从验证码生成的单向函数值。例如,本地恢复码可以是上述加密的本地码。因此,在一些实施方案中,加密代理工具204可以通过计算β=φ(C),即来生成本地恢复码。加密代理工具204还可以使用多个码字生成远程恢复码。
现在将参照图10描述用于生成本地恢复码和远程恢复码的示例方法。方法1000是根据一个实施方案的用于生成本地恢复码和远程恢复码的方法的实施例。
在1005,加密代理工具204可以基于验证码生成第一码字和第二码字。上述多个码字可包括第一码字和第二码字。加密代理工具可以生成第一码字和第二码字,使得可以根据第一码字和第二码字的组合确定验证码,但是不能根据第一码字和第二码字中的单独任一个确定。
在上文给出的具体实施例中,加密代理工具204可通过f(C)=(C1,C2)将验证码C转变为第一码字C1和第二码字C2。在一些实施方案中,可以经由一对一函数f进行转变,使得C1和C2看起来像来自GF(N)的随机数。
在1010,加密代理工具204可以根据第一码字和第二码字生成第一本地恢复值。可以生成第一本地恢复值,使得第一码字和第二码字都不能根据第一本地恢复值单独确定。例如,第一本地恢复值可以通过将第二码字(例如C2)乘以整数α(其中α是大于1的整数)的第一码字的幂(例如,)来生成。因此,在一些实施方案中,第一本地恢复值可以被生成为
在1015,加密代理工具204可以根据第二码字生成第二本地恢复值。第二码字可以是具有以α为底的第二本地恢复值的离散对数。因此,尽管在一些实施方案中,第二码字可以根据第二恢复值确定,但是由于与计算离散对数相关联的困难,确定第二码字可能是计算上不可行的。例如,第二本地恢复值可以被确定为
在1020,加密代理工具204可以根据第一本地恢复值和第二本地恢复值确定本地恢复码。例如,本地恢复码可以包括第一本地恢复值和第二本地恢复值。
在1025,加密代理工具204可以基于第一码字和第二码字生成远程恢复码。可以生成远程恢复码,使得第一码字和第二码字都不能根据远程恢复码单独确定。在一些实施方案中,可以通过用α的第二码字次幂乘以第一码字(例如,)来生成远程恢复码。
再次参考图9,在910加密代理工具204可以基于远程恢复码来确定远程恢复码信息。加密代理工具204可以将远程恢复码信息传送到远程服务提供商服务器,并且从该设备擦除远程恢复码。
在一些情况下,远程恢复码信息可以是在905生成的远程恢复码的修改和/或加密形式。在一些实施方案中,远程服务提供商可以生成私有服务提供商密钥和基于该私有服务提供商密钥的公共服务提供商密钥。服务提供商服务器可以将私有服务提供商密钥存储在服务提供商服务器的非易失性存储器中。服务提供商还可以向每个设备202提供公共服务提供商密钥。例如,服务提供商服务器可以通过从{1,2,…,N-1}中选择秘密随机数λ来生成私有服务提供商密钥,并且将公共服务提供商密钥αλ公开。
然后,第一设备202a上的加密代理工具204可以通过使用公共服务提供商密钥基于远程恢复码生成加密的远程恢复码来确定远程恢复码信息。然后加密代理工具204可以将加密的远程恢复码发送给远程服务提供商。例如,加密代理工具204可以用公共服务提供商密钥和来自{1,2,…,N-1}的独立随机数Y计算加密代理工具204可以将发送到Q-服务器230,该Q-服务器进而可以将连同第一用户标识符传送到远程服务提供商服务器。在一些实施方案中,服务器230可以在将远程恢复码信息传送给远程服务提供商服务器后,擦除远程恢复码信息,这样Q-服务器230上没有关于的标记。在其他情况下,加密代理工具204可以直接或者通过边信道的方式将远程恢复码信息发送给远程服务提供商服务器。
在一些实施方案中,远程恢复码信息可以是设备专用恢复码。加密代理工具204可以随机生成一个设备专用的远程代码修改符。然后,加密代理工具204可以使用设备专用远程代码修改符修改远程恢复码从而生成远程恢复码信息。加密代理工具可以将修改后的设备专用远程代码存储在第一设备202a的非易失性存储器上。在一些情况下,加密代理工具204也可以例如使用上述方法对修改后的远程恢复码进行加密。
例如,加密代理工具204可以通过用中的代替来进一步随机化远程恢复码加密代理工具204可以将设备专用码修改符X确定为来自{1,2,...,N-1}的随机数。每一个加密代理工具204都可以独立生成此设备专用码修改符X并且将其存储在相应设备202的非易失性存储器中。
在一些实施方案中,在第一用户240控制多个设备的情况下,服
务提供商服务器可以维护设备专用的远程恢复码的数个版本(例如,的多个版本),每个版本来自第一用户240的每一个加密代理工具204。服务提供商服务器可以存储用于每个设备的远程恢复码信息的设备标识符,其中设备标识符标识对应于该远程恢复码信息的设备202。
由于计算离散对数的困难性,Q-服务器230和服务提供商服务器单独或者一起都很难根据加密的服务器代码(例如,)和远程恢复码信息(例如,)确定验证码C,特别是第一恢复码字C1。这样,Q-服务器230、加密代理工具204和服务提供商服务器(在没有大量的资源的情况下,大量的资源使得在许多实施方案中的恢复是计算上可行的)都无法独立地恢复验证码C。在一些实施方案中,验证码C可以通过与第一用户240关联的恢复设备上的加密代理工具204、服务提供商服务器和第一用户240的协作来恢复。
在915,加密代理工具204可以将本地的恢复码存储在第一设备202a的非易失性存储器上。通常,每个设备的加密代理工具204可以将本地恢复码存储在该设备的非易失性存储器上。同时,如上提到的,每个设备还可以将该设备的设备专用的远程代码修改符存储在该设备的非易失性存储器中。
在920,服务提供商服务器可以接收代码恢复请求。服务提供商服务器还可以认证第一用户。下面参照图11对在一些实施方案中可以用于认证用户的示例性方法做进一步详细的说明。响应于接收到代码恢复请求,并且仅在认证用户之后,服务提供商服务器可以基于存储在服务提供商服务器的非易失性存储器内的远程恢复码信息确定服务器恢复码信息。
在一些实施方案中,第一用户240可以将临时用户密钥发送给服务提供商服务器。例如,第一用户240可以将临时密钥比如K发送给***200的服务提供商。然后,服务提供商可以通过用该临时密钥将远程恢复码信息加密来生成服务器恢复码信息。例如,服务提供商服务器可以用K将加密成然后在边信道中或者通过在加密代理工具204和Q-服务器230之间的信道将传送给第一用户240。
如上所述,在一些实施方案中远程恢复码信息是用公共服务提供商密钥从远程恢复码生成的加密的远程恢复码。在这样的实施方案中,服务提供商服务器可以用私有服务提供商密钥(例如λ)将为了恢复而存储的加密的远程恢复码(例如,)解密。服务提供商服务器可以随后基于解密的远程恢复码来确定服务器恢复码信息。
如上所述,在一些实施方案中,远程恢复码信息可以包括设备专用的修改的远程恢复码。服务提供商服务器接收的代码恢复请求可以包括标识恢复设备的恢复设备标识符。远程服务提供商服务器可以通过使用接收的恢复设备标识符和存储的设备标识符识别对应于恢复设备的存储的远程恢复码信息,来确定恢复设备的服务器恢复码信息。然后,服务提供商服务器可以使用标识符恢复码信息确定服务器恢复码信息。如本领域技术人员明了的,在一些实施方案中,用于生成远程恢复码信息和服务器恢复码信息的各种示例的特征可以彼此结合使用,或者与用于数据的安全传送的其他方法结合使用。
在925,服务器230可以将服务器恢复码信息发送给第一用户240。如上所述,可以以各种方式将服务器恢复码信息传送给第一用户240,诸如通过边信道或者直接传送到恢复设备(例如,通过服务器230)。在一些实施方案中,第一用户240可以将服务器恢复码信息提供给任何设备202,并且用该设备作为恢复设备。例如,第一用户240可以将服务器恢复码信息和临时密钥K输入给他注册的加密代理工具204中的任一个。在另外一些实施方案中,例如那些用设备专用的远程恢复码信息的实施方案,服务器恢复码信息可以只被提供给与生成该服务器恢复码信息所基于的设备专用的远程恢复码信息相关联的恢复设备。
在930,恢复设备202上的加密代理工具204可以接收服务器恢复码信息。加密代理工具204可以根据服务器恢复码信息确定远程恢复码,并且使用本地恢复码和远程恢复码来确定验证码。
在一些情况下,加密代理工具204可以使用存储在恢复设备的非易失性存储器上的设备专用的远程代码修改符来根据服务器恢复码信息确定远程恢复码。在一些这样的实施方案中,恢复设备上的加密代理工具204应该是包含对应的随机数X的加密代理工具。
例如,加密代理工具204可以根据远程恢复码(例如,)和本地恢复码计算(C1,C2)。加密代理工具204可以根据第二本地恢复值(例如,)确定反向远程恢复码(例如,)。然后,加密代理工具204可以使用反向远程恢复码和远程恢复码来确定第一码字(C1)。将远程恢复码(例如,)乘以反向远程恢复码(例如,)可以提供第一码字(C1)。然后,加密代理工具204可以使用第一码字和第一本地恢复值来确定第二码字。例如,加密代理工具204可以通过乘以和来确定并且确定第二码字(C2)。然后,加密代理工具204可以使用第一码字和第二码字来确定验证码。
在935,加密代理工具204可以在恢复设备202上显示验证码。然后,第一用户240可以使用验证码来访问由与第一用户240相关联的任何设备202上的加密代理工具存储的文件。
在一些实施方案中,加密代理工具204可以验证从远程服务提供商服务器接收的远程恢复码。如果第一用户240不能使用在930确定的验证码来访问和/或解密存储在设备202上的加密代理工具204中的文件,则这可能是有用的。例如,如果远程恢复码被修改或者被远程服务提供商损坏的话,这可能发生。这可以允许第一用户240证明由于文件不能被解密而发生的数据的实际丢失是服务提供商服务器一方错误的结果。对远程恢复码的任何修改将改变在930处确定的第一码字(C1)的值,进而改变第二码字(C2)的值,该第二码字(C2)的值将与本地存储的第二本地恢复值不一致。
加密代理工具204可以使用根据服务器恢复码信息和本地恢复码确定的远程恢复码来生成假定的本地恢复码。加密代理工具204可以通过使用上面在930处描述的示例方法确定假定的验证码来生成假定的本地恢复码。然后,加密代理工具204可以使用与根据验证码生成所存储的本地恢复码所使用的方法相同的方法根据假定的验证码计算假定的本地恢复码。
加密代理工具204可以将假定的本地恢复码与存储在恢复设备的非易失性存储器中的本地恢复码进行比较。当且仅当假定的本地恢复码与所存储的本地恢复码匹配时,加密代理工具204可以验证根据服务器恢复码信息确定的远程恢复码。
在一些实施方案中,加密代理工具204可以使用根据服务器恢复码信息和本地恢复码确定的远程恢复码来生成假定的第二本地恢复值。加密代理工具204可以将假定的第二本地恢复值与存储在恢复设备的非易失性存储器中的第二本地恢复值进行比较。当且仅当假定的第二本地恢复值与所存储的第二本地恢复值匹配时,加密代理工具204可以验证根据服务器恢复码信息确定的远程恢复码。
在一些实施方案中,可以使用图11示出的方法1100远程实现第一用户240(或者任何其他用户)的认证。方法1100是可以用于远程认证用户的方法的实施例。
在1105,服务器230将用于第一用户240的用户认证信息存储在服务提供商服务器的非易失性存储器中。用户认证信息可以包括第一用户240的生物识别信息。第一用户240可以通过由第一用户240控制的设备202之一上的加密代理工具204提供生物识别信息。所述生物识别信息可以通过加密代理工具204和Q-服务器230或者通过边信道被提供给***200的服务提供商。
在一些实施方案中,用户的生物识别信息可以包括用户的音频记录、用户的视频记录、用户的图像、指纹、掌纹、视网膜扫描中的至少一种。在一些情况下,用户240的生物识别信息可以包括多种生物识别类型。在一些情况下,多种生物识别类型可以包括用户的音频记录以及用户面部的图像和用户面部的视频中的至少一种。
例如,在CRKG的过程期间,可以要求第一用户240提供第一用户240的真正的正面照片或者视频剪辑。还可以要求第一用户240提供记录第一用户240的语音的音频剪辑。音频剪辑可以包括用于多个认证码字的第一用户240的语音的记录。例如,认证码字可以是数字0到9。
在1110,服务提供商服务器可以接收验证码恢复请求。验证码恢复请求可以类似于上面方法900的920处描述的代码恢复请求。
在1115,服务提供商服务器可以生成用户认证序列。服务提供商服务器可以响应于接收验证码恢复请求而随机地生成用户认证序列。服务提供商服务器还可以将用户认证序列存储在用于用户的用户认证信息中。服务提供商服务器还可以确定序列有效期。
在一些实施方案中,一旦接收到第一用户240的恢复验证码C的请求,服务提供商服务器通过第一用户240的加密代理工具204中的一个为第一用户240生成随机用户认证序列。
例如,所述用户认证序列可以包括基于存储在1105的多个认证码字生成的码字的随机序列。然后可以要求第一用户140通过说出语音音频码来执行用户认证序列。在其他实施例中,用户认证序列可以包括手指取向的序列,并且用户必须通过使用与用户认证序列相对应的指纹和手指取向来执行用户认证序列。另一个示例性用户认证序列可以与用户的典型按键节奏相关,并且用户必须通过输出随机生成的码字来执行用户认证序列。另一示例性用户认证序列可以与用户的图像相关,并且用户必须通过挥动他们的手臂以用打信号拼出随机生成的码字来执行用户认证序列。另一个示例性用户认证序列可以包括第一用户240在执行视网膜扫描时可以执行的随机生成的眨眼序列。
在1120,在将服务器恢复码发送到第一用户240之前,远程服务提供商服务器可以向恢复设备发送授权请求。该授权请求可以包括在1115生成的用户认证序列。例如,授权请求可以提示第一用户240使用加密代理工具204来获取短的自拍视频剪辑,同时大声地说出码字的随机序列。
在1125,该恢复设备可以接收假定的认证信息。恢复设备可以将假定的认证信息发送到远程服务提供商服务器。假定的认证信息可以包括假定用户对用户认证序列的执行。假定的认证信息还可以包括将假定的用户识别为表演结果的假定的生物识别信息。例如,假定的认证信息可以包括与假定用户说出假定音频代码的音频记录相符的假定用户的面部的视频记录。换句话说,用户可以采用短的自拍视频剪辑,同时使用恢复设备大声地说出码字的随机序列,然后将视频剪辑发送到远程服务提供商服务器。在其他实施方案中,假定的认证信息可以包括挥动手臂以用打信号拼出随机生成的码字的用户的短自拍视频剪辑。另一个示例的假定的认证信息可以包括当用户键出随机生成的码字时用户的按键的时间。
在1130,远程服务提供商服务器可以将假定的认证信息与存储在服务提供商服务器的非易失性存储器上的用户认证信息进行比较。仅当假定的认证信息包括用户认证序列时,该假定的认证信息可以对应于所存储的用户认证信息。当且仅当假定的认证信息对应于所存储的用户认证信息的情况下,服务提供商服务器可以将服务器恢复码信息传送给第一用户240。
在上述具体实施方案中,当且仅当满足下面条件的情况下,假定的认证信息可以对应于存储的用户认证信息:假定用户的面部对应于用户面部的图像和用户面部的视频中的至少一个;假定用户的音频记录对应于用户的音频记录;并且假定的音频代码对应于语音音频代码。例如,如果所上传的音频-视频剪辑对应于存储在用于第一用户240的服务提供商服务器处的随机码以及照片/视频和音频剪辑,则可以认为第一用户240被认证。
在一些实施方案中,服务提供商服务器还可以生成用于用户认证序列的序列有效期。该序列有效期可以在授权请求中提供给第一用户240。只有在序列有效期内接收到包括用户认证序列的假定认证信息时,假定认证信息才对应于所存储的用户认证信息。实际上,序列有效期可以对应于特定随机认证序列的暂停(time-out)。
在上述的具体实施例中,如果音频-视频记录动作在有限允许时间段(序列有效期)内紧接在生成随机码之后完成,则可以认为该记录的音频-视频剪辑有效。否则,可以生成新的随机码(用户认证序列),并且可以重复音频-视频记录动作(假定认证信息的生成)。
尽管前面在验证码恢复实现方式的上下文中描述了方法1100,但是远程认证方法1100的方面也可以应用于各种其他情况以认证用户。例如,在一些实施方案中,步骤1110可以通过对信息或者注册或者通常的认证初始序列的任何请求代替。然后,方法1100的剩余步骤可以用于远程认证用户。
在下面的描述中,如果实现没有验证码恢复的CRKG的过程的实施方案,则***200的实施方案可以被称为没有验证码恢复(QSSAS-NR)的QSSAS,并且如果采用具有验证码恢复的CRKG的过程的实施方案,则***200的实施方案可以被称为具有验证码恢复的QSSAS(QSSAS-R)。
AVCC过程
每当出现需要时,第一用户240可以通过那些L个设备202的一个上的处于ROU状态的任何运行的加密代理工具204来改变验证码C。此外,我们使用第一设备202a上的加密代理工具204为例。在一些实施方案中,AVCC可以按照如下工作:
第一用户240将由Cn表示的新验证码输入到第一用户设备202a上的加密代理工具204中。加密代理工具204确定更新的加密本地码并且替换当前存储的加密本地码(例如,加密代理工具计算并且将本地保存的β更新为βn)。
在QSSAS-NR的情况下,加密代理工具204向Q-服务器230发送更新的加密的服务器代码该Q-服务器230将其本地保存的服务器加密的服务器代码更新为在QSSAS-R的情况下,加密代理工具204计算和更新的远程恢复码。在服务提供商提供服务提供商公钥的实施例中,更新的远程恢复码可以被确定为其中Y是{1,2,…,N-1}中的新的独立随机数,λ是服务提供商的私钥。加密代理工具204可以将和发送给Q-服务器230,Q-服务器230又将其本地存储的更新为并且将更新的远程恢复码提供给***200的服务提供商,以将更新为
加密代理工具204可以用现有的验证码C解码EC(X0,X1,…,Xi)并且基于更新的验证码生成新的加密密钥指示符。将更新的加密密钥指示符传送给服务器230以更新密钥状态字符串。在ElGamal示例性实施方案中,加密代理工具204可以独立地生成新的随机数Yj,j=0,1,2,…,i,其中每个新的随机数均匀分布在{1,2,…,N-1},加密代理工具然后计算和j=0,1,2,…,i,并且将j=0,1,2,…,i发送给Q-服务器,该服务器转而将密钥状态字符串从S=1ε0μ0…εiμi更新为
加密代理工具204可以用现有的验证码C解密EC(K0,K1,…,Ki),使用更新的验证码Cn重新加密(X0,X1,…,Xi)和(K0,K1,…,Ki),最后将EC(X0,X1,…,Xi)和EC(K0,K1,…,Ki)分别重写为和
在AVCC过程结束时,公式(1)到公式(6)的一致属性可以相对新的验证码Cn在第一用户的设备202a的加密代理工具204和Q-服务器230之间保持有效。
VCU过程
在第一用户240通过第一用户设备202a上的加密代理工具204改变验证码后,公式(3)和公式(4)的一致属性可以在第一用户204的其他加密代理工具204和Q-服务器230之间不再有效。如果这些加密代理工具204正在运行并且与Q-服务器230通信,在一些实施方案中,它们可以自动退出。在这种情况下,每个加密代理工具204可以在检测到验证码改变后要求第一用户240更新验证码。以第二设备202b上的加密代理工具204为例。VCU工作流程如下:
1)第二设备202b上的加密代理工具204要求第一用户240输入正确的用户名、密码、旧的验证码C和PIN R。
2)第二设备202b上的加密代理工具204使用所述旧的验证码C解码EC(X0,X1,…,Xi)和EC(K0,K1,…,Ki)。
3)第二设备202b上的加密代理工具204请求第一用户240输入新的验证码Cn。
4)然后第二设备202b上的加密代理工具204计算与Cn对应的并且将其发送给Q-服务器以检查其与Q-服务器处存储的的一致性。
如果上面步骤4)中的一致性检查成功,则第二设备202b上的加密代理工具204接受第一用户240的输入Cn作为正确的新的验证码;否则,将重复步骤3)和4)直至上述一致性检查成功。
然后第二设备202b上的加密代理工具204计算将本地存储的β更新为βn,利用新的验证码Cn重新加密(X0,X1,…,Xi)和(K0,K1,…,Ki),并且最后将EC(X0,X1,…,Xi)和EC(K0,K1,…,Ki)分别重写为和
在VCU过程结束时,关于新验证码Cn,一致属性公式(1)到公式(6)可以在第二设备202b上的加密代理工具204和Q-服务器230之间再次有效,并且第二设备202b上的加密代理工具204可以被重置为状态ROU。
ANKG的过程
在一些实施方案中,每当出现需要时,第一用户240可以请求通过那些L个设备202中的一个上的正在状态ROU运行的任何加密代理工具204来生成新的FED密钥种子集合。此外,我们使用第一用户的设备202a上的加密代理工具204为例。ANKG的过程可以工作如下:
加密代理工具204生成更新的多个密钥指示符。例如,加密代理工具204可以独立地生成附加的随机数Xj作为更新的多个密钥指示符。加密代理工具204可以加密更新的多个密钥指示符,并且将加密的更新的多个密钥指示符发送给服务器230。然后,服务器230可以使用加密的更新的多个密钥指示符更新密钥状态字符串。
在ElGamal实施例中,加密代理工具204还会生成附加的随机数Yj,j=i+1,2,…,i+J,其中每个随机数在{1,2,…,N-1}上均匀分布,计算和j=i+1,2,…,i+J,并且然后将(εj,μj),j=i+1,2,…,i+J发送给服务器230,该服务器转而通过将εi+1μi+1…εi+Jμi+J附加到密钥状态字符串S的右端来更新密钥状态字符串S,即,将S从S=1ε0μ0…εiμi扩展成S=1ε0μ0…εi+Jμi+J。
在使用服务器密钥值的实施方案中,加密代理工具204可以将密钥指示符量发送给服务器230,例如以整数对(i+1,i+J)的形式发送给服务器230,从而请求服务器230的协助以生成新FED密钥种子集合。
一旦收到密钥指示符量(例如,整数对(i+1,i+J)),Q-服务器230可以如上所述生成服务器密钥值。例如,服务器230可以基于Ur、E(Pr)和它自己的秘密密钥v作为附加的独立的随机数Vi+1,Vi+2,…,Vi+J生成服务器密钥值,其中每个附加随机数在{1,2,…,N-1}上均匀分布,并且将Vi+1,Vi+2,…,Vi+J发回给加密代理工具204。
加密代理工具204可以基于所述的服务器密钥值Vi+1,Vi+2,…,Vi+J和更新的多个密钥指示符Xi+1,Xi+2,…,Xi+J生成新的FED密钥种子集合Kj=A(Xj,Vj),j=i+1,i+2,…,i+J。
最后,加密代理工具204可以基于更新的密钥种子存储密钥种子信息。例如,加密代理工具204可以使用验证码C将(Xi+1,Xi+2,…,Xi+J)和(Ki+1,Ki+2,…,Ki+J)分别加密为EC(Xi+1,Xi+2,…,Xi+J)和EC(Ki+1,Ki+2,…,Ki+J),并且将它们存储到第一用户设备202a的非易失性存储器中。
再次,在ANKG过程结束时,一致属性公式(1)到公式(6)可以在第一用户设备202a上的加密代理工具204和Q-服务器230之间保持有效。
PNKG的过程
在经由第一用户设备202a上的加密代理工具204生成新的FED密钥种子集合后,可以由第一用户240的任何其他加密代理工具204检测该加密代理工具204是否正在运行并且是否与Q-服务器230通信。因此,该加密代理工具204(例如,第二设备202b上的加密代理工具)可以通过其经由PNKG的过程与Q-服务器230的通信自动地为其自身生成相同的新的FED密钥种子集合。通常,PNKG的过程类似于与上面参照图4B和4C描述的初始密钥种子同步过程组合的ANKG的过程而操作。
在检测到另一加密代理工具已经生成新的FED密钥种子集合后,第二设备202b上的加密代理工具204可以请求Q-服务器230发回密钥状态字符串S=S0S1S2…S2(i+J+1)- 1S2(i+J+1)=1ε0μ0…εi+Jμi+J。
第二设备202b上的加密代理工具204可以通过计算j=i+2,…,i+J+1来确定密钥状态字符串S中的多个密钥指示符Xj,j=i+1,…,i+J。
然后,第二设备202b上的加密代理工具204可以遵循上述的ANKG的总体过程来自己完成新的FED密钥种子集合的生成。
在PNKG过程结束时,一致属性公式(1)到公式(6)可以在第二设备202b上的加密代理工具和Q-服务器230之间再次有效。
别名(Alias)
第一用户240(或者相关的其他任何用户)可以使用不同的用户名(例如,使用不同的电子邮箱地址和不同的电话号码)与他人通信。在许多应用中(例如,电子邮箱和移动通信),这些用户名中的每一个通常对应于用于相应的应用的其自己的唯一账户,即使这些用户名和账户属于相同的第一用户240。然而,在***200的情况下,在一些情况下可能不期望用户名和账户之间的这种一一对应。在一些实施方案中,可能优选的是每个设备每个用户具有一个QSSAS账户。在一些其他实施方案中,如上面CRKG的过程中所描述的,因为不同的QSSAS账户通常具有不同的FED密钥种子集合,即使允许每个设备每个用户使用多个QSSAS账户,当第一用户240登录到同一设备202上的另一QSSAS账户时,在一个QSSAS账户下管理的第一用户240的文件不能被解密。
为了克服上述问题,在一些实施方案中,可以向QSSAS***引进别名的概念,以允许第一用户240的多个用户名(即,别名)共享相同的QSSAS账户,并且因此共享相同的密码、验证码、FED密钥种子集合以第一用户240的这些L个设备202上的私钥和公钥对。第一用户240可以是控制多个设备202的单个用户。然而,第一用户240可以有多个用户别名标识符(例如,多个电子邮箱地址、社交媒体用户名、电话号码等)。在一些实施方案中,多个用户别名标识符中的每个用户别名标识符可以共享相同的账户认证信息。
每当第一用户240通过这些L个设备的一个上的任何注册的加密代理工具204向第一用户240的QSSAS账户添加新的用户名(即,别名)时,该别名可以记录在该加密代理工具204上,发送到Q-服务器230,服务器230进而将该别名存储在第一用户240的第一用户账户中,并且该别名随后可以在第一用户240的其他设备202(现有的或者新的)上的所有其他注册的加密代理工具204处被自动同步。
在这样的实施方案中,第一用户240可以通过具有任何第一用户240的别名的那些L个设备202上的任何注册的加密代理工具204登录到第一用户240的QSSAS账户。当其他人通过第一用户240的不同别名与第一用户240共享加密文件时尤其方便。无论第一用户240的别名中的哪一个用于共享加密文件,只要那些加密文件可以用于相应的设备202,它们都可以当第一用户240使用任何第一用户240别名登录到第一用户240的注册加密代理工具204中的任何一个时被解密。
扩展QSSAS用于分组共享加密文件
下面描述可以在多组用户之间提供加密文件的组共享的示例性实施方案。图7示出了用于为被配置为与服务器730进行电通信的多个设备702提供加密的***700的一个示例性实施方案。通常,***700与上述***200和***500基本相似,但是在***700中,第一用户包括多组用户740a-t。多组用户740可以包括管理组用户740a和第二组用户740b。
每组用户740可以具有在服务器730上注册的用户专用的账户。每组用户740可以控制设备702中的至少一个。在图7示出的实施例中,管理组用户740a控制第一设备702a,并且第二组用户控制第二设备702b。每个设备702可以具有安装在其上的加密代理工具704。安装在特定设备702上的每个加密代理工具704可以向Q-服务器730注册控制该特定设备702的组用户740。
也就是说,对于多组用户中的每组用户740,相应的用户专用账户可以包括组用户标识符(即,用户的用户名)。用户专用账户还可以存储如上所述的其他账户数据,例如诸如别名。每组用户740还可以具有对应的密码、验证码、私钥和公钥对、以及不同组的FED密钥种子。多组用户740可能对在他们之间共享某些加密文件感兴趣。例如,加密的文件可以与共同感兴趣的项目(例如,共享项目)相关。***700的实施方案可以使用上述***100、200和500的各方面来提供加密文件的这种组共享。此外,***700的实施方案还可以引入新概念,诸如虚拟文件夹(VF)、超级用户(SU)和超级用户账户(SUA)。在一些实施方案中,可以使用稍微修改的过程来通过组用户740的加密代理工具和Q-服务器730之间的通信来生成和同步对于共享项目的每个VF特定的新的FED密钥种子集合。
一般来说,虚拟文件夹可以指与用户生成的每个多个密钥种子相关联的特定加密文件集合。尽管在此详细描述了索引的实施例,但是应明了虚拟文件夹可以以许多不同的方式实现。虚拟文件夹实际上可以是特定加密文件组的标识符。用于与用户所涉及的每个共享项目(或者每组用户)相对应的文件的虚拟文件夹可以与用于该组用户的对应的密钥种子和密钥状态字符串信息相关联。
将使用管理用户740a作为示例来描述在***700的一些实施方案中使用的虚拟文件夹(VF)的概念。管理用户740a已经向服务器730注册了用户专用的账户,例如,使用上述CRKG的过程的实施方案。管理用户740a可以在由管理用户740a控制的设备702上注册一个或者多个加密代理工具704(即,管理用户740a控制的每个设备702有一个加密代理工具704)。到目前为止,管理用户740a可能已经只使用他的用户专用账户和加密代理工具704来保护和管理他未共享的文件,无论该文件是存储在他自己的设备702上、在云服务器750上还是通过云服务器750传送、或者在其他位置,如互联网的其他位置。Q-服务器730可以在管理用户740a的用户专用账户中存储仅一个密钥状态字符串S,并且由管理用户740a的加密代理工具704使用并且使用***200/500的实施方案通过密钥状态字符串S被自动同步的FED密钥种子集合可以只用于加密和解密由管理用户740a的加密代理工具704管理的非共享文件。
为便于后续描述,可以将由管理用户740a的加密代理工具704管理的非共享文件说成是为管理用户740a形成0(VF0)索引的虚拟文件夹。因此,被管理用户740a的加密代理工具704用来对包含在VF0中的非共享文件进行加密和解密以及在管理用户740a的用户专用账户中的被Q-服务器730记录的对应的密钥状态字符串S可以被说成是被分配给管理用户740a的VF0。随着时间的流逝,管理用户740a可能想要参加或者通过其他用户(例如,组用户740)而参加以共享加密文件,参与共享项目并且与相应的其他用户组740共享与每个共享项目相关的加密文件。
对管理用户740a的每个共享项目,***700现在可以向其分配具有索引l的VF,其中每当管理用户740a参与新的共享项目时,l可以增加1。每个VFl可以与管理用户740a的第l个共享项目相关联。分配给VFl的可以是专用于VFl的密钥状态字符串Sl和新的FED密钥种子集合,它们被管理用户740a的加密代理工具704用于加密和解密包含在用于管理用户740a的第l个共享项目的VFl中的文件并且通过管理用户740a的设备702上的加密代理工具704和Q-服务器730(如上所述)之间的通信连同相应的超级用户(SU)和超级用户账户(SUA)而被再次生成。注意,虽然管理用户740a可以在不同的设备上使用不同的加密代理工具来在不同的共享项目上工作,但是Q-服务器730始终可以知道管理用户740a已经参与了多少共享项目,并且知道如何将索引分配到管理用户740a的VF。
与管理用户740a的每个共享项目相关联的可以是参与共享项目的组用户(即多组用户)。组用户可以在它们之间共享与共享项目相关的加密文件。在组用户内,其中一个用户可以被称为共享项目的管理用户(为了简单起见,我们将在下面的讨论中使用管理用户740a作为管理用户)。例如,在第一用户包括多组用户的情况下,第一用户可以被称为超级用户。
在一些实施方案中,管理用户可以是共享项目的发起者。管理用户和该组中的其他用户的集合可以被称为超级用户。可以基于其组用户标识符或者记录在Q-服务器730上的用户数据库中的索引来对每组用户进行标识。在Q-服务器730上,SU可以由(ω,Ω)对表示,其中ω是用户数据库中的共享项目的管理用户的索引,以及Ω是在用户数据库的组中的其他用户的索引集合。***700还可以向每个SU分配唯一的组标识符(例如,第一用户标识符),例如由Il表示的ID。
Q-服务器730可以为每个SU创建超级用户账户。然后服务器730可以生成第一用户账户作为该多组用户的超级用户账户。该第一用户账户(超级用户账户/SUA)可以包括第一用户标识符(该SU的ID)。第一用户标识符可以用(ω,Ω)对的形式表示。
在一些实施方案中,所述SUA可以生成并且保存一个密钥状态字符串以允许组用户确定相同多个密钥指示符,并且从而生成相同多个密钥种子和加密密钥。这可以允许组用户安全共享加密文件,同时还为每个组用户提供对解密文件的访问权限。
以类似于上述CRKG的过程的实施方案,SUA还可以为第一账户生成多个服务器密钥值,该服务器密钥值可以存储在用于SUA的服务器730上。例如,服务器密钥值可以是用于第一用户的一系列独立随机数V1,V2,…,Vi,它又可以用于帮助该SU中的组用户702的加密代理工具704通过与Q-服务器730通信来生成多个密钥指示符以及新的FED密钥种子集合,所述多个密钥指示符以及新的FED密钥种子集合被该SU内的用户的加密代理工具用于将与该SU对应的共享项目相关的文件加密和解密。
再次以管理用户740a为例。通过引入共享项目、VF、SU和SUA的概念,管理用户740a的每个加密代理工具704存储在由管理用户740a控制的对应设备702的非易失性存储器中的信息可以被扩展,以包括基于管理用户740a的验证码和管理用户740a的每个VF的密钥种子信息被解密的附加的密钥指示符集合,连同由该管理用户740a的加密代理工具记录的VF索引l和对应的超级用户ID Il的列表。例如,可以为每个VF存储附加的加密的随机数集合EC,l(Xl,1,Xl,2,…,Xl,i)和加密的FED密钥种子EC,l(Kl,1,Kl,2,…,Kl,i),l=1,2,…。Il是指对应于管理用户740a的VFl的、与共享项目相关联的SU的ID。分配给管理用户740a的VFl的FED密钥种子集合{Kl,1,Kl,2,…,Kl,i}可以被管理用户740a的加密代理工具704用于加密和解密与对应于VFl的共享项目相关的文件。类似地,Q-服务器730在其非易失性存储器中为管理用户740a存储的信息也可以扩展为包括管理用户740a的所有VF的索引l的列表、对应的超级用户ID Il,和{(l,Il,Sl):l=1,2,…}形式的附加的密钥状态字符串Sl=Sl,0Sl,1Sl,2…Sl,2i,其中Sl是分配给管理用户740a的VFl的密钥状态字符串。在一些实施方案中,分配给管理用户740a的VFl的密钥状态字符串Sl可以由管理用户通过该管理用户正在运行的加密代理工具发起用于与管理用户740a的VFl相对应的共享项目。
在一些实施方案中,管理用户740a、第二组用户740b、以及其余组用户740可能想要参与共享项目并且通过***700共享与该共享项目相关的加密文件。在不失一般性的情况下,假设管理用户740a是该共享工程的发起人和管理者。在这种情况下,对应于该共享工程的SU由管理用户740a和多个其他组用户740组成。对于每组用户740,对应于该共享工程的VF可以是VFlt。与共享项目相关的实际加密文件可以通过云计算服务或者其他手段与云同步并且在SU内所有用户的加密代理工具704之间同步。然而,为了使SU中的用户能够看到相应的明文文件,由第一用户中的所有组用户740的加密代理工具704使用的用于加密和解密与共享项目相关的文件的FED密钥种子集合可能必须由***700在所有组用户740的加密代理工具704之间同步。
参考图8,描述了一个当第一用户包括多组用户时用于生成和同步密钥种子的示例性方法800。根据上述示例,用于加密和解密与该共享工程相关文件的FED密钥种子集合可以由该共享工程的管理用户初始生成,该管理用户是当前情况下的管理用户740a。
在805,可以向第一账户注册多组用户。将用户注册到第一账户的过程可以类似于上面参照图6C中的660描述的过程。在一些实施方案中,第一用户内的每组用户的用户标识符可以是该用户的有效电子邮箱地址。第一管理用户740a可以使用他的加密代理工具704中的一个向服务器730发送授权请求。组授权请求可以包括第一用户中的所有组用户的用户标识符。组授权请求可以向Q-服务器730指示应该为共享项目生成第一账户。
Q-服务器730可以建立SUA,并且还可以代表管理用户740a向每组用户740发送加入共享项目的邀请。邀请可以作为电子邮件发送到与该组用户740的用户标识符相关联的电子邮箱地址。如果该组用户没有用户专用账户,则电子邮件还可以提示每组用户向服务器730建立用户专用账户。
在一些实施方案中,服务器730可以为第一用户生成第一账户,以包括与每组用户相对应的账户认证信息。该账户认证信息可以包括用于每组用户740的用户专用服务器加密代码。对每个用户,用户专用服务器加密代码可以由加密代理工具704在由该用户控制的设备之一上生成。加密代理工具704可以限定用户专用的验证码并且基于用户专用的验证码生成用户专用的服务器加密代码。在用户专用的服务器加密代码被存储在第一账户的账户认证信息中的情况下,该加密代理工具可以传输所述用户专用的服务器加密代码。在一些情况下,第一账户的账户认证信息可以仅仅向用户专用账户表明在哪里可以访问用户专用的服务器加密代码来对用户进行认证。
在SU中的用户作出响应后,对于接受邀请的每组用户740,Q-服务器730可以进一步与该组用户的加密代理工具704通信,使得在该加密代理工具704上建立对应于该共享工程的VF,组用户的加密代理工具以及与共享项目相关联的VFlt的索引lt和SU的ID由Q-服务器730记录在用户t的用户专用账户中,也可以由用户t的加密代理工具记录。
在810,每组用户740可以生成用户专用的公共密钥。可以基于存储在由组用户740控制的对应设备702的非易失性存储器中的用户专用私钥来生成每个用户的用户专用公钥。然后,可以将每个用户的用户专用公钥提供给管理用户740a。可以如上面参考图4C中的470所描述的来生成用户专用私钥和用户专用公钥。
例如,对于接受邀请的每组用户740,Q-服务器730可以向管理用户740a的加密代理工具704发回记录在该组用户740的用户专用账户中的γ的值,其中γ是该组用户740的公钥。服务器730还可以发送存储在Q-服务器730的用户数据库中的该组用户的索引。组用户740t的用户专用的公钥可以被标记为以便于我们随后的讨论。
在815,第一设备702a的加密代理工具704可以通过生成多个用户专用的加密密钥指示符来为第一用户生成多个加密的密钥指示符。可以基于与如上所述相同的方式生成的密钥指示符来生成加密的密钥指示符。第一设备702a的加密代理工具704可以使用用于该组用户的用户专用公钥来为每组用户740生成多个用户专用的加密密钥指示符。
例如,管理用户740a的加密代理工具704可以作为多个独立随机数j=1,2,…,J生成密钥指示符,其中每个随机数均匀分布在{1,2,…,N-1}上。在一些实施方案中,管理用户740a的加密代理工具704然后可以向Q-服务器730发送整数对(1,J),以请求Q-服务器730协助生成用于共享项目的FED密钥种子。在这样的实施方案中,一旦接收到整数对(1,J),Q-服务器730可以基于SUA和其自己的秘密密钥v来生成服务器密钥值例如独立随机数V1,V2,…,VJ,其中每个随机数均匀分布在{1,2,…,N-1}上,并且将V1,V2,…,VJ发送回管理用户740a的加密代理工具704。
然后,管理用户740a的加密代理工具704可以基于V1,V2,…,VJ和为共享项目生成J个独立的FED密钥种子j=1,2,…,J。
管理用户740a的加密代理工具704可以使用管理用户740a的验证码C以及对应于管理用户740a的共享项目的VF的索引l1来分别将多个密钥指示符加密为并且通过将加密为来生成密钥种子信息。然后,加密代理工具704可以将多个密钥指示符和密钥种子信息存储在第一设备702a的非易失性存储器中。
在一些实施方案中,对于接受邀请的每组用户t,1≤t≤T,管理用户740a的加密代理工具704还可以生成第二多个独立随机数Yt,j,j=1,2,…,J,其中每个随机数均匀分布在{1,2,…,N-1}上,确定用户专用的加密密钥指示符和多个用户专用密钥指示符公钥j=1,2,…,J,并且将(εt,j,μt,j),j=1,2,…,J连同与共享项目相关联的用户t的索引和SU的ID(比如I)一起发送给Q-服务器730,其中是用户t的公钥。
一旦接收在上述使用ElGamal的具体实施方案中的加密的密钥指示符以及与共享项目相关联的组用户t的索引和第一用户的ID I,Q-服务器730可以使用SU的第一用户标识符ID I来根据组用户t的用户专用账户信息确定对应于组用户t的共享项目的VF的索引lt,并且然后通过用替换(lt,I)来更新用户t的用户专用账户,其中
也就是说,对于每组用户740,第一账户的密钥状态字符串的服务器密钥指示符部分可以包括用户专用字符串部分,该用户专用字符串部分是基于该组用户740的多个用户专用的加密密钥指示符生成的。该用户专用字符串部分也可以与第一用户标识符一起存储在该组用户的用户专用账户中。
在820中,第二设备702b可以接收用于第二用户740b的用户专用的字符串部分。第二设备702b上的加密代理工具704可以使用接收到的用户专用字符串部分来确定第一账户的多个密钥指示符,并且由此确定共享项目的文件的密钥种子和加密密钥。
在825中,第二设备702b上的加密代理工具704可以使用第二设备的私钥,根据(在820处接收的)服务器密钥指示符部分的用户专用部分中的多个用户专用的加密密钥指示符来确定多个密钥指示符。
例如,假设第二用户740b的加密代理工具704处于状态ROU。然后由管理用户为第一账户生成的FED密钥种子集合可以被自动且安全地同步到第二用户740b的加密代理工具704。
在可以由第二用户740b的加密代理工具发起的、第二设备702b的加密代理工具704和Q-服务器730之间的握手过程期间,Q-服务器730可以将VF索引l的列表{(l,Il,Sl):l=1,2,…}、超级用户ID Il、以及包含在第二用户702b的用户专用账户中的附加密钥状态字符串Sl=Sl,0Sl,1Sl,2…Sl,2J发回到第二设备702b的加密代理工具704。
通过将列表{(l,Il,Sl):l=1,2,…}与其本地信息进行比较,如果第二设备702b的加密代理工具704没有VFlt的任何记录,第二设备702b上的加密代理工具704可以检测到已经在Q-服务器730和第二用户740b的另一加密代理工具704之间建立新的虚拟文件夹VFlt。第二设备702b的加密代理工具704还可以确定,管理用户740a已经为该共享项目生成了对应于VFlt(即,对于与第一用户相关联的第一账户)的共享项目的多个FED密钥种子。
第二设备702b上的加密代理工具704可以为其自身设置虚拟文件夹VFlt并且如果它没有关于VFlt的任何记录则记录信息第二设备702b的加密代理工具704还可以从列表{(l,Il,Sl):l=1,2,…}检索对应的密钥状态字符串然后,第二设备702b的加密代理工具704可以计算
其中,Kt,0是用户t的私钥。
然后,第二设备702b的加密代理工具704可以将整数对(1,J)连同与对应于VFlt的共享项目相关联的第一用户的第一用户标识符发送给Q-服务器730,以请求Q-服务器730协助生成待由第二设备702b的加密代理工具704使用的该共享项目的FED密钥种子。
一旦接收到Q-服务器730可以基于与对应于具有第一用户标识符的第一用户的SUA和其自己的秘密密钥v,作为独立随机数V1,V2,…,VJ生成服务器密钥值,其中每个随机数均匀分布在{1,2,…,N-1}上,并且将V1,V2,…,VJ发送回第二设备702b的加密代理工具704。
基于服务器密钥值V1,V2,…,VJ和多个密钥指示符第二设备702b的加密代理工具704可以生成J个独立的FED密钥种子用于待由第二设备702b的加密代理工具704使用的共享项目。
第二设备702b的加密代理工具704可以使用第二用户740b的验证码C以及第二设备702b的加密代理工具704中的虚拟文件夹VFlt的索引号lt,将和分别加密为和并且将和存储到第二设备702b的非易失性存储器中。
基于上述描述,由此得出公式(7)中计算的随机数j=1,2,…,J,可以与上述在为该组用户共享加密文件生成FED密钥种子的过程中由管理用户740a生成的随机数相同。此外,上述描述还可以暗示:
因此,FED密钥种子集合可以在第一用户SU内的所有组用户740的所有加密代理工具704之间同步。
一旦生成并且同步FED密钥种子的集合,第二用户740b的任何加密代理工具704上的虚拟文件夹VFlt可以按照与VF 0相同的方式工作。例如,可以由组用户t的相应加密代理工具704使用从与集合对应的FED密钥库中随机选择的FED密钥来自动加密在其内部创建/修改或者移动到VFlt内的任何文件,除非移动的文件已经是被第一SU内的组用户740的另一加密代理工具704加密的格式。然后可以将每个文件生成的加密数据连同借助密钥种子可以从中导出FED密钥的密钥信息(例如密钥库中使用的FED密钥的索引)以及与对应于虚拟文件夹VFlt的共享项目相关联的SU的ID保存为加密文件。用来自对应于集合的FED密钥库的密钥进行加密的文件,当该文件被放置在虚拟文件夹VFlt下时,可以根据用户t的请求由组用户t的相应的加密代理工具进行解密。由于由所有组用户740的加密代理工具管理并且存储在非易失性存储器中的文件可以始终保持加密,用来自对应于共享项目的集合的FED密钥库的密钥进行加密的文件,一旦在所有虚拟文件夹VFlt,1≤t≤T之外,则可以将其称为“死的”。
通过用于加密文件的组共享的FED密钥种子的同步过程,每组用户740的加密代理工具704记录的本地信息也可以与记录在Q-服务器730上的该组用户740的账户信息同步。此外,在一些实施方案中,可以具有扩展的一致属性,除了一致属性公式(1)到(6)外,还包括涉及VF索引号、对应的超级用户ID以及随机数Xl,1,Xl,2,…,Xl,J和用户t的所有VF的FED密钥种子Kl,1,Kl,2,…,Kl,J,1≤l≤lt的一致属性。同样,可以相应地扩展AVCC、VCU、ANKG和PNKG过程以覆盖加密文件的组共享。
在***700的实施方案中可以使用各种其他安全特征和组件。此外,上文针对***100、200和500描述的许多实施例也可以应用在***700的实施方案中。
在一些实施方案中,当通过***700创建用于在SU中共享的加密文件时,组用户740的一个可以指定加密文件可以被解密以供所述组用户或者SU内的其他组用户740的任何设备702上的任何加密代理工具704查看的最大次数。一旦该文件被该加密代理工具704解密达到最大次数,则该加密代理工具704可以拒绝将来的解密。在一些实施方案中,为了防止任何改变,最大次数与原始明文文件一起可以被加密并且变成加密文件的加密数据的一部分。
在一些实施方案中,当通过***700创建加密文件用于在SU内共享时,该组用户740中的一个可以设定到期时间。所述到期时间可以限定一个时间段,超过该时间段,所述组用户或者SU内的其他组用户740的任何设备702上的加密代理工具704都可以拒绝解密该加密文件。在一些实施方案中,为了防止任何更改,到期时间本身和原明文文件一起被加密并且成为加密文件的加密数据的一部分。
在一些实施方案中,共享项目的管理用户740a可以能够从与共享项目相关联的多组用户(SU)中删除或者移除一个组用户,例如用户t。该管理用户740a可以向Q-服务器730发送请求,以将与共享项目相对应的用户t的密钥状态字符串更新为移除的密钥状态字符串。移除的密钥状态字符串可以指示向正被移除的组用户相关联的设备上的加密代理工具指示所述组用户不再是第一用户中的组用户的一个。例如,可以将密钥状态字符串从更新为即后带2J个零。如上所述,可以通过用于加密文件的组共享的FED密钥种子的同步过程来自动地处理用户的移除。可以应用该过程以将对应于共享项目并且由用户t的所有加密代理工具本地保存的FED密钥种子(和随机数)的集合改变为不同的集合,使得使用共享项目的FED密钥进行加密的文件可以不再由用户t的任何加密代理工具来解密。
在一些实施方案中,共享项目的管理用户740a可以允许被删除的用户重新加入与共享项目相关联的SU。为了实现此,该管理用户可以向Q-服务器730发送请求以更新与共享项目相对应的被删除的用户的密钥状态字符串。例如,该请求可以指示服务器730将对应于共享项目的用户t的密钥状态字符串从更新回其余的可以通过用于再次加密文件的组共享的FED密钥种子的同步过程自动处理。
在上述的示例实施方案中,ElGamal公共***已经用作示例来描述***200、500和700的实施方案。其他公共密钥***(参见例如W.Diffie和M.Hellman,“New directions incryptography”,IEEE Transactions on Information Theory,第22卷,第6期,第644-654页,1976年11月),诸如也可以使用RSA和ECC。另外,本文描述的***还可以提供数字版权管理的期望解决方案。例如,考虑内容服务提供商和最终用户之间的共享项目,其中内容服务提供商充当共享项目的管理用户。通过本文描述的***的实施方案,由内容服务提供商创建/拥有并且由终端用户购买的任何内容可以仅在终端用户的设备上的终端用户的加密代理工具内部可见。
这里已经描述了多个示例性实施方案。然而,本领域技术人员将理解的是,在不脱离随附的权利要求书所限定的实施方案的范围的情况下,可以进行其它变化和修改。
Claims (33)
1.一种在被配置为与服务器电通信的多个设备上提供加密的方法,所述多个设备包括至少第一设备和第二设备,所述方法包括:
为控制所述多个设备的第一用户生成第一账户,其中所述第一账户在服务器的非易失性存储器上存储账户数据,所述账户数据包括第一用户标识符和账户认证信息;
对于所述多个设备中的每个设备,在该设备上安装加密代理工具;
在所述加密代理工具的控制下,操作所述第一设备的处理器以:
随机地生成多个密钥指示符;
使用第二设备加密密钥,根据所述多个密钥指示符生成多个加密的密钥指示符,每个加密的密钥指示符与所述多个密钥指示符中的密钥指示符之一相对应;
将所述多个加密的密钥指示符传送至所述服务器,以防止所述密钥指示符暴露于所述服务器;
基于所述多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,所述加密代理工具能够操作以控制所述第一设备的处理器来生成多个独立的加密密钥;以及
将基于所述多个密钥种子的密钥种子信息存储在第一设备的非易失性存储器中;
为所述第一账户生成密钥状态字符串,所述密钥状态字符串包括基于所述多个加密的密钥指示符生成的服务器密钥指示符部分;
将所述密钥状态字符串存储在所述服务器的非易失性存储器中;
在所述第二设备处接收假定的认证信息;
在安装在所述第二设备上的加密代理工具的控制下,操作所述第二设备的处理器,以基于假定的认证信息生成假定的服务器认证信息,并且将所述假定的服务器认证信息传送至所述服务器;以及
操作所述服务器的处理器,以将所述假定的服务器认证信息与账户认证信息相比较,并且在且仅在所述假定的服务器认证信息与所述账户认证信息相对应的情况下,提供所述第二设备对所述密钥状态字符串的访问;
在加密代理工具的控制下,操作所述第二设备的处理器以:
使用第二设备解密密钥,根据所述密钥状态字符串中的所述多个加密的密钥指示符确定所述多个密钥指示符;
基于所述多个密钥指示符生成所述多个密钥种子,其中对于每个密钥种子,所述加密代理工具能够操作以控制所述第二设备的处理器生成与所述第一设备相同的多个独立的加密密钥,而不用向所述第二设备提供密钥种子、密钥种子信息和加密密钥中的任一种;以及
将基于所述多个密钥种子的所述密钥种子信息存储在第二设备的非易失性存储器中。
2.根据权利要求1所述的方法,其中:
在所述第一设备上生成多个密钥种子进一步包括:
操作所述服务器的处理器,以随机地为所述第一账户生成服务器密钥值,将所述服务器密钥值存储在服务器的非易失性存储器中,并且将所述服务器密钥值传送至所述第一设备;以及
在加密代理工具的控制下,操作所述第一设备的处理器,以基于所述服务器密钥值和所述多个密钥指示符生成多个密钥种子;
其中:
操作所述服务器的处理器,以在且仅在所述假定的服务器认证信息与所述账户认证信息相对应的情况下,为所述第二设备提供对服务器密钥值的访问;并且
在所述加密代理工具的控制下,操作所述第二设备的处理器,以基于所述多个密钥指示符和所述服务器密钥值生成多个密钥种子。
3.根据权利要求1所述的方法,进一步包括:
在所述加密代理工具的控制下,操作所述第一设备的处理器以通过以下方式生成多个加密的密钥指示符:
限定第一验证码;
基于所述第一验证码,限定第二设备加密密钥;以及
使用所述第二设备加密密钥加密多个密钥指示符;
其中:
通过以下方式生成所述第二设备解密密钥:在所述加密代理工具的控制下操作所述第二设备的处理器以限定第二验证码并基于所述第二验证码生成第二设备解密密钥;并且
所述第二验证码是所述第一验证码。
4.根据权利要求3所述的方法,进一步包括:
在加密代理工具的控制下,操作所述第一设备的处理器以:
基于所述第一验证码生成加密的服务器代码;并
将所述加密的服务器代码传送至所述服务器;以及
将所述加密的服务器代码存储在所述第一账户的认证信息中;
其中:
在所述第二设备处接收到的所述假定的认证信息是假定的验证码;
所述假定的服务器认证信息是基于所述假定的验证码生成的假定的加密的服务器代码;以及
在且仅在所述假定的加密的服务器代码与所述加密的服务器代码匹配的情况下,所述假定的服务器认证信息与所述账户认证信息相对应。
5.根据权利要求3所述的方法,进一步包括:
提供待加密并存储至所述第一设备的文件;
在所述加密代理工具的控制下,操作所述第一设备的处理器,以使用密钥信息从所述密钥种子信息导出加密密钥之一;
使用导出的加密密钥将所述文件加密并作为加密的文件存储到所述第一设备的非易失性存储器中;
将密钥信息和加密的文件一起存储在所述第一设备的非易失性存储器中;
其中,所述密钥种子信息在存储之前使用第一验证码加密。
6.根据权利要求5所述的方法,进一步包括:
在第二设备处接收加密的文件和密钥信息;并
在所述加密代理工具的控制下,操作第二设备的处理器以:
使用接收到的密钥信息,从存储在第二设备的非易失性存储器中的密钥种子信息导出加密密钥;
使用导出的加密密钥将加密的文件解密。
7.根据权利要求5所述的方法,其中,所述密钥信息是在所述加密代理工具接收到待加密的文件的指示时被随机选择的。
8.根据权利要求1所述的方法,进一步包括:
在所述加密代理工具的控制下,操作第一设备的处理器以:
限定第一验证码;
基于所述第一验证码生成加密的本地码;并且
将所述加密的本地码存储在第一设备的非易失性存储器中;
随后在所述第一设备处接收访问文件的请求和本地假定的验证码;以及
在所述加密代理工具的控制下,操作第一设备的处理器以:
生成假定的加密的本地码;
将所述假定的加密的本地码与加密的本地码相比较,以确定所述本地假定的验证码是否是第一验证码;并且
在且仅在所述假定的加密的本地码与加密的本地码匹配的情况下,提供对由所述加密代理工具加密的文件的访问。
9.根据权利要求3所述的方法,其中,存储所述密钥种子信息包括:
使用第一验证码加密多个密钥种子;以及
将加密的多个密钥种子存储在所述第一设备的非易失性存储器中。
10.根据权利要求1所述的方法,其中,
所述第一用户包括多组用户,所述多组用户包括至少管理组用户和第二组用户,所述多组用户中的每组用户控制所述多个设备中的至少一个设备,其中所述管理组用户控制所述第一设备,并且所述第二组用户控制所述第二设备;
对于所述多组用户中的每组用户,账户数据进一步包括用户专用公钥,其中每个用户的用户专用公钥是基于存储在所述多个设备中的对应设备的非易失性存储器中的用户专用私钥生成的;
所述第一设备的处理器在加密代理工具的控制下操作,以通过以下方式对于所述多组用户中的每组用户生成多个加密的密钥指示符:
使用该用户的用户专用公钥生成多个用户专用的加密的密钥指示符;
对于所述多组用户中的每组用户,第一账户的密钥状态字符串的服务器密钥指示符部分进一步包括基于该组用户的多个用户专用的加密的密钥指示符生成的用户专用字符串部分;以及
所述第二设备的处理器在所述加密代理工具的控制下操作以:
使用第二设备私钥,根据与所述第二组用户相对应的服务器密钥指示符部分的用户专用部分中的多个用户专用的加密的密钥指示符确定多个密钥指示符。
11.根据权利要求10所述的方法,其中,对于多组用户中的每组用户,第一账户的账户认证信息包括用户专用服务器加密代码,每个用户的所述用户专用服务器加密代码通过以下方式生成:
在所述加密代理工具的控制下,操作所述多个设备中的与该用户相对应的设备的处理器以:
限定用户专用验证码;
基于所述用户专用验证码生成用户专用服务器加密代码;并且
将所述用户专用服务器加密代码传送至所述服务器;以及
将所述用户专用服务器加密代码存储在所述第一账户的账户认证信息中。
12.根据权利要求1所述的方法,其中,所述第一用户包括多个用户,所述多个用户包括控制所述第一设备的管理用户和控制所述第二设备的第二用户,所述方法进一步包括通过以下方式将第二用户授权传送至第二用户:
从所述第一设备向所述服务器传送第二用户的第二用户标识符;
操作服务器的处理器,以基于所述第二用户标识符和第二用户密码生成第二用户注册信息,将所述第二用户注册信息存储在服务器的非易失性存储器上,并将第二用户服务器授权传送至第二用户;
通过所述第二用户接收所述第二用户服务器授权,并且随后在所述第二设备上安装加密代理工具;
在第二设备处接收假定的第二用户密码;
在所述加密代理工具的控制下操作第二设备的处理器,以基于所述第二用户标识符和假定的第二用户密码生成假定的第二用户注册信息,并将所述假定的第二用户注册信息传送至所述服务器;
操作所述服务器的处理器以:
将所述假定的第二用户注册信息与存储的第二用户注册信息相比较;
仅在所述假定的第二用户注册信息与存储的第二用户注册信息相对应的情况下,对第一账户认证第二设备;
在所述加密代理工具的控制下,操作已认证的第二设备的处理器以:
生成第二设备解密密钥;
基于所述第二设备解密密钥生成第二设备加密密钥;以及
将第二设备加密密钥传送至服务器;
在所述第一设备处,接收第二设备加密密钥;以及
在所述加密代理工具的控制下操作第一设备的处理器,以使用接收到的第二设备加密密钥根据多个密钥指示符生成多个加密的密钥指示符。
13.根据权利要求12所述的方法,其中,所述第二设备解密密钥是第二用户的用户专用私钥,所述用户专用私钥存储在第二设备的非易失性存储器中,并且所述第二设备加密密钥是基于所述用户专用私钥生成的对应的用户专用公钥。
14.根据权利要求1所述的方法,其中,所述第一用户包括多个用户,所述多个用户包括控制第一设备的管理用户和控制第二设备的第二用户,所述方法进一步包括:
向第一设备提供待加密的文件;
在所述加密代理工具的控制下,操作第一设备的处理器以:
使用密钥信息从密钥种子信息导出加密密钥之一;并且
使用导出的加密密钥将文件加密为加密的文件;
将加密的文件、密钥信息和第二用户授权传送至第二用户;
通过第二用户接收第二用户授权,并且随后在第二设备上安装加密代理工具;
在第二设备处接收加密的文件和密钥信息;以及
在加密代理工具的控制下,操作第二设备的处理器以:
使用接收到的密钥信息从存储在第二设备的非易失性存储器中的密钥种子信息导出加密密钥;以及
使用导出的加密密钥将加密的文件解密。
15.根据权利要求1所述的方法,其中:
所述第一用户是控制所述多个设备的单个用户;并且
所述第一用户标识符包括多个用户别名标识符,每个用户别名标识符共享账户认证信息。
16.根据权利要求1所述的方法,其中:
所述第一用户包括多个用户,每个用户控制所述多个设备中的至少一个设备并且具有用户专用标识符;以及
对于所述多个用户中的至少一个用户,该用户的用户专用标识符包括多个用户专用别名标识符,每个用户专用别名标识符共享该用户的账户认证信息。
17.一种用于在多个设备上使用以对所述多个设备提供加密的计算机程序产品,所述多个设备被配置为与服务器电通信并且包括至少第一设备以及第二设备,所述第一设备具有第一设备处理器和第一设备的非易失性存储器,所述服务器上存储有控制所述多个设备的第一用户的第一账户,所述第一账户将包括第一用户标识符和账户认证信息的账户数据存储在服务器的非易失性存储器上,所述计算机程序产品包括:
非暂态记录介质;和
记录在所述记录介质上的指令,该指令用于使所述第一设备处理器配置成:
随机生成多个密钥指示符;
使用第二设备加密密钥根据所述多个密钥指示符生成多个加密的密钥指示符,每个加密的密钥指示符与所述多个密钥指示符中的密钥指示符之一相对应,所述第二设备加密密钥与服务器未知的第二设备解密密钥相对应;
将所述多个加密的密钥指示符传送至服务器以防止所述密钥指示符暴露于服务器,所述服务器能够操作以基于所述多个加密的密钥指示符为第一账户生成包括服务器密钥指示符部分的密钥状态字符串,并且在且仅在从所述第二设备接收到的假定的服务器认证信息与账户认证信息相对应的情况下,为第二设备提供对所述密钥状态字符串的访问;
基于所述多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,所述第一设备处理器能够操作以生成多个独立的加密密钥;
将基于所述多个密钥种子的密钥种子信息存储在第一设备的非易失性存储器中;
其中:
所述多个密钥指示符是能够在第二设备处使用所述第二设备解密密钥根据所述密钥状态字符串中的所述多个加密的密钥指示符确定的,使得基于所述多个密钥指示符能够生成相同的多个密钥种子,并且对于每个密钥种子,第二设备的处理器能够生成与所述第一设备相同的多个独立的加密密钥,而不用向所述第二设备提供密钥种子、密钥种子信息和加密密钥中的任一种。
18.根据权利要求17所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为通过以下方式生成多个密钥种子:
从服务器接收多个随机生成的服务器密钥值,所述服务器密钥值被存储在所述第一账户中;以及
基于所述服务器密钥值和所述多个密钥指示符生成多个密钥种子。
19.根据权利要求17所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为:
限定第一验证码;
基于所述第一验证码限定第二设备加密密钥;以及
使用所述第二设备加密密钥将所述多个密钥指示符加密;
其中,第二设备解密密钥也是基于所述第一验证码生成的。
20.根据权利要求19所述的计算机程序产品,
进一步包括指令,该指令用于使所述第一设备处理器配置为:
基于所述第一验证码生成加密的服务器代码;
将加密的服务器代码传送至服务器,以存储在第一账户的账户认证信息中;
其中,所述服务器被配置为,在且仅在从第二设备接收到的假定的服务器认证信息与存储在第一账户的账户认证信息中的加密的服务器代码相对应的情况下,提供对密钥状态字符串的访问。
21.根据权利要求19所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为:
接收待加密的文件;
使用密钥信息,从密钥种子信息导出加密密钥之一;
使用导出的加密密钥将文件加密并作为加密的文件存储在第一设备的非易失性存储器中;
将密钥信息和加密的文件一起存储在第一设备的非易失性存储器中;以及
在存储之前使用第一验证码将所述密钥种子信息加密。
22.根据权利要求21所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为:
接收加密的文件和密钥信息;
使用接收的密钥信息从存储在第一设备的非易失性存储器中的密钥种子信息导出加密密钥;
使用导出的加密密钥将加密的文件解密。
23.根据权利要求21所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为:在接收到待加密的文件的指示之后随机选择所述密钥信息。
24.根据权利要求17所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为:
限定第一验证码;
基于所述第一验证码生成加密的本地码;
将所述加密的本地码存储在第一设备的非易失性存储器中;
随后接收访问文件的请求以及本地假定的验证码;
生成假定的加密的本地码;
将所述假定的加密的本地码与加密的本地码相比较,以确定所述本地假定的验证码是否是第一验证码;以及
在且仅在所述假定的加密的本地码与加密的本地码匹配的情况下,提供对由所述加密代理工具加密的文件的访问。
25.根据权利要求19所述的计算机程序产品,进一步包括指令,该指令用于使所述第一设备处理器配置为通过以下方式存储密钥种子信息:
使用第一验证码加密多个密钥种子;以及
将加密的多个密钥种子存储在第一设备的非易失性存储器中。
26.根据权利要求17所述的计算机程序产品,其中:
所述第一用户包括多组用户,所述多组用户包括至少管理组用户和第二组用户,所述多组用户中的每组用户控制所述多个设备中的至少一个设备,其中所述管理组用户控制所述第一设备且所述第二组用户控制第二设备;
对于所述多组用户中的每组用户,账户数据进一步包括用户专用公钥,其中每个用户的用户专用公钥是基于存储在所述多个设备的对应设备的非易失性存储器中的用户专用私钥生成的;
所述计算机程序产品进一步包含指令,该指令用于使所述第一设备处理器配置为:
对于多组用户中的每组用户,通过使用该用户的用户专用公钥生成多个用户专用的加密的密钥指示符来生成所述多个加密的密钥指示符;以及
将所述多个用户专用的加密的密钥指示符传送至服务器,所述服务器能够操作以通过对于所述多组用户中的每组用户、基于用于该组用户的多个用户专用的加密的密钥指示符生成用户专用字符串部分而生成密钥状态字符串的服务器密钥指示符部分;以及
所述多个密钥指示符是在第二设备处、使用第二设备私钥根据与第二组用户对应的服务器密钥指示符部分的用户专用部分中的多个用户专用的加密的密钥指示符能够确定的。
27.根据权利要求26所述的计算机程序产品,其中:
对于多组用户中的每组用户,第一账户的账户认证信息包括用户专用服务器加密代码;
所述计算机程序产品进一步包括指令,该指令用于使与该组用户对应的多个设备中的一设备的处理器配置为:
限定用户专用验证码;
基于所述用户专用验证码生成用户专用服务器加密代码;以及
将所述用户专用服务器加密代码传送至服务器,以存储在第一账户的账户认证信息中。
28.根据权利要求17所述的计算机程序产品,其中:
所述第一用户包括多个用户,所述多个用户包括控制第一设备的管理用户和控制第二设备的第二用户;
所述计算机程序产品进一步包括指令,该指令用于使所述第一设备处理器配置为:通过将第二用户的第二用户标识符从第一设备传送至服务器来将第二用户授权传送至第二用户,所述服务器能够操作以:基于所述第二用户标识符和第二用户密码生成第二用户注册信息,将所述第二用户注册信息存储在服务器的非易失性存储器上,并且将第二用户服务器授权传送至第二用户;以及
所述计算机程序产品进一步包括指令,该指令在被安装在所述第二设备上时用于使所述第二设备的处理器配置为:
接收假定的第二用户密码;
基于所述第二用户标识符和假定的第二用户密码生成假定的第二用户注册信息;
将所述假定的第二用户注册信息传送至服务器,所述服务器能够操作以将假定的第二用户注册信息与存储的第二用户注册信息相比较,以及仅在假定的第二用户注册信息与存储的第二用户注册信息对应的情况下,对第一账户认证第二设备;并且一旦认证了第二设备,
生成第二设备解密密钥;
基于所述第二设备解密密钥生成第二设备加密密钥;
将所述第二设备加密密钥传送至服务器;以及
所述计算机程序产品还包括指令,该指令用于使所述第一设备处理器配置为:接收第二设备加密密钥,并使用接收到的第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符。
29.根据权利要求28所述的计算机程序产品,其中,所述第二设备解密密钥是第二用户的用户专用私钥,并且第二设备加密密钥是第二用户的对应的公钥。
30.根据权利要求17所述的计算机程序产品,其中:
所述第一用户包括多个用户,所述多个用户包括控制第一设备的管理用户和控制第二设备的第二用户;以及
所述计算机程序产品还包括指令,该指令用于使第一设备处理器配置为:
接收待加密的文件;
使用密钥信息从密钥种子信息导出加密密钥之一;
使用导出的加密密钥将文件加密为加密的文件;
将所述加密的文件、密钥信息以及第二用户授权传送至第二用户;以及
所述计算机程序产品还包括指令,该指令在被安装在所述第二设备上时用于使第二设备的处理器配置为:
基于所述第二用户授权向服务器注册第二设备;
使用第二设备解密密钥,基于密钥状态字符串中的多个加密的密钥指示符确定多个密钥指示符;
基于多个密钥指示符生成多个密钥种子;
将基于所述密钥种子的密钥种子信息存储在第二设备的非易失性存储器中;
接收加密的文件和密钥信息;
使用接收到的密钥信息,从存储在第二设备的非易失性存储器中的密钥种子信息导出加密密钥;以及
使用导出的加密密钥将加密的文件解密。
31.根据权利要求17所述的计算机程序产品,其中,所述第一用户是控制多个设备的单个用户,并且所述第一用户标识符包括多个用户别名标识符,每个用户别名标识符共享账户认证信息。
32.根据权利要求17所述的计算机程序产品,其中,所述第一用户包括多个用户,每个用户控制所述多个设备中的至少一个设备,并且具有用户专用标识符;并且对于多个用户中的至少一个用户,该用户的用户专用标识符包括多个用户专用别名标识符,每个用户专用别名标识符共享该用户的账户认证信息。
33.一种用于提供加密的设备,所述设备用于为包括该设备的多个设备提供加密,每个设备被配置为与服务器电通信,所述服务器上存储有控制多个设备的第一用户的第一账户,所述第一账户将包括第一用户标识符和账户认证信息的账户数据存储在服务器的非易失性存储器上,
所述设备包括:
处理器;以及
设备的非易失性存储器,所述存储器上存储有指令,该指令用于使所述处理器配置为:
随机生成多个密钥指示符;
使用第二设备加密密钥从多个密钥指示符生成多个加密的密钥指示符,每个加密的密钥指示符与多个密钥指示符中的密钥指示符之一对应,所述第二设备加密密钥与所述服务器未知的第二设备解密密钥对应;
将所述多个加密的密钥指示符传送至服务器,以防止密钥指示符暴露于服务器,所述服务器能够操作以基于所述多个加密的密钥指示符为第一账户生成包括服务器密钥指示符部分的密钥状态字符串,并且在且仅在从该设备接收到的假定的服务器认证信息与账户认证信息对应的情况下,向所述多个设备中的第二设备提供对密钥状态字符串的访问;
基于所述多个密钥指示符生成多个密钥种子,其中对于每个密钥种子,所述处理器能够操作以生成多个独立的加密密钥;
将基于所述多个密钥种子的密钥种子信息存储在设备的非易失性存储器中;
其中,所述多个密钥指示符是在所述第二设备处使用第二设备解密密钥根据密钥状态字符串中的多个加密的密钥指示符能够确定的,使得基于所述多个密钥指示符能够生成相同的多个密钥种子,并且对于每个密钥种子,第二设备的处理器能够生成与所述设备相同的多个独立的加密密钥,而不需要向所述第二设备提供密钥种子、密钥种子信息和加密密钥中的任一种。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462011837P | 2014-06-13 | 2014-06-13 | |
US62/011,837 | 2014-06-13 | ||
PCT/CA2015/050543 WO2015188277A1 (en) | 2014-06-13 | 2015-06-12 | Methods, systems and computer program product for providing encryption on a plurality of devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106664202A true CN106664202A (zh) | 2017-05-10 |
CN106664202B CN106664202B (zh) | 2020-04-03 |
Family
ID=54832664
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580043471.3A Active CN106664202B (zh) | 2014-06-13 | 2015-06-12 | 提供多个设备上的加密的方法、***和计算机可读介质 |
CN201680047252.7A Active CN107925577B (zh) | 2014-06-13 | 2016-06-10 | 用于加密密钥生成和管理的方法以及计算机可读介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680047252.7A Active CN107925577B (zh) | 2014-06-13 | 2016-06-10 | 用于加密密钥生成和管理的方法以及计算机可读介质 |
Country Status (5)
Country | Link |
---|---|
US (3) | US9619667B2 (zh) |
EP (2) | EP3155754B1 (zh) |
CN (2) | CN106664202B (zh) |
ES (1) | ES2713673T3 (zh) |
WO (2) | WO2015188277A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150804A (zh) * | 2017-06-16 | 2019-01-04 | 中兴通讯股份有限公司 | 委托登录方法、相关设备和计算机可读存储介质 |
CN110008725A (zh) * | 2019-04-01 | 2019-07-12 | 王龙 | 一种用户结构化数据处理*** |
CN111884800A (zh) * | 2020-07-31 | 2020-11-03 | 青岛海信智慧家居***股份有限公司 | 一种对电子密钥进行同步的方法和设备及*** |
CN112425114A (zh) * | 2018-07-17 | 2021-02-26 | 维萨国际服务协会 | 受公钥-私钥对保护的密码管理器 |
CN112463454A (zh) * | 2020-12-04 | 2021-03-09 | 北京深思数盾科技股份有限公司 | 数据恢复方法、服务器、终端设备及存储介质 |
CN113647051A (zh) * | 2019-01-28 | 2021-11-12 | 康奈尔克有限公司 | 用于安全电子数据传输的***和方法 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924712B2 (en) * | 2011-11-14 | 2014-12-30 | Ca, Inc. | Using QR codes for authenticating users to ATMs and other secure machines for cardless transactions |
WO2015188277A1 (en) | 2014-06-13 | 2015-12-17 | BicDroid Inc. | Methods, systems and computer program product for providing encryption on a plurality of devices |
US9298940B1 (en) * | 2015-01-13 | 2016-03-29 | Centri Technology, Inc. | Secure storage for shared documents |
EP3308498A4 (en) * | 2015-06-12 | 2019-01-23 | Bicdroid Inc. | METHODS AND COMPUTER PROGRAM PRODUCTS FOR THE GENERATION AND MANAGEMENT OF ENCRYPTION KEYS |
US10033703B1 (en) | 2015-06-16 | 2018-07-24 | Amazon Technologies, Inc. | Pluggable cipher suite negotiation |
US9973481B1 (en) * | 2015-06-16 | 2018-05-15 | Amazon Technologies, Inc. | Envelope-based encryption method |
US10032044B2 (en) * | 2015-08-08 | 2018-07-24 | Airwatch Llc | Multi-party authentication and authorization |
US9876783B2 (en) | 2015-12-22 | 2018-01-23 | International Business Machines Corporation | Distributed password verification |
US10103885B2 (en) * | 2016-01-20 | 2018-10-16 | Mastercard International Incorporated | Method and system for distributed cryptographic key provisioning and storage via elliptic curve cryptography |
JP2017169147A (ja) * | 2016-03-17 | 2017-09-21 | 株式会社東芝 | 検証装置、電子機器、プログラムおよび検証システム |
US9894080B1 (en) * | 2016-10-04 | 2018-02-13 | The Florida International University Board Of Trustees | Sequence hopping algorithm for securing goose messages |
CN106534077B (zh) * | 2016-10-18 | 2019-08-20 | 华南理工大学 | 一种基于对称密码的可认证的代理重加密***及方法 |
CN107995151B (zh) * | 2016-10-27 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 登录验证方法、装置及*** |
JP2018128602A (ja) * | 2017-02-09 | 2018-08-16 | 日本電気株式会社 | 暗号化データベース管理装置、暗号化データベース管理方法、暗号化データベース管理プログラムおよび暗号化データベース管理システム |
CN108702607B (zh) * | 2017-03-14 | 2021-01-05 | 华为技术有限公司 | 一种多设备无线连接方法和设备 |
CN107426163A (zh) * | 2017-05-10 | 2017-12-01 | 深圳天珑无线科技有限公司 | 一种加密的方法及装置 |
CN107508679B (zh) * | 2017-07-11 | 2020-07-14 | 深圳市中易通安全芯科技有限公司 | 一种智能终端主控芯片与加密芯片的绑定及认证方法 |
US11563555B2 (en) * | 2017-09-26 | 2023-01-24 | Thales Dis Cpl Usa, Inc. | Management of encryption agents in data storage systems |
US10867055B2 (en) | 2017-12-28 | 2020-12-15 | Corlina, Inc. | System and method for monitoring the trustworthiness of a networked system |
US10951406B2 (en) * | 2018-01-24 | 2021-03-16 | Salesforce.Com, Inc. | Preventing encryption key recovery by a cloud provider |
CN108366052B (zh) * | 2018-01-29 | 2021-01-01 | 深圳壹账通智能科技有限公司 | 验证短信的处理方法及*** |
WO2019152521A1 (en) * | 2018-01-30 | 2019-08-08 | Corlina, Inc. | User and device onboarding |
CN108390758B (zh) * | 2018-04-04 | 2022-02-22 | 广州赛姆科技资讯股份有限公司 | 用户口令处理方法、装置和内控安全监察*** |
CN110636028B (zh) * | 2018-06-21 | 2021-07-27 | 蔡利锋 | 密钥生成装置、加密装置、密钥生成和分发*** |
US11025425B2 (en) | 2018-06-25 | 2021-06-01 | Elasticsearch B.V. | User security token invalidation |
CN110650013B (zh) * | 2018-06-27 | 2022-10-18 | 上海赢亥信息科技有限公司 | 一种基于生物特征的密钥恢复方法 |
US11223626B2 (en) | 2018-06-28 | 2022-01-11 | Elasticsearch B.V. | Service-to-service role mapping systems and methods |
US11196554B2 (en) * | 2018-07-27 | 2021-12-07 | Elasticsearch B.V. | Default password removal |
US11005971B2 (en) * | 2018-08-02 | 2021-05-11 | Paul Swengler | System and method for user device authentication or identity validation without passwords or matching tokens |
CN110858249B (zh) * | 2018-08-24 | 2021-11-16 | 中移(杭州)信息技术有限公司 | 一种数据库文件加密方法、解密方法和相关装置 |
US11017108B2 (en) * | 2018-10-30 | 2021-05-25 | International Business Machines Corporation | Storage unification with security management |
CN110012048B (zh) | 2018-11-22 | 2021-11-12 | 创新先进技术有限公司 | 信息识别码生成方法、装置、电子设备及计算机存储介质 |
JP7174237B2 (ja) * | 2018-11-29 | 2022-11-17 | 富士通株式会社 | 鍵生成装置、鍵更新方法および鍵更新プログラム |
US11023598B2 (en) | 2018-12-06 | 2021-06-01 | Elasticsearch B.V. | Document-level attribute-based access control |
US10721311B1 (en) * | 2019-01-11 | 2020-07-21 | Accenture Global Solutions Limited | System and method for coupling two separate applications to an application session within a serverless infrastructure |
JP7300866B2 (ja) * | 2019-03-28 | 2023-06-30 | オムロン株式会社 | 制御システム |
CN113874857A (zh) | 2019-05-27 | 2021-12-31 | 百可德罗德公司 | 用于最优信息理论安全的加密密钥管理的方法和设备 |
CN112231716A (zh) * | 2019-07-15 | 2021-01-15 | 珠海艾派克微电子有限公司 | 数据的防盗装置和防盗方法 |
JP2022544067A (ja) * | 2019-07-31 | 2022-10-17 | マジック リープ, インコーポレイテッド | 分散型台帳を使用した拡張現実のためのユーザデータ管理 |
EP3772795A1 (de) * | 2019-08-05 | 2021-02-10 | Siemens Aktiengesellschaft | Registrieren eines geräts bei einer recheneinrichtung |
US11779764B2 (en) | 2019-08-20 | 2023-10-10 | Rune Labs, Inc. | Neuromodulation therapy monitoring and continuous therapy reprogramming |
US11817209B2 (en) | 2019-08-20 | 2023-11-14 | Rune Labs, Inc. | Neuromodulation therapy development environment |
US20210058257A1 (en) * | 2019-08-20 | 2021-02-25 | Rune Labs, Inc. | Security and identity verification for neuromodulation therapy implant device programming |
CN110808961B (zh) * | 2019-10-16 | 2022-02-01 | 上海易点时空网络有限公司 | 用于安全验证的数据处理方法及装置 |
JP2021149417A (ja) * | 2020-03-18 | 2021-09-27 | キオクシア株式会社 | 記憶装置および制御方法 |
US11741268B2 (en) * | 2020-06-17 | 2023-08-29 | The Regents Of The University Of California | Extra-compact key with reusable common key for encryption |
CN114553445A (zh) * | 2020-11-10 | 2022-05-27 | 腾讯科技(深圳)有限公司 | 设备方法、装置、电子设备及可读存储介质 |
CN112613058A (zh) * | 2020-12-30 | 2021-04-06 | 绿盟科技集团股份有限公司 | 一种加密密钥的找回方法、装置、电子设备及存储介质 |
CN114036495B (zh) * | 2022-01-11 | 2022-03-25 | 北京顶象技术有限公司 | 一种更新私有化部署验证码***的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102067510A (zh) * | 2008-06-11 | 2011-05-18 | 三星电子株式会社 | 移动广播***中的加密密钥分发方法及其*** |
US20110154041A1 (en) * | 2009-12-21 | 2011-06-23 | Research In Motion Limited | Method to securely transfer user encryption keys and services between mobile devices |
US8312519B1 (en) * | 2010-09-30 | 2012-11-13 | Daniel V Bailey | Agile OTP generation |
US20120290832A1 (en) * | 2011-04-15 | 2012-11-15 | Hanscan Ip B.V. | System for conducting remote biometric operations |
CN103190129A (zh) * | 2009-11-25 | 2013-07-03 | 安全第一公司 | 对移动中数据进行保护的***和方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297207A (en) | 1993-05-24 | 1994-03-22 | Degele Steven T | Machine generation of cryptographic keys by non-linear processes similar to processes normally associated with encryption of data |
US5455862A (en) * | 1993-12-02 | 1995-10-03 | Crest Industries, Inc. | Apparatus and method for encrypting communications without exchanging an encryption key |
AU3073595A (en) | 1994-07-29 | 1996-03-04 | Certicom Corp. | Elliptic curve encryption systems |
US5937066A (en) * | 1996-10-02 | 1999-08-10 | International Business Machines Corporation | Two-phase cryptographic key recovery system |
US20020131592A1 (en) * | 2001-03-16 | 2002-09-19 | Harris Hinnant | Entropy sources for encryption key generation |
JP2005500740A (ja) | 2001-08-13 | 2005-01-06 | ザ ボード オブ トラスティーズ オブ ザ リーランド スタンフォード ジュニア ユニバーシティ | Idベース暗号化および関連する暗号手法のシステムおよび方法 |
US7346167B2 (en) * | 2002-05-10 | 2008-03-18 | Harris Corporation | Secure mobile ad-hoc network and related methods |
US7822797B2 (en) | 2002-07-29 | 2010-10-26 | Broadcom Corporation | System and method for generating initial vectors |
US20040059913A1 (en) | 2002-09-13 | 2004-03-25 | Sun Microsystems, Inc., A Delaware Corporation | Accessing for controlled delivery of digital content in a system for digital content access control |
US7379551B2 (en) | 2004-04-02 | 2008-05-27 | Microsoft Corporation | Method and system for recovering password protected private data via a communication network without exposing the private data |
CA2584525C (en) | 2004-10-25 | 2012-09-25 | Rick L. Orsini | Secure data parser method and system |
US20070067833A1 (en) | 2005-09-20 | 2007-03-22 | Colnot Vincent C | Methods and Apparatus for Enabling Secure Network-Based Transactions |
JP2008131072A (ja) * | 2006-11-16 | 2008-06-05 | Sony Corp | 情報処理装置、端末装置、情報処理方法、及び鍵生成方法 |
EP2127195A2 (en) * | 2007-01-22 | 2009-12-02 | Global Crypto Systems | Methods and systems for digital authentication using digitally signed images |
WO2008144524A1 (en) * | 2007-05-18 | 2008-11-27 | Verimatrix, Inc. | System and method for defining programmable processing steps applied when protecting the data |
US8006291B2 (en) * | 2008-05-13 | 2011-08-23 | Veritrix, Inc. | Multi-channel multi-factor authentication |
KR101514840B1 (ko) * | 2008-06-11 | 2015-04-23 | 삼성전자주식회사 | 휴대 방송 시스템에서의 암호화 키 분배 방법 및 이를 위한시스템 |
US8245039B2 (en) | 2008-07-18 | 2012-08-14 | Bridgewater Systems Corp. | Extensible authentication protocol authentication and key agreement (EAP-AKA) optimization |
WO2010111440A2 (en) * | 2009-03-25 | 2010-09-30 | Pacid Technologies, Llc | Token for securing communication |
US8588410B2 (en) | 2009-04-06 | 2013-11-19 | Elster Electricity, Llc | Simplified secure symmetrical key management |
CA2760251A1 (en) * | 2009-05-19 | 2010-11-25 | Security First Corp. | Systems and methods for securing data in the cloud |
US20140040622A1 (en) | 2011-03-21 | 2014-02-06 | Mocana Corporation | Secure unlocking and recovery of a locked wrapped app on a mobile device |
EP2571192A1 (en) | 2011-09-16 | 2013-03-20 | Certicom Corp. | Hybrid encryption schemes |
US8892866B2 (en) | 2011-09-26 | 2014-11-18 | Tor Anumana, Inc. | Secure cloud storage and synchronization systems and methods |
US8924712B2 (en) * | 2011-11-14 | 2014-12-30 | Ca, Inc. | Using QR codes for authenticating users to ATMs and other secure machines for cardless transactions |
US9323912B2 (en) | 2012-02-28 | 2016-04-26 | Verizon Patent And Licensing Inc. | Method and system for multi-factor biometric authentication |
US9106411B2 (en) * | 2012-09-30 | 2015-08-11 | Apple Inc. | Secure escrow service |
US8997197B2 (en) * | 2012-12-12 | 2015-03-31 | Citrix Systems, Inc. | Encryption-based data access management |
US9639710B2 (en) * | 2013-12-23 | 2017-05-02 | Symantec Corporation | Device-based PIN authentication process to protect encrypted data |
WO2015188277A1 (en) | 2014-06-13 | 2015-12-17 | BicDroid Inc. | Methods, systems and computer program product for providing encryption on a plurality of devices |
-
2015
- 2015-06-12 WO PCT/CA2015/050543 patent/WO2015188277A1/en active Application Filing
- 2015-06-12 CN CN201580043471.3A patent/CN106664202B/zh active Active
- 2015-06-12 US US14/737,940 patent/US9619667B2/en active Active
- 2015-06-12 US US14/738,013 patent/US9576149B2/en active Active
- 2015-06-12 ES ES15806851T patent/ES2713673T3/es active Active
- 2015-06-12 EP EP15806851.0A patent/EP3155754B1/en active Active
- 2015-06-12 EP EP18201675.8A patent/EP3451575B8/en active Active
-
2016
- 2016-06-10 WO PCT/CA2016/050663 patent/WO2016197250A1/en active Application Filing
- 2016-06-10 CN CN201680047252.7A patent/CN107925577B/zh active Active
-
2017
- 2017-01-10 US US15/402,377 patent/US9832016B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102067510A (zh) * | 2008-06-11 | 2011-05-18 | 三星电子株式会社 | 移动广播***中的加密密钥分发方法及其*** |
CN103190129A (zh) * | 2009-11-25 | 2013-07-03 | 安全第一公司 | 对移动中数据进行保护的***和方法 |
US20110154041A1 (en) * | 2009-12-21 | 2011-06-23 | Research In Motion Limited | Method to securely transfer user encryption keys and services between mobile devices |
US8312519B1 (en) * | 2010-09-30 | 2012-11-13 | Daniel V Bailey | Agile OTP generation |
US20120290832A1 (en) * | 2011-04-15 | 2012-11-15 | Hanscan Ip B.V. | System for conducting remote biometric operations |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150804A (zh) * | 2017-06-16 | 2019-01-04 | 中兴通讯股份有限公司 | 委托登录方法、相关设备和计算机可读存储介质 |
CN112425114A (zh) * | 2018-07-17 | 2021-02-26 | 维萨国际服务协会 | 受公钥-私钥对保护的密码管理器 |
CN113647051A (zh) * | 2019-01-28 | 2021-11-12 | 康奈尔克有限公司 | 用于安全电子数据传输的***和方法 |
US12003620B2 (en) | 2019-01-28 | 2024-06-04 | Knectiq Inc. | System and method for secure electronic data transfer |
CN110008725A (zh) * | 2019-04-01 | 2019-07-12 | 王龙 | 一种用户结构化数据处理*** |
CN111884800A (zh) * | 2020-07-31 | 2020-11-03 | 青岛海信智慧家居***股份有限公司 | 一种对电子密钥进行同步的方法和设备及*** |
CN112463454A (zh) * | 2020-12-04 | 2021-03-09 | 北京深思数盾科技股份有限公司 | 数据恢复方法、服务器、终端设备及存储介质 |
CN112463454B (zh) * | 2020-12-04 | 2021-11-05 | 北京深思数盾科技股份有限公司 | 数据恢复方法、服务器、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016197250A1 (en) | 2016-12-15 |
ES2713673T3 (es) | 2019-05-23 |
CN106664202B (zh) | 2020-04-03 |
EP3155754A4 (en) | 2018-01-17 |
EP3155754A1 (en) | 2017-04-19 |
US20170118019A1 (en) | 2017-04-27 |
EP3451575B8 (en) | 2021-03-17 |
CN107925577A (zh) | 2018-04-17 |
US20150363607A1 (en) | 2015-12-17 |
WO2015188277A1 (en) | 2015-12-17 |
US9832016B2 (en) | 2017-11-28 |
EP3451575B1 (en) | 2021-01-06 |
CN107925577B (zh) | 2020-04-24 |
US9619667B2 (en) | 2017-04-11 |
EP3451575A1 (en) | 2019-03-06 |
US9576149B2 (en) | 2017-02-21 |
US20150365232A1 (en) | 2015-12-17 |
EP3155754B1 (en) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106664202A (zh) | 提供多个设备上的加密的方法、***和计算机程序产品 | |
US10673626B2 (en) | Threshold secret share authentication proof and secure blockchain voting with hardware security modules | |
KR102472231B1 (ko) | 블록체인 구현 방법 및 시스템 | |
CN109862041B (zh) | 一种数字身份认证方法、设备、装置、***及存储介质 | |
US10790976B1 (en) | System and method of blockchain wallet recovery | |
US7624421B2 (en) | Method and apparatus for managing and displaying contact authentication in a peer-to-peer collaboration system | |
US8462955B2 (en) | Key protectors based on online keys | |
CN107528688A (zh) | 一种基于加密委托技术的区块链密钥保管及恢复方法、装置 | |
US20170155634A1 (en) | Password-based management of encrypted files | |
CN105103488A (zh) | 借助相关联的数据的策略施行 | |
CN108985099A (zh) | 一种基于公共密钥池的代理云存储安全控制方法和*** | |
US11831753B2 (en) | Secure distributed key management system | |
CN107920052B (zh) | 一种加密方法及智能装置 | |
CN106254342A (zh) | Android平台下支持文件加密的安全云存储方法 | |
JP2017112604A (ja) | 対称鍵暗号化と非対称鍵二重暗号化を複合的に適用した暗/復号化速度改善方法 | |
Thilakanathan et al. | Secure multiparty data sharing in the cloud using hardware-based TPM devices | |
Bentajer et al. | Cryptographic key management issues in cloud computing | |
EP3144838A1 (en) | Security system, management device, permission device, terminal device, security method, and program | |
CN110138547A (zh) | 基于非对称密钥池对和序列号的量子通信服务站密钥协商方法和*** | |
CN117155709B (zh) | 一种利用硬件安全密钥的多方身份认证的方法、***及介质 | |
CN112865968B (zh) | 数据密文托管方法、***、计算机设备及存储介质 | |
US11522691B2 (en) | Techniques for virtual cryptographic key ceremonies | |
KRISHNA et al. | New Decentralized Access Control Scheme to Store Data in Clouds | |
Hunt et al. | Theoretical Analysis of using Identity Based PKI as the Authentication method in SQL | |
Smelt et al. | IRMA Verified Assurer |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200304 Address after: Ontario, Canada Applicant after: BICDROID Inc. Address before: Ontario, Canada Applicant before: BICDROID Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |