真正可否认的加密

信息安全 加密 真加密
2021-09-08 03:50:22

可以使用哪些工具来进行真正可否认的加密?假设,当局可以使用任何力量让您打开密码。

Truecrypt 只能有一个隐藏容器,这意味着当局不会停止,直到您透露第二个密码,即使您没有创建隐藏容器。

那么,有没有办法创建许多隐藏的容器,让当局甚至无法告诉他们应该从你身上敲出多少密码。并且希望这种方式对其他更智能的解密方法(如使用集群的统计分析等)足够安全。

在这里http://en.wikipedia.org/wiki/Deniable_encryption我找到了有关橡胶软管的信息,但它自 2000 年以来就没有得到维护,所以我不知道它有多可靠。

我发现的另一种方法是使用例如类似的脚本http://sourceforge.net/projects/stlth/files/以不同的偏移量写入硬盘

但是,据我了解,这种方式不会在物理上混合数据,因此很容易受到智能统计方法的影响。即,如果当局发现您大量使用了未使用您已经提供的密码显示的驱动器部分,那么他们将继续尝试获取密码。根据文档,Rubberhose 可以防止这些方法,但该项目太旧了。

您还建议使用哪些其他工具在磁盘上创建多个隐藏容器?

4个回答

如果您将随机字节写入整个设备,然后在设备上的随机点创建无头(无 LUKS 或 TrueCrypt)加密块,那么这不是可以检测到的。

例如在 Linux 上;

  1. 拿一个 100GB 的硬盘。
  2. 用随机数据填充它:

    dd if=/dev/urandom of=/dev/sda bs=4K

  3. 在磁盘上的“随机”点创建加密环回设备:

    losetup --offset $RNDOFFSET --sizelimit 5G -e aes -k 256 /dev/loop0 /dev/sda

  4. 制作你的文件系统:

    mkfs.ext4 /dev/loop0

  5. 并安装它:

    mount /dev/loop0 /mnt/secret

所有这些的目的是加密数据应该与随机字节无法区分。这样,您的加密 5GB 块就可以抵御随机噪声。任何加密磁盘标头,例如 LUKS,都会清楚地显示块所在的位置,因此必须使用裸加密。

如果你$RNDOFFSET保密(不要把它写到你的fstab),加密文件系统的存在应该很难检测到。

而且您总是可以说该设备只是一个暂存器或交换区域,您可以使用在每次启动时随机生成的密钥。

免责声明:我是cryptsetup-deluksand 的作者grub-crypto-deluks

可拒绝加密只是解决方案的一部分如果您被对手抓住,没有完美的解决方案可以保护您自己和您的数据。即使对手无法证明,你也很难避免对加密的怀疑。我将列出问题和解决方案。

简短的部分答案

长完整的答案

战胜酷刑

xkcd.com/538

在这种情况下,酷刑也称为橡胶软管密码分析好消息是酷刑往往效率低下您对酷刑的抵抗力是关键,或者至少是您提供无法验证的虚假事实的能力(例如解密诱饵操作系统的密钥)。理想情况下,要停止折磨,您还应该能够证明您无法解密数据。

可否认加密并不能解决橡胶软管问题。

解决方案分为两类。有关详细信息,请参阅可以在“橡胶软管攻击”中幸存的技术

  1. 您没有密钥:密钥可能被拆分,其部分由几个朋友或隐藏的服务器拥有,充当身份验证器以检查您是否处于橡胶软管的情况。
  2. 密钥被销毁:自毁(警报系统)或手动销毁(可咀嚼的 microSD 卡等)。更难落实到位,时间紧迫,但在折磨后更能抵抗自己。

隐藏加密标头

不要使用(未加密的)LUKS 标头,这是不可否认的。

解决方案:

  • 普通加密:( 普通 dm-crypt、losetup 等)除非您有非常强的密码,否则不要使用它。它没有针对暴力攻击、彩虹表攻击的保护,并且除非您重新加密整个有效负载数据,否则无法更改密码。强化普通加密可以做的事情是使用密码来解密给定的扇区,并使用这个解密的扇区作为密钥来解密有效负载数据;但缺点是您必须记住随机选择的扇区号。推荐的用于纯加密的 Linux 工具cryptsetup --type plain保持不变。
  • Truecrypt/Veracrypt: Truecrypt 标头是可拒绝的,尤其是在用作全盘加密时。Truecrypt 使用盐和固定数量的密码哈希迭代 ( PBKDF2 ) 来解密包含密钥的标头,因此它不容易受到彩虹表攻击,并大大减慢了蛮力攻击。然而,固定的哈希迭代次数使得它对暴力破解的进化不如 LUKS(随着计算能力的增加,密码哈希迭代的次数应该增加)。与 LUKS 相比,Truecrypt 不支持多个密钥,也不支持 GRUB(Linux 引导加载程序)。
  • DeLUKS: LUKS 的可否认版本,适用于 Linux。大部分类似于 Truecrypt,但支持 GRUB 引导加载程序、cryptsetup、多个密钥和不断发展的哈希迭代次数。

隐藏加密的有效载荷

当然,您不会将数据放在名为Hey I'm encrypted.bin. 但即使使用全盘加密,随机数据的简单存在也可能对您不利。请参阅: 在英国,您不仅会因为加密而入狱,还会因为天文噪音而入狱

值得注意的是,无论采用何种解决方案,您的计算机上必须至少有 1 个诱饵(假)操作系统才能看起来完全可疑。

解决方案具有不同程度的可信度,没有一个是完美的。那么,你如何解释这些看似随机的数据呢?

  • 手动生成的随机数据:
    • 磁盘擦除:这是对完全加密驱动器的第一解释。但这是否足够?
    • 噪音记录:它可能是一个包含天文噪音的文件。你最好有一个捕获设备。
    • 等等。
  • 默认的软件行为:
    • Truecrypt/Veracrypt 隐藏卷: Truecrypt 总是用随机数据擦除新创建的加密卷有效负载。因此它会导致怀疑 Truecrypt 容器中是否存在隐藏卷,在良好的情况下无法证明这一点。
  • 隐写术这是将文件、消息、图像或视频隐藏在另一个文件、消息、图像或视频中的做法。对于系统加密来说不切实际,因此它更适合用于传输消息而不是存储消息。
  • 硬件解决方案:
    • 硬件加密驱动器:随机数据的存在可能是由于制造商初始擦除造成的。但是这些驱动器可能没有经过优化以用于可否认的加密方式。
    • 低级数据存储:我们可以想象将数据写入到低磁级的驱动器中,接近噪声级,使数据在正常情况下显示为0。我不知道任何概念证明。
  • “云”存储的数据:如果它不适合您的 RAM 大小并且需要写入本地磁盘,则不太实用。此外,如果对手可以访问加密数据,它可能会受到分组密码模式攻击。

不可否认的引导加载程序

系统加密是保护您的数据的关键。不要忘记您的 RAM 有时会写入磁盘交换,并且您的系统会保留打开文件的日志和跟踪等。因此建议使用系统加密和支持它的引导加载程序。

目前,所有主要的操作系统引导加载程序都不支持本机明文加密或可拒绝加密标头。因此,可以使用支持可拒绝加密的引导加载程序来对付您。

具有可拒绝加密支持的已知引导加载程序是:

  • Veracrypt 引导加载程序:你认为合理吗?

嘿,我是一个加密系统,相信我,没有隐藏卷!

  • grub-crypto:(支持纯模式加密的引导加载程序)至少 GUI 看起来像 GRUB,但二进制代码出卖了它。
  • grub-crypto-deluks:(支持 DeLUKS 的 grub-crypto 分叉)与 grub-crypto 相同。

解决方案:

  • 诱饵可否认加密的操作系统:您解释了引导加载程序的存在,因为还有另一个诱饵,加密的操作系统并且您只提供了打开这个诱饵操作系统的密钥
  • 从 Live OS 加载 initramfs:我不知道它是否可行。这个想法是使用cryptsetupLive CD 中的纯模式来解密真实的操作系统然后你从 Live OS(而不是从 GRUB)加载 initramfs 来启动真实的操作系统
  • 棒上的引导加载程序:具有可拒绝加密支持的引导加载程序放在 USB 棒上。我不相信这一点,但有些人认为它更安全。它假设您的 U 盘不会与您的计算机一起被扣押。

目前不存在的解决方案:

  • 主流引导加载程序中的可拒绝加密支持:除非您是 GRUB 开发人员,否则您只需对 2 年以上的grub 拉取请求进行投票即可合并grub-crypto
  • 工具箱引导加载程序:拥有一个工具箱引导加载程序(如GRUBS Reanimated USB Boot Stick )会很有帮助,除其他功能外,它还具有可拒绝加密支持。其他功能将解释此特殊引导加载程序版本的存在。

关于网络活动

Veracrypt 摘录:与隐藏卷有关的安全要求和注意事项

只有当诱饵操作系统运行时,计算机才可以连接到网络(包括互联网)。当隐藏操作系统运行时,计算机不应连接到任何网络,包括互联网(确保它的最可靠方法之一是拔掉网线,如果有的话)。请注意,如果从远程服务器下载或上传数据,则连接的日期和时间以及其他数据通常会记录在服务器上。操作系统上还会记录各种数据(例如 Windows 自动更新数据、应用程序日志、错误日志等)。因此,如果攻击者访问了存储在服务器上的数据或拦截了您对服务器的请求(如果你向他透露了诱饵操作系统的密码),

在 OP 的情况下,最好的方法是可以轻松破坏的存储,甚至可能在对手正在监视的时候。Micro SD 卡非常小而薄。只需要几秒钟就可以通过咀嚼破坏一个,然后吐出。OP 很可能会受到惩罚,但酷刑毫无意义(无论如何都要输入密码)。

我将在 Blackhat Asia 2014 上展示解决方案的初步尝试

我的演讲大纲

我们感兴趣的是能够令人信服地对加密文件的内容撒谎,这是密码学文献中“可否认加密”的一种变体。一个合理的场景可能是一名商人带着敏感文件穿越危险地区,如果被绑架或受到胁迫,他希望能够令人信服地向绑架者谎报文件内容。

因此,我们将发布一个允许用户加密文本的工具,它不仅可以解密为原始文本(使用正确的密钥),还可以解密为其他可能的文本(使用诱饵密钥)。例如,使用一个密钥,文本可能会解密为“Don't cry for me Argentina”,但使用正确的密钥,它会解密为“Don't try to meet Angelina”。