一直以来,"对称加密"、"非对称加密"、"公钥"、"私钥"等这些词汇对我来说都是最熟悉的陌生词, 听着熟悉但是从未理解其中要义. 最近又搞了搞证书相关的东西, 出于学习需要,索性就把这些东西理解了一下.本文不说算法也没有具体的加密方法,只是帮和我一样有困惑的小伙伴通俗易懂地理解几个概念.
非对称加密
是相对于对称加密
而言的.
首先, 不论哪种方式的加密,目的都是保护被加密内容.
对称加密
先看百度的解释:
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
怎么理解呢?举个栗子.
小红新建了一个文档只想自己和小明看,于是小红为这个文档设置了密码(加密), 然后再发送给小明. 小明只要知道文档的密码就可以查看其中内容(解密).别人即使拿到文档想看,但没有密码(密钥)也无从查看里面的内容.
所谓对称
就是加密和解密的过程使用的是相同的密钥.
非对称加密
与对称加密不同,非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的"公开密钥
"(公钥)和"私有密钥
"(私钥).
公钥和私钥的关系是:
公钥和私钥一般成对出现,
如果你的消息使用公钥加密,那么需要该公钥对应的私钥才能解密;
如果你的消息使用私钥加密,那么需要该私钥对应的公钥才能解密.
非对称加密的作用是:保护消息内容, 并且让消息接收方确定发送方的身份.
再举个栗子
小红和小明互发邮件,并且邮件内容需要保密.
如果是对称加密,小明需要把唯一的密钥告知小红,小红使用该密钥进行解密即可查看邮件内容.但这样做, 一旦在传输密钥的过程中消息泄露, 保密性也就荡然无存.
很显然对称加密的安全性会低一些, 于是他们采用决定非对称加密的方式, 这样, 小明和小红就需要各自持有一对属于自己的公钥和私钥.
小明写的邮件只想让小红看, 那么小红有什么和别人不一样的特质呢? 没错, 她拥有一个只有她自己知道的密钥! 如果小明使用小红的公钥加密(公钥是公开给别人的), 那么就只有小红的私钥才能解密,这就达到了只让小红看的目的.(保护消息内容)
但是还有一个问题.既然小红的公钥是公开的,那么就可能产生有不明身份的人冒充小明, 使用小红的公钥加密然后给小红发邮件.
小明为了避免这种情况的发生,把邮件内容用自己的密钥进行加密,小红接收到邮件后,使用小明的公钥解密(只有小明公钥才能解开使用小明私钥加密的消息),如果可以解开,那么她就知道这个邮件的的确确是小明发的.(确定消息发送方的身份)
我简单画了一个图来表示这个过程:
小明发邮件小红接收的过程
.
小刚对邮件进行截获当我们想将写好的iOS程序运行到真机上(你的真机/测试人员的测试机/从App Store上下载应用的用户的手机等)时,很多地方会使用这种非对称加密的方式进行数字签名或者身份认证,从而保证程序的来源可信并且安全.
这篇文章只是简单对非对称加密做一些理解,后面我会另起文章对代码签名及数字证书等原理及过程进行阐述.
内容比较抽象, 也不知道我描述清楚了没有,如果没有的话欢迎大家提出意见和指正.
网友评论