IntelliJ IDEA 2024.1 ヘルプ

Code With Me セキュリティの概要

Code With Me は、コードを共同で操作する機能を提供する強力なツールです。その機能には、コードとアクセスレベルを安全に保つ責任が伴います。

Code With Me workflow

接続ワークフロー

Code With Me を使用して相互に接続したい 2 人のユーザーがいるとしましょう。

  1. ユーザー(ホスト)が Code With Me セッションの開始アクションをクリックして、ローカル IDE でセッションを作成します。

    Start Session

    ローカル IDE は、セッションの作成に関する通知をロビーサーバーに送信し、セッション接続を要求します。

  2. 登録後、リンクが作成されます。

  3. 生成されたリンクは、利用可能な任意の手段で別のユーザー(ゲスト)に送信されます。

    例: Slack、WhatsApp メッセンジャー、メールなどを介して送信できます。

  4. 他のユーザー(ゲスト)は、受信したリンクをクリックします。または、ローカル IDE のメインツールバーでセッションに参加するをクリックし、受信したリンクをコピーして貼り付けます。

    Join Session
  5. ゲストは、ホストへの接続方法に関するパラメーターを受け取り、接続を開始します。

    この時点で、ホストからの許可が要求されます。ホストがアクセスを許可すると、接続が継続され、ゲストがセッションに接続します。

データ暗号化

セッション中、ホストとゲストはソースコード、パスワードなどの個人情報を交換します。

そのため、ホストとゲスト間の接続は、TLS 1.3 を使用してエンドツーエンドで暗号化されます。トラフィックがユーザー間で直接流れるか、JetBrains リレーサーバーを介して流れるかに関係なく、JetBrains を含むサードパーティーはこの通信チャネルにアクセスできません。

Code With Me encrypted channel

Man-in-the-Middle(MitM) 攻撃に対する保護

おそらく最大のリスクは、悪意のある攻撃者がホストまたはゲストになりすまして通信チャネルにアクセスすること、またはいわゆる中間者攻撃です。

正当なホストになりすます

Hacker is impersonating a legitimate host

接続の開始時に、ゲストとホストの両方が、パブリックセクションとプライベートセクションで構成される一意の SSL 証明書を生成します。ゲストとホストは、この SSL 証明書のペアによって認証されます。

参加リンクには、SSL 証明書の公開部分のハッシュであるホストの証明書のフィンガープリントが含まれています。ホスト以外の誰もこの証明書のプライベートセクションを保持していません。そのため、ゲストは悪意のあるアクターに物理的に接続して、ホストになりすますことはできません。

正当なゲストになりすます

Hacker is impersonating a legitimate guest

ホストが漏洩したリンクを作成したとします。例: ホストがパブリックチャネルでリンクを共有した。

作成されたセッションに接続しようとしているゲストがホストにわからない場合は、ホストは PIN コードを確認できます。PIN コードはゲストの PIN コードと一致している必要があります。ホストは、利用可能なチャネルを使用して、ゲストがホスト側に表示される PIN コードに名前を付けることができることを確認する必要があります。PIN コードが一致した場合、セッションに接続しようとしているユーザーは正当なユーザーです。