Code With Me 安全概览
Code With Me 是一款功能强大的工具,使您能够协同处理代码。 这项能力也意味着有责任保障您的代码和访问级别的安全。

连接流程
假设我们有两位用户希望通过 Code With Me 互相连接。
一位用户(主机 )点击 Code With Me 会话 操作,在本地 IDE 中创建会话。

本地 IDE 向 lobby 服务器发送创建会话的通知,并请求建立会话连接。
注册完成后,会生成一个链接。
生成的链接通过任意可用方式发送给另一位用户(访客)。
例如,可以通过 Slack、WhatsApp、电子邮件等方式发送。
另一位用户(访客 )点击收到的链接。
访客会收到连接主机所需的参数,并开始连接。
此时会请求主机进行授权。 如果主机授予访问权限,连接将继续,访客会加入会话。
数据加密
在会话期间,主机与访客会交换包括源代码、密码等在内的私密信息。
因此,主机与访客之间的连接通过 TLS 1.3 进行端到端加密。 无论流量是直接在用户之间传输,还是通过 JetBrains 中继服务器传输,任何第三方(包括 JetBrains)都无法访问该通信通道。

防御中间人(MitM)攻击
可以说,最大的风险是恶意行为者伪装成主机或访客以访问通信通道,即所谓的中间人攻击。
伪装成合法主机

在连接开始时,访客和主机都会生成一个唯一的 SSL 证书,其中包括公有部分和私有部分。 访客和主机通过这对 SSL 证书进行身份验证。
加入链接中包含主机证书的指纹,即其 SSL 证书公有部分的哈希值。 只有主机拥有该证书的私有部分。 因此,访客不可能实际连接到伪装成主机的恶意行为者。
伪装成合法访客

假设主机创建的链接已泄露。 例如,主机在公开频道中分享了该链接。
因此,如果主机无法确认试图连接至会话的访客身份,主机可以核对 PIN 码。 PIN 码必须与访客的相符。 主机应确认访客能够通过任意可用渠道说出主机端显示的 PIN 码。 如果 PIN 码一致,说明正在尝试连接会话的用户是合法用户。