我公司的许多客户都在研究基础上使用我们的数据采集软件。由于一般研究的性质,一些客户要求对数据进行加密以防止篡改——如果他们的数据被证明是伪造的,可能会产生严重的后果。
我们的一些二进制软件使用存储在源中的密码加密输出文件,看起来像随机字符。在软件层面,我们可以打开加密文件进行只读操作。如果有人真的想找出密码以便他们可以更改数据,那是可能的,但需要大量工作。
我正在考虑使用 Python 快速开发另一款软件。要复制加密功能以阻止/阻止数据篡改,到目前为止我想到的最好的想法是将 ctypes 与 DLL 一起用于文件读/写操作,以便该方法加密和解密的“充分”混淆。
我们很清楚“无法破解”的方法是无法实现的,但与此同时,我显然不喜欢在 Python 源代码中以纯文本形式提供加密/解密方法。我认为,“非常强烈地阻止数据篡改”就足够了。
使用 Python 获得愉快的加密媒介或其他数据完整性证明的最佳方法是什么?我看到了 another post谈论生成“防篡改签名”,但如果签名是用纯 Python 生成的,那么为任意数据生成签名将是微不足道的。我们或许能够打电话回家证明数据的完整性,但这似乎对所有相关人员来说都是一个很大的不便。
请您参考如下方法:
作为一般原则,您不想使用加密来防止篡改,而是希望使用数字签名。加密为您提供了 secret 性,但您追求的是完整性。
计算您的数据的哈希值,并将该哈希值存储在您知道它不能被篡改或对其进行数字签名的地方。
在您的情况下,您似乎想确保只有您的软件才能生成文件?就像您说的那样,当您的用户可以访问该软件时,不存在真正安全的方法来执行此操作,因为他们可以将其拆开并找到您包含的任何 secret key 。考虑到这一限制,我认为您使用 DLL 的想法差不多可以做到了。
