Tag: 安全地区

安全地将密码密钥存储在iOS钥匙串中

在我的安全系列#1中,移动安全。 我已经介绍了移动安全性的基本知识。 现在,让我们弄脏双手。 让我简要介绍一下如何在iOS钥匙串系统中创建和存储加密密钥。 开始使用 加密密钥应存放在安全的地方。 密钥存储不当会导致数据泄露。 在iOS中,有两个框架可确保加密密钥的安全性。 本地认证框架 安全框架 在本文中,我将介绍两者并解释它们如何通过结合使用这两个框架来保护加密密钥。 本地认证框架 本地身份验证框架用于管理生物识别,例如TouchID和FaceID。 本地身份验证框架不允许应用访问系统内部的生物特征数据。 它就像在应用程序和硬件支持的安全区域之间进行通信的代理一样。 本地身份验证框架使应用程序需要用户存在才能访问敏感信息,例如加密密钥。 LAContext是本地身份验证框架中的类,用于桥接应用程序和保护安全区域。 LAContext()。evaluatePolicy( LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason:“原因”){(成功,错误)在 //处理返回 } 但是,以上方法不足以保护敏感数据。 它只是提示您评估用户的指纹或面部。 为了保护敏感数据,我们应该通过安全框架将敏感数据存储到钥匙串中。 安全框架 安全框架提供了一些方法来生成加密密钥,将系统密钥链中的密钥存储和检索为Keychain Item 。 要生成密钥对,我们可以调用以下方法: // 1.创建密钥访问控制 守护让accessControl = SecAccessControlCreateWithFlags( kCFAllocatorDefault, kSecAttrAccessibleWhenUnlockedThisDeviceOnly, [.privateKeyUsage,.biometryCurrentSet], 零) 其他{ fatalError(“无法设置访问控制”) } // 2.创建关键属性 let属性:[String:任何] = [ kSecClass作为字符串:kSecClassKey, kSecAttrKeyType作为字符串:kSecAttrKeyTypeRSA kSecAttrKeySizeInBits作为字符串:2048, kSecPrivateKeyAttrs作为字符串:[ kSecAttrIsPermanent as String:true, kSecAttrApplicationTag作为字符串:“ […]