【问题标题】:iOS Banking AES-128 End to End Encryption ImplementationiOS 银行 AES-128 端到端加密实施
【发布时间】:2025-12-14 05:15:01
【问题描述】:

我正在为 iOS 创建一个银行应用程序,它将敏感的加密数据从 Azure 移动后端传输到 iOS 设备。在 iOS 设备上安全解密这些数据的最佳方法是什么?应该使用什么协议?什么第三方库/服务?是否有我应该了解的金融应用标准?

我听说过诸如使用 SQL 的 EKS 加密、SSL、RSA / Diffie Hellman 加密、AES-128 作为标准做法等。在不深入研究低级 C 代码的情况下,有什么实用的方法可以实现吗?

【问题讨论】:

  • 如果您处理信用卡付款,您需要了解 PCI(支付卡行业)规则/要求。
  • 暂时没有信用卡付款,但我正在寻找一个简单的解密实现。
  • 使用 TLS 并确保验证服务器的证书。

标签: ios azure encryption cryptography


【解决方案1】:

SSL 适用于传输中的数据,固定证书。 AES128 适用于静态数据,但密钥必须良好且安全。

在 iOS 上放钥匙 Keychain,没有更安全的方法了。

如果您需要将密钥存储在服务器上,那么保持其安全性就比较困难了。

最后至少在服务器上使用两因素身份验证。

【讨论】:

  • 使用存储在钥匙串中的密钥解密 AES-128 加密字符串的最佳实现是什么?
  • 我建议 RNCryptor,它处理了许多加密安全新手会错过的细节。
【解决方案2】:

我的解决方案最终是使用 AESCrypt(github:https://github.com/Gurpartap/AESCrypt-ObjC

事实证明,这就像将类文件拖入 XCode 并调用一样简单

[AESCrypt encrypt:secret password:password]; [AESCrypt decrypt:secret password:password];

感谢您的帮助!稍后我可能会最终实现某种 CocoaPods 支持的平台,但现在可以使用。

【讨论】:

  • 1) 使用 SSL/TLS 对客户端和服务器之间的通信进行加密。从头开始编写安全的加密通信协议很困难。 2)您不太可能设法使用该库编写任何安全的东西。例如,您几乎肯定会遭受填充预言的困扰。 3)如果你真的想使用 AES 和自己的密钥管理,Zaph 推荐的 RNCryptor 看起来比你选择的库要好得多。
  • @CodesInChaos 什么是填充预言机?
  • @Unheilig 使用未经身份验证的加密时,攻击者通常可以从消息接收者对无效消息的反应中了解一些信息。此信息通常可用于解密整个消息,一次一个字节。 Padding oracles反对CBC模式就是一个著名的例子。
  • 感谢您的反馈。目前这是一个开发原型,未来我们将使用 RNCryptor。
  • 我们还将添加一层非对称加密。用 RSA 加密 AES 密钥会更好吗?对不起,我对密码学的无知。我是一名大二学生,在一家银行实习,担任软件工程师,实际上我还没有参加任何 CS 课程。