是对公共密钥进行加密的足够安全性来替换SSL?

问题描述 投票:0回答:1
Scala

编写

akka
akka-http
编写)。我最初是在尝试使用SSL,但似乎没有单个
rootCA
运送我的软件,这是非常困难的(除非我接受所有证书,否则会带来更多问题)。
因此,使用普通的
http
套件,我的计划是将公共钥匙交换为单个会话,但使用共享密码对其进行加密。每个服务器都有一个唯一的ID。此ID与您要连接和聊天的另一个用户共享。其他用户必须输入此ID才能与您的服务器建立连接。
i我认为

instanceA

可以使用severID来加密其公钥,然后通过

instanceB
(带有可拒绝的身份验证)将其发送。然后,将取消键并执行DH键交换,然后将过程回到

http

.

。
我想了解这种方法是否存在任何潜在的安全风险,而在任何情况下都使用相同的软件运输软件。
update
我似乎正在圈出。正确的过程似乎是SSL。但是:

系统是偏心的,这意味着每个客户都有自己的自我签名的CA

要分发rootca,您必须在

instanceB

上使用加密通道

要交换加密密钥(并防止MILM攻击),您必须使用rootca签名,该键需要分配,以便客户端可以验证键的源。

我尝试采用哪种方法,我最终不得不用软件分发单个instanceA

。我不喜欢这样的原因:

    可以从编译的代码访问rootca。
  • Rootca将使用其密钥运输,该密钥受密码保护。如果我真的想让这个安全,最好将其存储到
  • rootCA
  • 中。周围有一个密码,将安全风险推向密码。每个实例都需要相同的密码
    http
  • 请在某人知道一种更简单的方法来执行此操作的方法(没有这些安全问题)会建议我。我已经圆圈了几天

在没有单个失败的情况下建立信任是分散系统中常见的“挑战”,但是您
clould

是在第一次使用
    pablic keypinning
  • .
  • 中trust。
    启用分布root ca,每个实例都会生成自己的自签名证书。
    
    当用户首先连接到另一个实例时,他们会手动验证指纹(例如,通过QR码,语音调用或其他一些“带外”方法显示它)。请记住,如果这种指纹分布不安全,它会击败整个目的。这也是主要的可用性弊端;根据应用程序,手动验证
    指纹可能会很麻烦。 一旦接受,公共密钥被“固定”以用于将来的连接。
  • 如果关键更改,请提醒用户以防止
MITM攻击。

scala ssl akka diffie-hellman off-the-record-messaging
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.