https原理

https中用到了--对称加密&非对称加密
open-ssl


急速开发系列——Retrofit中如何正确的使用https? - 代码之道,编程之法 - 博客频道 - CSDN.NET
http://blog.csdn.net/dd864140130/article/details/52625666
很多文章对客户端https的使用都是很模糊的,不但如此,有些开发者直接从网上拷贝一些使用https的“漏洞”代码,无形之中让客户端处在一种高风险的情况下。

今天我们就对有关https使用的问题进行深入的探讨,希望能解决以往的困惑。对于https,需要了解其工作原理的可以参考https是如何工作的?,更多关于https的问题我会站在客户端的角度在后面陆陆续续的写出来。


最近在看到这么一篇讲解Https原理的文章,语言精炼,通俗易懂,特地将其翻译下,原文在此how does https work
加密算法简介
正文开始之前,我先来解释简单的解释下对称加密和非对称加密.
对称加密采用对称密码编码技术,也就是编码和解码采用相同描述字符,即加密和解密使用相同的密钥,实现这种加密技术的算法称对称加密算法。对称加密使用简单,密钥较短,加密和解密过程较快,耗时短,常见的对称加密算法有DES,3DES,lDEA,AES,RC4等。
非对称加密与对称加密不同,其加密算法需要两个密钥:公开密钥(publickey)和私有密钥(private),两者是一对的。如果用公钥加密,只能用私钥才能解密。非对称加密保密性好,但加密和解密花费的时间较长,不适合对大文件加密而只适合对少量的数据加密。常见的非对称加密算法有RSA,ECC,DSA(数字签名)等。
Hash算法是一种单向算法,通过Hash算法可以对目标数据生成一段特定长度、唯一的hash值,但是不能通过这个hash值重新计算出原始的数据,因此也称之为摘要算法,经常被用在不需要数据还原的密码加密以及数据完整性校验上,常用的算法有MD2,MD4,MD5,SHA等。

现在我们对对称加密,非对称加密及Hash算法做了简单的说明之后,就可以开始了解https的工作原理了。
https是如何工作的?
这篇文章是我在我团队中分享的。很多人不理解https的好处,不理解https的原理,因此我将这篇文章也分享给大家。
加密(Cipher)
在java 1.2时,引入JCR(java 加密扩展)系统,用来负责java中的密钥和证书。
我们都知道,如果我们想要加密或解密一些信息,我们必须要有一个密钥。这好比你想要开门或者锁门,必须要有钥匙一样。
在java中,密钥由KeyGenerator或KeyPairGenerator生成。前者用来生成对称密钥,后者用来生成非对称密钥。
对称密钥:使用同一个密钥进行加密和解密
非对称密钥:使用不同的密钥进行加密和解密,通常被称为公钥(public key)和私钥(private key)。 公钥可以广泛传播,但是私钥只有其所有者知道。在一个安全的非对称密钥加密方案中,当信息用公钥加密后,只有用私钥才能解密。所以,即使一个黑客拿到你公钥加密过后的信息,也无法解密它,因为它没有配对的私钥。这样,传输的消息就是安全的。

证书(Certificate)
在现实中,如果你进入到钻石专卖店中想要买一颗钻石,你怎么知道钻石是真的?作为一个普通人来说,我们没有钻石方面的知识,但是如果这钻石有个由美国政府颁发的许可证,我们就会相信它是真的。(去过珠宝店的同学都知道,每件珠宝都有自己的鉴定书)
证书的作用也是如此。在计算机世界中,它可能是包含一些密钥,是另一个证书(姑且称之为证书B好了)。这些密钥是我们需要的,而证书B是一个许可证,用来证明这个证书是可信赖的。
做个简短的解释,每个钻石都有自己的“身份证书”,但是如何说明这个身份证书是合法的,而不是自己伪造的?因此,我们需要一个权威的机构来证明这个钻石的身份证书是合法的,如果这个钻石的身份是合法的,该权威机构就会为其颁发一个“许可证”,这个许可证就相当于上面我们说到的证书B。可以看到,证书B的目的就是证明这个身份证书是这个钻石的身份证书,即证明某某东西是某某东西的东西

问题来了:我们怎么确定证书B是可信赖的呢?这个问题非常棒。
Android已经把将近150个CA根证书(数字证书认证机构认证过的证书)内置在我们手机中。这150多个证书被全世界信赖,他们就像是美国的大法官。
这150多个证书类似我们刚才说的证书B,分别用来证明某某东西是某某东西的东西

B证书中里有另外一个证书(姑且称之为C证书),我们通过检查C来确定C是否是可信任的。。。通过这个证书链,如果我们找到的最后一个或根证书 和手机中预置的150个证书中某个相同,我们就可以这个证书原件(此处就是B)
这里我对证书链进行说明。证书之间的信任关系是可以嵌套的。比如,CA信任D,D信任C,C信任B ,B信任A。。。这就是证书链。只要我们信任证书链上的头一个证书,那么后续的证书都是可以信任的。这里也就是如果我信任了证书CA,那么后面的D,C,B,A都是可以信任的。这里来打个比方,架设军队中的每个士兵都只认识自己的直接上级,那么这时候总司令怎么确认某个士兵是自己部队 当中的呢?总司令(CA)会问的直接下级(D),而司令的直接下级又会找自己的直接下级,依次往下找…如果最后能找到这个士兵直属上级,那就说明这个士兵是该部队当中的。

附:证书有多种格式
x.509 x.509证书通常用于包含一个公钥

PKCS12 PKCS12证书通常用来包含一个私钥。因此,PKCS12需要密码才能打开。

Https
现在我们来了解https部分。Https(http over ssl)包含上面提到的加密和证书两部分,被设计用来在Internet安全进行通信。
如何安全的通信?

如何安全通信呢?对称加密是我们最先想到的方案:将数据进行加密,然后将加密过的数据和密钥同时传到服务器,服务器使用这个密钥解密加密过后的数据。
这里写图片描述

现在,我们来看看这种可能的场景:黑客截获了该通信,这意味着黑客拥有了密钥和密文。一旦黑客有了密钥,那么解密密文就是很简单的事情了,我们的数据就这样泄漏了。
如何使用非对称加密?
上面的解决方案非常不安全。我们继续往下看。使用非对称加密怎么样?

这个想法非常棒:服务端发送给你公钥,你使用这个公钥加密数据。因为服务端是唯一拥有私钥的, 这意味着只有服务端能够解密密文。即使黑客截获了该通讯,但因为没有私钥也就无法解密密文。
但是,非对称加密比对称加密更加耗时。为了用户体验,不建议使用非对称加密这种方式来加密/解密大量的数据 。
最终方案

前两种方案都无法解决我们安全通信,我们怎么结合上面的两种方案呢?来看看最终方案:
这里写图片描述

上面这张图片已经清楚的展示了HTTPS工作的流程。
1.[Server]生成一对密钥:公钥和私钥,我们称之为“KeyPub”,“KeyPri” 2.[Server]服务端将公钥(KeyPub)发送到客户端 3.[Client]生成一个对称密钥(姑且称之为key2),然后用key2加密数据。 4.[Client]使用公钥(KeyPub)加密key2.这时,key2是安全的,因为只有服务度有私钥KeyPri 5.[Client]发送用key2加密后的信息及用KeyPub加密过的key2到服务端 6.[Server]服务端使用KeyPri解密得到加密过的key2,得到真正的key2 7.[Server]使用key2解密消息正文。这样,数据就被安全的传输到了服务端。
结论
由于对称加密比非对称加密快,https决定使用对称加密来加密数据,使用非对称加密对称加密生成的密钥,以确保安全。
这篇文章最后并没有很好的说明证书的作用,因此如果你以前没了解过,到此可能产生一些困惑,后面我会再单独写一篇文章来说明下。

--EOF--

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 众所周知,http协议是以明文进行传输的,http在明文的传输过程中很容易出现数据被拦截、篡改、监控的危险,这种情...
    Tony_Qiu阅读 1,481评论 0 8
  • HTTPS 简介 在日常互联网浏览网页时,我们接触到的大多都是 HTTP 协议,这种协议是未加密,即明文的。这使得...
    Kerwong阅读 11,981评论 7 25
  • 2018-Read-Record 记录我的2018学习历程 文中首先解释了加密解密的一些基础知识和概念,然后通过一...
    NinthDay阅读 11,268评论 8 105
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    sunny冲哥阅读 1,372评论 0 3
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    已认证用户阅读 3,832评论 1 4