14平文と暗号文は4行Nb列の二次元byte配列として表す。ラインダール鍵は、長さNkのword配列である。KeyExpansionという関数で、4*Nkの鍵から伸長鍵wを作る。その後、平文ブロックはCipherアルゴリズムで暗号化される。Ciper平文ブロックはbyte配列stateにコピーされる。stateはAddRoundKeyという初期変換が適用される。stateはNr回巡回し、暗号文として返信される。最初のNr-1回は変換SubBytes、ShiftRows、MixColumns、AddRoundKeyを順次適用する。最終巡回では、変換SubBytes、ShiftRows、AddRoundKeyのみを適用する。NISTのドキュメントの5.1に擬似コードがある。SubBytesNISTのドキュメントの5.1.1DESのようにSボックスというByteを変換するためのテーブルがある。これによりAESの非線形性を保証している。ShiftRowsNISTのドキュメントの5.1.2平文を部分変換したstateを行列表記した際の、行に巡回左シフトを適用する。多重巡回を適用すると、この変換は高拡散の原因となる。MixColumnsNISTのドキュメントの5.1.3列ごとに指定多項式による変換を加える。この変換はstateの列内の拡散の原因となる。AddRoundKeyNISTのドキュメントの5.1.4巡回鍵とstateのXORを計算。巡回の変換を鍵に依存させる効率的な変換。KeyExpansionNISTのドキュメントの5.2アルゴリズムKeyExpansionにより、長さ4Nkのbyte配列であるラインダール鍵から、長さNb(Nr+1)のword配列である伸長鍵wが作られる。実際に動かしたログが記載されているだけ。自分でも実装しようと思ってけど、あまりにたくさん実装例があるのでpycryptoを使ってみるだけにする。InvCipher復号化する手順。NISTのドキュメントの5.3。一応目的の章まで読んだから後はディッフィー・ヘルマン鍵交換方式と、ディジタル署名の章を流し読みして終わりにする。この本は暗号の基礎が1冊で完結するように、丁寧に代数から解説が書いてある。教科書としては例がちょっと少ないかもしれない。あと、courseraのスタンフォード大学のCryptography1という講義のカリキュラムを見ると、6週間でこの本よりはるかに多い量を学ぶようだ。代数は前提として、現場で用いられている暗号化アルゴリズムの内部構成などが対象っぽい。(1)はてなブログをはじめよう!trisectionさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。