Me -> Node A -> Node B -> Node C -> destination
Torのドキュメントには、常にonly出口ノードCがプレーンテキストデータを表示できると記載されています。 Node Cと直接話さなくても、これはどのように可能ですか?
プレーンテキストデータがあり、暗号化してNode Aに送信したい場合は、通常、Diffie-Hellman鍵交換を行い、データを送信します。ただし、このスキームでは、 Node Aはデータを復号化できました。
Node Cが何らかの形で公開鍵を私と共有していた場合、Node BまたはNode A MITM the key ?
TorはPKIをどのように正確に管理していますか?データの暗号化にはどのキーが使用されますか?
Torは Onion routing と呼ばれるルーティングメソッドを使用します。タマネギのように、各メッセージ(タマネギのコア)は暗号化の層で覆われています。 画像属性
メッセージは、デバイスを離れる前に数回暗号化されます。 Node AはレイヤーAのみを復号化(ピール)でき、その下で次のノードのアドレスが表示されます。パケットが次のノードに到達すると、レイヤーBのみを復号(ピール)できますなど。各レイヤーでは、それぞれのノードの公開鍵を使用するため、そのノードのみが独自の秘密鍵でレイヤーを復号化できます。
メッセージが出口ノードに到達すると、すべてのレイヤーが復号化され、メッセージはプレーンテキストになります(SSLでサーバーと通信している場合は暗号化することもできます)。
TORは、オニオンルーティングの原理を使用しています。 3つのTORノードA、B、Cが関与し(クライアントによってランダムに選択)、メッセージがmであるとします。これらのノードの対応する公開鍵をPa、Pb、Pcと想定します。
メッセージは、出口ノード(Pc)の公開鍵で始まり、Pbで終わり、最後にPa(オニオンルーティング)でクライアントによって繰り返し暗号化されます。
Data received by node A: Pa(Pb(Pc(m)))
Data received by node B: Pb(Pc(m))
Data received by node C: Pc(m)
データは、対応する秘密鍵を使用して、各ノードで復号化されます。復号化後、各ノードは、残りのデータの転送先に関するプレーンテキスト情報を取得します。これは単一のノードがパス全体を認識していないであることを確認します。各ノードは、前のノードと次のノードのみを認識しています。
pSコミュニティブログにTORに関する非常に優れた記事がありますが、どういうわけかそれを見つけることができません。誰かがリンクを見つけたら、回答に追加してください。
ここには2つの異なる質問があります。
1-データをどのように送信し、ノードが暗号化の各層を復号化するか?
2-出口ノードからデータをどのように取得しますか?
最初の質問について、宛先にデータを送信するための公開鍵暗号化はありませんが、共有シークレットです。この前に、 D-H について十分に理解しておく必要があります。
D-Hステップ:
- アリスとボブは、有限循環グループGとGの生成要素gに同意します(これは通常、残りのプロトコルのかなり前に行われます。gはすべての攻撃者に知られていると想定されています)。グループGを乗法的に記述します。
- アリスはランダムな自然数aを選び、g ^ aをボブに送信します。
- ボブはランダムな自然数bを選び、g ^ bをアリスに送信します。
- アリスは(g ^ b)^ aを計算します。
- ボブは(g ^ a)^ bを計算します。
これらの手順の後、アリスとボブは共有秘密を持ち、誰もこの共有秘密について知りません。
Tor Steps:
これは回路が完了するまで続行されます。OPは(SS1、SS2、...)のノードを介して宛先への要求を送信できます。最後の送信リクエストは次のようになります:
OP to Node1 => encryptSS1(send to Node2、sendSS2(send to destination、 "hello server"))
そして、2番目の質問を受け取る応答については、このようにする必要があります:
このページの画像をご覧ください。
オニオンルーティング-pikneek