Scala
编写
akka
和akka-http
编写)。我最初是在尝试使用SSL,但似乎没有单个rootCA
运送我的软件,这是非常困难的(除非我接受所有证书,否则会带来更多问题)。
因此,使用普通的
http
套件,我的计划是将公共钥匙交换为单个会话,但使用共享密码对其进行加密。每个服务器都有一个唯一的ID。此ID与您要连接和聊天的另一个用户共享。其他用户必须输入此ID才能与您的服务器建立连接。i我认为
instanceA
可以使用severID来加密其公钥,然后通过
instanceB
(带有可拒绝的身份验证)将其发送。然后,将取消键并执行DH键交换,然后将过程回到http
.
。 我想了解这种方法是否存在任何潜在的安全风险,而在任何情况下都使用相同的软件运输软件。
update我似乎正在圈出。正确的过程似乎是SSL。但是:
系统是偏心的,这意味着每个客户都有自己的自我签名的CA要分发rootca,您必须在
instanceB
我尝试采用哪种方法,我最终不得不用软件分发单个instanceA
rootCA
http
在没有单个失败的情况下建立信任是分散系统中常见的“挑战”,但是您clould是在第一次使用
当用户首先连接到另一个实例时,他们会手动验证指纹(例如,通过QR码,语音调用或其他一些“带外”方法显示它)。请记住,如果这种指纹分布不安全,它会击败整个目的。这也是主要的可用性弊端;根据应用程序,手动验证指纹可能会很麻烦。 一旦接受,公共密钥被“固定”以用于将来的连接。