iOS程序的证书和签名机制

2019-05-29 11:46

从真机调试角度理解ios证书机制 非对称加密 理解非对称加密是理解证书机制的关键。非对称加密就是加密密钥和解密密钥是不同的加密方式。典型用法如下: 对信息保密:使用接收人的公钥对明文加密,然后传输给接收人。这样密文只能通过接收人的私钥解密,即便传输过程中密文被截获也是无法解开的,这就保证了信息传输的保密性。 验证报文所属人身份和防止篡改(签名):使用发送人的私钥对报文进行加密,就是发送人对报文进行了签名。签名后的报文只能通过发送人的公钥来解密,这就保证了报文的真实性,即报文确实为发送人所属。另外如果密文在传输过程中被截获并修改之后再发送 ios签名,著名的RSA算法就是非对称加密算法。

  数字签名

  前面说过通过私钥加密,公钥解密能起到签名的作用。然而往往不是直接对明文原文进行签名。

  非对称加密算法有一个缺点就是对很长的明文进行加密比较耗时,因此在实际使用中通常都是先将报文通过摘要算法得到摘要,再对摘要进行加密,然后将明文和加密后的摘要以及公钥一同发送出去。接收人先对摘要密文进行解密,再对明文使用摘要算法得到的摘要和解密后摘要进行比对,如果一致则说明明文没有被篡改过。这就是所谓的数字签名。

  对于摘要算法这里不再叙述,典型的摘要算法有MD5和SHA。

000138
  数字证书

  设想一种情况,A为了欺骗B,可以向B发送一份伪造是C发送的报文。A用自己的私钥对文件加密,连同A的公钥一并发给B,并谎称是公钥是C的。那么B怎么知道公钥到时是不是C的呢?这就轮到数字证书出场了!

  首先,证书的存在,必然是为了证明某种事实。四六级证书证明了我的英语水平、驾驶证证明了我有驾驶资格。数字证书的存在,则是为了证明证书持有者的身份,好比一张网络身份证。数字证书的颁发者是CA(证书机构),受证者即为证书的所有者,可以是企业或个人,也可以是网络设备。数字证书即被CA签过名的证书,就好像被权威机构盖过章,这样证书的有效性就能生成了。

  之所以说数字证书能证明证书持有者的身份,是因为:证书中包含了证书持有者信息和证书持有者公钥,通过权威机构(CA)的认证,数字证书就有了其有效性,就好比身份证被公安局盖了章之后,就能证明一个人的身份了。

  这样一来,A就无法伪造成C了。因为B要核实报文持有者的身份,只要将A发送过来的数字证书拿去CA查询,数字证书中的公钥已经和证书持有人绑定在一起了,一查询即可知道公钥到底是A的还是C的了。这个过程就好像A给B出示了一张身份证,B一看就知道对方到底是A还是C了。

  ios证书申请

  要想在真机上运行app,首先要做的就是向MC(Member Center)申请开发证书,来证明你是一个开发者。在申请开发者证书之前需要安装苹果开发者根证书,安装这个证书意味着我们的开发工具对此CA的信任,从而可以用此CA签发的其他证书进行签名和打包。该证书随着XCode的安装自动安装在了Key Chain中。