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

ブログ    
ブログ    

推薦する

2022 RPA認定ランキング

ロボティック・プロセス・オートメーション (RPA) は、ビジネス プロセスの合理化に役立つ重要なテ...

AIチップブラックテクノロジーインベントリ

ビッグデータとディープラーニングの利用が増えるにつれて、基盤となるハードウェアとチップに新たな要件が...

上位 10 の古典的なソート アルゴリズムの詳細な説明: シェル ソート、マージ ソート、クイック ソート

[[378304]]上位 10 の古典的なソート アルゴリズム - シェル ソート、マージ ソート、...

...

AIドクターは正式に勤務中ですか? AIと医療の融合が爆発点に到達!

近年、医療分野における人工知能の応用が非常にホットな話題となっています。 「ニューイングランド・ジャ...

AIがITサービス管理をどう変えるか

SF映画に登場する人工知能(AI)ロボットは、通常、非常に賢く器用です。 [[276115]]人工知...

最近、ソラは子供たちの間でパニックを引き起こしています!

昨晩、娘がぼんやりしてリビングルームに立っていたので、私は彼女に尋ねました。「何をしているの?」彼女...

ドローンは将来のスマートシティで重要な役割を果たすだろう

「スマートシティ」という概念は何十年も前から存在していたが、その最新版では、住民の生活を向上させるた...

Llama-2+Mistral+MPT=? 複数の異種大規模モデルの融合が驚くべき結果を示す

LLaMA や Mistral などの大規模言語モデルの成功により、大手企業やスタートアップ企業は独...

機械学習が自閉症の「非コード変異」の秘密を解明

新たな研究によると、遺伝子間の自然発生的な突然変異は、生まれつきの遺伝子と同じくらい自閉症において重...

1つの命令を使用してGPT-3.5またはLlama 2を微調整する方法

ChatGPT や Llama 2 などの大規模言語モデル (LLM) は、さまざまなタスクでの汎用...

...

...

...