CN1977250A - 进行加密或解密的计算机系统和计算机程序 - Google Patents

进行加密或解密的计算机系统和计算机程序 Download PDF

Info

Publication number
CN1977250A
CN1977250A CNA2005800213863A CN200580021386A CN1977250A CN 1977250 A CN1977250 A CN 1977250A CN A2005800213863 A CNA2005800213863 A CN A2005800213863A CN 200580021386 A CN200580021386 A CN 200580021386A CN 1977250 A CN1977250 A CN 1977250A
Authority
CN
China
Prior art keywords
data
transform data
map table
value
box
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
CNA2005800213863A
Other languages
English (en)
Other versions
CN100416519C (zh
Inventor
野仲真佐男
横田薰
大森基司
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1977250A publication Critical patent/CN1977250A/zh
Application granted granted Critical
Publication of CN100416519C publication Critical patent/CN100416519C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/005Countermeasures against attacks on cryptographic mechanisms for timing attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

提供一种对观测处理时间的定时攻击具有抗力的计算机系统。计算机系统通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密。变换表在行表区域的开头位置,包含对应于部分数据的一个变换数据,在另外的位置,包含与所述变换无关的数据。计算机程序包括:使用所取得的部分数据来算出对应的所述变换数据在所述变换表中的位置的运算命令组;和从所述变换表中读出在所算出的所述位置上存在的所述变换数据的读出命令组。

Description

进行加密或解密的计算机系统和计算机程序
技术领域
本发明涉及秘密处理信息的加密和解密技术。
背景技术
随着经由以ADSL(Asymmetric Digital Subscriber Line:非对称数字用户线路)或光纤等为代表的高速通信线路,来提供数字化后的音乐或影像等内容的业务的普及,需要防止这些内容的不正当复制等的内容的不正当使用。
一般,在防止内容的不正当使用的著作权保护方式中,使用加密技术。例如使用加密密钥来加密数字内容并经通信线路来发送,只有被提供了对应于该加密密钥的解密密钥的用户才可以解密所加密的内容,而进行原始数据内容的再现。
另一方面,随着个人计算机的普及,数字内容在计算机上进行再现的情况变得很多。著作权保护方式所需的加密处理作为个人计算机上的加密程序来提供,解密所加密的内容时所用的解密密钥也预先嵌入到该加密程序的内部的情况很多。
但是,最近提出了在计算机上在加密程序的执行中,利用执行环境、即、计算机中泄漏出的副信息,例如处理时间或耗电量等,来取得在加密程序内部秘密存储的秘密信息,例如解密密钥的旁信道(side channel)攻击。
根据非专利文献1和非专利文献2,作为这种攻击方法的一例,有着眼于内置在计算机中的、目的是用于处理的高速化的高速缓存器的定时攻击(timing attack)。这里,所谓高速缓存器(参照非专利文献3),是指运算部例如CPU一次将从主存储器取得数据存储到可进行高速存取的高速缓存器上,在第二次之后存取同一数据的情况下,从可进行高速存取的高速缓存器中取得数据,从而实现处理速度的高速化。
上述的定时攻击着眼于从高速缓存器中取得数据的情况下和从主存储器中取得的情况下的处理时间差,来成功确定秘密信息。
该定时攻击对装载了高速缓存器的CPU上执行的加密程序有效,尤其是将作为使用了表参照运算(一般上称作SBOX的参照)的重复型的作为块加密方式的AES(Advanced Encryption Standard:高级加密标准)方式(记载在非专利文献4中)或DES(Data EncryptionStandard:数据加密标准)方式等作为攻击的对象。作为可适用本定时攻击的执行环境,是例如一般的个人计算机(PC/AT互换机等)或具有高速缓存器的智能卡等。
下面,说明定时攻击的概要。
AES中,对输入数据和密钥(扩展密钥)来实施异或逻辑运算,并使用该运算结果,进行上述的表参照运算。另外,作为前提,在开始加密处理之前,设在高速缓存器中并未存储在该加密处理的表参照运算中使用的表数据阵列(SBOX)。在这种前提下,在加密处理中间的表参照运算中,依赖于输入数据和密钥来唯一决定是从高速缓存器中取得表要素、还是从主存储器中取得表要素。
这意味着,在假定了参照某个固定的表要素的表参照运算的情况下,有通过使输入数据的值变化,从高速缓存器中取得表要素的情况、和从主存储器中取得表要素的情况这两种情形。即,意味着通过使输入数据变化,整体的加密处理时间变化。
因此,在定时攻击中,测量整体的加密处理时间,并以测量所得到的处理时间为基础,推测在处理中的某个表参照运算中,是从高速缓存器中取得表要素,还是从主存储器中取得表要素,并以该推测以及输入数据为基础,来分析密钥(扩展密钥)。
这种定时攻击主要有两个方法。一种是如非专利文献1所记载的,测量每一个块(AES方式的情况下128比特)的加密处理时间。另一种是如非专利文献2所记载的,测量每两个块(AES方式的情况下是128比特×2)的加密处理时间。下面,说明非专利文献1和非专利文献2所记载的定时攻击各自的概要。
非专利文献1所记载的定时攻击的是,在两次存取同一表要素的情况下,由于第二次从高速缓存器中取得表要素,所以处理时间变短的情况。非专利文献1所记载的定时攻击的大致流程如下这样。
首先,每进行一个块加密时,清除高速缓存器的内容。然后,着眼于某2个表参照运算,将影响该两个表参照运算的输入值的密钥信息假定为某个值。并且,在该假定下选择使两个表参照运算的输入值相同的输入数据,来测量其处理时间。对于所考虑的所有的密钥信息的值来执行上述情况。最终,将处理时间最短的密钥作为正确的密钥输出。之后,着眼于另外两个表参照运算,同样推定密钥。
另一方面,非专利文献2所记载的定时攻击使用的是通过主存储器上的加密程序内的表要素的一次存取,从主存储器将多个表要素一齐复制到高速缓存器的特征。非专利文献2所记载的定时攻击的大致流程如下。
首先,每进行2个块加密时,清除高速缓存器的内容。然后,着眼于某一个表参照运算,将对其中一个表参照运算的输入值有影响的密钥信息假定为某个值。并且,在第一块所着眼的表参照运算中,对于从主存储器向高速缓存器复制的多个表要素,选择在第二块中参照(其中,除第一块的表参照运算的输入值之外)的输入数据,并测量其处理时间。对于所考虑的所有的密钥信息的值来执行上述情况。最终,将处理时间最短的密钥作为正确的密钥输出。之后,着眼于另一个表参照运算,来同样推定密钥。
如上述中所说明的,测量处理时间的定时攻击由依赖于输入数据、一个块或两个块的加密处理的时间不同而引起。因此,作为对定时攻击的对策,有即使输入数据变化、一个块或两个块的加密处理的处理时间也不变化而为一定的方法。作为这种对策方法,有在非专利文献5的第4.2节所记载的现有技术。说明该现有技术的概要。这里,作为加密处理的具体的使用例,举AES方式的加密处理。
通过非专利文献5所公开的现有技术的特征为:在执行实际的AES方式的加密处理之前,通过一一存取在AES方式的SubBytes处理中所用的表参照运算的表数据阵列的表要素,来追加不依赖于输入数据的处理(非专利文献5中称作Cache Warming:高速缓存警告)。由此,在开始实际的AES方式的加密处理之前,可以将AES方式的SubBytes处理的表参照运算中所用的所有的表要素存储到高速缓存器中,结果,在AES方式的加密处理的SubBytes处理的表参照运算中,变为可以全部从高速缓存器中取得表要素。由此,不会依赖于输入消息,整体的处理时间不变化,而变为处理时间通常一定。即,可以提高对测量处理时间的定时攻击的抗力。
另外,专利文献1的目的是提供具有对于高速缓存攻击型密码分析法的防御功能的加密装置,公开了使一个明文或一个密文的加密处理或解密处理中的对变换表存取时的高速缓存未命中(cache misshit)次数对任意的明文或密文大致均匀的手段。
非专利文献1:Y.Tsunoo,E.Tsujihara,K.Minematsu,H.Miyauchi,“Cryptanalysis of Block Ciphers Implemented on Computerswith Cache”International Symposium on Information Theory and ItsApplications(ISITA),October 2002
非专利文献2:鶴丸豊広等“64ビツトブロツク暗号に対するタイミング攻撃”(对64比特块加密的定时攻击)The 2003Symposium on Cryptgraphy and Information Security(SCIS2003),2003
非专利文献3:デイビツド·A·パタ一ソン、ジヨン·L·ヘネシ一,“コンピユ一タの構成と設計”(计算机的结构和设计),ISBN4-8222-8056-X,日経BP社 出版
非专利文献4:Federal Information Processing Standard(FIPS)Publication 197,November 26,2001.
非专利文献5:D.Page,“Defending against cache-basedside-channel attacks”Information Security Technical Report,Vol.8,No.1,Page30-44,2003
专利文献1:日本特开2004-120307号公报
但是,如上所述,对于观测处理时间的定时攻击的研究发展,还进一步希望其他防御手段的开发。
发明内容
本发明根据上述希望,其目的是提供一种具有对于观测处理时间的定时攻击的抗力的计算机系统、方法和计算机程序。
为了实现上述目的,本发明为一种计算机系统,通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,所述计算机系统包括:主存储部,存储变换表和计算机程序,该变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述变换表来取得对应于部分数据的变换数据的多个命令;高速缓存部,包含规定长度的行存储区域;和执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;所述执行部在取得所述变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;所述变换表具有所述规定长度的行表区域,在所述行表区域的规定位置,包含对应于部分数据的一个变换数据,在所述行表区域的另外的位置,包含与所述变换无关的数据;所述计算机程序包含:取得命令组,取得部分数据;运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据。
发明的效果
根据上述结构,由于在高速缓存部的行存储区域中包含一个变换数据,所以即使输入消息变化,加密或解密处理的处理时间也一定,所以对于观测处理时间的定时攻击的抗力提高。
这里,也可以是,所述变换表在依赖于所述部分数据具有的值的位置,包含所述变换数据;所述运算命令组通过对所取得的部分数据实施运算,来算出对应的所述变换数据在所述变换表中的位置。另外,也可以是,所述规定长度是所述变换数据的长度的w倍,w为整数;所述行表区域在所述规定位置包含所述变换数据,在其他的所有位置包含与所述变换无关的数据;所述运算命令组使用基于整数w的乘法,算出对应的所述变换数据在所述变换表中的位置。另外,也可以是,所述规定位置是所述行表区域的开头位置;所述运算命令组通过对所取得的部分数据乘以整数w,来算出对应的所述变换数据在所述变换表中的位置。
根据这些结构,可以通过简单的运算,来确定对应于部分数据的变换数据的位置
这里,也可以是,所述行表区域在所述规定位置包含所述变换数据;并且,在另外的规定位置包含对应于另外的部分数据的另外的变换数据;在其他的所有位置包含与所述变换无关的数据。另外,也可以是,所述规定长度是所述变换数据的长度的w倍,w为整数;所述规定位置是所述行表区域的开头位置;所述另外的规定位置是二等分所述行表区域后的后半区域的开头位置;所述运算命令组通过对所取得的部分数据乘以整数w/2,来算出对应的所述变换数据在所述变换表中的位置。另外,也可以是,所述规定长度是所述变换数据的长度的w倍,w为整数;所述规定位置是从所述行表区域的开头起第x个位置,x为整数;所述另外的规定位置是二等分所述行表区域后从后半区域的开头起第x个位置,x为整数;所述运算命令组通过对所取得的部分数据乘以整数w/2,并且相加整数x,来算出对应的所述变换数据在所述变换表中的位置。
根据这些结构,由于在高速缓存部的行存储区域上包含一个以上的变换数据,所以可以将对于观测处理时间的定时攻击的抗力保持为一定的程度,同时更加减小高速缓存部的容量。
这里,也可以是,计算机系统,通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,所述计算机系统包括:主存储部,存储变换表和计算机程序,该变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述变换表来取得对应于部分数据的变换数据的多个命令;高速缓存部,包含规定长度的行存储区域;和执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;所述执行部在取得所述变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;所述变换表具有所述规定长度的行表区域,在所述行表区域的规定位置,包含对应于部分数据的一个变换数据;所述计算机程序包含:取得命令组,取得部分数据;运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据;所述规定位置是对所述部分数据实施规定运算而得到的位置;所述运算命令组对所述部分数据实施所述规定运算而算出对应的所述变换数据在所述变换表中的位置。另外,也可以是,所述规定运算是mod z下的所述部分数据与奇数的相乘;z是部分数据可取的值的种类数目。
根据这些结构,由于可以在变换表中随机配置变换数据,所以只要规定的运算不泄漏,就可保证对攻击的抗力。
这里,也可以是,计算机系统,通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,所述计算机系统包括:主存储部,存储第一变换表、第二变换表、和计算机程序,该第一变换表包含对应于部分数据的变换数据,该第二变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述第一变换表和所述第二变换表来取得对应于部分数据的变换数据的多个命令;高速缓存部,包含规定长度的行存储区域;和执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;所述执行部在取得所述第一变换表和所述第二变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;所述第一变换表和所述第二变换表分别具有所述规定长度的行表区域,在各行表区域的规定位置,包含对应于部分数据的一个变换数据;所述计算机程序包含:取得命令组,取得部分数据;运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据;所述第一变换表中的所述规定位置是对所述部分数据实施第一运算而得到的位置;所述第二变换表中的所述规定位置是对所述部分数据实施第二运算而得到的位置;所述运算命令组包含:决定命令,在每次变换时,决定使用所述第一变换表和所述第二变换表的哪一个;和算出命令,对所述部分数据实施对应于所决定的变换表的所述第一运算或所述第二运算,算出所述变换数据在所决定的所述变换表中的位置。另外,也可以是,所述第一运算是mod z下的所述部分数据与第一奇数的相乘;所述第二运算是mod z下的所述部分数据与第二奇数的相乘;z是部分数据可取的值的种类数目;所述决定命令产生随机数,并通过所产生的随机数,来决定使用哪一个变换表。
根据这些结构,由于每次变换时使用的变换表被替换,所以可以保持对攻击的抗力。
附图说明
图1是表示作为本发明的第一实施方式的内容分配系统10的结构的结构图;
图2是表示内容服务器装置100的结构框图;
图3是说明内容加密程序132的内容的流程图;
图4是表示AES加密程序133的结构的结构图;
图5是表示标准S盒380的数据结构的结构图;
图6是表示变形S盒511的数据结构的结构图;
图7是说明加密主模块501的内容的流程图;
图8是说明Round处理模块503的内容的流程图;
图9是说明SubBytes处理模块505的内容的流程图;
图10是说明FinalRound处理模块504的内容的流程图;
图11是表示微处理器101的结构框图;
图12表示在数据部175的高速缓存行部181~187上存储了变形S盒511的内容的情况下的一例;
图13是表示微处理器101的动作的流程图;
图14是表示基于AES加密程序133的加密的动作的数据处理图;
图15是表示各Round处理或FinalRound处理的动作中的AddRoundKey处理和SubBytes处理的详细动作的数据处理图;
图16是表示个人计算机200的结构框图;
图17是说明内容解密程序232和再现程序233的内容的流程图;
图18是说明AES解密程序234的内容的流程图;
图19是表示标准反变换S盒800的数据结构的结构图;
图20是表示反变换变形S盒611的数据结构的结构图;
图21是说明解密主模块601的内容的流程图;
图22是说明InvRound处理模块603的内容的流程图;
图23是说明InvSubBytes处理模块605的内容的流程图;
图24是说明InvFinalRound处理模块604的内容的流程图;
图25表示在数据部的各高速缓存行部上存储了反变换变形S盒611的内容的情况下的一例;
图26是表示基于AES解密程序234的解密的动作的数据处理图;
图27是表示InvSubBytes处理和AddRoundKey处理的详细的动作的数据处理图;
图28是表示变形S盒911的数据结构的结构图;
图29是表示基于SubBytes处理模块505a的SubBytes处理中的一个左移位处理902和一个参照处理903的动作的数据处理图;
图30表示在数据部175的高速缓存行部181、182、...上存储了变形S盒911的内容的情况下的一例;
图31是表示变形S盒1011的数据结构的结构图;
图32是表示在基于SubBytes处理模块505b的SubBytes处理中,一个左移位处理1002、一个加法处理1003和一个参照处理1004的动作的数据处理图;
图33表示在数据部175的高速缓存行部181、182、...上存储了变形S盒1011的内容的情况下的一例;
图34是表示变形S盒1121的数据结构的结构图;
图35是表示作为整数的256个输入值A(0、1、2、...、255)和计算结果A×177mod 256之间的对应关系的对应表;
图36是表示在基于SubBytes处理模块505c的SubBytes处理中,一个乘法处理1102和一个参照处理1103的动作的数据处理图;
图37表示在数据部175的高速缓存行部181、182、...上存储了变形S盒1121的内容的情况下的一例;
图38是表示变形S盒1221的数据结构的结构图;
图39是表示在基于SubBytes处理模块505d的SubBytes处理中,一个乘法处理1202、一个移位处理1203和一个参照处理1204的动作的数据处理图;
图40表示在数据部175的高速缓存行部181、182、...上存储了变形S盒1221的内容的情况下的一例;
图41是表示变形S盒1311的数据结构的结构图;
图42是表示在基于SubBytes处理模块505e的SubBytes处理中,一个乘法处理1302、一个移位处理1303、一个加法处理1304和一个参照处理1305的动作的数据处理图;
图43表示在数据部175的高速缓存行部181、182、...上存储了变形S盒1221的内容的情况下的一例;
图44是表示变形S盒1421的数据结构的结构图;
图45是表示变形S盒1441的数据结构的结构图;
图46是表示作为整数的256个的输入值B(0、1、2、...、255)及其计算结果B×77mod 256之间的对应关系的对应表;
图47是表示在基于SubBytes处理模块505f的SubBytes处理中,一个随机数生成处理1402、一个随机数判断处理1403、“一个mod256下的与177的乘法处理1406和一个变形S盒1421的参照处理1407”、“一个mod 256下的与77的乘法处理1408和一个变形S盒1441的参照处理1409”构成的组1401的动作的数据处理图;
图48表示在数据部175的高速缓存行部181、182、...上存储了变形S盒1421的内容的情况下的一例;
图49表示在数据部175的高速缓存行部181、182、...上存储了变形S盒1441的内容的情况下的一例;
图50是说明SubBytes处理模块1501的内容的流程图。
具体实施方式
1.内容分配系统10
说明作为本发明的一个实施方式的内容分配(contentdistribution)系统10。
1.1内容分配系统10的结构
内容分配系统10如图1所示,由内容服务器装置100、分配服务器装置30a、发送装置30b、BD制造装置30c、个人计算机200、数字广播接收装置200a和BD再现装置200b构成。
内容服务器装置100存储由影像数据和声音数据构成的电影的内容,并根据来自分配服务器装置30a的请求,加密所存储的内容来生成加密内容,并将所生成的加密内容发送到经专用线路21连接的分配服务器30a。分配服务器装置30a接收加密内容,并将加密内容发送到经互联网20相连的个人计算机200。个人计算机200接收加密内容,解密所接收的加密内容而生成解密内容,再现所生成的解密内容而输出影像和声音。
另外,内容服务器装置100与上述相同,根据来自广播装置30b的请求,生成加密内容,并将所生成的加密内容发送到经专用线路22相连的广播装置30b。广播装置30b接收加密内容,并将所接收的加密内容载波到广播波上来广播,数字广播接收装置200a接收广播波,从所接收的广播波中抽出上述加密内容,解密所抽出的加密内容而生成解密内容,再现所生成的解密内容而输出影像和声音。
进一步,内容服务器装置100与上述相同,根据来自BD制造装置30c的请求,生成加密内容,并将所生成的加密内容发送到经专用线路23相连的BD制造装置30c。BD制造装置30c接收加密内容,并将所接收的加密内容写入到记录媒体40。写入了加密内容的记录媒体40被销售并由使用者购入。通过使用者,装载了记录媒体40的BD再现装置200b从记录媒体40中读出上述加密内容,解密所读出的加密内容而生成解密内容,并再现所生成的解密内容而输出影像和声音。
1.2内容服务器装置100的结构
内容服务器装置100如图2所示,是由微处理器101、硬盘部102、存储部103、输入控制部104、显示控制部105、通信部106和系统总线109等构成的计算机系统。微处理器101、硬盘部102、存储部103、输入控制部104、显示控制部105和通信部106经系统总线109相互相连。另外,输入控制部104和显示控制部105分别连接到键盘107和监视器108。进一步,通信部106分别经专用线路21、22和23,连接到分配服务器装置30a、广播装置30b和BD制造装置30c。
硬盘部102和存储部103上存储各种计算机程序和其他数据,微处理器101根据各计算机程序来动作,从而内容服务器装置100实现其一部分的功能。
(1)硬盘部102
硬盘部102是长期存储计算机程序和数据用的存储单元。硬盘部102如图2所示,存储了内容120、内容121、内容122、...、密钥123、密钥124、密钥125、...、内容分配程序141、内容加密程序142、AES加密程序143、发送程序144和图中未示出的其他计算机程序以及图中未示出的其他数据。另外,具有存储加密内容126、加密内容127、加密内容128、...用的区域。
内容120、内容121、内容122、...分别对应于密钥123、密钥124、密钥125、...,另外,对应于加密内容126、加密内容127、加密内容128、...。
内容120、内容121、内容122、...分别是高效压缩编码影像数据和声音数据后的压缩数据。
密钥123、密钥124、密钥125、...是在分别对内容120、内容121、内容122、...实施加密算法,生成加密内容126、加密内容127、加密内容128、...时使用的加密密钥,分别是128比特长度的数据。这里,上述加密算法基于AES(Advanced Encryption Standard:高级加密标准)。
加密内容126、加密内容127、加密内容128、...分别是对内容120、内容121、内容122、...实施加密算法AES后生成的加密数据。
内容分配程序141、内容加密程序142、AES加密程序143和发送程序144分别通过微处理器101的指示,作为内容分配程序131、内容加密程序132、AES加密程序133和发送程序134被装载到存储部103。后面描述这些计算机程序。
(2)存储部103
存储部103是暂时存储作为执行对象的计算机程序和数据的存储单元,如图2所示,具有存储内容分配程序131、内容加密程序132、AES加密程序133、发送程序134和图中未示出的其他程序及图中未示出的其他数据用的区域。
上述各程序分别是组合机器语言形式的多个命令码而构成的计算机程序。上述机器语言形式是通过微处理器101解读并加以执行的形式。
下面,说明各计算机程序的内容,但是为了使各计算机程序的内容容易理解,不使用机器语言形式的命令码来表现,而通过通常在人说话或书写的情况下所用的语言或通过流程图来表现各计算机程序的内容,由此,来说明各计算机程序。
(a)内容分配程序131
内容分配程序131构成为包含多个命令码。
这些命令码组表示的是下列情况:从内容的分配目标的装置、例如从分配服务器装置30a接收内容、例如内容120的指定和内容的分配目标装置的指定,指定由所接收的指定所表示的内容,并调用内容加密程序132,接着,将通过内容加密程序132生成的加密内容、例如作为加密内容126写入到硬盘部102中,指定基于所接收的指定的分配目标装置、和在所生成的硬盘部102上写入的加密内容,并调用发送程序134。
这样,通过微处理器101根据内容分配程序131来动作,而将所生成的加密内容发送到由所接收的指定表示的分配目标装置。
(b)内容加密程序132
内容加密程序132如图3所示,构成为包含命令码组S111、S112、S113、S114、S115和S116。这些命令码组在内容加密程序132内,以该顺序来进行排列。各命令码组包含一个或多个命令码。
命令码组S111包含多个命令码,该多个命令码表示下列情况:将值“-128”作为初始值代入到通过比特来表示接收了指定的内容内的数据的位置的读出点上,并且从硬盘部102中读出对应于接收了指定的内容的密钥。这里,代入了值“-128”的读出点表示上述内容外的位置,但将值“-128”作为初始值代入到读出点上,是因为在后述的命令码组S112的最先执行中,读出点要表示上述内容的开头的位置。后述的命令码组S112的最先的执行中,将128比特加到上述读出点上,读出点变为具有值“0”,该读出点表示上述内容的开头的位置。
命令码组S112包含:表示将128比特加到上述读出点上,接着,在上述内容中,从由相加后的读出点所示的位置试着读出一个块的数据的多个命令码;和表示若由读出点所示的位置在上述内容内、则从该位置读出一个块的数据,而若由读出点所示的位置表示在上述内容之外、则输出表示块的读出结束的结束码的多个命令码。这里,一个块是128比特长的数据。
命令码组S113包含多个命令码,该多个命令码表示下列情况:在从命令码组S112输出了结束码的情况下,结束基于内容加密程序132的处理,在没有输出结束码的情况下,使控制进入到下一命令码组S114。
命令码组S114包含多个命令码,该多个命令码表示下列情况:伴随所读出的上述密钥和所读出的上述一个块,来调用AES加密程序133。通过伴随上述一个块,调用AES加密程序133,来对上述块实施基于AES的加密而生成加密块。
AES方式中,输入消息(明文)和输出消息(密文)都为128比特,输入的加密密钥、解密密钥可以从128比特、192比特、256比特中加以选择。本实施方式中,设加密密钥和解密密钥为128比特。
命令码组S115包含多个命令码,该多个命令码表示下列情况:将由AES加密程序133生成的一个加密块、作为例如加密内容126的一部分写入到硬盘部102中。
命令码组S116包含表示接着使控制进入到命令码组S112的命令码。
(c)AES加密程序133
AES加密程序133是根据AES,加密128比特长度的明文块而生成128比特长的密文块的加密算法,如图4所示,由加密主模块501、AddRoundKey处理模块502、Round处理模块503、FinalRound处理模块504、SubBytes处理模块505、ShiftRows处理模块506、MixColumns处理模块507、KeySchedule处理模块508和变形S盒511构成。
各模块是组合机器语言形式的多个命令码构成的计算机程序。上述机器语言形式是通过微处理器101来解读后加以执行的形式。
(c-1)标准S盒(S box)380
这里,使用图5所示的阵列表现381和阵列表现382来说明标准S盒380,该标准S盒380为在进行AES的加密中定义的8比特输入、8比特输出的S盒的参照处理中一般使用的表数据阵列。
另外,AES中,一般不使用标准S盒这样的术语,但是为了与本实施方式中所用的变形S盒511加以区别,而采用这种表现。
图5所示的阵列表现381和阵列表现382表现标准S盒380,阵列表现381分别通过阵列号(后缀)来区别表示标准S盒380中包含的多个阵列元素,阵列表现382表示标准S盒380中包含的多个阵列元素各自的具体值。
阵列表现381为了表现上方便,包含按16行×16列的矩阵状配置的多个阵列元素,阵列表现382为了在表现上方便,包含按16行×16列的按矩阵状配置的多个阵列元素的具体的值。阵列表现381中,在矩阵的某个位置上配置的阵列元素对应于在阵列表现382中在矩阵的相同位置上配置的具体的值。
标准S盒380包含256个阵列元素391、392、393、...、394、...395、396、397、...、398。各阵列元素是8比特的数据,表现为“S[xx]”。这里,“S”是表示阵列元素的阵列元素名,接着“S”用[]包围的数值xx是识别该阵列元素用的阵列号。在图5的阵列表现381的各阵列元素中,各阵列号用16进制数来表现。
具体的,256个阵列元素391“S[00]”、392“S[01]”、393“S[02]”、...、394“S[0f]”、...、395“S[f0]”、396“S[f1]”、391“S[f2]”、...、398“S[ff]”分别是具体值401“63”、具体值402“7c”、具体值403“77”、...、具体值404“76”、...、具体值405“8c”、具体值406“a1”、具体值407“89”、...、具体值408“16”。这些具体值用16进制数来表现。
(c-2)变形S盒511
说明变形S盒511。
变形S盒511如图6所示,由2048个构成要素431、441、442、443、444、445、446、447、432、...、433、...434、...、435、...436、...437、...、438、...构成。
构成变形S盒511的各阵列元素在图6中,为了表现方便,按256行×6列的矩阵状来进行配置。
各阵列元素是8比特的数据。因此,1行×8列的阵列元素的长度是64比特长度。
第一列256个阵列元素431、432、433、434、...、435、436、437、438分别具有值S[00]、值S[01]、值S[02]、值S[03]、...、值S[fc]、值S[fd]、值S[fe]、值S[ff]。这里,值S[00]、值S[01]、...、值S[fe]、值S[ff]与上述的标准S盒380中包含的相同。
第二列的256个阵列元素分别具有值“0xff”。这里,“0x”表示接着它的数字用16进制数来表现。
第3列~第8列中包含的各阵列元素也分别具有值“0xff”。
这样,在将变形S盒511中包含的多个阵列元素看作按256行×8列的矩阵状排列的情况下,在变形S盒511中,在第1列的256个各阵列元素上配置标准S盒380中包含的各阵列元素,在第2~第8列的各阵列元素上配置值“0xff”。
这样,在变形S盒511中,对于8个连续配置的阵列元素,其开头的阵列元素具有与标准S盒380中包含的阵列元素相同的值,其他的阵列元素具有没有含义的“0xff”。
(c-3)加密主模块501
加密主模块501如图7所示,构成为包含命令码组S121、S122、S123、S124、S125和S126,这些命令码组在加密主模块501中,以该顺序来排列。各命令码组包含一个或多个的命令码。
命令码组S121包含多个命令码,该多个命令码表示下列情况:调用进行AddRoundKey处理的AddRoundKey处理模块502,该AddRoundKey处理为所输入的明文块和根据加密密钥生成的扩展密钥之间的运算。
命令码组S122包含表示将计数器初始化为0的多个命令码。该计数器用于控制在加密主模块501中的重复。
命令码组S123包含表示调用进行后述的Round处理的Round处理模块503的多个命令码。
命令码组S124包含表示将上述计数器加“1”的多个命令码。
命令码组S125包含多个命令码,该多个命令码表示下列情况:判断上述计数器是否是预定的重复次数“Nr-1”,在不是重复次数“Nr-1”的情况下,进入到命令码组S123,在是重复次数“Nr-1”的情况下,进入到下一命令码组S126。
这里,重复次数“Nr”依赖于加密密钥和解密密钥的比特长度,在加密密钥和解密密钥的比特长度是128比特的情况下,决定为Nr=10,在比特长度是192比特的情况下,决定为Nr=12,在比特长度是256比特的情况下,决定为Nr=14。
命令码组S126包含表示调用进行后述的FinalRound处理的FinalRound处理模块504的多个命令码。
(c-4)Round处理模块503
Round处理模块503如图8所示,构成为包含命令码组S131、S132、S133和S134,这些命令码组在Round处理模块503中,以该顺序来进行排列。各命令码组包含一个或多个命令码。
命令码组S131包含表示调用进行由16次的表参照运算构成的SubBytes处理的SubBytes处理模块505的多个命令码。
命令码组S132包含表示调用进行ShiftRows处理的ShiftRows处理模块506的多个命令码。
命令码组S133包含表示调用进行MixColumns处理的MixColumns处理模块507的多个命令码。
命令码组S134包含表示调用进行上述的AddRoundKey处理的AddRoundKey处理模块502的多个命令码。
(c-5)SubBytes处理模块505
本实施方式的SubBytes处理中,接收128比特的块数据,将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),并将各部分块数据左移位3比特。这样,对于16个的部分块数据分别生成11比特的数据。接着,对各11比特的数据实施变形S盒的参照处理,而输出8比特数据。
这样,对于16个部分块数据,实施左移位和变形S盒的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据而生成128比特的块数据并输出。
如上所述,将各部分块数据左移位3比特基于下面的理由。
通过左移位3比特,各部分块数据变为8倍。由于变形S盒511中,对于连续配置的8个阵列元素中开头的1个,配置了有效的阵列元素S[xx],所以通过将8倍各部分块数据而得到的数据作为地址,并参照变形S盒511,仅得到了有效的阵列元素S[xx]。
另外,SubBytes处理模块505根据上述的理由,也可代替3比特的左移位,而包含进行8倍乘法的乘法处理。
另外,同样,在另一变形S盒中,若设对于连续配置的16个阵列元素中开头的一个,配置了有效的阵列元素S[xx],则通过将16倍各部分块数据而得到的数据作为地址,并参照上述其他的变形S盒,而仅得到了有效的阵列元素S[xx]。
另外,在另一变形S盒中,若设对于连续配置的4个阵列元素中开头的一个,配置了有效的阵列元素S[xx],则通过将4倍各部分块数据得到的数据作为地址,并参照上述其他的变形S盒,而仅得到了有效的阵列元素S[xx]。
SubBytes处理模块505如图9所示,构成为包含命令码组S141、S142、S143、S144、S145、S146、...、S147和S148,这些命令码组在SubBytes处理模块505内,以该顺序来进行排列。各命令码组包含一个或多个命令码。
命令码组S141包含多个命令码,该多个命令码表示下列情况:将16个部分块数据中,第一部分的块数据左移位3比特,生成11比特的数据。
命令码组S142包含多个命令码,该多个命令码表示下列情况:将通过命令码组S141生成的11比特的数据作为变形S盒511中的地址,并参照变形S盒511,从变形S盒511中读出在将上述11比特的数据作为地址的位置上存储的8比特的数据,并输出所读出的8比特的数据。
命令码组S143、S145、...、S147分别包含与命令码组S141相同的多个命令码。命令码组S143、S145、...、S147中,在分别将16个部分块数据中的第二部分块数据、第三部分块数据、...、第16部分块数据作为移位的对象这一方面,与命令码组S141不同。
命令码组S144、S146、...、S148分别包含与命令码组S142相同的多个命令码。命令码组S144、S146、...、S148中,在分别使用基于各个命令码组S143、S145、...、S147的输出结果这方面,与命令码组S142不同。
(c-6)FinalRound处理模块504
FinalRound处理模块504如图10所示,构成为包含命令码组S151、S152和S153,这些命令码组在FinalRound处理模块504内,以该顺序来进行排列。各命令码组包含一个或多个的命令码。
命令码组S151包含表示调用SubBytes处理模块505的多个命令码。
命令码组S152包含表示调用进行ShiftRows处理的ShiftRows处理模块506的多个命令码。
命令码组S153包含表示调用进行AddRoundKey处理的AddRoundKey处理模块502的多个命令码。
(c-7)其他
AddRoundKey处理模块502、ShiftRows处理模块505、MixColumns处理模块507和KeySchedule处理模块508分别进行AES中规定的AddRoundKey处理、ShiftRows处理、MixColumns处理和KeySchedule处理。这些处理如在AES中所规定的那样,所以省略说明。
(d)发送程序134
发送程序134构成为排列多个命令码,包含多个命令码,该多个命令码表示下列情况:从调用源的程序中接收数据的指定和分配目标装置的指定,并控制通信部106,将所指示的数据发送到所指定的分配目标装置。
(3)微处理器101
微处理器101是进行内容服务器装置100的控制、数据的计算/加工的中枢部分,根据在存储部103中存储的计算机程序,来进行运算、控制等。
微处理器101如图11所示,由运算部161、高速缓存部162和图中未示的其他单元构成。
(高速缓存部162)
高速缓存部162为避免在程序的执行时,因运算部161进行的对存储部103的存取,该存取时间影响程序的执行性能而设置。
高速缓存部162如图11所示,由数据部175和图中未示的其他单元构成。数据部175进一步由256个高速缓存行部181、182、183、184、185、...、186和187构成,各高速缓存行部具有64比特的存储区域。
将存储部103中存储的内容的一部分复制到数据部175的任意的高速缓存行部上。
高速缓存部162与存储部103相同,在被提供地址后,输出在对应于该地址的高速缓存行部上存储的数据。
(运算部161)
运算部161一一解释在存储部103中存储的计算机程序中的命令码,并根据解释结果,来进行运算/控制。
运算部161保持存储下次应取出的命令所在的地址信息的程序计数器PC。
在执行计算机程序的情况下,运算部161首先将硬盘部102中存储的计算机程序复制(装载到)到存储部103中。接着,将程序计数器PC设定为初始值,并以程序计数器PC的值为基础,来取得计算机程序中的一个命令。并且,执行该取得的一个命令。在该命令的执行中,在参照由在存储部103中装载的计算机程序定义的固定值数据的情况下,运算部161存取存储部103来取得该固定值数据,并且,还将相同的固定值数据存储到高速缓存部162中。接着,在参照同一固定值数据的情况下,运算部161存取高速缓存部162,而不是存储部103,来取得该固定值数据。并且,在该一个命令执行结束后,将程序计数器PC进一,而再次取得计算机程序中的一个命令,与上述相同,来执行该一个命令。最终,在程序计数器PC变为表示结束的值后,结束计算机程序的执行。
这样,运算部161在存取高速缓存部162,而希望的数据不存在于高速缓存部162中的情况下,从存储部103中读出希望的数据,并将该读出的数据写入到高速缓存部162的数据部175的任意一个高速缓存行部中。这时,为了进行从存储部103向高速缓存部162的数据复制,需要一些时间,但是在第二次之后,运算部161存取高速缓存部162,所以变为高速。
(数据部175的一例)
将数据部175的高速缓存行部181~187上通过上述的SubBytes处理,存储了变形S盒511的内容的情况下的一例在图12中作为数据部175a来表示。
数据部175的高速缓存行部181a、182a、183a、184a、...、186a、187a原样存储变形S盒511的内容。
即,在高速缓存行部181a上存储了阵列元素451“S[00]”、阵列元素461“0xff”、阵列元素462“0xff”、阵列元素463“0xff”、阵列元素464“0xff”、阵列元素465“0xff”、阵列元素466“0xff”和阵列元素467“0xff”。另外,在其他高速缓存行部中,在其前端存储标准S盒380的阵列元素,在其他部分中存储了“0xff”。
例如,在高速缓存行部182a、183a、184a、...、186a、187a的开头分别存储作为标准S盒380的阵列元素的阵列元素452“S[01]”、阵列元素453“S[02]”、阵列元素454“S[03]”、...、阵列元素455“S[fc]”、阵列元素456“S[fd]”、阵列元素457“S[fe]”和阵列元素458“S[ff]”。
这样,在数据部175a的各高速缓存行部上仅存储了一个标准S盒380的阵列元素。
1.3内容服务器装置100的动作
说明内容服务器装置100的动作。
(1)微处理器101的动作
使用图13所示的流程图来说明微处理器101的动作。
运算部161将在硬盘部102中存储的计算机程序复制到存储部103中,并将存储与接着应取出的命令有关的地址信息的程序计数器PC设定为初始值(步骤S161)。
接着,运算部161以程序计数器PC的值为基础,从装载到存储部103中的计算机程序中取出一个命令(步骤S162)。
这时,运算部161判断在该命令中,是否使用在计算机程序内所定义的固定数据(步骤S163),在使用固定数据的情况下(步骤S163中是),在想要使用的固定数据位于高速缓存部162上时(步骤S164中是),存取高速缓存部162,而取得相应的固定数据(步骤S165),接着,解读所读出的命令,并使用所取得的固定数据,来执行解读后的结果(步骤S166),接着,在程序计数器PC表示结束后(步骤S167中是),结束处理。如果,在没有指示结束的情况下(步骤S167中否),将程序计数器PC进一(步骤S170),接着,控制进入到步骤S162来进行重复处理。
在没有使用固定数据的情况下(步骤S163中否),运算部161接着分析所取出的命令,并执行分析后的结果(步骤S166),接着,控制进入到步骤S167而进行重复处理。
在想要使用的固定数据不在高速缓存部162上的情况下(步骤S164中否),运算部161存取存储部103,而取得相应的固定数据(步骤S168),将所取得的固定数据复制到高速缓存部162的高速缓存行部上(步骤S169),接着,分析所取得的命令,并使用所取得的固定数据,来执行分析后的结果(步骤S166),接着,控制进入到步骤S167而重复进行处理。
(2)基于AES加密程序133的加密的动作
使用图14所示的数据处理图来说明基于AES加密程序133的加密的动作。这里,如该图所示,设使用128比特的输入密钥K301,从128比特的明文数据PT303生成128比特的密文数据CT308。
基于AES加密程序133的加密的动作如该图所示,由密钥调度(schedule)的步骤302、10段的处理304、305、...306、307构成。
根据输入密钥K301,通过KeySchedule处理模块508,来生成11个扩展密钥SK0、SK1、...、SK8、SK9、SK10(步骤302),将所生成的扩展密钥SK0、SK1、...、SK8、SK9、SK10分配到各段的AddRoundKey处理中(步骤311、312、...、313、314、315)。
接着,在第一段的处理中(处理304),通过AddRoundKey处理模块502使用扩展密钥SK0来进行AddRoundKey处理(步骤321),通过SubBytes处理模块505,来进行SubBytes处理(步骤322),通过ShfftRows处理模块506,来进行ShiftRows处理(步骤323),通过MixColumns处理模块507,来进行MixColumns处理(步骤324)。
接着,在第二段的处理中(处理305),通过AddRoundKey处理模块502使用扩展密钥SK1来进行AddRoundKey处理(步骤331),通过SubBytes处理模块505,来进行SubBytes处理(步骤332),通过ShiftRows处理模块506,来进行ShiftRows处理(步骤333),通过MixColumns处理模块507,来进行MixColumns处理(步骤334)。
同样,在第三段到第八段各段的处理中,进行AddRoundKey处理、SubBytes处理、ShiftRows处理和MixColumns处理。
接着,在第九段的处理中(步骤306),通过AddRoundKey处理模块502使用扩展密钥SK8来进行AddRoundKey处理(步骤341),通过SubBytes处理模块505,来进行SubBytes处理(步骤342),通过ShiftRows处理模块506,来进行ShiftRows处理(步骤343),通过MixColumns处理模块507,来进行MixColumns处理(步骤344)。
最后,在第十段的处理中(步骤307),通过AddRoundKey处理模块502使用扩展密钥SK9来进行AddRoundKey处理(步骤351),通过SubBytes处理模块505,来进行SubBytes处理(步骤352),通过ShiftRows处理模块506,来进行ShiftRows处理(步骤353),通过AddRoundKey处理模块502使用扩展密钥SK10来进行AddRoundKey处理(步骤354)。
这样,生成了128比特的密文数据CT308。
(3)各Round处理或FinalRound处理的动作
接着,使用图15所示的数据处理图来说明各Round处理或FinalRound处理的动作,尤其是AddRoundKey处理和SubBytes处理的详细动作。这里,如图15所示,设使用128比特的扩展密钥361,从128比特的输入数据371生成128比特的输出数据376。
各Round处理或FinalRound处理包含AddRoundKey处理372、SubBytes处理373、ShiftRows处理374和MixColumns处理(或AddRoundKey处理)375。
AddRoundKey处理372包含16个异或逻辑运算381、382、383、...、384。另外,SubBytes处理373包含16个移位处理385、386、387、...、388和16个变形S盒的参照处理391、392、393、...、394。
128比特的扩展密钥361分为16个8比特的部分密钥,16个部分密钥分别输出到AddRoundKey处理372的16个异或逻辑运算381、382、383、...、384(步骤362、363、364、...、365)。
128比特的输入数据371分为16个8比特的部分数据,16个部分数据分别输入到AddRoundKey处理372的16个异或逻辑运算381、382、383、...、384。
异或逻辑运算381接收第一部分数据(8比特),接收第一部分密钥(8比特),对所接收的第一部分数据和所接收的第一部分密钥实施异或逻辑运算,而得到8比特的第一运算数据,并将所得到的第一运算数据输出到SubBytes处理373的移位处理385。
移位处理385得到8比特的第一运算数据,并将所得到的第一运算数据左移位3比特,而得到11比特的第一移位数据。这里,所得到的第一移位数据的高位的8比特是与上述运算数据相同的数据,上述第一移位数据的低位3比特是“000”(2进制数表现)。接着,将所得到的第一移位数据输出到SubBytes处理373的参照处理391。
参照处理391接收第一移位数据,并将所接收的第一移位数据作为地址,参照变形S盒511,而取得8比特的第一阵列元素。
同样,异或逻辑运算382对第二部分数据和第二部分密钥也实施异或逻辑运算,而得到第二运算数据,移位处理386将第二运算数据左移位3比特,而得到第二移位数据,参照处理392将第二移位数据作为地址,并参照变形S盒511,来取得第二阵列元素。
同样,异或逻辑运算383对第三部分数据和第三部分密钥也实施异或逻辑运算,而得到第三运算数据,移位处理387将第三运算数据左移位3比特,而得到第三移位数据,参照处理393将第三移位数据作为地址,并参照变形S盒511,来取得第三阵列元素。
同样,得到第4到第15的阵列元素。
进一步,同样,异或逻辑运算384对第16部分数据和第16部分密钥也实施异或逻辑运算,而得到第16运算数据,移位处理388将第16运算数据左移位3比特,而得到第16移位数据,参照处理394将第16移位数据作为地址,并参照变形S盒511,来取得第16阵列元素。
这样,取得了第1到第16的阵列元素(16个阵列元素)。
接着,第1到第16的阵列元素以该顺序来结合而生成128比特的数据。
接着,对生成的数据实施ShiftRows处理374,接着,实施MixColumns处理(或AddRoundKey处理)375。这样,生成128比特的输出数据376后输出。
1.4个人计算机200的结构
个人计算机200是与内容服务器100相同的计算机系统,如图16所示,由微处理器201、硬盘部202、存储部203、输入控制部204、显示控制部205和通信部206等构成。输入控制部204和显示控制部205分别连接到键盘207和监视器208。另外,通信部206连接到互联网20。
硬盘部202和存储部203上存储了各种计算机程序,通过微处理器201根据各计算机程序来动作,个人计算机200实现其一部分的功能。
另外,由于数字广播接收装置200a和BD再现装置200b具有与个人计算机200相同的结构,所以省略对于这些装置的说明。
(1)硬盘部202
硬盘部202如图16所示,具有存储密钥222、内容接收程序241、内容解密程序242、再现程序243和AES解密程序244,和存储加密内容221用的区域。加密内容221和密钥222相对应。
加密内容221和密钥222分别与在内容服务器装置100的硬盘部102中存储的加密内容126和密钥123相同。
内容接收程序241、内容解密程序242、再现程序243和AES解密程序244分别通过微处理器201的指示,作为内容接收程序231、内容解密程序232、再现程序233和AES解密程序234装载到存储部203中。后面描述这些计算机程序。
(2)存储部203
存储部203如图16所示,存储了内容接收程序231、内容解密程序232、再现程序233和AES解密程序234。另外,存储部203包含解密内容区域236。
这些程序分别是组合机器语言形式的多个命令码构成的计算机程序。上述机器语言形式是通过微处理器201来解读并加以执行的形式。
解密内容区域236中暂时存储了将加密内容解密而生成的解密内容。
下面,说明各计算机程序的内容,但是为了使各计算机程序的内容容易理解,通过通常人们说话或书写的情况下所用的语言或流程图来表现各计算机程序的内容,而不用机器语言形式的命令码来表现,由此,来说明各计算机程序。
(a)内容接收程序231
内容接收程序231构成为包含多个命令码。
这些命令码组包含:表示从个人计算机200的使用者来接收内容的指示的多个命令码;表示取得识别接收了指定的上述内容的内容识别符,并将所取得的内容识别符经通信部206和互联网20,发送到分配服务器装置30a的多个命令码;表示从分配服务器装置30a,经互联网20和通信部206,来接收通过上述内容识别符识别出的加密内容的多个命令码;和表示将所接收的加密内容例如作为加密内容221写入到硬盘部202中的多个命令码。
(b)内容解密程序232
内容解密程序232如图17所示,构成为包含命令码组S211、S212、S213、S214、S215、S216、S217和S218,这些命令码组在内容解密程序232内,以该顺序来排列。各命令码组包含一个或多个命令码。
命令码组S211包含表示从个人计算机200的使用者接收在硬盘部202中存储的其中一个加密内容的指定的多个命令码。
命令码组S212包含表示调用在存储部203中存储的再现程序233的多个命令码。通过执行命令码组S212,结果,并行执行内容解密程序232和再现程序233。
命令码组S213包含多个命令码,该多个命令码表示下列情况:将值“-128”作为初始值代入到通过比特来表示接收了指定的加密内容内的数据的位置的读出点上,接着,从硬盘部202中读出对应于接收了指定的加密内容的密钥。
命令码组S214包含:表示将128比特加到上述读出点上,接着,在上述加密内容中,从由相加后的读出点所示的位置试着读出一个块的数据的多个命令码;和表示若由读出点所示的位置在上述内容内,则从该位置读出一个块的数据,若由读出点所示的位置表示在上述内容之外,则输出表示块的读出结束的结束码的多个命令码。这里,一个块是128比特长度的数据。
命令码组S215包含多个命令码,该多个命令码表示下列情况:在从命令码组S214输出了结束码的情况下,结束基于内容解密程序232的处理,在没有输出结束码的情况下,使控制进入到下一命令码组S216。
命令码组S216包含表示伴随所读出的上述密钥和所读出的上述一个块,来调用AES解密程序234的多个命令码。
命令码组S217包含表示将由解密程序234生成的一个解密块写入到存储部203的解密内容区域236的多个命令码。
命令码组S218包含表示接着使控制进入到命令码组S214的命令码。
(c)再现程序233
再现程序233如图17所示,构成为包含命令码组S218、S219和S220,这些命令码组在再现程序233内,以该顺序来加以排列。各命令码组包含一个或多个命令码。
命令码组S218包含表示从存储部203具有的解密内容区域236中读出一个以上的解密块的多个命令码。
命令码组S219包含多个命令码,该多个命令码表示下列情况:从所读出的上述解密块中生成影像数据和声音数据,将所生成的影像数据和声音数据变换为影像信号和声音信号,并经显示控制部205,输出到监视器208。
命令码组S220包含表示接着使控制进入到命令码组S218的命令码。
(d)AES解密程序234
AES解密程序234如图18所示,由解密主模块601、AddRoundKey处理模块602、InvRound处理模块603、InvFinalRound处理模块604、InvSubBytes处理模块605、InvShiftRows处理模块606、InvMixColumns处理模块607、KeySchedule处理模块608和反变换变形S盒611构成。
各模块是组合机器语言形式的多个命令码而构成的计算机程序。上述机器语言形式是通过微处理器201解读后加以执行的形式。
(d-1)标准反变换S800
这里,使用图19所示的阵列表现801和阵列表现802来说明标准反变换S盒800,该标准反变换S盒800为在进行AES的解密中定义的8比特输入、8比特输出的反变换S盒的参照处理中一般使用的表数据阵列。
另外,AES中,一般不使用标准反变换S盒的术语,但是为了与本实施方式中所使用的反变换变形S盒611相区别,而采用这种表现。
图19所示的阵列表现801和阵列表现802表现标准反变换S盒800,阵列表现801分别通过阵列号(后缀)来区别表示标准反变换S盒800中包含的多个阵列元素,阵列表现802表示在标准反变换S盒800中包含的多个阵列元素各自的具体值。
阵列表现801为了表现上方便,包含按16行×16列的矩阵状配置的多个阵列元素,阵列表现802为了表现上方便,包含按16行×16列的矩阵状配置的多个阵列元素的具体值。阵列表现801中在矩阵的某个位置上配置的阵列元素对应于在阵列表现802中在矩阵的同一位置上配置的具体值。
标准反变换S盒800包含256个阵列元素811、812、813、...、814、...、815、816、817、...、818。各阵列元素是8比特的数据,表现为“InvS[xx]”。这里,“InvS”是表示阵列元素的阵列元素名,接着“InvS”由[]包围的数值xx是识别该阵列元素用的阵列号。图19的阵列表现801的各阵列元素中,各阵列号由16进制数来表现。
具体的,256个阵列元素811“InvS[00]”、812“InvS[01]”、813“InvS[02]”、...、814“InvS[0f]”、...、815“InvS[f0]”、816“InvS[f1]”、817“InvS[f2]”、...、818“InvS[ff]”分别是具体值821“52”、具体值822“09”、具体值823“6a”、...、具体值824“fb”、...、具体值825“17”、具体值826“2b”、具体值827“04”、...、具体值828“7d”。这些具体值由16进制数来表现。
(d-2)反变换变形S盒611
说明反变换变形S盒611。
反变换变形S盒611如图20所示,由2048个阵列元素831、841、842、843、844、845、846、847、832、...、833、...834、...、835、...836、...、837、...、838、...构成。
构成反变换变形S盒611的各阵列元素在图20中,为了表现上方便,按256行×6列的矩阵状进行配置。
第一列的256个阵列元素831、832、833、834、...、835、836、837、838分别具有值InvS[00]、值InvS[01]、值InvS[02]、值InvS[03]、...、值InvS[fc]、值InvS[fd]、值InvS[fe]、值InvS[ff]。这里,值InvS[00]、值InvS[01]、...、值InvS[fe]、值InvS[ff]与包含在上述的标准反变换S盒800中的相同。
第二列的256个阵列元素分别具有值“0xff”。这里,“0x”表示用16进制数来表现接着的数字。
第3列~第8列中包含的各阵列元素分别具有值“0xff”。
这样,在反变换变形S盒611中,对于8个连续配置的阵列元素,其开头的阵列元素具有与标准反变换S盒800中包含的阵列元素相同的值,其他的阵列元素具有没有含义的值“0xff”。
(d-3)解密主模块601
解密主模块601如图21所示,构成为包含命令码组S231、S232、S233、S234、S235和S236,这些命令码组在解密主模块601内以该顺序来进行排列。各命令码组包含一个或多个命令码。
命令码组S231包含表示调用进行AddRoundKey处理的AddRoundKey处理模块602的多个命令码,该AddRoundKey处理为所输入的密文块和从加密密钥生成的扩展密钥之间的运算。
命令码组S232包含表示将计数器初始化为0的多个命令码。该计数器在解密主模块601内,用于控制重复。
命令码组S233包含表示调用进行后述的InvRound处理的InvRound处理模块603的多个命令码。
命令码组S234包含表示对上述计数器加“1”的多个命令码。
命令码组S235包含多个命令码,该多个命令码表示下列情况:判断上述计数器是否是预定的重复次数“Nr-1”,在不是重复次数“Nr-1”的情况下,进入到命令码组S233,在是重复次数“Nr-1”的情况下,进入到下一命令码组S236。
这里,重复次数“Nr”依赖于加密密钥和解密密钥的比特长度,在加密密钥和解密密钥的比特长度是128比特的情况下,决定为Nr=10,在比特长度是192比特的情况下,决定为Nr=12,在比特长度是256比特的情况下,决定为Nr=14。
命令码组S236包含表示调用进行后述的InvFinalRound处理的InvFinalRound处理模块604的多个命令码。
(d-4)InvRound处理模块603
InvRound处理模块603如图22所示,构成为包含命令码组S241、S242、S243和S244,这些命令码组在InvRound处理模块603内,以该顺序来进行排列。各命令码组包含一个或多个的命令码。
命令码组S241包含表示调用进行InvShiftRows处理的InvShiftRows处理模块606的多个命令码。
命令码组S242包含表示调用进行由16次的表参照运算构成的InvSubBytes处理的InvSubBytes处理模块605的多个命令码。
命令码组S243包含表示调用进行上述的AddRoundKey处理的AddRoundKey处理模块602的多个命令码。
命令码组S244包含表示调用进行InvMixColumns处理的InvMixColumns处理模块607的多个命令码。
(d-5)InvSubBytes处理模块605
本实施方式的InvSubBytes处理中,接收128比特的块数据,并将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),将各部分块数据左移位3比特。这样,对于16个部分块数据分别生成11比特的数据。接着,对各11比特的数据实施反变换变形S盒611的参照处理,来输出8比特数据。
这样,对于16个部分块数据,实施左移位和反变换变形S盒611的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据来生成128比特的块数据后输出。
对于将各部分块数据左移位3比特的理由如上所述。
相对在SubBytes处理模块505中,进行变形S盒511的参照,在InvSubBytes处理模块605中,进行反变换变形S盒611的参照,在这方面,InvSubBytes处理模块605和SubBytes处理模块505不同。
InvSubBytes处理模块605如图23所示,构成为包含命令码组S251、S252、S253、S254、S255、S256、...、S257和S258,这些命令码组在InvSubBytes处理模块605内,以该顺序来进行排列。各命令码组包含一个或多个命令码。
命令码组S251包含表示将16个部分块数据中、第一部分块数据左移位3比特,而生成11比特的数据的多个命令码。
命令码组S252包含多个命令码,该多个命令码表示下列情况:将由命令码组S251生成的11比特的数据作为反变换变形S盒611中的地址,并参照反变换变形S盒611,从反变换变形S盒611中读出在将上述11比特的数据作为地址的位置上存储的8比特的数据,并输出所读出的8比特的数据。
命令码组S253、S255、...、S257分别包含与命令码组S251相同的多个命令码。命令码组S253、S255、...、S257中,将16个部分块数据中,第二部分块数据、第三部分块数据、...、第16部分块数据作为移位的对象的方面,与命令码组S251不同。
命令码组S254、S256、...、S258分别包含与命令码组S252相同的多个命令码。命令码组S254、S256、...、S258中,分别使用基于命令码组S253、S255、...、S257的输出结果的方面,与命令码组S252不同。
(d-6)InvFinalRound处理模块604
InvFinalRound处理模块604如图24所示,构成为包含命令码组S261、S262和S263,这些命令码组在InvFinalRound处理模块604内,以该顺序来进行排列。各命令码组包含一个或多个命令码。
命令码组S261包含表示调用进行InvShiftRows处理的InvShiftRows处理模块606的多个命令码。
命令码组S262包含表示调用进行InvSubBytes处理的InvSubBytes处理模块605的多个命令码。
命令码组S263包含表示调用进行AddRoundKey处理的AddRoundKey处理模块602的多个命令码。
(d-7)其他
AddRoundKey处理模块602、InvShiftRows处理模块606、InvMixColumns处理模块607和KeySchedule处理608分别进行在AES中规定的AddRoundKey处理、InvShiftRows处理、InvMixColumns处理和KeySchedule处理。对于这些处理,由于如AES中所规定的那样,所以省略说明。
(3)微处理器201
微处理器201与微处理器101相同,由运算部、高速缓存部和其他单元构成。另外,高速缓存部由数据部175和其他单元构成,数据部由256个高速缓存行部构成,各高速缓存行部包含64比特的存储区域。
微处理器201具有与微处理器101相同的结构,运算部、高速缓存部和其他单元如上所述。
这里,在数据部的各高速缓存行部上通过上述的InvSubBytes处理,存储了反变换变形S盒611的内容的情况下的一例在图25中作为数据部175b来加以表示。
在数据部175b的高速缓存行部181b、182b、183b、184b、...、186b、187b上原样存储了反变换变形S盒611的内容。
即,在高速缓存行部181b上存储了阵列元素851“InvS[00]”、阵列元素861“0xff”、阵列元素862“0xff”、阵列元素863“0xff”、阵列元素864“0xff”、阵列元素865“0xff”、阵列元素866“0xff”和阵列元素867“0xff”。另外,在其他的高速缓存行部中,在其开头存储反变换标准S盒800的阵列元素,在其他部分上存储“0xff”。
例如,在高速缓存行部182b、183b、184b、...、186b、187b的开头上分别存储作为反变换标准S盒800的阵列元素的阵列元素852“InvS[01]”、阵列元素853“InvS[02]”、阵列元素854“InvS[03]”、...、阵列元素855“InvS[fc]”、阵列元素856“InvS[fd]”、阵列元素857“InvS[fe]”和阵列元素858“InvS[ff]”。
1.5个人计算机200的动作
说明个人计算机200的动作。另外,微处理器201的动作与微处理器101的动作相同,所以省略说明。
(1)基于AES解密程序234的解密的动作
使用图26所示的数据处理图来说明基于AES解密程序234的解密的动作。这里,如该图所示,使用128比特的输入密钥K701,从128比特的密文数据CT703生成128比特的解密电文数据DT709。
基于AES解密程序234的解密的动作如该图所示,由密钥调度的步骤702、AddRoundKey处理的步骤704、10段的处理705、706...、707、708构成。
根据输入密钥K701,通过KeySchedule处理模块608,而生成11个扩展密钥SK0、SK1、SK2、...、SK9、SK10(步骤702),并将所生成的扩展密钥SK0、SK1、SK2、...、SK9、SK10分配到各AddRoundKey处理(步骤S711、S712、713、...、714、715)。
接着,通过AddRoundKey处理模块602来使用扩展密钥SK0进行AddRoundKey处理(步骤704)。
接着,在第一段的处理705中,通过InvShiftRows处理模块606,来进行InvShiftRows处理(步骤721),通过InvSubBytes处理模块605,来进行InvSubBytes处理(步骤722),通过AddRoundKey处理模块602,使用扩展密钥SK1,来进行AddRoundKey处理(步骤723),通过InvMixColumns处理模块607,来进行InvMixColumns处理(步骤724)。
接着,在第二段的处理706中,通过InvShiftRows处理模块606,来进行InvShiftRows处理(步骤731),通过InvSubBytes处理模块605,来进行InvSubBytes处理(步骤732),通过AddRoundKey处理模块602,使用扩展密钥SK2来进行AddRoundKey处理(步骤733),通过InvMixColumns处理模块607,来进行InvMixColumns处理(步骤734)。
同样,在第3段到第8段的各段的处理中,进行InvShiftRows处理、InvSubBytes处理、AddRoundKey处理和InvMixColumns处理。
接着,在第九段的处理707中,通过InvShiftRows处理模块606,来进行InvShiftRows处理(步骤741),通过InvSubBytes处理模块605,来进行InvSubBytes处理(步骤742),通过AddRoundKey处理模块602使用扩展密钥SK9来进行AddRoundKey处理(步骤743),通过InvMixColumns处理模块607,来进行InvMixColumns处理(步骤744)。
最后,在第十段的处理708中,通过InvShiftRows处理模块606,来进行InvShiftRows处理(步骤751),通过InvSubBytes处理模块605,来进行InvSubBytes处理(步骤752),通过AddRoundKey处理模块602使用扩展密钥SK10来进行AddRoundKey处理(步骤753)。
这样,生成了128比特的解密数据DT709。
(2)各InvRound处理或InvFinalRound处理中的InvSubBytes处理和AddRoundKey处理的详细的动作
接着,使用图27所示的数据处理图来说明各InvRound处理或InvFinalRound处理中的InvSubBytes处理和AddRoundKey处理的详细的动作。
各InvRound处理或InvFinalRound处理如图27所示,至少包含InvShiftRows处理771、InvSubBytes处理772和AddRoundKey处理773。
InvSubBytes处理772包含16个移位处理781、782、783、...、784和16个反变换变形S盒611的参照处理785、786、788、...789。
另外,AddRoundKey处理773包含16个异或逻辑运算791、792、793、...、794。
128比特的扩展密钥761分为16个8比特的部分密钥,16个部分密钥分别输出到AddRoundKey处理773的16个异或逻辑运算791、792、793、...、794(步骤762、763、764、...、765)。
在各InvRound处理或InvFinalRound处理中,在InvShiftRows处理771结束后,从InvShiftRows处理771输出128比特的块数据,将上述块数据分为16个8比特的部分数据,将16个部分数据分别输出到InvSubBytes处理772的16个移位处理781、782、783、...、784。
移位处理781接收第一部分数据(8比特),并将所接收的第一部分数据左移位3比特,而得到11比特的第一移位数据。这里,所得到的第一移位数据的高位的8比特是与上述第一部分数据相同的数据,上述第一移位数据的低位3比特是“000”(二进制表现)。接着,将所得到的第一移位数据输出到参照处理785。
参照处理785接收第一移位数据,并将所接收的第一移位数据作为地址,而参照反变换变形S盒611,取得8比特的第一阵列元素,并将所取得的第一阵列元素输出到AddRoundKey处理773的异或逻辑运算791。
异或逻辑运算791接收第一阵列元素(8比特),接收第一部分密钥(8比特),并对所接收的第一阵列元素和所接收的第一部分密钥实施异或运算,而得到8比特的第一运算数据。
同样,移位处理782将第二部分数据(8比特)左移位3比特,而得到11比特的第二移位数据,参照处理786将所接收的第二移位数据作为地址,来参照反变换变形S盒611,取得8比特的第二阵列元素,异或逻辑运算792对第二阵列元素和第二部分密钥来实施异或逻辑运算,而得到8比特的第二运算数据。
同样,移位处理783将第三部分数据(8比特)左移位3比特,而得到11比特的第三移位数据,参照处理788将所接收的第三移位数据作为地址,来参照反变换变形S盒611,取得8比特的第三阵列元素,异或逻辑运算793对第三阵列元素和第三部分密钥来实施异或逻辑运算,而得到8比特的第三运算数据。
同样,得到第4到第15的阵列元素。
进一步,同样地,移位处理784将第16部分数据(8比特)左移位3比特,而得到11比特的第16移位数据,参照处理789将所接收的第16移位数据作为地址,来参照反变换变形S盒611,取得8比特的第16阵列元素,异或逻辑运算794对第16阵列元素和第16部分密钥来实施异或逻辑运算,而得到8比特的第16运算数据。
这样,取得了第1到第16的阵列元素(16个运算数据)。
接着,第1到第16运算数据以该顺序来结合而生成128比特的数据。
2.变形例(1)
说明内容服务器装置100的存储部103存储的AES加密程序133的变形例。
AES加密程序133也可代替变形S盒511,来包含图28所示的变形S盒911。另外,这时,AES加密程序133代替SubBytes处理模块505,包含SubBytes处理模块505a(图中未示)。SubBytes处理模块505a代替3比特的移位的处理,来包含2比特的左移位的处理。
(变形S盒911)
变形S盒911如图28所示,由1024个的阵列元素921、931、932、933、934、935、936、923、...、924、...、925、...926、...、927、...、928、...构成。
构成变形S盒911的各阵列元素在图28中,为了表现上方便,按128行×8列的矩阵状来进行配置。
第一列的128个阵列元素921、923、...、925、927分别具有值S[00]、值S[02]、值S[04]、值S[06]、...、值S[f8]、值S[fa]、值S[fc]、值S[fe]。这里,值S[00]、值S[02]、值S[04]、值S[06]、...、值S[f8]、值S[fa]、值S[fc]、值S[fe]与上述标准S盒380中包含的相同。
第二列的256个的阵列元素分别具有值“0xff”。这里,“0x”表示接着的数字是基于16进制数的表现。
第3列~第4列中包含的各阵列元素也具有值“0xff”。
第5列的128个阵列元素922、924、...、926、928分别具有S[01]、值S[03]、值S[05]、值S[07]、...、值S[f9]、值S[fb]、值S[fd]、值S[ff]。这里,值S[01]、值S[03]、值S[05]、值S[07]、...、值S[f9]、值S[fb]、值S[fd]、值S[ff]与上述的标准S盒380中包含的相同。
第6列的256个阵列元素分别具有值“0xff”。
第7列~第8列中包含的各阵列元素也具有值“0xff”。
这样,在将变形S盒911中包含的多个阵列元素看作按128行×8列的矩阵状进行配置的情况下,在变形S盒911中,在第一列的128个各阵列元素上配置具有标准S盒380中包含的偶数的阵列元素的各阵列元素,在第五列的128个各阵列元素上配置具有标准S盒380中包含的奇数的阵列元素的各阵列元素,在第2~第4列和第6列~第8列的各阵列元素上配置值“0xff”。
这样,在变形S盒911中,对于4个连续配置的阵列元素,其开头的阵列元素具有与标准S盒380中包含的阵列元素相同的值,其他的阵列元素具有没有含义的“0xff”。
(SubBytes处理模块505a)
在基于SubBytes处理模块505a的SubBytes处理中,接收128比特的块数据,将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),并如图29所示,将各部分块数据左移位2比特(步骤902)。这样,对于16个的部分块数据分别生成10比特的数据。接着,对所生成的10比特的数据实施变形S盒911的参照处理,来输出8比特数据(步骤903)。
另外,如上所述,在基于SubBytes处理模块505a的SubBytes处理中,进行16个2比特的左移位处理和16个变形S盒911的参照处理,但为了使显示简便,在图29中,仅表示了在这16个左移位处理和16个参照处理中、由一个左移位处理902和一个参照处理903构成的组901。
这样,对16个部分块数据,来实施2比特的左移位和变形S盒911的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据而生成128比特的块数据后输出。
如上所述,将各部分块数据左移位2比特基于下面的理由。
通过左移位2比特,各部分块数据变为4倍。由于变形S盒911中,对于连续配置的4个阵列元素中开头的1个,配置了有效的阵列元素S[xx],所以将4倍各部分块数据得到的数据作为地址,并通过参照变形S盒911,仅得到了有效的阵列元素S[xx]。
另外,SubBytes处理模块505a根据上述的理由,也可代替2比特的左移位,而包含进行4倍乘法的乘法处理。
(数据部的一例)
在数据部175的高速缓存行部181、182、...上,通过上述的SubBytes处理,来存储了变形S盒911的内容的情况下的一例在图30中作为数据部175c来表示。
若基于图30,则从数据部175c的开头向128个高速缓存行部181c、182c、183c、184c、....原样存储变形S盒911的内容。
即,高速缓存行部181c存储阵列元素941“S[00]”、阵列元素951“0xff”、阵列元素952“0xff”、阵列元素953“0xff”、阵列元素942“S[01]”、阵列元素954“0xff”、阵列元素955“0xff”和阵列元素956“0xff”。另外,在其他高速缓存行部中,在其第一和第五个上存储标准S盒380的阵列元素,在其他部分上存储“0xff”。
另外,在128个高速缓存行部182c、183c、184c、...的开头的阵列元素上分别存储作为标准S盒380的阵列元素的阵列元素943“S[02]”、...、阵列元素945“S[fc]”和阵列元素947“S[fe]”。
另外,在128个高速缓存行部182c、183c、184c、...的第五个的阵列元素上分别存储作为标准S盒380的阵列元素的阵列元素944“S[03]”、...、阵列元素946“S[fd]”和阵列元素948“S[ff]”。
这样,在数据部175c的各高速缓存行部上仅存储了2个标准S盒380的阵列元素。
(AES解密程序234中的使用)
在个人计算机200的存储部203存储的AES解密程序234中也可与上述相同。
即,AES解密程序234中,也可代替反变换变形S盒611,包含与图28所示的变形S盒911同样构成的反变换变形S盒。这时,AES解密程序234的InvSubBytes处理模块605与SubBytes处理模块505a相同,也可代替3比特的左移位的处理,而包含2比特的左移位的处理。
3.变形例(2)
说明内容服务器装置100的存储部103存储的AES加密程序133的另一变形例。
AES加密程序133也可代替变形S盒511,来包含图31所示的变形S盒1011。这时,AES加密程序133代替SubBytes处理模块505,而包含SubBytes处理模块505b(图中未示)。SubBytes处理模块505b可代替3比特的左移位的处理,而包含1比特的左移位的处理和mod512下与值“1”的相加处理。
(变形S盒1011)
变形S盒1011如图31所示,由512个的阵列元素1041、1031、1042、1032、1043、1033、1044、1034、...、1035、...、1036、...、1037、...、1038构成。
构成变形S盒1011的各阵列元素在图31中,为了表现上方便,按64行×8列的矩阵状进行配置。
第二列的64个阵列元素1031、...、1035分别具有值S[00]、值S[04]、值S[08]、值S[12]、...、值S[f0]、值S[f4]、值S[f8]、值S[fc]。这里,值S[00]、值S[04]、值S[08]、值S[12]、...、值S[f0]、值S[f4]、值S[f8]、值S[fc]与上述标准S盒380中包含的相同。
第4列的64个阵列元素1032、...、1036分别具有值S[01]、值S[05]、值S[09]、值S[13]、...、值S[f1]、值S[f5]、值S[f9]、值S[fd]。这里,值S[01]、值S[05]、值S[09]、值S[13]、...、值S[f1]、值S[f5]、值S[f9]、值S[fd]与上述标准S盒380中包含的相同。
第6列的64个阵列元素1033、...、1037分别具有值S[02]、值S[06]、值S[10]、值S[14]、...、值S[f2]、值S[f6]、值S[fa]、值S[fe]。这里,值S[02]、值S[06]、值S[10]、值S[14]、...、值S[f2]、值S[f6]、值S[fa]、值S[fe]与上述标准S盒380中包含的相同。
第8列的64个阵列元素1034、...、1038分别具有值S[03]、值S[07]、值S[11]、值S[15]、...、值S[f3]、值S[f7]、值S[fb]、值S[ff]。这里,值S[03]、值S[07]、值S[11]、值S[15]、...、值S[f3]、值S[f7]、值S[fb]、值S[ff]与上述标准S盒380中包含的相同。
第一列的64个阵列元素分别具有值“0xff”。这里,“0x”表示接着的数字用16进制数来表示。
第3列、第5列和第7列中包含的各阵列元素也具有值“0xff”。
这样,变形S盒1011中,对于2个连续配置的阵列元素,其开头的阵列元素具有没有含义的值“0xff”,其他阵列元素具有与标准S盒380中包含的阵列元素相同的值。
(SubBytes处理模块505b)
在基于SubBytes处理模块505b的SubBytes处理中,接收128比特的块数据,将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),并如图32所示,将各部分块数据左移位1比特(步骤1002)。这样,对于16个部分块数据分别生成9比特的数据。接着,对所生成的9比特的数据和值“1”实施mod512下的相加而得到9比特的相加数据(步骤1003)。
即,(相加数据)=(9比特的数据)+1mod 512
接着,对所生成的各9比特的相加数据来实施变形S盒1011的参照处理,输出8比特数据(步骤1004)。
另外,如上所述,在基于SubBytes处理模块505b的SubBytes处理中,进行16个1比特的左移位处理和16个mod 512下与值“1”的相加运算以及16个变形S盒1011的参照处理。为了使显示简便,在图32中,仅表示了在这些16个左移位处理、16个相加处理和16个参照处理中,由一个左移位处理1002、一个相加处理1003和一个参照处理1004构成的组1001。
这样,对16个部分块数据,来实施1比特的左移位、mod 512的相加和变形S盒1011的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据而生成128比特的块数据后输出。
这样,将各部分块数据左移位1比特,并进一步进行mod 512下的值“1”的相加基于下面的理由。
通过左移位1比特,并进一步进行mod 512的加1,而使各部分数据2倍后,加“1”。由于对于变形S盒1011中,连续配置的2个阵列元素中的后一个配置有效的阵列元素S[xx],所以通过将各部分块数据2倍,并进一步加“1“得到的数据作为地址,而参照变形S盒1011,仅得到了有效的阵列元素S[xx]。
另外,SubBytes处理模块505b由于上述的理由,也可代替1比特的左移位的处理,而包含进行2倍的乘法的乘法处理。
这样,若对变形S盒中,连续配置的2个阵列元素中的第二个阵列元素配置有效的阵列元素S[xx],则如上所述,将使各部分块数据为2倍,并进一步加“1”得到的数据作为地址,来参照上述另一变形S盒,从而仅得到了有效的阵列元素S[xx]。
在另一变形S盒中,若设连续配置的8个阵列元素中,对第3个的阵列元素配置有效的阵列元素S[xx],则如上所述,将使各部分块数据8倍,并进一步加“1”得到的数据作为地址,来参照上述另一变形S盒,从而仅得到了有效的阵列元素S[xx]。
在另一变形S盒中,若设连续配置的8个阵列元素中,对第4个的阵列元素配置有效的阵列元素S[xx],则如上所述,将使各部分块数据为8倍,并进一步加“3”得到的数据作为地址,来参照上述另一变形S盒,从而仅得到了有效的阵列元素S[xx]。
(数据部的一例)
在数据部175的高速缓存行部181、182、...上,通过上述的SubBytes处理,来存储了变形S盒1011的内容的情况下的一例在图33中作为数据部175d来表示。
从数据部175d的开头向64个高速缓存行部181d、182d、183d、184d、....原样存储变形S盒1011的内容。
即,高速缓存行部181d存储阵列元素1061“0xff”、阵列元素1051“S[00]”、阵列元素1062“0xff”、阵列元素1052“S[01]”、阵列元素1063“0xff”、阵列元素1053“S[02]”、阵列元素1064“0xff”和阵列元素1054“S[03]”。另外,在其他高速缓存行部中,在其第2、第4、第6和第8个的阵列元素中存储标准盒380的阵列元素,在其他的阵列元素中存储“0xff”。
另外,在64个高速缓存行部182d、183d、184d、...的第2阵列元素上分别存储作为标准S盒380的阵列元素的阵列元素“S[04]”、“S[08]”、“S[12]”、...、“S[f0]”、“S[f4]”、“S[f8]”和“S[fc]”。
另外,在64个高速缓存行部182d、183d、184d、...的第4阵列元素上分别存储作为标准S盒380的阵列元素的阵列元素“S[05]”、“S[09]”、“S[13]”、...、“S[f1]”、“S[f5]”、“S[f9]”和“S[fd]”。
另外,在64个高速缓存行部182d、183d、184d、...的第6阵列元素上分别存储作为标准S盒380的阵列元素的阵列元素“S[06]”“S[10]”、“S[14]”、...、“S[f2]”、“S[f5]”、“S[fa]”和“S[fe]”。
另外,在64个高速缓存行部182d、183d、184d、...的第8阵列元素上分别存储作为标准S盒380的阵列元素的阵列元素“S[07]”、“S[11]”、“S[15]”、...、“S[f3]”、“S[f7]”、“S[fb]”和“S[ff]”。
这样,在数据部175d的各高速缓存行部上仅存储4个标准S盒380的阵列元素。
(AES解密程序234中的使用)
在个人计算机200的存储部203存储的AES解密程序234中也可与上述相同。
即,AES解密程序234中,也可代替反变换变形S盒611,包含与图31所示的变形S盒1011同样构成的反变换变形S盒。这时,AES解密程序234的InvSubBytes处理模块605与SubBytes处理模块505b相同,也可代替3比特的左移位的处理,而包含1比特的左移位的处理和mod 512下的值“1”的相加处理。
4.变形例(3)
说明内容服务器装置100的存储部103存储的AES加密程序133的又一变形例。
AES加密程序133也可代替变形S盒511,来包含图34所示的变形S盒1121。这时,AES加密程序133代替SubBytes处理模块505,而包含SubBytes处理模块505c(图中未示)。SubBytes处理模块505c可代替3比特的左移位的处理,而包含mod 256下的乘法的处理。
(变形S盒1121)
变形S盒1121如图34所示,由256个阵列元素1131、1132、1133、1134、1135、1136、1137、1138、1139、1140、1141、1142、1143、1144、1145、1146、...构成。这些阵列元素通过阵列号“0”、“1”、“2”、“3”、...、“255”来加以识别。
构成变形S盒1121的各阵列元素在图34中,为了表现上方便,按32行×8列的矩阵状进行配置。
第1行的8个阵列元素1131、...、1138分别具有值S[0]、值S[81]、值S[162]、值S[243]、值S[68]、值S[149]、值S[230]、值S[55]。这里,值S[0]、值S[81]、值S[162]、值S[243]、值S[68]、值S[149]、值S[230]、值S[55]与上述标准S盒380中包含的相同。另外,这里,S[xx]中,xx是基于10进制数的表示。
第2行的8个阵列元素1139、...、1146分别具有值S[136]、值S[217]、值S[42]、值S[123]、值S[204]、值S[29]、值S[110]、值S[191]。这里,值S[136]、值S[217]、值S[42]、值S[123]、值S[204]、值S[29]、值S[110]、值S[191]与上述标准S盒380中包含的相同。另外,这里,S[xx]中,xx是基于10进制数的表示。
第3行到第32行的各阵列元素也与上述的标准S盒380中包含的阵列元素相同。其中,图34的变形S盒1121中,省略第3行到第32行的各阵列元素的表示。
(变形S盒1121的排列规则)
变形S盒1121中,根据下面说明的规则,来存储在上述的标准S盒380中存储的各阵列元素。
分别对于作为整数的256个输入值A(0、1、2、...、255)计算A×177mod 256。图35所示的对应表1122表示各输入值A和对应的计算结果。
对应表1122对应地表示256个输入值A和基于A×177mod256的计算结果。其中,图35所示的对应表1122中,因纸张情况的理由,仅显示其一部分,而并非是表示对应于所有的A值的计算结果,对于其他,省略表示。
这里,例如,对于输入值A=0的A×177mod 256的计算结果是“0”,对于输入值A=81的计算结果是“1”,对于输入值A=162的计算结果是“2”,对于输入值A=243的计算结果是“3”,对于输入值A=68的计算结果是“4”。
作为一例,如下这样来决定由变形S盒1121的阵列号“0”表示的阵列元素1131上存储的标准S盒380的阵列元素。从对应表1122中寻找与阵列号“0”具有相同的值的计算结果“0”,而取得对应于计算结果的输入值A“0”。接着,将以所取得的输入值A“0”作为阵列号的阵列元素S[0]作为由变形S盒1121的阵列号“0”表示的阵列元素1131的值。
另外,作为另一例,如下这样来决定由变形S盒1121的阵列号“1”表示的阵列元素1132上存储的标准S盒380的阵列元素。从对应表1122中寻找与阵列号“1”具有相同的值的计算结果“1”,而取得对应于计算结果的输入值A“81”。接着,将以所取得的输入值A“81”作为阵列号的阵列元素S[81]作为由变形S盒1121的阵列号“1”表示的阵列元素1132的值。
另外,作为另一例,如下这样来决定由变形S盒1121的阵列号“2”表示的阵列元素1133上存储的标准S盒380的阵列元素。从对应表1122中寻找与阵列号“2”具有相同的值的计算结果“2”,而取得对应于计算结果的输入值A“162”。接着,将以所取得的输入值A“162”作为阵列号的阵列元素S[162]作为由变形S盒1121的阵列号“2”表示的阵列元素1132的值。
下面相同。
这样,在变形S盒1121中,通过上述的规则,来配置标准S盒380中包含的阵列元素。
另外,上述中,使用对于输入值A的计算结果A×177mod 256,对输入值A乘以“177”,但是并不限于“177”。也可乘以其他的奇数的值。
另外,虽然在mod 256下进行乘法,但是这里,值“256”依赖于作为变换对象的数据取得的长度(例如比特长度),换言之,依赖于作为变换对象的数据可取的值的种类数目。上述实施方式和变形例中,由于作为变换对象的数据是8比特,所以其数据的取得值的种类数是256。如上所述,通过在mod 256下进行相乘,通过该相乘得到的相乘值可取的值的种类数目为与作为变换对象的数据相同的256。
(SubBytes处理模块505c)
在基于SubBytes处理模块505c的SubBytes处理中,接收128比特的块数据,将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),并如图36所示,在mod 256下,对各部分块数据乘以值“177”(步骤1102)。这样,对于16个部分块数据的每一个,生成8比特的相乘值。接着,对所生成的各8比特的相乘值实施变形S盒1121的参照处理,来输出8比特数据(步骤1103)。
另外,如上所述,在基于SubBytes处理模块505c的SubBytes处理中,进行了16个mod 256下的相乘处理和16个变形S盒1121的参照处理,但是为了使显示方便,在图36中,仅表示了这16个相乘处理和16个参照处理中,一个相乘处理1102和一个参照处理1103构成的组1101。
这样,对于16个部分块数据,来实施mod 256的相乘和变形S盒1121的参照处理。结果,生成了16个8比特数据。连接所生成的16个8比特数据而生成128比特的块数据。
如上所述,在mod 256下,对各部分块数据乘以值“177”基于下面的理由。
作为一例,设部分块数据是“81”。这时,通过上述的相乘,得到了
81×177mod 256=1。
接着,若将所得到的“1”作为阵列号而参照变形S盒1121,则得到了阵列元素S[81]。
另外,作为一例,设部分块数据是“162”。这时,通过上述的相乘,得到了
162×177mod 256=2。
接着,若将所得到的“2”作为阵列号来参照变形S盒1121,则得到了阵列元素S[162]。
这样,通过对各部分块数据,在mod 256下,乘以值“177”,并将所得到的相乘值作为地址,来参照变形S盒1121,从而得到了适当对应于各部分块数据的有效的阵列元素S[xx]。
(数据部的一例)
在数据部175的高速缓存行部181、182、...上,通过上述的SubBytes处理,来存储了变形S盒1121的内容的情况下的一例在图37中作为数据部175e来表示。
从数据部175e的开头向32个高速缓存行部181e、182e....原样存储变形S盒1121的内容。
即,高速缓存行部181e上存储阵列元素1151“S[0]”、阵列元素1152“S[81]”、阵列元素1153“S[162]”、阵列元素1154“S[243]”、阵列元素1155“S[68]”、阵列元素1156“S[149]”、阵列元素1157“S[230]”和阵列元素1158“S[55]”。
高速缓存行部182e上存储阵列元素1159“S[136]”、阵列元素1160“S[217]”、阵列元素1161“S[42]”、阵列元素1162“S[123]”、阵列元素1163“S[204]”、阵列元素1164“S[29]”、阵列元素1165“S[110]”和阵列元素1166“S[191]”。
另外,在其他的高速缓存行部中,与上述相同,存储变形S盒1121的一行的8个阵列元素。
(AES解密程序234中的使用)
在个人计算机200的存储部203存储的AES解密程序234中也可与上述相同。
即,AES解密程序234中,也可代替反变换变形S盒611,包含与图34所示的变形S盒1211同样构成的反变换变形S盒。这时,AES解密程序234的InvSubBytes处理模块605与SubBytes处理模块505c相同,也可代替3比特的左移位处理,而包含mod 512下的值“177”的相乘的处理。
5.变形例(4)
说明内容服务器装置100的存储部103存储的AES加密程序133的又一变形例。
AES加密程序133也可代替变形S盒511,来包含图38所示的变形S盒1221。这时,AES加密程序133代替SubBytes处理模块505,而包含SubBytes处理模块505d(图中未示)。SubBytes处理模块505d可代替3比特的左移位的处理,而包含mod 256下的相乘的处理和左移位1比特的处理。
(变形S盒1221)
变形S盒1221如图38所示,由512个的阵列元素1231、1241、1232、1242、1233、1243、1234、1244、1235、...、1236、...、1237、...、1238、...构成。
构成变形S盒1221的各阵列元素在图38中,为了表现上方便,按64行×8列的矩阵状进行配置。
在变形S盒1221中,如图34所示的变形S盒1121中存储的各阵列元素S[xx]在保持其在变形S盒1121中的配置顺序的同时,隔一个地进行存储。另外,在这些阵列元素之间,存储着“0xff”。
例如,在变形S盒1221的第1行的8个阵列元素1231、1241、1232、1242、1233、1243、1234、1244分别具有值S[0]、“0xff”、值S[81]、“0xff”、值S[162]、“0xff”、值S[243]、“0xff”。这里,值S[0]、值S[81]、值S[162]、值S[243]与图34所示的变形S盒1121的第一行的开头的4个阵列元素相同。
另外,变形S盒1221的第二行的8个阵列元素1235、...、1236、...、1237、...、1238、...分别具有值S[68]、“0xff”、值S[149]、“0xff”、值S[230]、“0xff”、值S[55]、“0xff”。这里,值S[68]、值S[149]、值S[230]、值S[55]与图34所示的变形S盒1121的第一行的后半部分的4个阵列元素相同。
这里,S[xx]中,xx是基于10进制的表示。
(SubBytes处理模块505d)
在基于SubBytes处理模块505d的SubBytes处理中,接收128比特的块数据,并将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),如图39所示,在mod 256下,对各部分块数据乘以“177”(步骤1202)。这样,对于16个部分块数据的每一个,生成8比特的相乘值。接着,将所生成的相乘值左移位1比特而生成9比特的移位数据(步骤1203)。这样,分别对于16个相乘值,生成9比特的移位数据。接着,对所生成的各9比特的移位数据实施变形S盒1221的参照处理,而输出8比特数据(步骤1204)。
如上所述,在基于SubBytes处理模块505d的SubBytes处理中,进行了16个mod 256下的相乘处理、16个左移位处理、16个变形S盒1221的参照处理,但是为了表示方便,在图39中,仅表示了这16个相乘处理、16个移位处理和16个参照处理中,由1个相乘处理1202、一个移位处理1203和一个参照处理1204构成的组1201。
这样,对于16个部分块数据来实施mod 256的乘法、1比特的左移位处理和变形S盒1221的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据来生成128比特的块数据后输出。
如上所述,mod 256下,对各部分块数据乘以值“177”如在变形例(4)中所说明的那样。另外,进行1比特的左移位处理如变形例(2)中所说明的那样。
这样,对各部分块数据在mod 256下乘以值“177”,并进一步,对所得到的相乘值实施1比特的左移位处理,而得到移位数据,并将所得到的移位数据作为地址,参照变形S盒1221,从而得到了适当对应于各部分块数据的有效的阵列元素S[xx]。
另外,在SubBytes处理模块505d中,也可代替1比特的左移位的处理,而包含进行2倍相乘的乘法处理。
(数据部的一例)
在数据部175的高速缓存行部181、182、...上通过上述的SubBytes处理,来存储了变形S盒1221的内容的情况下的一例在图40中作为数据部175f来表示。
从数据部175f的开头向64个高速缓存行部181f、182f、...原样存储变形S盒1221的内容。
即,在高速缓存行部181f上存储阵列元素1251“S[0]”、阵列元素1261“0xff”、阵列元素1252“S[81]”、阵列元素1262“0xff”、阵列元素1253“S[162]”、阵列元素1263“0xff”、阵列元素1254“S[243]”和阵列元素1264“0xff”。
另外,在高速缓存行部182f上存储阵列元素1255“S[68]”、“0xff”、阵列元素1256“S[149]”、“0xff”、阵列元素1257“S[230]”、“0xff”、阵列元素1258“S[55]”、“0xff”。
这样,在数据部175f的各高速缓存行部上存储变形S盒1221的一行中包含的8个阵列元素。
(AES解密程序234中的使用)
在个人计算机200的存储部203存储的AES解密程序234中也可与上述相同。
即,AES解密程序234中,也可代替反变换变形S盒611,包含与图38所示的变形S盒1221同样构成的反变换变形S盒。这时,AES解密程序234的InvSubBytes处理模块605与SubBytes处理模块505d相同,也可代替3比特的左移位的处理,而包含mod 256下的值“177”的相乘处理和1比特的左移位处理。
6.变形例(5)
说明内容服务器装置100的存储部103存储的AES加密程序133的又一变形例。
AES加密程序133也可代替变形S盒511,来包含图41所示的变形S盒1311。这时,AES加密程序133代替SubBytes处理模块505,而包含SubBytes处理模块505e(图中未示)。SubBytes处理模块505e可代替3比特的左移位的处理,而包含mod 256下的相乘的处理、1比特的左移位处理和mod 512下的相加处理。
(变形S盒1311)
变形S盒1311如图41所示,由512个阵列元素1331、1321、1332、1322、1333、1323、1334、1324、...、1325、...、1326、...、1327、...1328、...构成。
构成变形S盒1311的各阵列元素在图41中,为了表现上方便,按64行×8列的矩阵状进行配置。
变形S盒1311中,在其开头存储“0xff”,之后,图34所示的变形S盒1121中存储的各阵列元素S[xx]保持在变形S盒1121中的配置的顺序,同时隔开一个来进行存储。另外,在这些阵列元素之间存储“0xff”。
例如,变形S盒1311的第1行的8个阵列元素1331、1321、1332、1322、1333、1323、1334、1324分别具有“0xff”、值S[0]、“0xff”、值[81]、“0xff”、值[162]、“0xff”、值[243]。这里,值S[0]、值[81]、值[162]、值[243]与图34所示的变形S盒1121的第一行的开头的4个阵列元素相同。
变形S盒1311的第2行的8个阵列元素...、1325、...、1326...、1327、...、1328分别具有值“0xff”、S[68]、“0xff”、值S[149]、“0xff”、值S[230]、“0xff”、值S[55]。这里,值S[68]、值S[149]、值S[230]、值S[55]与图34所示的变形S盒1121的第1行的后半部分的4个阵列元素相同。
这里,S[xx]中,xx是基于10进制的表示。
(SubBytes处理模块505e)
在基于SubBytes处理模块505e的SubBytes处理中,接收128比特的块数据,并将所接收的128比特的块数据分为16个8比特的部分块数据(8比特×16=128比特),如图42所示,在mod 256下,对各部分块数据乘以“177”(步骤1302)。这样,对于16个部分块数据的每一个,生成8比特的相乘值。接着,将所生成的相乘值左移位1比特而生成9比特的移位数据(步骤1303)。这样,对于16个相乘值的每一个,生成9比特的移位数据。接着,在mod 512下,对所生成的9比特的移位数据相加值“1”,来生成9比特的相加值(步骤S1304)。接着,对所生成的各9比特的相加值来实施变形S盒1311的参照处理,而输出8比特数据(步骤1305)。
如上所述,在基于SubBytes处理模块505e的SubBytes处理中,进行了16个mod 256下的相乘处理、16个左移位处理、16个mod 512下的相加处理和16个变形S盒1311的参照处理,但是为了表示方便,在图42中,仅表示了这16个相乘处理、16个移位处理、16个相加处理和16个参照处理中,由1个相乘处理1302、一个移位处理1303、一个相加处理1304和一个参照处理1305构成的组1301。
这样,对于16个部分块数据来实施mod 256的相乘、1比特的左移位处理、mod 512的相加和变形S盒1311的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据来生成128比特的块数据后输出。
如上所述,mod 256下,对各部分块数据乘以值“177”如在变形例(4)中所说明的那样。另外,进行1比特的左移位处理如在变形例(2)中所说明的。另外,在mod 512下,进行相加如在变形例(2)中所说明的。
这样,对各部分块数据在mod 256下乘以值“177”,并进一步,对所得到的相乘值实施1比特的左移位处理,而得到移位数据,在mod 256下,对所得到的移位数据加上值“1”来得到相加值,并将所得到的相加值作为地址,参照变形S盒1311,从而得到了适当对应于各部分块数据的有效的阵列元素S[xx]。
另外,在SubBytes处理模块505e中,也可代替1比特的左移位的处理,而包含进行2倍的相乘的乘法处理。
(数据部的一例)
在数据部175的高速缓存行部181、182、...上通过上述的SubBytes处理,来存储了变形S盒1221的内容的情况下的一例在图43中作为数据部175g来表示。
从数据部175g的开头向64个高速缓存行部181g、182g、...原样存储变形S盒1311的内容。
即,在高速缓存行部181g上存储阵列元素1351“0xff”、阵列元素1341“S[0]”、阵列元素1352“0xff”、阵列元素1342“S[81]”、阵列元素1352“0xff”、阵列元素1343“S[162]”、阵列元素1353“0xff”和阵列元素1344“S[243]”。
另外,在高速缓存行部182g上存储“0xff”、阵列元素1345“S[68]”、“0xff”、阵列元素1346“S[149]”、“0xff”、阵列元素1347“S[230]”、“0xff”、阵列元素1348“S[55]”。
这样,在数据部175g的各高速缓存行部上存储变形S盒1311的一行中包含的8个阵列元素。
(AES解密程序234中的使用)
在个人计算机200的存储部203存储的AES解密程序234中也可与上述相同。
即,AES解密程序234中,也可代替反变换变形S盒611,包含与图41所示的变形S盒1311同样构成的反变换变形S盒。这时,AES解密程序234的InvSubBytes处理模块605与SubBytes处理模块505e相同,也可代替3比特的左移位的处理,而包含mod 256下的值“177”的相乘的处理、1比特的左移位处理和mod 512下的值“1”的相加处理。
7.变形例(6)
说明内容服务器装置100的存储部103存储的AES加密程序133的又一变形例。
AES加密程序133也可代替变形S盒511,来包含图44所示的变形S盒1421和图45所示的变形S盒1441。这时,AES加密程序133代替SubBytes处理模块505,而包含SubBytes处理模块505f(图中未示)。后面描述SubBytes处理模块505f。
(变形S盒1421)
变形S盒1421如图44所示,由256个阵列元素1431、1432、1433、1434、1435、1436、1437、1438、...构成。变形S盒1421与图34所示的变形S盒1121相同。这里,省略对于变形S盒1421的说明。
(变形S盒1441)
变形S盒1441通过与图34所示的变形S盒1121类似的考虑来生成,如图45所示,由256个阵列元素1451、1452、1453、1454、1455、1456、1457、1458、...构成。这些阵列元素由阵列号“0”、“1”、“2”、“3”、...“255”来识别。
构成变形S盒1441的各阵列元素在图45中,为了表现上方便,按32行×8列的矩阵状进行配置。
第1行的8个阵列元素1451、...、1458分别具有值S[0]、值S[133]、值S[10]、值S[143]、值S[20]、值S[153]、值S[30]、值S[163]。这里,值S[0]、值S[133]、值S[10]、值S[143]、值S[20]、值S[153]、值S[30]、值S[163]与上述标准S盒380中包含的相同。另外,这里,S[xx]中,xx是基于10进制数的表示。
第2行的8个阵列元素分别具有值S[40]、值S[173]、值S[50]、值S[183]、值S[60]、值S[193]、值S[70]、值S[203]。这里,值S[40]、值S[173]、值S[50]、值S[183]、值S[60]、值S[193]、值S[70]、值S[203]与上述标准S盒380中包含的相同。另外,这里,S[xx]中,xx是基于10进制数的表示。
第3行到第32行的各阵列元素也与上述的标准S盒380中包含的阵列元素相同。其中,图45的变形S盒1441中,省略第3行到第32行的各阵列元素的表示。
(变形S盒1441的排列规则)
变形S盒1441中,根据下面说明的规则,来存储在上述的标准S盒380中存储的各阵列元素。该排列规则与图34所示的变形S盒1121中的排列规则类似。
这里,分别对于作为整数的256个输入值B(0、1、2、...、255)的每一个计算B×77mod 256。图46所示的对应表1442表示各输入值B和对应的计算结果。
对应表1422对应地表示256个输入值B和基于B×77mod 256的计算结果。但是,图46所示的对应表1422中,因纸张情况的理由,仅显示其一部分,而并非显示对应于所有的B值的计算结果,对于其他,省略表示。
这里,例如,对于输入值B=0的B×77mod 256的计算结果是“0”,对于输入值B=133的计算结果是“1”,对于输入值B=10的计算结果是“2”,对于输入值B=143的计算结果是“3”,对于输入值B=20的计算结果是“4”。
作为一例,如下这样来决定由变形S盒1441的阵列号“0”表示的阵列元素1451上存储的标准S盒380的阵列元素。从对应表1442中寻找与阵列号“0”具有相同的值的计算结果“0”,而取得对应于计算结果的输入值B“0”。接着,将以所取得的输入值B“0”作为阵列号的阵列元素S[0],作为由变形S盒1441的阵列号“0”表示的阵列元素1451的值。
另外,作为另一例,如下这样来决定由变形S盒1441的阵列号“1”表示的阵列元素1452上存储的标准S盒380的阵列元素。从对应表1442中寻找与阵列号“1”具有相同的值的计算结果“1”,而取得对应于计算结果的输入值B“133”。接着,将以所取得的输入值B“133”作为阵列号的阵列元素S[133],作为由变形S盒1441的阵列号“1”表示的阵列元素1452的值。
另外,作为另一例,如下这样来决定由变形S盒1441的阵列号“2”表示的阵列元素1453上存储的标准S盒380的阵列元素。从对应表1442中寻找与阵列号“2”具有相同的值的计算结果“2”,而取得对应于计算结果的输入值B“10”。接着,将以所取得的输入值B“10”作为阵列号的阵列元素S[10],作为由变形S盒1441的阵列号“2”表示的阵列元素1453的值。
下面相同。
这样,在变形S盒1441中,通过上述的规则,来配置标准S盒380中包含的阵列元素。
(SubBytes处理模块505f)
在基于SubBytes处理模块505f的SubBytes处理中,接收128比特的块数据,并将所接收的128比特的块数据分为16个8比特部分块数据(8比特×16=128比特)。
接着,如图47所示,对各部分块数据来进行下面所示的处理。
(a)生成随机数R。随机数R是值“0”和值“1”的其中之一(步骤1402)。
(b)判断所生成的随机数R是否是值“0”和值“1”的其中之一(步骤1403)。
(c)在所生成的随机数R是值“0”的情况下,在mod 256下,对该部分块数据乘以值“177”(步骤1406)。这样,生成8比特的相乘值。接着,对所生成的8比特的相乘值来实施变形S盒1421的参照处理,而输出8比特数据(步骤1407)。
(d)在所生成的随机数R是值“1”的情况下,在mod 256下,对该部分块数据乘以值“77”(步骤1408)。这样,生成8比特的相乘值。接着,对所生成的8比特的相乘值来实施变形S盒1441的参照处理,而输出8比特数据(步骤1409)。
另外,如上所述,在基于SubBytes处理模块505f的SubBytes处理中,进行了16个随机数生成处理、16个随机数判断处理、16个“mod 256下的与177的相乘处理”和“mod 256下的与77的相乘处理”的其中之一,但是为了表示方便,图47中,仅表示了一个随机数生成处理1402、一个随机数判断处理1403、“一个mod 256下的与177的相乘处理1406和一个变形S盒1421的参照处理1407”和“一个mod 256下的与77的相乘处理1408和一个变形S盒1441的参照处理1409”构成的组1401。
这样,对16个部分块数据,实施mod 256的177的相乘或者77的相乘、和变形S盒1421或1441的参照处理。结果,生成16个8比特数据。连接所生成的16个8比特数据而生成128比特的块数据后输出。
这样,对各部分块数据通过所生成的随机数,来进行mod 256下的值“177”的相乘或值“77”的相乘,对于各自的情况,分别通过参照变形S盒1421或1441,来得到适当对应于各部分块数据的有效的阵列元素S[xx]。
(数据部的一例)
在数据部175的高速缓存行部181、182、...上,通过上述的SubBytes处理,来存储变形S盒1421的内容的情况下的一例在图48中表示为数据部175h。另外,存储了变形S盒1441的内容的情况下的一例在图49中表示为数据部175i。
(AES解密程序234中的使用)
个人计算机200的存储部203存储的AES解密程序234中,也可与上述相同。
即,AES解密程序234也可代替反变换变形S盒611,包含与图44所示的变形S盒1421同样构成的反变换变形S盒和与图45所示的变形S盒1441同样构成的反变换变形S盒。另外,这时,AES解密程序234的InvSubBytes处理模块605可以与SubBytes处理模块505f相同,代替3比特的左移位的处理,而包含图47所示的各步骤的处理。
8.变形例(7)
说明内容服务器装置100的存储部103存储的AES加密程序133的又一变形例。
AES加密程序133也可代替SubBytes处理模块505,来包含图50所示的SubBytes处理模块1501。
SubBytes处理模块1501中,与通常的SubBytes处理相同,进行16次S盒的参照运算。进一步,在进行S盒的参照运算之前,或之后(图50中,表示了之后的情况),进行删除在高速缓存部162的数据部175上存储的所有的阵列元素的处理。
另外,作为删除在高速缓存部162上存储的数据的方法,有使用特别的命令的方法(Pentium(注册商标)的情况下的“INVD”命令或“WBINVD”命令)、或通过存取与位于存储部103上的加密处理没有关系的数据,将该数据复制到高速缓存部162上,而清除已经位于高速缓存部162上的阵列元素的方法。
在SubBytes处理模块1501中,如图50所示,进行S盒的参照处理(步骤S310),接着,通过与上述说明的方法,来进行删除在高速缓存部162上存储的阵列元素的处理(步骤S302)。
之后,在步骤S303~S314中,与步骤S301和S302相同,重复进行在S盒的参照处理i(i是2到16的自然数)之后,删除在高速缓存部162中存储的阵列元素的处理。
另外,在上述的变形例中,在存取S盒的阵列元素之后(或存取之前),调用高速缓存清除处理,但是并不限于此。
例如,也可仅在计数器是0或Nr-1时,在各16次的表参照运算之后,设置高速缓存清除处理,在是其他的计数值(1到Nr-2)的情况下,不进行高速缓存清除处理。这利用的是,定时攻击在估计接近于明文和密文的SubBytes处理(例如第一级到第Nr-1级)中的密钥时所需的计数量、比估计距明文和密文远的SubBytes处理(例如(Nr-1)/2级)中的密钥时所需的计算量多的情况。
这样,仅对容易进行某个特定的攻击的部分(例如通过计数器值来判断),来实施变形SubBytes处理,虽然对于定时攻击的抗力比上述的变形例差,但是由于减少了高速缓存清除处理的次数,所以具有处理速度提高的效果。
9.其他的变形例
另外,根据上述的实施方式说明了本发明,但是本发明当然并不限于上述的实施方式。本发明中还包含如下这样的情况。
(1)处理计算机程序的设备中包含的处理器并不限于图11的结构。例如,微处理器101也可代替高速缓存部162,而具有高速且容量更小的主高速缓存部162a和更低速且容量更大的辅助高速缓存部162b。
这时,运算部161首先对主高速缓存部162a进行数据读出,在主高速缓存部162a中没有该数据的情况下,对辅助高速缓存部162b进行读出。这时,有表要素从主高速缓存部162a中取得的情况、从辅助高速缓存部162b中取得的情况、和从存储部103中取得的情况这三种情况,而定时攻击利用依赖于输入消息,整体的处理时间同样变化的情况。
另外,微处理器101也可进一步具有第三高速缓存部等。
(2)上述的实施方式和变形例中,微处理器具有高速缓存部,但是本发明并不限于此。计算机系统也可包含微处理器、高速缓存部和存储部,而在微处理器内部不具有高速缓存部。
(3)上述实施方式和变形例中,设变形S盒511包含在AES加密程序133中,但是并不限于此。
AES加密程序133中包含的各模块(计算机程序)、和变形S盒511也可构成分开的数据集合(文件)。对于AES解密程序134也相同。
(4)上述的实施方式和变形例中,各变形S盒包含“0xff”来作为在标准S盒中不存在的伪数据,但是并不限于“0xff”。也可代替“0xff”而包含其他的数据。例如,各变形S盒也可代替“0xff”,包含通过随机数生成器生成的随机数,也可包含在标准S盒中存在的数据。
(5)上述实施方式中,如图8所示,Round处理模块503构成为包含命令码组S131、S132、S133和S134,这些命令码组在Round处理模块503内,以该顺序来进行排列,通过该顺序,执行各命令码组,但是并不限于此。
例如,代替Round处理模块503,变形Round处理模块构成为包含命令码组S132、S133、S134和S131,这些命令码组在变形Round处理模块内,以该顺序来进行排列,通过该顺序,来执行各命令码组也是可以的。这时,加密主模块调用命令码组S131,之后,调用预定次数的变形Round处理模块。
(6)上述实施方式中,微处理器101的高速缓存部具有64比特长的各高速缓存行部,但是高速缓存行部的比特长度并不限于此,也可具有其他长度的各高速缓存行部。这种情况下也可实现上述说明的情况。
(7)上述实施方式中,作为加密算法使用AES,但是并不限于此。例如,也可适用于DES(Data Encryption Standard:数据加密标准)等的加密算法。
另外,本发明不仅可适用于加密和解密。具体的,也可用于信息的篡改检查或数字签名等的用途。
(8)上述的各装置具体的是由微处理器、ROM、RAM、硬盘单元、显示器单元、键盘、鼠标等构成的计算机系统。在上述RAM或上述硬盘单元上存储计算机程序。这里,计算机程序为了实现预定的功能,组合多个表示对于计算机的指示的命令码来构成。上述微处理器通过根据上述计算机程序来动作,各装置来实现其功能。即,上述微处理器一个一个地读出上述计算机程序中包含的各命令,解读所读出的命令,并根据解读结果来进行动作。
(9)构成上述的各装置的构成要素的一部分或全部也可由一个系统LSI(Large Scale Integration:大规模集成电路)构成。系统LSI是将多个结构部集成在一个芯片上来加以制造的超多功能LSI,具体的,是构成为包含微处理器、ROM、RAM等的计算机系统。上述RAM中存储计算机程序。上述微处理器通过根据上述计算机程序来动作,系统LSI从而实现其功能。
(10)构成上述的各装置的构成要素的一部分或全部也可由可装卸到各装置的IC卡或单体的模块构成。上述IC卡或上述模块是由微处理器、ROM、RAM等构成的计算机系统。上述IC卡或上述模块也可包含上述的超多功能LSI。通过微处理器根据计算机程序来动作,上述IC卡或上述模块实现其功能。该IC卡或该模块也可具有抗篡改性。
(11)本发明也可以是上述所示的方法。另外,也可以是通过计算机来实现这些方法的计算机程序,也可以是由上述计算机程序构成的数字信号。
另外,本发明也可将上述计算机程序或上述数字信号记录在计算机可读取的记录媒体上,例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc:蓝光光盘)、半导体存储器等中。另外,也可以是在这些记录媒体上记录的上述计算机程序或上述数字信号。
另外,本发明也可经由电通信线路、无线或有线通信线路、互联网为代表的网络、数据广播等来传送上述计算机程序或上述数字信号。
另外,本发明是具有微处理器和存储器的计算机系统,上述存储器存储上述计算机程序,上述微处理器也可根据上述计算机程序来动作。
另外,通过将上述程序或上述数字信号记录到上述记录媒体上来进行传送,或通过经上述网络等来传送上述程序或上述数字信号,从而可以通过独立的其他计算机系统来实施。
(12)可以分别组合上述实施方式和上述变形例。
产业上的可用性
本发明的计算机系统由于可以对观测处理时间的定时攻击提高抗力,所以在需要秘密处理信息的一切产业中,可以经营性地、且持续地、反复使用。构成本发明的各装置在电器设备制造产业中,可以经营性地、且持续地、反复地进行制造、销售。

Claims (15)

1、一种计算机系统,通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,
所述计算机系统包括:
主存储部,存储变换表和计算机程序,该变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述变换表来取得对应于部分数据的变换数据的多个命令;
高速缓存部,包含规定长度的行存储区域;和
执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;
所述执行部在取得所述变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;
所述变换表具有所述规定长度的行表区域,在所述行表区域的规定位置,包含对应于部分数据的一个变换数据,在所述行表区域的另外的位置,包含与所述变换无关的数据;
所述计算机程序包含:
取得命令组,取得部分数据;
运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和
读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据。
2、根据权利要求1所述的计算机系统,其特征在于:
所述变换表在依赖于所述部分数据具有的值的位置,包含所述变换数据;
所述运算命令组通过对所取得的部分数据实施运算,来算出对应的所述变换数据在所述变换表中的位置。
3、根据权利要求2所述的计算机系统,其特征在于:
所述规定长度是所述变换数据的长度的w倍,w为整数;
所述行表区域在所述规定位置包含所述变换数据,在其他的所有位置包含与所述变换无关的数据;
所述运算命令组使用基于整数w的乘法,算出对应的所述变换数据在所述变换表中的位置。
4、根据权利要求3所述的计算机系统,其特征在于:
所述规定位置是所述行表区域的开头位置;
所述运算命令组通过对所取得的部分数据乘以整数w,来算出对应的所述变换数据在所述变换表中的位置。
5、根据权利要求2所述的计算机系统,其特征在于:
所述行表区域在所述规定位置包含所述变换数据;
并且,在另外的规定位置包含对应于另外的部分数据的另外的变换数据;
在其他的所有位置包含与所述变换无关的数据。
6、根据权利要求5所述的计算机系统,其特征在于:
所述规定长度是所述变换数据的长度的w倍,w为整数;
所述规定位置是所述行表区域的开头位置;
所述另外的规定位置是二等分所述行表区域后的后半区域的开头位置;
所述运算命令组通过对所取得的部分数据乘以整数w/2,来算出对应的所述变换数据在所述变换表中的位置。
7、根据权利要求5所述的计算机系统,其特征在于:
所述规定长度是所述变换数据的长度的w倍,w为整数;
所述规定位置是从所述行表区域的开头起第x个位置,x为整数;
所述另外的规定位置是二等分所述行表区域后从后半区域的开头起第x个位置,x为整数;
所述运算命令组通过对所取得的部分数据乘以整数w/2,再加上整数x,来算出对应的所述变换数据在所述变换表中的位置。
8、根据权利要求1所述的计算机系统,通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,
所述计算机系统包括:
主存储部,存储变换表和计算机程序,该变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述变换表来取得对应于部分数据的变换数据的多个命令;
高速缓存部,包含规定长度的行存储区域;和
执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;
所述执行部在取得所述变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;
所述变换表具有所述规定长度的行表区域,在所述行表区域的规定位置,包含对应于部分数据的一个变换数据;
所述计算机程序包含:
取得命令组,取得部分数据;
运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和
读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据;
所述规定位置是对所述部分数据实施规定运算而得到的位置;
所述运算命令组对所述部分数据实施所述规定运算而算出对应的所述变换数据在所述变换表中的位置。
9、根据权利要求8所述的计算机系统,其特征在于:
所述规定运算是mod z下的所述部分数据与奇数的相乘;
z是部分数据可取的值的种类数目。
10、根据权利要求1所述的计算机系统,通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,
所述计算机系统包括:
主存储部,存储第一变换表、第二变换表、和计算机程序,该第一变换表包含对应于部分数据的变换数据,该第二变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述第一变换表和所述第二变换表来取得对应于部分数据的变换数据的多个命令;
高速缓存部,包含规定长度的行存储区域;和
执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;
所述执行部在取得所述第一变换表和所述第二变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;
所述第一变换表和所述第二变换表分别具有所述规定长度的行表区域,在各行表区域的规定位置,包含对应于部分数据的一个变换数据;
所述计算机程序包含:
取得命令组,取得部分数据;
运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和
读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据;
所述第一变换表中的所述规定位置是对所述部分数据实施第一运算而得到的位置;
所述第二变换表中的所述规定位置是对所述部分数据实施第二运算而得到的位置;
所述运算命令组包含:
决定命令,在每次变换时,决定使用所述第一变换表和所述第二变换表的哪一个;和
算出命令,对所述部分数据实施对应于所决定的变换表的所述第一运算或所述第二运算,算出所述变换数据在所决定的所述变换表中的位置。
11、根据权利要求10所述的计算机系统,其特征在于:
所述第一运算是mod z下的所述部分数据与第一奇数的相乘;
所述第二运算是mod z下的所述部分数据与第二奇数的相乘;
z是部分数据可取的值的种类数目;
所述决定命令产生随机数,并通过所产生的随机数,来决定使用哪一个变换表。
12、一种计算机程序,用于计算机系统,该计算机系统通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,
所述计算机系统包括:
主存储部,存储变换表和计算机程序,该变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述变换表来取得对应于部分数据的变换数据的多个命令;
高速缓存部,包含规定长度的行存储区域;和
执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;
所述执行部在取得所述变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;
所述变换表具有所述规定长度的行表区域,在所述行表区域的规定位置,包含对应于部分数据的一个变换数据,在所述行表区域的另外的位置,包含与所述变换无关的数据;
所述计算机程序包含:
取得命令组,取得部分数据;
运算命令组,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和
读出命令组,从所述变换表中读出在所算出的所述位置上存在的所述变换数据。
13、根据权利要求12所述的计算机程序,其特征在于:
所述计算机程序记录在计算机可读取的记录媒体上。
14、根据权利要求12所述的计算机程序,其特征在于:
所述计算机程序被载置于载波上加以发送。
15、一种方法,在计算机系统中使用,该计算机系统通过将与明文或密文有关的部分数据变换为对应的变换数据的处理,来对明文或密文进行加密或者解密,其特征在于,
所述计算机系统包括:
主存储部,存储变换表和计算机程序,该变换表包含对应于部分数据的变换数据,该计算机程序包含在所述处理中使用所述变换表来取得对应于部分数据的变换数据的多个命令;
高速缓存部,包含规定长度的行存储区域;和
执行部,从所述主存储部中存储的所述计算机程序中一个一个地读出命令,进行解读,并根据其解读结果来进行动作;
所述执行部在取得所述变换表中包含的变换数据时,首先尝试从所述高速缓存部的所述行存储区域取得该变换数据,在所述行存储区域中不存在该变换数据的情况下,从所述主存储部取得该变换数据,并将包含所取得的变换数据的所述规定长度的包含数据写入到所述行存储区域中;
所述变换表具有所述规定长度的行表区域,在所述行表区域的规定位置,包含对应于部分数据的一个变换数据,在所述行表区域的另外的位置,包含与所述变换无关的数据;
所述方法包含:
取得步骤,通过所述计算机程序,取得部分数据;
运算步骤,通过所述计算机程序,使用所取得的部分数据,算出对应的所述变换数据在所述变换表中的位置;和
读出步骤,通过所述计算机程序,从所述变换表中读出在所算出的所述位置上存在的所述变换数据。
CNB2005800213863A 2004-04-26 2005-04-15 进行加密或解密的计算机系统和方法 Expired - Fee Related CN100416519C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004129284 2004-04-26
JP129284/2004 2004-04-26

Publications (2)

Publication Number Publication Date
CN1977250A true CN1977250A (zh) 2007-06-06
CN100416519C CN100416519C (zh) 2008-09-03

Family

ID=35197160

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800213863A Expired - Fee Related CN100416519C (zh) 2004-04-26 2005-04-15 进行加密或解密的计算机系统和方法

Country Status (5)

Country Link
US (1) US8054967B2 (zh)
EP (1) EP1764698A1 (zh)
JP (1) JP4701166B2 (zh)
CN (1) CN100416519C (zh)
WO (1) WO2005103908A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2838210B1 (fr) * 2002-04-03 2005-11-04 Gemplus Card Int Procede cryptographique protege contre les attaques de type a canal cache
GB0211812D0 (en) * 2002-05-23 2002-07-03 Koninkl Philips Electronics Nv S-box encryption in block cipher implementations
US7664173B2 (en) * 2004-06-07 2010-02-16 Nahava Inc. Method and apparatus for cached adaptive transforms for compressing data streams, computing similarity, and recognizing patterns
JP4989055B2 (ja) * 2005-08-31 2012-08-01 株式会社富士通ビー・エス・シー 文字コード暗号処理プログラム、および文字コード暗号処理方法
US20080052530A1 (en) * 2006-02-16 2008-02-28 International Business Machines Corporation System and method to provide CPU smoothing of cryptographic function timings
US8607350B2 (en) * 2006-03-30 2013-12-10 International Business Machines Corporation Sovereign information sharing service
JP5060119B2 (ja) * 2006-12-19 2012-10-31 株式会社富士通ビー・エス・シー 暗号処理プログラム、暗号処理方法および暗号処理装置
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
JP4962335B2 (ja) * 2008-02-04 2012-06-27 富士通株式会社 埋込みデータを復元するための方法
US8280040B2 (en) * 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
US8958554B2 (en) * 2009-11-30 2015-02-17 Red Hat, Inc. Unicode-compatible stream cipher
JP5060570B2 (ja) * 2010-02-23 2012-10-31 株式会社東芝 暗号化装置および復号装置
DE102010010851A1 (de) * 2010-03-10 2011-09-15 Giesecke & Devrient Gmbh Ausspähungsschutz bei der Ausführung einer Operationssequenz in einem tragbaren Datenträger
CN101887397B (zh) * 2010-06-03 2011-12-28 复旦大学 一种抗时间驱动缓存攻击的硬件改进结构
JP5755970B2 (ja) * 2011-08-26 2015-07-29 株式会社東芝 演算装置
JP5882134B2 (ja) * 2012-05-28 2016-03-09 Kddi株式会社 記憶装置、記憶媒体、アクセスパターンの秘匿方法およびプログラム
US9239926B2 (en) 2012-06-29 2016-01-19 International Business Machines Corporation Static analysis for discovery of timing attack vulnerabilities in a computer software application
US9411735B2 (en) * 2014-04-15 2016-08-09 International Business Machines Corporation Counter-based wide fetch management
CN104811445B (zh) * 2015-04-20 2018-03-27 深圳市文鼎创数据科技有限公司 一种时间攻击安全性评估的方法及系统
JP6187624B1 (ja) * 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
KR101989943B1 (ko) * 2017-04-28 2019-06-17 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법
JP7014965B2 (ja) 2018-06-06 2022-02-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5860106A (en) * 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
US5765194A (en) * 1996-05-01 1998-06-09 Hewlett-Packard Company Timing consistent dynamic compare with force miss circuit
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6523118B1 (en) * 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
US6539092B1 (en) * 1998-07-02 2003-03-25 Cryptography Research, Inc. Leak-resistant cryptographic indexed key update
US7599491B2 (en) * 1999-01-11 2009-10-06 Certicom Corp. Method for strengthening the implementation of ECDSA against power analysis
US7360252B1 (en) * 1999-04-30 2008-04-15 Macrovision Corporation Method and apparatus for secure distribution of software
WO2001052069A2 (de) * 2000-01-11 2001-07-19 Infineon Technologies Ag Speicherzugriffsverfahren und schaltungsanordung
US7310706B1 (en) * 2001-06-01 2007-12-18 Mips Technologies, Inc. Random cache line refill
JP3503638B1 (ja) 2002-09-26 2004-03-08 日本電気株式会社 暗号装置及び暗号プログラム
US7739521B2 (en) * 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations

Also Published As

Publication number Publication date
US20070237326A1 (en) 2007-10-11
CN100416519C (zh) 2008-09-03
JPWO2005103908A1 (ja) 2007-08-30
WO2005103908A1 (ja) 2005-11-03
US8054967B2 (en) 2011-11-08
JP4701166B2 (ja) 2011-06-15
EP1764698A1 (en) 2007-03-21

Similar Documents

Publication Publication Date Title
CN1977250A (zh) 进行加密或解密的计算机系统和计算机程序
CN1922643A (zh) 加密系统、加密装置、解密装置、程序和集成电路
CN1224909C (zh) 数字作品保护系统
CN1157020C (zh) 提高了安全性的密码处理装置
CN1822538A (zh) 加密方法,加密装置,解密方法和解密装置
CN1774886A (zh) 信息处理方法,解密处理方法,信息处理设备和计算机程序
CN101053200A (zh) 信息处理设备、信息存储媒体、内容管理系统、数据处理方法、以及计算机程序
CN1879138A (zh) 密码处理装置、密码处理方法及其计算机程序
CN1312630A (zh) 基于分块加密方式的加密装置与方法及译码装置与方法
CN1753356A (zh) 信息处理方法、解密方法、信息处理装置和计算机程序
CN1349182A (zh) 加密、解密装置及扩展密钥生成装置、方法以及记录媒体
CN1959770A (zh) 加密方法、密文解码方法、加密器、密文解码器和通信系统
CN1647139A (zh) 数据变换装置和数据变换方法
CN1396568A (zh) 数字作品保护系统、记录媒体装置、发送装置和重放装置
CN1726669A (zh) 数据分割方法和使用异或运算的装置
CN101061526A (zh) 密码处理运算装置
CN1848128A (zh) 信息处理器、信息处理方法和计算机程序
CN1898621A (zh) 内容输出设备、内容分发服务器及密钥发布中心
CN1684183A (zh) 信息处理装置和方法、信息记录介质及计算机程序
CN1665185A (zh) 内容提供系统、用户系统、跟踪系统、装置及方法
CN101080897A (zh) 鉴别系统、鉴别方法、证明器件、验证器件及其程序和记录介质
CN101040306A (zh) 伪随机数生成装置
CN101047495A (zh) 用于传送数据的方法和系统
CN101080725A (zh) 管理服务器装置、内容再现装置及记录介质
CN1886927A (zh) 管理装置、终端装置及著作权保护系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080903

Termination date: 20100415