Android 中高效的非对称日志加密

Ada*_*tan 5 java encryption logging android openssl

日志加密

我正在构建一个 Android 应用程序,它将日志行存储在旋转日志文件中。当用户遇到问题时,他或她可以向我们发送附有日志文件的支持请求。

出于显而易见的原因,我想加密这些日志行。

愿望清单

  • 非对称加密:应用程序应该能够加密但不能解密数据
  • 逐行加密,使得每一行都可以解密。这是必需的,因为日志轮转可能会剪切部分文件。
  • 足够快的算法,不会减慢旧设备的速度(在峰值时,每秒可能有约 10 条日志行)
  • 能够加密很长(最多 4k 个字符)的日志行。例如,这不包括 RSA,它对于 1024 位密钥的加密数据仅限于 117 字节。
  • 可使用普通 Linux 命令行工具(如OpenSSLgpg)进行解密。

逐行非对称加密 Android 日志的最佳方法是什么?

gus*_*to2 4

您设置了几个限制:

为了有效和安全,我建议:

  • 创建一个随机密钥和 IV(初始化向量 - 实际上是“盐”)
  • 使用收件人的公钥加密密钥(请参阅https://www.devco.net/archives/2006/02/13/public__private_key_encryption_using_openssl.php)。
  • 使用任何可行的对称加密对日志行进行逐一加密(使用增加的 IV 作为计数器,或者您可以为每一行创建一个 IV)。即使在使用预先计算的 S-box 的慢速硬件上,AES-CBC 也应该足够有效。
  • 发送加密密钥、IV、日志行和身份验证(内容和 IV 的经过身份验证的签名,例如 HMAC-SHA1)

注意: - 如果你想保持真正的安全,不要自己实现安全原语(加密/解密、安全随机性、签名),始终使用经过审查和测试的库 - 非对称加密必须始终加盐

不过,请回答自己 - 您希望保持通信的安全性。在许多情况下,通过 TLS (HTTPS) 发送日志来实现移动数据的安全性就足够了。通过加密,有很多方法可以使系统看起来安全,但实际上却存在您可能没有意识到的弱点。

玩得开心

G。