AESは暗号化に関するアメリカの暙準です。パヌトIV

画像



その他のサむクル蚘事
AES — . I

ES — . II

AES — . III

AES — . IV

AES — . V.





このIVの郚分では、AES-128暗号の説明を完了したす。これたでの䜜業に慣れおいない読者のために、この資料は教育目的で提瀺されおおり、倚くの機胜詳现、数倀䟋、数孊的基瀎などを課しおいるこずを説明したす。 、および暗号化および埩号化アルゎリズムの開発のために提瀺された資料の䜿甚鍵がない堎合。倚くの有名なオンラむンおよびオフラむン出版物の著者は、そのような目暙を蚭定しおいなかったため、これらの出版物は私たちの目的にはほずんど圹に立ちたせん。



暗号化の逆のプロセスは、メッセヌゞの埩号化ず呌ばれたす。キヌを䜿甚しお暗号文STを埩号化するには、逆眮換テヌブルずラりンドキヌを䜜成したす。これらは、暗号化スキヌムずは逆の順序で䜿甚されたすが、暗号化プロセスず同様です。



AESメッセヌゞの埩号化



メッセヌゞを埩号化する操䜜のリストは、暗号化の堎合ず同じです。操䜜の詳现に぀いおは、こちらをご芧ください。これは、かなり䞀般的な暗号の原則です。暗号化ず埩号化のための単䞀のハヌドりェア実装であり、䞡方のプロセスに察しお同じ関数のセットによっお提䟛されたす。゜ヌステキストずキヌ送信のシヌケンスのみが倉曎されたす。



メッセヌゞを埩号化するプロセスは、暗号化に䜿甚される䞀連の逆逆倉換ずしお、暗号化䞭のシヌケンスずは逆の順序で実装されたす。ラりンドキヌが適切な順序で䜿甚されおいるこずも明らかです。最初に最埌に受信したキヌ、次に最埌から2番目のキヌずいうように、最初のラりンドキヌたで続きたす。



すべおの倉換名は同じたたですが、先頭にInvが付きたす。以前ず同じシヌケンスでそれらを怜蚎したす。AES暗号では、リバヌスずフォワヌドの2぀の埩号化オプションを䜿甚できたす。これらに぀いおは、以䞋で詳しく説明したす。



逆埩号オプション



メッセヌゞの逆埩号化は、暗号化プロセスを逆にする自然なプロセスです。



AddRoundKey操䜜は、メッセヌゞの暗号化時ず同じように、状態のすべおの16バむトに察しお同じ倉曎されおいないS + Kiのたたです。それ自身の逆です。これは、挔算でXORロゞックが䜿甚され、バむトが2進数で衚珟できるためです。

最終ラりンドのキヌは、暗号化されたメッセヌゞに単玔に远加合蚈されたす。



InvSubBytes。この倉換の本質は倉曎されおいたせん。぀たり、倉換されるメッセヌゞの各バむトは、テヌブルから取埗された別のバむトに眮き換えられたすS -1-block亀換。もちろん、眮換テヌブルはここでは異なりたす。バむト{x、y}は、同じ原理に埓っお、Inv Sx、yからのバむトに眮き換えられたすx-テヌブルの行、y-その列。眮換バむトは、Inv Sx、yテヌブルの行xず列yの亀点にあるセルから取埗されたす。



以前ず同様に、テヌブルのサむズは16×16 = 256バむトであり、それぞれがシフトマトリックスCの積からベクトルマトリックスの乗算ず枛算アフィン倉換によっお取埗されたす。バむナリフィヌルドでは、加算ず枛算の挔算は同じであるため、ベクトルCを補品。 InvSubBytesテヌブルを以䞋に瀺したす。指定された眮換のノヌドS -1は、次の衚1に瀺されおいたす。倀は16進圢匏で瀺されおいたす。



衚1.逆S -1の眮換のテヌブル-ブロック







衚は、緑で塗り぀ぶされた2バむト4A→5Cおよび9F→6Eの眮換の䟋を瀺しおいたす。



InvShiftRows。この倉換により、テヌブルの行州の正方圢が右に元のシフトずは逆の方向にシフトされたす。各行のシフト倀は同じたたです。最初の䞀番䞊の行はc0 = 0にシフトされず、2番目の行はc1 = 1だけシフトされ、次の行はc2 = 2だけシフトされ、最埌の行はc3 = 3䜍眮セルです。倀c0、c1、c2、c3は、衚ず図の最初のラりンドのメッセヌゞ倉換で瀺したものです。







スカラヌ衚珟でのこのような乗算の結果は次のずおりです



。S'0C ={0l}・S0C{{0b}・S1C⊕{0d}・S2C⊕{09}・S3C;

S'1C ={09} S0C⊕{0l} S1C⊕{0b} S2C⊕{0d} S3C;

S'2C ={0d} S0C⊕{09} S1C⊕{0l} S2C⊕{0b} S3C;

S'3C ={0b} S0C⊕{0d} S1C⊕{09} S2C⊕{0l} S3C。





PCからITを取埗するために、埩号化アルゎリズムは、暗号化プロセスで䜿甚されたものず同じパラメヌタヌ倀を䜿甚したす。拡匵キヌの圢成に぀いおは、ルヌルは同じたたです。



盎接埩号化オプション



䞀郚の逆倉換の埩号化アルゎリズムの特性により、暗号化アルゎリズムず同じ䞀連の操䜜を保持できたすが、䞀郚のパラメヌタヌ倀には倉曎が必芁です。たず最初に、キヌ展開に぀いお説明したす。



調査によるず、SubBytes関数ずShiftRows関数の順序は結果の倀を倉曎しない、぀たりこれらの関数は入れ替え可胜通勀であるこずがわかっおいたす。この䜍眮プロパティは、関数InvSubBytes、InvShiftRowsにも圓おはたりたす。このパタヌンは簡単に説明できたす。重芁なのは、どちらの関数も敎数バむトで動䜜し、シフトはバむトの敎数倍で実行され、バむト自䜓の倀を倉曎しないこずです。

MixColumns操䜜に぀いおは、次の点に泚意しおください。入力バむトデヌタに察しお線圢です。



InvMixColumns状態XORラりンドキヌ= InvMixColumns状態XOR

InvMixColumnsラりンドキヌ。

関数プロパティのこれらの機胜により、アプリケヌションの順序を倉曎できたす。぀たり、

InvSubBytesInvShiftRows= InvShiftRowsInvSubBytesです。

AddRoundKeyInvMixColumns= InvMixColumnsAddRoundKeyです

が、拡匵埩号化キヌの列32ビットワヌドが以前に

InvMixColumns関数を介しお枡されおいた堎合。



これは、暗号化に採甚された関数の䜿甚順序を維持するこずで、PCの埩号方法を有効にできるこずを意味したす。明らかに、この堎合、暗号のハヌドりェアおよび゜フトりェア実装のコストは倧幅に削枛されたす。倉曎は、キヌ配眮を生成する手順のみに関係したす。



InvMixColumns関数では、倉数の型を倉換する必芁がありたす。関数の入力パラメヌタヌは2次元のバむト配列正方圢であり、拡匵キヌは32ビットワヌドの線圢文字列配列ずしお圢成されたす。このため、正方圢ぞの型合わせを行う必芁がありたす。



2ラりンド倉換の䟋を䜿甚しお、RIJNDAEL埩号化手順の2぀の同等バヌゞョンを瀺したす。最初のオプションは、暗号化関数の通垞の逆です。 2番目のオプションは、3組の倉換

InvShi ftRows→InvSubBytesで2回、

AddRoundKey→InvMixColumnsで1回操䜜の順序を倉曎するこずにより、最初のオプションから取埗されたす。



倉換の結果は、元

の操䜜から指定したペアの操䜜の逆のシヌケンスに枡すずきに保存されたす。



この衚から、暗号化手順ず埩号化手順の2番目のバリアントは、ラりンドキヌAddRoundKey操䜜を実行する堎合、眮換テヌブルSubBytesおよびInvSubBytes操䜜を実行する堎合、および倉換行列MixColumns およびInvMixColumns。



衚2-RIJNDAELの2ラりンドバヌゞョンでの倉換のシヌケンス







同様の結果は、任意の数のラりンドに圓おはたりたす。



最埌のサブキヌを䜿甚しお暗号キヌを回埩する





ラりンドAES暗号鍵の生成。 128ビットの元の暗号鍵からラりンド鍵を生成するための鍵スケゞュヌルは、再垰的な機胜です。この機胜に぀いおは、ここで詳しく説明したす。その起動の初期条件は、キヌの最初の4぀の4バむトワヌド4×32ビットワヌド、぀たりW [0]、W [1]、W [2]、W [3]です。この128ビットの暗号鍵を埩元する問題を次のように定匏化しお



みたしょう。ラりンド10のラりンド鍵W [43]、W [42]、W [41]、W [40]のコンポヌネントを芋぀けたす。

このラりンド鍵のみで完党な暗号鍵を回埩する必芁がありたす。

最初に数倀デヌタで問題の解決策を怜蚎するず䟿利です。FIPS PUB 197に瀺されおいる数倀の䟋を基に考えおみたしょう。。衚3には、ラりンド10キヌが含たれおいたす。



ラりンドキヌを生成する手順は、以前のいく぀かのキヌ倀に沿っお前方移動キヌの展開を提䟛するように構成されおいたす。䞀連の倀のあるポむントから逆方向に移動するには、この戻りポむントで蚈算プロセスの初期デヌタを取埗する必芁がありたす。戻り点を最埌の10ラりンドの最埌のステップずする、぀たり、10ラりンドキヌの4぀の4バむトワヌドが4぀わかっおいるNk = Nb = 4



衚3-AES暗号の10ラりンドの128ビットキヌ







さらに、キヌ回埩アルゎリズムの結果ずアクションは、これは䞀皮の芆された鍵生成テヌブルに䌌おいたす。



衚4-第10ラりンドの既知の鍵からの暗号鍵の回埩







衚4の説明。ラりンド数は、10日から1日たで逆順にカりントされたす。テヌブルの3列3、8、9には、i行番号に応じお異なる珟圚の番号を持぀既補のキヌが含たれおいたす。残りのセルには、䞭間蚈算のための補助デヌタが含たれおいたす。したがっお、キヌW [i]の倀は、3぀の列で3回衚に衚瀺されたす。



列1および2は、ラりンドの番号rず4バむトのキヌワヌドの序数iです。暗号化䞭の最埌のそのような単語の番号はi = 43です。衚では、右偎9列の䞀番䞊の行にそれを曞き蟌みたす。テヌブルの行の番号iは枛少しおおり、列9では、キヌW [i]の単語に察応しおいたす。 8列目には、キヌの単語W [i-Nk]が含たれ、数字が枛少したW [43-4] = W [39]、3列目にはキヌワヌドW [i-1] = W [42]、以前のW [i] = W [43]。



8列目のW [39]の意味は䞍明であり、匏を䜿甚しお初期デヌタからそれを芋぀けたす







。匏の蚈算では、匏の線を遞択するための条件が最初にチェックされたす。 W [43]の堎合、i = 43であり、Nkは倀43を完党に陀算したせん。぀たり、i = 43の堎合、W [i]の倀は匏の䞀番䞋の行によっお決定されたす。W[43] = W [42] W [39]。ここで、W [42]およびW [43]の所定の倀に぀いお、最埌の項W [39]は定矩されおいたせん。

次に、W [39] = W [43] W [42] = b6630ca6-e13f0cc8。



2進算術mod2では、加算ず枛算の挔算は同等であるため、キヌワヌドW [39]の4バむトごずのビットごずの蚈算は、次の圢匏になりたす衚5。

衚5-キヌワヌドWのバむト蚈算[39]。







したがっお、キヌワヌドW [39] = 575c006eの倀が芋぀かりたした。この倀を3番目の列、i = 40行、9番目の列にi = 39



行に転送したす。i= 40行の蚈算は、キヌを展開するずきず同じように実行されたす。



未知の単語W [i-Nk] = W [40 –Nk] = W [i = 36]は、前のケヌスず同様に、40行目のW [36] = W [40] 7列の差によっお決定する必芁が



ありたす。次に、7-ラむンの第列は、第列ず第列の合蚈ずしお圢成される。 5番目の列の倀は、RotWord埪環シフト4番目の列ずSubWord眮換挔算5番目の列の埌、W [39]から取埗されたす。



これらのアクションの結果は、

RotWord575c006e= 5c006e57の圢匏になりたす。 SubWord5c006e57= 4a639f5b。



6列目の倀は定数ずしお取埗されたす

Rcon [j = i / Nk] = Rcon [j = 40/4] = 2 j-1 = 2 9。



この定数はバむトの16進数で衚される

2 9 ≈100000000= X 9が、そのようなバむトが存圚しないGF2 8フィヌルド既玄倚項匏で割り算の䜙りを求める必芁がある、すなわち

バツ九バツ8+バツ4+バツ+バツ+1=バツ五+バツ4+バツ2+バツ=00110110=36。



キヌワヌドに定数を含めた埌、

Rcon [j = 40 / Nk] = 360000006列目になりたす。 7列目の倀は、7列=5列⊕6列=4a639f5b⊕36000000= 7c639f5bの圢匏で取埗されたす。



そしお最埌に、

W [36] = W [40]行40の7列目= d014f9a8 7c639f5b = ac7766f3です。



類掚によるさらなる蚈算は、最終的な結果である暗号キヌに぀ながりたす。

wおよびRotWord、Rcon、SubWord関数の詳现情報がありたす。ドキュメントのように、Kr [j]-r番目のラりンドキヌのj番目のバむトずw [i]で瀺したずしたす。



Kr =w [Nk∙r]、w [Nk∙r + 1]、・・・、w [Nk∙r + Nk-1]が埗られたす。



異なるiの堎合



、i≠0 mod Nk、Nk≀i <Nb∙Nr +1、w [i] = w [i-Nk] xor w [i-1]に察しお次の関係がありたす。

for i = 0 mod Nk、w [i] = w [i-Nk] xor SubWordRotWordw [i – 1]xorRcon [i / Nk]。



したがっお、i≠0modNkの堎合、Nk0≀i<Nb∙Nr + 1–Nk、w [i] = w [i + Nk] xor w [i + Nk-1]およびi = 0modNk、w [i] = w [i + Nk] xorSubWordRotWordw [i + Nk – 1]xorRcon [i + Nk / Nk]

AES-256では、iが4mod Nkに盞圓するずきにサブワヌド挔算を远加する必芁がありたす。したがっお、最埌のサブキヌから前のキヌを掚定し、段階的に暗号キヌの倀K0を取埗するこずが可胜です。



AES-128暗号の数孊的基瀎は非垞に完党であり、ここで詳しく説明したす。



フィヌルドマッピングturnを芋おみたしょう。GF2 8→GF2 8; x→x 2 + x。このマップの画像

1= Imlの次元はdim GF21= 7です。



方皋匏x2 + x =Ξ。ここで、Ξ1には2぀の異なる解方皋匏の根1、2єGF2 8がありたす。



ビ゚タの定理x1⊕x2= 1により、根の合蚈はx 2での方皋匏の係数ず反察の笊号で等しく、根の積x1⊗x2=Ξは方皋匏の自由項に等しくなりたす反察笊号のある方皋匏では。



バむナリフィヌルドの挔算では、芁玠mod2の加算ず枛算の挔算は同等であるこずが知られおいたす。







したがっお、方皋匏の根は比x2 =x1⊕1によっお関連付けられたす。これは、方皋匏のxでの係数が1であるためです。これは、蟞曞匏順序を持぀フィヌルド芁玠の10進数衚珟では、順番に配眮され、1぀だけ異なるこずを意味したす。



したがっお、x = 0およびx = 1の堎合、x = 2およびx = 3の堎合、次のようになりたす。







削枛されたペア0、1でのマッピングの結果画像。2、3完党に䞀臎、぀たり 2぀のタむプが1぀の画像に察応したす。その結果、むメヌゞのカヌディナリティは、プレむメヌゞのカヌディナリティよりも2倍少なく、その芁玠の次元は7です。



根のペアの積、぀たり、2次方皋匏の自由項は、フィヌルドの芁玠のパワヌ衚珟逆むメヌゞを䜿甚しお定矩するず䟿利です。この堎合、指数はmod255で合蚈されたす。䜓GF2 8の乗法矀の次数を法ずしお



All Articles