用于链变换的方法和系统的制作方法

xiaoxiao2020-9-10  6

用于链变换的方法和系统的制作方法
【专利摘要】提供了用于安全数据保护的方法和系统。该方法和系统包括:进行对结构化数据的变换,该结构化数据包括用于执行应用的固定数据字段,该结构化数据具有n个片段,每一个片段具有m个比特,包括:随后对n个片段中的每一个进行编码以提供n个编码片段,包括:依赖于先前片段值,对(n-1)个片段中的每一个进行编码;并且改变对n个片段的n个编码中的至少一个,以使得以与第二结构化数据的固定数据字段不同的方式对第一结构化数据的固定数据字段进行编码,并且在用于执行应用的相同操作中进一步处理已变换的第一结构数据和已变换的第二结构数据。
【专利说明】用于链变换的方法和系统

【技术领域】
[0001]本发明涉及安全数据保护,更具体地涉及一种用于链变换的方法和系统。

【背景技术】
[0002]安全软件的实现往往依赖于变换以保护通过其进行处理的数据。所述变换在内部用在软件应用上,但也被应用到外部数据接口。这意味着其它应用需要使用正确的变换以从安全软件实现处发送和接收数据。软件变换通常假设是可逆函数,该可逆函数将数据转换到变换域。
[0003]假设安全软件应用在所谓的白盒攻击环境下操作。这意味着假设攻击者对安全软件应用的执行环境具有完全的控制权。这使攻击者能够观察和修改数据结构和指令序列。
[0004]数字版权管理(DRM)客户端是这种安全软件实现的示例。DRM客户端接收加密内容并且仅根据在与内容相关联的许可证中被编码的使用规则来解密该内容。许可还可以包括内容加密密钥(CEK)的加密版本,需要通过该加密版本来解密受保护的内容。DRM客户端中的许可处理被假设是安全的。
[0005]解密处理的输出需要由内容解码器进行进一步的处理。为了防止攻击者拦截对内容解码器的输入,变换一般被应用到内容解码器的输入端(的部分)。如果变换被应用到内容流,一些安全软件机制存在于内容解码器应用中。
[0006]各种各样的变换可用于编码程序变量。然而,如果该变换太复杂而不允许程序来使用编码数据进行计算,则该程序必须在进行计算之前移除该变换。这违背了变换的目的。通常,变换是很简单的,并且应用于程序数据的单独字节。例如,对于常数s和b简单的线性变换将字节X表示为sx+b,该线性变换允许程序执行特定计算而无需明确存储量X。
[0007]内容解码器的输入包含攻击者已知的字段。首部数据就是已知字段的示例。但简单的线性编码的问题在于,总是将固定字节(在块内的固定位置)编码为相同的值。例如,如果线性编码(sx+b)被应用到总是以两个固定字节(0x00,0x01)开头的数据块,则经编码的字节将会是(b,s+b)。攻击者开始并不知道我们的编码方法,而通过监视编码字节,可能最终计算出(sx+b)编码并学着读出每个块中数据的剩余部分。
[0008]需要一种用于变换的方法和系统,其避免固定字节的问题,同时保持变换足够简单以仍然能够计算编码数据,而不需要首先移除变换。


【发明内容】

[0009]本发明的目的是提供一种方法和系统,用于消除或缓解现有系统存在的至少一个缺点。
[0010]根据本公开的一个方面,提供了一种用于安全数据保护的方法,该方法包括:对结构化数据进行变换,该结构化数据包括用于执行应用的固定数据字段,该结构化数据具有η个片段,每一个片段具有m个比特,包括:随后对η个片段中的每一个进行编码以提供η个编码片段,包括:依赖于先前片段值,对(η-1)个片段中的每一个进行编码;并且改变对η个片段的η个编码中的至少一个,以使得以与第二结构化数据的固定数据字段不同的方式对第一结构化数据的固定数据字段进行编码,并且在用于执行应用的相同操作中进一步处理已变换的第一结构化数据和已变换的第二结构化数据。
[0011]根据本公开的另一方面,提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令在被执行时使具有处理器的系统执行上述方法。
[0012]根据本公开的另一方面,提供了一种用于安全数据保护的系统,该系统包括:处理器;至少一个计算机可读存储介质,该介质中存储可由处理器转化以执行所述方法的至少一种的计算机指令。

【专利附图】

【附图说明】
[0013]参考附图,从下面的描述中将使本发明这些和其他特征变得更加明显,其中:
[0014]图1在示意图中示出了链接变换模块的示例;
[0015]图2在流程图中示出了通过链接变换来变换未编码数据的过程的示例;
[0016]图3在示意图中示出了链接变换模块的另一个示例;
[0017]图4在流程图中示出了由图3中示出的通过链接变换来变换未编码数据的过程的示例;
[0018]图5在流程图中示出了链接变换应用的示例;
[0019]图6在流程图中示出了链接变换应用的另一示例;
[0020]图7在示意图中示出了链接变换的另一示例;
[0021]图8在不意图中不出了用于最后AES步骤的最后一组表以及图7的链接变换;
[0022]图9在示意图中示出了子AES操作的示例;
[0023]图10在示意图中示出了具有图9所示的子AES操作的图8所示的最后一组表的示例;
[0024]图11在流程图中示出了一种用于图10的操作的选择编码的示例;
[0025]图12在示意图中示出了链接变换应用的示例;以及
[0026]图13在示意图中示出了链接变换应用的另一示例。

【具体实施方式】
[0027]本公开的实施例提供了一种链接变换的方法和系统,该方法和系统用于变换具有一个或多个固定数据字段的结构化数据,使得不总是将固定数据字段被编码为相同值,并且仍然可以计算或变换该变换后的数据,而无需为执行数据的应用移除该链接变换。固定字段位于固定位置,该固定位置可能被攻击者所知。固定字段的一个示例是首部信息。例如,结构化数据可以是,但不限于,视频流或RSA私有密钥。例如,使用链接变换来处理结构化数据的应用包括编码和加载动态RSA密钥的视频流。
[0028]参照图1和图2,示出了用于结构化数据的链接变换的示例。链接变换10变换未编码的输入,以使得对未编码数据的特定片段的编码依赖于未编码数据的先前片段的编码值。如果当前片段之前的任何片段发生变化,则对当前片段的编码将会不同。这里的每一个片段具有m比特(m>0)。在该示例中,片段是具有8比特的字节,并且链接变换10逐字节地执行编码。头两个字节可以一直固定。
[0029]在图1和2中所示的链接变换10包括异或和编码步骤。未编码输入12被分成η个片段(或块)U[i] (i = 1,2, η) (102)。输入12是被结构化的需要编码的任何数据,例如,该数据可以包括,但不限于,视频内容,RSA私有密钥。在图1中,显示三个片段U[l],U[2]和U[3] (η = 3)仅用于说明。将第一未编码片段U[l]与初始化向量进行异或X0R[1]
(104)。初始化向量是一组随机的m比特。然后,X0R[1]的输出由E[l]进行编码(106),这提供了编码的输出字节C[l]。在这点上k= I。计数器k递增(108)。将每一个未编码片段U[k]与编码E[K-1]的结果进行异或X0R[K](110)。E[K]对异或X0R[K]的输出进行编码(112),这提供了编码的输出字节C[K]。如果k小于n(114)(即,最后一个片段没有进行异或及编码),计数器k被递增(108),并且接着为下一个片段执行异或及编码(110,112)。编码E [K]是双射。
[0030]在该示例中,初始化向量是字节值,该字节值被包括在作为初始的“先前编码字节,的输出的起始部分。初始化向量将编码变为第二片段。由于初始化向量,第一编码字节将不再是特例(即,第一个字节不具有单个固定编码)。任何时候,子字段,比如字节4至8 (η = 8),被读取时,字节4至8可通过读取编码的字节3至8来计算。
[0031]参见图3和4,示出了用于结构化数据的链接变换的另一示例。链接变换20将未编码的输入12分成η片段U[l],U[2] ,U[η] (122),并且然后改变了 η个片段的次序(124),以提供片段U’ [I],...U,[η]。第一未编码片段U,[I]与初始化向量相异或X0R[1] (126)。X0R[1]的输出由E[l]进行编码(128),这提供编码的输出C’ [I]。在这个点上k= I。计数器k递增(130)。将每一个未编码片段U’ [k]与编码E[K-1]的结果进行异或X0R[K]
(132)。E[K]对异或X0R[K]的输出进行编码(134),这提供了编码的输出C’ [K]。如果k小于η (即,最后一个片段没有进行异或及编码)(136),计数器k被递增(130),并且接着为下一个片段执行异或及编码(132,134)。
[0032]在一个非限制性的例子中,最后片段U[n]作为第一片段U’ [I]与一组随机的m比特相异或。在另一个非限制性的例子中,如图3所示,以相反的次序来链接未编码的片段(即,U[l]—U' [n],U[2]—U' [n-1],…,U[n] — U' [I])。在这里,首先计算最后的输出字节,然后所计算的输出字节被链接到倒数第二个字节,诸如此类。
[0033]本领域普通技术人员应当理解,只要它对用于解码经编码输出的接收方来说是已知的,任何排序都是可能的。用于改变次序的方法不限于图3-4所示的那些。在每次或多次执行链接字节时都可以改变该次序。
[0034]在图3-4中,将初始化向量和链接次序的改变相组合来改变编码。本领域普通技术人员应当理解,链接变换可以在没有初始化向量的情况下通过改变链接次序来实现编码,以使得在不进行异或的情况下对输入的第一片段U' [I]进行编码E[l]。
[0035]本领域普通技术人员应当理解,未编码的输入可以被划分成两个或三个以上字节片段,并且片段数量η是可以变化的。链接变换模块10和20可以包括两个或三个以上的编码及异或。链接变换模块10和20可包括图1和图3中未示出的组件,比如存储器。每一个编码E [K]可以不同。
[0036]但是对于安全数据保护,模式,比如计数器模式(CM),这是不太理想的,因为字节的编码仅仅依赖于字节的值以及它的位置。这意味着,总是以相同的方式编码该字节,并且从而攻击者能够通过多个块检测固定字段。与此相比,链接变换使用初始化向量,将输出字节以不同的次序链接在一起,或者它们的组合。因此,第一个编码字节将不再具有单个固定编码。第一个字节将不总是给出相同的输出值,并且因此在第二个字节的编码选择上不会总是给出相同的影响。
[0037]参照图5,在一个非限制性的例子中,在发送器中实现图1-4中所示的链接变换(142),并将编码的输出与初始化向量一起传输至接收方(144)。接收方解码其输入(146)。此处,结构化数据通过链接变换进行变换并被发送到接收方,这防止攻击者拦截到解码器的输入。在每次或多次执行时,初始化向量都可以被改变,或者在随机时间改变。
[0038]参见图6,在一个非限制性的例子中,发送方和接收方共享初始化向量和/或链接的次序(152)。在发送方处实施链接变换(154),并且将编码的输出传输到接收方(156)。接收方解码该编码的输出(158)。此处,结构化数据通过链接变换进行变换并被发送到接收方,这防止攻击者拦截到解码器的输入。在这种情况下,如图3-4所示,可以以不同的次序链接未编码的字节,以防止攻击者获取解码的线索。例如,尽管每次执行时,所隐含的初始化向量可以是固定的,链接变换能够例如首先处理最后一个字节,然后例如,再将其链接到倒数第二个字节,等等。如果数据的最后一个字节趋向于具有良好的可变性,这将很好地工作。处理所述字节的任何其他固定的次序也是可能的。
[0039]参见图7,对链接变换的另一个示例进行详细说明。在图7中,编码的输出字节的z比特改变下一个未编码字节的编码。这里,来自编码E' [k]的编码输出字节Cx[k]的z比特被用于选择不同编码之一 E' [k+Ι],并且E' [k+ΙΙ]被用于编码下一个未编码字节。在一个示例中,图1和3的异或操作被2~z不同编码的z比特查找所替换,如下文所述。
[0040]参照图8描述图7中所示的链接变换的一个示例。在图8中,链接变换与另一变换复合以形成复合变换。在这个例子中,与链接变换组合的变换是与高级加密标准(AES)操作共同实现的输出编码。
[0041]图8中不意性不出了具有链接变换的AES操作的最后一组表。最后一组表的第(i+1)个表190[i+l]将AES子操作192 [i+1]和编码输出194 [i+Ι]相组合。依赖于第i个编码输出字节198[i]的z比特或初始化向量(即,i = I),选取用于编码来自AES操作的输出未编码字节196 [i+Ι]的编码194 [i+Ι]。表190 [i+Ι]采用额外z比特,该额外z比特确定如何对下一个输出字节进行编码。表的大小按照因子2~z增加。如果最后的一组表采用了额外的输入字节(先前的编码字节或初始化向量),表的大小将会增大到256倍。因此具有z比特选择的表的大小要小于字节选择的表的大小。在一个示例中,z比特可以变化从而调整表的大小。
[0042]产生第一个编码输出字节的AES表是不变的。在一个非限制性示例中,最后一组表中的第一个表可以将初始化向量作为一组z比特。在另一个例子中,最后一组表中的第一个表可以在没有初始化向量的情况下具有单一编码。
[0043]图9示出了在没有输出编码的情况下AES子操作的示例。用于AES操作的最后一组表的第i个表200 [i]的输入INa [i]具有某一变换T [i]。在这里,第i个表200 [i]组合如下操作序列:应用T[i]的逆(图9中的202[i]);与第9个AES轮密钥的字节i相异或(图9中的204[i]) ;在AES S-box (置换盒)中进行查找(图9中的206[i]);以及,与第10个AES轮密钥的字节i相异或(图9中的208[i]),这从而提供了未编码输出字节210[i]。
[0044]图10示出了与AES子操作相结合的链接变换的示例。用于AES操作的最后一组表的第i个表220 [i]的输入INb [i]具有某一变换T[i]。最后一组表220 [i] (i = 1,2,…,16)组合如下操作序列:应用T[i]的逆(图10中的222[i]);与第9个AES轮密钥的字节i相异或(图10中的224 [i]) ;在AES S_box中进行查找(图10中的226 [i]);与第10个AES轮密钥的字节i相异或(图10中的228 [i]);以及对来自228 [i]的未编码输出字节232[i]进行编码230[i]。表220[i+l]采用编码输出字节234[i]的z比特来确定如何编码230[i]未编码输出字节232[i+1]。
[0045]参见图11,选择用于链接的比特的数量“z”来改变编码(260)。例如,z = 2。接着确定从每一个编码输出字节中选择哪z个比特用于链接(262)。在一个示例中,将从每一个编码输出字节中选择底部2个比特(z = 2 )。基于数量z,选择2~z ( = y)个编码e(l),e(y) (264)。在一个示例中,选择4( = 2~2)个编码(eO,el, e2, e3)。所有的后续表采用来自先前编码输出字节的输入中的额外2比特,以通过基于已选择的2个比特选择e0,el,e2,e3中的一个来确定如何对来自AES操作的未编码输出字节进行编码。在该示例中,z =2作为编码数量和用于基于AES的实现的增加的表大小之间的权衡。本领域普通技术人员应当理解,z并不局限于“2”,而可以是任何数量。
[0046]这四个编码对于所有16个字节可以是相同的,或者对于每个字节可以是不相同的。例如,所选编码是可以随机选择的双射。将在数据处理的最后阶段(例如,在接收方显示视频时)实施逆双射以移除双射。
[0047]如果在以后处理中存在限制,这些编码可以是在GF(2~8)级联的4比特任意双射上线性或者仿射映射,或者这两者的合成。其他的可能性也同样存在。
[0048]该链接变换可以通过改变未编码字节的次序来实现。用于选择编码的字节的链接可以采用任何次序(例如,以相反的次序)。
[0049]上述链接变换适用于遮掩安全模块之间的数据流,所述安全模块中包含结构化数据,比如由数字版权管理(DRM)客户端和内容解码器处理的编码内容。在US7,350,085,US6, 594, 761, US6,842,862,以及US7,966,499中公开了包含结构化数据的安全模块之间的数据流的示例,在此通过参考来引入。可以通过在US7,350,085,US6, 594, 761,US6, 842,862,以及US7966499中被公开的操作来进一步计算经过链接变换的数据。
[0050]在一个非限制性的例子中,如图12中所示,链接变换可被用于保护将从发送方传输到接收方的压缩视频,从而防止压缩视频被捕获。在这里,链接变换被用于保护压缩视频。在受保护的环境中,在服务器500中对该视频进行AES加密和压缩处理(502),并且在暴露的环境中将该视频发送到客户端510。在客户端510,通过AES解密、利用链接变换来变换其输入(512),这将防止攻击者拦截解密结果。将经链接变换的解密的输出提供给解码器,在该解码器处,客户端510实现了移除链接变换和解压缩的结合(514),使得视频被显示(516)。
[0051]在另一个非限制性示例中,如图13所示,链接变换可被用于动态RSA密钥加载,此处在白盒RSA中实现中更新RSA私有密钥。此处,链接变换被用于在白盒受保护的RSA实现中更新RSA私有密钥。在受保护的环境530中,创建了新的RSA私有密钥(532)和AES加密(534)。在暴露的环境540中,通过AES解密、利用链接变换来变换经加密的RSA私有密钥(542),这防止攻击者拦截解密结果。然后,系统将实施以下二者的结合:移除链接变换和将RSA私有密钥转换为实现的内部形式(544)。提供了 RSA私有密钥(546)。
[0052]在图12和13的两种情况下,上述链接变换可以作为CBC模式中AES解密的输出编码选择之一来添加。
[0053]本领域普通技术人应当理解,图12-13中服务器500和受保护的环境530中的每一个具有用于实现链接变换和/或链接变换的变体的处理器,以及存储用于实现这些变换的指令的存储器。本领域普通技术人应当理解,图12-13中客户端510和暴露环境540中的每一个具有用于执行反向(解码)链接变换和/或链接变换的变体的处理器,以及存储用于实现这些变换的指令的存储器。
[0054]本文描述的实施例可包括在附图中未示出的一个或多个元件或部件。实施例可仅以示例的方式描述为特定拓扑结构中有限数量的元件。每个元件可包括执行某些操作的结构。每个元件可被实现为硬件、软件或它们的任意组合。数据结构和软件代码,其整体地或其部分地被存储在计算机可读介质中,所述计算机可读介质可以是由计算机系统使用的存储代码和/或数据的任何设备或介质。此外,可以通过通信网络传输代表可被嵌入载波中的软件代码的计算机数据信号。
[0055]已通过举例的方式对一个或多个当前优选的实施例进行了描述。可以作出许多变化和修改,而不脱离权利要求中限定的范围,这对本领域技术人员而言是显而易见的。
【权利要求】
1.一种用于安全数据保护的方法,包括: 进行对结构化数据的变换,该结构化数据包括用于执行应用的固定数据字段,该结构化数据具有η个片段,每一个片段具有m个比特,包括: 随后对η个片段中的每一个进行编码以提供η个编码片段,包括: 依赖于先前片段值,对(η-1)个片段中的每一个进行编码;并且 改变对η个片段的η个编码中的至少一个,以使得以与第二结构化数据的固定数据字段不同的方式对第一结构化数据的固定数据字段进行编码,并且在用于执行应用的相同操作中进一步处理已变换的第一结构数据和已变换的第二结构数据。
2.根据权利要求1所述的方法,其中改变η个编码中的至少一个包括:基于第一片段和初始化向量的组合,改变到结构化数据的第一片段的第一编码的输入。
3.根据权利要求2所述的方法,其中改变输入包括:将结构化数据的第一片段与初始化向量进行异或以提供输入。
4.根据权利要求3所述的方法,其特征在于,对(η-1)个片段中的每一个进行编码包括:对第k个片段与第(k-Ι)个编码片段异或所得到的输出进行编码。
5.根据权利要求1所述的方法,其中改变η个编码中的至少一个包括:改变η个片段的次序,以使得在(η-1)个片段的至少一个被编码后,对结构化数据的第一片段进行编码。
6.根据权利要求5所述的方法,其中改变包括:以相反的次序链接η个片段,以使得首先对结构数据的最后片段进行编码。
7.根据权利要求1所述的方法,其中改变η个编码中的至少一个包括:基于先前编码片段的部分,选择对(η-1)个片段的(η-1)个编码中的每一个。
8.根据权利要求7所述的方法,其中每个片段是字节,并且其中选择包括:基于先前编码字节(8 > ζ > I)的ζ比特,选择对(η-1)个字节的(η-1)个编码中的每一个。
9.根据权利要求1所述的方法,其中片段由字节构成,并且逐字节地对每个字节进行编码。
10.根据权利要求1所述的方法,其中固定数据字段是结构化数据的首部。
11.根据权利要求10所述的方法,其中结构化数据包括视频流和/或RSA私有密钥。
12.根据权利要求1所述的方法,其中通过执行AES加密结合变换来对结构化数据进行变换。
13.根据权利要求12所述的方法,包括:对经变换的结构数据进行解码。
14.根据权利要求12所述的方法,其中片段是字节,并且包括:建立具有8比特查找的表,用于对结构化数据执行AES操作,以及ζ比特查找,用于选择2λζ不同的编码。
15.根据权利要求1所述的方法,包括:通过变换来解密结构化数据。
16.一种计算机可读存储介质,用于存储计算机指令,所述计算机指令在被执行时使具有处理器的系统能够执行根据权利要求1的方法。
17.一种用于安全数据保护的系统,该系统包括:处理器;至少一个计算机可读存储介质,该介质存储可由处理器转化以执行根据权利要求1所述的方法的计算机指令。
【文档编号】H04L9/18GK104335522SQ201280071647
【公开日】2015年2月4日 申请日期:2012年3月21日 优先权日:2012年3月21日
【发明者】M·维纳, P·埃森 申请人:爱迪德加拿大公司

最新回复(0)