iOS开发者证书-详解/生成/使用

现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密.

对称密钥加密

对称密钥加密(Symmetric-key algorithm)又称为对称加密, 私钥加密, 共享密钥加密.

这类算法在加密和解密时使用相同的密钥.

例如: 最常见的应用场景 - 系统登陆.

要成功登陆系统, 你必须输入正确的密码, 这密码是唯一的, 是与创建时一样的. 同样 的, 其他人要成功登陆, 他也要输入这唯一的正确的密码.

公开密钥加密

公开密钥加密(public-key cryptography, 也称为非对称密钥加密).

这类算法在加密和解密时使用不相同的密钥.

这类加密算法对应有两个密钥: 公钥和私钥. 公钥, 是公开的, 任何人都可以获得; 私钥 , 是私密的, 只由持有者所有.

这类加密算法的特点是: 用公钥加密的内容只能用私钥解密, 用私钥加密的内容只能 用公钥解密.

这类加密算法的特点决定了, 它即可以用于实现数据加密, 又可以用于实现身份认证 (数字签名).

加密 & 认证

我们需要区分加密和认证这两个基本概念.

加密是将数据资料加密, 使得非法用户即使取得加密过的资料, 也无法获取正确的资料 内容, 所以数据加密可以保护数据, 防止监听攻击. 其重点在于数据的安全性.

身份认证是用来判断某个身份的真实性, 确认身份后, 系统才可以依其身份给予相应的 权限. 其重点在于用户的真实性.

要实现这两个要求(加密和认证), 都需要用到加密算法, 但并不是所有的算法都可实现身 份认证. 身份认证现在一般使用公开密钥加密算法.

下面将重点说明如何使用公开密钥加密算法实现加密和认证.

如何实现加密?

对于某一用公钥加密的数据, 只能由对应的私钥解密.

例如, 我要给你发一封加密邮件. 我必须有你的公钥, 我用你的公钥给邮件加密. 这样 就能保证邮件不被别人看到, 而且不被篡改. 因为只有你可以用你自己的私钥解密.

如何实现认证?

对于某一用私钥加密的数据, 只能由对应的公钥解密. (记住, 私钥只由持有人所有)

用我(A1)的私钥给邮件加密, 发给你(B1)之后, 你能用我的公钥解密. 这样就能保证 邮件是我(A1)发的.

数字身份证 & 数字证书(Certificates) & 数字证书认证机构(CA) & 根证书 数字身份证

数字身份证, 是身份标识方式的一种, 是一对"钥匙", 即一对公钥&私钥. 它一般 用本地系统工具生成.

o

数字证书认证机构

数字证书认证机构(CA, Certificate Authority), 是负责发放和管理数字证书 的权威机构, 并作为交易中受信任的第三方, 承担公钥体系中公钥的合法性 检验的责任.

数字证书

数字证书, 是一种用于计算机的身分识别机制. 数字证书不是数字身份证 , 而是身份认证机构(数字证书认证机构)在数字身份证上加上数 字签名. 这一行为表示身份认证机构已认定这个持证人. 这里的"认定"是怎么做到 的呢? 参考\'如何验证数字证书的有效性?\'.

数字证书一般含这样一些信息:

证书发布者

证书持有者

有效期(证书在这个时期之前或之后无效)

证书持有者的公钥(*)

证书扩展, 包含一些额外信息

所使用的哈希算法

数字签名, 该数字签名是对以上信息的哈希值用CA的私钥加密生成(*)

如何验证数字证书的有效性?

即, 如何确保数字证书是经过CA认证的呢?

注意: 对于某一用私钥加密的数据, 只能由对应的公钥解密.

原理: 计算数据证书的数据信息的哈希值H1, 对证书上的数字签名用CA的公钥解密得 H2, 如果H1等于H2, 则该证书有效, 且是经CA认证的.

CA的公钥如何获得呢? 它包含在根证书里.

根证书

根证书, 是CA给自己颁发的数字证书, 是信任链的起始点. 它一 般放在CA网站上, 供任何人下载.

数字签名

数字签名, 是一种类似写在纸上的普通的物理签名, 但是使用了公钥加密领域的 技术实现, 用于鉴别数字信息的方法.

数字签名具有完整性, 不可抵赖性(即不可否认性).

从\'如何实现认证?\'一节, 我们知道可以利用公开加密算法的特点实现"认证", 也就是签 名. 但是这会有一个问题, 任何人都可以或可能冒充我(A1)! 即, 任何人都可以冒充我 (A1)把他经用他的私钥加密的数据和他的公钥发给你. 也就是说, 你无法确保你接收到的 公钥就是我(A1)的!

所以, 这就需要一个机制来保证. 这机制就是基于前面所说的"数字证书"和"CA". 它可确 保我(A1)是经过CA认证的.

数字签名原理

签名:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzpdd.html