文本加密的制作方法

文档序号:13518674阅读:345来源:国知局
文本加密的制作方法



背景技术:

密码加密通常可以指代将明文消息或信息编码成密文使得明文的内容对于未经授权的实体是不可读或不相干的技术。例如,可以使用公共或秘密加密算法以及秘密加密密钥对密文进行编码和解码来执行这种加密。此外,在一些加密方案中,也可以使用随机或伪随机初始值,以便针对相同的明文产生不同的密文。

附图说明

以下具体实施方式参考附图,其中:

图1是用于文本加密和文本解密的示例系统的框图;

图2是用于文本加密的示例性方法的流程图;

图3是用于文本解密的示例方法的流程图;

图4是用于文本加密的示例系统的框图;以及

图5是用于文本加密的示例系统的框图。

具体实施方式

满足安全条件的传统块密码算法可以使用初始值。初始值是对加密原语的随机、伪随机或可预测但唯一的固定大小输入。然而,可能存在在块密码链的实现中初始值是不期望的原因。例如,使用初始值可能会导致通信成本和/或存储成本。使用初始值也可能导致安全性问题。例如,某些模式使用唯一的、随机的和/或秘密的初始值。如果初始值不是唯一的、随机的或秘密的,那么该方案的安全性可能会受到损害。

此外,使用初始值可能导致块密码链不是确定性的。这意味着给定明文和密钥,两个不同的初始值可能会产生两种不同的密文。然而,在许多应用中,确定性是期望的性质。这些应用程序的两个示例是重复数据删除和可搜索加密。

本文所讨论的用于加密明文的系统和方法可以以有效的方式执行加密,而不使用初始值。例如,没有初始值的加密可能使用少于具有初始值的原始块密码计算的2倍。在使用散列函数的方面中,块密码计算的数量可以与原始块密码相同,并且唯一的额外成本是散列函数,其通常比块密码计算成本更低。

示例性方法可以包括接收要被加密的明文,其中明文包括第一块、第二块和第三块,并且基于第一块和第二块生成初步密文。该方法还可以包括:使用接收第三块和初步密文作为输入的加密操作,使用加密密钥来生成第一密文。该方法还可以包括:使用接收第一块和第一密文作为输入的加密操作,使用加密密钥来生成第一最终密文。该方法还可以包括:使用接收第二块和第一最终密文作为输入的加密操作,使用加密密钥生成第二最终密文。

图1是用于文本加密的示例性系统100的框图。系统100可以包括可以通过通信链路(例如,总线)彼此耦合的处理器102和存储器104。处理器102可以包括中央处理单元(cpu)或另外合适的硬件处理器。在一些示例中,存储器104存储用于系统100的由处理器102执行的机器可读指令。存储器104可以包括易失性和/或非易失性存储器的任何合适的组合,诸如随机存取存储器(ram)、只读存储器(rom)、闪存和/或其他合适的存储器的组合。存储器104还可以包括当电源关闭时可以保留内容的随机存取非易失性存储器。

存储器104存储要由处理器102执行的指令,包括用于明文接收器110、密文加密器112、密文解密器114和/或其它组件的指令。根据各种实现方式,系统100可以以硬件和/或硬件和配置硬件的编程的组合来实现。而且,在图1和本文所述的其他附图中,可以使用与所描绘的不同数量的组件或实体。

处理器102可以执行明文接收器110的指令以接收待加密的明文。明文可以包括n个块,包括第一块(p1)、第二块(p2)、第三块(p3)等。如本文所使用的,术语“n”表示大于1的整数值。

处理器102可以执行密文加密器112的指令来加密所接收的明文的至少一个块。密文加密器112可以通过基于第一块和第二块生成初步密文来对明文的块进行加密。在一方面,生成初步密文可以包括使用第一块和加密密钥生成与第一块相对应的第一初步密文。生成初步密文还可以包括,使用接收第二块和第一初步密文作为输入的加密操作,使用加密密钥来生成对应于第二块的第二初步密文。在一些方面,第一初步密文可以对应于第二块,并且可以使用第二块和加密密钥来生成。类似地,第二初步密文可以对应于第一块,并且可以使用第一块和加密密钥来生成。此外,该技术可以与多于两个块一起使用,并且为了简单起见描述了两个块实现。

在另一方面,生成初步密文可以包括生成第一块和第二块的散列值,并使用散列值作为初步密文。

密文加密器112可以使用接收第三块和初步密文作为输入的加密操作使用加密密钥来生成第一密文。加密操作可以包括例如“异或”或(xor)操作。xor操作是一种当输入不同(即一个输入为真,另一个输入为假)时输出为真的逻辑运算。当然,这是示例加密操作,密文加密器112可以使用其他的加密操作。

密文加密器112可以使用接收第一块和第一密文作为输入的加密操作使用加密密钥来生成第一最终密文。换句话说,第一最终密文可以是第一块的加密,并且可以替代初始值和/或第一初步密文。密文加密器112可以使用接收第二块和第一最终密文作为输入的加密操作使用加密密钥来生成第二最终密文。换句话说,第二最终密文可以是第二块的加密,并且可以替换初步值和/或第二初步密文。此外,该技术可以与三个以上的块一起使用,并且为了简单起见描述了三个块实现。

密文加密器112可以使用至少一种加密技术来执行明文的加密。一种示例技术是密码块链接(cbc)。cbc是用于块密码的操作的模式。块密码是一种操作模式,其中将一系列位作为单个单元或块加密,将密钥应用于整个块。

使用本文讨论的技术的示例cbc操作可以看起来像下面的表1所示。当然,这只是示例,密文加密器112可以使用其他操作模式,如密码反馈(cfb)、输出反馈(ofb)、计数器(ctr)和xfs。

表格1:

在表1所示的示例性cbc操作中,e表示块加密算法的加密操作,并且k表示用于算法的加密密钥。可以使用的示例性块加密算法是高级加密标准(aes),但是可以使用其他加密算法。p1表示明文的第一块,p2表示明文的第二块,并且p3表示明文的第三块。c1*是与第一块相对应的第一初步密文,c2*是与第二块对应的第二初步密文,并且c3是与第三块对应的第一密文。换句话说,可以首次执行cbc模式以获得第一初步密文(c1*)、第二初步密文(c2*)和第一密文(c3)。通过使用加密密钥对第一块执行加密来生成第一初步密文(c1*)。重要的是,可以在不使用初始值的情况下生成第一初步密文。为了在不使用初始值(iv)的情况下制作基于cbc的块密码链,iv可以被设置为例如空字符串或具有零值和/或任何其他固定值的二进制字符串。以这种方式,在明文的加密和解密期间,iv可能不需要被存储和/或发送。不必存储或发送iv可以降低对明文执行加密和解密的存储成本。

密文加密器112可以通过对明文的第二块(p2)加密来生成第二初步密文(c2*)。具体地,密文加密器112可以使用加密密钥(k)执行第二块(p2)的加密,并且使用第二块(p2)和第一初步密文(c1*)作为输入来执行加密操作(例如,xor操作)。密文加密器112可以通过对明文的第三块(p3)加密来生成第一密文(c3)。具体地,密文加密器112可以使用加密密钥(k)来执行第三块(p3)的加密,并且使用第三块(p3)和第二初步密文(c2*)作为输入来执行加密操作(例如,xor操作)。此时,总密文可以是(c1*,c2*,c3)。然而,在不使用任何iv或不针对每个加密操作使用相同的iv的情况下,作为该阶段的总密文可能不能适当地加密,因为对于具有相同的p1和p2但是不同的p3的两个不同的明文,至少两个加密块将会相同,并且可能揭示关于这两个明文的相似性的信息。另一方面,如果对于每个加密操作使用唯一的iv,则加密明文两次将产生两种不同的密文。然而,在许多应用中,如重复数据删除和可搜索加密,不可区分性可能不是期望的属性。因此,密文加密器112可以执行第二cbc模式以对第一块(p1)和第二块(p2)重新加密。

示例第二cbc操作可以看起来像下面的表2所示。

表2:

在表2中描绘的示例cbc操作中,e表示分组密码算法的加密操作,k表示用于算法的加密密钥。可以使用的示例性块加密算法是高级加密标准(aes),但是可以使用其他加密算法。p1表示明文的第一块,p2表示明文的第二块,并且c3表示对应于明文的第三块的第一密文。c1是对应于第一块的密文,并且c2是对应于第三块的密文。换句话说,如表1所描绘的,可以首次执行cbc模式,然后第二次(如表2所描绘的),以获得对应于第一块(c1)的第一最终密文和对应于第二块(c2)的第二最终密文。

密文加密器112可以通过加密明文的第一块(p1)来生成第一最终密文(c1)。具体地,密文加密器112可以使用加密密钥(k)执行对第一块(p1)的加密,并且使用第一块(p1)和第一密文(c3)作为输入来执行加密操作(例如,xor操作)。类似地,密文加密器112可以通过加密明文的第二块(p2)来生成第二最终密文(c2)。具体地,密文加密器112可以使用加密密钥(k)执行对第二块(p2)的加密(e),并使用第二块(p2)和第一最终密文(c1)作为输入来执行加密操作(例如,xor操作)。总密文是(c1,c2,c3)。尽管表1-2中描述的示例使用三个块来进行描述,但是为了简化起见描述了三个块实现,并且本文讨论的技术可以与三个以上的块一起使用。

处理器102可以执行密文解密器114的指令来解密密文(c1,c2,c3)。密文解密器114可以通过使用加密密钥执行接收第一最终密文和第一密文作为输入的加密操作来对明文的第一块(即,p1)(即如上文参考密文加密器112所讨论的)进行解密。加密操作可以包括例如异或或(xor)操作。密文解密器114可以通过使用加密密钥来执行接收第二最终密文和第一最终密文作为输入的加密操作来解密明文的第二块。密文解密器114可以通过使用加密密钥和第一块生成第一解密密文来重新计算第一初步密文。第一解密密文可以与第一初步密文相同(即如上文参考密文加密器112所讨论的)。通过使用接收第二块和第一解密密文作为输入的加密操作使用加密密钥生成第二解密密文,密文解密器114可以重新计算第二初步密文。第二解密密文可以与第二初步密文相同(即,如上文参考密文加密器112所讨论的)。密文解密器114可以通过执行接收加密密钥、第一密文和第二解密密文作为输入的加密操作来解密第三块。

密文解密器112可以使用密码块链接(cbc)来执行对明文的解密。cbc操作的示例可能看起来像下面的表3所示。表3描述了用于对表1-2中加密的文本进行解密的示例cbc操作。

表3:

在表3所描绘的示例cbc操作中,d表示解密操作,k表示加密密钥,p1表示明文的第一块,并且p2表示明文的第二块。c1是对应于第一块的密文(即第一最终密文),c2是对应于第二块的密文(即第二最终密文),并且c3表示对应于明文的第三块的密文(即,第一密文)。

密文解密器112可以通过计算第一明文块(p1)和第二明文块(p2)来解密密文。通过使用加密密钥(k)执行接收第一最终密文(c1)和第一密文(c3)作为输入的加密操作(例如,xor操作),可以对第一明文块(p2)进行解密(d)。通过使用加密密钥(k)执行接收第二最终密文(c2)和第一最终密文(c1)作为输入的加密操作(例如,xor操作),可以对第二明文块(p2)进行解密(d)。

密文解密器112还可以对明文的第三块(p3)进行解密。用于解密明文的第三块的示例cbc操作可以看起来像下面的表4所示。

表4

密文解密器112通过首先重新计算第一初始密文(c1*)和第二初始密文(c2*),可以对明文的第三块(p3)进行解密。密文解密器112可以通过使用加密密钥(k)和第一块(p1)执行加密(e)来重新计算第一初始密文。密文解密器112可以通过使用加密密钥(k)和接收第二块(p2)和第一初始密文(c1*)作为输入的加密操作(例如,xor操作)执行加密(e)来重新计算第二初始密文密文。密文解密器112可以通过执行接收加密密钥(k)、第一密文(c3)和第二初始密文(c2*)作为输入的加密操作(例如,xor操作)来对第三块(p3)进行解密(d)。尽管表3-4中描述的示例使用三个块来进行描述,但是为了简单起见描述了三个块实现,并且本文讨论的技术可以与三个以上的块一起使用。

在上面参考表1-4描述的示例中,当明文/密文的长度为n个块时,用于加密和解密的块密码计算的总数可以是2n-1或更小。

在一个方面,密文加密器112可以使用基于cbc-ctr的密码链来生成密文。可以在不使用初始值的情况下来实现该方面。在这方面,可以如上所述地生成初始值和第一密文,但是可以使用ctr模式来确定最终密文。例如参照上面参照表1-4所示的示例,可以使用cbc模式如上所述地生成第一初步密文、第二初步密文和第一密文。

当第一块(p1)和第二块(p2)被重新加密时,可以通过使用第一密文(c3)作为ctr1值来利用ctr模式。然后可以在生成其他密文时递增ctr1值。例如,密文加密器112可以通过对明文的第一块(p1)进行加密来生成第一最终密文(c1)。具体地,密文加密器112可以使用加密密钥(k)来执行对第一块(p1)的加密,并且使用第一块(p1)和第一ctr1值作为输入来执行加密操作(例如,xor操作)。然后,密文加密器112可以使ctr1值递增。密文加密器112可以通过加密明文的第二块(p2)来生成第二最终密文(c2)。具体地,密文加密器112可以使用加密密钥(k)来执行对第二块(p2)的加密(e),并且使用第二块(p2)和递增的ctr1值作为输入来执行加密操作(例如,xor操作)。

类似地,在解密期间,密文解密器112可以通过使用ctr1值和递增的ctr1值来重新计算第一明文块(p1)和第二明文块(p2)来解密上述示例中所述的密文。通过使用加密密钥(k)执行接收第一最终密文(c1)和ctr1值作为输入的加密操作(例如,xor操作),可以对第一明文块(d)进行解密(d)。通过使用加密密钥(k)执行接收第二最终密文(c2)和递增的ctr1值作为输入的加密操作(xor操作),可以对第二明文块(p2)进行解密(d)。如前所述,密文解密器112还可以解密明文的第三块(p3)。当然这是示例,并且可以使用cbc-ctr模式来对其他数量的明文块进行加密和解密。

在一个方面,密文加密器112可以使用散列值来生成密文。可以在不使用初始值的情况下实现该方面。例如参照上面参考表1-4的示例,在使用cbc模式和散列函数的方面中,通过使用第一块(p1)和第二块(p2)的散列值来替换生成第一初步密文(c1*)和第二初步密文(c2*)。在这方面,当明文/密文的长度为n个块时,用于加密和解密的块密码计算的总数可以为n。唯一额外的计算可能是散列函数。虽然参考cbc模式来描述了该方面的示例实现,但是散列值可以与其他模式一起使用,例如cbc-ctr模式。

使用散列函数的方面可以用于某些实现应用,当计算给定数据串上的散列函数时可能比加密字符串更高效。例如,使用针对高级加密标准(aes)的安全散列算法3(sha3)。如果散列函数输出的长度大于块大小,则散列函数的输出可能会被截断。

图2是用于文本加密的示例性方法200的流程图。方法200可以在下面被描述为由系统(例如图1的系统100、图4的系统400或图5的系统500)实施或执行。也可以使用其它合适的系统和/或计算设备。方法200可以以存储在系统的至少一个机器可读存储介质上并由系统的至少一个处理器执行的可执行指令的形式来实现。处理器可以包括中央处理单元(cpu)或另一合适的硬件处理器。机器可读存储介质可以是非暂时性的。方法200可以以电子电路(例如,硬件)的形式实现。方法200的至少一个块可以基本上同时执行或以与图2所示不同的顺序执行。方法200可以包括比图2所示更多或更少的块。在某些时候,方法200的块中的一些可以是持续进行的和/或可以重复的。可以在不使用初始值的情况下执行方法200。iv可以被设置为例如空字符串或值为零和/或任何其他固定值的二进制字符串。

方法200可以在框202开始并继续到框204,其中该方法可以包括接收要被加密的明文。明文可以包括n块,包括第一块、第二块和第三块。在框206,该方法可以包括基于第一块和第二块来生成初步密文。一方面,生成初步密文可以包括使用第一块和加密密钥生成与第一块相对应的第一初步密文,并且使用接收第二块和第一初步密文作为输入的加密操作使用加密密钥生成与第二块对应的第二初步密文。在一个方面,生成初步密文可以包括生成第一块和第二块的散列值。

在框208,该方法可以包括使用接收第三块和初步密文作为输入的加密操作,使用加密密钥来生成第一密文。加密操作可以包括xor操作。在框210,该方法可以包括使用接收第一块和第一密文作为输入的加密操作,使用加密密钥来生成第一最终密文。在框212,该方法可以包括使用接收第二块和第一最终密文作为输入的加密操作,使用加密密钥来生成第二最终密文。方法200可以最终继续到框214,其中方法200可以停止。

图3是用于文本解密的示例性方法300的流程图。例如,可以执行方法300,对使用诸如上述参考图2的方法200的加密方法加密的明文进行解密。方法300可以在下面被描述为由系统(例如图1的系统100、图4的系统400或图5的系统500)实施或执行。也可以使用其它合适的系统和/或计算设备。方法300可以以存储在系统的至少一个机器可读存储介质上并由系统的至少一个处理器执行的可执行指令的形式来实现。处理器可以包括中央处理单元(cpu)或另一合适的硬件处理器。机器可读存储介质可以是非暂时性的。方法300可以以电子电路(例如,硬件)的形式实现。方法300的至少一个块可以基本上同时执行或者以与图3所示不同的顺序执行。方法300可以包括或多于少于图3所示的块。在某些时候,方法300的框中的一些可以是持续进行的和/或可以重复的。

方法300可以在框302开始并继续到框304,其中该方法可以包括通过使用加密密钥执行接收第一最终密文和第一密文作为输入的加密操作来解密第一块。在框306,该方法可以包括通过使用加密密钥来执行接收第二最终密文和第一最终密作为输入的加密操作来解密第二块。在框308,该方法可以包括使用加密密钥和第一块来生成第一解密密文。在框310中,该方法可以包括:使用接收第二块以及第一解密密文作为输入的加密操作,使用加密密钥来生成第二解密密文。在框312,该方法可以包括通过执行接收加密密钥、第一密文和第二解密密文作为输入的加密操作来对第三块进行解密。方法300可以最终继续到框314,其中方法300可以停止。

图4是用于文本加密的示例性系统400的框图。系统400可以包括可以通过通信链路(例如,总线)彼此耦合的处理器402和存储器404。处理器402可以包括中央处理单元(cpu)或另一合适的硬件处理器。在一些示例中,存储器404存储由处理器402执行的用于系统400的机器可读指令。存储器404可以包括易失性和/或非易失性存储器的任何合适的组合,诸如随机存取存储器(ram)、只读存储器(rom)、闪存和/或其他合适的存储器的组合。

存储器404存储要由处理器402执行的指令,包括用于明文接收器406和文本加密器408的指令。系统400的组件可以以存储在系统400的至少一个机器可读存储介质上并由系统400的至少一个处理器执行的可执行指令的形式来实现。机器可读存储介质可以是非暂时性的。系统400的组件中的每一个可以以包括用于实现组件的功能的电子电路的至少一个硬件设备的形式来实现。

处理器402可以执行明文接收器408的指令以接收要被加密的明文,其中明文包括n个块的集合。n个块的集合还可以包括第一块、第二块和第三块。处理器402可以执行文本加密器408的指令以使用加密操作来加密明文的至少一个块。加密操作可以包括xor操作。处理器402可以执行文本加密器408的指令以不使用初始值(iv)来执行加密。iv可以被设置为例如空字符串或值为零和/或任何其他固定值的二进制字符串。

处理器402可以执行文本加密器408的指令,以使用加密密钥和第一块来生成对应于属于该集合的第一块的第一初步密文。处理器402可以执行文本加密器408的指令,以使用第一初步密文和加密密钥生成对应于属于该集合的第二块的第二初步密文。

处理器402可以执行文本加密器408的指令以使用加密的n-1块和加密密钥来生成与属于该集合的第n个块对应的第n个密文。处理器402可以执行文本加密器408的指令,以使用加密的第n个块和加密密钥来生成与属于该集合的第一块对应的第一最终密文。处理器402可以执行文本加密器408的指令,以使用第一最终密文和加密密钥生成对应于属于该集合的第二块的第二最终密文。由文本加密器408和文本分解密器执行的块密码计算的总数可以小于或等于2n-1。

图5是用于文本加密的示例系统500的框图。系统500可以类似于例如图1的系统100。在图5所示的例子中,系统500包括处理器502和机器可读存储介质504。尽管以下描述涉及单个处理器和单个机器可读存储介质,但是描述也可以应用于具有多个处理器和多个机器可读存储介质的系统。在这样的示例中,指令可以分布(例如,存储)在多个机器可读存储介质上,并且指令可以跨多个处理器分发(例如,由其执行)。

处理器502可以是适于检索和执行存储在机器可读存储介质504中的指令的至少一个中央处理单元(cpu)、微处理器和/或其他硬件设备。在图5所示的示例中,处理器502可以获取、解码和执行指令508、508、510、512、514和516以执行文本加密。处理器502可以包括至少一个电子电路,其包括用于执行机器可读存储介质504中的指令中的至少一个的功能的多个电子部件。关于本文所描述和示出的可执行指令表示(例如,框),应当理解,包括在一个框内的可执行指令和/或电子电路的部分或全部可以被包括在图中所示的不同框中或未示出的不同框中。

机器可读存储介质504可以是存储可执行指令的任何电子、磁性、光学或其他物理存储设备。因此,机器可读存储介质504可以是例如随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、存储驱动器、光盘等。机器可读存储介质504可以被布置在系统500内,如图5所示。在这种情况下,可执行指令可以“安装”在系统500上。机器可读存储介质504可以是例如便携式的外部或远程存储介质,其允许系统500从便携式外部/远程存储介质504下载指令。在这种情况下,可执行指令可能是“安装包”的一部分。如本文所描述的,机器可读存储介质504可以被编码有用于上下文感知的数据备份的可执行指令。机器可读存储介质可以是非暂时性的。

参考图5,明文接收指令506当由处理器(例如,502)执行时,可以使系统500接收要被加密的明文。明文可以包括n个块,包括第一块、第二块块和第三块。初始值生成指令508当由处理器(例如502)执行时,可以使得系统500基于第一块和第二块来生成初始值。初始值生成指令508当由处理器(例如502)执行时,可以使得系统500在不使用初始值的情况下生成初始值。iv可以被设置为例如空字符串或值为零和/或任何其他固定值的二进制字符串。一方面,初始值生成指令508当由处理器(例如,502)执行时,可以使系统500使用第一块和加密密钥生成初步的第一密文,并且使用接收第二块和初步的第一密文作为输入的加密操作生成初步的第二密文。在一方面,初步值生成指令508当由处理器(例如,502)执行时,可以使系统500生成第一块和第二块的散列值。

第一密文生成指令510当由处理器(例如,502)执行时,可以使系统500利用接收第三块和初步值作为输入的加密操作使用加密密钥生成第一密文。第一密文生成指令510当由处理器(例如,502)执行时,可以使得系统500在不使用初始值的情况下产生第一密文。加密操作可以包括xor操作。

第二密文生成指令512当由处理器(例如,502)执行时,可以使得系统500利用接收第一块和第一密文作为输入的加密操作使用加密密钥生成第二密文。第二密文生成指令512当由处理器(例如,502)执行时,可以使得系统500在不使用初始值的情况下生成第二密文。递增指令514当由处理器(例如,502)执行时,可以使系统500使第二密文递增。第三密文生成指令516可以使系统500利用接收第二块和递增的第二密文作为输入的加密操作使用加密密钥生成第三密文。第三密文生成指令514当由处理器(例如502)执行时,可以使得系统500在不使用初始值的情况下生成第三密文。

前面的公开描述了用于文本加密的多个示例。公开的示例可以包括用于文本加密的系统、设备、计算机可读存储介质和方法。为了说明的目的,参照图1-5所示的组件来描述某些示例。然而,示出的组件的功能可能重叠,并且可以存在于更少或更多数量的元件和组件中。此外,所示元件的功能中的一部分或部分可以共存或分布在若干地理上分散的位置之间。此外,所公开的示例可以在各种环境中实现,并且不限于所示的示例。

此外,结合图1-5描述的操作顺序是示例,而不旨在是限制性的。可以使用或可以改变附加的或更少的操作或操作的组合,而不脱离所公开的示例的范围。此外,与所公开的示例一致的实现不需要以任何特定顺序执行操作序列。因此,本公开仅仅阐述了实现方式的可能的示例,并且可以对所描述的示例进行许多变化和修改。

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