OS X上的Keychain中不可提取的私钥

cns*_*nst 2 security macos pki keychain private-key

/usr/bin/securityOS X 10.9上的手册页指示可以指定该-x选项.security importprivate keys are non-extractable after being imported

这是如何实现的?通过这种方式导入的私钥是否真的变得完全不可提取,或者是否还有办法通过某种内存转储来保存它们?应用程序如何仍然使用这些密钥来加密?

cns*_*nst 5

我不确定应用程序仍然使用这些密钥,但根据https://reverseengineering.stackexchange.com/questions/6043/extract-non-extractable-private-key-from-os-x-keychain,它出现了这只是作为命名的位属性实现CSSM_KEYATTR_FLAGS keyAttributes的.struct SecKeyImportExportParametersCSSM_KEYATTR_EXTRACTABLE

如上所述,导入完成后,-x指定选项时将特别省略此属性security import.


根据SecItem.h,这kSecAttrIsExtractable已经在OS X 10.6中引入.


随后,当尝试执行包装导出时,安全框架中的几个位置似乎检查以确保CSSM_KEYATTR_EXTRACTABLE在执行任何类型的导出之前设置此位,并在未设置该属性的情况下返回错误.