ios - iOS - 从 ios 应用程序以加密形式将信用卡/借记卡存储在服务器上,然后再次从应用程序解密。我怎样才能最安全地管理它?
问题描述
我的 iOS 应用程序中有静态密钥。通过使用该密钥,我正在加密信用卡/借记卡并将其发送到服务器以供将来使用。我使用相同的密钥来解密卡。
现在我不能通过任何密钥生成算法使用动态密钥,因为我想稍后解密我的卡。所以,每次我都需要相同的密钥。
所以,我的问题是我应该如何存储我的密钥或者我应该在哪里存储我的密钥,因为它会最安全?或者我可以通过每次生成动态密钥来管理这些东西吗?如果是,那怎么办?
许多 iOS 应用程序(如 Amazon、Uber 等)都将卡信息存储在其服务器中!他们是如何管理这些东西的?
任何帮助将不胜感激!谢谢!
解决方案
如果您需要问这个问题,那么您已经违反了 PCI 合规性。您的客户信用卡信息不应该接触您的服务器,无论是加密的还是其他的。大多数支付网关都会为您处理这个问题。你应该自己做这件事的理由很少。
如果您确实需要自己处理这个问题,而且您这样做的情况很少,那么简单地在您的应用程序中对卡信息进行对称加密并不是这样做的方法。从字面上看,任何可以下载您的应用程序的人都可以解密其他客户的信用卡信息。
正确的方法是将卡信息传输到使用 TLS 保护的服务器,然后将密钥信息加密并存储在 HSM 服务器端。如果您无法做到这一点,那么您不符合 PCI 标准,您将承担法律责任。
如果您的企业在欧盟运营或为客户提供服务,那么您可能会因对消费者信用卡信息处理不当而面临巨额罚款。
推荐阅读
- php - Laravel 5.8:试图获取非对象的属性“prd_name”
- ios - iOS 上的 React Native - “未处理的 JS 异常:找不到变量:需要”
- ios - 仅在 iOS / Flutter 中获取远程配置失败
- javascript - 在 DataTables API 中排序之前格式化数字
- regex - Nginx 去除 URL 参数
- swift - 如何重载 Range 的赋值运算符
快速字符串 - javascript - 如何使用 Javascript 将对象键动态设置为变量?
- flutter - Flutter 中的多格式文件预览器
- conv-neural-network - 为什么选择anchor和gt之间的IoU作为判断正样本的标准?
- flutter - 颤振:在 MaterialStateProperty.resolveWith 中使用状态