PKI是一套通用的加密方案,可以保证你的系统安全的运行和通讯。苹果公司建立了Apple PKI,以支持CA签名的X.509证书中包含的公共/私有密码密钥的生成,发行,分发,吊销,管理和管理。 |
证书吊销列表
证书政策(CP)和认证实践声明(CPS)
苹果根CA:
苹果公共CA:
苹果根证书计划
深度内容:了解现代PC证书的底层机制
实体(entity) 表示一切存在的东西,甚至只是存在于逻辑上或者概念上。你的电脑就是一个实体。你写的代码也是,你本身也是,你午饭吃的卷饼也是。甚至你在六岁时看见的鬼也是如此— 即使你妈妈是对的,那仅仅是你想象中虚构出来的东西。 每一个实体都有一个身份(identity) 。身份是什么,其实很难定义。身份就是让你成为你,听明白了吗?在计算机中,身份通常使用一系列属性来表示:群组,年纪,地址,最喜欢的颜色,鞋子的尺码等等。识别码(identifier) 和身份不是同样的东西。它是某些拥有身份的实体的唯一引用。我是迈克,但是迈克并不是我的身份。这只是个名称—识别码和名称可以认为是同义词,可以相互替换(至少在本文中如此)。 实体可以声明(claim)其拥有某些特定的名称。其他的实体应该可以验证该声明的正确性。但是声明并不一定要与名称有关系:我可以声明任何事情,包括我的年龄、你的年龄、访问权限和生命的意义等等。验证(Authentication)就是一个确认声明正确性的过程。 证书所有者(subject)这个实体在PKI中被称为订阅者(subscriber)或者终端实体(end entity)。给订阅者发放证书的实体被称为 证书颁发机构(certificate authority),简称CA,也被称为证书颁发者(issuer)。属于订阅者的证书有时也被称为终端实体证书或者叶子证书(leaf certificates)— 在我们讨论证书链的时候,这个称呼更加直观。属于CA的证书通常被称为根证书(root certificates)或者中间证书(intermediate certificates),具体属于哪一种要根据持有该证书的CA类型来确定(译者语:后面有具体说明,简单来说:如果某个证书的颁发者是它自己,它就是根证书)。最后,证书用户被称为依赖方(relying party,缩写为RP。译者语:请记住,后面文章出了很多次这个缩写),它会验证然后信任由CA颁发的证书。更令人困扰的是:一个实体既可以是订阅者同时又可以是依赖方。因为一个实体可以拥有其自己的证书,同时使用其他证书来校验远端设备(比如在双向TLS中就会发生)。 以上的背景知识足够我们开始后面的学习了。但是如果你想了解更多,你可以下载RFC 4949到你的电子书中。对于其他的小伙伴,让我们开始干货的学习吧。如何在实际中运用声明和验证呢?我们先从加密开始讲起。 MAC和签名认证消息验证码(message authentication code,缩写为MAC),是一串用来验证实体发送消息的数据,以确保消息不会被篡改。其基本思路就是使用散列函数对于消息和双方共享密钥(密码)进行摘要计算。散列函数的输出就是MAC。然后把MAC和其对应的消息一起发送给接收者。
接收者也有共享密钥,所以他可以从接收到的原始数据中计算出他自己的MAC,然后和传递过来的MAC进行对比。散列函数有个特性:同样的输入,计算两次的结果一定是一样的。如果输入不同— 哪怕只有一位的差别—最后的结果也是完全不同的。所以如果接收者的MAC和消息携带的MAC匹配,那么至少可以确定这个消息的发送者一定知道共享密钥。假设只有值得信赖的实体才拥有共享密钥(换句话说,就是共享密钥没有泄漏),那么接收者可以信赖这条消息。 散列函数是单向的:想通过散列函数的输出反向算出输入,在计算上基本是不可行的。如何保证共享密钥的安全性就至关重要了:不然攻击者可能获取到你的MAC,反向执行散列函数,进而获取你的密钥。这就太糟糕了。是否可以拥有这个特性,关键取决于你创建MAC的散列函数的实现细节。我不会在本文中进一步讨论这些微妙的细节。只是郑重提醒大家:千万不要试图去创造自己的MAC算法(译者语:同样的道理,千万不要试图去创造自己的加密算法,除非你是安全领域的专家)。请使用HMAC。 image 上述所有关于MAC的讨论仅仅是序曲:我们真正的主角是签名(signatures)。签名和MAC在概念上类似,但是使用密钥对(马上会有其定义)替换了共享密钥。在使用MAC的时候,至少有两个实体需要知道共享密钥:发送者和接收者。任何一方都可以生成有效的MAC,但是无法确定到底是哪一方(译者语:所以MAC不具备不可抵赖性)。签名不一样,其使用公钥验证,但是只能通过对应的私钥生成。因此,只拥有公钥的接收者只能验证签名,但是不能生成签名。这就让你可以牢牢地掌控谁可以签名。如果只有一个实体拥有私钥,那么就具备了不可抵赖性(non-repudiation):私钥的拥有者不能否认他们已经签名的事实。 如果你已经晕了,请冷静下来。它们之所以被称为签名,是因为它们确实类似现实世界中的签名。你肯定有过需要其他人审批的经历,对吧?你肯定想确保事后可以证明他们确实已经同意过了,对吧?很好,你要做的就是,写下你要申请的事情,然后让他们签字。 公钥加密技术让电脑可以"看见"证书和PKI建立在公钥加密技术(public key cryptography,也称为非对称加密技术—asymmetric cryptography)之上,使用密钥对(key pair)。一个密钥对包含一个可以向全世界分发和共享的公钥(public key),和一个必须被所有者秘密保管的对应私钥(private keyÿ |