升级 Swift 依赖项的加密算法

Upgrading Encryption Algos for Swift Dependencies

我正在使用开源 MobSF 安全框架来扫描我的 Swift 项目的源代码及其依赖项中的漏洞。大多数东西看起来都不错,但我担心它向我表明我的依赖项中的加密算法(MD5、SHA1)不够安全。

解决这个问题的标准做法是什么?我确保为其中的大部分提取最新的分支,但他们似乎坚持使用过时的算法。我不愿意进去,不得不更改他们的源代码,结果每次重建 Podfile 时都将其清除。

首先,这取决于他们使用这些算法的原因。对于某些用途,MD5 或 SHA-1 没有安全问题,它们可能是与现有标准兼容或向后兼容所必需的。

例如,PBKDF2 使用 SHA-1 作为其哈希值是完全安全的。它不需要非常强大的散列函数来维护自身的安全性。使用 MD5 甚至是安全的。使用 PBKDF2 切换到 SHA-2 不会提高安全性,它只是“安全卫生”,即“避免在您的代码中出现已知问题的算法,即使它们在您的特定用例中不会造成任何问题。”安全卫生是一种很好的做法,但它与安全性不同。

对于其他用例,哈希函数的安全性至关重要。如果框架使用 MD5 对任意消息进行身份验证,那就完全崩溃了。不要接受这个答案来暗示算法无关紧要。他们是这样!但并非在每个用例中。如果你想解码信用卡刷卡交易,你可能需要在你的代码中使用 DES,这是 可怕的 损坏,但你仍然需要它,因为磁条就是这样加密的。它不会使您的框架“不安全”。

当你说“但他们似乎坚持使用过时的算法”时,我假设你的意思是你打开了一个 PR 但他们拒绝了它,在这种情况下我认为他们有充分的理由(例如向后兼容时有没有实际的安全问题)。如果你还没有,那么显然第一步是打开一个 PR。

就是说,如果你想更改它是因为你觉得存在他们无法解决的实际安全问题,或者纯粹是为了卫生,那么使用 CocoaPods 你可以 fork 项目,修改它,然后指向你的自己的版本使用 the source attributepod 关键字。

我自己维护一个密码学框架,我经常从使用这些扫描器的开发人员那里收到完全错误的错误报告。确保您知道扫描仪告诉您什么以及如何评估结果。误报在其中极为常见。这些工具很有用,但你需要有一定的专业知识才能阅读他们的报告。