Cryptology Academy · レッスン

XOR暗号とワンタイムパッド

簡単なXOR暗号を構築し、その完全秘匿版ともいえる方式を学びます。

レッスン 2/413 ステップ

「XOR暗号とワンタイムパッド」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

XOR暗号は単純です: ciphertext = plaintext XOR key。鍵が真にランダムで一度しか使われない場合、ワンタイムパッドになります。これは破れないことが証明されている唯一の暗号です。

XOR暗号の基礎

key = bytes([0x5A, 0xF2, 0x3C, 0x11]) plaintext = bytes([0x48, 0x65, 0x6C, 0x6C]) # 'Hell' ciphertext = bytes(p^k for p,k in zip(plaintext,key)) # Result: 0x12 0x97 0x50 0x7D

XORの自己逆演算の性質

復号は暗号化と同じです。 plain = cipher XOR key 証明: (P XOR K) XOR K = P XOR (K XOR K) = P XOR 0 = P このため、XOR暗号は自明な対称暗号になります。

ワンタイムパッドの概念

ワンタイムパッド(OTP)は、メッセージと同じ長さのランダムな鍵を、ちょうど一度だけ使用します。理論上は解読不可能です。すべての暗号文は、考えられるすべての平文に同じ確率で復号できます。

Shannonの完全秘匿性の証明

Claude Shannonは1949年に、暗号が完全秘匿性を持つための必要十分条件は、鍵がランダムで、メッセージ以上の長さがあり、最大でも一度しか使われないことだと証明しました。OTPは、その条件を満たす唯一の実用的な暗号です。

OTPの実用上の制約

鍵はメッセージと同じ長さでなければなりません。鍵は安全に配布する必要があります。また、決して再利用できません。これらの制約により、OTPはほとんどの用途で実用的ではありません。

鍵再利用攻撃: Many-Time Pad

C1 = P1 XOR KかつC2 = P2 XOR Kの場合、C1 XOR C2 = P1 XOR P2となります。鍵が相殺されるのです。2つの暗号文を持つ攻撃者はP1 XOR P2を得られ、そこからパターンが漏えいします。

クリブドラッグ攻撃

攻撃者がP1の一部(「 the 」のような「クリブ」)を推測できる場合、各位置でP1 XOR P2とXORすることで、対応するP2のテキストが明らかになります。これを繰り返すことで、完全な平文が徐々に復元されます。

実際の鍵再利用による失敗

Venonaプロジェクトは、戦時下の圧力によってKGBの工作員がパッドを再利用したため、ソ連のワンタイムパッド通信を数千件復号しました。鍵の再利用によって、完全性が証明されていた暗号が破られたのです。

ストリーム暗号におけるXOR

現代のストリーム暗号(ChaCha20、RC4)は、擬似乱数のキーストリームを生成し、それを平文とXORします。短い鍵をCSPRNGで拡張することで、ワンタイムパッドを近似します。

XOR暗号のPythonデモ

import os def otp_encrypt(plaintext: bytes) -> tuple: key = os.urandom(len(plaintext)) ciphertext = bytes(p^k for p,k in zip(plaintext,key)) return ciphertext, key ciphertext, key = otp_encrypt(b'Secret!')

確認問題

ワンタイムパッドの鍵を再利用すると、なぜ壊滅的に安全でなくなるのでしょうか?

まとめ

XORとワンタイムパッドは暗号学の基礎です。次は、単純なXOR方式が実際にはなぜ破綻するのか、また鍵の再利用を悪用する攻撃について学びます。
無料で開始

AI チューターと学ぶ Cryptology Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
67
レッスン
261

よくある質問

「XOR暗号とワンタイムパッド」レッスンは無料ですか?

はい。「XOR暗号とワンタイムパッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「XOR暗号とワンタイムパッド」で何を学びますか?

簡単なXOR暗号を構築し、その完全秘匿版ともいえる方式を学びます。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「XOR暗号とワンタイムパッド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ビット演算の復習
  2. XOR暗号とワンタイムパッド
  3. XORだけでは安全でない理由
  4. AESとストリーム暗号におけるXOR
← Cryptology Academyに戻る