AESアルゴリズムを簡単に説明すると

AESアルゴリズムを簡単に説明すると

AESアルゴリズム

AES (Advanced Encryption Standard) は、2001 年に米国でリリースされたブロック暗号化アルゴリズムです。AES はブロック暗号化アルゴリズム フレームワークのコンポーネントであるため、AES を理解する鍵はブロック暗号化アルゴリズムを理解することです。 (ブロック暗号は「箱」であり、AES はその「箱」の中にあるものの 1 つにすぎません)

ブロック暗号化の仕組み

ブロック暗号化アルゴリズムは、ブロック モード操作とも呼ばれます。プレーンテキストを同じ長さのブロックにグループ化し、特定の暗号化アルゴリズムを使用して暗号化します。AES は「特定の暗号化アルゴリズム」の 1 つです。 2 つの関係を示すために図を使用します。

ブロック暗号には3つの重要な部分がある

  • パディング方式は、プレーンテキストを断片に分割する役割を果たします。ブロック暗号化では、データがブロック サイズに準拠している必要があります。AES を例にとると、各データ ブロックのサイズは 128 ビット (16 バイト) と規定されています。データが 16 バイト未満の場合は、16 バイトになるように **パディング** する必要があります。パディング データはバイト長です。たとえば、5 バイトのブロックを 16 バイトにパディングする必要がある場合、残りの 9 バイトはすべて 09 09 09... と書き込まれます。 PKCS5Padding と PKCS7Padding は、仕様が異なる 2 つの標準です。PKCS5 ではブロック サイズが 8 バイトと規定されていますが、PKCS7 には制限はありません。 AES ではすでにブロック サイズが制限されているため、AES では実際には 2 つの間に違いはありません。したがって、Java では AES+PKC5Padding のみが提供されます (AES+PKCS7Padding、この記述は誤りです。AES にはブロック サイズが制限されています)。
  • 暗号化アルゴリズムは、プレーンテキストの各ブロックを暗号化する役割を担います。アルゴリズムはプレーンテキストとキーを入力し、暗号化された暗号文ブロックを出力します。一般的なアルゴリズムは AES と DES です。
  • 動作モード、ブロック暗号化は非常に柔軟です。異なる動作モードにより、**並列性、可変暗号文(毎回取得される暗号文は異なります)、およびフォールトトレランス**を実現できます。

ブロック暗号の5つの仕組み

ブロック暗号化アルゴリズムには、5 つの一般的な動作モードがあります (問題を簡略化するために、暗号化プロセスのみを掲載します)。

  • 電子コードブック (ECB)

Key は鍵、Plaintext は平文、中間の Block Cipher Encryption は暗号化アルゴリズム (AES など) です。キーとプレーン テキストが入力として使用され、暗号化されて暗号文 (Ciphertext) が取得されます。

ECB の動作モードは非常にシンプルで、並列処理が可能です。1 つのスレッドがデータを N 個のブロックに分割し、N 個のスレッドが同時にそれらを暗号化します。欠点は、同じキーが使用されるたびに暗号化されたデータが同じになることです。私のような普通の人にとっては、これはごく普通のことですが、「暗号の専門家」は、これは弱すぎると考えています(囧)。そこで彼らは、「初期化ベクトル (IV)」と呼ばれる変数を使用して、暗号化されるたびに暗号文が異なるようにする特別なアルゴリズムを設計しました (キーが同じであっても)。残りの 4 つのブロック動作モードはすべて、この素晴らしいタイプに属します。

  • 暗号ブロック連鎖 (CBC)

ここでの入力には、初期化ベクトル (IV) と呼ばれる追加の変数があります。プレーンテキストと IV は XOR 演算され、暗号化アルゴリズムの 1 つの変数として入力され、キーは別の変数として入力されます。

CBC 暗号化アルゴリズムはシリアル アルゴリズムであり、2 番目のブロックの暗号化は IV として暗号文の最初のブロックに依存します。したがって、計算するときは、段階的にしか計算できません。

  • 暗号フィードバック (CFB)

以前のブロック暗号化ではフォールト トレランスの問題が解決されませんでした。データ ブロックの 1 つが破損した場合、残りのデータ ブロックを復号化できますか?これが CFB の動作モードです。上の図に注目してください。復号化中に最初の暗号文ブロックが破損している場合、このコンテンツは無視され、2 番目の暗号文が 3 番目の暗号文ブロックを復号化するための入力として使用されます。

  • 出力フィードバックモード(OFB)

CBC は非常に強力ですが (毎回異なる暗号文を計算できます)、並列実行はできないため、「時は金なり」のコンピューターには耐えられません。そこで最初の改良点である OFB が登場しました。

IV とキーが暗号化された後、それらを並列処理することができ、1 つのスレッドがプレーンテキストとの XOR に使用され、1 つのスレッドが「次の」暗号化をすぐに計算できることに注意してください。

  • カウンターモード(CTR)

OFB アルゴリズムの並列性は低すぎるため、部分的な並列性しか実現できません。そのため、並列性と暗号文の可変性の両方を保証する 2 番目の改良点である CTR アルゴリズムがあります。

CTR アルゴリズムの IV は 2 つの部分になります。最初の部分はランダムなシーケンスになる Nonce で、2 番目の部分は増加する数値であるカウンターです。そのため、暗号化する際に、Nonce と計算機を組み合わせることで、規則的だが異なる (暗号文ごとに鍵となるのは IV が可変であることです)「IV」を取得できます。

要約する

暗号文が固定されているかどうか、並列化できるかどうか、フォールトトレランスがあるかどうかという3つの側面から5つの動作モードを理解する

  • ECB暗号文は固定、完全に並列
  • CBC暗号文は可変であり並列化できない
  • CFB暗号文はフォールトトレラントであり、暗号文は可変であり、並列化できない。
  • OFB暗号文は可変であり、部分的に並列である
  • CTR暗号文は可変で、完全に並列である

データ量が非常に大きくない限り、並列処理を気にする必要はないことに注意してください。データ量が少ない場合はフォールト トレランスは効果がなく、通常は 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スマートモビリティビジョン」を発表

ブログ    
ブログ    

推薦する

10億の顔データが完全に削除されました! Facebookが顔認識ツールを廃止

[[434362]] 11月3日、Facebookは写真のタグ付けに顔認識機能を使うのをやめると発表...

IoTとAIがキャッシュレス小売業をどう推進するか

Amazon Go ストアのオープンは、私たちの買い物方法に大きな変化をもたらします。私たちは初め...

...

気候ガバナンスの年、希望はAIにある

[[391671]]気候変動は今日世界が直面している最大の課題となっています。国連は、2021年が地...

...

従来のジムも人工知能によって消滅してしまうのでしょうか?

[[336339]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...

ビル・ゲイツがダボス会議でAIについて語る: プログラマーはAIを使って生産性を50%向上させた

ダボスで開催された世界経済フォーラムで、マイクロソフトの元社長兼CEOのビル・ゲイツ氏が、ヤフー・フ...

...

ロボットが人間の「仲間」となり、人間と機械の関係が変化する。これは良いことなのか、悪いことなのか?

最近南京で開催された2020年世界知能製造会議において、中国工程院の研究者らは、人類の発展の観点から...

王小川の大型模型製作の秘密のレシピが初めて公開されました。5つのステップ、完成まで2か月

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

AIが使われるようになった今、データセキュリティではこれら4つの大きな問題を避けることはできない

「今日ではビデオ監視や顔認識のアプリケーションが非常に多く、データセキュリティの保護は緊急の課題とな...

2024年のデータセンターのトレンド: より高温、より高密度、よりスマート

今日のデータセンター業界は、AI テクノロジーの急速な普及、ムーアの法則の減速、そして厄介な持続可能...

ディープラーニングを専門家以外の人に説明するにはどうすればよいでしょうか?

昨年から、AIの普及に関わる仕事がたくさん必要になりました。私は長い間、ディープラーニングがなぜ特に...