Android 网络编程之HTTPS详解

1、HTTPS是什么?

1.1、HTTPS的介绍

HTTPS简称:超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS);

HTTPS是基于HTTP上扩展出的一种安全的传输协议,在很早之前,HTTP的不安全为人所诟病,而一些金融领域,涉及到敏感信息的通信,HTTP已经远远不满足需求了,所以安全的传输协议已经迫在眉睫了;

HTTPS协议发明出来的主要目的就是保护互联网的传输过程中,保护数据的隐私和完整性,最开始是由网景公司(Netscape)在1994年首次提出的协议,后来就扩展到互联网上了;

1.2、HTTP的痛点

HTTP协议,是我们目前使用最多,也是最广泛的协议,几乎我们无时无刻不在使用着它,但是HTTP有一个致命的缺点,就是不能进行安全的传输;

网络的世界是很复杂的,如果有人想要窃取或者篡改某些你要传输的数据,那么在HTTP协议上是很容易出现的,比如登录、转账这些极其敏感的操作,如果不使用安全的传输协议,那么就很容易被不法分子所利用,导致损失惨重;

那么安全的传输协议也就自然而然的诞生了,而想保证安全性,那么加密这一块,是必不可少的,而HTTPS就是基于这些加密算法,来保证了安全传输;

1.3、HTTPS是怎么工作的?

HTTPS是基于HTTP的基础上进行工作的,通过加密协议对通信进行加密,该协议称之为传输层安全性(TLS),以前是被称作为SSL;

该协议通过协商密钥,以及验证身份的方式,来保证通信的双方数据不被获取到,以此来保证数据传输的安全性;

而这其中涉及到很多算法,比如哈希算法,对称加密算法,非对称加密算法,数字证书等相关知识;

接下来我们来一步步分解,深入探索;

2、什么是加密?

2.1、加密

将内容转换为无法识别的密文,这个过程就叫做加密;

比如有一串中文:我是祖国的花朵。

那么加密后可能就变成:HSUUI&&*768SASKD&7980%8SHOS%^$hUSHHD&6788

那么上面的那一串密文是无法直接读取过来的,必须要通过解密后,才可以看到内容;

而加密的方式有很多,这里就先讲讲几种主要使用的加密方式;

2.2、哈希

哈希算法是不可逆加密算法;

为啥叫不可逆呢?

因为加密后的内容是无法被转化为原来的内容的,那么到这里你是否会有疑问?

既然加密后不能转化为原来的内容,那么这个加密还有什么用呢?

不可逆加密的用途,大多都是用于数据校验,不可逆加密算法有一个很大的特点就是,和原内容强相关,什么意思呢?

就是说原内容,经过不可逆算法生成的值,是和原内容息息相关的,如果原内容被篡改了一个字符或者几个字符时,生成的值就和原来的大不相同了;

所以这种特点非常适合于传输过程中的数据校验,判断数据在传输过程中是否被篡改了;

但是并不能避免数据被篡改,只是可以洞察到这种被篡改的情况;

3、对称加密

3.1、什么是对称加密

对称加密,简而言之就加密和解密使用的密钥是一致的;

也就是说使用对称加密的双方,都持有相同的密钥,用于加密和解密;

下面我们从一张图里可以形象的看出对称加密算法加密解密的流程;

image

对称加密中,有几种常见的数学算法,目的是为了让被加密的数据尽可能的复杂,避免被很容易的po解,那么常用的数学算法有哪些呢?

3.2、对称加密涉及的数学计算有哪些?

(1) 移位和循环移位
移位就是数码按照一定的顺序进行移动,比如有一段数码为12345678,那么其右移后变成23456781,左移后变成81234567;
(2)置换
将数码中的数据根据置换表,进行移位,移动后的数据会变得杂乱无章; 比如一段置换表为:2,4,1,5,3,6; 那么123456这个数据根据这个置换表,进行置换后,数据就变成了:315246;

当然我这里只是举例,实际的置换表有64位,远远比这个复杂;

(3)扩展

将数码中的数据扩展为比原来更长的数据,可以利用置换表进行扩展;

(4)压缩

将数码中的数据压缩为比原来更短的数据,同理可以利用置换表进行压缩;

(5)异或 为二进制布尔代数运算

(6)迭代

进行多次重复的运算,这在加密算法里很常见,可以让数据变得更复杂和更难以po解;

3.3、DES算法的工作原理

下面我们来分析一下最常见的对称加密算法DES,以及其对应的工作原理;

(1):DES描述

DES算法全称为Data Encryption Standard,即数据加密算法,是IBM公司研发出来的对称加密算法,DES算法是典型的分组加密算法,也是应用最广泛的对称加密算法;

(2):DES工作原理

先来看一张流程图:

image

这里涉及太多复杂的操作,一时半会讲不完,这里就先缩略了,感兴趣的可以看看这位大佬写的文章:算法科普:神秘的 DES 加密算法

DES非对称加密算法是最为常见的分组加密算法,其核心在于置换与移位的数学运算,由于其加密算法是公开的,那么密钥的保密就非常的关键了,只要密钥泄露了,那么数据就会轻而易举的被po解了;

4、非对称加密

4.1、非对称加密是什么?

非对称加密,理解起来很简单,就是加密和解密的密钥不一样,正如这个名称所说的非对称;

下面我们以RSA非对称加密来举例;

非对称加密有两组密钥,一组为公钥,一组为私钥,这里为啥要组来称呼呢? 这个与非对称加密的原理有关,请继续往下看!

非对称加密的密钥格式为(a,b),a和b可以为任何整数,比如公钥(1234,12),私钥(1234,34)这种;当然我这里只是举例,这里的公钥和私钥没有关联关系;

上面为啥要说我这里随便写的没有关联关系呢?因为公钥和私钥是一一对应的,也就是说用公钥加密的,只能用对应的私钥才能解开;

那么到这里你是否有疑问了,为什么非对称的加密和解密的秘钥不一致?而不和对称加密一样,通过算法可以加密和解密内容;

4.2、RSA非对称加密算法

下面我们来讲讲RSA的加密和解密算法;

假设我们加密的公钥为(n,e);

5、数字证书

5.1、什么是数字签名?

刚看完非对称加密,接下来我们来看看数字签名;

在看下去之前,我们来思考一个问题,在通信的双方,如果发生了第三方攻击,也就是有黑客截取了主机A发送给主机B的数据,并且进行篡改后,在发送给主机B,而这时候主机B拿到的已经不是主机A发过去的原始数据了,数据已经被篡改了,那么我们怎么避免这种情况发生呢?

答案是:数字签名

那么这里可能会有疑问了?我使用非对称加密不就行了吗,第三方就算截取了我的数据,但是还是解密不了;

没错,非对称加密虽然可以防止被po解,但是还是不能防止被篡改,要是攻击者,把截取到的密文,修改了几个字符,那么接收者通过私钥解密后的内容就已经不是原来的内容了,所以这种方案还是不严谨;

我们先来看一下什么是数字签名?

数字签名其实就相当于人类的签名,数字签名就是通信的时候对数据进行签名,签名的作用就是通信的双方可以辨识该数据的身份,以免被伪造身份;

那么数字签名是怎么实现的呢?

假如正在通信的主机A和主机B,主机A持有私钥,主机B持有主机A的公钥;

首先,主机A使用Hash算法对数据生成一段摘要值,然后再用私钥对这个摘要值加密,并将这个摘要值附在数据后面,发送给主机B;

主机B接收到数据后,使用公钥对这个摘要进行解密,然后再使用Hash算法对数据生成摘要值,将生成的摘要值,和解密后的摘要值进行比较,如果一致,那么则认为该数据持有的人是对的人,而不是被假冒的第三方;

第一种情况,使用公钥加密,私钥解密:

image

第二种情况,使用私钥加密,公钥解密:

image

看到这里,你是否会有疑惑,这两种情况是否还存在风险呢?

假如第一种情况,公钥被别人盗取了,那么别人就可以用这个公钥来假冒身份进行通信,而通信的对方识别不出来;

第二种情况,私钥泄露了,那么同理别人也可以用这个私钥来假冒身份进行通信;

那么怎么解决以上这两种问题呢?

那么就轮到我们的主角登场了,那就是:数字证书;

5.2、数字证书

数字证书是什么?

说的通俗易懂的,数字证书其实就相当于身份证,用于证明你是你,而不是被别人冒充的你,而数字证书的作用,用于在服务器出示证书验证身份用的;

作用就是为了避免第三方攻击,也就是别人冒充你去和对方进行通信,在通信的时候起到鉴别身份的作用;

数字证书是怎么起到鉴别身份的作用呢?

数字证书是由一个权威机构颁发的,这个权威机构叫CA,英文全称:certificate authority,又被称为证书中心;

这个CA中心,类似于公安局那种权威机构,给我们办理的身份证就是权威的,其他机构可信任的;

而CA中心就是这种原理,颁发的证书,可以被浏览器和客户端所信任;

总结

HTTPS的实现原理

HTTPS的实现,等于HTTP+SSL,而SSL协议做的主要工作是,帮助通信的双方,建立起通信的安全通道,通过四次握手,进行身份验证,密钥协商等操作,让服务器与客户端通过对称加密算法进行数据的加密,然后通过非对称加密算法来进行数据的签名,保证数据的完整性,以此来达到安全传输的目的;

请看最后总结的流程图:

image

从这里可以看出,最重要的一步,就是SSL协议,是HTTPS的基石;

那么到这里HTTPS相关的知识就已经讲完了,如果你有更好的观点,或者文中有哪些不合理的,都可以在评论区留言;

本文转自 https://juejin.cn/post/6854573206737518606,如有侵权,请联系删除。

最后

在这里插入图片描述

全套视频资料:

一、面试合集

在这里插入图片描述

二、源码解析合集

在这里插入图片描述

三、开源框架合集

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

推荐阅读更多精彩内容