保护私钥免受移动设备上的暴力攻击

par*_*cle 10 security mobile cryptography brute-force

我有一个移动应用程序,我想安全地存储私钥.安全要求意味着即使攻击者无限制地访问移动设备,攻击者也很难获得私钥.为了实现这种安全级别,应用程序采用对称加密技术,其密钥源自用户指定的密码短语和特定于设备的盐.

理想情况下,这应该足够安全,以防止暴力攻击; 但有两个限制因素:

  1. 由于私钥必须符合某种格式,因此解密过程可以测试进程的结果以查看它是否有效.例如,如果私钥是RSA私钥,则攻击者将尝试密码短语和测试的各种组合,以查看他是否可以将生成的明文用作有效的RSA私钥.由于RSA私钥必须以某种方式编码某些信息,如果解密失败,RSA引擎将发信号通知该密钥无效.这为攻击者提供了一种完全脱机的方式来验证他的攻击.优选的是,攻击者应该能够告诉,不与服务器进行通信,如果他的解密尝试是成功还是失败.

  2. 由于应用程序在移动设备上运行,密钥衍生功能的复杂性增加对密钥加强没有帮助,因为可以在具有更丰富资源的功能更强的设备上进行对移动设备具有完全访问权限的离线攻击.很快,密钥导出函数的计算轮次数的任何增加都会减慢用户体验(可接受某个限制),但如果要在台式计算机上执行攻击,则会立即阻止.

有人能为我提供这些问题的解决方案吗?具体来说,是否有人知道非对称加密算法,其中私钥可以是任何随机字节序列(它可以是固定长度序列,无关紧要),算法仍然能够产生密文?

Ben*_*n S 5

安全要求意味着即使攻击者无限制地访问移动设备,攻击者也很难获得私钥.

那是不可能的.

这是攻击者可以做的事情:

  1. 将应用程序置于必须在内存中加载私钥的状态.经常使用该应用程序将导致此问题.
  2. 转储内存的内容.
  3. 尝试在已知密钥长度的所有范围内滑过内存位.

由于密钥存在于内存中,因此通过短语和盐来生成密钥并不重要.您的应用程序为攻击者完成所有工作.通过默默无闻的安全失败的经典案例.

这就是Blu-Ray最初被破解的方式.如果用户在应用程序使用期间具有对内存转储的完全访问权限,则无法阻止他们以这种方式获取密钥.

欢迎来到DRM世界.

  • 你们错过了这一点.他并没有试图隐藏设备的合法用户(拥有密码的人)的私钥 - 他试图将其隐藏在从合法用户窃取设备的人身上,因此*没有*密码,或者访问处于工作状态的应用程序. (3认同)
  • 感谢您的快速反应.我知道你正在谈论的攻击媒介,我知道第一个HD-DVD和BluRay如何破解的故事.然而,这就是我说**非常努力的原因**而且并非不可能.您描述的攻击对于移动设备执行起来非常重要,但是,攻击者更容易获得存储转储并对其进行操作而不是设备本身.这是我试图解决的问题,也许我并不像我应该那样清楚.你可以帮帮我吗? (2认同)
  • @Wim:他没有说每个设备都使用相同的私钥.我已经看到在一些方案中提出的建议,但它始终是一个愚蠢的想法.这听起来像paracycle不是那些完全无能的人提出这样的事情之一; 我的假设是为每个用户生成一个唯一的私钥,然后通过对称加密进行保护. (2认同)

Wim*_*Wim 1

RSA 的私钥固定长度的随机字节序列。您只是碰巧正在查看它的 ASCII 编码。只要以非 ASCII 格式存储密钥就可以了。

  • Tom Hawtin 提出的观点对您来说更成问题:由于公钥可以从私钥派生,因此您的暴力方法可能发现的任何候选私钥都可以通过派生其公钥并进行比较来简单地验证它与已知的公钥! (2认同)