Encryption 如何以符合PCI的方式在iOS/Android上存储信用卡信息
我正在构建一个接受支付的移动应用程序。用户输入其CC详细信息,然后通过HTTPS将付款信息提交给零售商的POS系统。POS直接处理付款,需要实际的信用卡信息才能工作,因此我们不能使用Stripe之类的服务来存储卡,并返回令牌以处理付款 由于应用程序的性质,用户将定期付款,因此为了方便起见,我想存储他们的CC信息。但是,这不是重复计费,用户将随意启动交易。因此,我不需要将CC集中保存在服务器上,我正在考虑使用以下方法在每个用户的设备上存储单独的卡:Encryption 如何以符合PCI的方式在iOS/Android上存储信用卡信息,encryption,payment,pci-compliance,pci-dss,rncryptor,Encryption,Payment,Pci Compliance,Pci Dss,Rncryptor,我正在构建一个接受支付的移动应用程序。用户输入其CC详细信息,然后通过HTTPS将付款信息提交给零售商的POS系统。POS直接处理付款,需要实际的信用卡信息才能工作,因此我们不能使用Stripe之类的服务来存储卡,并返回令牌以处理付款 由于应用程序的性质,用户将定期付款,因此为了方便起见,我想存储他们的CC信息。但是,这不是重复计费,用户将随意启动交易。因此,我不需要将CC集中保存在服务器上,我正在考虑使用以下方法在每个用户的设备上存储单独的卡: 收集抄送号码和到期日期 使用AES256加密,
- 收集抄送号码和到期日期
- 使用AES256加密,使用CVC作为密钥(CVC未存储)
- 然后将加密数据存储在iOS密钥链(或Android的等效密钥链)中
- 为了付款,(a)从钥匙链中取出数据,以及
- (b) 用户必须输入CVC才能解密CC信息
- AES-256加密
- CBC模式
- 使用PBKDF2扩展密码
- 密码盐渍
- 随机IV
- 加密然后散列HMAC
问题: 我不太懂数学,无法判断RNCryptor的密钥拉伸实现是否只包含3个CVC数字,就能产生足够随机的密钥。我还没有找到任何关于RNCryptor保持安全所需的密码规范的文档。如果您对此有任何想法,我们将不胜感激。使用此库非常简单,如下所示:
//加密
NSData*数据=。。。
NSString*password=@“秘密密码”;
NSData*密文=[RNCryptor encryptData:数据密码:密码];
//解密
n错误*错误=nil;
NSData*明文=[RNCryptor decryptData:密文密码:密码错误:&错误];
如果(错误!=nil){
NSLog(@“错误:%@”,错误);
返回
}
// ...
当在iOS密钥链(或droid等效工具)上讲述AES256加密的抄送信息时,没有启用设备锁密码是否重要?我的想法是,信息已经加密了,它可以存储在设备上,而无需密钥链加密
在这种情况下,考虑到没有存储大量CC号码的中央服务器,PCI合规性的哪些部分与此相关?我试着阅读PCI规范,但这些文件是一个迷宫:(
钥匙链不会保护其内容不受设备所有者的影响,实际上,设备所有者是谁拥有访问权,密码决定了访问权,从而决定了设备所有者。如果您不想自己实现所有内容,可以检查iOS和安卓的VGCollect SDK。SDK在PCI scop中收集所有数据e、 所有的加密工作人员都在他们这边完成,所以你只需要得到一个别名,你可以在发送付款请求时使用它。至少你需要验证iDevice是否启用了密码。Aes256需要一个256位的密钥,但cvc代码只包含10位的信息。如果使用cvc代码作为密钥,暴力不仅会破坏t