AESアルゴリズム AES (Advanced Encryption Standard) は、2001 年に米国でリリースされたブロック暗号化アルゴリズムです。AES はブロック暗号化アルゴリズム フレームワークのコンポーネントであるため、AES を理解する鍵はブロック暗号化アルゴリズムを理解することです。 (ブロック暗号は「箱」であり、AES はその「箱」の中にあるものの 1 つにすぎません) ブロック暗号化の仕組み ブロック暗号化アルゴリズムは、ブロック モード操作とも呼ばれます。プレーンテキストを同じ長さのブロックにグループ化し、特定の暗号化アルゴリズムを使用して暗号化します。AES は「特定の暗号化アルゴリズム」の 1 つです。 2 つの関係を示すために図を使用します。 ブロック暗号には3つの重要な部分がある
ブロック暗号の5つの仕組み ブロック暗号化アルゴリズムには、5 つの一般的な動作モードがあります (問題を簡略化するために、暗号化プロセスのみを掲載します)。
Key は鍵、Plaintext は平文、中間の Block Cipher Encryption は暗号化アルゴリズム (AES など) です。キーとプレーン テキストが入力として使用され、暗号化されて暗号文 (Ciphertext) が取得されます。 ECB の動作モードは非常にシンプルで、並列処理が可能です。1 つのスレッドがデータを N 個のブロックに分割し、N 個のスレッドが同時にそれらを暗号化します。欠点は、同じキーが使用されるたびに暗号化されたデータが同じになることです。私のような普通の人にとっては、これはごく普通のことですが、「暗号の専門家」は、これは弱すぎると考えています(囧)。そこで彼らは、「初期化ベクトル (IV)」と呼ばれる変数を使用して、暗号化されるたびに暗号文が異なるようにする特別なアルゴリズムを設計しました (キーが同じであっても)。残りの 4 つのブロック動作モードはすべて、この素晴らしいタイプに属します。
ここでの入力には、初期化ベクトル (IV) と呼ばれる追加の変数があります。プレーンテキストと IV は XOR 演算され、暗号化アルゴリズムの 1 つの変数として入力され、キーは別の変数として入力されます。 CBC 暗号化アルゴリズムはシリアル アルゴリズムであり、2 番目のブロックの暗号化は IV として暗号文の最初のブロックに依存します。したがって、計算するときは、段階的にしか計算できません。
以前のブロック暗号化ではフォールト トレランスの問題が解決されませんでした。データ ブロックの 1 つが破損した場合、残りのデータ ブロックを復号化できますか?これが CFB の動作モードです。上の図に注目してください。復号化中に最初の暗号文ブロックが破損している場合、このコンテンツは無視され、2 番目の暗号文が 3 番目の暗号文ブロックを復号化するための入力として使用されます。
CBC は非常に強力ですが (毎回異なる暗号文を計算できます)、並列実行はできないため、「時は金なり」のコンピューターには耐えられません。そこで最初の改良点である OFB が登場しました。 IV とキーが暗号化された後、それらを並列処理することができ、1 つのスレッドがプレーンテキストとの XOR に使用され、1 つのスレッドが「次の」暗号化をすぐに計算できることに注意してください。
OFB アルゴリズムの並列性は低すぎるため、部分的な並列性しか実現できません。そのため、並列性と暗号文の可変性の両方を保証する 2 番目の改良点である CTR アルゴリズムがあります。 CTR アルゴリズムの IV は 2 つの部分になります。最初の部分はランダムなシーケンスになる Nonce で、2 番目の部分は増加する数値であるカウンターです。そのため、暗号化する際に、Nonce と計算機を組み合わせることで、規則的だが異なる (暗号文ごとに鍵となるのは IV が可変であることです)「IV」を取得できます。 要約する 暗号文が固定されているかどうか、並列化できるかどうか、フォールトトレランスがあるかどうかという3つの側面から5つの動作モードを理解する
データ量が非常に大きくない限り、並列処理を気にする必要はないことに注意してください。データ量が少ない場合はフォールト トレランスは効果がなく、通常は CBC が最適な選択肢となります。 言語を越える方法 ある言語で書かれた AES 暗号化を別の言語で解読できないという問題に遭遇した友人はたくさんいます。その理由は、彼らが AES の動作モードをまったく理解していないからです (おそらく、彼らは AES 暗号化を Google で検索し、コードを貼り付けてそれで終わりにしたのでしょう)。したがって、言語間の最初のステップは、すべての言語で使用できる作業モードを見つけることではなく (ほぼすべての言語がすべての動作モードをサポートしています)、暗号化されたデータがどの作業モードであるか、IV が使用されているかどうか、IV が相手にどのように渡されるかを把握することだと思います。 たとえば、次の Java コード: 私は CBC 暗号化モードを使用しました。このモードには IV が含まれます。固定 IV を使用できます (たとえば、キーを IV として使用)。ただし、これは CBC の利点がなく、暗号文が可変であることを意味します。そこで、ランダムな 16 バイトを IV として使用し、それを最初のデータ ブロックとして返します。復号化するときは、最初のデータ ブロックを IV として取り出し、残りのデータを復号化します。 IV パラメータ (init 関数の 3 番目のパラメータ) を指定しない場合、iv は乱数になります。 Java は暗号文に IV を積極的に追加しないため、誰も暗号化されたデータを復号化することはできません。 [この記事は51CTOコラムニスト「Xing Sen」によるオリジナル記事です。転載をご希望の場合は著者にご連絡の上、許可を得てください。] この著者の他の記事を読むにはここをクリックしてください |
<<: なぜディープラーニングには局所最小値がないのでしょうか?
>>: SAIC Maxus、クローズドループエコシステム構築に向けた「RVスマートモビリティビジョン」を発表
[[434362]] 11月3日、Facebookは写真のタグ付けに顔認識機能を使うのをやめると発表...
Amazon Go ストアのオープンは、私たちの買い物方法に大きな変化をもたらします。私たちは初め...
[[391671]]気候変動は今日世界が直面している最大の課題となっています。国連は、2021年が地...
[[336339]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...
ダボスで開催された世界経済フォーラムで、マイクロソフトの元社長兼CEOのビル・ゲイツ氏が、ヤフー・フ...
最近南京で開催された2020年世界知能製造会議において、中国工程院の研究者らは、人類の発展の観点から...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
「今日ではビデオ監視や顔認識のアプリケーションが非常に多く、データセキュリティの保護は緊急の課題とな...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
今日のデータセンター業界は、AI テクノロジーの急速な普及、ムーアの法則の減速、そして厄介な持続可能...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
昨年から、AIの普及に関わる仕事がたくさん必要になりました。私は長い間、ディープラーニングがなぜ特に...