Code With Me 安全概述
Code With Me 是一个功能强大的工具,使您能够协作处理您的代码。 随之而来的是确保代码和访问级别安全的责任。

连接工作流
假设我们有两个用户,他们想通过 与我编程 相互连接。
用户 (主机) 点击 Code With Me 会话 操作在本地 IDE 中创建会话。
本地 IDE 向大厅服务器发送有关会话创建的通知,并请求会话连接。
注册完成后,链接已创建。
生成的链接通过任何可用的方式发送给另一位用户(访客)。
例如,可以通过 Slack、WhatsApp messenger、电子邮件等发送。
另一位用户(访客 )点击收到的链接。
客户端会收到有关如何连接到主机的参数,并开始连接。
此时,将请求来自主机的授权。 如果主机授予访问权限,连接将继续,访客将连接到会话。
数据加密
在会话期间,主机和访客会交换包括源代码、密码等在内的私人信息。
这就是为什么主机和访客之间的连接是使用 TLS 1.3 的端到端加密。 无论流量是直接在用户之间流动,还是通过 JetBrains 中继服务器流动,包括 JetBrains 在内的任何第三方都无法访问此通信信道。

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

在连接开始时,来宾和主机都会生成一个独特的 SSL 证书,由公共和私有部分组成。 通过这一对 SSL 证书来验证客户端和服务端的身份。
加入链接包含主机证书的指纹,这是其 SSL 证书公共部分的哈希值。 除主机外,无人持有此证书的私密部分。 因此,来宾无法物理连接到冒充主机的恶意行为者。
冒充合法访客

假设主机创建了一个泄漏的链接。 例如,主机在公共频道中共享了该链接。
因此,如果主机不确定试图连接到创建的会话的访客是谁,主机可以检查密码。 验证码必须与访客的相匹配。 主机应检查访客是否可以使用任何可用渠道说出主机端显示的 PIN 码。 如果 PIN 码匹配,则尝试连接到会话的用户是合法用户。