【问题标题】:What are the best practices for implementing encryption logic in iOS? [closed]在 iOS 中实现加密逻辑的最佳实践是什么? [关闭]
【发布时间】:2017-12-24 20:01:34
【问题描述】:

我正在尝试在 iOS 应用中实现支付机制。所以我想发送与付款相关的详细信息,例如卡号、持卡人姓名等。到我们的服务器(C#),通过加密实现移动设备和服务器之间的安全通信。请推荐一些好的加密和解密技术。 提前致谢。

【问题讨论】:

    标签: c# ios encryption hash salt


    【解决方案1】:

    使用 HTTPS。将服务器设置为支持 TLS 1.2 和 Perfect Forward Secrecy。在客户端固定证书以防止 MITM 攻击。

    如果您要在服务器上保存完整的 CC 号码,您需要符合 PCI

    【讨论】:

    • 谢谢扎夫。我们已经在使用启用 HTTPS 和 TLS 1.2 的服务器,您认为这足以将卡详细信息从我的移动应用程序传递到服务器吗?或者您是否建议对卡详细信息进行加密(散列 + 加盐)?如果是这样,您能否推荐支持 iOS、android 和 C# 的最佳加密和解密框架和库。
    • 我认为如果您已将服务器证书固定在客户端但我不是 PCI 审计员。您需要固定服务器证书以防止 MITM 攻击。虽然 MITM 过去很困难,但没有那么多连接是 WiFi,但它们相对容易。一种方法是模仿免费的 WiFi 热点。但即使在家里,也可能没有那么简单。许多设备会自动选择 WiFi 连接,当邻居安装一个开放的 WiFi 接入点时,我在家里发生了这种情况,我最终注意到我没有通过 WiFi 连接,并且已经锁定了我的设备。
    • 再次感谢 Zaph。如果证书被固定在客户端应用程序中,那不是让其他人可以通过反编译来访问它们吗?这不会是一个安全问题吗?或者是否有任何涉及/推荐的公钥/私钥机制来克服上述问题?
    • Certificate pinning 表示检查服务器提供的证书并验证它确实来自正确的服务器。该证书包含服务器公钥、有效日期和组织信息,包括公用名和组织,其中一些子集经过验证。攻击者可能有一个有效的证书,但它不是正确的。
    • 因此,通过证书固定,只有授权的服务器会传递信息。但是付款详细信息(卡号等)仍会以纯文本形式从客户端应用程序发送到服务器,没有任何加密?这将如何确保来自 MITM 的付款细节的安全性?另外如何确保客户端(iOS App)和服务器端点之间的完美前向保密?是否涉及任何加密?或者客户端的证书固定和加密就足够了?
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多