使用排列應(yīng)對(duì)對(duì)密碼算法的旁通道攻擊的對(duì)策的制作方法
【專利摘要】本發(fā)明提供可用以幫助防止對(duì)密碼算法的旁通道攻擊的用于加密數(shù)據(jù)的技術(shù)。根據(jù)這些技術(shù)的實(shí)例方法包含根據(jù)預(yù)定排列而排列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)。所述第一中間數(shù)據(jù)由密碼算法的一或多個(gè)第一階段輸出。所述方法還包含:根據(jù)所述預(yù)定排列而排列待由密碼算法的一或多個(gè)第二階段使用的密鑰;將密碼算法的所述一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二中間數(shù)據(jù),所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;以及根據(jù)所述預(yù)定排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出。
【專利說明】使用排列應(yīng)對(duì)對(duì)密碼算法的旁通道攻擊的對(duì)策
【背景技術(shù)】
[0001] 各種加密技術(shù)可用以防止對(duì)受保護(hù)數(shù)據(jù)的未授權(quán)的存取和/或修改。然而,一些加 密技術(shù)可易受損于旁通道攻擊。旁通道攻擊為基于從密碼系統(tǒng)的物理實(shí)施方案獲得的信息 的攻擊,且通常并非對(duì)密碼算法的蠻力攻擊或?qū)λ惴ㄖ泄逃械睦碚摫∪醯墓簟E酝ǖ拦?擊可用以收集關(guān)于密碼算法如何操作的信息,包含密碼密鑰、部分狀態(tài)信息、和/或關(guān)于正 經(jīng)加密的信息的完全或部分純文本信息。
[0002] 功率分析和電磁(EM)攻擊為可用以危害密碼算法的兩種類型的旁通道攻擊的實(shí) 例。在功率分析攻擊中,攻擊者監(jiān)視已實(shí)施遭受攻擊的密碼算法的裝置的功率消耗。功率分 析攻擊可在復(fù)雜度方面不同。簡(jiǎn)單功率分析(SPA)攻擊涉及解譯功率軌跡,功率軌跡為隨時(shí) 間推移的電活動(dòng)的曲線,由實(shí)施遭受攻擊的密碼算法的硬件產(chǎn)生以便導(dǎo)出關(guān)于密碼算法的 信息。差異性功率分析(DPA)涉及更高級(jí)功率分析攻擊技術(shù),功率分析攻擊技術(shù)將統(tǒng)計(jì)分析 應(yīng)用于從由遭受攻擊的裝置執(zhí)行的多個(gè)加密操作采集的數(shù)據(jù)。統(tǒng)計(jì)分析可向攻擊者提供可 用以確定遭受攻擊的密碼算法內(nèi)的中間值的信息。在EM攻擊中,攻擊者監(jiān)視來自已實(shí)施密 碼算法的硬件的電磁發(fā)散。攻擊者可分析這些發(fā)散以導(dǎo)出關(guān)于流經(jīng)硬件的電流的信息,且 使用所述信息以識(shí)別在每一時(shí)鐘周期期間在裝置內(nèi)發(fā)生的事件。其它類型的旁通道攻擊包 含:差異性錯(cuò)誤分析,其中在嘗試顯露關(guān)于密碼算法的信息時(shí)將錯(cuò)誤引入到加密計(jì)算中;時(shí) 序攻擊,其中攻擊是基于當(dāng)正執(zhí)行密碼算法時(shí)測(cè)量某些計(jì)算任務(wù)執(zhí)行以來要花費(fèi)多久;和 聲音攻擊,其中攻擊是基于當(dāng)正執(zhí)行密碼算法時(shí)從實(shí)施遭受攻擊的密碼算法的裝置的硬件 發(fā)散的聲音。
[0003] 許多裝置,例如移動(dòng)電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)和/或其它此裝置是使用基 于互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)技術(shù)的數(shù)字電路加以建構(gòu)。CMOS技術(shù)通常用于數(shù)字邏輯電 路、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、微處理器和微控制器中。CMOS實(shí)施方案可容易遭受功率分 析和EM攻擊。CMOS數(shù)字電路的靜態(tài)功耗通常極低。當(dāng)通過不同輸入對(duì)CMOS數(shù)字電路計(jì)時(shí)時(shí), 數(shù)字電路改變狀態(tài)。這些狀態(tài)改變引起內(nèi)部電容器的充電和放電。所得電壓波動(dòng)取決于正 計(jì)算的數(shù)據(jù)。希望破壞加密方案的惡意方可監(jiān)視裝置的功率消耗和/或來自裝置的EM發(fā)散, 以使正接收的數(shù)據(jù)與功率消耗和/或EM發(fā)散關(guān)聯(lián)。分析此測(cè)試的結(jié)果可顯露由加密方案使 用的密鑰、由密碼算法產(chǎn)生的中間值、和/或攻擊者可能夠利用以危害密碼算法的其它信 息。
[0004] 圖1說明可用以進(jìn)行對(duì)密碼算法的功率分析攻擊的實(shí)例過程。圖1中所說明的功率 分析攻擊利用蠻力方法以嘗試確定由密碼算法使用的密鑰。圖1中所說明的實(shí)例過程用以 攻擊高級(jí)加密標(biāo)準(zhǔn)(AES)算法,但類似程序可用以攻擊其它類型的加密技術(shù)。為了讓功率分 析攻擊成功,攻擊者必須知曉遭受攻擊的算法,以使得可制作模擬假設(shè)功率消耗的功率模 型,且攻擊者必須知曉電路的哪些功率軌跡與正計(jì)算的數(shù)據(jù)關(guān)聯(lián)。使用此信息,攻擊者可使 用以下步驟對(duì)特定裝置使用的密碼算法進(jìn)行功率分析攻擊:
[0005] (1)可選擇所執(zhí)行密碼算法的中間結(jié)果。舉例來說,如果攻擊者察覺特定裝置已實(shí) 施一版本的高級(jí)加密標(biāo)準(zhǔn)(AES)算法,則攻擊者可將實(shí)施于裝置上的AES算法的第一輪的輸 出選擇為攻擊點(diǎn)。攻擊者還可選擇AES算法的其它輪。舉例來說,AES算法的倒數(shù)第二輪還可 由攻擊者選為目標(biāo)。
[0006] (2)可產(chǎn)生基于純文本輸入和密鑰假設(shè)的假設(shè)中間值假設(shè)。舉例來說,可通過向密 碼算法提供已知純文本值和一組密鑰假設(shè)來產(chǎn)生假設(shè)中間值。返回到AES實(shí)例,假設(shè)中間值 可為AES算法的第一輪或攻擊者已定為目標(biāo)的AES算法的任一輪的輸出。
[0007] (3)可接著將假設(shè)中間值映射到抽象功率消耗模型。抽象功率消耗模型是基于正 遭受攻擊的密碼算法(階段103)。功率消耗將根據(jù)密碼算法的類型而改變且可針對(duì)密碼算 法的各階段或輪而估計(jì)功率消耗。
[0008] (4)可接著在經(jīng)配置以使用正遭受攻擊的密碼算法的真實(shí)移動(dòng)裝置上測(cè)量密碼算 法的目標(biāo)階段的功率軌跡(階段104)。功率軌跡為隨時(shí)間推移使用的電流的曲線,且功率軌 跡可顯露密碼算法的可允許攻擊者以導(dǎo)出密鑰的各輪或階段的屬性。
[0009] (5)可接著使功率軌跡與抽象消耗模型相關(guān)以嘗試識(shí)別密鑰或與密碼算法相關(guān)聯(lián) 的密鑰的至少一部分(階段105)。
【發(fā)明內(nèi)容】
[0010] 根據(jù)本發(fā)明的一種用于加密數(shù)據(jù)的實(shí)例方法包含:根據(jù)預(yù)定排列而排列第一中間 數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù),所述第一中間數(shù)據(jù)由密碼算法的一或多個(gè)第一階段輸 出。所述方法還包含根據(jù)所述預(yù)定排列而排列待由所述密碼算法的一或多個(gè)第二階段使用 的密鑰;將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二 中間數(shù)據(jù),所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;和根據(jù)所述預(yù)定 排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出。
[0011] 此方法的實(shí)施方案可包含以下特征中的一或多者。將所述密碼算法的所述一或多 個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所述第一中間數(shù)據(jù)。從一組排列選擇排列,其中根 據(jù)所述預(yù)定排列而排列所述第一中間數(shù)據(jù)的所述次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)包括使用所 述所選排列來排列所述第一中間數(shù)據(jù)的所述次序。從所述組排列選擇所述排列包含產(chǎn)生隨 機(jī)數(shù)種子值,和基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列。從所述組排列選擇 所述排列包含基于預(yù)定模式而從所述組排列選擇所述排列。根據(jù)所述預(yù)定排列的所述逆排 列而排列所述第二中間數(shù)據(jù)以產(chǎn)生所述輸出包含基于所述所選排列而從一組逆排列選擇 所述逆排列。所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)(AES)算法,且其中所述密碼算法的所述一或多 個(gè)第一階段包括所述AES算法的第一輪,且所述密碼算法的所述一或多個(gè)第二階段包括所 述AES算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的倒數(shù)第 二輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算法的最后一輪。
[0012] 根據(jù)本發(fā)明的一種用于加密數(shù)據(jù)的系統(tǒng)包含用于根據(jù)預(yù)定排列而排列第一中間 數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)的裝置,所述第一中間數(shù)據(jù)由密碼算法的一或多個(gè)第一 階段輸出;用于根據(jù)所述預(yù)定排列而排列待由密碼算法的一或多個(gè)第二階段使用的密鑰的 裝置;用于將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用到所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第 二中間數(shù)據(jù)的裝置,所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;和用于 根據(jù)所述預(yù)定排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出的裝置。
[0013]此系統(tǒng)的實(shí)施方案可包含以下特征中的一或多者。用于將所述密碼算法的所述一 或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所述第一中間數(shù)據(jù)的裝置。用于從一組排列選 擇排列的裝置,且用于根據(jù)所述預(yù)定排列而排列所述第一中間數(shù)據(jù)的所述次序以產(chǎn)生經(jīng)排 列中間數(shù)據(jù)的所述裝置包括用于使用所述所選排列來排列所述第一中間數(shù)據(jù)的所述次序 的裝置。用于從所述組排列選擇所述排列的所述裝置包含用于產(chǎn)生隨機(jī)數(shù)種子值的裝置, 和用于基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列的裝置。用于從所述組排列選 擇所述排列的所述裝置包含用于產(chǎn)生隨機(jī)數(shù)種子值的裝置,和用于基于所述隨機(jī)數(shù)種子值 而從所述組排列選擇所述排列的裝置。用于根據(jù)所述預(yù)定排列的所述逆排列而排列所述第 二中間數(shù)據(jù)以產(chǎn)生所述輸出的所述裝置包含用于基于所述所選排列而從一組逆排列選擇 所述逆排列的裝置。所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)(AES)算法,且其中所述密碼算法的所述 一或多個(gè)第一階段包括所述AES算法的第一輪,且所述密碼算法的所述一或多個(gè)第二階段 包括所述AES算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的 倒數(shù)第二輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算法的最后一輪。
[0014] 根據(jù)本發(fā)明的一種非暫時(shí)性計(jì)算機(jī)可讀媒體于其上存儲(chǔ)有用于加密數(shù)據(jù)的計(jì)算 機(jī)可讀指令。所述媒體包括經(jīng)配置以致使計(jì)算機(jī)執(zhí)行以下操作的指令:根據(jù)預(yù)定排列而排 列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù),所述第一中間數(shù)據(jù)由密碼算法的一或多個(gè) 第一階段輸出;根據(jù)所述預(yù)定排列而排列待由所述密碼算法的一或多個(gè)第二階段使用的密 鑰;將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用到所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二中間 數(shù)據(jù),所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;和根據(jù)所述預(yù)定排列 的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出。
[0015] 此非暫時(shí)性計(jì)算機(jī)可讀媒體的實(shí)施方案可包含以下特征中的一或多者。經(jīng)配置以 致使所述計(jì)算機(jī)將所述密碼算法的所述一或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所 述第一中間數(shù)據(jù)的指令。經(jīng)配置以致使所述計(jì)算機(jī)從一組排列選擇排列的指令,且經(jīng)配置 以致使所述計(jì)算機(jī)根據(jù)所述預(yù)定排列而排列所述第一中間數(shù)據(jù)的所述次序以產(chǎn)生經(jīng)排列 中間數(shù)據(jù)的所述指令包含經(jīng)配置以致使所述計(jì)算機(jī)使用所述所選排列來排列所述第一中 間數(shù)據(jù)的所述次序的指令。經(jīng)配置以致使所述計(jì)算機(jī)從所述組排列選擇所述排列的所述指 令包含經(jīng)配置以致使所述計(jì)算機(jī)執(zhí)行以下操作的指令:產(chǎn)生隨機(jī)數(shù)種子值,和基于所述隨 機(jī)數(shù)種子值而從所述組排列選擇所述排列。經(jīng)配置以致使所述計(jì)算機(jī)從所述組排列選擇所 述排列的所述指令包含經(jīng)配置以致使所述計(jì)算機(jī)基于預(yù)定模式而從所述組排列選擇所述 排列的指令。經(jīng)配置以致使所述計(jì)算機(jī)根據(jù)所述預(yù)定排列的所述逆排列而排列所述第二中 間數(shù)據(jù)以產(chǎn)生所述輸出的所述指令包含經(jīng)配置以致使所述計(jì)算機(jī)基于所述所選排列而從 一組逆排列選擇所述逆排列的指令。所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)(AES)算法,且其中所述 密碼算法的所述一或多個(gè)第一階段包括所述AES算法的第一輪,且所述密碼算法的所述一 或多個(gè)第二階段包括所述AES算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階段包 括所述AES算法的倒數(shù)第二輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算法 的最后一輪。
[0016] 根據(jù)本發(fā)明的一種用于加密數(shù)據(jù)的電路包含第一組組件,其經(jīng)配置以根據(jù)預(yù)定排 列而排列所述第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù),所述第一中間數(shù)據(jù)由密碼算法 的一或多個(gè)第一階段輸出;第二組組件,其經(jīng)配置以根據(jù)所述預(yù)定排列而排列待由所述密 碼算法的一或多個(gè)第二階段使用的密鑰;第三組組件,其經(jīng)配置以將所述密碼算法的所述 一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二中間數(shù)據(jù),所述密碼算法的所述 一或多個(gè)第二階段使用所述經(jīng)排列密鑰;和第四組組件,其經(jīng)配置以根據(jù)所述預(yù)定排列的 逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出。
[0017] 此電路的實(shí)施方案可包含以下特征中的一或多者。第五組組件,其經(jīng)配置以將所 述密碼算法的所述一或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所述第一中間數(shù)據(jù)。第六 組組件,其經(jīng)配置以從一組排列選擇排列,其中根據(jù)所述預(yù)定排列而排列所述第一中間數(shù) 據(jù)的所述次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)包括使用所述所選排列來排列所述第一中間數(shù)據(jù)的 所述次序。所述第六組組件進(jìn)一步經(jīng)配置以產(chǎn)生隨機(jī)數(shù)種子值,和基于所述隨機(jī)數(shù)種子值 而從所述組排列選擇所述排列。所述第六組組件進(jìn)一步經(jīng)配置以基于預(yù)定模式而從所述組 排列選擇所述排列。所述第四組組件經(jīng)配置以基于所述所選排列而從一組逆排列選擇所述 逆排列。所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)(AES)算法,且其中所述密碼算法的所述一或多個(gè)第 一階段包括所述AES算法的第一輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES 算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的倒數(shù)第二輪, 且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算法的最后一輪。
【附圖說明】
[0018] 圖1說明可用以進(jìn)行對(duì)密碼算法的功率分析攻擊的實(shí)例過程。
[0019] 圖2為提供對(duì)可用以減小對(duì)密碼算法的功率分析攻擊的成功可能性的對(duì)策的比較 的說明。
[0020] 圖3為提供常規(guī)AES密碼算法的輪與根據(jù)本文所揭示的技術(shù)的經(jīng)修改AES密碼算法 之間的比較的說明。
[0021] 圖4說明常規(guī)AES-192實(shí)施方案的輪與利用本文所揭示的技術(shù)的經(jīng)修改AES-192實(shí) 施方案之間的比較。
[0022]圖5A為可用以實(shí)施常規(guī)AES-128算法的電路的功能圖。
[0023]圖5B為可用以實(shí)施經(jīng)修改AES-128算法的使用算法變換技術(shù)以將隨機(jī)化引入到 AES-128算法中的電路的功能圖。
[0024]圖5C為可用以實(shí)施經(jīng)修改AES-128算法的使用算法隨機(jī)化技術(shù)以將隨機(jī)化引入到 AES-128算法中的電路的功能圖。
[0025] 圖6為可用以實(shí)施本文所揭示的技術(shù)的移動(dòng)裝置600的框圖。
[0026] 圖7為說明圖6中展示的存儲(chǔ)器的功能模塊的圖6中說明的移動(dòng)裝置的功能框圖。
[0027] 圖8為可用以實(shí)施本文所揭示的加密技術(shù)的用于加密數(shù)據(jù)的過程的流程圖。
【具體實(shí)施方式】
[0028] 本文所揭示的技術(shù)可用以幫助防止對(duì)密碼算法的旁通道攻擊。舉例來說,本文所 揭示的技術(shù)可幫助防止對(duì)密碼算法的功率分析和/或EM攻擊,且還可提供保護(hù)以免受對(duì)密 碼算法的其它類型的旁通道攻擊。本文所揭示的技術(shù)可用以將隨機(jī)化引入到密碼算法中, 其可使對(duì)密碼算法的旁通道攻擊難得多。已使用采用高級(jí)加密標(biāo)準(zhǔn)(AES)算法的實(shí)例說明 本文所揭示的技術(shù)的實(shí)例。然而,本文所揭示的技術(shù)還可應(yīng)用于其它類型的密碼算法。本文 中的技術(shù)可用于基于硬件、基于軟件或其組合的密碼算法實(shí)施方案。
[0029] 圖2為提供對(duì)可用以減小對(duì)密碼算法的功率分析攻擊的成功可能性的對(duì)策的比較 的說明。對(duì)策可劃分成兩種類別:(1)隱藏技術(shù),和(2)掩蔽技術(shù)。在隱藏技術(shù)中,可應(yīng)用電路 層次設(shè)計(jì)技術(shù)以甚至當(dāng)向密碼算法提供不同輸入時(shí),也使實(shí)施密碼算法的數(shù)字電路的功率 消耗保持大致相同。在掩蔽技術(shù)中,密碼算法經(jīng)設(shè)計(jì)以當(dāng)算法對(duì)數(shù)據(jù)進(jìn)行操作時(shí)通過使用 隨機(jī)掩碼掩蔽數(shù)據(jù)來使功率消耗隨機(jī)化,和在完成計(jì)算之后移除掩碼。本文所揭示的技術(shù) 是掩蔽技術(shù)的變化形式,其幫助使功率消耗隨機(jī)化,同時(shí)執(zhí)行密碼算法以使攻擊者分析通 過旁通道攻擊采集的數(shù)據(jù)來破解密碼算法變得困難得多。
[0030] 原始密碼算法205的流程圖說明將輸入值a提供到密碼函數(shù)f且密碼函數(shù)輸出經(jīng)加 密版本的輸入值a(在圖1中稱作f (a))。原始密碼算法205表示一般密碼算法且不限于AES或 任何其它特定的加密技術(shù)。原始密碼算法205并不采取任何步驟以防止功率分析攻擊、EM攻 擊或其它類型的旁通道攻擊。因此,原始密碼算法205可容易遭受旁通道攻擊,其可顯露與 密碼算法相關(guān)聯(lián)的中間數(shù)據(jù)、與算法相關(guān)聯(lián)的密鑰、和/或攻擊者可用以破解密碼算法的其 它信息。
[0031] 掩蔽技術(shù)由掩蔽密碼算法210說明。掩蔽密碼算法210為原始密碼算法205的經(jīng)修 改版本,其包含掩蔽和解掩蔽步驟。掩蔽密碼算法210可通過密碼算法使功率消耗隨機(jī)化以 嘗試阻止對(duì)密碼算法的功率分析和EM攻擊。在掩蔽密碼算法210中,將掩蔽操作應(yīng)用于輸入 值a以使用掩碼值m產(chǎn)生經(jīng)掩蔽輸入值a m。接著將經(jīng)掩蔽輸入值&"提供到經(jīng)掩蔽版本的密碼 函數(shù)fm。接著用解掩蔽操作解掩蔽來自經(jīng)掩蔽版本的密碼函數(shù)f m的輸出,以便獲得在原始密 碼算法205中獲得的f(a)值。掩蔽密碼算法210需要修改原始密碼函數(shù)以使用經(jīng)掩蔽值進(jìn)行 工作,以便隨機(jī)化與密碼處理相關(guān)聯(lián)的功率消耗。
[0032] 圖2還說明本文所揭示的可用以將隨機(jī)化引入到密碼算法中以使對(duì)密碼算法的功 率分析攻擊、EM攻擊或其它類型的旁通道攻擊困難得多的兩個(gè)技術(shù)。第一個(gè)技術(shù)為算法變 換技術(shù)且第二個(gè)技術(shù)為算法隨機(jī)化技術(shù)。兩個(gè)技術(shù)都可用以將隨機(jī)化添加到密碼算法的一 個(gè)或多個(gè)階段,而不需要在掩蔽密碼算法210中那樣修改加密函數(shù)。
[0033] 變換算法215應(yīng)用變換函數(shù)P,變換函數(shù)P在輸入值a由加密函數(shù)f操作之前排列輸 入值a。排列重新排序被提供到加密函數(shù)f的輸入值的字節(jié)。加密函數(shù)展現(xiàn)輪層次或階段層 次不變性,此意味著可根據(jù)變換函數(shù)P排列輸入的字節(jié)的次序,且將次序輸入到加密函數(shù)f 中,而不會(huì)影響加密函數(shù)f的輸出。歸因于變換函數(shù)P的應(yīng)用,將排列加密函數(shù)f的輸出的字 節(jié)的次序。然而,逆排列函數(shù)Ρ<(其為變換函數(shù)P的倒數(shù))重新排序加密函數(shù)的經(jīng)排列輸出的 字節(jié)以匹配原始密碼算法205的輸出。
[0034] 通過每當(dāng)執(zhí)行密碼算法時(shí)從多個(gè)排列功能中的一者作出選擇而非將相同排列函 數(shù)應(yīng)用到輸入值a,隨機(jī)化算法220與變換算法215相比提供額外保護(hù)。隨機(jī)化算法220經(jīng)配 置以從可排列輸入值a的字節(jié)的次序的兩個(gè)或更多個(gè)變換函數(shù)作出選擇。在圖2中所說明的 實(shí)例中,使用隨機(jī)種子值確定選擇將哪一變換函數(shù)應(yīng)用于輸入值a。接著使用隨機(jī)種子值以 從多個(gè)逆排列函數(shù)選擇對(duì)應(yīng)于排列函數(shù)的逆排列函數(shù)。其它技術(shù)也可用以選擇將哪一變換 函數(shù)應(yīng)用于輸入值a。舉例來說,可使用循環(huán)或其它選擇方案來取代隨機(jī)種子值以選擇將哪 一變換函數(shù)應(yīng)用于輸入值a。在一些實(shí)施方案中,可實(shí)施且可使用一或多個(gè)固定選擇模式來 取代隨機(jī)種子,以確定將應(yīng)用哪一變換函數(shù)。
[0035]圖3為提供常規(guī)AES密碼算法的輪與根據(jù)本文所揭示的技術(shù)的經(jīng)修改AES密碼算法 的比較的說明。AES密碼算法展現(xiàn)輪層次不變性,此意味著可使用變換函數(shù)排列輸入數(shù)據(jù)的 字節(jié)的次序,以便將額外隨機(jī)化添加到AES算法。根據(jù)本發(fā)明,圖3的左列說明常規(guī)AES密碼 算法的一輪的輸入和輸出,且右列說明經(jīng)修改AES密碼算法的一輪的輸入和輸出。可使用圖 2中所說明的變換算法或隨機(jī)化算法技術(shù)來實(shí)施經(jīng)修改AES技術(shù)。如果應(yīng)用變換算法技術(shù), 則將預(yù)先確定將排列應(yīng)用于輸入值的變換算法,且可任選地將排列應(yīng)用于密碼算法的一或 多個(gè)輪。如果應(yīng)用隨機(jī)化算法技術(shù),則將從各自以不同模式排列輸入值的字節(jié)的多個(gè)變換 算法中的一者選擇將排列應(yīng)用于輸入值的變換算法,或在一些情況下可不應(yīng)用排列。另外, 可將不同變換算法應(yīng)用于密碼算法的不同輪。
[0036]在表示常規(guī)AES密碼算法的左列中,到常規(guī)AES算法的輸入值包括將向其應(yīng)用密碼 算法的16個(gè)字節(jié)的輸入數(shù)據(jù)。在此實(shí)例中,通過4X4矩陣表示所述數(shù)據(jù)。AES密碼算法需要 使用Rijndael密鑰調(diào)度表從主要密碼密鑰導(dǎo)出的每一輪的單獨(dú)密鑰,Rijndael密鑰調(diào)度表 為可用以將短密鑰擴(kuò)展成數(shù)個(gè)單獨(dú)輪密鑰的技術(shù)。因此,可從用于AES會(huì)話的主要密碼密鑰 產(chǎn)生輪的適當(dāng)?shù)拿荑€,或可能已產(chǎn)生密鑰且可從存儲(chǔ)器存取密鑰。
[0037]在表示使用本文所揭示的技術(shù)的經(jīng)修改AES密碼算法的右列中,根據(jù)變換函數(shù)而 排列輸入值和與輪相關(guān)聯(lián)的子密鑰兩者。變換函數(shù)排列輸入數(shù)據(jù)內(nèi)的字節(jié),且還在執(zhí)行AES 加密函數(shù)的輪之前對(duì)待在圖3中所描繪的AES輪中應(yīng)用的密鑰執(zhí)行等效排列。不必對(duì)AES密 碼算法進(jìn)行改變以使排列函數(shù)與AES密碼算法結(jié)合使用,這是因?yàn)锳ES密碼算法至少在此輪 不變。在右列中所說明的于其中已應(yīng)用變換技術(shù)的AES輪的輸出的字節(jié)的次序?qū)⒉煌谠?圖3的左列中所說明的常規(guī)AES加密輪的輸出的字節(jié)的次序。然而,在執(zhí)行AES密碼算法的輪 之前,可使用應(yīng)用于輸入數(shù)據(jù)的排列的逆排列來重新排序于其中已應(yīng)用變換技術(shù)的AES輪 的輸出的字節(jié)的次序。在將逆排列應(yīng)用于于其中已應(yīng)用變換技術(shù)的輸出數(shù)據(jù)之后,于其中 已應(yīng)用變換技術(shù)的輸出數(shù)據(jù)將匹配在圖3的左列中所說明的常規(guī)AES輪的輪的輸出。在所述 輪之前排列輸入數(shù)據(jù)的字節(jié)會(huì)將隨機(jī)化引入到所述輪,此可使攻擊者使用功率分析或EM攻 擊以破解密碼算法變得更困難。
[0038]圖4說明常規(guī)AES-192實(shí)施方案的輪與利用本文所揭示的技術(shù)的經(jīng)修改AES-192實(shí) 施方案之間的比較。在圖4中說明的實(shí)例中,已修改第9和第10輪的部分以保護(hù)第10AES輪。 然而,本文中所說明的技術(shù)可用以保護(hù)AES算法的任何輪。另外,本文中所利用的變換技術(shù) 可應(yīng)用于其它版本的AES算法,例如AES-192和AES-256,和/或還應(yīng)用于其它加密技術(shù)。AES-128 算法使用128 位的密鑰長(zhǎng)度, AES-192 算法使用192 位的密鑰長(zhǎng)度 ,且 AES-256 算法使用 256位的密鑰長(zhǎng)度。當(dāng)圖4中所說明的實(shí)例將本文所揭示的技術(shù)應(yīng)用于AES-192算法時(shí),本文 中所描述的技術(shù)還可應(yīng)用于使用具有不同大小的位長(zhǎng)度的密鑰和/或具有算法的其它變化 形式的其它AES算法。
[0039]針對(duì)常規(guī)AES-192實(shí)施方案和經(jīng)修改AES-192實(shí)施方案兩者,來自輪8的輸出為A且 輪9的密鑰輸入為K9。在常規(guī)AES-192實(shí)施方案中,來自輪9的輸出為值B且輪10的密鑰輸入 為密鑰K10,且來自輪10的輸出為值C。在經(jīng)修改AES-192實(shí)施方案中,以與在常規(guī)AES-192實(shí) 施方案中相同的方式執(zhí)行算法的頭八輪。但使用變換函數(shù)排列輪9輸出且經(jīng)排列輸出為P (B)。還使用與應(yīng)用于輪9的輸出的相同排列函數(shù)來排列輪10的密鑰K10。使用經(jīng)排列數(shù)據(jù)輸 入矩陣P(B)和經(jīng)排列密鑰P(KlO)執(zhí)行輪10。輪10的輸出為F 1(C)13接著使用應(yīng)用于輪9的輸 出的排列函數(shù)的逆排列來逆排列此輸出。將逆排列應(yīng)用于輪10的輸出的結(jié)果產(chǎn)生密文C,密 文C為常規(guī)AES-192實(shí)施方案的輪10產(chǎn)生的相同密文輸出。
[0040] 實(shí)例硬件
[0041 ]圖5A、5B和5C為說明可用以實(shí)施本文所揭示的技術(shù)的電路的功能框圖。圖5A為可 用以實(shí)施常規(guī)AES-128算法的電路的功能圖。圖5B為可用以實(shí)施經(jīng)修改AES-128算法的使用 算法變換技術(shù)以將隨機(jī)化引入到AES-128算法中的電路的功能圖。圖5C為可用以實(shí)施經(jīng)修 改AES-128算法的使用算法隨機(jī)化技術(shù)以將隨機(jī)化引入到AES-128算法中的電路的功能圖。 圖5B和5C中說明的電路可用以實(shí)施圖8中說明的過程。盡管圖5B和5C中所說明的實(shí)例實(shí)施 例是針對(duì)經(jīng)修改版本的AES-128算法,但是可對(duì)實(shí)施其它版本的AES密碼算法和/或其它密 碼算法的電路作出類似修改。
[0042]圖5A說明可用以實(shí)施常規(guī)AES-128算法的輪的電路。所述電路經(jīng)配置以接收待加 密的純文本消息和可從其中導(dǎo)出與每一輪相關(guān)聯(lián)的輪密鑰的密碼密鑰。所述電路包含表示 包含于AES密碼算法的每一輪中的SubBy tes、ShiftRows和MixCo Iumns步驟的功能塊。AES-128算法包含10輪,且在循環(huán)回到表不AES-128算法的SubBytes、Shif tRows和MixCo Iumns步 驟的功能塊之前,在完成當(dāng)前輪之后即刻將選擇下一輪的適當(dāng)密鑰。
[0043]圖5B為可用以實(shí)施經(jīng)修改AES-128算法的使用算法變換技術(shù)以將隨機(jī)化引入到 AES-128算法中的電路的功能圖。如圖5A中所說明的實(shí)例,電路經(jīng)配置以接收待加密的純文 本消息和可從其中導(dǎo)出與每一輪相關(guān)聯(lián)的輪密鑰的密碼密鑰。然而,圖5B中所說明的實(shí)例 電路包含支持算法變換技術(shù)的額外組件,算法變換技術(shù)可用以排列由AES輪的步驟使用的 輸入數(shù)據(jù)的次序。在圖5B中說明的實(shí)例中,電路包含未包含在實(shí)施圖5A中所說明的常規(guī)AES 到128輪的電路中的變換函數(shù)塊505和多路復(fù)用器510。在圖5B中所說明的電路中,在 MixColumns步驟之前應(yīng)用變換函數(shù)以排列數(shù)據(jù)的字節(jié)的次序。然而,在其它實(shí)施方案中,可 在AES輪的SubBytes步驟之前或在ShiftRows步驟之前應(yīng)用變換函數(shù)。另外,當(dāng)不同密碼算 法由電路實(shí)施時(shí),變換函數(shù)塊505和多路復(fù)用器510的置放可改變。將來自ShiftRows步驟功 能塊的輸出饋送到變換函數(shù)塊505中,變換函數(shù)塊505根據(jù)由變換函數(shù)實(shí)施的預(yù)定排列而排 列來自ShiftRows步驟功能塊的輸出。變換函數(shù)塊505應(yīng)用改變由變換函數(shù)塊505接收的輸 入數(shù)據(jù)的字節(jié)的次序的排列。接著將經(jīng)排列數(shù)據(jù)輸出到多路復(fù)用器510。多路復(fù)用器510可 接著在來自ShiftRows步驟功能塊的原始輸出與由變換函數(shù)塊505輸出的經(jīng)排列數(shù)據(jù)之間 作出選擇??蓪⑦x擇信號(hào)提供到多路復(fù)用器510以致使多路復(fù)用器510選擇來自ShiftRows 步驟功能塊的原始輸出或由變換函數(shù)塊505輸出的經(jīng)排列數(shù)據(jù)。因此,電路可經(jīng)配置以啟用 或停用在每一輪處的變換函數(shù)的使用,從而使功率分析或EM攻擊隨變換函數(shù)而更困難,因 為攻擊者將不知曉變換函數(shù)是否應(yīng)用于特定輪,或不知曉在特定輪中應(yīng)用的變換函數(shù)為何 模式。
[0044]所述電路還包含逆變換功能塊515和多路復(fù)用器520。逆變換功能塊515接收 MixColumns步驟功能塊的輸出且將逆排列應(yīng)用于MixColumns步驟功能塊的輸出。逆變換函 數(shù)應(yīng)用逆排列,其將由逆變換功能塊515接收的輸入的字節(jié)重新排序?yàn)樵谟勺儞Q函數(shù)塊505 應(yīng)用排列之前的字節(jié)的次序。因此,來自圖5B中所說明的電路的特定輪的輸出將為與將從 圖5A中所說明的常規(guī)AES-128算法實(shí)施方案的對(duì)應(yīng)輪獲得的相同的輸出值。在輪期間引入 隨機(jī)化可使旁通道攻擊更困難,同時(shí)不需要對(duì)密碼算法作出任何改變。
[0045]圖5C為可用以實(shí)施經(jīng)修改AES-128算法的使用算法隨機(jī)化技術(shù)以將隨機(jī)化引入到 AES-128算法中的電路的功能圖。如圖5A和5B中所說明的實(shí)例,所述電路經(jīng)配置以接收待加 密的純文本消息和可從其中導(dǎo)出與每一輪相關(guān)聯(lián)的輪密鑰的密碼密鑰。圖5C中所說明的電 路提供算法隨機(jī)化的實(shí)例。所述電路包含經(jīng)配置以接收ShiftRows步驟功能塊的輸出的多 個(gè)變換函數(shù)塊555。變換函數(shù)塊555中的每一者將不同排列應(yīng)用于由變換函數(shù)塊接收的輸入 數(shù)據(jù)的字節(jié)的次序。接著將經(jīng)排列數(shù)據(jù)輸出到多路復(fù)用器560。多路復(fù)用器560可接著在來 自Shif tRows步驟功能塊的原始輸出與由變換函數(shù)塊555中的一者輸出的經(jīng)排列數(shù)據(jù)之間 進(jìn)行選擇。在一些實(shí)施方案中,可產(chǎn)生隨機(jī)種子值575且將其作為確定多路復(fù)用器560選擇 哪一輸入的選擇值而提供到多路復(fù)用器560。其它技術(shù)也可用以確定選擇值。舉例來說,在 一些實(shí)施方案中,電路可經(jīng)配置以從確定多路復(fù)用器560選擇哪一輸入的一或多個(gè)預(yù)定模 式作出選擇。
[0046]圖5C中所說明的電路還包含多個(gè)逆變換函數(shù)塊565和多路復(fù)用器570。逆變換函數(shù) 塊565接收MixColumns步驟功能塊的輸出,且將逆排列應(yīng)用于MixColumns步驟功能塊的輸 出。逆變換函數(shù)塊565中的每一者對(duì)應(yīng)于變換函數(shù)塊555中的一者,且實(shí)施對(duì)應(yīng)變換函數(shù)塊 555的逆排列。逆變換函數(shù)應(yīng)用逆排列,其將由逆變換功能塊565接收的輸入的字節(jié)重新排 序?yàn)樵谟勺儞Q函數(shù)塊555應(yīng)用排列之前的字節(jié)的次序。因此,來自圖5C中所說明的電路的特 定輪的輸出將為與將從圖5A中所說明的常規(guī)AES-128算法實(shí)施方案的對(duì)應(yīng)輪獲得的相同的 輸出值。在輪期間引入隨機(jī)化可使成功的旁通道攻擊更困難,同時(shí)不需要對(duì)密碼算法作出 任何改變。另外,添加多個(gè)可能的排列會(huì)提供額外保護(hù),這是因?yàn)闈撛诠粽邔⒉⒉恢獣栽?那輪應(yīng)用于數(shù)據(jù)的哪一排列(如果有)。
[0047]圖6為可用以實(shí)施本文所揭示的技術(shù)的移動(dòng)裝置600的框圖。移動(dòng)裝置600可用以 至少部分地實(shí)施圖8中所說明的過程。盡管圖6中所說明的實(shí)例裝置為移動(dòng)裝置,但圖8中所 說明的過程也可實(shí)施于其它類型的計(jì)算裝置中,例如服務(wù)器、桌上型計(jì)算機(jī)系統(tǒng)或包含可 執(zhí)行處理器可讀、處理器可執(zhí)行軟件代碼的處理器的其它裝置。
[0048]移動(dòng)裝置600包括計(jì)算機(jī)系統(tǒng),計(jì)算機(jī)系統(tǒng)包含通過總線601彼此連接的通用處理 器610、數(shù)字信號(hào)處理器(DSP)620、無線接口 625、GNSS接口 665和非暫時(shí)性存儲(chǔ)器660。移動(dòng) 裝置600的其它實(shí)施方案可包含圖6的實(shí)例實(shí)施方案中未所說明的額外元件,且/或可不包 含圖6中所說明的實(shí)例實(shí)施例中所說明的所有元件。舉例來說,移動(dòng)裝置600的一些實(shí)施方 案可不包含GNSS接口 665。
[0049]無線接口 625可包含無線接收器、發(fā)射器、收發(fā)器和/或使得移動(dòng)裝置600能夠使用 Wff AN、WLAN和/或其它無線通信協(xié)議發(fā)送和/或接收數(shù)據(jù)的其它元件。無線接口 625可包括能 夠使用多個(gè)無線通信標(biāo)準(zhǔn)發(fā)射和接收無線信號(hào)的一或多個(gè)多模式調(diào)制解調(diào)器。無線接口 625通過線632連接到天線634以用于將通信發(fā)送到經(jīng)配置以使用無線通信協(xié)議通信的裝 置,和從所述裝置接收通信。盡管圖6中所說明的移動(dòng)裝置600包括單個(gè)無線接口 625和單個(gè) 天線634,但移動(dòng)裝置600的其它實(shí)施方案可包含多個(gè)無線接口 625和/或多個(gè)天線634。 [0050]全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)接口 665可包含無線接收器和/或使得移動(dòng)裝置600能夠 從與一或多個(gè)GNSS系統(tǒng)相關(guān)聯(lián)的發(fā)射器接收信號(hào)的其它元件。GNSS接口 665通過線672連接 到天線674以用于從GNSS發(fā)射器接收信號(hào)。移動(dòng)裝置600可經(jīng)配置以使用從與衛(wèi)星相關(guān)聯(lián)的 衛(wèi)星和與GNSS系統(tǒng)相關(guān)聯(lián)的其它發(fā)射器接收的信號(hào),以確定移動(dòng)裝置600的位置。移動(dòng)裝置 600還可經(jīng)配置以使用從GNSS衛(wèi)星和與GNSS系統(tǒng)相關(guān)聯(lián)的其它發(fā)射器接收的信號(hào),結(jié)合從 地面無線發(fā)射器接收的信號(hào)以確定移動(dòng)裝置600的位置。
[0051 ] DSP 620可經(jīng)配置以處理從無線接口625和/或GNSS接收器665接收的信號(hào),且可經(jīng) 配置以針對(duì)實(shí)施為存儲(chǔ)在存儲(chǔ)器660中的處理器可讀、處理器可執(zhí)行軟件代碼的一或多個(gè) 模塊或與其結(jié)合來處理信號(hào),和/或可經(jīng)配置以與處理器610結(jié)合來處理信號(hào)。
[0052] 處理器610可為智能裝置,例如個(gè)人計(jì)算機(jī)中央處理單元(CPU)(例如,由Intel·?公 司或AMD?制造的CPU)、微控制器、專用集成電路(ASIC)等。存儲(chǔ)器660為可包含隨機(jī)存取 存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)或其組合的非暫時(shí)性存儲(chǔ)裝置。存儲(chǔ)器660可存儲(chǔ)含有用于 控制處理器610以執(zhí)行本文中所描述的功能的指令的處理器可讀、處理器可執(zhí)行軟件代碼 (盡管描述可能說明軟件執(zhí)行功能)。可通過經(jīng)由網(wǎng)絡(luò)連接下載、從磁盤上傳等將軟件載入 于存儲(chǔ)器660上。另外,軟件可并非可直接執(zhí)行的(例如,要求在執(zhí)行之前進(jìn)行編譯)。
[0053]存儲(chǔ)器660中的軟件經(jīng)配置以使得處理器610能夠執(zhí)行各種動(dòng)作,包含實(shí)施將數(shù)據(jù) 發(fā)送到無線發(fā)射器、無線基站、其它移動(dòng)裝置和/或經(jīng)配置用于無線通信的其它裝置和/或 從這些裝置接收數(shù)據(jù)。
[0054]圖7為說明圖6中展示的存儲(chǔ)器660的功能模塊的圖6中說明的移動(dòng)裝置600的功能 框圖。舉例來說,移動(dòng)裝置600可包含加密模塊762和數(shù)據(jù)存取模塊768。移動(dòng)裝置600還可包 含向移動(dòng)裝置600提供其它功能性的一或多個(gè)額外功能模塊。圖6和7中所說明的移動(dòng)裝置 600可用以實(shí)施圖8中所說明的過程。
[0055] 加密模塊762可經(jīng)配置以根據(jù)本文所揭示的算法變換和/或算法隨機(jī)化技術(shù)而對(duì) 配置數(shù)據(jù)進(jìn)行加密。加密模塊762可經(jīng)配置以實(shí)施可用以對(duì)數(shù)據(jù)進(jìn)行加密的一或多個(gè)密碼 算法。加密模塊762可經(jīng)配置以針對(duì)移動(dòng)裝置600上的一或多個(gè)應(yīng)用對(duì)數(shù)據(jù)進(jìn)行加密。舉例 來說,加密模塊762可經(jīng)配置以對(duì)從在移動(dòng)裝置600上操作的應(yīng)用接收的數(shù)據(jù)進(jìn)行加密,以 防止對(duì)數(shù)據(jù)的未經(jīng)授權(quán)存取。加密模塊762可經(jīng)配置以通過向數(shù)據(jù)存取模塊768提供經(jīng)加密 數(shù)據(jù)來將經(jīng)加密數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器660中。加密模塊762還可經(jīng)配置以對(duì)從在移動(dòng)裝置600 上操作的應(yīng)用接收的數(shù)據(jù)進(jìn)行解密。舉例來說,在移動(dòng)裝置上運(yùn)行的電子郵件應(yīng)用可下載 具有經(jīng)加密附件的電子郵件,且如果對(duì)附件進(jìn)行解密所需的密鑰對(duì)加密模塊762可用,則電 子郵件應(yīng)用可經(jīng)配置以對(duì)經(jīng)加密附件進(jìn)行解密。
[0056] 加密模塊762可經(jīng)配置以存取可由通過加密模塊762實(shí)施的密碼算法的一或多個(gè) 階段使用的一或多個(gè)密鑰。加密模塊762可經(jīng)配置以將密鑰存儲(chǔ)于存儲(chǔ)器260的防護(hù)區(qū)或移 動(dòng)裝置600的存取受限的其它存儲(chǔ)器中。加密模塊762可經(jīng)配置以經(jīng)由數(shù)據(jù)存取模塊768存 取一或多個(gè)密鑰。加密模塊762可經(jīng)配置以使用密鑰以對(duì)數(shù)據(jù)進(jìn)行加密和/或解密。
[0057]數(shù)據(jù)存取模塊768可經(jīng)配置以將數(shù)據(jù)存儲(chǔ)于存儲(chǔ)器660和/或與移動(dòng)裝置600相關(guān) 聯(lián)的其它數(shù)據(jù)存儲(chǔ)裝置中。數(shù)據(jù)存取模塊768還可經(jīng)配置以存取存儲(chǔ)器660和/或與移動(dòng)裝 置600相關(guān)聯(lián)的其它數(shù)據(jù)存儲(chǔ)裝置中的數(shù)據(jù)。數(shù)據(jù)存取模塊768可經(jīng)配置以從移動(dòng)裝置600 的其它模塊和/或組件接收請(qǐng)求,且將數(shù)據(jù)存儲(chǔ)于存儲(chǔ)器660和/或與移動(dòng)裝置600相關(guān)聯(lián)的 其它數(shù)據(jù)存儲(chǔ)裝置中,和/或存取其中的數(shù)據(jù)。
[0058] 實(shí)例實(shí)施方案
[0059] 圖8為可用以實(shí)施本文所揭示的加密技術(shù)的用于加密數(shù)據(jù)的過程的流程圖。圖8中 所說明的過程可以硬件、軟件或其組合予以實(shí)施。舉例來說,圖8中所說明的過程可由圖6和 7中所說明的移動(dòng)裝置600實(shí)施。圖8中所說明的過程還可實(shí)施于電路中,例如圖5中所說明 的實(shí)例電路。
[0060]可將密碼算法的一或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生第一中間數(shù)據(jù)(階 段805)。待應(yīng)用的密碼算法的一或多個(gè)第一階段可取決于算法的哪一階段提供了保護(hù)和多 少階段包含于密碼算法的特定實(shí)施方案中。舉例來說,在密碼算法為AES密碼算法的一些實(shí) 施方案中,所執(zhí)行的輪的數(shù)目取決于由所述特定實(shí)施方案使用的密鑰長(zhǎng)度。AES-128算法使 用128位的密鑰長(zhǎng)度,AES-192算法使用192位的密鑰長(zhǎng)度,且AES-256算法使用256位的密鑰 長(zhǎng)度。密鑰大小影響將執(zhí)行的輪的數(shù)目。舉例來說,AES-128實(shí)施方案通常包含10輪,AES-192實(shí)施方案通常包含12輪,且AES-256實(shí)施方案通常包含14輪。
[0061 ]對(duì)AES算法的一個(gè)共同攻擊點(diǎn)在第一輪與第二輪之間。對(duì)AES算法的另一個(gè)共同攻 擊點(diǎn)在倒數(shù)第二輪與最后一輪之間。舉例來說,對(duì)AES-128算法的一個(gè)共同攻擊點(diǎn)在第9輪 與第10輪之間,對(duì)AES-192算法的一個(gè)共同攻擊點(diǎn)在第11輪與第12輪之間,且對(duì)AES-256算 法的一個(gè)共同攻擊點(diǎn)在第13輪與第14輪之間。因此,密碼算法的一或多個(gè)第一階段可為AES 算法中的一者的第一輪。密碼算法的一或多個(gè)第一階段還可指AES算法的倒數(shù)第二輪,例如 AES-128算法的第9輪、AES-192算法的第10輪和AES-256算法的第13輪。倒數(shù)第二輪的數(shù)目 可針對(duì)其它密碼算法而改變。
[0062]攻擊者可使用功率分析攻擊(例如上文描述的功率分析攻擊),以觀察在一段時(shí)間 內(nèi)其中已實(shí)施密碼算法的裝置的電活動(dòng)以產(chǎn)生功率軌跡。功率軌跡可用以提取由算法使用 的密碼密鑰。
[0063]可根據(jù)預(yù)定排列而排列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)(階段810)。 可根據(jù)預(yù)定排列模式而排列第一中間數(shù)據(jù)的字節(jié)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)。在一些實(shí) 施方案中,可根據(jù)類似于圖2中所說明的算法變換技術(shù)214的算法變換技術(shù)的算法變換技術(shù) 而執(zhí)行預(yù)定排列。在算法變換技術(shù)中,可在于其中實(shí)施密碼算法的軟件和/或硬件中實(shí)施變 換函數(shù)。變換函數(shù)可根據(jù)預(yù)定模式而重新排序輸入數(shù)據(jù)的字節(jié),一旦已將密碼算法的下一 階段或接下來的多個(gè)階段應(yīng)用于輸入數(shù)據(jù),則可使用逆排列函數(shù)逆轉(zhuǎn)預(yù)定模式。圖3說明將 此類變換函數(shù)應(yīng)用于AES密碼算法的輪的輸入數(shù)據(jù)的實(shí)例。16個(gè)字節(jié)的輸入數(shù)據(jù)表示為4 X 4數(shù)據(jù)矩陣。變換函數(shù)排列輸入數(shù)據(jù)的字節(jié)的次序以使得輸入數(shù)據(jù)的字節(jié)不再以當(dāng)從先前 AES輪輸出時(shí)所處的相同次序定位。在其它實(shí)施方案中,可使用類似于圖2中所說明的隨機(jī) 化算法220的算法隨機(jī)化技術(shù)的算法隨機(jī)化技術(shù)。在算法隨機(jī)化技術(shù)中,用以排列輸入數(shù)據(jù) 的變換函數(shù)并非靜態(tài)且可選自多個(gè)預(yù)定排列函數(shù)。舉例來說,算法隨機(jī)化技術(shù)的特定實(shí)施 方案可包含各自以不同模式排列輸入數(shù)據(jù)的一組五個(gè)變換函數(shù)。算法隨機(jī)化技術(shù)還可實(shí)施 用于選擇將應(yīng)用于輸入數(shù)據(jù)的五個(gè)預(yù)定變換中的一者的裝置。隨機(jī)地選擇變換算法中的一 者以排列輸入數(shù)據(jù)可使嘗試揭露正使用的密鑰的對(duì)密碼算法的功率分析和其它類型的攻 擊變得困難得多。在一些實(shí)施方案中,可產(chǎn)生隨機(jī)種子值且將其饋送到多路復(fù)用器中,所述 多路復(fù)用器選擇將應(yīng)用于輸入數(shù)據(jù)的變換函數(shù)。對(duì)于如上文所論述的算法變換和算法隨機(jī) 化技術(shù)兩者,如果可能,則應(yīng)使所使用的排列模式保密。其它技術(shù)還可用以選擇將應(yīng)用哪一 變換函數(shù)。舉例來說,可使用輪循或其它選擇方案來取代隨機(jī)種子值,以選擇將應(yīng)用哪一變 換函數(shù)。在一些實(shí)施方案中,可實(shí)施且可使用一或多個(gè)固定選擇模式來取代隨機(jī)種子,以選 擇將應(yīng)用哪一變換函數(shù)。
[0064]可根據(jù)預(yù)定排列而排列待由密碼算法的一或多個(gè)第二階段使用的密鑰(階段 815)。還可根據(jù)已應(yīng)用于輸入值的相同的變換算法變換而排列由待在第一中間數(shù)據(jù)上操作 的密碼算法使用的密鑰。圖3中所說明的實(shí)例提供使用與輸入數(shù)據(jù)相同的變換算法來排列 密鑰的實(shí)例。密鑰可由密碼算法的多個(gè)階段使用,或可特定針對(duì)密碼算法的一個(gè)階段。舉例 來說,AES算法需要使用Rijndael密鑰調(diào)度表從主要密碼密鑰導(dǎo)出的每一輪的單獨(dú)密鑰, Rijndael密鑰調(diào)度表為可用以將短密鑰擴(kuò)展成數(shù)個(gè)單獨(dú)輪密鑰的技術(shù)。
[0065] 可將密碼算法的一或多個(gè)第二階段應(yīng)用于經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二中間數(shù)據(jù) (階段820)。密碼算法的一或多個(gè)第二階段可使用在階段815中產(chǎn)生的經(jīng)排列密鑰。圖3中所 說明的實(shí)例提供將AES輪的步驟應(yīng)用于經(jīng)排列中間數(shù)據(jù)的實(shí)例,經(jīng)排列中間數(shù)據(jù)在圖3的實(shí) 例中為由AES算法的先前輪輸出的4 X 4矩陣的輸入值。來自階段815的經(jīng)排列密鑰也用于 AES輪中。在本文所揭示的技術(shù)應(yīng)用于其它密碼算法的情況下,由密碼算法的一或多個(gè)第二 階段使用的密鑰的輸入值和/或類型可不同于用于提供于圖3中的AES實(shí)例中的輸入值和/ 或類型。
[0066] 可根據(jù)預(yù)定排列的逆排列而排列第二中間數(shù)據(jù)以產(chǎn)生輸出(階段825)??墒褂迷?階段810和820中應(yīng)用的排列的逆排列排列第二中間數(shù)據(jù),以產(chǎn)生與未經(jīng)修改的密碼算法的 一或多個(gè)第二階段的輸出將產(chǎn)生的輸出相同的輸出。舉例來說,返回參看圖3的實(shí)例,與經(jīng) 應(yīng)用以排列輸入日期的變換函數(shù)和與那一輪相關(guān)聯(lián)的子密鑰相關(guān)聯(lián)的逆排列被應(yīng)用于經(jīng) 排列中間數(shù)據(jù)以重新排序經(jīng)排列中間數(shù)據(jù)的字節(jié)以使得字節(jié)處于在應(yīng)用常規(guī)AES密碼算法 而非本文所揭示的經(jīng)修改密碼技術(shù)的情況下字節(jié)將處于的相同次序中。因此,本文所揭示 的技術(shù)并不需要修改由密碼算法在階段或輪中的每一者中執(zhí)行的操作以與這些技術(shù)協(xié)作。 可在可由功率分析攻擊、EM攻擊和/或其它類型的旁通道攻擊定為目標(biāo)的密碼算法的一個(gè) 或多個(gè)階段或輪處應(yīng)用所述技術(shù)。
[0067] 來自階段825的輸出可用作到密碼算法的一或多個(gè)后續(xù)階段的輸入。舉例來說,在 密碼算法為AES算法的情況下且在密碼算法的一或多個(gè)第二階段對(duì)應(yīng)于AES算法中的一者 的輪2的情況下,來自輪2的輸出將在密文由算法輸出之前由若干額外輪處理。在密碼算法 為AES算法的情況下且在密碼算法的一或多個(gè)第二階段對(duì)應(yīng)于AES算法中的一者的最后一 輪的情況下,來自最后一輪的輸出將在密文由算法輸出之前由若干額外輪處理。
[0068] 取決于應(yīng)用,可通過各種裝置來實(shí)施本文中所描述的方法。舉例來說,這些方法可 在硬件、固件、軟件或其任何組合中實(shí)施。對(duì)于硬件實(shí)施方案,處理單元可實(shí)施于一或多個(gè) 專用集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理裝置(DSPD)、可編程邏輯裝置 (PLD)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器、電子裝置、經(jīng)設(shè)計(jì) 以執(zhí)行本文中所描述功能的其它電子單元,或其組合內(nèi)。
[0069] 對(duì)于固件和/或軟件實(shí)施方案,可用執(zhí)行本文所描述的功能的模塊(例如,程序、功 能等等)來實(shí)施方法。在實(shí)施本文所描述的方法時(shí),可使用有形地體現(xiàn)指令的任何機(jī)器可讀 媒體。舉例來說,軟件代碼可存儲(chǔ)在存儲(chǔ)器中,并且由處理器單元來執(zhí)行。存儲(chǔ)器可實(shí)施在 處理器單元內(nèi)或處理器單元外部。如本文中所使用的術(shù)語(yǔ)"存儲(chǔ)器"是指任何類型的長(zhǎng)期、 短期、易失性、非易失性或其它存儲(chǔ)器,且并不限于任何特定類型的存儲(chǔ)器或特定數(shù)目的存 儲(chǔ)器或特定類型的媒體。有形媒體包含機(jī)器可讀媒體的一或多個(gè)物理物品,例如隨機(jī)存取 存儲(chǔ)器、磁性存儲(chǔ)裝置、光學(xué)存儲(chǔ)媒體等等。
[0070] 如果以固件和/或軟件實(shí)施,那么可將所述功能作為一或多個(gè)指令或代碼存儲(chǔ)在 計(jì)算機(jī)可讀媒體上。實(shí)例包含用數(shù)據(jù)結(jié)構(gòu)編碼的計(jì)算機(jī)可讀媒體和用計(jì)算機(jī)程序編碼的計(jì) 算機(jī)可讀媒體。計(jì)算機(jī)可讀媒體包含物理計(jì)算機(jī)存儲(chǔ)媒體。存儲(chǔ)媒體可為可由計(jì)算機(jī)存取 的任何可用的媒體。作為實(shí)例而非限制,此種計(jì)算機(jī)可讀媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)器,磁盤存儲(chǔ)器或其它磁性存儲(chǔ)裝置,或任何其它可用于存儲(chǔ)呈指令或 數(shù)據(jù)結(jié)構(gòu)形式的所要程序代碼且可由計(jì)算機(jī)存取的媒體;如本文中所使用,磁盤和光盤包 含壓縮光盤(CD)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(DVD),軟性磁盤和藍(lán)光光盤,其中 磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。以上各者的組合也應(yīng) 該包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。此類媒體也提供可為機(jī)器可讀的非暫時(shí)性媒體的實(shí) 例,且其中計(jì)算機(jī)為可從此類非暫時(shí)性媒體進(jìn)行讀取的機(jī)器的實(shí)例。
[0071]在不脫離本發(fā)明或權(quán)利要求的精神或范圍的情況下,本文中所論述的一般原理可 應(yīng)用于其它實(shí)施方案。
【主權(quán)項(xiàng)】
1. 一種用于加密數(shù)據(jù)的方法,所述方法包括: 根據(jù)預(yù)定排列而排列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù),所述第一中間數(shù)據(jù) 由密碼算法的一或多個(gè)第一階段輸出; 根據(jù)所述預(yù)定排列而排列待由所述密碼算法的一或多個(gè)第二階段使用的密鑰; 將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二中 間數(shù)據(jù),所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;以及 根據(jù)所述預(yù)定排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出。2. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 將所述密碼算法的所述一或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所述第一中間 數(shù)據(jù)。3. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 從一組排列選擇排列,其中根據(jù)所述預(yù)定排列而排列所述第一中間數(shù)據(jù)的所述次序以 產(chǎn)生經(jīng)排列中間數(shù)據(jù)包括:使用所述所選排列來排列所述第一中間數(shù)據(jù)的所述次序。4. 根據(jù)權(quán)利要求3所述的方法,其中從所述組排列選擇所述排列包括: 產(chǎn)生隨機(jī)數(shù)種子值;以及 基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列。5. 根據(jù)權(quán)利要求3所述的方法,其中從所述組排列選擇所述排列包括: 基于預(yù)定模式而從所述組排列選擇所述排列。6. 根據(jù)權(quán)利要求1所述的方法,其中根據(jù)所述預(yù)定排列的所述逆排列而排列所述第二 中間數(shù)據(jù)以產(chǎn)生所述輸出包括:基于所述所選排列而從一組逆排列選擇所述逆排列。7. 根據(jù)權(quán)利要求1所述的方法,其中所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)AES算法,且其中所 述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的第一輪,且所述密碼算法的所述 一或多個(gè)第二階段包括所述AES算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階段 包括所述AES算法的倒數(shù)第二輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算 法的最后一輪。8. -種用于加密數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括: 用于根據(jù)預(yù)定排列而排列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)的裝置,所述第 一中間數(shù)據(jù)由密碼算法的一或多個(gè)第一階段輸出; 用于根據(jù)所述預(yù)定排列而排列待由密碼算法的一或多個(gè)第二階段使用的密鑰的裝置; 用于將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第 二中間數(shù)據(jù)的裝置,所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;以及 用于根據(jù)所述預(yù)定排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出的裝置。9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其進(jìn)一步包括: 用于將所述密碼算法的所述一或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所述第一 中間數(shù)據(jù)的裝置。10. 根據(jù)權(quán)利要求8所述的系統(tǒng),其進(jìn)一步包括: 用于從一組排列選擇排列的裝置,且 其中所述用于根據(jù)所述預(yù)定排列而排列所述第一中間數(shù)據(jù)的所述次序以產(chǎn)生經(jīng)排列 中間數(shù)據(jù)的裝置包括用于使用所述所選排列來排列所述第一中間數(shù)據(jù)的所述次序的裝置。11. 根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述用于從所述組排列選擇所述排列的裝置包 括: 用于產(chǎn)生隨機(jī)數(shù)種子值的裝置;以及 用于基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列的裝置。12. 根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述用于從所述組排列選擇所述排列的裝置包 括: 用于產(chǎn)生隨機(jī)數(shù)種子值的裝置;以及 用于基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列的裝置。13. 根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述用于根據(jù)所述預(yù)定排列的所述逆排列而排列 所述第二中間數(shù)據(jù)以產(chǎn)生所述輸出的裝置包括用于基于所述所選排列而從一組逆排列選 擇所述逆排列的裝置。14. 根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)AES算法,且其中所 述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的第一輪,且所述密碼算法的所述 一或多個(gè)第二階段包括所述AES算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階段 包括所述AES算法的倒數(shù)第二輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算 法的最后一輪。15. -種非暫時(shí)性計(jì)算機(jī)可讀媒體,在其上存儲(chǔ)有用于加密數(shù)據(jù)的計(jì)算機(jī)可讀指令,包 括經(jīng)配置以致使計(jì)算機(jī)執(zhí)行以下操作的指令: 根據(jù)預(yù)定排列而排列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù),所述第一中間數(shù)據(jù) 由密碼算法的一或多個(gè)第一階段輸出; 根據(jù)所述預(yù)定排列而排列待由所述密碼算法的一或多個(gè)第二階段使用的密鑰; 將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列中間數(shù)據(jù)以產(chǎn)生第二中 間數(shù)據(jù),所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密鑰;以及 根據(jù)所述預(yù)定排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生輸出。16. 根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其進(jìn)一步包括經(jīng)配置以致使所 述計(jì)算機(jī)執(zhí)行以下操作的指令: 將所述密碼算法的所述一或多個(gè)第一階段應(yīng)用于待加密的數(shù)據(jù)以產(chǎn)生所述第一中間 數(shù)據(jù)。17. 根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其進(jìn)一步包括經(jīng)配置以致使所 述計(jì)算機(jī)執(zhí)行以下操作的指令: 從一組排列選擇排列,且 其中所述經(jīng)配置以致使所述計(jì)算機(jī)根據(jù)所述預(yù)定排列而排列所述第一中間數(shù)據(jù)的所 述次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)的指令包括經(jīng)配置以致使所述計(jì)算機(jī)使用所述所選排列來 排列所述第一中間數(shù)據(jù)的所述次序的指令。18. 根據(jù)權(quán)利要求17所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其中所述經(jīng)配置以致使所述計(jì) 算機(jī)從所述組排列選擇所述排列的指令包括經(jīng)配置以致使所述計(jì)算機(jī)執(zhí)行以下操作的指 令: 產(chǎn)生隨機(jī)數(shù)種子值;以及 基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列。19. 根據(jù)權(quán)利要求17所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其中所述經(jīng)配置以致使所述計(jì) 算機(jī)從所述組排列選擇所述排列的指令包括經(jīng)配置以致使所述計(jì)算機(jī)執(zhí)行以下操作的指 令: 基于預(yù)定模式而從所述組排列選擇所述排列。20. 根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其中所述經(jīng)配置以致使所述計(jì) 算機(jī)根據(jù)所述預(yù)定排列的所述逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生所述輸出的指令包 括經(jīng)配置以致使所述計(jì)算機(jī)基于所述所選排列而從一組逆排列選擇所述逆排列的指令。21. 根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其中所述密碼算法為高級(jí)加密 標(biāo)準(zhǔn)AES算法,且其中所述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的第一輪, 且所述密碼算法的所述一或多個(gè)第二階段包括所述AES算法的第二輪;或所述密碼算法的 所述一或多個(gè)第一階段包括所述AES算法的倒數(shù)第二輪,且所述密碼算法的所述一或多個(gè) 第二階段包括所述AES算法的最后一輪。22. -種用于加密數(shù)據(jù)的電路,其包括: 第一組組件,其經(jīng)配置以根據(jù)預(yù)定排列而排列第一中間數(shù)據(jù)的次序以產(chǎn)生經(jīng)排列中間 數(shù)據(jù),所述第一中間數(shù)據(jù)由密碼算法的一或多個(gè)第一階段輸出; 第二組組件,其經(jīng)配置以根據(jù)所述預(yù)定排列而排列待由所述密碼算法的一或多個(gè)第二 階段使用的密鑰; 第三組組件,其經(jīng)配置以將所述密碼算法的所述一或多個(gè)第二階段應(yīng)用于所述經(jīng)排列 中間數(shù)據(jù)以產(chǎn)生第二中間數(shù)據(jù),所述密碼算法的所述一或多個(gè)第二階段使用所述經(jīng)排列密 鑰;以及 第四組組件,其經(jīng)配置以根據(jù)所述預(yù)定排列的逆排列而排列所述第二中間數(shù)據(jù)以產(chǎn)生 輸出。23. 根據(jù)權(quán)利要求22所述的電路,其進(jìn)一步包括: 第五組組件,其經(jīng)配置以將所述密碼算法的所述一或多個(gè)第一階段應(yīng)用于待加密的數(shù) 據(jù)以產(chǎn)生所述第一中間數(shù)據(jù)。24. 根據(jù)權(quán)利要求22所述的電路,其進(jìn)一步包括: 第六組組件,其經(jīng)配置以從一組排列選擇排列,其中根據(jù)所述預(yù)定排列而排列所述第 一中間數(shù)據(jù)的所述次序以產(chǎn)生經(jīng)排列中間數(shù)據(jù)包括:使用所述所選排列來排列所述第一中 間數(shù)據(jù)的所述次序。25. 根據(jù)權(quán)利要求24所述的電路,其中所述第六組組件進(jìn)一步經(jīng)配置以: 產(chǎn)生隨機(jī)數(shù)種子值;以及 基于所述隨機(jī)數(shù)種子值而從所述組排列選擇所述排列。26. 根據(jù)權(quán)利要求24所述的電路,其中所述第六組組件進(jìn)一步經(jīng)配置以: 基于預(yù)定模式而從所述組排列選擇所述排列。27. 根據(jù)權(quán)利要求22所述的電路,其中所述第四組組件經(jīng)配置以基于所述所選排列而 從一組逆排列選擇所述逆排列。28. 根據(jù)權(quán)利要求22所述的電路,其中所述密碼算法為高級(jí)加密標(biāo)準(zhǔn)AES算法,且其中 所述密碼算法的所述一或多個(gè)第一階段包括所述AES算法的第一輪,且所述密碼算法的所 述一或多個(gè)第二階段包括所述AES算法的第二輪;或所述密碼算法的所述一或多個(gè)第一階 段包括所述AES算法的倒數(shù)第二輪,且所述密碼算法的所述一或多個(gè)第二階段包括所述AES 算法的最后一輪。
【文檔編號(hào)】H04L9/00GK105940439SQ201580006205
【公開日】2016年9月14日
【申請(qǐng)日】2015年2月3日
【發(fā)明人】郭曉飛, 郭旭, B·B·布倫利
【申請(qǐng)人】高通股份有限公司