|
Post by account_disabled on Jan 29, 2024 7:19:18 GMT
这篇文章最初发表在ParagonIE 博客上,并在获得他们的许可后转发到这里。 Backward Skip 10s Play Video Forward Skip 10s 安全形象 我们 [ParagonIE] 经常被问到同样的问题(或者一些混合问题)。 这个问题时常出现在开源加密库的错误跟踪器中。这是我在 B-Sides Orlando 的演讲(标题为“为奇怪问题构建可防御的解决方案”)中提到的“奇怪问题”之一,我们之前在一份白皮书中专门用了一小部分来讨论这个问题。 您知道如何搜索数据库字段,但问题是,我们如何安全地加密数据库字段,但仍然在搜索查询中使用这些字段? 我们的安全解决方案相当简单,但大多数团队提出这个问题和发现我们简单的解决方案之间的道路充满了危险:糟糕的设计、学术研究项目、误导性的营销和糟糕的威胁建模。 如果您很着急,请随时跳到解决方案。 迈向可搜索加密 让我们从一个简单的场景开始(这可能与许多地方政府或医疗保健应用程序特别相关): 您正在构建一个需要从用户那里收集社会安全号码 (SSN) 的新系统。 法规和常识都规定用户的 SSN 应该静态加密。 工作人员需要能够根据用户的 SSN 查找用户的帐户。 让我们首先通过这个问题的明显答案来探讨缺陷。 不安全(或其他不明智)的答案 非随机加密 对于大多 WhatsApp 号码数据 数团队(特别是没有安全或密码学专家的团队)来说,最明显的答案是执行以下操作在上面的代码片段中,当使用相同的密钥加密时,相同的明文总是产生相同的密文。但 ECB 模式更令人担忧的是每个 16 字节块都是单独加密的,这可能会产生一些极其不幸的后果。 从形式上讲,这些结构在语义上并不安全:如果您加密一条大消息,您将看到密文中出现重复的块。 为了保证安全,对于任何不持有解密密钥的人来说,加密必须与随机噪声无法区分。 不安全模式包括 ECB 模式和具有静态(或空)IV 的 CBC 模式。 您需要非确定性加密,这意味着每条消息都使用一个唯一的随机数或初始化向量,对于给定的密钥永远不会重复。 实验学术设计 有很多学术研究涉及同态、顺序揭示和保序加密技术等主题。 尽管这项工作很有趣,但当前的设计还远远不够安全,无法在生产环境中使用。 例如,揭示顺序的加密会泄漏足够的数据来推断明文。 同态加密方案通常将漏洞(实际的选择密文攻击)重新包装为特征。 未填充的 RSA在乘法方面是同态的。 如果将密文乘以一个整数,则得到的明文将等于原始消息乘以相同的整数。针对未填充的 RSA有几种可能的攻击,这就是现实世界中 RSA 使用填充的原因(尽管通常是不安全的填充模式)。 计数器模式下的 AES与 XOR是同态的。 这就是为什么随机数重用在 CTR 模式(以及一般的非 NMR 流密码)中破坏了消息的机密性。
|
|