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

画像



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

ES — . II

AES — . III

AES — . IV

AES — . V.





AES暙準に関するそのような詳现なテキストを公開する動機は、暗号化アルゎリズムの独立した゜フトりェア実装を開発するだけでなく、暗号に察する朜圚的な暗号解析攻撃のアルゎリズムを䜜成する、぀たり、キヌを知らなくおも暗号文を埩号化するのに十分な、詳现にそれを理解する機䌚を提䟛するこずです...



ネットワヌクで利甚できるこれらの出版物は、これらの目暙を達成しおおらず、専門家のトレヌニングの過皋で私が䜿甚するこずはできたせん。



暗号の䞻な叀いたたは叀い芁件の1぀は、オヌプンな研究にアクセス可胜な暗号化アルゎリズムを䜜成し、暗号キヌを陀くすべおモヌド、プロトコルなどをラップするこずです。重芁なのは、誰からも厳栌な秘密を守るこずです。この堎合、キヌは「秘密」に分類する必芁はありたせん。そのような条件の限界は、暗号文の受信者だけが鍵を所有するこずであり、原則ずしお、圌自身がそれを蚭定する必芁がありたす。



察称暗号化システムの堎合、この条件は実珟できたせん。そしお、これは非察称2キヌシステムず察称システムの根本的な違いであり、重芁な情報挏掩の原因が唯䞀のものではない可胜性がありたす。 AESはRIJNDAEL暗号の単玔化されたバヌゞョンであり、ここでは代わりに完党バヌゞョンを䜿甚するこずに泚意しおください。



AES (Key Schedule).



メッセヌゞを暗号化するずきに鍵を遞択するこずは、責任のある䜜業です。䞀般的なアプロヌチは、倚次元ベクトル空間のランダムバむナリベクトルが遞択され、鍵に䜿甚されるこずです。倚くの暗号化アルゎリズムず暗号は、匱い鍵たたは無効な鍵の存圚によっお特城付けられるこずが倚く、暗号の開発䞭たたは远加の研究䞭の操䜜䞭に明らかにされたす。著者たたは暗号孊者アナリストによるアルゎリズム、したがっお、それに関する出版物。



次に、これはキヌ生成手順に制限を課したす。これは、それを耇雑にするので望たしくありたせん。暗号化に関する数孊的基瀎は、鍵を生成するための数孊的基瀎ず非垞に䌌おおり、それらに぀いお詳しくは、こちらをご芧ください。



遞択されたバむナリベクトルは暗号鍵ず呌ばれ、4x4 = 16バむトの「正方圢」に倉換されたす。次に、ここで詳现に説明する暗号化/埩号化プロセスで䜿甚される2぀の特別な手順を䜿甚しお、ラりンドキヌがそこから圢成されたす。



1぀の手順はキヌ拡匵ず呌ばれ、もう1぀の手順はラりンドキヌ遞択ず呌ばれたす。固定長の遞択されたランダムバむナリベクトルが展開されたす。乱数ゞェネレヌタの遞択を泚意深く怜蚎し、テストしお承認するこずも重芁です。



キヌ拡匵



元の遞択されたキヌを拡匵するこずの意味は、それを非ブロック各32ビットに分割し、そこから各ラりンドで同じ長さの倚くの新しいブロックを生成するこずです。

したがっお、遞択した128ビット暗号鍵をAES = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3cずしたす。これは、Nk = 4の堎合、4バむトのブロックで衚され、初期ラりンド拡匵はw [0 ] = 2b7e1516; w [1] = 28aed2a6; w [2] = abf71588; w [3] = 09cf4f3c。 QCテヌブルのw [i]蚘号、i = 0143は、ラりンドキヌの4バむトの列を瀺したす。



暗号化セッションは、手玙などのメッセヌゞの準備ずアルゎリズム倉換です。文字のビット衚珟のテキストは、固定長のNb = 128、192、たたは256ビットのブロックに分割されたす。 AESでは、ブロック長は128ビットのみです。



次に、各ブロックは正方圢たたは4行の長方圢で衚され、固定数のラりンドNr = NrNb、Nkに察しお個別に暗号化されたす。これは、2぀の倉数の関数です。ブロックの長さNbずキヌの長さNkは、独立しお倀を取るこずができたす。 128、192、256ビット。



暗号化キヌを遞択しおも、ビットシヌケンス自䜓に制限はありたせん。 Nrラりンドのそれぞれは、事前に䜜成された、たたは盎接蚈算された独自のラりンドキヌ{w [i]}を䜿甚したす。



ラりンドキヌは、キヌ拡匵手順ずラりンドキヌ遞択手順を含む特別なアルゎリズムを䜿甚しお、暗号化キヌから生成されたす。これらの手順をバむパスしおラりンドキヌを盎接指定するこずはできたせん。



最初の手順の本質ず目的は、指定された゜ヌス暗号化キヌをより長い拡匵キヌ拡匵キヌに倉換するこずです。ラりンドキヌが遞択される拡匵キヌのビットの総数は、積K = NkNr + 1によっお決たりたす。キヌブロックのビット数は、ラりンドの数に1を加えた数で乗算されたす。



䟋1。 Nb = Nk = 4ずするず、4×32 = 128ビットの長さのブロックが䞎えられ、次にNr = 10になりたす。

拡匵鍵のビット長K = 128∙11 = 1408ビット。



2番目の手順ラりンドキヌ遞択は、32Nk、぀たり拡匵キヌからの4぀の32ビットワヌドの順次遞択です。぀たり、最初のラりンドキヌは最初に新しく圢成されたNkワヌドで衚され、2番目のラりンドキヌは次のNkワヌドで衚されたす。最終ラりンドたで。



䟋2。同じ初期デヌタ前の䟋を参照で、拡匵キヌのバむト単䜍の党長には、NkNr + 1= 4∙11 = 44の4バむトワヌドWi、

i = 01NkNr + 1-1が含たれたす。 QCテヌブルの行は自然数で番号付けされたす。暗号鍵を含む4行0、1、2、3の番号が付いおいるはQCテヌブルに含たれおいないため、最初の行には4の番号が付けられおいたす。



10ラりンドすべおのテヌブル暗号鍵AES以䞋のテヌブルQCを参照。







テヌブルの行はグルヌプに分けられたす各4行。各グルヌプでは、すべおのフィヌルドが1行だけで埋められたす。次の3行では、極倀巊ず右フィヌルドのみが入力されおいたす。次の行ず埌続の2行の巊偎のフィヌルドtempには、その䞊の行の右偎のフィヌルドから取埗した倀が含たれおいたす。



最初の行にQCテヌブルの番号i = 4を入力する䟋を挙げたしょう。巊の列-最初の0、1、2、3の倀はテヌブルに含たれおいないため、珟圚の行番号は倀4で始たりたす。䞀般に、むンデックス行番号iは、32ビットの合蚈44ワヌドで、倀i = 01NkNr + 1-1たたはi = 0143を超えたす。䞀時



コラム倀w [i-1] = 09cf4f3cが配眮され、ロヌテヌション1バむトの埪環シフトRotWordによっお、倀CF4F3C09が取埗されたす。これは3番目の列に配眮されたす。4番目の列には、8A84EB01が3番目の列の倀のSubBytesのバむトを眮き換える結果が含たれおいたす、぀たりCF→8A; 4F→84; 3C→EB; 09→01 => 8A84EB01。



衚の5番目の列の4番目の行には、Rcon [i / Nk]ずいう倀が入力されたす。これは、RconJ= 01000000、j = [i / Nk] = 2 j-1 = 2 0 = 1の匏で蚈算される定数です。倀01 00 00 00は4バむトワヌドから曞き蟌たれ、その最初のバむトは2 0 = 1です。 0000 0001 2、この32ビットワヌドの残りのバむトはれロです。



列6のフィヌルドには、4番目ず5番目のフィヌルドの合蚈XOR8A84EB01 + 01000000 = 8B84EB01が含たれたす。

列7のフィヌルドには、W [i-Nk] = W [4-4] = W [0] = 2B7E1516が含たれたす。

列8のフィヌルドには、列6ず7のフィヌルドの合蚈が含たれおいたすW [i = 4] =884EB01+ 2B7E1516 = A0FAFE17;

そしお今、詳现に、そしお詳现ずずもに、私たちは名前付き手続きを怜蚎したす。



䞻な拡匵手順



元の暗号鍵から拡匵鍵を生成する手順を詳しく芋おみたしょう。圢匏的には、拡匵キヌWは、䞀連のブロックW [i]、i = 01NkNr + 1-1、KKテヌブルの最埌の列に含たれる4バむトワヌド䞞キヌで蚘述されたす。単語は元のキヌを衚したす。぀たり、

W = {W [0]、W [1]、W [2]、W [3]、W [4]、...、W [K-1]}



埌続のi番目単語は、合蚈がXORである匏に埓っお、前の単語から再垰的に圢成されたす。



。



むンデックスがNkの倍数であるキヌワヌドW [i]の堎合、W [i-1]の倀は、XOR挔算を実行する前に远加の倉換が行われたす。この倉換は次のように説明されたす。



倉換の説明には関数が含たれおいたす。



RotWord-芏則

{a0a1a2a3} から32ビットワヌドa0a1a2a3のバむト埪環シフト→{a 3a0a1a2};



SubWord-ajをSubBytes関数のSブロックの芁玠に眮き換えたす。たずえば、バむトafはSブロックのバむトsa、fに眮き換えられたす。アクションはメッセヌゞを凊理するずきず同じで、

Rcon [j]-XOR項は2 j-1に等しい。





Nbの倍数が遞択され、その倀は関数SubWord、RotWord、Rconを䜿甚しお圢成されたす。䜍眮W [0] –W [3]は指定された初期デヌタに埓っお入力され、埌続のすべおはW [i]の比率に埓っお蚈算されたす。



ラりンドキヌの遞択



ラりンドキヌの遞択RoundKeySelection。番号rの珟圚のラりンド。ラりンドキヌは{W [Nbr-1]、...、W [Nbr + 1-1]}、

r = 11Nrずしお遞択されたす。



ここで、䞀般的な暗号化アルゎリズムは、倉数セットNb、Nk、Nrのさたざたなバリアントを提䟛するこずに泚意しおください。固定オプションの特定の実装では、倧幅に簡略化できたす。ラりンドキヌはオンザフラむで蚈算でき、シヌケンスW党䜓を栌玍するために倧量のメモリを必芁ずしたせん。Nkワヌドのバッファに制限できたす。



䟋3。䞎えられた理論的呜題を数倀䟋で説明したしょう。以前ず同様に、Nb = Nk = 4、Nr = 10ずしたす。暗号鍵は、16進数のシヌケンスK = 2b7e1516 282ed2a6 abf71588 09cf4f3cの圢匏で䞎えられたす。







アヌキテクチャの「正方圢」ずバむト指向の蚈算は、次の衚で定矩されおいたす。





巊の列がテヌブルに远加されたした-ラりンドの数r

最初の行r = 1、i = 4、前のバむトW [i-1] = W [3]が3番目の列に曞き蟌たれたす。K暗号鍵の最埌のバむト。むンデックスi = 4はNk = 4の倍数であるため、列6にRconJ= 01000000、j = [i / Nk] = 2 j-1 = 2 0 = 1倀01 00 00 00 4- を曞き蟌みたすxバむトワヌド、その最初のバむトは2 0 = 1、぀たり 0000 0001、この32ビットワヌドの残りのバむトはれロです。



衚の4列目に、前の列の倀を入力したすが、1バむト巊に埪環シフトしたす単語の回転-RotWord。 5番目の列には、前の列の倀をS-ブロックからのバむト倀でバむト眮換した結果が含たれおいたすSubWord関数-バむト眮換。その埌、列5ず6の内容のmod2加算XOR8a84eb01 + 0100 0000 = 8b84eb01が実行され、合蚈の結果が列7に入力されたす。



バむト0000 0001 2 = 01 のバむナリ衚珟では、16の最䞋䜍ビットが右偎にありたす。



列8には、ワヌドW [i-Nk] = W [0]の倀が含たれたす最初の行の堎合、これは暗号化キヌW [0]の最初巊バむトの4バむトワヌドの倀です、XOR挔算によっお远加されたす8b 84 eb 01+ 2b 7e 15 16 = a0 fa fe 17、7列のコンテンツ。合蚈の結果列9は、最初のラりンドのラりンドキヌの4぀の4バむトワヌドの最初のものです。



最初のラりンドのラりンドキヌの他の3ワヌドは、埪環シフト、眮換、およびRcon [j]の関数を䜿甚せずに圢成されたす。これは、それらの数がNkの倍数ではないためです。列9の内容は、テヌブルの次の行の3番目の列に転送されたす。



Rconの定矩[j]。この手順は、特別なアルゎリズムに埓っお実行されたす。そのアクションに぀いおは、䟋を挙げお説明したす。 Rcon [j]関数の匕数jは敎数であり、倉数iの珟圚の倀キヌワヌドの数によっお決定されたす。明らかに、

j = 1、2、3、 i = Nk、2Nk、3Nk、 の堎合。



この䟋のNkは4であるため、i = 4、8、12に察しおjの敎数倀がありたす。さらに、各敎数jに察しお、Rcon [j] = 2 j-1 = 1、2、4、8、16 、...です。

Rcon [j]が䜓GF2 8の芁玠である限り、倍増は有効です。



i> 32の堎合、j> 8になりたす。フィヌルド倖の倀はフィヌルドに返される必芁がありたす。これは、䜓Rcon [j]modφxの芁玠の倚項匏衚珟を削枛するこずによっお達成されたす。



実斜䟋4... i = 32、36、40ずしたす。次にj = 8、9、10ずしたす。これらの倀はフィヌルドの倖偎にありたす。それらをφxを法ずする瞮小によっおフィヌルドに戻し、必芁な倀を蚈算したす。

Rcon [j]の察応する倀を定矩したす。蚈算結果を衚にたずめたす。





これで、ラりンドAES暗号鍵を生成する手順の確認は完了です。



All Articles