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スマートモビリティビジョン」を発表

ブログ    
ブログ    
ブログ    

推薦する

...

ロボットが任務中、「無人配達」の裏にある苦闘と暗闘

[[230225]]本レポートでは、無人配送業界の変化、その台頭理由、中国と米国の違いについて詳細に...

GPT-4 Turboがリリースされたが、人気が高すぎて翌日2時間ダウンした。

11月7日、北米の人工知能企業OpenAIの開発者会議が世界のテクノロジーコミュニティの注目を集め...

人工知能の仮想火災は死体の山を残した

ハリウッドのSF大作では、人工知能は常に、将来の人類の生存を脅かす自己認識機械として定義されています...

大型モデルの中に泥棒はいますか?上海交通大学は、パラメータを保護するために、大規模モデル用の「人間が読める指紋」を作成します

大規模モデルの事前トレーニングには膨大な量のコンピューティング リソースとデータが必要となるため、事...

Baidu UNITが小能科技を支援し、ハイアールグループと提携してインテリジェントクラウド顧客サービスをアップグレード

インテリジェントな顧客サービスの分野は、2018 年に急速な発展を遂げました。企業の人件費を抑制する...

...

「ブラック」AI | 新たなAIサイバー攻撃のトップ10をチェック

今日、人工知能技術の急速な発展は、さまざまな分野に前例のない変化と進歩をもたらしています。その中には...

...

新しい報告書によると、AIはディープフェイクから人々を保護できない

Data & Society の新しいレポートでは、機械学習を使用して改変されるディープフェ...

人工知能は「人工知能」にどれだけ「知性」を押し付けているのか

真に AI を活用したサービスを構築するのは簡単ではありません。そこで、一部のスタートアップ企業は、...

5分でトップ10の機械学習アルゴリズムを学ぶ

[[317656]]機械学習は業界にとって革新的で重要な分野です。機械学習プログラムに選択するアルゴ...

...

機械学習によって IoT アプリケーションのセキュリティはどのように向上するのでしょうか?

モノのインターネットの世界は手の届くところにありますが、それには良い面と悪い面の両方が伴います。機械...