使用证书和加密key 来建立信任.
概述
证书,钥匙,可信任服务是一个函数和数据结构集合,用于执行安全的和经过身份验证的数据事务。
证书(Certificates): 证书是一组数据, 并且不会被干扰的数据. 可以通过使用一个证书去分发一个公钥. 接受方能确认其来源.
身份对象(identities): 您还可以将证书和其对应的私钥打包在一个身份对象中,并其进行保密。
可信任服务(trust services): 当你接受到一个公钥的时候, 就会接受到一个是否可以信任的疑问.
策略(Policies): 决定是否被信任的条件.
加密密钥(Cryptographic keys:) 有了信任的密钥后,就可以开始进行加密操作,例如加密或数据签名和验证。这些操作反过来通常用于更大的目的,比如验证用户、安全地传输数据,或者验证数据块在使用签名密封后没有被修改。
详细:
证书:
数字证书是用于安全地分发公共/私有密钥对的公共部分的数据集合。图1显示了一个典型的X.509证书的部分,它使这成为可能。除了结构信息外,证书还包含它的发行者及其所有者(或主体)的名称和联系信息,以及所有者的公钥。日期范围指示证书何时有效。证书扩展提供了附加的信息和条件,比如公钥的可接受用途。在组装证书时,为了保证其完整性,发布者使用发布者自己的身份(私钥和证书)对其进行数字签名。
要评估证书,首先要使用指定的算法和发行者的公钥(从发行者的公钥中获得)验证其签名。有效的签名确认正在评估的证书,即leaf证书,没有被修改。但是为了信任这个结果,您还必须信任发行者的证书。您使用一个类似的过程来测试这个证书,以及一个确保该证书的证书,以及下一个证书,等等,并将其链接回信任的根权限,该根权限的证书(称为锚点)是您隐式信任的。然后,leaf证书中包含的公钥被认为是可信的。您可以放心,证书所有者控制相应的私钥,它没有被更改。这允许您安全地使用公钥与证书所有者进行非对称加密。
有关证书如何工作的详细信息,请阅读密码服务指南中的数字证书。
密钥:
生成、存储和使用加密密钥。
加密密钥是字节串,在专门的数学操作中可以与其他数据结合,以增强安全性。在最低级别,这通常意味着参与加密和解密或数字签名和验证。您可以直接使用这些基本操作,例如在通过不安全通道发送数据之前对数据进行加密。您还可以隐式地使用它们,比如在证书上验证数字签名是信任评估的副产品。
键根据它们支持的操作而变化。例如,使用公钥和私钥对执行非对称加密,而使用对称密钥进行对称加密。类似地,一个密钥可能适用于一个1024位的RSA算法,而另一个密钥可能适合于一个256位的椭圆曲线算法。当您需要处理加密密钥时,请使用本节中的函数。
身份:
将证书和密码密钥合并到标识中。
标识由与包含和保证相应公钥的证书打包的私钥组成。您可以使用证书、密钥和信任服务API从私钥及其证书创建标识,或者从密码保护的PKCS #12文件导入标识。然后使用API从标识中提取密钥和证书。您还可以使用keychain服务API将标识存储到密钥链中,或者从密钥链中检索标识,就像证书或密钥本身一样。
策略:
获取建立信任的策略。
对于被认为是完整和有效的证书(因为签名链没有被破坏到受信任的根证书),您将根据一组称为信任策略的规则对其进行评估。策略指示证书的特定字段或扩展如何影响证书在特定用途上是否应该受信任。例如,策略可能声明证书不能过期,或者必须标记为对加密、代码签名或其他特定用途有效。
通常使用标准的预定义策略,如基本的X509策略或SSL策略。您还可以使用证书、密钥和信任服务API创建自定义策略。
信任:
在使用证书之前,您要根据特定的目的评估它的可信赖性。
如果您知道证书的发送方没有对其进行修改,那么您可以确信其嵌入的公钥也能做到这一点。您还可以根据证书对何时以及出于何种目的使用公钥进行索赔。您可以安全地使用密钥进行加密和签名和验证,而无需事先在发送方和接收方之间进行安排。
iOS、MACOS 系统关于HTTPS 安全相关基本的概念就这些, 下一篇会写一下具体的API调用.