可变长度数据的快速格式保留加密的制作方法

文档序号:15286401发布日期:2018-08-29 00:08阅读:369来源:国知局

在一些情况下,应用程序需要为特定目的而执行特定类型的加密。例如,对于某些应用程序,为了符合数据标准或规定,加密密文必须与原始未加密明文具有相同的大小和格式。加密输出密文与输入明文具有相同格式的加密方案可以称为格式保留加密。

以前对明文输入进行格式保留加密的方法存在许多问题,这些问题包括但不限于:需要大型数据库、过度消耗cpu、密码安全性不足或者对输入文本的大小有限制。

本发明的各实施方案涉及单独地和共同地解决上述问题和其他问题。



技术实现要素:

各实施方案提供与格式保留加密的实现有关的设备、方法和系统。格式保留加密(fpe)的各种实施方案可以满足附加标准,包括:前缀保留、一致性、不可逆性、明文与密文之间的一一对应关系、伪随机性和校验和。一些实施方案可以通过使用多图形替换密码将明文数字块映射到密文数字块来为任意长度的明文提供快速且安全的fpe。

在示例性实施方案中,输入字符串可以被分成多个块(可能具有不同的长度)。一组密码管道可以对不同的块执行操作,每个管道都提供输出块。密码管道可以相互作用,使得输出块互相依赖。每个管道都可以用作为密文一部分的另一个n位数块替换一个n位数明文块。密码可以保留明文的某些前缀。密码也可以使用一个或多个加密微调。因此,明文(包括前缀)中的任何改变都会对密文的加密部分产生明显的随机且不可预测的影响。

为了加密明文,密码可以跳过明文的要保留的任何部分,然后从要加密的部分开始,将明文的该部分分成一个或多个指定大小的块(子字符串)。对于长度为n的块p,可以使用替换表来执行替换操作以提供输出块c。对应于长度n的替换表可以包括接收长度为n的输入块并提供长度为n的输出块的任何操作。密码可以在替换表中找到与p匹配的行并返回块c,该块c可以存储在替换表中的匹配行中。密码也可以对c和/或p应用掩码函数和/或微调函数。一旦对所有块都进行了加密,就可以将任何保留的前缀和所得的加密块进行组合,以产生加密文本(密文)。可以执行类似的解密过程。

其他实施方案涉及与本文中所描述的方法相关联的系统和计算机可读介质。

参照以下详细描述和附图,可以获得对本发明的实施方案的本质和优点的更好理解。

附图说明

图1是示出了根据本发明实施方案的用于加密和解密数据的典型环境的图表。

图2是示出了根据本发明实施方案的替换表的示例部分的图表。

图3是示出了根据本发明实施方案的使用掩码(cmc)加密模式的密码块链接(cbc)的实现方式的图表。

图4是示出了根据本发明实施方案的使用经修改的本机cbc模式算法来对输入字符串进行加密和解密的过程的图表。

图5是根据本发明实施方案的对九位数数字进行加密的实例的图表。

图6是根据本发明实施方案的对十五位数数字进行加密的实例的图表。

图7a和图7b是根据本发明实施方案的用于执行格式保留的密码操作的方法的流程图。

图8是根据本发明实施方案的用于将字符编码为数值的表格。

图9示出了可与根据本发明实施方案的系统和方法一起使用的示例计算机系统10的框图。

术语

密码可以指用于执行加密或解密的方法。密码可以包括对输入数据进行操作并提供输出数据的一系列定义的步骤,例如,将未加密的数据(明文)转换成加密的数据(密文),反之亦然。多图形替换密码可以对输入数据的多个字符(也称为块)执行替换,以提供输出数据的多个字符。格式保留加密(fpe)是指执行加密,以便加密结果(密文)的格式与加密输入(明文)的格式相同。

密码校验和可以指基于加密数据值计算出的数学值,并用于测试该值以验证数据未被恶意或意外改变。密码校验和可以通过执行一系列数学运算来创建,这些运算将数据转换为散列值,然后散列值可以用作校验和。如果输入数据的计算出的校验和与先前计算的校验和的存储值相匹配,则数据未被意外或恶意更改或损坏的可能性非常高。

块密码可以指确定性密码算法,该算法利用由对称密钥指定的变换,对固定长度的比特组(称为块)进行操作,所述对称密钥可对应于替换表。对称密钥加密算法是对明文加密和密文解密都使用相同的加密密钥(例如相同的替换表)的算法。这些密钥可以是相同的,或者两个密钥之间可能存在简单的变换。

替换表可以指与密码一起使用的替换结构,其中替换表提供输入值的替换值。例如,替换表可能会接收到6位数数字作为输入,并返回另一个6位数数字。替换表可以获取输入值,查找表中的相应条目,并返回该条目中包含的值。可能存在各种替换表,它们采用各种大小的输入并返回各种大小的输出。替换表可以由函数生成,因此,可以通过以下方式来执行替换表的使用:通过生成一个完整表,然后访问该表以确定输出块;或通过动态确定特定输入的输出。

密码块链接(cbc)可以指块密码的操作模式,其中将一串比特加密为单个单元或块,密码密钥被应用于整个块。对密文块的解密可以取决于一个或多个在前的密文块。

密码微调可能是指对块密码的附加输入,以及明文或密文输入。微调以及密钥可以选择由密码计算出的排列。微调中使用的值的一些实例包括银行标识号(bin)和支付卡的到期日期。使用微调可能会增加复杂性和延长破解加密方案所需的时间。银行标识号或bin是分配给每个联邦担保金融机构的数字代码,用于路由交易和其他目的。

数据净化(也称为数据清理)可以指修改或删除数据库或其他数据存储机制中不正确、不完整、格式不正确或重复的数据的过程。

具体实施方式

各种实施方案提供了用于快速格式保留加密的系统、装置和方法。快速格式保留加密技术可用于系统中以加密发送设备上的数据,然后将加密数据发送给接收设备,然后,接收设备可使用格式保留加密方法来解密和使用由发送设备加密的数据。各实施方案可以在仍保留格式的同时对任何大小长度的输入数据进行操作,例如通过将输入数据分解成块(可能具有不同大小)并执行块链接操作,使得每个块彼此依赖。

i.引言

a.加密/解密

加密是将普通信息或明文转换为难以理解的文本或密文的过程。解密是相反的过程,它将密文转换回明文。密码可以由实现加密和反向解密的算法组成。密码的详细操作可以由算法来控制,也可以在每种情况下由一个或多个密钥控制。在若干现代场景中可能需要加密以保护在两个设备(例如金融交易中涉及到的两个设备)之间传输的数据。

图1示出了根据本发明实施方案的用于加密和解密信息的典型环境。图1是示出了具有加密引擎101的发送设备100和具有解密引擎122的接收设备120的系统图。发送设备100可以使用加密引擎101,以使用加密参数103来加密私人信息102,从而产生可以发送给接收设备120的加密信息110。

加密引擎101可以接收私人信息102和加密参数103。私人信息102可以包括要加密和解密的数据。通过使用私人信息102和加密参数103,加密引擎101可以产生加密信息110。加密参数103可以包括替换表和执行对私人信息102的加密所需的其他信息。

加密信息110可以从发送设备100发送到接收设备120。当接收设备120接收到加密信息110时,接收设备120可以解密加密信息110。接收设备120可以接收并存储解密参数121。接收设备120可以使用解密参数121和解密引擎122来解密加密信息110以产生私人信息102。解密参数121可以包括替换表和执行对加密信息110的解密以产生私人信息102所需的其他信息。因此,解密引擎122可以颠倒加密引擎101执行的过程。

b.格式保留加密

在密码术中,格式保留加密(fpe)是指使得输出(密文)与输入(明文)具有相同格式的加密。在各种情况下,包括在支付系统中使用时,可能希望密文具有与原始明文相同的大小和格式。例如,发送设备100可以在其加密引擎101中使用这种格式保留加密来创建加密信息110,例如加密支付信息。发送设备100可以将该加密信息110发送到诸如接收设备120之类的设备,该设备可以使用其解密引擎122来解密支付信息,以进一步能够利用明文私人信息来执行交易或者执行其他活动。如果使用fpe,则加密信息110将具有与私人信息102相同的格式,例如相同数量的字符。

个人标识信息(pii)可以被认为是可能潜在地标识特定个人的任何数据。任何可用于区分一个人和另一个人的信息以及可用于去匿名化匿名数据的信息都可以被视为pii。对pii的保护可以借助于加密手段,特别是格式保留加密。例如,支付卡行业(pci)数据安全标准要求保护主账号(pan),这可以是pii的一种形式。然而,在使用加密来保护pan时,通常希望当pan处于未加密的明文和加密的密文形式时,保持相同的pan格式。

对pii数据的保护在除支付系统之外的各个领域都非常重要。在许多领域都有各种保护pii数据的要求,并且提供这种保护的技术也很多。这些技术中的许多都要求通过各种手段来加密pii数据,并且有时要求以使得保留pii数据的格式的方式来处理加密的pii数据。例如,在保护账号的情况下,可能要求以使得保留格式的方式来加密账号。当由集中式服务来承担所有密码运算时,可以将fpe作为令牌化过程的一部分来执行。

然而,目前的格式保留加密技术可能存在许多潜在的问题。使用fpe对明文加密的方案可能需要满足几个要求。格式保留加密方案可能有几个期望的特征,下文描述几个示例要求。

期望的格式保留加密系统的特征是它应该能够加密大位数,而不限于要被加密的小的、固定大小的输入字符。希望能够加密输入字符串中与期望的尽可能多的位数。例如,只能加密14位数的格式保留加密系统通常不足以加密通常为16位数的支付账号。例如,对借记卡或私人标签账户以及其他较长账户的保护是不够的。

格式保留加密系统的另一个期望特征可能是,即使对输入明文的微小改变也将在所得的密文中产生改变。例如,格式保留加密系统可以获取输入字符串(例如输入账号),并对其进行加密以产生第一密文。此后,如果原始输入账号中的任何数字被修改,那么对修改后的账号的后续加密的结果理想地应该与第一密文完全且不可预测地改变。因此,各实施方案可以采用伪随机性的元素。伪随机性可以规定明文的任何改变都应该导致密文加密部分的明显随机且不可预测的改变,并且类似地,密文的任何改变都会对解密的明文产生不可预测的影响。

格式保留加密系统的另一个潜在要求可能是加密应该保留一定数量的位数。例如,原始文本的前六位数可以保留在加密文本中,但对这前六位数的任何更改仍会导致密文的改变。在该实例中,前六位数将以明文形式未加密发送。这可能对账号有用,其中前六位数通常可以对应一个账号范围或bin。格式保留加密系统可以保留前六位数,但其他位数都应该在加密时理想地改变。因此,即使前六位数中的任何数字发生改变,结果也应该完全改变。格式保留加密系统可以允许对无限的数据块进行非常安全的加密,同时保留数据的格式。

例如,文本的格式可能需要在加密时保留。例如,如果原始明文要求仅包含数字并且具有固定长度,则加密密文必须具有与原始明文相同的位数,并且只包含数字。

可能希望格式保留加密方案具有计算出的校验和。而且,可能还要求校验和是相同的值。例如,可能希望明文或密文的luhn校验和为零。密文的校验和也可能取决于附加要求,因此它的校验和可能是零,或者可能是非零值。可以使用任何合适的校验和算法。

加密方案应该产生一致的值,因为对于固定的密钥,加密方案应该为相同的原始明文产生相同的密文。因此,不同的明文值应该具有不同的对应密文。因此,加密方案应该在明文与密文之间具有一一对应的关系。理想情况下,加密方案是不可逆的,因为没有密钥就不可能从密文获得原始明文。

当要加密的字符数量相对较少时,对于明文的弱擦除方法可能容易受到强力攻击。例如,对于pan来说,可能的16位pan的位数相对较少,这使得它们可能容易受到强力攻击。假设密码不使用任何密钥。如果密码保留前六位数并设置最后一位数以符合校验和要求,则攻击者只需要猜测账户的九位数即可获得原始pan。为了达到这一目的,攻击者可以令牌化所有可能的十亿个pan,然后在输出中搜索与给定令牌匹配的结果。在运行快的电脑上,这一过程可能只需要几分钟的时间。

然而,使用密钥并不是总能够保证密码是安全的。例如,阅读加密数据的人可能知道它必须包含某个明文,并可以标识它。如果密码易受已知明文攻击,则知道原始明文和密文就可以推导出密钥。

当明文的改变对密文产生可预测的影响时,攻击者可能能够获得有关数据的一些信息。例如,假设正在对pan进行加密,并且加密方案不依赖于bin。那么,如果攻击者看到两个令牌,它们的唯一区别是在bin中(以及校验和数字),则表明相应的pan只在bin中不同。

以前的令牌化方法可能需要大型数据库,可能需要大量消耗cpu,或者可能会限制pan的大小。一种解决方案是在集中式数据库中存储pan到令牌的随机映射。然而,存储通过mod10(luhn)检查的所有可能的16位pan需要几乎10pb的数据存储。如果数据库仅存储正在使用的pan,则需要复杂的基础结构以确保数据是最新的,并且数据的所有副本都保持同步。如果存储的对象是所有6位数或7位数数字到相同大小的令牌的映射,则使用它来令牌化真实的pan(非标准化pan可以有多达28位数)可能是一项重大挑战。

另一种方法是运行取决于小型(256位)加密密钥的本地fpe进程。一个实例是在格式保留的基于feistel的加密模式(ffx)下运行的基于密码的消息认证码(cmac)算法。然而,这种方法需要对每次加密多次执行块密码,例如aes。因此,它比普通的非格式保留加密要耗费更多的cpu。

为了解决这些问题,一些实施方案可以使用多个多图形替换,每个多图形替换都使用另一个n位数数字代替包含n位数数字的块(较大数字的一部分)。不同的密码管道可以对不同的输入块执行多图形替换,并且管道可以相互关联,以使输出块依赖于每个输入块。各实施方案可以使用一个或多个各种大小的替换表,其中替换表包含用于某一大小的所有可能输入的映射规则。例如,为加密数字p,该过程包括在替换表中查找行号并返回该行的数字。该过程可以使用与要加密的位数相对应的适当表格。

各实施方案还可以用于例如测试环境中的数据净化,该测试环境可能必须处理账号或其他类似的敏感测试数据。例如,商家可能想测试内部应用程序并需要账号,但不想要真实的账号。实施方案可以用于为此目的生成加密的测试值。注意,当用于将数据从生产环境拷贝到非生产环境时,各实施方案可用于数据净化。

ii.替换表的使用

a.替换表

在密码术中,替换密码是一种对明文数据进行编码的方法,通过该方法,根据固定系统,一些明文单元被密文替换。这些单元可以是单个字符、成对字符、三个字符等。密文的接收者可以通过执行逆替换来解密文本。替换密码可以采用一个或多个替换表来执行字符的替换。替换表可以接受n个字符的输入并返回m个字符的输出。通常情况下,n和m是相同的数字。

格式保留加密可以通过多图形替换密码来执行,该密码将一个或多个包含n位数数字的块替换为另一个n位数数字。用于格式保留加密的方法可以使用对应于大小n的一个或多个替换表,其中替换表包含所有可能的10n个输入(或其他底数,例如对于十六进制数为16)的映射规则。替换表可以由系统计算,并用于执行格式保留加密。例如,如果将一个字符替换为一个字符,则密码可以使用n=1的表,其中存在用于将每个数字0-9映射到另一个数字0-9的映射规则。类似地,为了替换长度为4的数字块,采用大小为n=4的替换表。该表包含用于将每个数字块0000-9999映射到另一个数字块0000-9999的映射规则。

图2是六位数替换的实例。例如,图2示出了映射到083733的012937、映射到974688的106189和映射到537986的974606。图2包括存储在六位数替换表中的数据的小示例样本。

替换表的生成可以由所有n位数数字列表中的多个(10n)随机排列组成。在下面的实例中,假定最大的表的n=6。对于n=6,过程从000000到999999的所有数字的列表开始。然后,对于列表中的每一行,该过程使用安全随机数生成器来生成介于0与999999之间的随机数j,并将行i与行j进行交换。类似地,该过程可用于生成5位数替换表、4位数替换表等。在实践中,对于从n=1开始的不同的n,可能有必要有多个表。因此,对应于大小n的替换表包含从0到10n-1的10n个随机生成的值,其中从0到10n-1的输入值给出从0到10n-1的输出值。

或者,可以通过众所周知的块密码(例如aes)从加密密钥导出替换表。在这种情况下,代替使用随机数生成器,该过程可以交换第i行和第j行的值,其中j是利用aes对i进行加密即取模10n的结果。使用这样的加密密钥是一些实施方案可如何生成所述一个或多个替换表中的至少一个替换表的多个条目的实例。因此,替换表不需要被存储,而是可以动态生成。而且,也不需要生成整个替换表,因为一些实现方式可以从输入值计算出替换结果。替换表的动态生成和替换结果的计算的其他实例包括前缀密码、循环步行密码(cycle-walkingcipher)和广义feistel密码(j.black和p.rogaway,“cipherswitharbitraryfinitedomains”,topicsincryptology-ct-rsa2002,lecturenotesincomputerscience系列,第2271卷,第114-130页,2002年2月8日)。

用于执行格式保留加密的方法可以使用不同大小的多个替换表。例如,如果仅需要加密14位数,并且块大小为6,那么两个大小为6的块可以使用6位数替换表,而其余两位通过使用较小的(n-2)替换表。即使可能的加密值的数量很小,使用2位数替换表也不会破坏整个方案的安全性,因为各实施方案可以具有取决于所有块的最终结果。各实施方案可以具有定义的最大大小替换表,并且可以使用一个或多个适当的替换表将明文分解为最大大小或较小的区块。

b.密码块链接模式图表

图3是示出了使用掩码(cmc)加密模式的密码块链接的实现方式的图表。图3示出了由四个块组成的明文的实例。在图3中,有几个管道350、360、370和380,它们可以运行以执行加密或解密。管道的一些部分可以并行运行,而其他部分可能需要来自其他管道的输入。

图3示出了使用替换表301-310的加密或解密。替换表可以具有对应于要被加密或解密的输入的长度的各种大小。替换表可以由加密或解密引擎(例如,如图1中所示的101或122)使用。加密或解密引擎还具有执行逐字符加法和减法运算的能力。由带圆圈加号表示的组合运算320-331可用于各种逐字符加法和减法运算或其他运算,这些运算组合两个值以获得新的值。运算320、324、327和331也可以用于执行掩码运算。运算321和330也可以用来执行应用微调的运算。

使用密码块链接的各实施方案可以接收:要加密的输入字符串、期望的块大小n、不加密的多个前缀账号数字以及掩码函数。这些信息可以用来执行加密。也可以从一个或多个输入值来计算掩码。块大小n将小于输入字符串的长度。输入字符串中应保持不变的数字将作为明文保持未加密的状态,而将输入字符串的其余部分(称为p)加密为密文。如果没有要保持未加密的字符(明文),则p可以是整个字符串。

p可以被分成多个块p1、p2...pm(在此实例中m是4),使得块p1具有多达n位数,并且所有剩余的块恰好具有n位数。p1可以是来自输入字符串的任何字符块,不一定是来自输入字符串的要加密的连续字符。作为加密块(子字符串)pi的一部分,可以在替换表中的条目中找到块pi,例如301-310之一,并且返回存储在替换表中相应条目处的输出块c。替换表可以全部具有相同的大小、不同的大小,或者一些可以是相同的,而另一些可以是不同的大小。

如果n是6,并且如果要加密的字符数大于六,则各实施方案可以将输入字符串p分割成若干块p1、p2、...、pm(在该实例中,m是4),使得单个块pi最多有六位数,而所有其余的块正好有六位数。在其他实施方案中,可以以其他方式分割块,例如,具有多于两种不同的大小。为了确保加密和解密的伪随机性,各实施方案可以具有管道之间的交互,支持可变长度的块,并使用各种各样的逐字符运算。现在更详细地描述图3。图3中的各种运算是可选的,例如掩码运算和微调运算。

在管道350中,输入块p1用于从替换表301获得输出块ppp1。然后,将输出块ppp1馈送到管道360中。稍后在管道350中,将具有值m的掩码运算320应用于ppp1以产生在替换表302中使用的mp。将微调运算321应用于结果值以产生ccc4。将ccc4输入到替换表303以产生cc4,利用来自管道360的中间值,对该值执行组合运算322(例如,逐字符运算,诸如加法或减法),以产生输出值c4。管道360、370和380中的类似运算可以以与管道350中类似的方式执行。

在管道360中,对来自管道350的输入块p2和输出块ppp1执行组合运算323以产生pp2。在替换表304中使用pp2来产生ppp2,该值被馈送到管道370中。将具有值m(或其他掩码值)的掩码运算324应用于ppp2以产生ccc3。将ccc3反馈回管道350以用于组合运算322。ccc3与替换表305一起使用以产生cc3。用来自管道370的中间值和cc3执行组合运算325以产生值c3。

在管道370中,对输入块p3和来自管道360的值ppp2执行组合运算326以产生pp3。pp3与替换表306一起使用以产生值ppp3,该值被馈送到管道380中。将具有值m的掩码运算327应用于ppp3以产生ccc2。将ccc2馈送到管道360并与替换表307一起使用以产生cc2。用来自管道380的中间值和cc2执行组合运算328以产生值c2。

在管道380中,对输入块p4和来自管道370的值ppp3执行组合运算329以产生pp4。pp4与替换表308一起使用以产生值ppp4。将具有值t的微调运算330应用于ppp4,其结果被用在替换表309中以产生mc。将具有值m的掩码运算331应用于mc以产生ccc1。ccc1与替换表310一起使用以产生cc1,其对应于值c1。输入字符串的所得加密值由c4、c3、c2和c1确定。输入字符串p可以是例如pan,因此,加密过程的结果可以是加密的pan。解密可以通过反向执行运算来执行。

c.加密和解密伪代码

图4示出了用于执行本文所描述的加密和解密过程的伪代码。该图使用操作数它们对应于组合运算,如图3中的运算320-331。函数ei表示使用替换表来加密明文块pi。函数di表示使用替换表来解密密文块ci。因此,di是em-i+1的逆转。虽然可以对e2、e3、…、em(以及对应的dm-1、dmm-2、…、d1)使用相同的替换表,但是可以对不同的加密块使用不同的替换表,但是每个解密块都对应于一个加密块。在此实例中,有m个块。替换表可以对应于图3中所示的替换表301-310。

在以下描述中,带方框的加号和带方框的减号运算符可以分别表示逐字符加法和减法模10。例如,如果a=a1a2…am,b=b1b2…bm和c=c1c2…cm是m位数数字,则意味着,对于i=1…m,ci=(ai+bi)mod10,类似地,意味着ci=(ai–bi+10)mod10。另一个实例可以分别使用c=(a+b)mod10m和c=(a–b)mod10m。其他运算符也是可以的,如逐点运算和非逐点运算。例如,可以基于整个数字执行乘法运算。

各实施方案还可以包括可调节块密码,因为它利用微调。对于涉及pan的各实施方案,微调可以是例如从bin导出的n位值。在伪代码中,p是n位明文,c是n位密文,而t是n位“微调”(例如,从bin导出的)。

伪代码显示了对每个块的明文或密文进行加密或解密运算的循环。在一些实施方案中,第一块(p1,cm)可以具有不同于n个字符的大小,而其他块可以是n个字符。在第02行中,加密或解密运算可以使用相应的替换表并且只需要保留最后几位,例如管道中的先前值。第10行对应于微调运算330和使用替换表309的加密以获得值mc。第11行对应于使用来自第一管道的ppp1和来自第m管道的mc结果来计算掩码值。如图所示,掩码函数被确定为逐点减法,然后将结果乘以比例因子(在本实例中为2)。这种乘法可以是逐点乘法或整个数字的乘法。第12行对应于掩码运算320。第21行对应于掩码运算331。第22和23行对应于中间管道上的任何掩码函数,例如掩码运算324和37。第24行对应于微调运算321。第30和31行对应于使用替换表310、307、305和303以及组合运算328、325和322的加密运算。同样在第11行中,乘以二表示与其本身的逐字符相加。除了当第一块只有一个数字时,一种可能的替代方法是乘以10,将所有数字有效地向左移动一位。

例如,如果明文由n1位数数字p1和n2位数数字p2组成,则密文c1和c2将由n2位数数字c1和n1位数数字c2组成。并且,加密过程将包括使用n1位数替换表的替换运算的三个实例和使用n2位数替换表的替换运算的三个实例。

iii.实例

使用各种管道和不同数量的输入字符的加密过程的实例。各实施方案可以在块密码模式运算下操作,该模式适用于支持可变长度的块并支持逐字符运算符。

a.带有6位数微调的示例16位数加密

图5示出了具有6位数微调和6位数块大小的16位数数字加密的实例。输入字符串是16位数数字1234567890123452。需要加密的部分是789012345,而其加密的结果是537986038。包含明文和密文(假设luhn校验和应该为零)的加密消息的最终结果是1234565379860388,它可以对应于令牌。

图5包括两个管道560和570,并且包括使用替换表(例如,具有各种大小,其可以由加密或解密引擎使用,例如,如图1所示)的块加密运算501-506。替换表的一些部分在530和540处示出,其分别描绘了在该实例中进行的3位数和6位数替换。加密或解密引擎也可以具有执行组合运算的能力,例如逐字符加法和减法运算。在图5中表示了几个组合运算510-515。加密或解密引擎也具有执行掩码运算的能力。元素520描绘掩码运算符。如在550所计算,显示了该实例的掩码运算。

可以根据校验和要求,来计算最后一位数。例如,可以用特定的方式计算加密账户的校验和,以使校验和将为一,而在真实账户中它将为零。校验和所需值可以设置为任何值。校验和可以是使得加密数字与原始明文值容易区分而不改变其格式的元素。真实的明文数字可以具有某种校验和属性,以使校验和必须计算为所需的值,例如,对应于某些有效的真实账号。因此,校验和可以提供简单的方法来验证是否存在有效的明文值。作为实例,校验和可以取0到9的值,因此,如果有15位数,那么16位数中只有一个可能的值使得整个校验和将为零。如果存在这样的要求,则校验和可以明确地不为零,例如,如上所述。

在此实例中,微调使用未加密的字符。这些字符保留为明文形式,但尽管如此微调仍然对密文有影响。例如,如果有一个16位数数字,则前6位数可以保留其原始形式和格式。加密结果可保留前六位数,以便加密输出仍具有相同的6位数。16位数中其余的9位数将被加密。例如,各实施方案可以基于块大小“六”来加密数字789和012345。

管道560获取由字符789组成的第一块,并使用加密运算501(对应于表530)来找到替换值。在此实例中,加密运算501示出了789被692替换,这是ppp1。

管道560还执行掩码运算。在掩码运算550中,掩码值的计算取两个输入值(692和974688),并且将它们彼此逐字符相减,并将结果乘以2以产生掩码028。在掩码函数的该实例中,输入值是692和974688,并且最高有效位在较长数字中被丢弃,以便它与较短数字具有相同位数。因此,计算逐字符模10减法(6-6=0,9-1=1,2-8+10=4)给出现在我们将逐字符乘以2模10,并得到掩码值028。掩码的目的可以是在某些条件下在输出中引入一定量的随机性。在逐字符加法510处,将掩码应用于692以获得mp的值610。

使用加密运算502对mp执行3位数替换以获得值861。在此实例中,加密运算502对应于表530,但是可以使用不同的3位数表。在微调运算511(在此实例中,是逐字符减法)中,将微调值123456应用于861,以产生ccc2=415。加密运算503使用表530且使用ccc2的值来产生634。在组合运算512处,从运算503的结果逐字符减去来自管道570的ccc1,以产生值c2=038..

在管道570中,将ppp1的值692在逐字符加法513中与p2=012345组合以产生值012937,其在加密运算504(对应于6位数替换表540)中用于产生ppp2的值。在加密运算504之前或之后可以执行逐字符加法513(或其他组合运算),如同其他管道中的其他组合运算一样。在一些实施方案中,可以在加密运算504之后执行诸如513之类的组合运算。诸如ppp1和mp之类的值是中间输出块的实例,而mc是新中间块的实例。

然后,可以将ppp2与微调运算514(在此实例中是逐字符减法)组合,并且获得106189的结果。在加密运算505(也对应于替换表540)处,使用106189来产生mc=974688。在逐字符加法515处,将掩码值028应用于mc(值974688)以获得值为974606的ccc1。在加密运算506(在此实例中也对应于替换表540)处,ccc1的值用于产生c1=537986的值。各实施方案可以将537986与第一管道的加密的结果(038)组合以获得加密结果,例如通过也使用明文123456来计算校验和数字,其可以被定义为密码方法的一部分。某些运算可以并行完成,例如510和515以及502和506。

此系统是可逆的。因此,如果将各实施方案应用于加密的号码,则可以产生原始号码。可以应用相同的加密和解密方法,只是替换按相反的方向(即从左侧或右侧)来访问表。例如,反向运算将使用537986来获得974606。否则,各实施方案可以是对称的,包括掩码的计算。另外,各实施方案可以确保当微调改变时,它会影响所有块。而且,如果第二管道发生任何改变,那么第一条管道的输出也将发生不可预测的改变。这些不可预测的改变有利地使得解密非常困难,同时允许使用有效的计算工作和存储,因为可以使用块大小相对较小的并行运算。

有人可能会担心使用用于第一管道的小替换表可能会损害用于其余块的大替换表的安全性。例如,假定该过程仅加密两个块(如图5所示),则没有微调,并且用于第一块的映射只是身份,这等同于相应的替换表已被泄漏的情况。密文的较大块可以变为其中密文的较小块可以变为如果较小的块具有与较大块相同的大小,则各实施方案可以具有假设攻击者知道p1,则这将使密码e暴露于已知明文攻击。然而,块的大小不同(因此使用不同的替换表),仅将输入的最低有效位透露给e,而来自mc的最高有效位仍然未知。因此,即使较小的替换表被泄露,各实施方案仍可以保持安全。

b.示例22位数加密

图6示出了使用三个管道的加密实例,其中输入是假设的22位数数字1234567890123456789012。需要加密的部分是789012345678901,而输出是760211026444195。输出的值是1234567602110264441950。

图6示出了可由加密或解密引擎(例如图1的101或122)使用的替换表。图6示出了替换表620和630的一些部分,它们分别描绘了3位数和6位数替换。加密或解密引擎还具有执行逐字符加法和减法运算的能力,例如,如610-618所描绘。加密或解密引擎也可以具有执行掩码运算的能力。如在640所计算,示出了计算该实例的掩码的结果。在掩码函数的该实例中,输入值是692和552327,这导致计算由于6-3=3,9-2=7且2-7+10=5,得到逐字符乘以2模10:3×2=6,7×2-10=4,5×2–10=0。因此,掩码是640。

此实例使用保留其原始形式和格式的前6位数的6位数微调。22位数的剩余15位数可以被加密。该实例使用两种大小的替换表:一个是3位数替换,另一个是6位数替换。该方法使用3个管道,因为有以下3个数字块:789、012345和678901。

管道650获取由字符p1=789组成的第一块,并使用加密运算601(对应于替换表620)来找到替换值ppp1=692。在此实例中,表620的已显示部分示出了789被替换为692。在逐字符加法中,通过取除以10的余数,将该值692与掩码值m=640组合。例如,2+5是常规的7。然而,当6+6相加时,结果是12,但剩下的只有2,是除以10的余数。然后,该运算通过使9+4为3来组合下一个数字,并且最后2+0为2,由此提供mp=232。因此,该过程产生mp=232的值,其在输入到加密运算602(也对应于替换表620)时输出454。

管道650继续对组合运算611应用123456的微调运算以获得008。在此实例中,组合运算611是从微调(456)获取最后三位数的逐字符减法,并且从454模10中逐字符减去它,这得到008:4-4=0,5-5=0,4-6+10=8。值008用于在加密运算603中访问替换表630以获得468,用ccc2对其进行逐字符减法612,以获得c3=195的值。

在顶部,管道660从管道650接收ppp1=692,用于逐字符加法613中,以产生值012937,其由加密运算604(对应于6位数替换表630)使用,以产生ppp2=083733。在逐字符加法614中将ppp2与掩码值m=640组合以产生ccc2=083373。使用替换表630的6位数加密运算605与cccc2一起使用,以产生578301,利用来自管道670的cccc1=552967对578301进行逐字符减法615,以产生c2=026444,如578301'–'552967=026444逐字符mod10:5-5=0;7-5=2;8-2=6;3-9+10=4;0-6+10=4;1-7+10=4。

在顶部,管道670从管道660接收ppp2=083733,其在运算616处与p3=678901组合以产生651634。作为加密运算606的一部分,在6位数替换表630中找到值651634以产生ppp3=236922。对ppp3进行微调t=123456以产生359378,并且使用加密运算607(在此实例中也对应于6位数替换表607)来获得mc=552327。在组合运算618处,将该值与掩码m=640逐字符相加以产生ccc1=552967,其被反馈回管道660。随后,在加密运算608中将ccc1=552967与6位数替换表630一起使用,以产生c1=760211的该管道的最终值。

在此实例中,掩码值可以经由掩码函数来计算。ppp1(692)和mc(552327)的值彼此逐字符相减,并乘以2以产生掩码640。将掩码应用于692,以获得管道650中的232,并将其应用于管道670中的552327,以获得552967。

将三个最终值195、026444和760211与明文前缀123456组合,以计算校验和数字,从而产生最终的22位数、格式保留的加密值。可以通过密码技术来指定校验和值,以使得所有其他数字总和(可能有各种总和)为校验和数字。所有数字的luhn校验和为零。

iv.格式保留方法

如上所述,各实施方案可以将输入字符串分成以未加密状态传输的明文和待加密的明文字符。明文可以分成若干个块(子字符串)。每个块都可以由多个管道中的一个管道来处理,其中这些管道执行一个或多个加密运算,这些加密运算涉及例如预定的或动态生成的替换表,动态生成的替换表可以仅为所需的块生成。然后,可以组合每个管道的加密结果,包括与明文组合,以形成用于以加密形式传输的有效负载消息。当密码运算仅通过集中式服务来执行时,一些实施方案可以作为令牌化过程的一部分来保密,其中不同的代码替换私人凭证。

图7a和图7b是用于执行格式保留密码运算的方法700的流程图。方法700可以通过例如与支付网络进行通信的格式保留加密系统的元件来实现,如图1中所见。因此,方法700可以由实现加密或解密引擎的计算机系统执行。

在框710处,接收到m个字符的输入字符串。输入字符串可以被加密或解密。可以从大于m个字符的较大输入字符串中提取m个字符的输入字符串(明文)。可以标识或指定要以明文形式发送的其他字符,例如pan的bin部分。m可以是大于4的整数。例如,加密5个字符的字母数字字符串将需要300mb的替换表,这是不切实际的,因此可以通过将字符串分割成更小的块而获益。在数字情况下,最小值可能是7。

在框715处,将输入字符串分成多个子字符串。子字符串可以包括来自输入字符串的任何字符块,即不一定是顺序字符。可以以任何适当的方式划分输入字符串,只要该方式由解密引擎指定并且为其所知。子字符串可以具有不同的长度。

例如,如果n均匀地划分为m,换句话说k=m模n=0,那么输入字符串可以被分解成大小为n的块,其中n是小于m的整数。然而,如果k大于零,则存在长度为k的一个子字符串,其余的是长度为n的子字符串。因此,多个子字符串中的第一子字符串可以具有k个字符,而一个或多个其他子字符串可以具有n个字符,其中k等于m模n。

在框720处,存储一个或多个替换表。一个或多个替换表中的每一个都对应于子字符串。例如,一个表可以对应于k个字符的子字符串,而另一个表可以对应于其余的具有n个字符长度的子字符串。因此,在一些实施方案中,表可以重复用于多个子字符串,甚至重复用于相同子字符串的多个加密/解密运算,例如,如图5和图6所示。在其他实施方案中,不同的表可以用于每个加密/解密运算。

可以使用替换表来基于相同的相应数量的字符的输入块来提供相应数量的字符(例如,n个字符)的输出块,例如,输出对应于6个字符的输入的6个字符。因此,如果n是6,则可以获得基于n个字符的输入块提供6个字符的输出块的替换表,并将该替换表存储在存储器中。在一些实施方案中,可以存储替换表作为用于生成表的全部或一部分的确定性规则,例如,为相同数量字符的任何输入块提供输出块的规则。

一个或多个替换表的大小取决于子字符串的长度。如果n是任何替换表的最大大小(宽度),则使替换表的宽度n过小会损害安全性,而使得宽度过大将会占用过多的存储器,并且会减慢该过程。在一些实施方案中,表的输入字符的总数rn应该大于100,000,或者等效地,n>logr(100000),其中r是底数,它是字母表的大小。在纯数字输入的情况下,r=10,因此,n>5。

在框730处,加载多个密码管道。每个密码管道都对应于多个子字符串中的一个,例如,如图3、图5和图6所示。789、012345和678901。多个密码管道具有有序排列,使得它们相互馈送。例如,起始密码管道具有一个前向相邻管道,最终密码管道具有一个反向相邻管道,而任何其他密码管道可以具有两个相邻管道,例如,如图3、图5和图6所示。789、012345和678901。

对于多个密码管道中的每一个执行框735至755。

在框735处,执行使用与对应子字符串具有相同大小的对应替换表的第一替换操作,以基于对应于输入字符串的第一输入块来获得第一输出块。因此,如果存在长度为六的子字符串,则使用对应于该子字符串的6字符替换表来获得6字符输出块,例如,如图3、图5和图6所示,例如在加密运算501和601中。在一些实施方案中,例如,如针对组合运算513和加密运算504所做的那样,第一替换操作可以对管道的输入子字符串或对与输入子字符串的组合运算的结果进行操作。

在框740处(在图7b中),当存在前向相邻管道时,将第一输出块发送到该前向相邻管道。前向相邻管道可以在第一组合运算中使用该第一输出块和对应于相邻子字符串的相邻块,来获得将用于相邻替换操作的相邻输入块。

在一些实施方案中,前向相邻管道可以在第一相邻替换操作中使用相邻输入块来获得相邻输出块,以在存在另一相邻管道时发送到该另一相邻管道。例如,管道660可以将ppp2发送到管道670。可以在组合运算之后发送相邻输入块,例如,可以在加密运算604之后执行组合运算613。

在框745处,将掩码函数应用于对应于第一输出块的中间输入块,以获得中间输出块。作为实例,中间输入块可以是第一输出块、第一输出块和组合运算或者例如在管道670中的另一加密运算的结果。掩码函数可以计算掩码值,并且可以在组合运算(例如运算610)中将该掩码值应用于中间输入块。掩码函数可以取决于多个密码管道中的至少两个的输出块。例如,掩码运算550和640基于ppp1和mc生成掩码值。安全性可能需要依赖于最后一块,而对第一块的依赖可以为加密/解密提供对称性。

在框750处,如果密码管道具有反向相邻管道,则将第一中间块发送到反向相邻管道,以在第二组合运算中将第一中间块与相邻中间块一起使用。该第一中间块可以是中间输出块或从中间输出块导出。例如,将ccc2(或从潜在中间输出模块mc导出的ccc1)从管道660发送到管道650。

在框755处,可以使用相应的替换表来执行最终替换操作,作为基于中间输出块获得最终输出块的一部分,其中最终输出块具有与相应子字符串相同的大小。当存在前向相邻管道时,可以基于第二组合运算进一步获得最终输出块。例如,加密运算603(具有组合运算612)、605(具有组合运算615)和608可以提供最终输出块c3、c2和c1。

在框760处,在对每个管道进行所有替换之后,组装多个密码管道的最终输出块,以获得m个字符的输出字符串。当密码运算是加密时,可以将加密的输出字符串与较大输入字符串的任何明文(例如保持完整的前缀)组合,如图5和图6所述。

如上所述,当运算是加密时,也可以确定校验和数字。例如,可以使用加密输出字符串和潜在的任何明文来计算第一个总和。校验和字符被确定为使得第一总和与校验和字符的校验和提供期望值(例如0或1)。可以将校验和字符添加到加密的输出字符串中,以创建用于发送到另一个设备的消息,使该消息具有正确的校验和。

m个字符的输入字符串可以是较大字符串的一部分,并且可以标识较大字符串中的不需要加密的一组字符,例如要以明文发送的bin或其他值。可以组合该组字符和m个字符的加密输出字符串,来创建由明文和密文组成的消息。然后,可以将该消息发送到另一设备。

在一些实施方案中,可以将微调函数应用于中间块。微调函数可以取决于输入的明文值,即不需要加密的字符。微调函数可以在组合运算中将明文应用于一个或多个中间块。这样,如果有人更改输入的明文部分,也将会更改消息的加密部分。如果没有明文,则不会执行微调函数,例如社会安全号码或电话号码可能被完全加密。

v.非数字数据加密方法

在到目前为止描述的方法中,主要描述了数字明文数据(例如pan、电话号码、社会安全号码、邮政编码等)。类似的方法也可以应用于非数字pii数据(例如持卡人的姓氏或街道地址)。为此,可以构建编码表。

在编码表中,可能出现在明文中的r个字符中的每一个都对应于数字代码。因此,格式保留加密的结果可以显示为来自同一字符组的随机字符串。例如,假设需要加密一个只使用大写拉丁字母的持卡人姓氏。该字母表有r=26个字符(a-z),且每个字符都可以对应于数字值。

图8示出了根据本发明实施方案的拉丁字母表的样本编码表。可以为到数值的其他期望映射构建各种编码表。在图8中,字符a映射到代码00,字符b映射到代码01,字符c映射到代码02,依此类推,表示拉丁字母表中的所有字符

明文中的每个字符都可以根据该编码表替换为相应的代码。在此实例中,“smith”变成了代码值序列{18,12,08,19,07}。

基数(或底数)可以从10变为字母表中的字符数r(在所考虑的情况下为26)。具体来说,逐字符加法和减法模r可以定义如下。如果a=a1a2…an,b=b1b2…bn且c=c1c2…cn是n个字符的字符串,则意味着,对于i=1…n,ci=(ai+bi)modr,类似地,意味着ci=(ai–bi+r)modr。另一个实例可以相应地使用:

∑icirm-i=(∑iairm-i+∑ibirm-i)modrmand∑icirm-i=(∑iairm-i-∑ibirm-i)modrm,respectively.

同样,多图形替换密码e用另一个n个字符的字符串来替换包含n个字符的字符串的块。替换表可以具有针对所有可能的rn输入的映射规则。在r=26的情况下,最大的表可以具有n=4或5。由于该方法的其余部分是用密码e、反向操作d和操作数来描述的,所以上述方法不需要进一步的修改即可适用。

在加密之后,可以根据编码表,将每个代码替换为相应的字符,编码表可以是之前使用的编码表或另一个编码表。在上面的实例中,单词“smith”的加密结果可以是完全由大写拉丁字符组成的5个字符的字符串,可能是“wrzmu”。可以为各种语言创建类似的编码表。

vi.计算机系统

本文所提及的任何计算机系统都可以使用任何合适数量的子系统。在一些实施方案中,计算机系统包括单个计算机装置,其中子系统可以是计算机装置的组件。在其他实施方案中,计算机系统可以包括多个计算机装置,每个计算机装置都是具有内部组件的子系统。

示出了诸如打印机74、键盘78、存储设备79、耦合到显示适配器82的监视器76等之类的附加子系统。耦合到i/o控制器71的外围设备和输入/输出(i/o)设备可以通过本领域中已知的各种手段(例如输入/输出(i/o)端口77(例如usb、fire))连接到计算机系统。例如,i/o端口77或外部接口81(例如以太网、wi-fi等)可用于将计算机系统10连接到广域网(例如因特网)、鼠标输入设备或扫描仪。经由系统总线75的互连允许中央处理器73与每个子系统进行通信,并控制来自系统存储器72或存储设备79(例如,诸如硬盘驱动器或光盘之类的固定盘)的指令的执行,以及子系统之间的信息交换。系统存储器72和/或存储设备79可以体现为计算机可读介质。本文所提及的任何数据都可以从一个组件输出到另一个组件,并可以输出给用户。

计算机系统可包括,例如,由外部接口81或由内部接口连接在一起的多个相同组件或子系统。在一些实施方案中,计算机系统、子系统或装置可以通过网络进行通信。在这种情况下,一台计算机可以被认为是客户端,另一台计算机为服务器,其中每台计算机都可以是同一计算机系统的一部分。客户端和服务器可以分别包括多个系统、子系统或组件。

应当理解,本发明的任何实施方案可以使用硬件(例如专用集成电路或现场可编程门阵列)和/或使用计算机软件以控制逻辑的形式借助通用可编程处理器以模块化或集成方式实现。如本文所使用的,处理器包括单核处理器,同一集成芯片上的多核处理器或单个电路板上的多个处理单元或网络。基于本文中提供的公开和教导,本领域普通技术人员会知道并意识到使用硬件及硬件和软件的组合实现本发明的实施方案的其他方式和/或方法。

本申请中描述的任何软件组件或功能中可以实现为使用任何适当计算机语言(诸如,例如java、c、c++、c#、objective-c、swift)或脚本语言(诸如perl或python)使用例如传统的或面向对象的技术由处理器执行的软件代码。软件代码可以作为一系列指令或命令存储在用于存储和/或传输的计算机可读介质上,合适的介质包括随机存取存储器(ram)、只读存储器(rom)、诸如硬盘驱动器或软盘的磁介质或诸如光盘(cd)或dvd(数字通用盘)的光学介质、闪存等。计算机可读介质可以是这些存储或传输设备的任何组合。

也可以使用适于通过符合各种协议(包括互联网)的有线、光学、和/或无线网络传输的载波信号来编码和传输这样的程序。因此,根据本发明的实施方案的计算机可读介质可以使用用这种程序编码的数据信号来创建。利用程序代码编码的计算机可读介质可以利用兼容的设备来封装,或与其他设备可分开地提供(例如通过互联网下载)。任何这样的计算机可读介质都可以驻留在单个计算机产品(例如硬盘驱动器,cd或整个计算机系统)上或内部,并且可以存在于系统或网络内的不同计算机产品上或内部。计算机系统可包括监视器、打印机,或用于向用户提供本文所提及的任何结果的其他合适的显示器。

本文中描述的任何方法可以完全地或部分地用包括可被配置成执行这些步骤的一个或多个处理器的计算机系统执行。因此,实施方案可以涉及被配置成执行本文中描述的任何方法的步骤、可能具有执行相应步骤或相应步骤群组的不同组件的计算机系统。尽管呈现为编号步骤,但本文中的方法的步骤可以同时或以不同顺序被执行。另外,这些步骤的部分可以与来自其他方法的掐他步骤的部分一起使用。同样,一个步骤的全部或部分可以是可选的。另外,任何方法的任何步骤可以用模块、电路或用于执行这些步骤的其他手段来执行。

在不偏离本发明的实施方案的精神和范围下,具体实施方案的特定细节可以以任何适当方式组合。不过,本发明的其他实施方案可以涉及与每个单独的方面有关的特定实施方案,或者这些单独的方面的特定组合。

上文对本发明的示例性实施方案的描述已经出于说明和描述的目的呈现。不旨在是详尽的,或将本发明局限到描述的精确形式,根据上文的教导许多修改和变形是可能的。选择和描述这些实施方案是为了最好地解释本发明的原理及其实际应用,从而使本领域的技术人员能够在各种实施方案中最好地利用本发明,并且进行适合于预期的特定用途的各种修改。

除非明确指示有相反的意思,否则叙述“一个/种”或“该/所述”旨在表示“一个/种或多个/种”。除非明确指示有相反的意思,“或”的使用旨在表示是“包括性的或”,而不是“排他性的或”。

本文中提到的所有专利、专利申请、公开和描述出于所有目的通过引用被全部并入本文中。不承认它们为现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1