[开发证书] Apple PKI

PKI是一套通用的加密方案,可以保证你的系统安全的运行和通讯。苹果公司建立了Apple PKI,以支持CA签名的X.509证书中包含的公共/私有密码密钥的生成,发行,分发,吊销,管理和管理。



 


 

证书政策(CP)和认证实践声明(CPS)

苹果根CA: 苹果公共CA:

苹果根证书计划

为了更好地保护Apple客户免受与使用公钥基础结构证书有关的安全问题并增强用户体验,Apple产品使用通用存储来存储根证书。您可以通过Apple Root Certificate Program申请将根证书包含在Apple产品中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深度内容:了解现代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 = hmac(data, key)

hmac是散列函数,data是原始消息,key是共享密钥

接收者也有共享密钥,所以他可以从接收到的原始数据中计算出他自己的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)

我们来回顾一下上一个段落的内容,因为它十分重要:公钥加密体系的安全性取决于私钥的保密性。

你可以使用密钥对做两件事:

  • 使用公钥加密(encrtpt)数据。只有对应的私钥可以解密那些数据。
  • 使用私钥对数据签名。任何拥有对应公钥的人都可以验证该签名,证明是哪个
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值