通过对高级恶意用户隐藏的服务器将消息传输到另一个客户端的最安全方法是什么?

信息安全 加密 国家安全局
2021-08-26 18:43:25

假设您经常受到知名黑客和机构的威胁,他们试图拦截您和朋友之间发送的消息。

问题是:在没有任何恶意用户或机构能够向他发送消息的情况下,最安全的方式是什么:

  1. 拦截和解密您或您朋友的消息。
  2. 通过MiTM或 DDoS 中断您的通信。托管在世界不同地区的云服务器是否有助于卸载 DDoS 流量并使服务器难以关闭?如果多个代理没有在标头中转发任何敏感信息,那么您的互联网提供商不知道您正在联系的服务器,以防有人设法获取互联网浏览日志?
  3. 简而言之,任何其他攻击,例如重放攻击中间相遇攻击等,最终都会派生消息内容或导致冒充。

还假设您是学生,买不起功能强大的笔记本电脑来处理大量数字,因此首先要排除加密速度较慢的算法。

这是我们所处的情况:

                              C                     B
                       ----------------     ------------------
         A             |              |     |                |
      -------          |    Server    |'''''|     Friend     |
      | You |''''''''''|              |     |                | 
      -------          ----------------     ------------------
                 |                              |
               |                D                 |
             ---------------------------------------
             |                                     |
             |                                     |
             |      Malicious user or agency       |
             |                                     |
             |                                     |
             ---------------------------------------

A应该能够通过C向B发送任何东西,而D不能交互

通过RSA交换密钥并将其用作 AES128 的加密/解密是否足够?怎样同时使用 RSA 和 PGP,以便在使用 RSA 密钥解密后也必须使用 PGP 解密?还是那是多余的?

我考虑过一种MAC-then-encrypt-and-encrypt-again模式:AES128(Message + RSA pub key) + (PGP pub key + nonce) <-> server <-> ((AES128(Message + RSA pub key) + (PGP pub key + nonce)) - nonce) == PGP priv key == RSA priv key | stop

让我们再放一张图来更好地理解它:

发件人

             -------------     ---------------    
             |           |     |             |
             |  Message  |--+--| RSA pub key |
             |           |     |             |
             -------------     ---------------           
                      \          /    
                       \        /
                        \   D  /
                         \    /
                          \  /
                           \/
                      -------------     -----------------     -----------
                      |           |     |               |     |         |
                      |  AES128   |--+--|  PGP pub key  |--+--|  Nonce  |
                      |           |     |               |     |         |
                      -------------     -----------------     -----------

接收者

                                                                 \    /
                      -------------     -----------------     ----\--/---
                      |           |     |               |     |    \/   |
                      |  AES128   |--+--|  PGP pub key  |--+--|  No/\ce |
                      |           |     |               |     |   /  \  |
                      -------------     -----------------     ---/----\--
                           /       \                /           /      \
                          /         \              +                    
                         /           \            /             
  ---------------     -----------     +   -----------------            
  |             |     |         |      \  |               |
  |  RSA pubkey |--+--| Message |       \ |  PGP priv key | <----- Symmetric
  |             |     |         |        \|               |
  ---------------     -----------         -----------------   
          \
           +
            \
         ----------------
         |              |
         | RSA priv key | <---- Asymmetric. Only the receiver knows this key.
         |              |
         ----------------
                    \
                     \
                 -------------
                 |           |
                 |  Message  |
                 |           |
                 -------------

将此与(完美)前向保密相结合 使其更加安全吗?

结果应该是唯一的一个:恶意用户的不可破坏性或非常慢的可破坏性(即使是超级计算机也需要数百年)。

如果可能,请添加事实、参考资料、特定专业知识或其他任何不会使您的答案基于意见的内容。

4个回答

您是否真的相信您可以检测到您的计算机是否被以一种可以直接在计算机上嗅探纯数据的方式进行操作,或者加密软件是否被更改以使嗅探更容易?你真的相信你父亲也能做到吗?如果您下载了加密软件:您怎么知道它只做它声称的事情?如果您自己编写了加密软件:您是否真的完全了解所有涉及的算法,您是否确保您的实现不仅正确,而且使用了适当且安全的 RNG 等,不会在定时攻击等中泄露信息?密码学本身已经很困难,但它只能解决部分问题,而不是整个问题。不要忘记https://xkcd.com/538/

您的第一个问题将是确定 NSA 的能力。例如,您的笔记本电脑是否安装了键盘记录器?BIOS 是否受损?硬盘的固件是否受损?

此外,由于您想使用中间服务器,您必须以某种方式知道该服务器的运营商没有受到国家安全信函或类似的勒索,或者您必须找到一种机制来保护您的面子一个不受信任的中介。

在所有这些情况下,游戏就结束了。

其次,如果您有理由确定硬件没有受到损害,这就是我要调查的内容:

  • 从大众市场零售店购买一个新的 U 盘(不是通过邮购),然后支付现金。
  • 下载尾巴。
  • 断开与 Internet 的连接。
  • 将 Tails 安装到 U 盘上。
  • 卸下硬盘(这可以保护您免受损坏的 HD 固件的影响,尽管不能防止计算机本身的损坏的 BIOS)。

当然,你父亲也必须采取同样的预防措施。

接下来,定义要隐藏的内容:

  • 你想隐藏你的消息内容吗?
  • 是否要隐藏邮件的收件人?
  • 你想隐藏你交流过的事实吗?

如果您只想隐藏消息的内容,PGP 就是它。不过,主题行和收件人将是纯文本。从你的问题来看,就是这样。

如果您想隐藏消息的收件人,您可以使用 SSH 登录到(已知未受感染的)第三方计算机并在其中以文本文件的形式留下消息。您的父亲也会使用 SSH 连接到同一台计算机来检索消息。

如果您想完全隐藏通信的事实,则需要通过 TOR 网络进行连接。

最后一个问题是使用什么算法进行加密。首先,不要使用 SHA256。它根本不是加密算法,而是散列算法。如果您使用它,您会惊奇地发现即使通过拨号线路也能在几秒钟内传输千兆字节大小的文件。你会惊讶于你父亲为什么无法取回你发送的文件。SHA256 基本上生成几十个字节的校验和,并保持原始消息完好无损。

您关于使用公钥加密的单独密钥交换,然后是使用对称加密的数据传输阶段的想法非常适合直接通信。

对于密码选择,我会查看 TLS 1.2 提供的内容。公钥的 RSA 很好。AES128 用于对称加密也是一个不错的选择。

当然,由于您使用的是中间设备(您的服务器 C),您将受到该服务器提供的任何内容的限制。

一次性使用垫

任何超出一次使用垫的数学使用都是“NSA”破坏您的算法的机会。在您使用命名算法的那一刻,您必须接受 NSA 破坏该特定算法的可能性。缺乏关于他们破坏了哪些算法的任何信息,唯一的“NSA证明”算法是一次性使用垫。

你最好相信你的随机数生成器和你的密钥交换!(编辑:我的意思是真正的随机数生成器。那些在那些新奇的“计算机”东西上运行的娘娘腔伪随机数生成器都没有!)

坐上飞机去拜访你的父亲。一旦你在一个只有你们两个人的地方,就在你父亲的耳边低语你的秘密。如果您坚持“通过服务器”部分,则将您的信息写在一张纸上,放入服务器的箱子中,然后让爸爸 Edwin 将其拉回。

你和我都不知道国家安全局能做什么。它们可能不仅会危害您的软件下载,还会危害每个人的软件下载。他们可能在您的主板 BIOS、键盘、路由器、硬盘驱动器和手机中存在硬件错误。他们可能对他们没有窃听的项目进行了利用。他们可能在您的房子、汽车和您的人(智能手机)上安装了摄像头、麦克风和其他探测器。

哦,他们有近乎无限的预算和访问您过去记录的权限。他们有心理学家和行为科学家来分析你。他们对影响公众舆论和价值观的大众媒体和娱乐产生影响。

唯一获胜的举措是不玩。