web-dev-qa-db-ja.com

対称暗号化を使用しないのはなぜですか?

非常にシンプルなもの:ほとんどの人は、ほとんどの場合、すでに知っている人とコミュニケーションをとります。アリスとボブもおそらく物理的に接触しています。はい、内部告発者が初めてジャーナリストに連絡したい場合がありますが、それはほとんどの人にとって問題の状況ではありません。

したがって、対称暗号化は非対称よりも適切でシンプルです。AliceとBobは4つのキーではなく1つのキーを使用します。しかし、秘密鍵をどのように共有しますか?あなたは彼らに直接話し、電話でそれを読み、One Time SecretまたはDiffie-Hellmanを使用します。

私は何かを見逃しましたか?または、暗号化(転送中のものを保護するため)は本当に簡単ですか?

5
Peter

1000人と話し、事前共有対称鍵を使用する場合、1000個の秘密鍵を覚えておく必要があります。秘密鍵の保管は困難な場合があります。非対称暗号化では、公開鍵のみを覚えておけばよいだけです。公開鍵は公開されているので簡単です。公開鍵は、どこからでも公開され、誰でも見ることができるため、「記憶」することができます。

さらに、人と話すよりも機械と話すことが多い。特に、 "https://" Webサイトにアクセスするたびに。正確には、電話でserverを使用してキーをどのように読み取りますか?それは機械であり、あなたが認識するであろう声はありません。

32
Thomas Pornin

私はあなたがこれまで話したことがない誰かに連絡することの価値を過小評価していると思います、そしてあなたは公開鍵システムの複雑さを過大評価していると思います。

対称暗号化を使用して新しい人に連絡したいときはいつでも、「[共有キー]を直接教えて、電話で読んで、ワンタイムシークレットを使用してください」などにする必要があります。オンラインで連絡する前に、電話または直接連絡してください。これは、暗号化された通信の効用に深刻な影響を与えているようです。公開鍵暗号の場合、鍵は公開リポジトリー(または、より良いのはmanyオンライン・リポジトリー)でオンラインで公開できるため、この欠点がなくなります。 (同様に、公衆電話帳を作成したり、電話番号を友人に伝えたりすることが不可能な世界を考えてください。誰かに電話をかけるには、まず直接会って、個人の電話帳に追加する必要があります。)

公開鍵暗号を使用する場合、鍵を個人IDにリンクするために、帯域外通信(たとえば、鍵署名者)が必要ですが、主な利点は、信頼。アリスがボブにメッセージを送りたい場合は、ボブと直接会ったことのある何十人か他の人の仕事を調べることができます。メールを送信する前に彼女が電話でボブに電話する必要はありません。彼女は彼の公開鍵にアクセスでき、ボブに対して彼女が見つけた_{ key, identity }_ペアリングの有効性の多くの公開暗号証明書にアクセスできるからです。 (うまくいけば、これらの証明書の一部は、彼女が信頼する人、または彼女が信頼する人から信頼される人からのものです。)

あなたはそれを言う:

したがって、対称暗号化は...非対称よりも単純です。AliceとBobの場合、4つのキーではなく1つのキーです。

ただし、実際のキーの数は厳密には関係ありません。代わりに、各当事者に必要なキーの数を考慮する必要があります。公開鍵暗号の各当事者は、管理する必要があります

  1. 自分の秘密鍵
  2. 独自の公開鍵、および
  3. 連絡したい人ごとに1つの公開鍵。

互いに通信するn人がいるとします。想像上の対称システムでは、各当事者が保持する鍵の数は_n-1_(他の人ごとに1つの鍵)です。非対称システムでは、各当事者が保持する鍵の数は_(n-1)+2 => n+1_(お互いに1つの鍵と自分の鍵ペア)です。多数の参加者nを想定すると、それはまったく大きな違いではありません。 (償却期間では、どちらもO(n)です。)

25
apsillers

非対称暗号化が解決する問題は、メッセージに署名/暗号化できるユーザーとできないユーザーを制御できることです。

対称鍵があると仮定します[〜#〜] k [〜#〜]。アリス、ボブ、イブはこのキーを共有します[〜#〜] k [〜#〜]すべてを共有できるようにします暗号化されたメッセージを交換します。ただし、イブは[〜#〜] k [〜#〜]のコピーを(悪意のあるマロリーに)与えます)誰にも言わずに。これでネットワーク全体が危険にさらされ、Malloryは他のメンバーと同じようにメッセージを送受信できます。

代わりに、アリス、ボブ、イブがそれぞれ独自の秘密鍵を持っていた場合[〜#〜] a [〜#〜] =、[〜#〜] b [〜#〜]および[〜#〜] e [〜#〜]それぞれ(公開キーを使用A +B +およびE +)、マロリーが[〜#〜] e [〜#〜]、彼女ができることは、Eve宛のメッセージを読んで、Eveが暗号化したように見えるメッセージを送信することだけです。私たちは、イブがネットワーク全体を危険にさらした状況から、イブの悪い選択が彼女への/からのメッセージにのみ影響を与える状況に行きます。

すべての人を完全に信頼できれば、対称暗号化で十分です。ただし、all人を完全に信頼できる場合は、プレーンテキストを送信できます。 ;)

12
Ryan Kennedy

まず、暗号化は誰でも使用できる方法で行われますが、秘密鍵/公開鍵方式の利点が必要ないという理由だけで、他の人にとってはこのようなものであるとは限りません。強力な監視が行われている国の人を想像してみてください-彼は安全な方法で対称鍵を取得することはできませんが、公開鍵の取得は誰にでも許可されているので問題ありません。

非対称暗号化のもう1つの大きな利点は、(ほとんどの場合)独自のテキストにさらに署名できるため、メッセージが本当に自分からのものであり、インターネット経由で変更されていないことを証明できることです。

追加情報

Webサービス(onetimesecretなど)を使用することは決して良い考えではありません。データで何が起こっているのか本当にわからない。本当に安全かどうかわからない。機関があなたの「秘密」を見たいと思っていれば、それほど問題はないだろう。

4
Tokk

非対称暗号化ベースのシステムを使用する場合、あなたはほぼ対称暗号化を使用しています! (もちろん必須ではありませんが、Symmetric暗号化がなければ、低速で安全性が低いため(...).

==>非対称部分はjust対称鍵の交換に使用されます!

したがって、鍵の交換に問題がない場合:

  • 1人あたり/コンピュータ(そして、その人が彼女のふりをしている人であり、あなたがそれを行う方法が安全であると信頼している...など、すでに説明したもの)
  • 数百ランダム文字の長いキー-> 過度に重要(簡単にブルートフォース可能なキーを使用することはありません) 、ね?)
  • 異なるキーeach時間->非常に重要...(あなたは決して知らない;)

次に、それらが問題でない場合は、確かに、対称暗号化のみを使用することはまったく同じです...(そしてが問題である場合問題がある場合は、答えがあります「なぜAsymetricを使用しているのですか?」;)

編集:実際には正確ではありません(コメントで言及されているように)。たとえば、アリスとボブの間の会話の場合、誰がメッセージを書いたか(法廷で)(アリスとボブのどちらだったか)の証拠はありません。

2
Nabodix

いくつかのことが、あなたが主題を深く理解していないことを明らかにします。まず第一に、あなたが言及したJavaScriptライブラリは、非対称暗号化であるRSAを実装しています。 Diffie-Hellmanは、非対称暗号化を使用して秘密鍵を共有する鍵共有方式であり、秘密鍵は対称暗号化に使用されます。あなたはこれらの提案のいずれかで非対称暗号化を避けていません。

一般的に言って、非対称暗号化は、ユーザーとしてのメッセージの考え方とは異なり、「メッセージ」には適していません。まず第一に、それは厳密にサイズ制限されています。対称暗号が任意の長さのメッセージを許可する暗号化スキームで許可されているサイズを超えてメッセージを安全に送信することはできません。通常、IDを確認する方法として、および新しい連絡先との鍵交換の手段として非対称暗号化を使用します。これらの役割には、対称暗号化よりもはるかに適しています。

最終的に、完全に機能する安全な通信システムでは、対称暗号化と非対称暗号化を組み合わせて使用​​します。ここでの問題は [〜#〜] pgp [〜#〜] のようなシステムについての最小限の理解によって引き起こされ、電子メール通信を保護するために非対称暗号化が組み込まれていることを前提としています。しかし、ウィキペディアのページの図をよく見ると、メールメッセージの対称的な暗号化/復号化に使用される秘密キーの暗号化には、公開キー暗号のみが使用されていることがわかります。

2
Jason

メッセージ自体は対称キー暗号化で保護されますが、キーは非対称暗号化を使用して共有されます。引用したJavascriptライブラリはRSAを実装しています。これは、DHと同様に、メッセージまたはセッションを保護するための単一の共有キーを確立するために使用される非対称キー暗号化アルゴリズムです。

非対称鍵暗号化が重要な理由は次のとおりです。

1:安全に話す前に、アウトオブバンドで話す必要はない
1a:毎日アクセスする数百または数千のWebドメインについて考えて、それぞれに電話をかけ(海外の長距離通話料金が適用されます)、数字と文字の長い文字列を読み取らなければならないと想像してください。文字起こししないで
2:キーが危険にさらされている場合は、そのキーにアクセスできる人に電話して、新しいキーを読み取らせる必要があります
3:誰が私を保証してくれますか?私が合法であることをどうやって知っていますか? PKIを使用すると、信頼の階層ができます。誰かが私は私であると主張し、私は悪意がないと言い、それに対する彼らの評判を賭けていると言います
4:送信中にメッセージが変更されていないことをどのように証明しますか?それを証明する方法で署名することはできません
5:私が100万人の顧客を抱えるWebサイトである場合、私は[〜#〜] really [〜#〜] 100万の秘密鍵を保存および追跡しますか?私とのやり取りが匿名の場合はどうなりますか?使用する秘密鍵を決定するにはどうすればよいですか?
6:おい、暗号は簡単だと思い込まないでください。 RSAとDHとECDHは、本当に難しいために生まれました。

そして、私の口調で気分を害する人のために、私は休暇中であり、気にしない

1
DTK

他の回答では、さまざまな暗号化アプローチに価値がある理由の重要な詳細がすでにカバーされていますが、最終的には、次の質問に対する回答が求められます。

「対称暗号化を使用しないのはなぜですか(既知の関係者とのメールの場合)?」

ワンサイズがすべてに合うわけではないということです。暗号化方法、暗号、アルゴリズムの選択はすべて、保護する脅威モデルによって異なります。対称暗号化は、それが行うことには非常に役立ちますが、それを誤用すると、提供できる保護が無効になります。

なぜアリスはボブに情報を暗号化するのですか?彼女はそれを読みたくないのですか? (守秘義務)彼女はそれを送ったのが本人であることを証明したいですか? (信頼性)のみボブがそれを読むことができるか、またはボブが他の誰かにキーを渡しても大丈夫ですか?保管中のデータを保管するためのボブのマシンの管理者はどうですか?

0
JesseM

forward secrecyというプロパティがありません。

プライベートシステムでは、アリスと鍵を共有します。アリスがシュタージに襲撃され、鍵を持っているコンピューターを押収したとします。その後、そのキーを使用して、これまでに交換したすべてのメッセージを復号化できます。

公開鍵システムでは、アリスに鍵を与えることができます。これにより、彼女は私以外の誰も読めない暗号化されたメッセージを作成できます。 アリスを含む、そしてアリスのコンピュータを奪った者。通常、これにはセッションごとの対称鍵が含まれ、これは "perfect forward secrecy"と呼ばれます。

0
pjc50

アリスが対称的に暗号化されたメッセージをボブに送信し、ボブがキーを漏らした場合、ボブがアリスに送信するすべてのメッセージが第三者によって盗聴される可能性があります。

キーが非対称である場合、ボブがアリスのキーの事前暗号化をまだ書いている間にボブを覗き見することが唯一の希望です。もちろん、送信するすべての平文を故意に漏らすこともできますが、悪意がなく、誤ってアリスの鍵を漏らしただけ(または盗まれたので知らない場合)の場合、非対称は問題を無効にします。秘密鍵の漏洩は非常に悪いです。公開鍵の漏洩-誰が気にする?

誰もあなたの公開鍵が漏洩することを気にかけないので、あなた自身もそれを漏洩するかもしれません。パブリックサーバーからネット全体にブロードキャストすることにより、十分に漏洩した場合は、誰もがすでにあなたのキーを持っている(または取得できる)と想定することもできます。これで、アリスの他の問題が解決されました-そもそもボブの鍵を取得する方法。

0
Superbest