繁体   English   中英

Java JCA-AES加密,检测消息是否被篡改

[英]Java JCA - AES encryption, detecting if message was tampered with

我试图弄清楚如何使用AES编写一个简单的Java类来加密和解密纯文本文件,但是它必须能够判断是否有人编辑了某个文件并通过使用该类对该文件进行了加密。一个签名。 如果签名不匹配,则文件将被删除。

我看了一下Message Digest,虽然关于将校验和存储在另一个文件中,但是我想要一些建议。 有什么方法可以轻松实现这一目标。 Java类将需要一个能够浏览文件夹并查看文件是否已被篡改的函数。

您想要的是经过身份验证的加密(又名AEAD) 实现此目的的一种非常常见的方法是在Galois计数器模式(GCM)中使用AES。 请记住,正确使用此模式可提供出色的安全性和效率,但是即使使用不当,所有这些好处也会很快消失。 例如,如果将IV重复用于不同的明文,则几乎失去所有安全保证。 如果我使用的术语对您而言是陌生的,并且您要保护的数据非常敏感,我强烈建议您雇用该领域的专业人士为您执行此操作。 如果您仍然希望自己执行此操作,则需要先弄清楚以下几点:

  1. 您将如何生成您的AES密钥? 熵的来源很重要,并且需要适合您要保护的数据的敏感性。

  2. 您将如何存储密钥? 他们会坐在本地计算机上基于软件的密钥库中还是会坐在某种防篡改硬件(例如HSM)中? 如果它们仅受软件保护,您将如何保护密码短语?

  3. 您将如何存储密文,IV,auth标签和相关数据? 您将使用预定义的格式(例如CMS)还是自定义的自定义格式?

  4. 除了修改文件之外,您是否需要测试是否从目录中删除和/或复制了文件?

  5. 您想要多长的身份验证标签?

我不确定您的文件有多大,所以我不知道您是否要将整个文件读入内存,然后执行加密或使用输入/输出流方法。 如果您让我知道更多详细信息,我可以为您提供一些更好的资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM