提问者:小点点

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


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

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

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

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


共2个答案

匿名用户

您已经设置了几个约束:

    < li >不对称加密-

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

  • 创建一个随机密钥和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)

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

仍然-回答你自己-你想要保持通信的安全程度。在许多情况下,通过TLS (HTTPS)发送日志来实现移动中的数据安全就足够了。有了加密,有很多方法可以让系统看起来安全,但实际上有你可能没有意识到的弱点。

玩得开心

克。

匿名用户

虽然不是一个“应用程序”,而是一个< code>bash脚本,但最近推出的项目的场景一可能仍然令人感兴趣。然而,需要提醒的是,它仍在大量开发中,虽然它可以在我的Android设备上运行,但还没有在生产环境中测试过。

> < li>

不是应用程序。欢迎您翻译它或将其作为应用程序的一部分使用;只需仔细阅读所使用的许可。

支持通过GnuPG公钥进行非对称加密。

支持逐行加密以及按写入加密。

也许很慢。还没有进行压力测试,但在我的旧手机上似乎足够快。

通过mapfile支持的大型日志行,每个解析操作通常可以处理几千行。

支持日志解密,但需要通过上述链接文档中的另一个助手bash脚本提供一些帮助。

由加密脚本副本编写的文件不能在同一设备上解密,只要该设备没有相关的私钥。

> < li>

等于或大于4的< code>bash版本,请在繁忙框中查找如何在Android上安装bash'n'friends。

安装了gpggpg2

用于加密的GnuPG公钥(最多两个)

由上述项目的主脚本(这是其功能之一)编写的自定义脚本副本,以使用上述公钥。

日志记录过程已修改,可使用脚本副本的命名管道来执行写入操作。

>

  • 与加密相同的要求,但是,您需要与用于加密文件的公钥相对应的私钥。

    您将需要上述链接文档中的助手脚本来提供您的解密命名管道。

    除了加密脚本副本之外,您还需要按照指示修改解密脚本副本。

    主脚本不到两千行,它写入的副本要短得多。这是因为主脚本必须处理用户输入以弄清楚你的意图是什么,因为脚本副本只是处理从它的命名管道读取的输入,并在被告知的地方写出加密数据。如果提供的链接场景没有完全达到目标,所有命令行选项的完整留档也可用。