疑似乱数ジェネレータのワンタイムパッドの問題


7

私はクラスで暗号化を学び始め、キー(一様に合意された)がメッセージ自体と同じ長さであるワンタイムパッドに遭遇しました。次に、メッセージをビットに変換し、を実行して暗号テキストを取得します。これによりメッセージが暗号化され、メッセージを復号化するには、暗号ビットとキービットでを実行します。XORXOR

次に、より効率的なワンタイムパッドを作成するために、元のキーがビット長である(そしてメッセージと同じ長さである必要はない)疑似乱数ジェネレータを使用します。次に、キーをジェネレーターに入れて、疑似乱数を取得します。しかし、それは疑似ランダムなので、送信者と受信者は異なるキーを取得しませんか?次に、同じ鍵がない場合、受信者はどのようにしてメッセージを復号化できますか?n


コアの問題がPRNGに関するものである場合は、キーをシードとして使用できます(OTPにはあまり適していません)。両方のパーティが同じシードを(同じジェネレータに対して)使用する場合、生成されるシーケンスは同じです。
邪悪な

両方の当事者が同じ鍵を使用します。彼らはPRNGを使用して、ランダムに見える非常に長い共通の文字列に拡張します。これは、1回限りのパッドとして機能します。
Yuval Filmus

PRNGの仕組みを知っていますか?
user253751 2018年

11
将来の質問のヒントとして、暗号化に特化したStack交換サイト全体があります。
パウロEbermann

回答:


17

あなたは鍵が何であるかを誤解しているようです。

対称暗号化のコンテキストでは、鍵は共有秘密です。これは、送信者と受信者の両方が知っているものです。OTPの場合、キーはパッド全体であり、2人がOTPを使用してメッセージを暗号化する場合は、事前に十分な長さのパッドがあることを確認する必要があります。

提案された「効率的な」OTPの鍵はPRNGシードです。両方の当事者が事前にそれを知っていることを確認する必要があります。次に、どちらも同じシードでPRNGを初期化し、それぞれに同じ「ランダムな」数のシーケンスを生成することが保証されています。

ただし、これはOTPの大幅かつ大幅な弱体化であることに注意してください。パッドが秘密にされている限り、実際のOTPは完全なセキュリティを提供します。17文字のメッセージを傍受した場合

nsmklmfmwnfmngner

あなたはそれがであるかどうかについての知識がありません

maketrumpthepotus

1つのパッドでエンコードされている、または

ensureclintonwins

別のパッドでエンコードされています。または

kittensarethebest

または文字通り何か他のもの。ただし、疑似ランダムパッドを使用すると、特定のパッドしか使用できないことになります(子猫のメッセージを「nsmklmfmwnfmngner」に暗号化するキーがまったくないため、除外することができます)。PRNGアルゴリズムを知っている人なら誰でも、キーを推測してメッセージを復号化しようとすることができます。パッド素材をキャプチャした人なら誰でも、PRNGのリバースエンジニアリングを開始できます。暗号化されたメッセージをキャプチャした人なら誰でも、同じことを試すことができます。

キーマテリアルがメッセージと同じ長さでない限り、これをOTPと呼ぶべきではありません。PRNGを使用するための提案は、単なる一般的なストリーム暗号です。


4
OTP 、安全な高帯域幅の通信チャネル(個人の連絡先など)があるシナリオで効果的で機能しますが、一時的なものであり、低帯域幅の通信を後で安全に送信したいということは、言及する価値があると思います。例:スパイの配備前に、ワンタイムパッドをスパイに渡します。パッドが続く限り、それを使用して簡単なメッセージを安全に送信できます。
ワイルドカード

@Wildcardでは、メッセージをMACと組み合わせて、送信中にメッセージが変更されないようにする必要があります。
パウロEbermann

8
「鍵となる資料がメッセージと同じ長さでない限り、それをOTPと呼ぶべきではありません。」決して再利用されません。したがって、ワンタイム。(PRNGで)もう1つは、btwです。単にストリーム暗号と呼ばれます。
JonasSchäfer18年

@JonasWielicki「もう1つは(PRNGで)ストリーム暗号と呼ばれるものです。」えっと、私はあなたが引用したものの後の文でそれを言った!
David Richerby

@DavidRicherbyハ。どうしてそれを逃したのか。
JonasSchäfer18年

11

次に、より効率的なワンタイムパッドを作成するために、疑似乱数ジェネレータを使用します

いいえ、いいえ、もう一度いいえ。私はこれがあなたが教えられていることを心配しています。 ワンタイムパッドの絶対的に基本的な概念と数学的に証明可能な完全な秘密の概念は、パッドの材料が真にランダムであるということです。また、一度も再利用することはできません。 どのような形式のアルゴリズムでも生成できません。乱数は、ダイススロー、電気的ノイズ、スプリットレーザービームでの光子干渉などの物理的なプロセスから発生する必要があります。何らかのアルゴリズム/コードでそれらを作成する場合、それはRC4またはAES構成のようなストリーム暗号です。

crypto.seでワンタイムパッドのタグ付き質問を閲覧します。それですべてがわかります。さらに重要なのは、ワンタイムパッドを改善または効率化する多くの試みを読むことです。どれほど魅力的に見えても、それらはすべてヘビ油です。


1
登録 「どのような形式のアルゴリズムでも生成できない」–技術的に言えば、エントロピーソースとして物理的なプロセスを使用しても、実際のキーは一般にアルゴリズムによって生成されます。 、それ以外の場合も完全に安全ではありません。ただ、そのアルゴリズムは、キーが持つよりも多くのランダムビットで開始する必要があります。
leftaroundabout

@leftaroundaboutもちろんあなたは正しい。ランダム性抽出器についての議論で、すでに曇っている水を濁らせたくありませんでした。
Paul Uszak

7

疑似ランダムジェネレーターは決定論的アルゴリズムであり、短いランダムシードが与えられると、特定の敵をだまして疑似ランダム文字列を返します(つまり、そのような敵はジェネレーターの出力を真にランダムな文字列から区別できなくなります)。ジェネレーターがコインをトスすることを許可すると、本当にランダムな出力を返すだけなので、すべてが興味をそそることに注意してください。

その場合、キーはシードにすることができ、受信者はメッセージを解読するためにを計算できます(は決定論的であるため、この計算は両方のパーティで同じ結果になります)。sG(s)G


1
コンピュータの多くの「乱数ジェネレータ」は、実際のランダム性と疑似ランダム性の混合を使用するため、この「短いキー」の疑似ワンタイムパッドでは機能せず、安全であることが証明されたリアルワンタイムパッドを作成することもできません。
パウロEbermann
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.