web-dev-qa-db-ja.com

ワンタイムパッドの暗号化は解読不可能であるため、適切に使用するのが最善と言えますか?

現在、ワンタイムパッドの暗号化について読んでいます。質問があります。彼らは、OTP暗号化は解読不可能であり、これは数学的に証明できると言います。これは、使用されるキーが本当にランダムであり、一度だけ使用されるという条件で提供されますよね?これら2つの条件を強制するためにシステム全体(ソフトウェアまたはハードウェア、あるいは両方の組み合わせ)が付属している場合はどうなりますか?最良で理想的な暗号化ソリューションはありますか?

たとえば、情報を交換しようとする2つの側が常にオンラインになっているサーバーに接続することでキーを取得しているとします。サーバーは、生成されたキーがランダムであることを確認し、キーが二度と使用されないようにします。双方のユーザーは、インターネット接続と情報交換のメカニズムさえあれば十分です。情報は、サーバーによってランダムに生成されたワンタイムパッドキーを使用して暗号化され、インターネット経由で移動します。

ここで何か意味がありますか?私はワンタイムパッドについて読み始めたばかりで、これについて疑問に思い始めました。本当にランダムな数字やこのようなものを本当に思い付くことができないので、ワンタイムパッドはまったく実用的ではないことを教えてくれる多くのウェブサイトがあります。

添加:

これらの人たちは、キー配布に何か特別なものを提供しますか?彼らは、長期にわたってOTPの実装を完成させたと言います。

http://www.mils.com/en/technology/unbreakable-encryption/#1

30
Saoud

鍵の配布が問題です。

このシナリオでは、サーバーを使用して、ワンタイムパッドをユーザーに伝えます。 that通信はどのように保護されますか?ワンタイムパッドではなく、必要ありません。それがAES 128を使用したSSLだとしましょう。そうすると、暗号システムはAES 128を使用したSSLと同じくらい安全です。非常に安全ですが、ワンタイムパッドほど安全ではありません。

あなたが参照するmilsの人たちは、1回限りのキーストリームをロードする(そしてそれを使用できる)物理デバイスを提供しているようです。繰り返しになりますが、鍵の配布は問題です。 2つのハードドライブを購入し、テラバイトのキーストリームをロードして、1つをバディに送信できます。 USPSを信頼していますか?フェデックス?宅配便?外交ポーチ?これらすべてが危険にさらされる可能性があります。それらを送信する唯一の完全に暗号化された方法は、1回限りの暗号化でそれらを暗号化することです...がらくた、それは再び起こりました。

84
gowenfawr

いいえ、セキュリティコンテキストにおける「最高」の意味を誤解しているためです。世論に反して、「最も安全」と「最高」は同義語ではなく、セキュリティは完全にユーザビリティとセキュリティのバランスをとることです。それはリスク管理についてです。

地球上で最も安全なドライブは、コンクリートの山のロックされたボックス内のファラデーケージの海底にあるDevNull(ビットバケット)に書き込みを行うことです。絶対に誰からもデータを取得することは絶対にありませんが、正当なユーザーがデータを取得することは決してありません。

ワンタイムパッドは、正しく使用すれば壊れることはあり得ないという贅沢はありますが、使いにくいものです。それらが「最良の」オプションである場合、ほとんどすべてがワンタイムパッド(これは本当に古代の概念です)のアイデアの後に生まれたため、今日私たちが知っている他のシステムは存在しません。

むしろ、最良のオプションは、許容レベルのユーザビリティを維持しながら、リスクを許容レベルに軽減するオプションです。多くの場合、最善のセキュリティはセキュリティがないことです。たとえば、私のcookieレシピを知っていてもかまいません。したがって、それらを保護するために何らかの努力を払うと、不必要にユーザビリティが低下します。調理レシピが紛失しても気にしないので、複数のコピーを保存してどこかにバックアップしたいかもしれませんが、時間の無駄になるので、それらをアクセス制御することはしません。

同じ考え方のプロセスは、私の高度なセキュリティ状況にも私の料理レシピに当てはまります。それらが私に適用されるときにリスクを分析し(オレオは彼らのレシピを保護することにもっと気を使うかもしれません)、それから私の最善のオプションは何かを決定することに帰着します。それはすべての人とすべての状況で異なり、普遍的な答えはありません。

31
AJ Henderson

いいえ。ワンタイムパッドは、安全なキー配布の問題に悩まされているだけでなく、Mikeとgowenfawrが回答で述べています。

次の場合でもキーを安全に配布するメカニズムがあった場合、ワンタイムパッド(それ自体)には整合性を保証するメカニズムがありません。暗号文とは、私たちが「可鍛性」と呼んでいるものです。これは、攻撃者が操作して、平文メッセージを予測可能で検出不可能な方法で変更できることを意味します。

So、ワンタイムパッドは情報理論の完全な秘密を提供しますが、それ自体では安全な暗号ではなく、現実の世界では、適度なサイズの鍵を備えた認証済みの暗号を簡単に使用できます。 AES-CTR-HMACまたはAES-GCMが明らかに優れています。

29
Xander

Cryptographic Primitiveを比較してCryptographic systemと比較しようとしています。これはリンゴとオレンジを本当に比較しています。

Cryptographic Primitivesを組み合わせてCryptographic systemを作成します。システムのセキュリティを評価できるのは、システムが動作するユースケースと環境を理解した後でのみです。攻撃者、ユーザー、ネットワーク上のプロトコル、ストレージメカニズム、妥協手段、可用性要件、ユーザー数、ノード、間のネットワーク、依存サービスなど.

あなたの質問に:

したがって、One Time Padプリミティブのコンテキスト外では、システムはおそらく以下の要件をサポートするために他のテクニック/プリミティブを導入する必要があります。

  • メッセージの整合性(チェックサム、署名)
  • DOSを回避するために同期を確認してください。 (攻撃者は、パーティ間の通信を非同期にするために偽のメッセージを導入する可能性があります)。
  • Man in the Middleが送信中に1ビットを変更しないようにする(1ビットを反転することで部分的に既知の平文の意味を変更する可能性があります。つまり、「LaunchMissiles = 0」対「LaunchMissiles = 1」
  • リプレイ攻撃を停止します(「アタックアットドーン」は3日後にリプレイされます)

その他のオプション要件

  • 送信者の確認(署名)
  • 受信者の検証(証明書)

したがって、暗号化システムのセキュリティの評価は、それが明確に表現された後でのみ試行できます。

8
Andrew Russell

ワンタイムパッドの問題は、それを両方のパーティに配布することです。サーバーに配置して、両方がダウンロードできるようにすることはできません。これを行うための安全なチャネルがある場合、2人の当事者はその安全なチャネルを使用してとにかく通信できるからです。あなたはほとんど両方の当事者を物理的に一緒にする必要があり、これは明らかに非常に制限的です。

5
Mike Scott

すべての暗号化に関する永続的な問題はtrustです。メッセージを送信する相手があなたの味方であり、メッセージまたはキーを、それを持っているべきではない誰かに配信しないことを信頼する必要があります。あなたが使用している暗号化スキームを発明した人々がバックドアや事故の欠陥を含んでいないことを信頼する必要があります。 OTPでは、受信者との信頼の問題がありますが、受信者に自分でキーを物理的に提供できない場合は、キーを配信できるサードパーティエンティティに信頼を置く必要があります受信者。この問題は、今日の暗号化と認証に依然として存在しています。

私が潜在的なユーザーである場合、私は、キーを生成してネットワーク接続を介して送信するサードパーティを決して信頼しません。また、ユーザーが本当にランダムなキーを生成していることを確認したり、侵害されたりした場合に、それを保証する方法もありません。暗号化はその最悪の弱点と同じくらい強力であるため、OTPの適切な使用ではありません。インターネット経由でキーを送信している場合、実際のOTPが提供する利点をすべて失っており、AES-256を使用することもできます。

OTPは技術的には最高のトランスポート暗号化であると言っても安全だと思います。ワードはセキュリティを指す「最高」です。これは、ほとんどのユースケースで「最良」であることを意味するものではなく、OTPにはいくつかの重大な欠点があります。キーはどこかに保存する必要があり、これはキーが間違った手に渡ることを意味します。現代のブロック暗号は通常、人間が記憶できる短い鍵を持っているため、サードパーティがそれらを抽出することははるかに困難になります。また、適切なソフトウェアが与えられた場合、AESのようなものを適切に実装することは本当に困難です。

OTPのセキュリティ以上に信頼できるのは、人間の怠惰です。私たちは自然に最も簡単なことをするように動いており、これは歴史的に人々が彼らの通信チャネルのセキュリティを犠牲にするいくつかの本当に骨の折れる決定をすることを導きました。時々、怠惰な人間は、キーまたはコードブックがなくなり、新しいキーを生成して転送する手段がないと、キーを再利用することを決定します。この結果は、通信を完全に停止するよりもはるかに悪い場合があります。

最善を定義すると、答えは「はい」または「いいえ」になります。

5
user10800

主な問題は安全な鍵交換です!どういうわけか、常にオンラインのサーバーに接続でき、このサーバーと100%安全に通信できる場合は、そのサーバーを介してメッセージをリレーしてみませんか?

完全に有効なシナリオは次のとおりです。Personで誰かに会い、OTPを交換します。その後、OTPが続く限り、彼と安全に通信できます。メッセージの整合性を確保するには、Nランダムバイトをプレーンテキストに追加し、すべてをハッシュしてからOTPで暗号化します(通常、プレーンテキストを圧縮してから暗号化してから、サイズを小さくして情報密度を高めます)。これにより、認証と暗号化が同時に行われます。認証は本質的には、相手が自分だけが知ることができる秘密を知っていることを確認するだけなので。ただし、対称秘密鍵では、鍵はすでに2人だけが知っている秘密です。そのため、メッセージが共有秘密鍵で正常に復号化され、それでも完全性と認証よりも無傷(解凍+チェックハッシュ)である場合は、検証されています。

しかし、ブルートフォースアプローチに対してOTPを使用したい場合は、破壊するのが非常に困難な大きな対称暗号(AESなど)を使用することもできます。暗号の興味深い部分は、鍵交換です。安全に通信したい人と直接会うことなく、この暗号化/認証全体をどのように実行できますか?これが、非対称暗号化が存在する理由です。

つまり、OTPは既に十分に解決されている問題(対称暗号化)をかなり良好に解決しますが、非対称暗号化の理由である実際の問題はまったく解決しません!

0
Falco