暗号学のゴシップ パート1と2
暗号学のゴシップ パート1と2' (Gossip of Cryptography Parts 1 and 2)
このブログシリーズでは、非常にカジュアルなスタイルで暗号化と復号化の基礎を学びます。暗号学の起源から始まり、現代の技術について学んでいきます。
暗号化の中で重要なテクノロジーの一つは暗号学です。
暗号学は非常に一般的な技術であり、現在はどこでも使用されています。例えば、以下のようなソフトウェア:
- 自宅で使用するルーター。
- メッセージの送受信に使用するWhatsApp。
- HTTPSで開いているサイト。
- などなど…
今、暗号学は非常に一般的ですが、非常に複雑です。理解すること、実装すること、そして正しく使用することすらも非常に複雑です。
暗号学の必要性
これに答えるために、以下の質問に答えてみましょう:
- なぜ私たちは携帯電話にパスワードを設定するのでしょうか?
- なぜ外出時に家のドアを施錠し、鍵を持っていくのでしょうか?
これらと同じように、暗号学を使用する理由は送信者または受信者が正しい人物であり、正しい形式のデータしか見ることができないことを保証するためです。
それがどのように機能するかを理解するために、古代の方法であるシーザー暗号から始めましょう。
シーザー暗号
シーザー暗号は、平文の各文字をアルファベットを下にある一定の数の場所ずらす置換暗号の一種です。この単純な暗号化技術は、彼の役人たちに送られたメッセージを暗号化するために使用されたことから、ユリウス・シーザーにちなんで名付けられました。暗号化のプロセスは簡単です: シフト値(またはキーとも呼ばれる)が選択され、平文の各文字はその数だけアルファベットを下にずらされます。
例えば、シフト値が3の場合、AはDに置き換えられ、BはEに置き換えられます。
平文: Sahil
シフト(キー): 3
暗号文: Vdklo
メッセージを復号するには、シフト値を逆方向に使用します。
暗号文: Vdklo
シフト(キー): -3
平文: Sahil
なお、シーザー暗号は非常に簡単に解読できるため、重要な暗号化目的には使用しないでください。頻度分析などの簡単な方法で解読されることができます。
ここで、アルゴリズムは単純です: 文字Nを何度もシフトし、その文字で置き換え、このプロセスを続けて平文が暗号文に変換されるまで続けるのです。
シーザー暗号表は、シーザー暗号方式を使用してメッセージを手動で暗号化および復号化するために使用できるツールです。アルファベットのすべての文字と、選択したシフト値(またはキー)に基づいて暗号化されたまたは復号化された対応する文字を一覧表示する表です。
以下に、シフト(キー)値が3のシーザー暗号表の例を示します:
その他も同様に続きます…
シーザー暗号では、このシーザー暗号文を簡単に逆解読し、このアルゴリズムを使用して暗号化されたメッセージをデコードすることができます。パターンを特定することで簡単にキーを判断することができます。これは、読者に暗号学と暗号化復号の概念を理解させるための例でした。
私たちが話し合ったように、シーザー暗号は安全性が低く、それよりも安全なアルゴリズムが存在します。その名前はヴィジュネル暗号です。
このアルゴリズムは、シーザー暗号とほぼ同じですが、すべての単語を同じ数で回転させる代わりに、ここでは各文字を異なる数で回転させ、これらの数の組み合わせをキーと呼びます。
暗号化の例から始めましょう:
暗号化する平文 — SendHelp
キー — BULGE
以下の表から得られる暗号文。
今までに話したすべてのアルゴリズムは対称アルゴリズムです。つまり、メッセージの暗号化および復号化に同じキーが使用されます。
ここで、暗号化の世界には2つの要素があります: キーとアルゴリズムです。
さて、私たちの家のロックと鍵の地元の例を考えてみましょう。ロックや解錠のメカニズムは秘密に保つべきでしょうか、それとも鍵だけでしょうか?もしアルゴリズムが多すぎると、それらを維持し、メッセージを復号化するためのデータをすべてのアルゴリズムに渡すことは手間がかかり、維持できません。
すべての理由から、一部の人気のあるアルゴリズムが一般公開され、鍵の管理と鍵を共有する方法だけが私たちにとっての問題です。
今日では、AESがデータ保管時の暗号化に使用される最も人気のある安全なアルゴリズムであり、多くの人々がこのアルゴリズムを破るために努力しています。
次に、別の質問が出てきます:
同じプレーンテキストを同じキーで暗号化すると、同じ暗号文になるべきですか?
まあ、これに対する答えは「はい/いいえ」です。使用ケースとどれだけのセキュリティを求めるかによります。
暗号化では、同じ暗号文が毎回生成されます。これを収束暗号化と呼びます。
さて、これは初期化ベクトル(IV)に依存します。データを暗号化する際に同じIVを渡すと、暗号文は同じになります。
初期化ベクトル(IV)の定義 – 暗号化における初期化ベクトル(IV)は、暗号化アルゴリズムの初期状態を初期化するために使用されるランダムまたは準ランダムな値です。IVの目的は、同じ暗号化キーで暗号化された同じ平文が、毎回異なる暗号文になることを保証することです。この特性は、同じキーで複数のデータを暗号化する場合に特に重要です。
さて、収束暗号化が必要な場合はどうなるでしょうか:
データベース内で暗号化された名前を検索したい場合など、多くの使用ケースがあります。以下の2つの方法があります:
- データベースに格納されているすべての名前を復号化し、メモリに読み込んで検索する。
- 検索のために入力された名前を暗号化し、その暗号文をSQLクエリで検索する。
オプション2の方がより最適で高速で、リソースを少なく消費します。しかし、これを実装するには収束暗号化アルゴリズムが必要です。
ここまで、以下の重要な用語について聞いてきました:
- 暗号化
- アルゴリズム
- 平文
- 鍵
- 暗号文
- 対称暗号化
- 収束暗号化
- 初期化ベクトル
これらは、暗号化と復号化の世界中で一般的に使用される一般的な用語ですので、覚えておいてください。
次回は、ハッシング、非対称アルゴリズム、PKIインフラストラクチャ、封筒暗号化など、他のことについて話し合います。
- 次のパートにご期待ください…
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles