2つのクライアントがメールボックスを通してエンドツーエンドでやり取り
計測環境では、2つのクライアントが、チェーンの最後のリレーにあるメールボックスを通して、kk ハンドシェイクとハッシュラチェットによるエンドツーエンドの層のもとでやり取りするようになりました。メールボックスが持つのは自分では読めないレコードだけで、オフラインの否認可能性は偽造によって示しています。
これまでは、チェーンの最後のリレーがメッセージを読み、それを送り返していました。いまは2つの クライアントが互いにやり取りし、最後のリレーが持つのは、自分では読めないものだけです。 研究のページの数値は、これまでと同じ予備的な計測のままです。それはエコーの トポロジーで計測したもので、2つのクライアントの会話は含まれません。
計測環境の2つのクライアント
計測環境では、5つのリレーと、-peer モードの2つのクライアント client-a と client-b が
動きます。どちらも relay-5 のメールボックスに自分のキューを持ちます。client-a は 2 s ごとに
メッセージを送り、client-b はそれぞれに返信します。クライアントは残りの4つのリレーから入口を
無作為に選び、一覧にあるすべてのリレーのバンドルを検証して、検証済みのものから中間のリレーを
選びます。チェーンはメールボックスで終わります。
各クライアントは、起動時に自分の連絡先カードのハッシュだけをログに出します。カードそのもの、 つまりスイート、メールボックスのアドレス、キュー、静的鍵は、ループバックの管理用ポートで 渡されます。スクリプトがポート転送でそれぞれのカードを受け取り、同じコンテナのログにある ハッシュと照合して、もう一方のクライアントに渡します。受け取ったクライアントは、プロセスが 続くあいだそれを固定します。固定のあとで別のカードを示されたクライアントは、それを拒否し、 運営者が再起動するまで止まります。
kk ハンドシェイクとハッシュラチェット
2つのクライアントは、やり取りを始める前からカードで互いの静的鍵を知っているので、 ハンドシェイクは kk パターンに従います。レコードは2つで、それぞれ新しい一時鍵を持ち、相手の鍵 との鍵合意を混ぜ込みます。そのあと、方向ごとに鍵のチェーンができます。各段階で1つのレコードの 鍵と次のチェーン鍵を導出し、前のチェーン鍵を消去するため、いま取られた鍵では過去のレコードは 開けません。どの操作も、システムの他の部分と同じ暗号インターフェースを通り、両方のスイートで 動きます。
リレーはこの層を開けません。リレーにとって、レコードはセルの中身の一部にすぎません。 メールボックスやリレーが書き換えたレコードは受け取る側で開かず、破棄されます。コピーや遅れて 届いたレコードは、セッションを何も変えません。
メールボックス
最後のリレーはメールボックスとして動きます。レコードのキューをメモリだけに保持し、どの要求にも 一定の長さの応答を返します。クライアントは毎回の送信時刻に、自分のキューからレコードを取り出す 要求を送ります。標準で有効なカバーの put では、その要求が相手のキューにもレコードを put し、 送るメッセージがなければ空のレコードを置きます。メールボックスは、空のレコードと本物の レコードを区別できません。
それでもメールボックスにわかること:
- キューを通して結び付いた、会話の両方のチェーン。チェーンごとに、暗号化されていない取り出し権限、put 先の キュー、それぞれの要求の時刻、put の結果、レコードの種類と番号、同じレコードのコピー。
- ハンドシェイクの瞬間。セッションの前の put は、ハンドシェイクのレコードだけを運ぶためです。
- 両方の入口の回線を見る観測者と組めば、誰と誰が話しているか、かもしれません。それがどこまで うまくいくかは、まだ計測していません。
クライアントの出口は自分のメールボックスに固定されているため、不正なメールボックスは、その クライアントたちのすべての会話に加わります。
オフラインの否認可能性を偽造で示す
ハンドシェイクは鍵合意だけでできていて、クライアントは署名鍵を持ちません。受信者は送り手を 確信できますが、トランスクリプトのすべての値を自分の鍵で計算できるので、同じメッセージを含み、 本物と同じ分布のトランスクリプトを自分で作れます。トランスクリプトは、受信者の秘密鍵と合わせ ても、送信者が参加したことを第三者に証明しません。
ラボでは、本番のセッションのコードでこれを示します。cmd/lab -set deny は、両方のスイートで、
受信者を両方の役割に置いて実行します。受信者が会話を偽造し、本物と偽造のトランスクリプトは同じ
検査に通り、構造も同じです。受信者の鍵の代わりに新しい鍵で作った偽造は、最初のレコードで検査に
落ちます。暗号プロバイダを包む仕組みは、本物のセッションでは送信者の秘密鍵を見ますが、偽造でも
検査でもそれを見ません。これは具体的な鍵での実演で、計測ではありません。
この主張は、証人のいるトランスクリプトには及びません。受信者と共謀するメールボックスや送信者の 回線の観測者は、誰が暗号文を送ったかを独立に記録しています。セッション中に受信者と組んで動く 判定者に対するオンラインの否認可能性と、メタデータの否認可能性は主張しません。
上限のある作り直し
-peer モードのクライアントは、チェーンが終わっても終了しません。同じ入口を通して同じチェーンを
もう一度確立し、そのチェーンを確立できないときだけ新しい中間のリレーを選びます。選び直しは
プロセスごとに最大2回です。そのため、チェーンを閉じ続ける不正な入口でも、中間のリレーを
選ばせられるのは最初の1回と選び直しの2回、最大3回で、それ以上は会話を止めることしかできません。
それはもともとできることです。この上限はプロセスごとです。10分間チェーンを作れないクライアント
は終了し、新しいプロセスは新しい身元になるため、紹介をやり直す必要があります。
どう確かめたか
- 両方のスイートでの kk ハンドシェイクのゴールデンベクトル。
- エンドツーエンドの層のテスト:書き換えたレコードや別の相手のレコードは開かず、コピーと遅れた レコードは破棄され、どれもセッションを変えません。
- メールボックスを出口に置いたリレー越しの会話のテストと、メールボックスを通してやり取りする 2つのクライアントのプロセス。
- kind の計測環境で、
relay-5を通るclient-aとclient-bのあいだの往復を確かめ、別の鍵の カードと、そのあとの以前のカードが、クライアントを再起動せずに拒否されることを確かめました。
まだできていないこと
- カバーの put では、たまった分が減りません。ある側が取り出さなかった回ごとに、相手のレコードが キューに1つ増え、あとのレコードはキューの深さまで長く待ちます (#148)。
- 取り出しの応答の中で失われたレコードは、もう一度 put されません。それがハンドシェイクのあとの 開始側の最初のレコードなら、応答側は開始側の次のレコードが開くまで本物のメッセージを送らず、 失われたレコードを求める手段もありません (#149)。
- 侵害からの回復はありません。ラチェットにディフィー・ヘルマンの段階がないためです (#136)。
- メールボックスにはレコードの種類、番号、コピーが見えます (#137)。ハンドシェイクと否認可能性の 主張の形式モデルもありません(#138)。
- 連絡先はプロセスごとにひとつで、身元と固定はプロセスのメモリにしかありません。再起動すれば 紹介のやり直しです。永続的な保存はクライアントのコンテナとともに入り (#20)、連絡先ごとのチェーンとキューは 計画中です(#96)。
- 計測環境での紹介は、クラスタの api を信頼しています (#90)。
次
2つのボリュームを持つクライアントのコンテナ(#20)、 2つの入口とメールボックスからなる、エンドツーエンドの経路の計測のトポロジー (#47)、そして攻撃のブロック:メモリダンプ からの鍵の取り出し(#24)、リレーの侵害 (#117)、タイミングの透かしを使う能動的な 攻撃者(#116)。
全体の一覧は限界のページと 適用範囲(英語)に、 層と否認可能性の議論は暗号(英語)に、 脅威と対策は脅威モデル(英語)に あります。