CN106664200A - 经由计算设备控制对资源的访问 - Google Patents

经由计算设备控制对资源的访问 Download PDF

Info

Publication number
CN106664200A
CN106664200A CN201580038693.6A CN201580038693A CN106664200A CN 106664200 A CN106664200 A CN 106664200A CN 201580038693 A CN201580038693 A CN 201580038693A CN 106664200 A CN106664200 A CN 106664200A
Authority
CN
China
Prior art keywords
key
data set
code value
decryption
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201580038693.6A
Other languages
English (en)
Other versions
CN106664200B (zh
Inventor
尼古拉斯·B·范索默伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maliki Innovation Co ltd
Original Assignee
Good Technology Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Good Technology Holdings Ltd filed Critical Good Technology Holdings Ltd
Publication of CN106664200A publication Critical patent/CN106664200A/zh
Application granted granted Critical
Publication of CN106664200B publication Critical patent/CN106664200B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H04L63/0838Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了用于经由计算设备控制对资源的访问的方法、计算机程序和***,该计算设备被配置为执行方法,该方法使得能够提供密钥的新加密版本,密钥的新加密版本是用在未来时间有效的代码值序列中的代码值来加密的,并且在未来执行该方法时可用。相应地,这实现了不需要访问远程服务器来提供一次性密码验证的用户验证方法,因此提供了一种自维持的离线一次性密码认证方法。

Description

经由计算设备控制对资源的访问
相关申请的交叉引用
本申请要求于2014年5月30日递交的美国临时专利申请NO.62/005,725的优先权,在全部内容通用引用合并于此。
背景技术
本发明涉及用于经由计算设备控制对资源的访问的方法、计算机程序和***。
存储在计算机***的存储介质中的数据通常由密码或安全码保护,以防止对数据的未授权访问。对于需要高级安全性的应用,可以以加密形式存储数据,使得其不能被获得对其访问的未授权用户读取。
加密算法用于使用密码密钥来加密数据,并且分为两个主要类别。非对称密钥算法使用一对密码密钥,其中一个(通常称为公钥)用于加密数据,另一个(通常称为私钥)用于解密数据。对称密钥算法使用单个密码密钥来加密和解密数据。一旦被加密,数据对任何人都是不可读的,除了那些拥有密码密钥或能够生成密码密钥以将加密数据转换成可以向用户显示的可读形式的人。密码密钥是包括比特串的安全码,比特串和数据一起被输入到加密算法,以将数据转换为加密形式或从加密形式转换数据。期望比特串足够长以提供足够级别的不可预测性或熵,使得未授权用户不能猜测或以其他方式破解密钥(例如,尝试不同的可能比特组合)并解密数据。
通常,用户不需要直接输入密码密钥,因为在安全***中数据串很长而不容易被记住或输入。更为常见的是,用户输入已知或仅对授权用户可用的密码,并且使用诸如散列函数之类的数学变换将密码转换为安全码。然后,可以使用安全码作为密码密钥或者可以使用安全码作为密码密钥的种子,以加密或解密数据。通常,用于这些目的的密码是字母数字。用户选择的密码往往熵比较差,并且因此易受到所谓的“肩窥(shoulder-surfing)”攻击,这时未授权用户察看到授权用户输入他们的密码。为了降低这种攻击的风险并提高存储数据的安全性,这些字母数字密码可以生成为一次性密码(OTP)。可以通过例如向用户提供“标签”、“令牌”或包含用于生成时间和/或事件相关代码的逻辑在内的其他设备来生成OTP。采用OTP验证的***通常使用散列函数来将时间值或事件/序列号与秘密种子值组合以产生用户必须输入到正用于访问存储数据的计算设备的一组数字。
在启用离线认证的OTP认证***(例如由RSA Security公司开发的断连接认证方案)中,将一组短期验证码(例如,可能的OTP值)从认证服务器下载到本地***,以便随后用于在服务器不可用(例如,本地***不具有到服务器的直接连接)时验证用户提交的OTP值。然而,这种***需要本地设备或***周期性地连接到认证服务器以下载更新的验证码集合。
本发明的目的在于至少减轻现有技术的一部分问题。
发明内容
根据本发明的第一方面,提供了一种经由计算设备控制对资源的访问的方法,所述方法包括:存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及代码值生成器,被配置为生成代码值序列,其中第一数据集包括第二密钥,并且所述第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于所述代码值序列中的第一代码值和所述第二密钥加密的,所述方法包括:在计算设备处接收第一输入,并基于第一输入提供第一代码值;至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的所述第一加密版本的解密;以及响应于对第一密钥的所述第一加密版本的成功解密:执行第二解密处理,所述第二解密处理基于在第一解密处理期间解密的第一密钥来执行,其中所述第二解密处理包括对所述第一数据集中的至少一部分的解密;基于在第一解密处理期间解密的第一密钥来提供对所述资源的访问;响应于对所述第一数据集中的至少一部分的所述解密,提供所述第一密钥的至少第二加密版本,所述第一密钥的所述第二加密版本是至少部分地基于所述代码值序列中的第二代码值和所述第二密钥加密的;以及将所述第一密钥的所述第二加密版本作为所述第二数据集的数据存储在所述存储器中。
该方法使得能够提供第一密钥的新加密版本,第一密钥的新加密版本是用在未来时间有效的代码值序列中的代码值来加密的,并且未来执行时在该方法可用。相应地,这实现了不需要访问远程服务器来提供OTP验证的用户验证方法,因此提供了一种自维持的离线OTP认证方法。
在一些实施例中,被提供对其访问的资源包括存储在计算设备的存储器中的所述第一数据集的数据。
在一些实施例中,第一密钥的第一加密版本是使用基于所述代码值序列中的第一代码值和所述第二密钥利用第一代码生成函数所生成的第一值而加密的。
在一些实施例中,第二解密处理包括基于在第一解密处理期间解密的第一密钥来解密所述第二密钥,并且所述方法包括:响应于解密所述第二密钥,使用利用第一代码生成函数生成的第二值来生成所述第一密钥的第二加密版本,所述第二值是基于所述代码值序列中的第二代码值和所述第二密钥而生成的;以及将所述第一密钥的第二加密版本作为所述第二数据集的数据存储在所述存储器中。
在一些实施例中,第一代码生成函数存储在第一数据集中。
在一些实施例中,第一代码生成函数使用存储在第一数据集中的参数。在一些实施例中,第一解密处理包括使用第二代码生成函数基于所述第一代码值和第三密钥生成第三值,所述第三密钥不同于所述第二密钥。
第一值可以等于所述第三值。
在一些实施例中,第二代码生成函数生成所述第三值所花费的时间量大于所述第一代码生成函数生成所述第一值所花费的时间量。
提供第二代码生成函数(其生成第三值花费的时间量比第一代码生成函数生成所述第一值花费的时间量更多)使得能够快速生成第一密钥的加密版本,同时实现对抗蛮力攻击的鲁棒性,因为对第一密钥的加密版本的解密较慢。相应地,快速生成第一密钥的加密版本使得该方法能够在延长的时间段内离线执行(即不连接到远程服务器),而不需要这样大量数据存储器来存储第一密钥的加密版本,和/或不需要使用大量处理资源来生成第一密钥的加密版本。此外,该方法可以使用现有的OTP算法来执行,因此可以通过向用户提供现有的OTP令牌(其当前可以用于在线OTP验证)来执行。
在一些实施例中,第三密钥包括等于两个或更多个素数的乘积的值,并且第二密钥包括所述两个或更多个素数。
在一些实施例中,第二代码生成函数包括一系列模乘运算。
在一些实施例中,代码值序列中的每一个代码值的值是至少部分地基于在所述序列内的位置来确定的。
在一些实施例中,所述代码值序列中的每一个代码值是至少部分地基于时间值生成的。
在一些实施例中,第一密钥的第一加密版本是至少部分地基于静态密码值而加密的,并且第一输入包括所述静态密码值。
在一些实施例中,所述方法包括:响应于对所述第一数据集中的至少一部分的所述解密,提供所述第一密钥的加密版本的集合,所述加密版本的集合包括所述第二加密版本和另外多个加密版本;以及将所述第一密钥的所述另外多个加密版本作为所述第二数据集的数据存储在所述存储器中。
在一些实施例中,代码值序列是基于一次性密码(OTP)生成算法生成的。
在一些实施例中,所述方法包括:将所述OTP生成算法的种子值作为所述第一数据集的数据存储在所述存储器中;响应于对所述第一数据集中的至少一部分的所述解密,将所述种子值提供给所述代码值生成器;以及在所述代码值生成器处至少部分地基于所述种子值来生成所述代码值序列。
在一些实施例中,第一数据集是基于对称密钥算法被而加密的。
在一些实施例中,第一数据集是基于非对称密钥算法而加密的。
根据本发明的第二方面,提供了一种计算设备,包括:存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及代码值生成器,被配置为生成代码值序列,其中第一数据集包括第二密钥,并且所述第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于所述代码值序列中的第一代码值和所述第二密钥加密的,所述计算设备被配置为:接收第一输入,并基于第一输入提供第一代码值;至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的所述第一加密版本的解密;以及响应于对第一密钥的所述第一加密版本的成功解密:基于在第一解密处理期间解密的第一密钥来执行第二解密处理,其中第二解密处理包括对所述第一数据集中的至少一部分的解密;基于在第一解密处理期间解密的第一密钥来提供对所述资源的访问;响应于对所述第一数据集中的至少一部分的所述解密,至少提供所述第一密钥的第二加密版本,所述第一密钥的所述第二加密版本是至少部分地基于所述代码值序列中的第二代码值和所述第二密钥加密的;以及将所述第一密钥的所述第二加密版本作为所述第二数据集的数据存储在所述存储器中。
第二实施例的计算设备可以适于提供与第一实施例的那些特征中的任何特征相对应的特征。
计算设备可以是便携式设备和/或智能电话。
根据本发明的第三实施例,提供了一种其上存储有指令的非暂时性计算机可读介质,所述指令可被计算设备执行,所述计算设备包括:存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及代码值生成器,被配置为生成代码值序列,其中第一数据集包括第二密钥,并且所述第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于所述代码值序列中的第一代码值和所述第二密钥加密的,其中,所述指令当被计算设备执行时,使得所述计算设备:接收第一输入并基于第一输入提供第一代码值;至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的所述第一加密版本的解密;以及响应于对第一密钥的所述第一加密版本的成功解密:基于在第一解密处理期间解密的第一密钥来执行第二解密处理,其中第二解密处理包括对所述第一数据集中的至少一部分的解密;基于在第一解密处理期间解密的第一密钥来提供对所述资源的访问;响应于对所述第一数据集中的至少一部分的所述解密,至少提供所述第一密钥的第二加密版本,所述第一密钥的所述第二加密版本是至少部分地基于所述代码值序列中的第二代码值和所述第二密钥加密的;以及将所述第一密钥的所述第二加密版本作为所述第二数据集的数据存储在所述存储器中。
第三实施例的计算机可读介质可以适于提供与第一实施例和第二实施例的那些特征中的任何特征相对应的特征。
本发明的其它特征和优点将根据以下参考附图仅作为示例给出的本发明的实施例的描述而变得显而易见。
附图说明
图1是示出根据本发明的一个或多个实施例的计算设备的组件的示意图;
图2是示出根据本发明的一个或多个实施例的验证***的组件的示意图;
图3是示出根据本发明的一个或多个实施例的提供用于提供对用户的OTP验证并控制对资源的访问的方法的步骤的流程图;
图4是示出根据本发明的一个或多个实施例的用于生成主密钥的加密版本的过程的步骤的流程图;以及
图5是示出根据本发明的一个或多个实施例的用于对主密钥的加密版本进行解密以实现对容器的访问的过程的步骤的流程图。
具体实施方式
图1示意性地示出了计算设备100的组件,计算设备100是用于示出本发明的实施例的特征的示例性设备。计算设备100可以采取智能电话、个人数字助理(PDA)、电子阅读器、平板计算机、台式计算机、膝上型计算机或任何其他合适的设备的形式。计算设备100包括处理器102,处理器102能够向计算设备100内与***总线104相连的组件发送控制消息、从其接收状态信息并向其收发数据,其中这些组件可以包括非易失性存储设备106、随机存取存储器(RAM)108、用户输入接口110、网络接口112和被配置为向显示器116输出用户界面的图形处理组件114。处理器102(典型地是微处理器)处理已从非易失性存储设备106加载的存储在RAM 108中的指令,其中非易失性存储设备106可以是例如闪存或硬盘驱动器。这些指令采取计算机软件的形式,计算机软件采取实现操作***118的一个或多个程序和一个或多个应用程序(以下称为程序120)的形式。处理器102上运行的程序120还将RAM 108用作用于存储和访问采取电信号形式的数据的装置,其中所述数据在程序120的执行期间被使用。
用户输入接口110从一个或多个用户输入设备(未示出)接收用户输入。用户输入设备可以包括小键盘(keypad)、键盘(keyboard)、触摸屏显示器、鼠标和/或遥控器或任何其它指点设备,其可以并入计算设备100内或者可以经由有线或无线连接而连接到计算设备100。
计算设备100可以包括网络接口112(或多个这样的接口),网络接口112允许在处理器102上运行的程序120经由通信网络或多个这样的通信网络至/自多个其他设备和***发送/接收数据。网络接口112(或多个这样的接口)能够使用多种无线电接入技术中的一种或多种经由无线接入节点或经由有线技术(例如调制解调器和/或以太网卡)连接到通信网络卡。通信网络210和/或无线接入节点还可以提供对因特网的接入。
图形处理组件114能够根据由在处理器102上运行的程序120做出的命令来渲染图形,并且将这些图形输出到可以驻留在计算设备100内的显示器116。显示器116可以是经由复合视频、分量视频、视频图形阵列、数字视觉接口和高清晰度多媒体接口连接中的一个或多个连接到计算设备100的外部组件。显示器116可以是计算设备100的集成组件,并且可以是触摸屏显示器。
操作***118是采取程序或程序集的形式的计算机软件,该计算机软件的指令被处理器102从非易失性存储器106中加载,并且在计算设备100启动时执行。操作***118可以自动启动更多的程序120和/或可以允许用户例如经由操作***118提供的用户界面来启动更多的程序120。操作***118使得处理器102提供的处理能力能够在运行在处理器102上的程序120之间共享。
操作***118为在处理器102上运行的程序120提供编程接口,从而允许它们向操作***118请求功能。该程序接口可以采取程序过程(procedure)(即***调用)的形式,其中,在处理器102上运行的程序120可以使用该程序过程以便调用操作***118,并请求其提供期望的功能。响应于接收到对功能的请求,操作***118可以向与***总线104相连的组件(例如106、108、110、112、114、116)发送控制消息,从其接收状态信息,并收发数据,以提供所请求的功能,并且还可以向发送请求的程序120返回数据作为结果。
操作***118可以提供用于存储、修改和访问保存在非易失性存储器106中的文件或其他数据的文件***。文件***可以被在处理器102上运行的其它程序120经由操作***118提供的编程接口来访问。
一旦程序120安装在计算设备100上,用户就可以使用操作***118来启动程序120。程序120可以包括被配置为允许用户访问计算设备100的非易失性存储器106中保存的资源和/或数据的多个组件。程序120的这些组件可以包括渲染引擎122、核心服务124、服务插件126、应用服务128和应用130。这些组件可以使用由操作***118提供的编程接口(即***调用),以向操作***118请求功能(例如访问文件***、发送/接收消息、使用网络接口112等)。
在处理器102上运行的程序120可以处理从用户输入接口110获得的用户输入,该用户输入接口110从一个或多个用户输入设备(未示出)接收用户输入。
应用130可以包括操作为OTP验证***的一部分的OTP安全应用140,如参考图2所描述,并且提供可以由图形处理组件114渲染并在显示器116上显示的用户界面。用户界面使得用户能够输入用于访问计算设备100的安全资源和/或存储在非易失性存储器106中的安全数据的标识和认证细节。OTP安全应用140可以显示当用户尝试访问安全(加密)数据时可以显示的认证用户界面。认证用户界面还可以是当程序120启动时、或者当计算设备100首次打开时、或者在需要常规字母数字密码或安全码的任何其他时间向用户显示的第一用户界面。OTP安全应用140还可以向用户提供允许启动其他应用130或程序120、或启动经由网络接口112的连接的用户界面。
OTP安全应用140包含用于对存储在非易失性存储器106内的加密安全容器中的数据进行加密和/或解密的算法。可以经由一个或多个网络接口112(例如,从一个或多个远程服务器)接收加密数据,或者可以通过一些其他手段将加密数据保存到非易失性存储器106。例如,数据可以由用户手动导入,使用加密算法进行加密,并以加密形式存储在非易失性存储器106中。
可以根据对称密钥算法(即,使用相同密钥用于加密和解密数据),例如高级加密标准(AES),或根据非对称密钥算法(即,使用一个密钥用于加密数据并使用另一个密钥用于解密数据),或者通过任何其他合适的密码算法来加密和/或解密数据。以下参考图2至图5描述的实施例被描述为使用对称密码算法来实现。然而将理解,如下面所解释的,它们可以使用非对称密码算法来实现。不管所使用的密码算法的类型如何,为了对加密数据进行解密以使其可以以可读形式显示,提供了一种密码密钥(这里也称为主密钥),安全应用140结合密码算法使用该密码密钥来解密数据。
通过要求用户除了静态密码之外还输入OTP,增加密码熵以提高对所谓的蛮力攻击的抵抗力。例如,要求用户除了其静态密码之外还输入6位OTP,则该组合密码增加了大约20位,使得蛮力攻击比不需要OTP的情况困难了1,000,000倍(即,需要1,000,000倍的尝试次数来攻破组合密码)。
将使用主密钥加密的数据以加密形式存储在非易失性存储器106的加密安全容器中。主密钥的一个或多个加密版本存储在容器之外。为了解锁容器并解密数据,首先使用验证密钥来解密主密钥的加密版本。然后可以使用经解密的主密钥来解锁容器。这样做能够实现密码密钥的安全传输,并且当密钥改变时(其可能周期性地改变以维持数据安全性)可以避免需要对整个存储的加密数据进行重新加密。在OTP验证***的情况下,验证密钥对于每个OTP值通常是不同的,因此针对每个OTP值,需要可由不同验证密钥来解密的不同加密版本的主密钥。
图2是示出可在计算设备100上操作的OTP验证***200的组件的示意图。验证***200包括存储在非易失性存储器106中的加密安全数据存储部202(以下称为容器202)。验证***还包括验证密钥生成器204和解锁机构206。
OTP验证***200被布置为由被提供OTP值或能够生成OTP值的用户使用。例如,可以向用户提供OTP令牌201,OTP令牌201可以在与计算设备100分离的设备上实现或者可以由在计算设备100上运行的应用实现。OTP令牌201包含被布置为根据OTP算法生成OTP值的OTP生成器,并且还包含OTP种子值205和时钟207。OTP生成器203被布置为根据所基于的OTP算法生成OTP值。OTP算法可以是能够生成仅对一个会话(即,时间段)或事务(事件)有效的代码值的任何算法。该算法可以基于当前时间、基于先前的OTP值224或基于事件计数来导出OTP值224。例如,可以根据不一定是时间相关的随机值生成算法按顺序生成OTP值。
在图2所示的示例中,OTP生成器203被布置为基于种子值205和来自时钟207的当前时间值来生成OTP值。然后将所生成的OTP值提供给用户,以与OTP验证***200一起使用。例如,可以用显示器(未示出)来提供OTP令牌,显示器显示由OTP生成器203所生成的当前OTP值。
在图2的实施例中,使用对称加密算法对容器202进行加密,并且可以使用在下文中称为主密钥208的第一密钥来锁定和/或解锁容器202中包含的资源218。容器202包含第一数据集,第一数据集包括第二密钥的副本(下文中称为私钥210)、OTP种子212以及(在适用时)用户的静态密码214的副本。容器202还可以包含用户希望保持安全的数据216或其他资源218。
容器202之外是非易失性存储器106的未被主密钥208加密的部分,其中存储有包括公钥220在内的第二数据集。非易失性存储器106的这一部分在下文中称为存储部219。主密钥208的加密版本以及未被保护的资源221和数据223可以存储在存储部219中。在给予用户访问权之前需要用户认证的安全应用225(例如电子邮件应用)也可以存储在存储部219中。
私钥210在数学上与公钥220相关联。公钥220存储在存储部219中(即,其不安全地存储在容器202中,但至少在OTP的时间帧内难以从公钥220导出私钥210)。例如,公钥220可以是两个大素数N、以及可能的其他值(例如迭代计数K,其提供更高的安全系数)的乘积。私钥210可以是公钥220的因式分解P、Q(即,两个大素数加上所包括的任何其他值),以及可选地从公钥220的因子计算出的一些其他值。例如,公钥220可以是包括512位素数在内的1024位密钥,并且可以有1,000,000次迭代K。
验证密钥生成器204包括OTP生成器222,OTP生成器222被布置为生成OTP值224的序列,所述OTP值是与OTP令牌201提供给用户的值相同的OTP值。例如,OTP生成器222可以包括相同的OTP生成算法,所述OTP生成算法对具有与OTP令牌201使用的OTP种子205相同的值的OTP种子212进行操作,以针对给定时间值产生与OTP令牌201相同的OTP值。
可以使用任何长度的OTP值。使用位数更高的OTP增加了可能的OTP值的数量,因此增加了OTP验证***200对所谓蛮力攻击的抵抗力。由于蛮力攻击者没有私钥210,所以对每个可能值的测试要花费不少时间,并且增加可能的OTP值的数量降低了蛮力攻击者在OTP值的生命期内找到正确OTP值的可能性。
验证密钥生成器204使用第一代码生成函数生成验证密钥226,验证密钥226用于对主密钥208的副本进行加密,使得它们可以安全地存储在存储部219中(即,非易失性存储器106在容器202之外的区域中)。为了生成主密钥208的加密副本,验证密钥生成器204从容器202获得私钥210的副本和OTP种子212的副本(箭头232所示),并且基于OTP值224(基于OTP种子212而生成)和私钥210生成验证密钥226。验证密钥226分别用于对主密钥208的不同加密版本进行加密。然后,验证密钥生成器204将主密钥208的加密版本存储在非易失性存储器106的存储部219中(箭头234所示)。
解锁机构206被布置成例如经由用户输入接口110接收输入(箭头236所示)。输入可以包括由OTP令牌201生成的OTP值和用户的静态密码。代码值生成器228接收输入,并基于所接收的输入和根据与用户的OTP令牌中的时钟同步的时钟231所确定的时间值来生成代码值230。然后,解锁机构206使用第二代码生成函数生成用于对主密钥208的加密版本进行解密的验证密钥226的版本。基于代码值(基于接收的输入而生成的)和从非易失性存储器106的存储部219所获得的公钥220,生成由解锁机构206所生成的验证密钥226(箭头238所示)。解锁机构206从非易失性存储器106的存储部219获得主密钥208的一个或多个加密版本(箭头240所示),并使用其已生成的验证密钥226来尝试对主密钥208的加密版本进行解密。一旦将主密钥208的加密版本成功解密,解锁机构206使用解密后的主密钥208来解锁容器202(箭头242所示)。
图3是示出由图2所示的OTP验证***200所执行的用于提供对用户的OTP验证和经由计算设备控制对资源的访问的方法300的步骤的流程图。
在步骤302,解锁机构206接收输入,输入可以是通过用户输入接口110接收的用户输入。输入包括OTP值(例如用户从OTP令牌获得),并且还可以包括用户的静态密码。然后在步骤304,解锁机构206基于接收的输入来提供输入代码值。例如,输入代码值可以是OTP值、用户的静态密码和当前时间值的组合。
在步骤306,解锁机构206生成验证密钥226的版本,用于对先前用由验证密钥生成器204所生成的验证密钥226加密的主密钥208的加密版本进行解密的第一解密处理,如下面参考图4所描述的。如参考图5所描述,基于代码值(基于接收的输入而生成)和公钥220生成由解锁机构206所生成的验证密钥226的版本。
在步骤308,解锁机构206尝试使用其已生成的验证密钥226的版本来解密主密钥208的加密版本中的一个或多个。由于主密钥208的加密版本是使用对称加密算法进行加密和解密的,所以如果解锁机构206生成的验证密钥226对应于验证密钥226,使得在步骤310处成功解密了主密钥208的加密版本,则解锁机构206能够解密主密钥208的加密版本。
由解锁机构206生成的验证密钥226的版本能够解锁使用具有相同值的验证密钥226(由验证密钥生成器204生成)加密的主密钥208的任何加密版本。然而,因为验证密钥226是基于散列的OTP值生成的,所以只有与解锁机构206生成验证密钥226的特定版本时所针对的时间或事件相对应的主密钥208的加密版本能够使用验证密钥226的该版本来解密。
主密钥208的加密版本可以用针对验证密钥226的相应版本有效的时间或事件来标记,以使验证***200能够只尝试解密主密钥208的当前加密版本。例如,验证***200可以只尝试解密用接近当前时钟时间的时间来标记的主密钥208的加密版本。
为了防止对主密钥208的旧加密版本或过期加密版本的解密,并因此降低蛮力攻击成功破解主密钥208的这种过期的加密版本的风险,验证***200可以删除用已经过去的时间或事件所标记的、或以任何其它适当方式被标识为旧的或过期的主密钥208的加密版本。
如果解锁机构206生成的验证密钥226与用于对主密钥208的加密版本进行加密的验证密钥226不匹配,则在步骤310,主密钥208的加密版本没有成功解密,因此解锁机构206不能将容器202解锁以提供对容器202内的资源和数据的访问;即,在步骤312拒绝对资源的访问。
一旦解锁机构206已解密了主密钥208的加密版本,则其在步骤314的第二解密处理中使用主密钥208来解锁容器202。这为验证密钥生成器204提供了对私钥210、OTP种子212和(在适用时)对用户的静态密码214的访问权。当容器202打开时,用户能够在步骤316访问容器202内的安全数据216和/或资源218。
在一些实施例中,除了认证对容器202内的资源的访问之外,或作为这种认证的替代,解密后的主密钥208可以用于针对容器202之外的资源(例如安全应用225)来认证用户。例如,主密钥208可以用于针对电子邮件应用来认证用户(例如,用作该应用的密码),电子邮件应用提供其自己的数据加密并将该数据存储在非易失性存储器106的存储部219(即,非易失性存储器106的未用主密钥208加密的部分)中。
在步骤318,访问存储在容器202中的私钥210、OTP种子值212以及(当适用时)用户的静态密码214的验证密钥生成器204生成主密钥208的一个或多个另外的版本,如下面参考图4所描述。由于验证密钥生成器204可以访问私钥210,因此,相比于解锁机构206(其只有对公钥220的访问权,没有对私钥210的访问权)可以生成用于对主密钥208的加密版本进行解密的验证密钥226的版本,其能够更快地(使用更少的计算资源)生成用于对主密钥208的版本进行加密的验证密钥226。
在步骤320,将主密钥208的一个或多个另外的加密版本存储在非易失性存储器106的存储部219中(即,在容器202之外),用于在方法300的随后迭代步骤中对容器202进行解锁。
图4是示出使用验证密钥生成器204、针对时间集t=1,...,t=n来生成主密钥208(用MK表示)的加密版本的加密过程400的流程图。生成时间集,以覆盖预计用户对容器202进行至少一次解锁的时间段。通常,时间集将跨越数天,以允许用户能够继续访问安全数据并且在该时间跨度内由容器202脱机提供的资源被解锁至少一次。在用户未在规定的时间限制内访问他们的容器202至少一次(使得OTP验证***200在超过时间限制的时间不能生成主密钥208的新的加密版本)的情况下,验证***200可以要求用户执行在线验证处理以解锁容器202,从而使得验证密钥生成器204能够生成主密钥208的新的加密版本。
时间集中的时间的间隔可以是任何值。时间之间的间隔越紧密,则导致OTP值和主密钥208的有效加密版本更频繁地改变,并因此导致容器202的内容的安全程度更高。通常,时间之间的间隔在30秒至60秒的范围内;例如,在时间之间的间隔为30秒的***中,有效OTP值每30秒改变一次。然而,可以使用任何合适的时间之间的间隔。
在步骤402,验证密钥生成器204通过使用从容器202获得的种子值212和时间集,对OTP生成器222的OTP生成算法进行操作,来生成OTP值224的集合,O1,...,On,使得每个OTP值对应于时间集中的一个时间。
在步骤404,针对每个OTP值224,验证密钥生成器204计算与OTP值224(由Oi表示)、对应的时间值(由ti表示)以及(可选的)用户的静态密码(由pw表示)相关的组合值。可以使用单向函数来计算组合值,单向函数确保不能容易地从组合值中确定组成值(例如,不能在OTP值的生存期内可行地确定)。例如,验证密钥生成器204可以使用密码散列函数生成组合的散列值Hi,由下式给出:
Hi=hash(ti,Oi,pw).
如上所述,为了对主密钥208的版本进行加密,验证密钥生成器204生成验证密钥226的集合。主密钥208的加密版本通常为32字节长,这意味着用于对主密钥208的加密版本进行加密的验证密钥226通常也是32字节长,因为用于对主密钥208的加密版本进行加密和解密的密码算法是对称的。由于公钥220通常比主密钥208的加密版本长得多(即包括更多的位)(例如公钥220可以包括1024位,包括两个512位素数),所以使用另一哈希函数来生成所使用的验证密钥226,所述另一哈希函数生成另一散列值H′i,其为32字节长并且使用在步骤404生成的哈希值Hi、公钥220(由N表示)和迭代计数(由K表示)来生成。因此,每个验证密钥226具有值H′i,由下式给出:
H′i=hash(H_i^(2^k)mod N)。
由于N(即私钥210)的因式分解是已知的,因此可以通过以下计算来相对快速地计算形成由验证密钥生成器204所生成的验证密钥226的H′i的值:
先步骤406进行第一计算:k′=2k mod(P-1)(Q-1):
然后在步骤408中计算:
Hik′mod N。
如图4所示,可以与组合值H′i的生成分开地计算k′的值。例如,k′的值可以在验证密钥生成器204的操作之前计算并存储在容器202中,并且当容器212被解锁时由验证密钥生成器204访问。备选地,可以在验证密钥生成器204生成验证密钥226的同时在运行时计算k′的值。
当P和Q的值已知时,计算H′i所花费的时间小于当P和Q的值未知时计算H′i的值所花费的时间。例如,使用1024位公钥220(包括512位素数和1,000,000次计数迭代K),则使用验证密钥生成器104生成验证密钥226所花费的时间(即,访问私钥210)在2013年的典型台式计算机上约0.25毫秒,在2013年的典型智能手机上约1毫秒(在2013年的典型智能手机上操作的验证密钥生成器204可以在约3个CPU秒内生成可用一天的验证密钥226)。
然后在步骤410,验证密钥生成器204使用所生成的验证密钥226中的每一个,通过使用对称加密算法来加密主密钥208的版本,由下式给出:
encrypt(MK,H′i)。
因此,生成了主密钥208的加密版本的集合,其中每个加密版本用不同的验证密钥226(基于不同的OTP值)来生成。
在步骤412,主密钥208的加密版本的集合存储在非易失性存储器106的存储部219中(即在容器202之外)。然后,主密钥208的加密版本的集合可被用户用于随后使用解锁机构206来解锁容器202的尝试。
主密钥208的加密版本的长度可以被选择为平衡密钥加密的熵和可用存储。例如,主密钥的加密版本可以是32字节长。利用32字节长的主密钥208的加密版本,并且主密钥208的每个加密版本在30秒的时段内有效,存储一天的主密钥208的加密版本所需的数据存储容量大约为92kB。为了限制数据存储需要,验证***200可以要求用户在规定的时间限制内访问容器202至少一次;例如,至少每数天一次。在用户未在规定的时间限制内访问他们的容器202至少一次(使得OTP验证***200在超过时间限制的时间不能生成主密钥208的新的加密版本)的情况下,验证***200可以要求用户执行在线验证处理以解锁容器202,从而使得验证密钥生成器204能够生成主密钥208的新的加密版本。
图5是示出用于使用解锁机构206对主密钥208的加密版本进行解密的解密过程500的流程图。
为了对主密钥208的加密版本进行解密,解锁机构206需要成功生成具有与由验证密钥生成器204生成且用于加密主密钥208的加密版本的验证密钥226相同的值的验证密钥226的版本。也就是说,解锁机构206必须生成具有由下式给出的值H’的验证密钥226:
H’=hash(H^(2^k)mod N)=hash(H_i^(2^k)mod N)。
为了生成验证密钥226,在步骤502,解锁机构206接收输入,例如用户输入。该输入包括当前OTP值(由O表示)和可能的用户的静态密码(由PW表示)。例如,当前OTP值可以由用户从OTP令牌201中获得。
在步骤504,解锁机构计算与当前OTP值、可根据时钟231确定的当前时间值(由t表示)和用户的静态密码(由pw表示)相关的组合值。可以使用单向函数来计算组合值,单向函数确保不能容易地从组合值中确定组成值(例如,不能在OTP值的生存期内可行地确定)。例如,解锁机构206可以使用密码散列函数来生成组合的散列值H,由下式给出:
H=hash(t,O,pw)。
由于解锁机构206和用户都不能访问私钥210(只能访问公钥220),所以为了生成具有与用于加密主密钥208的给定加密版本的验证密钥226的相同值的验证密钥226的版本,需要解锁机构206使用与验证密钥生成器204所使用的过程不同的过程来导出或计算出验证密钥226。
为了生成验证密钥226的版本,在步骤506,解锁机构206依次执行K模平方运算以确定值:
H^(2^k)mod N。
在步骤508,解锁机构执行另一散列操作。如上参考图4的步骤408所述,使用另一散列函数来生成验证密钥226的版本,使得验证密钥具有与主密钥208的加密版本的长度相对应的固定长度(例如32字节),并且长度通常短于公钥220。因此,使用在步骤504生成的散列值H、公钥220(由N表示)和迭代计数(由K表示)来生成验证密钥226的版本。解锁机构206产生的验证密钥226具有值H′,由下式给出:
H′=hash(H^(2^k)mod N)。
因此,通过依次执行k模平方运算,在不知道N的因式分解(即,不访问私钥210)的情况下计算出形成由解锁机构206所生成的验证密钥226的H′值,而在知道N的因式分解(私钥201)的情况下,计算出形成由验证密钥生成器204所生成的验证密钥226的H′i值。因此,由验证密钥生成器204执行的计算的量比由解锁机构206执行的计算要少,因此相比解锁机构206可以生成用于对主密钥208的加密版本进行解密的验证密钥226,验证密钥生成器204可以更快地生成用于对主密钥208的加密版本进行加密的相同验证密钥226。
在步骤510,解锁机构从非易失性存储器106的存储部219获得主密钥208的加密版本。在这方面,解锁机构206可以仅获得与当前时间值相对应的主密钥208的加密版本,或者可以获得所存储的主密钥208的所有加密版本。解锁机构206可以将获得的主密钥208的加密版本(一个或多个)保存在RAM 108中。
在步骤512,解锁机构206使用其已生成的验证密钥226来解密与当前时间相对应的主密钥208的加密版本。使用验证密钥生成器204用来对主密钥206的加密版本进行加密的相同的对称加密算法来执行对主密钥208的加密版本的解密,由下式给出:
decrypt(MK,H′)。
解锁机构206生成用于对主密钥208的加密版本进行解密的验证密钥226的版本的处理通常比验证密钥生成器204生成用于对主密钥208的加密版本进行加密的验证密钥226的处理时间明显更长。例如,使用1024位公钥220(包括512位素数和1,000,000次计数迭代K),则使用解锁机构206生成验证密钥226所花费的时间(即,不访问私钥210)在2013年的典型台式计算机上约500毫秒,在2013年的典型智能手机上约2秒。因此,解锁机构206生成验证密钥226所费的时间比验证密钥生成器204多约2000倍。验证密钥生成器204生成验证密钥226所花费的时间与解锁机构206生成相同密钥226所花费的时间之间的差异提供了对抗蛮力攻击的鲁棒性,因为验证密钥生成器204速度较快,所以允许快速生成主密钥208的加密版本,但与此同时,解锁机制206速度较慢。相应地,快速生成主密钥208的加密版本使得OTP验证***200能够在延长的时间段内离线操作(即,不连接到远程服务器),而不需要这样大量的专门用来存储主密钥208的加密版本的非易失性存储器106的部分,或这样大量的专用于生成主密钥208的加密版本的处理时间。此外,验证***200可以使用现有的OTP算法来实现,因此可以与现有的OTP令牌(其当前可以用于在线OTP验证)结合使用。
上述实施例应被理解为本发明的说明性示例。设想了本发明的其它实施例。例如,在上述OTP验证***的描述中,验证密钥生成器204被描述为在容器202外部,并且仅当容器202被解锁时才能够访问私钥210和OTP种子212。然而,验证密钥生成器204本身可以存储在容器202内,并且因此可以保存私钥210的副本和OTP种子212。响应于容器202被解锁,验证密钥生成器204可以从非易失性存储器106的存储部219中移除主密钥208的过期的加密版本(即,用于过去的时间),并且启动用于生成一组新的主密钥208的未来加密版本的处理。
虽然在上述方法中解锁机构206从非易失性存储器106的存储部219获得主密钥208的加密版本,但是将理解,主密钥208的加密版本可以在生成时或在其后的任何时间通过验证密钥生成器204被传递到解锁机构206。然后,解锁机构206可以将主密钥208的加密版本存储在非易失性存储器106的存储部219中,或者可以仅将主密钥208的加密版本临时存储在RAM 108中。
尽管在上面参考图4和图5描述的实施例中,与时间值、OTP值和用户的静态密码相关的组合值被描述为使用单向函数(例如散列函数)来计算,但是将理解,可以使用将这些值组合的任何合适的函数。例如,可以通过拼接时间值、OTP值和用户的静态密码来计算组合值。
上述实施例是在对称加密方案的上下文中描述的,其中使用相同的密钥(即主密钥208)来锁定和解锁容器202。然而,将理解,合适的非对称加密方案也可以与验证***200一起使用。在这种***中,验证密钥生成器204生成主密钥208的多个加密版本,其中多个加密版本形成用于解锁容器202的非对称密钥对的私钥部分。用于锁定容器202的非对称密钥对的对应公钥部分存储在容器202之外。使用非对称密钥算法的验证***200的这种实现使得数据能够在容器202锁定或解锁时被放入在容器202中(即加密),但是仅在容器202解锁时才能从容器202中取出(即解密)。
应当理解,结合任一个实施例描述的任何特征都可以单独使用,或与所描述的其他特征组合使用,并且还可以与任何其它实施例或任何其他实施例的任何组合的一个或多个特征组合使用。此外,在不脱离所附权利要求中限定的本发明的范围的情况下,也可以采用上面未描述的等同物和修改。

Claims (46)

1.一种经由计算设备控制对资源的访问的方法,所述计算设备包括:
存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及
代码值生成器,被配置为生成代码值序列,
其中第一数据集包括第二密钥,并且所述第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于所述代码值序列中的第一代码值和所述第二密钥加密的,所述方法包括:
在计算设备处接收第一输入,并基于第一输入提供第一代码值;
至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的所述第一加密版本的解密;
以及响应于对第一密钥的所述第一加密版本的成功解密:
执行第二解密处理,所述第二解密处理基于在第一解密处理期间解密的第一密钥来执行,其中所述第二解密处理包括对所述第一数据集中的至少一部分的解密;
基于在第一解密处理期间解密的第一密钥来提供对所述资源的访问;
响应于对所述第一数据集中的至少一部分的所述解密,提供所述第一密钥的至少第二加密版本,所述第一密钥的所述第二加密版本是至少部分地基于所述代码值序列中的第二代码值和所述第二密钥加密的;以及
将所述第一密钥的所述第二加密版本作为所述第二数据集的数据存储在所述存储器中。
2.根据权利要求1所述的方法,其中,被提供对其访问的资源包括存储在计算设备的存储器中的所述第一数据集的数据。
3.根据权利要求1和2中任一项所述的方法,其中,所述第一密钥的第一加密版本是使用基于所述代码值序列中的第一代码值和所述第二密钥利用第一代码生成函数生成的第一值而加密的。
4.根据权利要求3所述的方法,其中,第二解密处理包括基于在第一解密处理期间解密的第一密钥来解密所述第二密钥,并且所述方法还包括:
响应于解密所述第二密钥,使用利用第一代码生成函数所生成的第二值来生成所述第一密钥的第二加密版本,所述第二值是基于所述代码值序列中的第二代码值和所述第二密钥而生成的;以及
将所述第一密钥的第二加密版本作为所述第二数据集的数据存储在所述存储器中。
5.根据权利要求3和4中任一项所述的方法,其中,第一代码生成函数存储在第一数据集中。
6.根据权利要求3和4中任一项所述的方法,其中,第一代码生成函数使用存储在第一数据集中的参数。
7.根据权利要求3至6中任一项所述的方法,其中,第一解密处理包括使用第二代码生成函数基于所述第一代码值和第三密钥生成第三值,所述第三密钥不同于所述第二密钥。
8.根据权利要求7所述的方法,其中,第一值等于所述第三值。
9.根据权利要求7和8中任一项所述的方法,其中,所述第二代码生成函数生成所述第三值所花费的时间量大于所述第一代码生成函数生成所述第一值所花费的时间量。
10.根据权利要求9所述的方法,其中,所述第三密钥包括等于两个或更多个素数的乘积的值,并且第二密钥包括所述两个或更多个素数。
11.根据权利要求10所述的方法,其中,所述第二代码生成函数包括一系列模乘运算。
12.根据前述任一项权利要求所述的方法,其中,代码值序列中的每一个代码值的值是至少部分地基于在所述序列内的位置来确定的。
13.根据前述任一项权利要求所述的方法,其中,所述代码值序列中的每一个代码值是至少部分地基于时间值生成的。
14.根据前述任一项权利要求所述的方法,其中,第一密钥的所述第一加密版本是至少部分地基于静态密码值而加密的,并且第一输入包括所述静态密码值。
15.根据前述任一项权利要求所述的方法,还包括:
响应于对所述第一数据集中的至少一部分的所述解密,提供所述第一密钥的加密版本的集合,所述加密版本的集合包括所述第二加密版本和另外多个加密版本;以及
将所述第一密钥的所述另外多个加密版本作为所述第二数据集的数据存储在所述存储器中。
16.根据前述任一项权利要求所述的方法,其中,所述代码值序列是基于一次性密码(OTP)生成算法生成的。
17.根据权利要求16所述的方法,还包括:
将所述OTP生成算法的种子值存储作为所述第一数据集的数据在所述存储器中;
响应于对所述第一数据集中的至少一部分的所述解密,将所述种子值提供给所述代码值生成器;以及
在所述代码值生成器处至少部分地基于所述种子值来生成所述代码值序列。
18.根据前述任一项权利要求所述的方法,其中,所述第一数据集是基于对称密钥算法而加密的。
19.根据权利要求1至17中任一项所述的方法,其中,所述第一数据集是基于非对称密钥算法而加密的。
20.一种计算设备,包括:
存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及
代码值生成器,被配置为生成代码值序列,
其中第一数据集包括第二密钥,并且所述第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于所述代码值序列中的第一代码值和所述第二密钥加密的,所述计算设备被配置为:
接收第一输入,并基于第一输入提供第一代码值;
至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的所述第一加密版本的解密;以及
响应于对第一密钥的所述第一加密版本的成功解密:
基于在第一解密处理期间解密的第一密钥来执行第二解密处理,其中第二解密处理包括对所述第一数据集中的至少一部分的解密;
基于在第一解密处理期间解密的第一密钥来提供对所述资源的访问;
响应于对所述第一数据集中的至少一部分的所述解密,至少提供所述第一密钥的第二加密版本,所述第一密钥的所述第二加密版本是至少部分地基于所述代码值序列中的第二代码值和所述第二密钥加密的;以及
将所述第一密钥的所述第二加密版本作为所述第二数据集的数据存储在所述存储器中。
21.根据权利要求20所述的计算设备,其中,所述计算设备是便携式设备。
22.根据权利要求21所述的计算设备,其中,所述计算设备是智能电话。
23.一种包括能够由计算设备执行的指令的计算机程序,所述计算设备包括:
存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及
代码值生成器,被配置为生成代码值序列,
其中第一数据集包括第二密钥,并且所述第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于所述代码值序列中的第一代码值和所述第二密钥加密的,
其中,所述计算机程序在被所述计算设备执行时使得所述计算设备:
接收第一输入,并基于第一输入提供第一代码值;
至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的所述第一加密版本的解密;以及
响应于对第一密钥的所述第一加密版本的成功解密:
基于在第一解密处理期间解密的第一密钥来执行第二解密处理,其中第二解密处理包括对所述第一数据集中的至少一部分的解密;
基于在第一解密处理期间解密的第一密钥来提供对所述资源的访问;
响应于对所述第一数据集中的至少一部分的所述解密,至少提供所述第一密钥的第二加密版本,所述第一密钥的所述第二加密版本是至少部分地基于所述代码值序列中的第二代码值和所述第二密钥加密的;以及
将所述第一密钥的所述第二加密版本作为所述第二数据集的数据存储在所述存储器中。
24.一种经由计算设备控制对资源的访问的方法,所述方法包括:
在计算设备处接收第一输入,并且基于第一输入提供第一代码值,其中计算设备包括存储第一数据集和第二数据集的存储器,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及代码值生成器,被配置为生成代码值序列,其中第一数据集包括第二密钥,并且第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于代码值序列中的第一代码值和第二密钥而加密的;
至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的第一加密版本的解密;
以及响应于对第一密钥的第一加密版本的成功解密:
执行第二解密处理,所述第二解密处理基于在第一解密处理期间解密的第一密钥来执行,其中所述第二解密处理包括对第一数据集中的至少一部分的解密;
基于在第一解密处理期间解密的第一密钥来提供对资源的访问;
响应于对第一数据集中的至少一部分的解密,至少提供第一密钥的第二加密版本,第一密钥的第二加密版本是至少部分地基于代码值序列中的第二代码值和第二密钥而加密的;以及
将第一密钥的第二加密版本作为第二数据集的数据存储在存储器中。
25.根据权利要求24所述的方法,其中,被提供对其访问的资源包括存储在计算设备的存储器中的第一数据集的数据。
26.根据权利要求24和25中任一项所述的方法,其中,所述第一密钥的第一加密版本是使用基于代码值序列中的第一代码值和第二密钥利用第一代码生成函数所生成的第一值而加密的。
27.根据权利要求26所述的方法,其中,第二解密处理包括基于在第一解密处理期间解密的第一密钥来解密第二密钥,并且所述方法还包括:
响应于解密第二密钥,使用利用第一代码生成函数生成的第二值来生成第一密钥的第二加密版本,第二值是基于代码值序列中的第二代码值和第二密钥而生成的;以及
将第一密钥的第二加密版本作为第二数据集的数据存储在存储器中。
28.根据权利要求26和27中任一项所述的方法,其中,第一代码生成函数存储在第一数据集中。
29.根据权利要求26和27中任一项所述的方法,其中,第一代码生成函数使用存储在第一数据集中的参数。
30.根据权利要求26至29中任一项所述的方法,其中,第一解密处理包括使用第二代码生成函数基于第一代码值和不同于第二密钥的第三密钥生成第三值。
31.根据权利要求30所述的方法,其中,第一值等于第三值。
32.根据权利要求30和31中任一项所述的方法,其中,第二代码生成函数生成第三值所花费的时间量大于第一代码生成函数生成第一值所花费的时间量。
33.根据权利要求32所述的方法,其中,第三密钥包括等于两个或更多个素数的乘积的值,并且第二密钥包括所述两个或更多个素数。
34.根据权利要求33所述的方法,其中,第二代码生成函数包括一系列模乘运算。
35.根据前述任一项权利要求所述的方法,其中,代码值序列中的每一个代码值的值是至少部分地基于在序列内的位置来确定的。
36.根据前述任一项权利要求所述的方法,其中,代码值序列中的每一个代码值是至少部分地基于时间值生成的。
37.根据前述任一项权利要求所述的方法,其中,第一密钥的第一加密版本是至少部分地基于静态密码值而加密的,并且第一输入包括所述静态密码值。
38.根据前述任一项权利要求所述的方法,还包括:
响应于对第一数据集中的至少一部分的解密,提供第一密钥的加密版本的集合,所述加密版本的集合包括第二加密版本和另外多个加密版本;以及
将第一密钥的另外多个加密版本作为第二数据集的数据存储在存储器中。
39.根据前述任一项权利要求所述的方法,其中,所述代码值序列是基于一次性密码(OTP)生成算法生成的。
40.根据权利要求39所述的方法,还包括:
将OTP生成算法的种子值作为第一数据集的数据存储在存储器中;
响应于对第一数据集中的至少一部分的解密,将种子值提供给代码值生成器;以及
在代码值生成器处至少部分地基于种子值来生成代码值序列。
41.根据前述任一项权利要求所述的方法,其中,第一数据集是基于对称密钥算法而加密的。
42.根据权利要求24至40中任一项所述的方法,其中,第一数据集是基于非对称密钥算法而加密的。
43.一种计算设备,包括:
存储器,存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,并且第二数据集不同于第一数据集;以及
代码值生成器,被配置为生成代码值序列,
其中第一数据集包括第二密钥,并且第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于代码值序列中的第一代码值和第二密钥而加密的,其中所述计算设备被配置为:
接收第一输入并基于第一输入提供第一代码值;
至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的第一加密版本的解密;以及
响应于对第一密钥的第一加密版本的成功解密:
基于在第一解密处理期间解密的第一密钥来执行第二解密处理,其中第二解密处理包括对第一数据集中的至少一部分的解密;
基于在第一解密处理期间解密的第一密钥来提供对资源的访问;
响应于对第一数据集中的至少一部分的解密,至少提供第一密钥的第二加密版本,第一密钥的第二加密版本是至少部分地基于代码值序列中的第二代码值和第二密钥而加密的;以及
将第一密钥的第二加密版本作为第二数据集的数据存储在存储器中。
44.根据权利要求43所述的计算设备,其中,所述计算设备是便携式设备。
45.根据权利要求44所述的计算设备,其中,所述计算设备是智能电话。
46.一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,其中,当所述计算机可读指令被执行时使得计算机化设备执行包括如下操作的方法:
在计算设备处接收第一输入并基于第一输入提供第一代码值,其中所述计算设备包括存储器和代码值生成器,其中所述存储器存储第一数据集和第二数据集,第一数据集是使用第一密钥加密的,且第二数据集不同于第一数据集,所述代码值生成器被配置为生成代码值序列,其中第一数据集包括第二密钥,且第二数据集至少包括第一密钥的第一加密版本,第一密钥的第一加密版本是至少部分地基于代码值序列中的第一代码值和第二密钥而加密的;
至少部分地基于第一代码值执行第一解密处理,第一解密处理包括对第一密钥的第一加密版本的解密;以及
响应于对第一密钥的第一加密版本的成功解密:
基于在第一解密处理期间解密的第一密钥来执行第二解密处理,其中第二解密处理包括对第一数据集中的至少一部分的解密;
基于在第一解密处理期间解密的第一密钥来提供对资源的访问;响应于对第一数据集中的至少一部分的解密,至少提供第一密钥的第二加密版本,第一密钥的第二加密版本是至少部分地基于代码值序列中的第二代码值和第二密钥而加密的;以及
将第一密钥的第二加密版本作为第二数据集的数据存储在存储器中。
CN201580038693.6A 2014-05-30 2015-05-29 用于控制对资源的访问的方法、计算设备和存储介质 Active CN106664200B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462005725P 2014-05-30 2014-05-30
US62/005,725 2014-05-30
PCT/US2015/033334 WO2015184358A1 (en) 2014-05-30 2015-05-29 Controlling access to a resource via a computing device

Publications (2)

Publication Number Publication Date
CN106664200A true CN106664200A (zh) 2017-05-10
CN106664200B CN106664200B (zh) 2020-10-09

Family

ID=54699914

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580038693.6A Active CN106664200B (zh) 2014-05-30 2015-05-29 用于控制对资源的访问的方法、计算设备和存储介质

Country Status (5)

Country Link
US (1) US9979546B2 (zh)
EP (1) EP3149886B1 (zh)
CN (1) CN106664200B (zh)
CA (1) CA2950766C (zh)
WO (1) WO2015184358A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109389395A (zh) * 2017-08-09 2019-02-26 森斯通株式会社 虚拟代码提供***、生成装置、验证装置、提供方法及提供程序
CN109389382A (zh) * 2017-08-09 2019-02-26 森斯通株式会社 虚拟***生成装置及验证装置、金融交易提供***、方法及程序
CN110620648A (zh) * 2018-06-19 2019-12-27 罗伯特·博世有限公司 用于处理数据的方法和设备
CN111064753A (zh) * 2019-12-31 2020-04-24 杭州电子科技大学 一种基于One-Time Pad的密码管理器实现方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10541994B2 (en) * 2016-04-22 2020-01-21 Dell Products, L.P. Time based local authentication in an information handling system utilizing asymmetric cryptography
WO2019055478A1 (en) * 2017-09-12 2019-03-21 Visa International Service Association SYSTEM AND METHOD FOR SECURE AND ACCURATE DELIVERY
US20200036705A1 (en) * 2018-07-27 2020-01-30 Jasper Chee Pang LEE Strong password by convention methods and systems
JP7211500B2 (ja) * 2019-05-21 2023-01-24 日本電信電話株式会社 署名検証システム、検証鍵管理装置、検証鍵管理方法及びプログラム
US11321458B2 (en) * 2020-01-28 2022-05-03 Nuvoton Technology Corporation Secure IC with soft security countermeasures
WO2021172875A1 (ko) * 2020-02-24 2021-09-02 주식회사 센스톤 가상코드를 이용한 사용자 설정 정보 인증 방법, 프로그램 및 장치
US20220150239A1 (en) * 2020-11-10 2022-05-12 Assa Abloy Ab Mitigation of brute force attack to device pin
CN114697357B (zh) * 2021-06-15 2023-10-13 北京新能源汽车股份有限公司 一种车辆远程控制的处理方法、车载终端及车辆
US11741217B1 (en) * 2022-11-09 2023-08-29 Ten Root Cyber Security Ltd. Systems and methods for managing multiple valid one time password (OTP) for a single identity
US12019778B1 (en) * 2023-11-22 2024-06-25 Verkada Inc. Systems and methods to perform end to end encryption

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768373A (en) * 1996-05-06 1998-06-16 Symantec Corporation Method for providing a secure non-reusable one-time password
CN101394284A (zh) * 2008-11-13 2009-03-25 四川长虹电器股份有限公司 一次性口令认证方法
US20100172504A1 (en) * 2001-03-09 2010-07-08 Arcot Systems, Inc. Method and apparatus for cryptographic key storage wherein key servers are authenticated by possession and secure distribution of stored keys
US20120257759A1 (en) * 2011-04-11 2012-10-11 Microsoft Corporation One-time recovery credentials for encrypted data access

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7502475B2 (en) 2003-11-14 2009-03-10 Broadcom Corporation Method and system for secure key generation
US8565422B2 (en) * 2010-12-03 2013-10-22 Salesforce.Com, Inc. Method and system for enryption key versioning and key rotation in a multi-tenant environment
CN102156843B (zh) * 2011-03-28 2015-04-08 威盛电子股份有限公司 数据加密方法与***以及数据解密方法
US8726044B2 (en) * 2012-07-31 2014-05-13 Hewlett-Packard Development Company, L.P. Encrypting data on primary storage device and on cache storage device
US9480759B2 (en) 2012-11-21 2016-11-01 Serene, Llc Tin-117m somatostatin receptor binding compounds and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768373A (en) * 1996-05-06 1998-06-16 Symantec Corporation Method for providing a secure non-reusable one-time password
US20100172504A1 (en) * 2001-03-09 2010-07-08 Arcot Systems, Inc. Method and apparatus for cryptographic key storage wherein key servers are authenticated by possession and secure distribution of stored keys
CN101394284A (zh) * 2008-11-13 2009-03-25 四川长虹电器股份有限公司 一次性口令认证方法
US20120257759A1 (en) * 2011-04-11 2012-10-11 Microsoft Corporation One-time recovery credentials for encrypted data access

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109389395A (zh) * 2017-08-09 2019-02-26 森斯通株式会社 虚拟代码提供***、生成装置、验证装置、提供方法及提供程序
CN109389382A (zh) * 2017-08-09 2019-02-26 森斯通株式会社 虚拟***生成装置及验证装置、金融交易提供***、方法及程序
CN109389382B (zh) * 2017-08-09 2022-05-31 森斯通株式会社 虚拟***生成装置及验证装置、金融交易提供***、方法及程序
US11354401B2 (en) 2017-08-09 2022-06-07 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
CN109389395B (zh) * 2017-08-09 2022-06-21 森斯通株式会社 虚拟代码提供***、生成装置、验证装置、提供方法
US11609983B2 (en) 2017-08-09 2023-03-21 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
US11960595B2 (en) 2017-08-09 2024-04-16 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
CN110620648A (zh) * 2018-06-19 2019-12-27 罗伯特·博世有限公司 用于处理数据的方法和设备
CN110620648B (zh) * 2018-06-19 2023-09-22 罗伯特·博世有限公司 用于处理数据的方法和设备
CN111064753A (zh) * 2019-12-31 2020-04-24 杭州电子科技大学 一种基于One-Time Pad的密码管理器实现方法
CN111064753B (zh) * 2019-12-31 2021-10-08 杭州电子科技大学 一种基于One-Time Pad的密码管理器实现方法

Also Published As

Publication number Publication date
CA2950766A1 (en) 2015-12-03
EP3149886A4 (en) 2018-01-03
US9979546B2 (en) 2018-05-22
EP3149886A1 (en) 2017-04-05
EP3149886B1 (en) 2020-05-06
CA2950766C (en) 2023-05-09
US20170126408A1 (en) 2017-05-04
CN106664200B (zh) 2020-10-09
WO2015184358A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
CN106664200A (zh) 经由计算设备控制对资源的访问
KR101999188B1 (ko) 비밀 공유를 위한 타원 곡선 암호를 사용하는 개인용 장치 보안
US8605899B2 (en) Method for providing cryptographical key pairs
CN1808966B (zh) 安全数据处理方法及其***
Turan et al. Recommendation for password-based key derivation
CN100432889C (zh) 提供断开鉴别的***和方法
EP3496328A1 (en) Communication system, communication client, communication server, communication method, and program
RU2584500C2 (ru) Криптографический способ аутентификации и идентификации с шифрованием в реальном времени
CN103457739B (zh) 一种动态令牌参数获取方法与设备
CN110710155A (zh) 渐进式密钥加密算法
TW201103298A (en) Method and system for securing communication
US20070014398A1 (en) Generating a secret key from an asymmetric private key
JP2009103774A (ja) 秘密分散システム
CN106533663B (zh) 数据加密方法、加密方设备及数据解密方法、解密方设备
CN110059458A (zh) 一种用户口令加密认证方法、装置及***
JP7087172B2 (ja) Pqaロック解除
EP4300338A1 (en) Computer file security encryption method, computer file security decryption method, and readable storage medium
Belenko et al. “Secure Password Managers” and “Military-Grade Encryption” on Smartphones: Oh, Really?
EP3739489B1 (en) Devices and methods of managing data
Chidambaram et al. Enhancing the security of customer data in cloud environments using a novel digital fingerprinting technique
Turan et al. Sp 800-132. recommendation for password-based key derivation: Part 1: Storage applications
US8307209B2 (en) Universal authentication method
JP5605452B2 (ja) 通信装置
JP2002232410A (ja) 暗号化データの通信装置および通信方法
KR101677138B1 (ko) 오프라인 토큰의 안전성을 보장할 수 있는 온라인/오프라인 전자서명 방법

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: 20180118

Address after: Voight, Ontario, Canada

Applicant after: BlackBerry Ltd.

Address before: Voight, Canada

Applicant before: Good Technology Holdings Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240523

Address after: Ai Erlandubailin

Patentee after: Maliki Innovation Co.,Ltd.

Country or region after: Ireland

Address before: Voight, Ontario, Canada

Patentee before: BlackBerry Ltd.

Country or region before: Canada