<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

信息處理裝置、信息處理方法和程序的制作方法

文檔序號:2399894閱讀:156來源:國知局
信息處理裝置、信息處理方法和程序的制作方法
【專利摘要】實現了例如使用云計算處理通過軟件(程序)進行的密碼處理的提速。多個用戶終端或傳感器發送用各個密碼密鑰加密的數據,服務器接收加密數據項,根據定義解密處理順序的程序執行數據處理。通過針對作為解密對象的多個加密數據項執行位片處理來生成位片表達數據,生成基于各加密數據項的密碼密鑰的位片表達密鑰,基于位片表達密鑰生成輪密鑰,執行包括位片表達數據的塊單位的運算和移動處理和使用輪密鑰進行的運算等解密處理,通過針對解密處理結果對數據進行逆變換,生成對應于多個加密數據項的多個平文數據項。
【專利說明】信息處理裝置、信息處理方法和程序

【技術領域】
[0001]本公開涉及信息處理裝置、信息處理方法和程序。更具體地,本公開涉及用于實現對大量數據的加密處理的提速的信息處理裝置、信息處理方法和程序。

【背景技術】
[0002]隨著信息社會的發展,用于安全地保護信息的信息安全技術的重要性增加。密碼術是信息安全技術的一個構成要素,目前密碼術用在各種產品和系統中。
[0003]例如,通過諸如互聯網等網絡積極地執行通信,并且諸如PC、移動電話、RFID等各種設備以及各種傳感器連接到網絡以進行通信。在這種環境下,為了實現在保護個人隱私的同時提高便利度的網絡社會,是使用信息安全技術是不可或缺的,并且需要的是能夠提高安全性并且高速執行處理的密碼術。
[0004]已經使用了以下的系統:服務器收集從個人擁有的終端發送的信息或者通過安裝在房屋中的傳感器獲取的信息,并且該系統針對服務器收集的信息執行各種數據處理或分析。
[0005]具體地講,存在如下的系統:通過在房屋或辦公室內安放傳感器來管理功耗的系統、用于通過在獨居老人的房屋中安放傳感器來進行健康和安全管理的服務、通過在道路上或汽車中安放傳感器而用于交通擁堵檢測和疏導的運輸系統等。
[0006]在許多情況下,在這種系統中收集的數據包括關于個人隱私的信息,為了保護隱私,期望對數據進行加密。然而,安裝有現有技術的、不是針對小型硬件安裝而設計的輕量級密碼算法的密碼算法的硬件,具有大的模塊規格,并且難以被安裝在如RFID或傳感器等小型設備上。另外,難以以低成本實現設備,功耗大,并且電池更換頻率增加,因此從可操作性的角度看,存在許多問題。
[0007]同時,對適合于對具有受限的硬件規模或存儲器資源的設備或需要節省能量的設備的硬件安裝的輕量級密碼術(lightweight cryptography)的需求日益增加。
[0008]響應于這種需要,正在對輕量級密碼術進行研究和開發,近來,提出了一些從小型硬件安裝的角度看來優異的新的輕量級的塊密碼術(lightweight block cryptography)。作為代表性例子的是PRESENT、CLEFIA、KATAN、Piccolo等。
[0009]據此,輕量級密碼術的國際標準化在進展,在國際標準化組織(ISO)和國際電工委員會(IEC)的聯合技術委員會中,在執行信息安全技術的國際標準化的委員會IS0/ICEJTC 1/SC 27中,輕量級密碼術的國際標準IS0/IEC 29192的標準化在進展。
[0010]作為輕量級密碼術之一的輕量級塊密碼(lightweight block cryptogram)的許多示例對于小型硬件安裝而言是最佳的。
[0011]也就是說,為了在硬件安裝時實現小尺寸,用具有四位的多個小S盒(s-box)并且經常用于位運算的“輕”輪函數(round funct1n)重復的結構來設計輕量級塊密碼的許多例子。
[0012]輕量級密碼的這種結構不能利用被持續開發的通用處理器,并且在PC或服務器中安裝軟件時一般出現低速的問題。
[0013]作為在PC或服務器中安裝軟件的處理的一個示例,可以使用利用連接到網絡的設備進行的云計算,但是跨虛擬機(Cross VM)側信道(side-channel)攻擊也可能對云造成威脅(NPLl)。云可以具有多個用戶共享一個服務器的多租戶系統,用戶的虛擬機VM彼此分開,但諸如存儲器或緩存等物理設備被共享。跨VM側信道攻擊是緩存持續受到共享組相聯緩存(set associative cache)的“惡意VM”攻擊并且通過緩存的延遲反應而檢測另一VM的接入來提取密鑰的一種攻擊。如上所述,當在軟件安裝的狀態下在云上執行加密處理時,對這種側信道攻擊的抵抗性也是本公開的目的。
[0014]現有技術文獻
[0015]非專利文獻
[0016]NPLI: Thomas Ri stenpar t, Eran Tromer, Hovav Shacham, StefanSavage, “Hey, You, Get Off of My Cloud:Exploring Informat1n Leakage inThird-Party Compute Clouds (嘿,請離開我的云:探索第三方計算云中的信息泄露)”, ACMCCS’ 09,2009 年 11 月 9 日至 13 日
[0017]NPL2:Eli Biham, “A Fast New DES Implementat1n in Software (用軟件進行的快速新DES實現)”,FSE’ 97,1997


【發明內容】

[0018]技術問題
[0019]本公開是依據這種情形形成的,本公開的目的在于提供用于實現對大量數據的加密處理的提速的信息處理裝置、信息處理方法和程序。
[0020]另外,在本公開的一個示例中,在使用可以在通用處理器上運行的軟件(程序)執行加密處理的情況下,本公開的目的在于提供用于高速執行處理的信息處理裝置、信息處理方法和程序。
[0021]問題的解決方案
[0022]根據本公開的第一方面,提供了一種信息處理裝置,所述信息處理裝置包括:通信單元,其接收數據發送設備發送的加密數據;以及數據處理單元,其執行通過所述通信單元接收的加密數據的解密處理,其中,所述數據處理單元具有根據定義解密處理順序的程序執行數據處理的構造,并且所述數據處理單元根據所述程序執行:通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理,通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的解密處理,以及通過針對所述解密處理的結果執行所述位片處理的逆變換,來生成對應于所述加密數據的平文數據的數據逆變換處理。
[0023]另外,在本公開的信息處理裝置的一個實施例中,所述通信單元接收所述加密數據和所述加密數據的發送設備的設備ID,所述數據處理單元基于所述設備ID從存儲單元選擇性獲取對應于各加密數據項的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰,通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
[0024]另外,在本公開的信息處理裝置的一個實施例中,所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的解密處理,所述位片表達數據塊單位由在所述解密處理中構成所述位片表達數據的各加密數據項的相同次序的位或每η位的位構成,其中η是2的冪。
[0025]另外,在本公開的信息處理裝置的一個實施例中,所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0026]另外,根據本公開的第二方面,提供了一種信息處理系統,所述信息處理系統包括:發送終端,其生成并且發送加密數據;以及服務器,其接收所述多個發送終端發送的多個加密數據項,其中,所述服務器包括數據處理單元,所述數據處理單元根據定義解密處理順序的程序執行數據處理,并且所述數據處理單元根據所述程序執行:通過針對作為解密處理對象的多個加密數據項執行位片處理來生成位片表達數據的數據變換處理,通過針對多個加密數據項的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的解密處理,以及通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于所述多個加密數據項的平文數據的數據逆變換處理。
[0027]另外,在本公開的信息處理系統的一個實施例中,多個發送終端發送所述加密數據和所述加密數據的發送設備的設備ID,所述服務器的所述數據處理單元基于所述設備ID從存儲單元選擇性獲取對應于各加密數據項的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰,通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理,來生成所述位片表達密鑰。
[0028]另外,在本公開的信息處理系統的一個實施例中,所述服務器的所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述解密處理,所述位片表達數據塊單位由在所述解密處理中構成所述位片表達數據的各加密數據項的相同次序的位或每η位的位構成,其中η是2的冪。
[0029]另外,在本公開的信息處理系統的一個實施例中,所述服務器的所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0030]另外,根據本公開的第三方面,提供了一種信息處理裝置,所述信息處理裝置包括:通信單元,其針對數據接收設備發送加密數據;以及數據處理單元,執行生成通過所述通信單元發送的多個加密數據項的處理,其中,所述數據處理單元具有根據定義密碼處理順序的程序執行數據處理的構造,并且所述數據處理單元根據所述程序執行:通過針對作為密碼處理對象的多個平文數據項執行位片處理來生成位片表達數據的數據變換處理,通過針對多個平文數據項的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于加密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的密碼處理,以及通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述多個平文數據項的多個加密數據項的數據逆變換處理。
[0031]另外,在本公開的信息處理裝置的一個實施例中,所述數據處理單元基于所述加密數據被發送到達的發送目的地的設備ID從存儲單元選擇性獲取對應于各平文數據的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰,通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
[0032]另外,在本公開的信息處理裝置的一個實施例中,所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述加密處理,所述位片表達數據塊單位由在所述密碼處理中構成所述位片表達數據的各平文數據的相同次序的位或每η位的位構成,其中η是2的冪。
[0033]另外,在本公開的信息處理裝置的一個實施例中,所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0034]另外,根據本公開的第四方面,提供了一種信息處理系統,所述信息處理系統包括:服務器,其生成并且發送多個加密數據項;以及多個接收終端,其接收所述服務器發送的加密數據,其中,所述服務器包括數據處理單元,所述數據處理單元根據定義密碼處理順序的程序執行數據處理,并且所述數據處理單元根據所述程序執行:通過針對作為密碼處理對象的多個平文數據項執行位片處理來生成位片表達數據的數據變換處理,通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于所述密碼處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的密碼處理,以及通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于多個平文數據項的多個加密數據項的數據逆變換處理。
[0035]另外,在本公開的信息處理系統的一個實施例中,所述服務器的所述數據處理單元基于各接收終端的設備ID從存儲單元選擇性獲取對應于各平文數據的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各平文數據的密碼密鑰,通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
[0036]另外,在本公開的信息處理系統的一個實施例中,所述服務器的所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述加密處理,所述位片表達數據塊單位由在所述加密處理中構成所述位片表達數據的各平文數據的相同次序的位或每η位的位構成,其中η是2的冪。
[0037]另外,在本公開的信息處理系統的一個實施例中,所述服務器的所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0038]另外,根據本公開的第五方面,提供了一種在信息處理裝置中執行的信息處理方法,所述方法包括:通信步驟,使得通信單元接收多個數據發送設備發送的加密數據;以及數據處理步驟,使得數據處理單元對通過所述通信單元接收的多個加密數據項執行解密處理,其中,所述數據處理步驟根程序,包括:通過針對作為解密處理對象的多個加密數據項項執行位片處理來生成位片表達數據的數據變換處理,通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于解密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的密碼處理,以及通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于多個加密數據項的多個平文數據項的數據逆變換處理。
[0039]另外,根據本公開的第六方面,提供了一種在信息處理裝置中執行的信息處理方法,所述方法包括:數據處理步驟,使得數據處理單元執行多個加密數據項的生成處理;以及通信步驟,使得通信單元向多個數據發送設備的每個發送所述數據處理單元生成的多個加密數據項的每個,其中,所述數據處理步驟根據定義密碼處理順序的程序包括:通過針對作為加密處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理,通過針對多個平文數據項的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于所述加密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的密碼處理,以及通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述多個平文數據項的多個加密數據項的數據逆變換處理。
[0040]另外,根據本公開的第七方面,提供了一種致使信息處理裝置執行信息處理的程序,所述程序包括:使得數據處理單元輸入多個發送器用各個密碼密鑰生成的加密數據;使得所述數據處理執行:通過針對作為解密處理對象的多個加密數據項執行位片處理來生成位片表達數據的數據變換處理,通過針對多個加密數據項的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的解密處理,以及通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于多個加密數據項的多個平文數據項的數據逆變換處理。
[0041]另外,根據本公開的第八方面,提供了一種致使信息處理裝置執行信息處理的程序,所述程序包括:使得數據處理單元執行多個加密數據項的生成處理的數據處理步驟;以及使得通信單元向多個數據發送設備的每個發送所述數據生成單元生成的多個加密數據項的每個的通信步驟,其中所述數據處理步驟包括:通過針對作為加密處理對象的多個平文數據項的每個執行位片處理來生成位片表達數據的數據變換處理,通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,輸入所述位片表達密鑰以生成用于所述加密處理的各輪的輪密鑰的密鑰編排處理,針對所述位片表達數據應用所述輪密鑰的密碼處理,以及通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于多個平文數據項的多個加密數據項的數據逆變換處理。
[0042]另外,本公開的程序是例如針對可以執行各種程序代碼的信息處理裝置或計算機系統由記錄介質提供的程序。由信息處理裝置或計算機系統的程序執行單元執行這種程序,從而執行根據程序進行的處理。
[0043]將參照下面的示例或附圖,通過【具體實施方式】使本公開的其它目的、特征或優點清楚。另外,本說明書中的系統是多個裝置的邏輯集合結構,而不限于具有使各個結構在同一殼體中的裝置的系統。
[0044]本發明的有益效果
[0045]根據本公開的一個示例,實現了例如使用云計算處理用軟件(程序)進行輕量級密碼的密碼處理的提速。
[0046]具體而言,多個用戶終端或傳感器發送以各個加密密鑰通過輕量級密碼算法加密的數據,服務器接收加密數據并且根據定義解密處理順序的程序執行數據處理。可以通過針對作為解密對象的多個加密數據項執行位片處理來生成位片表達數據,以基于各加密數據項的加密密鑰生成位片表達密鑰,以基于位片表達密鑰生成輪密鑰,以執行包括位片表達數據的塊單位的運算和移動處理和使用輪密鑰進行的運算的解密處理,以通過針對解密處理結果對數據進行逆變換而生成對應于多個加密數據項的多個平文數據項。
[0047]另外,在根據本公開的一個示例的解密處理中,通過存儲在寄存器中的位片表達塊單位的運算或移動處理來執行處理,并且可以高速地執行對大量數據的處理。具體而言,在因特爾核i7870處理器中執行密碼算法[PRESENT(80位的密鑰長度)]的情況下,實現
11.06個周期/字節的高速,在執行密碼算法[Piccolo (80位的密鑰長度)]的情況下,實現
5.59個周期/字節的高速。具體地講,Piccolo的速度超過6.92個周期/字節,6.92個周期/字節是本技術已知的同一平臺(因特爾核i7920)下的高級加密標準(AES)的速度記錄。
[0048]另外,由于根據本公開的一個示例的位片安裝中是在不參照表格的情況下通過邏輯運算計算S-box,因此可以增加抵抗側信道攻擊(諸如,緩存攻擊或跨虛擬機攻擊)的耐久性。另外,關于云計算處理中用軟件進行加密處理的提速,可以用較少數量的周期完成加密處理,這導致云或數據中心的功耗降低。
[0049]另外,在根據本公開的一個示例的系統中,不需要在云或計算中心中導入用于加密處理的專用硬件,因此延展性提高。
[0050]另外,可以使用在現有技術中難以使用的用云進行的輕量級密碼,因此促進了傳感器中的輕量級密碼的安裝并且可以以低成本和低功耗實現傳感器網絡。

【專利附圖】

【附圖說明】
[0051][圖1]圖1是闡明可應用本公開的處理的系統的一個示例的示圖。
[0052][圖2]圖2是闡明可應用本公開的處理的系統的操作示例的示圖。
[0053][圖3]圖3是闡明構成可應用本公開的處理的圖1和圖2中示出的系統的服務器中執行的處理的一個示例的示圖。
[0054][圖4]圖4是闡明構成可應用本公開的處理的圖1和圖2中示出的系統的服務器中執行的處理的順序示例的示圖。
[0055][圖5]圖5是闡明構成可應用本公開的處理的圖1和圖2中示出的系統的服務器中執行的處理的順序示例的示圖。
[0056][圖6]圖6是闡明密碼處理算法PRESENT的處理順序的示圖。
[0057][圖7]圖7是闡明本公開的密碼處理的處理順序的示圖。
[0058][圖8]圖8是闡明通過密鑰數據的密鑰變換處理得到的位片表達密鑰數據(bitslice express1n key data)的生成處理不例的不圖。
[0059][圖9]圖9是闡明通過數據的變換處理得到的位片表達數據的生成處理示例的示圖。
[0060][圖10]圖10是示出密鑰編排處理(keyscheduling process)的寄存器存儲數據的一個示例的示圖。
[0061][圖11]圖11是示出密鑰編排處理的寄存器存儲數據的一個示例的示圖。
[0062][圖12]圖12是闡明密鑰編排處理的順序的流程圖的示圖。
[0063][圖13]圖13是示出闡明在密鑰編排處理中執行的輪密鑰生成更新處理的詳細處理順序的流程圖的示圖。
[0064][圖14]圖14是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0065][圖15]圖15是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0066][圖16]圖16是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0067][圖17]圖17是闡明密鑰編排處理的非線性變換處理(Sbox)的邏輯命令序列的示圖。
[0068][圖18]圖18是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0069][圖19]圖19是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0070][圖20]圖20是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0071][圖21]圖21是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0072][圖22]圖22是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0073][圖23]圖23是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0074][圖24]圖24是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0075][圖25]圖25是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0076][圖26]圖26是示出密鑰編排處理的寄存器存儲數據和處理示例的示圖。
[0077][圖27]圖27是示出闡明密鑰編排處理的順序的流程圖的示圖。
[0078][圖28]圖28是示出闡明在密鑰編排處理中執行的非線性變換處理(Sbox)的預計算處理的詳細順序的流程圖的示圖。
[0079][圖29]圖29是示出闡明在密鑰編排處理中執行的非線性變換處理(Sbox)的預計算處理的詳細順序的流程圖的示圖。
[0080][圖30]圖30是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0081][圖31]圖31是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0082][圖32]圖32是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0083][圖33]圖33是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0084][圖34]圖34是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0085][圖35]圖35是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0086][圖36]圖36是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0087][圖37]圖37是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0088][圖38]圖38是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0089][圖39]圖39是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0090][圖40]圖40是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0091][圖41]圖41是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0092][圖42]圖42是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0093][圖43]圖43是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0094][圖44]圖44是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0095][圖45]圖45是示出非線性變換處理(Sbox)的預計算處理的寄存器存儲數據和處理示例的示圖。
[0096][圖46]圖46是示出闡明輪密鑰生成更新處理的順序的流程圖的示圖。
[0097][圖47]圖47是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0098][圖48]圖48是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0099][圖49]圖49是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0100][圖50]圖50是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0101][圖51]圖51是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0102][圖52]圖52是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0103][圖53]圖53是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0104][圖54]圖54是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0105][圖55]圖55是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0106][圖56]圖56是示出輪密鑰生成更新處理的寄存器存儲數據和處理示例的示圖。
[0107][圖57]圖57是示出闡明密碼處理的詳細順序的流程圖的示圖。
[0108][圖58]圖58是示出用于執行密碼處理單元執行的密碼處理的硬件構造示例的示圖。
[0109][圖59]圖59是闡明在執行密碼處理時的寄存器存儲數據和數據處理示例的示圖。
[0110][圖60]圖60是闡明在執行密碼處理時的數據處理示例的示圖。
[0111][圖61]圖61是示出闡明密碼處理中執行的線性變換處理的詳細順序的流程圖的示圖。
[0112][圖62]圖62是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0113][圖63]圖63是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0114][圖64]圖64是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0115][圖65]圖65是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0116][圖66]圖66是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0117][圖67]圖67是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0118][圖68]圖68是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0119][圖69]圖69是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0120][圖70]圖70是闡明在執行在密碼處理中執行的線性變換處理時的寄存器存儲數據和處理示例的示圖。
[0121][圖71]圖71是示出用于執行密碼處理的裝置構造示例的示圖。

【具體實施方式】
[0122]下文中,將參照附圖詳細描述根據本公開的信息處理裝置、信息處理方法和程序。將按照以下次序進行描述。
[0123]1.可應用本公開的構造的系統的一個示例
[0124]2.輕量級塊密碼算法“PRESENT”
[0125]3.信息處理裝置(密碼處理裝置)的構造和處理順序的概況
[0126]4.密鑰變換處理和數據變換處理
[0127]5.密鑰編排處理(密鑰編排處理示例I)
[0128]6.密鑰編排處理(密鑰編排處理示例2)
[0129]6-1非線性變換(Sbox)的預計算處理
[0130]6-2輪密鑰的產生和更新處理
[0131]7.密碼處理
[0132]8.信息處理裝置和密碼處理裝置的構造示例
[0133]9.本公開的構造的總結
[0134][1.可應用本公開的構造的系統的一個示例]
[0135]例如,假設從諸如個人擁有的移動電話或智能電話等通信終端、安裝在多種產品中的RFID、或安放在房屋中的傳感器收集信息的結構來執行服務器中的處理。
[0136]用于執行密碼處理算法的小型硬件能夠以被安裝在信息發送方的多個裝置中,以快速地產生和發送加密數據。
[0137]然而,服務器必須接收多個終端或傳感器發送的大量的加密數據并且執行解密處理。另外,還假設存在服務器必須生成將被發送到多個終端的多個加密數據項的情況。
[0138]預期在將來,對大量的、覆蓋范圍廣的大數據進行收集、分析和使用的必要性逐漸增加。
[0139]認為在處理這種大量數據時使用云計算是有效的。例如,通過在分析從多個終端或傳感器收集的大量的加密數據時使用云計算,在網絡上的服務器的通用處理器中能運行的軟件被用于執行密碼處理(包括加密處理和解密處理兩者)。
[0140]最重要的一點是以低成本和低功耗將硬件安裝在RFID或傳感器中,并且最好的選擇是用輕量級密碼執行加密處理,但是如上所述,將在云上的服務器的通用處理器中運行的一般的軟件安裝中執行輕量級密碼的處理是緩慢的。
[0141]當使用連接到網絡的多個信息處理裝置執行處理時,云計算是有利的,但當打算通過在連接到網絡的所有裝置上安裝用于執行特定的密碼處理算法的硬件來加速處理時,從成本的角度看,云計算是不利的。
[0142]在收集大量的加密數據以將數據上傳至具有云構造的服務器并且用云對數據執行分析的情況下,期望執行使用能在多個成本低的服務器上執行的軟件(程序)來執行處理的擴展方法。
[0143]如上所述,例如,在使用云計算等技術執行密碼處理的情況下,必須執行使用軟件(程序)的密碼處理(加密處理和解密處理)。然而,如上所述,存在的問題是,輕量級密碼中根據軟件的密碼處理的處理速度降低,需要實現處理速度提高的方法。
[0144]存在各種密碼算法,存在作為基本技術的一個示例的、被稱為塊密碼的算法。在塊密碼的一般軟件安裝中,利用表參考來安裝用于執行非線性變換處理的Sbox,因此存在緩存攻擊的危險。緩存攻擊是側信道攻擊中的一種,是利用由于存在或不存在緩沖命中而導致的存儲器訪問時間差異來提取加密密鑰的計時攻擊(timing attack)。
[0145]例如,本公開的構造將解決這種問題。將參照圖1和后續的附圖描述可應用本公開的構造的系統示例。
[0146]作為可應用本公開的構造的系統,例如,存在圖1中示出的網絡系統。
[0147]圖1示出傳感器網絡20和云10,在傳感器網絡20中,多個終端節點彼此連接,云10由用于收集終端節點的發送數據以執行數據處理的網絡連接服務器組構成。
[0148]終端節點包括:例如用戶擁有的如PC、移動電話、智能電話或平板終端等便攜式終端、安放在房屋或辦公室內的功耗檢測傳感器、安放在獨居老人的房屋內用于收集安全和健康管理信息的傳感器或護理設備、安放在道路上或汽車中用于檢測和疏導交通擁堵的終端或傳感器、或各種其它設備。
[0149]另外,下文中,構成終端節點的各種設備將被統一描述為傳感器。所述傳感器包括上述的各種設備。
[0150]構成終端節點的傳感器將各種信息項發送到由用于執行數據處理的網絡連接服務器組構成的云10。
[0151]另外,在許多情況下,例如,發送數據通過中繼節點等被提供給構成云10的網絡連接服務器。
[0152]在許多情況下,這樣的系統收集的數據包括例如個人的隱私或保密信息,為了防止數據泄露,數據被加密發送。
[0153]傳感器對發送數據執行加密并且發送加密數據。用于執行輕量級密碼算法的專用硬件例如被安裝在傳感器中,傳感器使用此執行加密。至于用于此加密的密碼密鑰,例如,使用的是由各傳感器保持在存儲器中的各自的密碼密鑰或者可以按預定運算從傳感器ID中提取的密鑰。
[0154]傳感器的數量是巨大的,如圖2中所示,各傳感器將傳感器ID附加到加密數據并且將加密數據發送到云。
[0155]在圖2中示出的示例中,終端節點A、B和C被示出為數據發送節點的代表性示例。各節點使用作為特有的節點密鑰的密碼密鑰對發送數據執行加密以生成由加密數據構成的塊(例如,64位),將作為各傳感器(終端節點)的標識符的傳感器ID附加到生成的加密數據,并且發送加密數據。
[0156]還從除了圖示為代表性示例的傳感器A至C之外的多個傳感器向云上的服務器(例如,圖2中示出的服務器S 30)發送大量的加密數據。
[0157]另外,在隨后將描述的示例中,各傳感器生成的加密數據的數據長度被描述為加密處理所使用的輕量級塊密碼算法的塊長度的一個塊。一個塊是例如具有如64位的特有位的數據。各傳感器通過執行使用特有傳感器密鑰(例如,80位)的加密處理來生成具有64位的加密塊并且發送加密塊。
[0158]各傳感器生成的加密數據的數據不限于一個塊,可以是多個塊。各傳感器發送各加密數據項和傳感器ID之間具有明確關系的數據。另外,在需要各塊的數據次序信息的情況下,例如,表示數據次序的序列號或時間戳被包括在數據中,它們被作為塊屬性信息附加到數據并且被發送。
[0159]另外,在傳感器網絡例如被以樹結構進行管理的情況下,來自傳感器(即終端節點)的發送數據被從傳感器(終端節點)發送到中繼節點,然后被發送到被設置為中繼節點的主機節點的根節點,并且被從根節點發送到云上的服務器。
[0160](云上的服務器中的處理的概況)
[0161]接下來,將描述在參照圖1和圖2描述的網絡系統中由收集傳感器(終端節點)的發送數據以執行處理的云上的服務器執行的處理的概況。
[0162]云上的服務器收集多個傳感器(終端節點)發送的多個加密數據塊并且使用可以在通用處理器上運行的軟件(程序)執行密碼處理。例如,服務器執行解密多個加密數據的處理。或者,傳感器執行將被發送到各終端節點的多個加密數據的生成處理等。
[0163]服務器執行位片密碼處理,作為使用軟件(程序)的密碼處理(包括加密處理和解密處理)。
[0164]另外,在下面的描述中,“密碼處理”包括數據的加密處理和解密處理。
[0165]位片密碼處理(包括加密處理和解密處理)是Biham在1997年提出的處理,這表明相比于現有技術的軟件安裝,通過位片安裝更快速地安裝某個種類的密碼算法。
[0166]位片密碼處理例如具體在NPL 2 “Eli Biham的“A Fast New DESImplementat1nin Software (用軟件進行的快速新DES實現)”, FSE’,1997”中公開。在最基礎的位片安裝中,通過以位為單元從作為密碼處理對象的多個數據塊的頭部截取數據,并且設置由從各數據塊截取的具有相同次序的位或每η位的位的數據項的組合構成的新塊(位片表達數據塊)來執行處理,其中,η是2的冪,如2、4、8、16、64、128等。
[0167]例如,將參照圖3描述在整體地解密各傳感器發送的各加密數據的情況下的位片解密處理示例。
[0168]圖3示出表明圖2中示出的服務器S 30的㈧保持數據和⑶密碼處理順序(解密)的示圖。
[0169]圖3(A)中示出的服務器的保持數據中的密碼密鑰31是作為各傳感器(終端節點)的特有密鑰的、先前保持在服務器S 30中的數據。
[0170]傳感器ID 32和解密數據33的各數據是通過網絡從各傳感器接收的數據。
[0171]可以基于傳感器ID選擇應用于各加密數據項的加密處理的密碼密鑰。
[0172]圖3(B)是示出服務器S 30的密碼處理單元50中執行的處理的示圖。另外,附圖中示出的密碼處理單元50是由具有程序執行功能的CPU等構成的數據處理單元,并且通過根據定義預定的密碼算法的序列的程序執行數據處理來執行密碼處理(加密處理和解密處理)。也就是說,密碼處理單元執行使用軟件(程序)的密碼處理。
[0173]圖3 (B)示出對通過網絡從各傳感器接收的加密數據執行解密處理的情況的處理示例。
[0174]服務器首先使用添加在加密數據33中的傳感器ID 32選擇用于解密的各密碼密鑰31。云上的服務器保持各服務器中使用的密碼密鑰作為與傳感器ID關聯的管理數據。可供選擇地,可以用預定運算從各傳感器ID提取各傳感器的特有密碼密鑰。
[0175]在服務器中,如圖3(B)中所示,各傳感器的密碼密鑰31按與各傳感器生成的加密數據33的各塊對應的順序布置。
[0176]當之前被定義為位片密碼處理的處理單元的具有預定塊數的加密數據33和密碼密鑰31被組合時,執行根據位片密碼處理進行的數據解密處理。
[0177]如上所述,在位片密碼處理中,通過以位為單元從作為密碼處理對象的各數據塊的頭部截取數據,并且設置由各塊的具有相同次序的位或每η位的位的數據項的組合(位片表達數據塊)來執行處理,這里,η是2的冪,諸2、4、8、16、64、128等。
[0178]首先,服務器根據構成從多個傳感器接收的加密數據33的多個加密數據塊生成多個位片表達數據塊,諸如,其中只有I位次序的數據項被組合的塊(位片表達數據塊)、其中只有2位次序的數據項被組合的塊(位片表達數據塊)、其中直到后續最后一位為止只有相同比特位置的數據項被組合的塊(位片表達數據塊)。
[0179]通過這樣做,服務器根據構成加密數據33的多個加密數據塊生成多個位片表達數據塊。
[0180]另外,對用于生成加密數據33的密碼密鑰31也執行相同的處理,也就是說,生成與多個密鑰數據項對應的多個位片表達密鑰塊。
[0181]另外,例如,密碼密鑰31中的每個是由80位的密鑰數據構成的密碼密鑰塊,并且關于密碼密鑰31,設置由各密碼密鑰塊的具有相同次序的位或每η位的位的數據的組合(位片表達密鑰塊),其中,η是2的冪,諸如2、4、8、16、64、128等。
[0182]這個塊變換處理是作為圖3(B)中示出的密碼處理單元50中示出的步驟Sll中的密鑰變換處理(密鑰變換)和步驟S21中的數據變換處理(數據變換)執行的處理。
[0183]執行使用位片處理生成的位片表達塊作為處理單元的處理,并且執行根據預定的密碼算法進行的處理。
[0184]在本公開的裝置中,使用位片表達塊作為處理單元進行的運算(AND(與)、OR(或)、X0R(異或)等)、寄存器存儲數據的移位處理、或諸如混排(shuffling)等比特位置的轉置處理被作為軟件(程序)的應用處理執行,以執行根據預定的密碼算法的處理。
[0185]針對基于通過密碼處理單元50中的步驟Sll的密鑰變換處理(密鑰變換)生成的多個密碼密鑰31的位片密鑰數據,執行步驟S12中的密鑰編排處理(密鑰編排),生成輪密鑰。
[0186]同時,在步驟S21中的數據變換處理(數據變換)中,通過針對從傳感器接收的多個加密數據項33進行位片處理,生成位片加密數據塊。這個位片塊被設置為后續步驟S22中的密碼處理(數據處理)步驟中的密碼處理(密碼處理或解密處理)的處理對象。
[0187]在步驟S22中的密碼處理(數據處理)中,針對基于步驟S21中的數據變換處理(數據變換)中的加密數據生成的位片表達數據塊,執行使用輪密鑰進行的密碼處理,在本文中是對加密數據進行的解密處理。
[0188]在該密碼處理步驟中,例如,根據軟件(程序)執行根據諸如與輪密鑰的加法(XOR)處理、線性變換處理或非線性變換處理等預定的密碼算法進行的處理。
[0189]另外,在步驟S12中的密鑰編排處理(密鑰編排)中,生成在該輪運算的各輪中使用的輪密鑰。
[0190]在后續的步驟S23中,針對作為步驟S22中的密碼處理(數據處理)的結果得到的塊組,執行數據逆變換處理(數據變換-1)。通過該處理,執行將經位片處理的塊返回到原始塊的處理。用該處理,生成與從傳感器發送的加密數據33對應的平文數據(plain textdata)70.
[0191]圖4和圖5示出在服務器中執行的處理的兩個順序示例。
[0192]圖4中示出的流程圖是示出在組合了具有預定數量塊的加密數據項之后,基于添加在加密數據中的傳感器ID執行準備各塊的解密密鑰的步驟的情況的順序的流程圖。
[0193]圖5中示出的流程圖是示出每當各密文數據塊到達時基于添加在加密數據中的傳感器ID執行準備各塊的解密密鑰的步驟的情況的順序的流程圖。
[0194]首先,將描述圖4中示出的流程的各步驟的處理。
[0195]首先,在步驟S31中,接收從節點發送的加密數據塊。這是圖3(A)中示出的傳感器ID 32和加密數據33的組合數據。
[0196]接下來,在步驟S32中,判定是否接收到被事先定義為處理單元的具有預定塊數的加密數據。在加密數據的數目沒有達到預定塊數時,處理返回到步驟S31并且繼續進行接收處理。
[0197]在加密數據的數目達到預定塊數的情況下,處理前進至步驟S33,使用添加在加密數據中的傳感器ID選擇各加密數據項的密碼密鑰(=解密密鑰)。
[0198]最后,在步驟S34中,一組對應的加密數據和密碼密鑰被輸入到密碼處理單元50,以執行根據位片密碼處理的解密處理。
[0199]圖5中示出的流程是每當密文數據塊到達時執行處理的順序。
[0200]首先,在步驟S41中,接收從節點發送的加密數據塊。這是圖3(A)中示出的傳感器ID 32和加密數據33的組合數據。
[0201]接下來,在步驟S42中,使用添加在加密數據中的傳感器ID選擇各加密數據項的密碼密鑰(=解密密鑰)。
[0202]接下來,在步驟S43中,判定是否接收到事先被定義為處理單元的具有預定塊數的加密數據。在加密數據的數目沒有達到預定塊數時,處理返回到步驟S41并且繼續進行接收處理。
[0203]在加密數據的數目達到預定塊數的情況下,處理前進至步驟S44,一組對應的加密數據和密碼密鑰被輸入到密碼處理單元50,以執行根據位片密碼處理的解密處理。
[0204]另外,在上述的處理示例中,已經描述了從傳感器接收多個加密數據項并且在服務器中執行解密處理的示例,但是例如在生成將被發送到多個用戶終端等的加密數據的情況下,服務器通過針對多個平文數據項應用位片密碼處理,生成多個加密數據。也可以通過使用圖3中示出的密碼處理單元50的構造執行該密碼處理。
[0205]在執行加密處理的情況下,輸入由平文數據形成的多個塊和對應于各平文數據的密碼密鑰以執行處理,生成多個加密數據項。
[0206]例如,基于加密數據被發送到達的發送目的地的設備ID,從存儲單元選擇性獲取對應于各平文數據項的密碼密鑰,通過針對從存儲單元選擇性獲取的密碼密鑰進行位片處理,生成位片表達密鑰。
[0207]另外,通過使用基于平文數據的位片表達數據塊和基于密碼密鑰的位片表達密鑰塊,根據圖3(B)中示出的密碼處理單元50中示出的處理順序執行加密處理,生成并且輸出加密數據。
[0208]如上所述,密碼處理單元50執行的位片密碼處理被作為能在通用處理器上運行的軟件(程序)進行的處理來執行。也就是說,在諸如沒有用于特定密碼算法的專用硬件構造的PC等設備中,通過執行定義隨后將描述的密碼處理算法的執行順序的軟件(程序),執行處理。
[0209]根據軟件(程序)執行的處理包括例如:使用寄存器中存儲的位片表達塊數據運行塊數據項之間的運算(AND (與)、0R(或)、X0R(異或)等)、寄存器中存儲的數據的移位處理、諸如混排等的比特位置的移動和轉置處理等。
[0210]在包括例如64位寄存器的處理器根據軟件(程序)執行密碼處理的情況下,密碼處理可以被作為相互并行地處理64個塊的單指令多數據流(SMD)型并行處理來執行。在基本的位片安裝方法中,可以針對處理器的位寬度執行并行處理。在密碼算法中經常使用的比特位置的轉置可以通過零成本的寄存器的重命名處理來實現,并因此實現了處理的提速。
[0211]另外,可以在位片密碼處理中經受并行處理的塊的數量根據密碼算法或位片安裝算法、處理器架構、或所使用的寄存器的大小而變化,例如,8、16、32、64、128等可以被設置為并行處理塊的數量。
[0212]另外,在位片密碼處理中,由于經受并行處理的密文塊彼此獨立,因此只要塊與密鑰數據塊關聯,從多個傳感器接收的塊可以被混合或者這些塊可以按任意次序布置而不管被接收次序如何。不論以異步方式從多個傳感器接收的加密感測數據的次序如何都能夠執行解密處理的功能也是使用位片密碼處理的該系統的優點。
[0213]在該位片型密碼處理中,非線性變換處理(Sbox)是作為處理速度的主要影響因素的要素。重要的一點是用少的邏輯運算(命令)表達該非線性變換處理以實現處理的提速。
[0214]另外,由于近年來處理器同時發出多個命令,因此如果對寄存器相依性的限制減少并且通過以盡可能少的周期數量執行的命令系列來表達命令,則可以實現處理的提速。
[0215][2.輕量級塊密碼算法“PRESENT”]
[0216]接下來,將描述作為本公開中執行的密碼處理算法的一個示例的輕量級塊密碼算法“PRESENT”。
[0217]在本公開的裝置中,作為使用位片進行的密碼處理,例如,執行“PRESENT”,“PRESENT”是對應于64位的塊大小和80位和128位的密鑰長度的輕量級塊密碼算法。
[0218]將參照圖6描述根據輕量級塊密碼算法“PRESENT”進行的密碼處理順序的概況。
[0219]如圖6中所示,在輕量級塊密碼算法“PRESENT”中,輸入例如具有64位的平文塊和具有80位的密碼密鑰。
[0220]首先,基于具有80位的密碼密鑰生成具有64位的輪密鑰并且執行下面的處理。
[0221](步驟S71)對具有64位的平文塊和具有64位的輪密鑰執行加法處理(異或運算:X0R)。
[0222](步驟S72)另外,針對相加結果執行非線性變換處理(SboxLayer)。
[0223](步驟S73)另外,針對非線性變換結果執行線性變換處理(PLayer)。
[0224]步驟S71至S73中的處理(也就是說,與輪密鑰的加法處理、非線性變換處理和線性變換處理)被設置為I個單元的輪運算,重復地執行該輪運算。例如,重復地執行31輪,在最后一輪之后,再次執行與輪密鑰的運算,以生成并且輸出密文。
[0225]另外,順序地執行基于輸入的密鑰數據的更新處理(更新),執行生成各輪中使用的輪密鑰(64位)的處理。
[0226]本公開的信息處理裝置例如通過使用通過位片處理生成的位片表達數據塊作為處理單元,按照軟件(程序)執行根據圖6中示出的輕量級塊密碼算法“RPRESENT”的密碼處理。具體而言,實現按照定義諸如塊間運算(AND、0R、X0R等)的處理、寄存器存儲數據的移位處理、或比特位置的轉置處理等的軟件(程序)進行的密碼處理。
[0227][3.信息處理裝置(密碼處理裝置)的構造和處理順序的概況]
[0228]將參照圖7描述執行根據本公開的“PRESENT”的密碼處理的信息處理裝置(密碼處理裝置)的構造和處理順序。
[0229]圖7是闡明信息處理裝置100的構造和處理的示圖。
[0230]信息處理裝置100可以由例如PC等構成,并且可以被構造為不包括根據特定算法執行密碼處理的專用硬件作為必要構造的裝置。
[0231]信息處理裝置將用于執行密碼處理的軟件(程序)存儲在存儲器中并且執行根據程序的處理以執行密碼處理。
[0232]圖7中示出的信息處理裝置100的密碼處理單元110由例如由具有程序執行功能的CPU等構成的數據處理單元和存儲數據、各種參數和程序的存儲器(RAM、ROM、寄存器等)構成,數據處理單元(CPU等)根據程序執行圖示的步驟Slll至S112和步驟S121至S123中的處理,以執行密碼處理。
[0233]另外,下文中,將描述輸入平文數據82和密碼密鑰81作為輸入數據80,并且生成并輸出加密數據91作為輸出數據90的密碼處理示例。
[0234]另外,如上所述,在加密平文數據以生成加密數據的密碼處理和解密加密數據以生成平文數據的解密處理二者中,密碼處理單元110根據附圖中示出的步驟Slll和S112和步驟S121至S123執行密碼處理。
[0235]下文中,將描述執行密碼處理的情況的示例作為加密處理和解密處理的代表性示例。
[0236]輸入數據80是多個密碼密鑰81和多個平文數據項82。
[0237]密碼密鑰和平文數據項以一對一方式關聯。也就是說,用密碼密鑰a加密平文數據a、用密碼密鑰b加密平文數據b、用密碼密鑰c加密平文數據C、…、用密碼密鑰N加密平文數據N。密碼處理單元110輸入N個密碼密鑰和平文數據項作為處理單元并且執行密碼處理。
[0238]另外,平文數據項a、b和c中的每個由具有預定數據長度的數據塊(例如,64位)構成。
[0239]以與上述相同的方式,密碼密鑰a、b和c中的每個也由具有預定數據長度的密鑰數據塊(例如,80位)構成。
[0240]另外,位大小是一個示例,可以針對數據或密鑰設置各種位大小。
[0241]作為輸出數據90生成的加密數據91是下面的數據,諸如,用密碼密鑰a加密的加密數據a、用密碼密鑰b加密的加密數據b、用密碼密鑰c加密的加密數據C、…、用密碼密鑰N加密的加密數據N。密碼處理單元110生成并且輸出N個加密數據項。
[0242]例如,N個加密數據項被通過圖1或圖2中示出的網絡分別發送到N個傳感器(終端節點),在各傳感器中執行解密處理。另外,可以按相同方式設置用于加密的密鑰和用于解密處理的密鑰,作為輸入數據在圖7中示出的密碼密鑰例如被構造為保持在各傳感器中的特有傳感器密鑰。
[0243]圖7中示出的密碼處理單元110執行的處理是下面的處理,諸如,步驟Slll:密鑰變換處理、步驟S112:密鑰編排處理、步驟S121:數據變換處理、步驟S122:密碼處理、步驟S123:數據逆變換處理。
[0244]密碼處理單元110通過執行上述的步驟,使用位片密碼處理實現根據輕量級塊密碼算法“PRESENT”的密碼處理。
[0245]首先,將簡要描述各處理的概況和所有處理的流程,然后將詳細地描述各處理。
[0246]步驟Slll中的密鑰變換處理是生成由位片表達塊構成的位片表達密鑰數據的處理,所述位片表達塊是密碼密鑰81 (也就是說,由例如具有80位的密鑰數據形成的多個密碼密鑰塊)的具有相同次序的位或每η位的位的數據的組合,這里,η是2的冪,諸如2、4、8、16、64、128 等。
[0247]步驟S121中的數據變換處理是生成由位片表達塊構成的位片表達平文數據的處理,所述位片表達塊是平文數據項82 (也就是說,由例如具有64位的平文數據形成的多個數據塊)的具有相同次序的位或每η位的位的數據的組合,這里,η是2的冪,諸如2、4、8、
16、64、128 等。
[0248]步驟S112中的密鑰編排處理(密鑰編排)是通過使用步驟Slll中的密鑰變換處理(密鑰變換)中生成的位片表達密鑰數據生成將用于密碼處理的多個輪密鑰的處理。
[0249]步驟S122中的密碼處理(數據處理)是針對基于步驟Slll中的數據變換處理(數據變換)中的平文數據生成的位片表達數據,執行使用輪密鑰的密碼處理的步驟。
[0250]根據軟件(程序)執行根據使用構成通過位片處理生成的位片表達數據作為單元進行的、諸如與輪密鑰的加法(XOR)處理、線性變換處理、或非線性變換處理等密碼算法進行的處理。
[0251]在后續的步驟S123中,針對步驟S122中的密碼處理(數據處理)的結果,執行數據逆變換處理(數據變換_0。該處理是在位片處理之前將位片表達數據還原為對應于平文數據82的加密數據的組合的處理。用該處理,生成對應于平文數據82的加密數據91作為輸出數據90。
[0252]下文中,將依次詳細地描述各步驟中的處理。
[0253][4.密鑰變換處理和數據變換處理]
[0254]首先,將描述圖7中示出的密碼處理單元110的下面的處理,也就是說,步驟SI 11:密鑰變換處理和步驟S121:數據變換處理。
[0255]首先,將參照圖8描述步驟Slll中的密鑰變換處理。
[0256]步驟Slll中的密鑰變換處理是生成位片表達密鑰塊的處理,位片表達密鑰塊是圖7中作為輸入數據示出的密碼密鑰81 (也就是說,由例如具有80位的密鑰數據形成的多個密碼密鑰塊)的具有相同次序的位或每η位的位的數據的組合,這里,η是2的冪,諸如
2、4、8、16、64、128 等。
[0257]圖8示出作為密碼密鑰81 (輸入數據)的均具有80位的八個密鑰數據項(al)至(a8)。
[0258]在步驟Slll中,位片表達密鑰塊根據均具有80位的八個密鑰數據項(al)至(a8)生成,并且被存儲在信息處理裝置中的構成存儲器的寄存器(XMM寄存器(r0等)或通用寄存器(gO等))中。
[0259]圖8中示出的(bl)至(b8)是作為步驟Slll中的密鑰變換處理的處理結果的寄存器存儲數據項,也就是說,位片表達密鑰塊的存儲數據項。這里,八個128位寄存器用作位片表達密鑰塊的存儲區。
[0260]如圖8的(bl)中所示,密碼處理單元110例如將8位數據[0,O]存儲在XMM寄存器r0中,在8位數據[0,0]中只收集了作為圖8中示出的輸入數據項的八個80位密鑰數據項(al)至(a8)的首位。
[0261]8位數據[0,0]是只由八個80位密鑰數據的首位形成的組合,并且是一個位片表達塊。
[0262]接下來,如圖8的(b2)中所示,將8位數據[1,0]存儲在XMM寄存器rl中,在8位數據[1,0]中只收集了輸入數據項(al)至(a8)的第二位。
[0263]接下來,如圖8的(b3)中所示,將8位數據[2,O]存儲在XMM寄存器r2中,在8位數據[2,O]中只收集了輸入數據項(al)至(a8)的第三位。
[0264]接下來,如圖8的(b4)中所示,將8位數據[3,O]存儲在XMM寄存器r3中,在8位數據[3,O]中只收集了輸入數據項(al)至(a8)的第四位。
[0265]接下來,如圖8的(bl)中所示,將8位數據[0,I]存儲在XMM寄存器r0中,在8位數據[0,I]中只收集了輸入數據項(al)至(a8)的第五位。
[0266]如上所述,數據以四位為單位在XMM寄存器rO至r3中以八位為單元進行存儲,輸入數據項(al)至(a8) (8X64 = 512位)的首個64位的數據被存儲在四個XMM寄存器r0至r3中。
[0267]另外,輸入數據項(al)至(a8)的第65位和后續位的數據通過依次使用通用寄存器(gO至g3)或XMM寄存器(r4至r7)以八位為單元進行存儲。
[0268]如圖8的(b5)中所示,將8位數據[0,16]存儲在XMM寄存器r4(或通用寄存器gO)中,在8位數據[0,16]中只收集了輸入數據項(al)至(a8)的第65位。
[0269]接下來,如圖8的(b6)中所示,將8位數據[1,16]存儲在XMM寄存器r5(或通用寄存器gl)中,在8位數據[1,16]中只收集了輸入數據項(al)至(a8)的第66位。
[0270]接下來,如圖8的(b7)中所示,將8位數據[1,16]存儲在XMM寄存器r6(或通用寄存器g2)中,在8位數據[1,16]中只收集了輸入數據項(al)至(a8)的第67位。
[0271]接下來,如圖8的(b8)中所示,將8位數據[1,16]存儲在XMM寄存器r7(或通用寄存器g3)中,在8位數據[1,16]中只收集了輸入數據項(al)至(a8)的第68位。
[0272]如上所述,密碼處理單元110執行對八個80位密鑰的位片處理并且將密鑰存儲在多個寄存器中。具體而言,例如,在信息處理裝置100具有包括用于因特爾擴展SMD命令的寄存器的八個XMM寄存器(r0至r7)或者四個XMM寄存器(r0至r3)和四個通用寄存器(gO至g3)的構造的情況下,通過使用寄存器以八位為單元分散并且存儲位片數據。
[0273]圖8中示出的各示例的各寄存器存儲數據如下。
[0274]首先,作為輸入數據的八個80位密鑰數據塊(al)至(a8)的第1、第5、第9、…、第61位被存儲在XMM寄存器r0中,八個80位密鑰數據塊(al)至(a8)的第2、第6、第
10、…、第62位被存儲在XMM寄存器rl中,八個80位密鑰數據塊(al)至(a8)的第3、第
7、第11、…、第63位被存儲在XMM寄存器r2中,八個80位密鑰數據塊(al)至(a8)的第
4、第8、第12、…、第64位被存儲在XMM寄存器r3中。
[0275]另外,作為輸入數據的八個80位密鑰數據塊(al)至(a8)的第65、第69、第73和第77位被存儲在XMM寄存器r4 (或通用寄存器gO)中,八個80位密鑰數據塊(al)至(a8)的第66、第70、第74和第78位被存儲在XMM寄存器r5 (或通用寄存器gl)中,八個80位密鑰數據塊(al)至(a8)的第67、第71、第75和第79位被存儲在XMM寄存器r6 (或通用寄存器g2)中,八個80位密鑰數據塊(al)至(a8)的第68、第72、第76和第80位被存儲在XMM寄存器r7 (或通用寄存器g3)中。
[0276]如上所述,使用寄存器以四位為單位將輸入數據的64位重復地存儲在四個寄存器中。還使用寄存器以四位為單位將第65位和隨后的位存儲在另外四個寄存器中。
[0277]另外,圖8中示出的任意寄存器存儲數據[i,j]是作為八位密鑰數據項(al)至(a8)的相同次序的位的組合的位片表達塊并且是8位的數據。
[0278]另外,在表示為寄存器存儲數據的標識符的[i,j]中,i是八個80位密鑰數據塊(al)至(a8)的各輸入數據的從頭部起以四位為單位被重復設置為0、1、2和3的參數,并且示出指示這四位單位中之中存儲的是哪個位的變量。
[0279]j對應于指示從八個密鑰數據項(al)至(a8)的四位單位的數據中的四位單位的數據次序的參數。
[0280]例如,在以四位為單位從各輸入數據的從頭部起劃分出數據的情況下,由于i被設置為四位單位的數據中的第一位中的0,i被設置為四位單位的數據中的第二位中的1,
I被設置為四位單位的數據中的第三位中的2,i被設置為四位單位的數據中的第四位中的
3,因此當[i, j] = [2,I]時的i = 2指示四位單位的數據的第三位。
[0281]另外,當[i,j] = [2,I]時的j = I是指示從各輸入數據的頭部起的四位單位的數據開始的四位單位數據的次序的參數。
[0282]j被設置為第一的四位單位數據的0,j被設置為第二的四位單位數據中的1,j被設置為第三的四位單位數據中的2。
[0283]當[i,j] = [2,I]時,j = 1,因此確認數據是第二的四位單位數據。
[0284]如上所述,在[2,I]中,例如,j是1,因此確認數據是第二的四位單位數據,i是2,因此確認數據是第二的四位單位的數據中的第三數據。
[0285]也就是說,確認塊由從頭部起的第七位的數據項的組合構成。
[0286]如上所述,在步驟Slll中的密鑰變換處理中,圖7中示出的密碼處理單元110生成由位片表達塊[0,0]至[3,19]形成的位片表達密鑰數據并且將位片表達密鑰數據存儲在寄存器中。
[0287]接下來,將參照圖9描述步驟S121中的數據變換處理。
[0288]該數據變換處理是與參照圖8描述的密鑰變換處理相同的將數據變換成位片表達數據的處理。然而,與它的不同點在于,輸入是八個64位平文數據項。
[0289]圖9中示出的示例中的各寄存器存儲數據如下。
[0290]作為輸入數據項的八個64位數據塊(al)至(a8)的第1、第5、第9、…、第61位被存儲在XMM寄存器r0中,八個64位數據塊(al)至(a8)的第2、第6、第10、...、第62位被存儲在XMM寄存器rl中,八個64位數據塊(al)至(a8)的第3、第7、第11、...、第63位被存儲在XMM寄存器r2中,八個64位數據塊(al)至(a8)的第4、第8、第12、...、第64位被存儲在XMM寄存器r3中。
[0291]如上所述,使用寄存器以四位為單位將輸入數據的64位重復地存儲在四個寄存器中。
[0292]圖9中示出的任意寄存器存儲數據[i,j]是八個平文數據項(al)至(a8)的相同次序的位的組合并且是8位的數據。
[0293]i是八個64位平文數據項(al)至(a8)的各輸入數據的從頭部起以四位為單位被重復設置為0、1、2和3的參數,并且示出指示存儲的是這四位單位中哪個位的變量。
[0294]j是指示八個平文數據項(al)至(a8)的四位單位的數據中的四位單位的數據次序的參數。
[0295][5.密鑰編排處理(密鑰編排處理示例I)]
[0296]接下來,將詳細描述圖7中示出的密碼處理單元110執行的步驟S112中的處理,也就是說,密鑰編排處理。
[0297]步驟S112中的密鑰編排處理(密鑰編排)是通過使用步驟Slll中的密鑰變換處理(密鑰變換)中生成的位片表達密鑰塊生成將在密碼處理中使用的多個輪密鑰的處理。
[0298]首先,如以上參照圖8描述的,在步驟Slll中,八個80位密鑰的位片表達密鑰數據項被分散和存儲在寄存器中。
[0299]在步驟S112中,使用寄存器中存儲的位片表達密鑰數據項執行生成輪密鑰的處理。
[0300]將參照圖10和隨后的附圖詳細描述生成輪密鑰的處理。另外,圖10和隨后的附圖示出圖8中示出的各寄存器存儲數據的數據表達式[i,j],如下所述地,用數字79至O簡化和改寫表達。[O, O] = 79,[I, O] = 78,[2,O] = 77,[3,O] = 76,[O, I]至[3,I] = 75至 72,[O, 2]至[3,2] = 71 至 68,…,[O, 14]至[3,14] = 7 至 4,[O, 15] = 3,[I, 15]=2,[2,15] = 1,以及[3,15] = O。
[0301]另外,在初始狀態下,[O, O] = 79是其中組合了八個80位密鑰的第I位的8位數據。下文中,78、77、76、75、…和O對應于其中組合了八個80位密鑰的第2、第3、第4、第
5、…和最后1(第80)位的8位數據。
[0302]步驟Slll中生成的位片表達密鑰數據的寄存器存儲數據如圖10中所示。
[0303]如圖10中所示,O至79的80位片塊被分散和存儲在寄存器中。
[0304]各塊是由八個密碼密鑰的相同次序的位的組合形成的8位數據所形成的塊(位片表達塊)。
[0305]如下文中將描述的,通過使用該塊作為單元執行塊單位的處理,能夠在單次密碼處理中執行與分別使用八個密鑰進行的密碼處理相同的處理。
[0306]在步驟SI 12中,使用存儲在寄存器中的八個位片表達的80位密鑰生成輪密鑰。在密碼處理算法“PRESENT”中,對應于輪數的32個輪密鑰是必要的,并且在步驟S112中,使用寄存器中存儲的位片表達數據生成32個輪密鑰。
[0307]另外,通過下述處理生成的輪密鑰是在塊(位片表達塊)單位的處理中使用的輪密鑰。
[0308]例如,在圖6中示出的通常的PRESENT算法中,在64位平文中使用的各輪的輪密鑰具有64位,但使用圖7中示出的位片數據執行密碼處理的步驟S122中的密碼處理被作為位片表達塊單位的處理來執行。
[0309]也就是說,平文經受使用64個塊為單元的密碼處理,因此將在該密碼處理中使用的輪密鑰也是具有64個塊的輪密鑰。
[0310]在示例中,在一個密鑰塊(位片表達密鑰塊)中,存儲八個原始密碼密鑰81的相同次序的位的數據,也就是說,八位。
[0311]將在本公開的位片密碼處理中使用的輪密鑰是具有64個塊的輪密鑰,也就是說,具有64X8位=512位的輪密鑰。
[0312]以與上述相同的方式處理作為加密處理對象的平文,在圖6中示出的正常PRESENT算法中,平文輸入具有64位,但在本公開的位片密碼處理中,輸入位片表達數據的64個塊(也就是說,具有64X8位=512位的64個塊)來執行處理。
[0313]在步驟S112中,生成將在位片表達塊之間的密碼處理中使用的由64個塊形成的32個輪密鑰。
[0314]如圖11中所示,生成的輪密鑰被寫入通過密鑰指針(Pt)指定的存儲區(m0至m3)中。
[0315]圖12示出步驟S112中執行的密鑰編排處理的詳細流程。
[0316]首先,在步驟S201中,設置輸入數據和初始數據。
[0317]具體而言,輸入存儲在寄存器中的位片表達密鑰數據作為輸入數據。另外,設置指示用于寫入生成的輪密鑰的存儲區的指針(Pt)和生成的輪密鑰的輪號Rn。在初始設置中,Rn被設置為O,隨后Rn增至1、2、3、…和31,生成32個輪密鑰。
[0318]在步驟S202中,判定Rn是否達到31。在Rn小于31的情況下,處理前進至步驟S203,指示用于寫入生成的輪密鑰的存儲器地址的指針(pt)被更新。可以在保證輪密鑰的存儲區的同時更新指針(Pt)。
[0319]在步驟S204中,執行輪密鑰生成更新處理并且輪號Rn增加I。
[0320]隨后,將描述該具體處理。
[0321]接下來,處理返回到步驟S202,判定Rn是否達到31。在Rn小于31的情況下,重復步驟S203和隨后的處理。在步驟S202中,在判定Rn已經達到31的情況下,處理前進至步驟S204,執行將生成的輪密鑰寫入存儲器中的處理。最后,在步驟S205中,讀取生成的輪密鑰并且處理轉至執行密碼處理。
[0322]圖13示出步驟S203中執行的輪密鑰生成更新處理的詳細處理流程。
[0323]另外,如圖11中所示,通過位片處理生成的位片表達密鑰塊被存儲在寄存器r0、rl、r2> r3> r4> r5> r6 和 r7 中。
[0324]首先,在圖13中示出的流程圖的步驟S221中,寄存器rl、r2、r3和r4被復制到寄存器 r9、rlO> rll 和 r8。
[0325]也就是說,如圖14中所示,寄存器rl、r2、r3和r4被復制到寄存器r9、rlO、rll和r8。
[0326]接下來,在步驟S222中,在寄存器r8中執行混排命令,執行寄存器8中存儲數據的替換。
[0327]另外,在本公開的裝置中執行的混排是以塊為單位替換存儲在一個寄存器中的數據以將數據存儲在同一寄存器中的處理。也就是說,這是以塊為單位替換寄存器中的塊單位的數據的處理。
[0328]例如,在寄存器r8中的存儲數據是從頭部起的以八位為單元的下列數據的情況下,[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]和[0,15],步驟S222中的移位處理被作為下面的移位處理來執行。
[0329]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, I]、[O, 2]、[O, 3]、[O, O]、[O, O]、[O, O]、[0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,0], [0,O]),也就是說,執行 8位數據單位的左方向移位。
[0330]其結果是圖15中示出的數據。
[0331]接下來,在步驟S223中,針對寄存器r9、rl0、rll和r8中的存儲數據,執行對應于預定非線性變換(Sbox邏輯命令序列)的運算處理。
[0332]如圖16中所示,針對作為寄存器r9、rl0、rll和r8中的存儲數據項的塊18、17、16和15執行的非線性變換(Sbox邏輯命令序列)的結果被存儲在寄存器r8、r9、rlO和rll中。非線性變換處理的結果是圖16中示出的下列數據。
[0333]所述數據項是寄存器r8中的數據S0、r9中的數據Sl、rlO中的數據S2、rll中的數據S3,在示例中使用的非線性變換(Sbox邏輯命令序列)處理被作為執行例如寄存器之間的存儲數據項間的、圖17中示出的邏輯命令序列的運算處理來執行。
[0334]被示出為圖17的邏輯命令序列的寄存器x3、x2、xl、x0和x4分別對應于圖16中示出的寄存器r9、rl0、rll、r8和rl2。
[0335]另外,圖16中示出的寄存器rl2對應于圖17中示出的邏輯命令序列中的寄存器x4,并且用作用于存儲在運算處理中的中間數據等的臨時區域。
[0336]接下來,在步驟S224中,寄存器r8、r9、rl0和rl I中的存儲數據項向左邊移位120位。
[0337]圖18示出對寄存器r8、r9、rl0和rll中的存儲數據項向左120位移位的結果。
[0338]接下來,在步驟S225中,寄存器r5、r6和r7中的存儲數據項向右移位8位,執行寄存器r4和由預定數據形成的MASKO的AND運算,以及寄存器r5、r6和r7和由預定數據形成的MASKl的AND運算。
[0339]另外,MASK的值不一定被保持在寄存器中。
[0340]如圖19中所示,MASKO是其中只有八位數據單位的第二塊至第四塊中的位被設置為I并且其它位被設置為O的掩碼。
[0341]如圖19中所示,MASKl是其中只有八位數據單位的第二塊至第五塊中的位被設置為I并且其它位被設置為O的掩碼。
[0342]如圖19中所示,用與掩模數據項的AND處理,寄存器r4至r7的頭部的八位數據項被改寫為O。
[0343]接下來,在步驟S226中,執行寄存器r4、r5、r6和r7和寄存器rll、r8、r9和rlO的異或運算(X0R),運算的輸出被存儲在寄存器r4、r5、r6和r7中。
[0344]圖20示出異或運算(XOR)處理和處理結果的存儲數據項。
[0345]作為異或運算(XOR)處理的結果,作為寄存器rll、r8、r9和rlO的頭部的8位數據項的步驟S223中的非線性變換處理(Sbox)的運算結果被存儲在寄存器r4、r5、r6和r7的頭部的八位中。
[0346]接下來,在步驟S227中,針對寄存器r0、rl、r2和r3執行混排命令,混排結果被存儲在寄存器r0、rl、r2和r3中。
[0347]圖21示出在混排處理之前和之后的寄存器r0、rl、r2和r3的存儲數據項。
[0348]對于寄存器rO與寄存器rl、r2和r3,該混排處理中的數據重排的次序是不同的。各寄存器中的八位單位的數據項從頭部起是[0,0], [O, 1]> [0,2]、[0,3]、[0,4]、[0,5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]和[O, 15]。
[0349]在步驟S227中的混排處理中,針對寄存器rO執行下面的設置。
[0350]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11], [O, 12], [O, 13], [O, 14], [O, 15]) — ([O, 12], [O, 13], [O, 14], [O, 15], [0,0],[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11])
[0351]另外,針對寄存器rl、r2和r3執行下面的設置。
[0352]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]、[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10])
[0353]接著,在步驟S228中,寄存器r0、rl、r2和r3中的數據項被復制到寄存器r8、r9、rlO和rll,執行寄存器r8和MASK2的AND處理和寄存器r9、rl0和rll和MASK3的AND處理,處理的結果被存儲在寄存器r8、r9、rlO和rll中。
[0354]在圖22中示出處理的處理結果。
[0355]另外,如圖22中所示,MASK2是其中頭部的32位是O并且后續的96位是I的掩碼數據。
[0356]如圖22中所示,MASK3是其中頭部的40位是O并且后續的88位是I的掩碼數據。
[0357]作為該處理的結果,寄存器r8的頭部的32位被設置成0,寄存器r9、rl0和rll的頭部的40位被設置成O。
[0358]接下來,在步驟S229中,執行寄存器r4、r5、r6和r7和寄存器rll、r8、r9和rlO的異或運算(X0R),運算的輸出被存儲在寄存器r4、r5、r6和r7中。
[0359]圖23中示出該異或運算(XOR)處理。
[0360]接下來,在步驟S230中,針對寄存器r5、r6、r7和r4的右八位和寄存器rl的左八位執行作為預設的計數值的輪計數器值的異或運算(XOR)。
[0361]輪計數器被設置成根據輪數O至31的作為二進制表達形式的各計數值00000至11111。
[0362]例如,在生成具有輪數13的輪密鑰的情況下,輪計數器被設置成作為二進制表達形式的指示13的01101的各計數值。
[0363]針對計數值01101,執行與寄存器r5、r6、r7和r4的右八位和寄存器rl的左八位的XOR運算。
[0364]另外,與輪計數器的計數值00000至11111的XOR運算的次序是從各寄存器的存儲值的原始數據的高階位開始的次序。在圖24中示出的示例中,其次序是從大值開始的次序并且是38、37、36、35和34的次序。
[0365]也就是說,寄存器的次序是15、抑、17、14和1"1。
[0366]如圖24中所示,從高階位開始,針對計數值01101的第I位O執行寄存器r5中的右8位數據(圖24中示出的寄存器r5中的[38])的XOR運算,針對計數值01101的第2位I執行寄存器r6中的右8位數據(圖24中示出的寄存器r6中的[37])的XOR運算,針對計數值01101的第3位I執行寄存器r7中的右8位數據(圖24中示出的寄存器r7中的[36])的XOR運算,針對計數值01101的第4位O執行寄存器r4中的右8位數據(圖24中示出的寄存器r6中的[35])的XOR運算,針對計數值01101的第5位I執行寄存器rl中的左8位數據(圖24中示出的寄存器rl中的[34])的XOR運算,各數據被更新。
[0367]另外,在該異或運算(XOR)中,可以使用如圖25中所示的MASK4和MASK5。
[0368]MASK4是其中開始的120位被設置成O并且最后的8位被設置成I的掩碼數據。
[0369]MASK5是其中開始的8位被設置成I并且最后的120位被設置為成O的掩碼數據。
[0370]MASK4用于與寄存器r5、r6、r7和r4的XOR,MASK5用于與寄存器rl的X0R。
[0371]另外,在輪計數器的五位00000至11111中,即使當被設置成針對作為對象的與被設置為I的位對應的寄存器執行處理并且不針對與被設置為O的位對應的寄存器執行處理時,也得到與步驟S230中的異或運算(XOR)相同的結果。
[0372]也就是說,在輪計數器的值例如是13 = 01101的情況下,針對從上述原始數據的高階開始的寄存器次序15、抑、17、14和1*1,
[0373]由于只有輪計數器的第2、第3、第5位被設置成1,所以可以只針對r5、r6、r7、r4和rl執行寄存器r6和r7與MASK4的XOR運算和寄存器rl與MASK5的XOR運算。
[0374]作為步驟S230中的結果得到的寄存器r5、r6、r7、r4、rl、r2、r3和rO中的存儲數據被設置為用于生成下一輪密鑰的塊。
[0375]存儲在寄存器r5、r6、r7、r4、rl、r2、r3和rO中的塊中的64個塊被設置為下一輪的輪密鑰。
[0376]下文中,使用更新后的寄存器存儲塊重復根據圖13的流程進行的處理,生成32個輪密鑰。
[0377]上文中,已經描述了根據圖13中示出的流程圖進行的詳細處理,但輪密鑰生成和更新處理可以被簡化并且如圖26地統一示出。
[0378]圖26 (A)是初始寄存器存儲數據,在初始寄存器存儲數據中,從高階的79至O地布置圖10中示出的多個寄存器中存儲的80個塊。
[0379]從初始設置的塊中選擇64個塊作為初始輪密鑰。
[0380]此后,針對作為圖26(A)中示出的初始寄存器存儲數據的80個塊執行根據圖13中示出的流程進行的處理。也就是說,執行參照圖14至圖25描述的處理來更新寄存器。[0381 ] 圖26 (B)統一示出寄存器更新處理。
[0382]寄存器更新處理被作為包括(a)諸如塊單位的移位處理或混排處理等旋轉處理、(b)塊單位的非線性變換處理(Sbox)和(c)塊與輪計數器(00000至11111)的異或運算中的各處理的處理來執行。
[0383]結果,設置在圖26(B)的最下一級示出的寄存器更新后的數據,也就是說,用于生成下一輪密鑰的數據。從寄存器的塊的左邊選擇64個組并且將這些組設置為輪密鑰。
[0384]此后,針對圖26(B)的最下一級示出的寄存器更新后的數據重復地執行圖26(B)的密鑰更新以執行寄存器更新,順序地生成輪密鑰。
[0385]通過這樣做,在圖7中示出的步驟S112中的密鑰編排處理中生成輪密鑰。
[0386][6.密鑰編排處理(密鑰編排處理示例2)]
[0387]接下來,將描述圖7中示出的密碼處理單元110中執行的步驟S112中的密鑰編排處理的另一示例。
[0388]在上述的[5.密鑰編排處理(密鑰編排處理示例I)]中描述的密鑰編排單元中,必須執行Sbox,也就是說,針對各輪執行非線性變換處理。這是針對參照圖16和圖17描述的四個塊進行的非線性變換處理(Sbox)。
[0389]該非線性變換處理具有如圖17中所示的大量運算步驟,因此增加了處理時間。
[0390]下文中,作為密鑰編排處理示例2,將描述執行非線性變換處理(Sbox)的次數減小至2的方法。
[0391]圖27示出表明通過處理示例的密鑰編排單元執行的處理的流程。
[0392]該處理與以上參照圖12描述的密鑰編排處理之間的差異是針對第一輪和在第17輪前的步驟S252中和步驟S257之前執行非線性變換(Sbox)的預計算、和步驟S255和步驟S260中的輪密鑰生成和更新處理的內容。
[0393]圖27的流程的步驟S251中的處理是與圖12的流程的步驟S201中的處理相同的處理。
[0394]圖27的流程的步驟S254和S259中的處理是與圖12的流程的步驟S203中的處理相同的處理。
[0395]圖27的流程的步驟S256和S261中的處理是與圖12的流程的步驟S205中的處理相同的處理。
[0396]圖27的流程的步驟S262中的處理是與圖12的流程的步驟S206中的處理相同的處理。
[0397]將省略對這些處理的描述,下文中,將描述與參照圖12描述的密鑰編排處理不同的處理。
[0398](6-1.非線性變換(Sbox)的預計算處理)
[0399]圖28和圖29示出表明步驟S252和步驟S257中執行的非線性變換處理(Sbox)的預計算處理的詳細順序的流程。
[0400]如圖30中所示,在初始狀態下,位片表達密鑰塊79至O被存儲在寄存器中。這與以上參照圖10和圖11描述的設置中相同。
[0401]例如,位片表達密鑰塊[79]是其中組合了八個80位密鑰的第I位的8位數據。下文中,78、77、76、75、…和O對應于其中組合了八個80位密鑰的第2、第3、第4、第5、…和最后1(第80)位的8位數據項。
[0402]根據圖28和圖29中示出的流程,將描述圖27的流程的步驟S252和步驟S257中執行的非線性變換(Sbox)的預計算的詳細順序。
[0403]首先,在圖28的流程中示出的步驟S281中,如圖31中所示,寄存器rO、rl、r2和r3被復制到寄存器rl2、rl3、rl4和rl5,針對寄存器rl2、rl3、rl4和rl5執行混排命令。
[0404]對于寄存器,該混排處理中的重排的次序是不同的。
[0405]當在混排之前寄存器rl2、rl3、rl4和rl5中的數據的布置(與寄存器rO、rl、r2和 r3 中的相同)從左起被設置為[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[0,8], [0,9], [O, 10]、[0,11]、[0,12]、[0,13]、[0,14]和[O, 15]時,如下地設置各寄存器的混排。
[0406]寄存器r 12和r 13
[0407]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]、[O, O]、[O, O]、[O, O])
[0408]寄存器rl4
[0409]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 15]、[O, O]、[O, O]、[O, O])
[0410]寄存器rl5
[0411]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 15]、[O, O]、[O, O]、[O, O])
[0412]接下來,在步驟S282中,如圖32中所示,寄存器r4、r5、r6和r7中的數據被存儲在r8、r9、rlO和rll中,寄存器r8經受右12字節邏輯移位并且寄存器r9、rlO和rll經受右13字節邏輯移位。
[0413]接下來,在步驟S283中,如圖33中所示,執行寄存器rl2與MASK6的AND處理和寄存器rl3、rl4和rl5與MASK7的AND處理。
[0414]MASK6是其中開始的96位被設置成O并且最后的32位被設置成I的掩碼。
[0415]MASK7是其中開始的104位被設置成O并且最后的24位被設置成I的掩碼。
[0416]接下來,在步驟S284中,如圖34中所示,執行寄存器r8、r9、rlO和rll與寄存器rl2、rl3、rl4和rl5的異或運算(XOR),運算的結果被存儲在寄存器rl2、rl3、rl4和rl5中。
[0417]接下來,在步驟S285中,如圖35中所示,針對寄存器rl3、rl4和rl5執行混排命令。
[0418]當在混排之前寄存器rl3、rl4和rl5中的數據的布置(與寄存器rO、rl、r2和r3 中的相同)從左起被設置為[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[0,8], [0,9], [O, 10]、[0,11]、[0,12]、[0,13]、[0,14]和[O, 15]時,如下地設置各寄存器的混排。
[0419]寄存器r 13
[0420]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11], [O, 12], [O, 13], [O, 14], [O, 15]) — ([O, 12], [O, 13], [O, 14], [O, 15], [0,0],[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11])
[0421]寄存器r 14
[0422]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11], [O, 12], [O, 13], [O, 14], [O, 15]) — ([0,8], [0,9], [O, 10], [O, 11], [O, 12],[O, 13]、[O, 14]、[O, 15]、[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7])
[0423]寄存器r 15
[0424]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11] [O, 12]、[O, 13]、[O, 14]、[O, 15]、[O, O]、[O, I]、[O, 2]、[O, 3])
[0425]接下來,在步驟S286中,如圖36中所示,寄存器r 13和r 15被復制到寄存器r9和rll。
[0426]接下來,在步驟S287中,如圖37中所示,針對寄存器rl3、rl4、rl5和rl2的左64位執行字節單位的解包處理。
[0427]另外,本公開的處理中的解包處理是使用塊作為最小單元從高階或低階選擇的例如兩個寄存器中存儲的數據并且交替地將數據存儲在這兩個寄存器中的一個寄存器中的處理。
[0428]具體而言,例如,這是從兩個寄存器選擇各寄存器中存儲的所有塊中的一半塊并且將這些塊再存儲在一個寄存器中的處理。
[0429]如圖37中所示,執行交替地將寄存器rl3和寄存器rl4的左八個塊(64位)以塊(8位)為單元從左起存儲在寄存器rl3中的解包處理。
[0430]以與上述相同的方式,執行交替地將寄存器rl5和寄存器rl2的左八個塊(64位)以塊(8位)為單元從左起存儲在寄存器rl5中的解包處理。
[0431]接下來,在步驟S288中,如圖38中所示,針對寄存器r9、rl4、rll和rl2的右64位執行以字節為單元的解包處理。
[0432]如圖38中所示,執行交替地將寄存器r9和寄存器rl4的右八個塊(64位)以塊(8位)為單元從右起存儲在寄存器r9中的解包處理。
[0433]以與上述相同的方式,執行交替地將寄存器rll和寄存器rl2的右八個塊(64位)以塊(8位)為單元從右起存儲在寄存器rll中的解包處理。
[0434]接下來,在步驟S289中,如圖39中所示,寄存器rl3和1*9被復制到寄存器1*12和rl4。
[0435]接下來,在步驟S290中,如圖40中所示,針對寄存器rl2和rl5以及寄存器rl4和rll的左64位,以8位塊的兩個單位的字為單位執行解包。
[0436]如圖40中所示,執行交替地將寄存器rl2和寄存器rl5的左八個塊(64位)以兩個塊(16位)的字為單位從左起存儲在寄存器rl2中的解包處理。
[0437]以與上述相同的方式,執行交替地將寄存器rl4和寄存器rll的左八個塊(64位)以兩個塊(16位)的字為單位從左起存儲在寄存器rl4中的解包處理。
[0438]接下來,在步驟S291中,如圖41中所示,針對寄存器rl3和rl5以及寄存器r9和rll的左64位,以8位塊的兩個單位的字為單位執行解包。
[0439]如圖41中所示,執行交替地將寄存器rl3和寄存器rl5的右八個塊(64位)以兩個塊(16位)的字為單位從左起存儲在寄存器rl3中的解包處理。
[0440]以與上述相同的方式,執行交替地將寄存器r9和寄存器rll的右八個塊(64位)以兩個塊(16位)的字為單位從左起存儲在寄存器r9中的解包處理。
[0441]接下來,在步驟S292中,如圖42中所示,針對寄存器rl3、rl4和r9執行混排命令。
[0442]當在混排之前寄存器rl3、rl4和r9中的數據的布置(與寄存器r0、rl、r2和r3中的相同)從左起被設置為[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[0,9]、[0,10], [O, 11]、[0,12], [O, 13]、[0,14]和[O, 15]時,如下地設置各寄存器的混排。
[0443]寄存器r 13
[0444]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, I]、[O, 2]、[O, 3]、[O, O]、[O, 5]、[O, 6]、[O, 7]、[O, 4]、[O, 9]、[O, 10]、[O, 11]、[O, 8]、[O, 13]、[O, 14]、[O, 15]、[O, 12])
[0445]寄存器rl4
[0446]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, 2]、[O, 3]、[O, O]、[O, I]、[O, 6]、[O, 7]、[O, 4]、[O, 5]、[O, 10]、[O, 11]、[O, 8]、[O, 9]、[O, 14]、[O, 15]、[O, 12]、[O, 13])
[0447]寄存器r9
[0448]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, 3]、[O, O]、[O, I]、[O, 2]、[O, 7]、[O, 4]、[O, 5]、[O, 6]、[O, 8]、[O, 11]、[O, 9]、[O, 10]、[O, 15]、[O, 12]、[O, 13]、[O, 14])
[0449]接下來,在步驟S293中,如圖43中所示,求得寄存器rl2、rl3、rl4和r9與MASK8、MASK9、MASKlO和MASKll的AND并且將其存儲在各寄存器中。
[0450]另外,MASK8是其中開始的64位被設置成O并且最后的64位被設置成I的掩碼,MASK9是其中位從頭部起被以32位為單元設置成0、1、0、1的掩碼。
[0451]MASKlO是其中從頭部起的16位被連續設置成O并且后續的16位被連續設置成I并且交替出現的掩碼,MASKll是其中從頭部起的8位被連續設置成O并且后續的8位被連續設置成I并且交替出現的掩碼。
[0452]接下來,在步驟S294中,如圖44中所示,執行針對寄存器rl2、rl3、rl4和r9中的數據項的非線性變換處理(Sbox)。
[0453]非線性變換處理是以上參照圖17描述的處理。
[0454]該非線性變換處理的結果被存儲在寄存器r9、rl4、rl3和rl2中。另外,當執行處理時,寄存器r8用作臨時區域。
[0455]作為其結果得到的、各自具有圖45中示出的從寄存器r9、rl4、rl3和rl2的左邊起的8位的16個塊中存儲的數據是16輪的非線性變換處理(Sbox)的結果。
[0456]另外,在Sbox的預計算中,在執行密鑰更新處理之前,寄存器r9、rl4、rl3和rl2被存儲在寄存器rl2、rl3、rl4和rl5中。
[0457]另外,可以通過只是根據在程序上再讀取寄存器的處理來執行寄存器的替換處理。
[0458]通過這樣做,在圖27中示出的步驟S252的Sbox的預計算中,生成將在I至16輪的輪密鑰生成中使用的非線性變換處理(Sbox)的結果,在圖27中示出的步驟S257的Sbox的預計算中,生成將在17至32輪的輪密鑰生成中使用的非線性變換處理(Sbox)的結果。
[0459]在示例中,生成所有輪的輪密鑰所需的非線性變換處理(Sbox)的結果可以僅僅通過執行兩次非線性變換處理(Sbox)來生成。
[0460](6-2.輪密鑰的生成和更新處理)
[0461]接下來,將參照圖46和后續的附圖詳細描述圖27中示出的流程的步驟S255和步驟S260中的輪密鑰生成和更新處理。
[0462]圖46是示出圖27中示出的流程的步驟S255和步驟S260中的輪密鑰生成和更新處理的詳細順序的流程圖。
[0463]根據圖46中示出的流程,將描述圖27的流程的步驟S255和步驟S260中執行的輪密鑰生成和更新處理的詳細順序。
[0464]另外,開始生成和更新輪密鑰之前的寄存器設置如圖47中所示。
[0465]如圖47中所示,位片表達中的密鑰被存儲在寄存器rO、rl、r2、r3、r4、r5、r6和r7中。
[0466]另外,通過(6-1.非線性變換(Sbox)的預計算處理)中描述的處理生成的預計算的非線性變換(Sbox)處理的結果被存儲在寄存器rl2、rl3、rl4和rl5中。
[0467]首先,在圖46的步驟S301中,如圖48中所示,其中存儲了非線性變換(Sbox)處理的結果的寄存器rl2、rl3、rl4和rl5被復制到寄存器r8、r9、rl0和rll,并且執行與MASK5的AND處理。
[0468]另外,本文中,使用第一輪的Sbox值生成和更新輪密鑰的處理示例將被描述為示例。
[0469]對于預計算的非線性變換處理(Sbox)值,使用寄存器rl2、rl3、rl4和rl5的左8位。
[0470]接下來,在步驟S302中,如圖49中所示,寄存器rl2、rl3、rl4和rl5經受左8位邏輯移位。
[0471]接下來,在步驟S303中,如圖50中所示,寄存器r5、r6和r7經受右8位邏輯移位,獲得寄存器r4與MASKO的AND以及寄存器r5、r6和r7與MASKl的AND。
[0472]該處理是與圖13的流程的步驟S225中的處理相同的處理。
[0473]寄存器r5、r6和r7中的存儲數據項向右移位8位,執行寄存器r4與由預定數據形成的MASKO的AND處理和寄存器r5、r6和r7與由預定數據形成的MASKl的AND處理。
[0474]另外,MASK的值不一定被保持在寄存器中。
[0475]如圖50中所示,MASKO是其中只有八位數據單位的第二塊至第四塊中的位被設置為I并且其它位被設置成O的掩碼。
[0476]如圖50中所示,MASKl是其中只有八位數據單位的第二塊至第五塊中的位被設置為I并且其它位被設置成O的掩碼。
[0477]如圖50中所示,用與掩碼數據項的AND處理,寄存器r4至r7的頭部的8位數據項被改寫為O。
[0478]接下來,在步驟S304中,如圖51中所示,執行寄存器r4、r5、r6和r7與寄存器rll、r8、r9和rlO的異或運算(XOR),運算的輸出被存儲在寄存器r4、r5、r6和r7中。
[0479]該處理是與圖13的流程的步驟S226中的處理相同的處理。
[0480]作為異或運算(XOR)處理的結果,作為寄存器rll、r8、r9和rlO的頭部的8位數據項的、步驟S223中的非線性變換處理(Sbox)的運算結果被存儲在寄存器r4、r5、r6和r7的頭部的8位中。
[0481]接下來,在步驟S305中,如圖52中所示,針對寄存器rO、rl、r2和r3執行混排命令,混排結果被存儲在寄存器rO、rl,r2和r3中。
[0482]圖52示出在混排處理之前和之后寄存器rO、rl、r2和r3的存儲數據項。
[0483]該處理是與圖13的流程的步驟S227中的處理相同的處理。
[0484]對于寄存器rO與寄存器rl、r2和r3,該混排處理中的數據重排的次序是不同的。各寄存器中的八位單位的數據項從頭部起是[0,0], [O, 1]> [0,2]、[0,3]、[0,4]、[0,5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]和[O, 15]。
[0485]在步驟S305中的混排處理中,針對寄存器rO執行下面的設置。
[0486]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11], [O, 12], [O, 13], [O, 14], [O, 15]) — ([O, 12], [O, 13], [O, 14], [O, 15], [0,0],[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11])
[0487]另外,針對寄存器rl、r2和r3執行下面的設置。
[0488]([O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10]、[O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]) — ([O, 11]、[O, 12]、[O, 13]、[O, 14]、[O, 15]、[O, O]、[O, I]、[O, 2]、[O, 3]、[O, 4]、[O, 5]、[O, 6]、[O, 7]、[O, 8]、[O, 9]、[O, 10])
[0489]接著,在步驟S306中,如圖53中所示,寄存器rO、rl、r2和r3中的數據項被復制到寄存器r8、r9、rl0和rll,執行寄存器r8與MASK2的AND處理以及寄存器r9、rl0和rll與MASK3的AND處理,處理的結果被存儲在寄存器r8、r9、rl0和rll中。
[0490]該處理是與圖13的流程的步驟S228中的處理相同的處理。
[0491]另外,如圖53中所示,MASK2是其中頭部的32位是O并且后續的96位是I的掩碼數據。
[0492]如圖53中所示,MASK3是其中頭部的40位是O并且后續的88位是I的掩碼數據。
[0493]作為該處理的結果,寄存器r8的頭部的32位被設置成0,寄存器r9、rl0和rll的頭部的40位被設置成O。
[0494]接下來,在步驟S307中,如圖54中所示,執行寄存器r4、r5、r6和r7與寄存器rll、r8、r9和rlO的異或運算(XOR),運算的結果被存儲在寄存器r4、r5、r6和r7中。
[0495]該處理與圖13的流程的步驟S229中的處理相同。
[0496]接下來,在步驟S308中,針對寄存器r5、r6、r7和r4的右八位和寄存器rl的左八位執行作為預設的計數值的輪計數器值的異或運算(XOR)。
[0497]該處理與圖13的流程的步驟S230中的處理相同。
[0498]輪計數器被設置成根據輪數O至31的作為二進制表達形式的各計數值00000至11111。
[0499]例如,在生成具有輪數13的輪密鑰的情況下,輪計數器被設置成作為二進制表達形式的指示13的01101的各計數值。
[0500]針對計數值01101,執行與寄存器r5、r6、r7和r4的右八位和寄存器rl的左八位的XOR運算。
[0501]另外,與輪計數器的計數值00000至11111的XOR運算的次序是從各寄存器的存儲值的原始數據的高階位開始的次序。在圖24中示出的示例中,其次序是從大值開始的次序并且是38、37、36、35和34的次序。
[0502]也就是說,寄存器的次序是15、抑、17、14和1"1。
[0503]如圖55中所示,從高階位開始,針對計數值01101的第I位O執行寄存器r5中的右8位數據(圖55中示出的寄存器r5中的[38])的XOR運算,針對計數值01101的第2位I執行寄存器r6中的右8位數據(圖55中示出的寄存器r6中的[37])的XOR運算,針對計數值01101的第3位I執行寄存器r7中的右8位數據(圖55中示出的寄存器r7中的
[36])的XOR運算,針對計數值01101的第4位O執行寄存器r4中的右8位數據(圖55中示出的寄存器r6中的[35])的XOR運算,針對計數值01101的第5位I執行寄存器rl中的左8位數據(圖55中示出的寄存器rl中的[34])的XOR運算,各數據被更新。
[0504]另外,在該異或運算(XOR)中,可以使用如圖55中所示的MASK4和MASK5。
[0505]MASK4是其中開始的120位被設置成O并且最后的8位被設置成I的掩碼數據。
[0506]MASK5是其中開始的8位被設置成I并且最后的120位被設置為成O的掩碼數據。
[0507]MASK4用于與寄存器r5、r6、r7和r4的XOR,MASK5用于與寄存器rl的X0R。
[0508]另外,在輪計數器的五位00000至11111中,即使當被設置成針對作為對象的與被設置為I的位對應的寄存器執行處理并且不針對與被設置為O的位對應的寄存器執行處理時,也得到與步驟S230中的異或運算(XOR)相同的結果。
[0509]也就是說,在輪計數器的值例如是13 = 01101的情況下,針對從上述原始數據的高階開始的寄存器次序r5、r6、r7、r4和rl,由于只有輪計數器的第2、第3、第5位被設置成1,所以可以只針對r5、r6、r7、r4和rl執行寄存器r6和r7與MASK4的XOR運算和寄存器rl與MASK5的XOR運算。
[0510]作為步驟S308中的結果得到的寄存器r5、r6、r7、r4、rl、r2、r3和rO中的存儲數據被設置為用于生成下一輪密鑰的塊。
[0511]存儲在寄存器r5、r6、r7、r4、rl、r2、r3和rO中的塊中的64個塊被設置為下一輪的輪密鑰。
[0512]下文中,使用更新后的寄存器存儲塊,重復根據圖46的流程進行的處理,生成32個輪密鑰。
[0513]如上所述,在(密鑰編排處理示例2)中,可以將密鑰編排處理示例I中所需的執行四次非線性變換處理(Sbox)減少至兩次。
[0514]將考慮(密鑰編排處理示例2)的處理的數量的減少效果。
[0515]上述兩個密鑰編排處理(S卩,(A)密鑰編排處理示例I (根據圖12和圖13的流程進行的處理)和⑶密鑰編排處理示例2(根據圖27至圖29和圖46的流程進行的處理))之間的處理步驟的數量的比較如下。
[0516](A)密鑰編排處理示例I
[0517]在不進行Sbox預計算的情況下進行密鑰更新處理所需的命令的數量如下。
[0518]密鑰更新處理:1847(= 57x 31+80)
[0519]⑶密鑰編排處理示例2
[0520]在進行Sbox預計算的情況下進行密鑰更新處理所需的命令的數量如下。
[0521]Sbox預計算+密鑰更新處理:1411
[0522](Sbox 預計算:132 ( = 66x 2),密鑰更新處理:1289 (39x 31+80))
[0523]如上所述,相比于(A)密鑰編排處理示例1,(B)密鑰編排處理示例2可以減少處理步驟的數量并且更快速地實現處理。
[0524][7.密碼處理]
[0525]接下來,將詳細地描述通過圖7中示出的密碼處理單元110執行的步驟S122中的處理,也就是說,密碼處理。
[0526]步驟S122中的密碼處理(數據處理)是針對基于步驟Slll中的數據變換處理(數據變換)中的平文數據生成的位片表達數據使用輪密鑰執行密碼處理的步驟。
[0527]根據軟件(程序)執行使用構成通過位片處理生成的位片表達數據的塊作為單元的、根據諸如與輪密鑰的加法(XOR)處理、線性變換處理、或進行的非線性變換等密碼算法的處理。
[0528]參照圖57和隨后的附圖詳細地描述該密碼處理。
[0529]圖57中示出的流程圖是示出通過圖7中示出的密碼處理單元110執行的步驟S122中的處理(也就是說,密碼處理)的詳細順序的流程圖。
[0530]在步驟S401中執行數據輸入和初始設置。
[0531]具體而言,輸入作為寄存器中存儲的密碼處理對象的平文數據的位片表達數據。
[0532]這是在圖7的步驟S121中的數據變換處理中生成的數據并且是通過以上參照圖9描述的平文數據82的變換處理生成的位片表達數據。也就是說,輸入圖9中示出的位片表達塊[O, O]至[3,15]的64個塊。
[0533]在示例中,圖9中示出的位片表達塊[0,O]至[3,15]是其中存儲了作為密碼處理對象的八個平文項的相同次序的位的塊,并且分別是8位的數據項。
[0534]在步驟S401中,輸入位片表達數據,執行將與密碼處理的輪數的計數值對應的輪號Rn設置為O的初始設置和指示其中存儲了輪密鑰的存儲區的密鑰指針(pt)的初始設置。密鑰指針(Pt)代表寫入存儲區中的輪密鑰的存儲器地址。輪號Rn的初始值被設置成O,在完成各輪之后,Rn增加。
[0535]步驟S402至S404是各輪為單位的密碼處理的處理,在步驟S402中,執行輪密鑰加法,也就是說,輪密鑰與輸入平文數據(位片表達數據)的異或運算(addRoundKey),在步驟S403中,針對輪密鑰加法的結果執行非線性變換處理(SboxLayer),在步驟S404中,針對非線性變換處理的結果執行線性變換處理(PLayer)。
[0536]另外,隨后將詳細描述這些處理。
[0537]在步驟S405中,確認處理輪是否到達最后一輪Rn = 31。
[0538]在Rn小于31的情況下,步驟S402至S404中的處理被作為下一輪處理來執行。
[0539]在步驟S405中,在判定輪到達最后一輪Rn = 31的情況下,在步驟S406中輸出密文。
[0540]針對輸出密文執行圖7中示出的步驟S23中的數據逆變換處理,輸出密文被作為最終密文90輸出。
[0541]圖58示出例如用硬件構造執行圖7中示出的密碼處理單元110執行的步驟S122中的密碼處理步驟的情況的構造示例。
[0542]圖58示出兩輪的三個處理,即(a)輪密鑰加法(addRoundKey)、(b)非線性變換(SboxLayer)和(C)線性變換(pLayer)。
[0543]在多輪中重復地執行這三個處理的輪運算,并且輸出密文。
[0544]在本公開的裝置中,例如,在不使用如圖58中所示的密碼處理專用硬件的情況下,執行通過針對存儲在寄存器中的位片表達數據的運算處理進行的輪運算或寄存器存儲數據的移位處理,也就是說,圖57中的流程中示出的步驟S402至S404中的三個處理,即,(a)輪密鑰加法(addRoundKey)、(b)非線性變換(SboxLayer)和(C)線性變換(pLayer)。
[0545]下文中,將詳細描述本公開的裝置執行的各處理。
[0546]首先,將參照圖59描述步驟S402中的密鑰加法處理(addRoundKey)。
[0547]步驟S402中的輪密鑰加法是輪密鑰和輸入的平文數據(位片表達數據)的異或運算(addRoundKey)。
[0548]輪密鑰是用圖7中示出的密碼密鑰81的輸入、通過密鑰處理單元110的步驟Slll中的密鑰變換處理和步驟SI 12中的密鑰編排處理生成的輪密鑰。
[0549]輪密鑰生成處理是上述的[4.密鑰變換處理和數據變換處理]、[5.密鑰編排處理(密鑰編排處理示例I)]和[6.密鑰編排處理(密鑰編排處理示例2)]中描述的處理。
[0550]輪密鑰被存儲在存儲器中并且從密鑰指針(Pt)指示的區域獲取輪密鑰。
[0551]作為密碼處理對象的平文數據是圖7中示出的平文數據82的位片表達數據,如在上述的[4.密鑰變換處理和數據變換處理]中描述的。也就是說,平文數據是通過以上參照圖9描述的處理存儲在寄存器中的位片表達數據。
[0552]另外,在示例中,將在假設如圖9中所示針對基于八個64位平文項(al)至(a8)生成的位片表達數據執行密碼處理的前提下進行描述。
[0553]圖59示出存儲在四個128位寄存器rO至r3中的位片表達數據。圖59的[i,j]即寄存器存儲數據是由圖9中示出的八個平文項(al)至(a8)的相同次序的位的組合形成的位片表達塊。
[0554]由八個平文項(al)至(a8)的第I位的組合形成的位片表達塊被設置為[0,O],由八個平文項(al)至(a8)的第2位的組合形成的位片表達塊被設置為[1,O],由八個平文項(al)至(a8)的第3位的組合形成的位片表達塊被設置為[2,O],由八個平文項(al)至(a8)的第4位的組合形成的位片表達塊被設置為[3,O],由八個平文項(al)至(a8)的第5位的組合形成的位片表達塊被設置為[0,1],……,由八個平文項(al)至(a8)的第63位的組合形成的位片表達塊被設置為[2,15],由八個平文項(al)至(a8)的第64位的組合形成的位片表達塊被設置為[3,15],均由八位形成的位片塊[O,O]至[3,15]被分散并且存儲在四個寄存器rO至r3中。
[0555]圖57的流程的步驟S402中的密鑰加法處理被作為圖59中示出的四個128位寄存器rO至r3的存儲數據與存儲在存儲器中的輪密鑰的異或運算(XOR)處理來執行。
[0556]經受異或運算(XOR)處理的平文和輪密鑰都是8位片表達塊的64塊的數據。
[0557]以各寄存器(=128-位寄存器(16塊的))為單位執行與指針(pt)指定的存儲器位置中存儲的輪密鑰(128位(16塊))進行的異或運算(XOR)處理。
[0558]對于輪密鑰,使用用密鑰指針(Pt)指定的區域中的數據。
[0559]在針對一個寄存器(128位)的各異或運算(XOR)將密鑰指針(pt)向前移動16個塊(128位)的同時,執行與作為存儲在四個寄存器rO至r3中的加密目標的平文數據的位片表達數據的異或運算(XOR),運算結果被存儲在寄存器中。
[0560]接下來,將描述圖57中示出的流程圖的步驟S403中的處理。
[0561]步驟S403是針對步驟S402中的輪密鑰加法處理的非線性變換處理(SboxLayer)。
[0562]非線性變換處理(SboxLayer)被作為其中存儲有輪密鑰加法結果的四個128位寄存器和一個臨時寄存器的寄存器之間的運算處理來執行。
[0563]具體而言,如圖60中所示,處理被作為寄存器之間的運算處理來執行。
[0564]通過運算處理來實現處理。
[0565]在圖17中示出的寄存器x3、x2、xl、x0和x4中,寄存器x3至xO對應于其中存儲了輪密鑰加法結果的四個128位寄存器,并且寄存器x4對應于用作臨時區域的寄存器。
[0566]非線性變換處理(SboxLayer)的結果被存儲在四個128位寄存器(例如,寄存器rO至r4)中。
[0567]接下來,將描述圖57中示出的流程圖的步驟S404中的處理。
[0568]步驟S404中的處理是針對步驟S403中的非線性變換的結果進行的線性變換處理(pLayer)。
[0569]圖61示出圖示線性變換處理(pLayer)的詳細順序的流程圖。
[0570]將依次描述圖61中示出的流程圖的各步驟中的處理。
[0571]另外,作為線性變換處理(pLayer)的處理對象的數據是步驟S403中的非線性變換的結果,步驟S403中的非線性變換的結果被存儲在四個128位寄存器rO至r3中,如圖62中所示。
[0572]首先,在步驟S451中,如圖63中所示,針對寄存器rO、rl、r2和r3執行混排命令并且其結果被存儲在寄存器r0、rl、r2和r3中。
[0573]當在混排之前寄存器rO、rl、r2和r3中的數據的布置(與寄存器rO、rl、r2和r3 中的相同)從左起被設置為[i,0]、[i, I]、[i,2]、[i,3]、[i,4]、[i,5]、[i,6]、[i,7]、[i, 8]、[i, 9]、[i, 10]、[i, 11]、[i, 12]、[i, 13]、[i, 14]和[i,15]時(本文中,i ={0,1,2, 3}),如下地設置各寄存器的混排。
[0574]寄存器ri
[0575]i = {O, I, 2,3}
[0576]([i, O]、[i, I]、[i, 2]、[i, 3]、[i, 4]、[i, 5]、[i, 6]、[i, 7]、[i, 8]、[i, 9]、[i, 10]、[i, 11]、[i, 12]、[i, 13]、[i, 14]、[i, 15]) — ([i, O]、[i, 4]、[i, 8]、[i, 12]、[i, I]、[i, 5]、[i, 9]、[i, 13]、[i, 2]、[i, 6]、[i, 10]、[i, 14]、[i, 3]、[i, 7]、[i, 11]、[i, 15])
[0577]接下來,在步驟S452中,如圖64中所示,寄存器rO和r2被復制到寄存器r4和r5。
[0578]接下來,在步驟S453中,如圖65中所示,以雙字為單位針對寄存器rO和rl和寄存器r2和r3的左64位執行解包命令。
[0579]如圖65中所示,執行以雙字(32位(四個塊))為單位將寄存器rO和寄存器r2的左8個塊(64位)從左起交替存儲在寄存器rO中的解包處理。
[0580]以與上述相同的方式,執行以雙字(32位(四個塊))為單位將寄存器r2和寄存器r3的左8個塊(64位)從左起交替存儲在寄存器r2中的解包處理。
[0581]接下來,在步驟S454中,如圖66中所示,以雙字為單位針對寄存器r4和rl和寄存器r5和r3的右64位執行解包命令。
[0582]如圖66中所示,執行以雙字(32位(四個塊))為單位將寄存器r4和寄存器rl的右8個塊(64位)從左起交替存儲在寄存器r4中的解包處理。
[0583]以與上述相同的方式,執行以雙字(32位(四個塊))為單位將寄存器r5和寄存器r3的右8個塊(64位)從左起交替存儲在寄存器r5中的解包處理。
[0584]接下來,在步驟S455中,如圖67中所示,寄存器rO和r4被復制到寄存器rl和r3。
[0585]接下來,在步驟S456中,如圖68中所示,以四字為單位針對寄存器rO和r2和寄存器r4和r5的左64位執行解包命令。
[0586]如圖68中所示,執行以四字(64位(八個塊))為單位將寄存器rO和寄存器r2的左8個塊(64位)從左起交替存儲在寄存器rO中的解包處理。
[0587]以與上述相同的方式,執行以四字(64位(八個塊))為單位將寄存器r4和寄存器r5的左8個塊(64位)從左起交替存儲在寄存器r4中的解包處理。
[0588]接下來,在步驟S457中,如圖69中所示,以四字為單位針對寄存器rl和r2和寄存器r3和r5的右64位執行解包命令。
[0589]如圖69中所示,執行以四字(64位(八個塊))為單位將寄存器rl和寄存器r2的右8個塊(64位)從左起交替存儲在寄存器rl中的解包處理。
[0590]以與上述相同的方式,執行以四字(64位(八個塊))為單位將寄存器r3和寄存器r5的右8個塊(64位)從左起交替存儲在寄存器r3中的解包處理。
[0591]作為圖61中示出的流程的步驟S451至S457中的處理結果生成的寄存器rO、rl、r4和r3被設置成下一輪的輸入,作為線性變換的結果。
[0592]圖70示出圖57的流程的步驟S404中的線性變換處理的輸入和輸出之間的對應。
[0593]如上所述,一輪運算由圖57中示出的步驟S402中的輪密鑰加法、步驟S403中的非線性變換和流程的步驟S404中的線性變換構成。
[0594]這輪運算處理的各處理的命令的數量如下。
[0595](a)輪密鑰加法(addRoundKey):4
[0596](b)非線性變換(SboxLayer):20
[0597](c)線性變換(pLayer):16
[0598]在圖7中示出的密碼處理單元110的步驟S122中,將根據圖57中示出的流程進行的輪運算重復在密碼算法中定義的預定次數(32)。接下來,在步驟S123中,針對這些處理結果執行數據逆變換處理。
[0599]步驟S123是針對步驟S122中的密碼處理(數據處理)的結果進行的數據逆變換處理(數據變換―1),并且是將位片表達數據返回到與在位片處理之前的平文數據82對應的加密數據的組合的處理。該處理被作為以上參照圖9描述的位片表達數據的生成處理的逆處理來執行。
[0600]用該處理,對應于平文數據82的加密數據91被作為輸出數據90生成。
[0601]另外,在上述的示例中,為了用軟件高效地執行作為密碼算法的[PRESENT]的線性變換處理(PLayer),數據的位片表達被構造成將處理設置成以四位為間隔執行,如以上參照圖9描述的。用該構造,例如,通過根據參照圖61至圖70進行的處理組合地執行因特爾擴展SIMD命令的混排和解包命令,可以針對各輪用16個命令執行線性變換(pLayer)。
[0602]另外,在密碼算法[PRESENT]中,當執行對應于一輪的輪密鑰的更新處理時,處理被設置成使用單個Sbox執行非線性變換處理。
[0603]關于此,根據上述的[6.密鑰編排處理(密鑰編排處理示例2)]中描述的構造,通過輸入80位密鑰執行處理的密鑰編排單元可以通過執行非線性變換處理兩次來生成32輪的輪密鑰,可以用少量的命令執行輪密鑰生成,因此快速地執行處理。
[0604]如上所述,本公開的信息處理裝置可以在沒有用于執行密碼算法的專用硬件的信息處理裝置(例如,諸如PC的信息處理裝置)中快速地執行特定的密碼算法的處理,例如上述的密碼算法[PRESENT]。
[0605][8.信息處理裝置和密碼處理裝置的構造示例]
[0606]最后,將描述執行根據上述示例的密碼處理的信息處理裝置或密碼處理裝置的裝置構造示例。信息處理裝置包括例如以上參照圖1至圖5描述的服務器。
[0607]根據上述示例的密碼處理可以在例如PC或服務器等設備中執行,所述設備包括由用于執行定義了密碼處理算法的軟件(程序)的CPU等構成的數據處理單元和用于存儲程序或數據的存儲器。
[0608]圖71示出執行本公開的密碼處理的信息處理裝置或密碼處理裝置的構造示例。
[0609]中央處理單元(CPU) 701用作根據存儲在只讀存儲器(ROM) 702或存儲單元708中的程序執行各種處理的數據處理單元。例如,CPU根據上述順序執行處理。
[0610]隨機存取存儲器(RAM) 703存儲CPU 701執行的程序或數據。例如,定義上述的密碼處理順序的程序被存儲在其中。RAM還包括存儲將用于上述各處理中的數據的寄存器和用作工作區的存儲區。
[0611]CPU 701、ROM 702 和 RAM 703 通過總線 704 彼此連接。
[0612]CPU 701通過總線704連接到輸入和輸出接口 705,由各種開關、鍵盤、鼠標或麥克風構成的輸入單元706和由顯示器或揚聲器構成的輸出單元707連接到輸入和輸出接口705。例如,CPU 701按照從輸入單元706輸入的命令執行各種處理,并且將處理結果輸出到輸出單元707。
[0613]連接輸入和輸出接口 705的存儲單元708由例如硬盤構成,并且存儲由CPU 701執行的程序或各種數據項。通信單元709通過網絡(諸如,互聯網或局域網)與外部設備通信。
[0614]例如,在以上參照圖1至圖5描述的服務器的情況下,通信單元709執行從多個用戶終端或傳感器接收加密數據的處理或者針對多個用戶終端或傳感器發送加密數據的處理。
[0615]連接輸入和輸出接口 705的驅動器710驅動可移動介質711 (諸如,磁盤、光盤、磁-光盤或諸如存儲卡等半導體存儲器)并且執行數據的記錄或讀取。
[0616]另外,在上述的示例中,已經主要描述了加密作為輸入數據的平文的密碼處理,但是本公開的處理還可以應用于將作為輸入數據的密文恢復成平文的解密處理,而不僅僅可以應用于將作為輸入數據的平文加密的密碼處理。
[0617][9.本公開的構造的總結]
[0618]上文中,已經參照特定示例詳細描述了本公開的示例。然而,本領域的技術人員當然可以在不脫離本公開主旨的范圍內修改或替換示例。也就是說,已經用示例描述了本發明,示例不旨在限制本發明。為了確定本公開的主旨,必須參照權利要求書。
[0619]另外,根據本公開的一個示例,實現例如使用云計算處理用軟件(程序)進行輕量級密碼的密碼處理的提速。
[0620]具體而言,多個用戶終端或傳感器將通過輕量級密碼算法加密的數據與各個密碼密鑰一起發送,服務器接收加密數據并且根據定義解密處理順序的程序執行數據處理。可以通過針對作為解密對象的多個加密數據項執行位片處理來生成位片表達數據,以基于各加密數據項的密碼密鑰生成位片表達密鑰,以基于位片表達密鑰生成輪密鑰,以執行包括位片表達數據的塊單位的運算和移動處理和使用輪密碼術進行的運算的解密處理,以通過針對解密處理結果對數據進行逆變換而生成對應于多個加密數據項的多個平文數據項。
[0621]另外,在根據本公開的一個示例的解密處理中,通過存儲在寄存器中的位片表達塊單位的運算或移動處理來執行處理,并且可以高速地執行對大量數據的處理。具體而言,在因特爾核i7870處理器中執行密碼算法[PRESENT(80位的密鑰長度)]的情況下,實現11.06個周期/字節的高速。
[0622]另外,在上述的示例中,已經主要描述了密碼算法[PRESENT(80位的密鑰長度)]的執行處理示例,但本公開的處理還可以應用于其它算法。例如,在根據本公開的處理執行密碼算法[Piccolo (80位的密鑰長度)]的情況下,實現5.59個周期/字節的高速。具體地講,Piccolo的速度超過6.92個周期/字節,6.92個周期/字節是本技術已知的同一平臺(因特爾核i7920)下的高級加密標準(AES)的速度記錄。
[0623]另外,由于根據本公開的一個示例的位片安裝中是在不參照的表格的情況下通過邏輯運算計算S-box,因此可以增加抵抗側信道攻擊(諸如,緩存攻擊或跨虛擬機攻擊)的耐久性。另外,關于云計算處理中用軟件進行密碼處理的提速,可以用較少數量的周期完成密碼處理,這些導致云或數據中心的功耗降低。
[0624]另外,在根據本公開的一個示例的系統中,不必在云或計算中心中引入用于密碼處理的專用硬件,因此延展性提高。
[0625]另外,可以使用在現有技術中難以使用的用云進行的輕量級密碼,因此促進了傳感器中的輕量級密碼的安裝并且可以以低成本和低功耗實現傳感器網絡。
[0626]另外,本說明書中公開的技術可以具有下面的構造。
[0627](I) 一種信息處理裝置,所述信息處理裝置包括:
[0628]通信單元,其接收數據發送設備發送的加密數據;以及
[0629]數據處理單元,其執行通過所述通信單元接收的加密數據的解密處理,
[0630]其中,所述數據處理單元具有根據定義解密處理順序的程序執行數據處理的構造,并且
[0631 ] 所述數據處理單元根據所述程序執行:
[0632]通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理,
[0633]通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,
[0634]輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理,
[0635]針對所述位片表達數據應用所述輪密鑰的解密處理,以及
[0636]通過針對所述解密處理的結果執行所述位片處理的逆變換,來生成對應于所述加密數據的平文數據的數據逆變換處理。
[0637](2)根據⑴所述的信息處理裝置,
[0638]其中,所述通信單元接收所述加密數據和所述加密數據的發送設備的設備ID,
[0639]所述數據處理單元
[0640]基于所述設備ID從存儲單元選擇性獲取對應于各加密數據項的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰,
[0641]通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
[0642](3)根據⑴或⑵所述的信息處理裝置,
[0643]其中,所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的解密處理,所述位片表達數據塊單位由在所述解密處理中構成所述位片表達數據的各加密數據項的相同次序的位或每η位的位構成,其中η是2的冪。
[0644](4)根據(I)至(3)中的任一項所述的信息處理裝置,
[0645]其中,所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0646](5) 一種信息處理系統,所述信息處理系統包括:
[0647]發送終端,其生成并且發送加密數據;以及
[0648]服務器,其接收所述發送終端發送的加密數據,
[0649]其中,所述服務器包括數據處理單元,所述數據處理單元根據定義解密處理順序的程序執行數據處理,并且
[0650]所述數據處理單元根據所述程序執行:
[0651]通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理,
[0652]通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,
[0653]輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理,
[0654]針對所述位片表達數據應用所述輪密鑰的解密處理,以及
[0655]通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于所述加密數據的平文數據的數據逆變換處理。
[0656](6)根據(5)所述的信息處理系統,
[0657]其中,所述發送終端發送所述加密數據和所述加密數據的發送設備的設備ID,
[0658]所述服務器的所述數據處理單元
[0659]基于所述設備ID從存儲單元選擇性獲取對應于各加密數據項的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰,
[0660]通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理,來生成所述位片表達密鑰。
[0661](7)根據(5)或(6)所述的信息處理系統,
[0662]其中,所述服務器的所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述解密處理,所述位片表達數據塊單位由在所述解密處理中構成所述位片表達數據的各加密數據項的相同次序的位或每η位的位構成,其中η是2的冪。
[0663](8)根據(5)至(7)中的任一項所述的信息處理裝置,
[0664]其中,所述服務器的所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0665](9) 一種信息處理裝置,所述信息處理裝置包括:
[0666]通信單元,其針對數據接收設備發送加密數據;以及
[0667]數據處理單元,執行生成通過所述通信單元發送的加密數據的處理,
[0668]其中,所述數據處理單元具有根據定義密碼處理順序的程序執行數據處理的構造,并且
[0669]所述數據處理單元根據所述程序執行:
[0670]通過針對作為密碼處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理,
[0671]通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,
[0672]輸入所述位片表達密鑰以生成用于加密處理的各輪的輪密鑰的密鑰編排處理,
[0673]針對所述位片表達數據應用所述輪密鑰的密碼處理,以及
[0674]通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述平文數據的加密數據的數據逆變換處理。
[0675](10)根據(9)所述的信息處理裝置,
[0676]其中,所述數據處理單元
[0677]基于所述加密數據被發送到達的發送目的地的設備ID從存儲單元選擇性獲取對應于各平文數據的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰,
[0678]通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
[0679](11)根據(9)或(10)所述的信息處理裝置,
[0680]其中,所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述加密處理,所述位片表達數據塊單位由在所述密碼處理中構成所述位片表達數據的各平文數據的相同次序的位或每η位的位構成,其中η是2的冪。
[0681](12)根據(9)至(11)中的任一項所述的信息處理裝置,
[0682]其中,所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0683](13) 一種信息處理系統,所述信息處理系統包括:
[0684]服務器,其生成并且發送加密數據;以及
[0685]接收終端,其接收所述服務器發送的加密數據,
[0686]其中,所述服務器包括數據處理單元,所述數據處理單元根據定義密碼處理順序的程序執行數據處理,并且
[0687]所述數據處理單元根據所述程序執行:
[0688]通過針對作為密碼處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理,
[0689]通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理,
[0690]輸入所述位片表達密鑰以生成用于所述密碼處理的各輪的輪密鑰的密鑰編排處理,
[0691]針對所述位片表達數據應用所述輪密鑰的密碼處理,以及
[0692]通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述平文數據的加密數據的數據逆變換處理。
[0693](14)根據(13)所述的信息處理系統,
[0694]其中,所述服務器的所述數據處理單元
[0695]基于各接收終端的設備ID從存儲單元選擇性獲取對應于各平文數據的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各平文數據的密碼密鑰,
[0696]通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
[0697](15)根據(13)或(14)所述的信息處理系統,
[0698]其中,所述服務器的所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述加密處理,所述位片表達數據塊單位由在所述加密處理中構成所述位片表達數據的各平文數據的相同次序的位或每η位的位構成,其中η是2的冪。
[0699](16)根據(13)至(15)中的任一項所述的信息處理系統,
[0700]其中,所述服務器的所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
[0701]另外,在用于執行處理的程序和上述的裝置和系統中執行的處理的方法也被包括在本公開的構成中。
[0702]另外,說明書中上述處理的順序可以由硬件、軟件或這二者的復合構造來執行。在用軟件執行處理的情況下,其中記錄了處理順序的程序可以被安裝在嵌入專用硬件中的計算機中的存儲器中待執行,或者程序可以被安裝在可以執行各種處理的通用計算機中待執行。例如,程序可以預先被記錄在記錄介質中。除了將來自記錄介質的程序安裝在計算機中之外,程序可以通過諸如局域網(LAN)或因特網等網絡來接收,并且可以被安裝在諸如內置硬盤的記錄介質中。
[0703]另外,說明書中描述的各種處理不僅根據描述按時序執行,而是可以根據用于執行處理的裝置的處理能力或根據需要并行地或分立地執行。另外,本說明書中的系統是多個裝置的邏輯組件構造,不限于使各構造處于同一殼體中的裝置。
[0704]附圖標記
[0705]10 云
[0706]20傳感器網絡
[0707]30服務器
[0708]31密碼密鑰
[0709]32 傳感器 ID
[0710]33加密數據
[0711]70平文數據
[0712]80輸入數據
[0713]81密碼密鑰
[0714]82平文數據
[0715]90 輸出數據
[0716]91 加密數據
[0717]100信息處理裝置
[0718]110密碼處理單元
[0719]701 CPU
[0720]702 ROM
[0721]703 RAM
[0722]704 總線
[0723]705輸入和輸出接口
[0724]706輸入單元
[0725]707輸出單元
[0726]708存儲單元
[0727]709通信單元
[0728]710驅動器
[0729] 711可移動介質
【權利要求】
1.一種信息處理裝置,所述信息處理裝置包括: 通信單元,其接收數據發送設備發送的加密數據;以及 數據處理單元,其執行通過所述通信單元接收的加密數據的解密處理, 其中,所述數據處理單元具有根據定義解密處理順序的程序執行數據處理的構造,并且 所述數據處理單元根據所述程序執行: 通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的解密處理,以及 通過針對所述解密處理的結果執行所述位片處理的逆變換,來生成對應于所述加密數據的平文數據的數據逆變換處理。
2.根據權利要求1所述的信息處理裝置, 其中,所述通信單元接收所述加密數據和所述加密數據的發送設備的設備ID, 所述數據處理單元 基于所述設備ID從存儲單元選擇性獲取對應于各加密數據項的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰, 通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
3.根據權利要求1所述的信息處理裝置, 其中,所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的解密處理,所述位片表達數據塊單位由在所述解密處理中構成所述位片表達數據的各加密數據項的相同次序的位或每η位的位構成,其中η是2的冪。
4.根據權利要求1所述的信息處理裝置, 其中,所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
5.—種信息處理系統,所述信息處理系統包括: 發送終端,其生成并且發送加密數據;以及 服務器,其接收所述發送終端發送的加密數據, 其中,所述服務器包括數據處理單元,所述數據處理單元根據定義解密處理順序的程序執行數據處理,并且 所述數據處理單元根據所述程序執行: 通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的解密處理,以及 通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于所述加密數據的平文數據的數據逆變換處理。
6.根據權利要求5所述的信息處理系統, 其中,所述發送終端發送所述加密數據和所述加密數據的發送設備的設備ID, 所述服務器的所述數據處理單元 基于所述設備ID從存儲單元選擇性獲取對應于各加密數據項的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰, 通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理,來生成所述位片表達密鑰。
7.根據權利要求5所述的信息處理系統, 其中,所述服務器的所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述解密處理,所述位片表達數據塊單位由在所述解密處理中構成所述位片表達數據的各加密數據項的相同次序的位或每η位的位構成,其中η是2的冪。
8.根據權利要求5所述的信息處理系統, 其中,所述服務器的所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
9.一種信息處理裝置,所述信息處理裝置包括: 通信單元,其針對數據接收設備發送加密數據;以及 數據處理單元,執行生成通過所述通信單元發送的加密數據的處理, 其中,所述數據處理單元具有根據定義密碼處理順序的程序執行數據處理的構造,并且 所述數據處理單元根據所述程序執行: 通過針對作為密碼處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于加密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的密碼處理,以及 通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述平文數據的加密數據的數據逆變換處理。
10.根據權利要求9所述的信息處理裝置, 其中,所述數據處理單元 基于所述加密數據被發送到達的發送目的地的設備ID從存儲單元選擇性獲取對應于各平文數據的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各加密數據項的密碼密鑰, 通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
11.根據權利要求9所述的信息處理裝置, 其中,所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述加密處理,所述位片表達數據塊單位由在所述密碼處理中構成所述位片表達數據的各平文數據的相同次序的位或每η位的位構成,其中η是2的冪。
12.根據權利要求9所述的信息處理裝置, 其中,所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
13.一種信息處理系統,所述信息處理系統包括: 服務器,其生成并且發送加密數據;以及 接收終端,其接收所述服務器發送的加密數據, 其中,所述服務器包括數據處理單元,所述數據處理單元根據定義密碼處理順序的程序執行數據處理,并且 所述數據處理單元根據所述程序執行: 通過針對作為密碼處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于所述密碼處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的密碼處理,以及 通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述平文數據的加密數據的數據逆變換處理。
14.根據權利要求13所述的信息處理系統, 其中,所述服務器的所述數據處理單元 基于各接收終端的設備ID從存儲單元選擇性獲取對應于各平文數據的密碼密鑰,或者基于所述設備ID用預定運算提取對應于各平文數據的密碼密鑰, 通過在所述密鑰變換處理中針對密碼密鑰執行所述位片處理來生成所述位片表達密鑰。
15.根據權利要求13所述的信息處理系統, 其中,所述服務器的所述數據處理單元執行使用位片表達數據塊單位的運算處理和移動處理的所述加密處理,所述位片表達數據塊單位由在所述加密處理中構成所述位片表達數據的各平文數據的相同次序的位或每η位的位構成,其中η是2的冪。
16.根據權利要求13所述的信息處理系統, 其中,所述服務器的所述數據處理單元使用位片表達密鑰塊單位的運算處理和移動處理來生成所述輪密鑰,所述位片表達密鑰塊單位由在所述密鑰編排處理中構成所述位片表達密鑰的各密碼密鑰的相同次序的位或每η位的位構成,其中η是2的冪。
17.一種在信息處理裝置中執行的信息處理方法,所述方法包括: 通信步驟,使得通信單元接收數據發送設備發送的加密數據;以及 數據處理步驟,使得數據處理單元對通過所述通信單元接收的加密數據執行解密處理, 其中,所述數據處理步驟根據定義解密處理順序的程序,包括: 通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于解密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的密碼處理,以及 通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于所述加密數據的平文數據的數據逆變換處理。
18.一種在信息處理裝置中執行的信息處理方法,所述方法包括: 數據處理步驟,使得數據處理單元執行加密數據的生成處理;以及 通信步驟,使得通信單元向各數據發送設備發送所述數據處理單元生成的各加密數據, 其中,所述數據處理步驟根據定義密碼處理順序的程序包括: 通過針對作為加密處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于所述加密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的密碼處理,以及 通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述平文數據的加密數據的數據逆變換處理。
19.一種使得信息處理裝置執行信息處理的程序,所述程序包括: 使得數據處理單元輸入發送器用各個密碼密鑰生成的加密數據; 使得所述數據處理執行: 通過針對作為解密處理對象的加密數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對加密數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于所述解密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的解密處理,以及 通過針對所述解密處理的結果執行所述位片處理的逆變換來生成對應于所述加密數據的平文數據的數據逆變換處理。
20.一種使得信息處理裝置執行信息處理的程序,所述程序包括: 使得數據處理單元執行加密數據的生成處理的數據處理步驟;以及 使得通信單元向各數據發送設備發送所述數據生成單元生成的各加密數據的通信步驟, 其中所述數據處理步驟包括: 通過針對作為加密處理對象的平文數據執行位片處理來生成位片表達數據的數據變換處理, 通過針對平文數據的各密碼密鑰執行位片處理來生成位片表達密鑰的密鑰變換處理, 輸入所述位片表達密鑰以生成用于所述加密處理的各輪的輪密鑰的密鑰編排處理, 針對所述位片表達數據應用所述輪密鑰的密碼處理,以及 通過針對所述密碼處理的結果執行所述位片處理的逆變換來生成對應于所述平文數據的加密數據的數據逆變換處理。
【文檔編號】G09C1/00GK104137467SQ201380010947
【公開日】2014年11月5日 申請日期:2013年2月7日 優先權日:2012年3月2日
【發明者】松田誠一, 盛合志帆 申請人:索尼公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影