Bru*_*uno 5 php openssl code-signing digital-signature phar
我想分发一些 PHP 源代码,我需要提供一种方法来验证这些源代码没有被更改。
所以基本上我想对它们进行签名(如果可能的话使用 PHP),然后检查它们的签名(必须使用 PHP,它必须在 Linux 和 Windows 上都工作)。
我一直在挖掘,我发现的是:
如果任何人都可以验证这个过程(或指出更好的过程),那将是一个很大的帮助。
因为我试图给出我现在找到的理论解决方案,但是理论和实践之间应该是有差距的。特别是考虑到我对这个概念还很陌生,并且在安全方面保持稳固对于我的项目来说至关重要。我记得几年前使用苹果的签名过程是一件很痛苦的事,我对自己创建安全解决方案的能力没有信心。
sym*_*ean -1
关于签名的 Phar 文件,我上次检查时,默认行为是:
因此,只需删除签名即可轻松绕过签名保护(实际上,您只需将文件标记为未签名)。您可以显式设置phar.require_hash选项,以删除实例中的此后门。
验证这些源代码没有被更改
嗯嗯。这有点模糊。由谁修改?如上所述,您需要客户端选择基于 Phar 签名的安全模型。
有很多第三方 PHP 编码器通过混淆代码来工作。几乎所有这些都提供了可笑的保护级别。IonCube 编码器和 Zend 编码器是两个例外。我对这些还不够熟悉,无法判断它们有多强以及它们是否满足您的要求。
有几个开源 PHP 编译器可以将 PHP 源代码转换为 .so 扩展名(特别是 Facebook HipHop),但我认为它们都没有得到维护。
如果您只想确保客户可以使用经过验证的内容(并且您不担心客户修改文件),那么只需使用 PGP 或 x509 的标准文件签名即可。
如果你想阻止你的客户修改 PHP 代码,那么我知道(并且自己没有测试过)的唯一选择是将你的代码作为 HHVM 字节码分发 - 但这不能抵抗逆向工程,也不能内在的、安全的验证机制,实际上并不是一种保护代码的方法。