【我的架构之路】HTTPS之加密算法与安全传输以及如何和小姐姐进行安全通信

1 篇文章 0 订阅
1 篇文章 0 订阅

所谓“先把厚书读薄,再把薄书读厚”。
本文采取举例来讲解加密算法以及如何与小姐姐进行安全通信。

对称加密算法

场景: 有一天我在华科听宣讲会认识一个可爱的小姐姐,但是很快我回到了自己学校,却很想给她写信,但是写信可能会出现信息安全问题,那个“可恶”的邮递员恰了柠檬对我写给小姐姐的信进行了消息伪造、修改、监听等行为。于是我想到了学过的“加密算法”。

这时候我将小姐姐比作服务端(Server),而我是客户端(Client)

  1. 我先发送信息询问小姐姐的公钥
  2. 小姐姐告诉我她的公钥是abcdfg
  3. 此时我创建一个PSK(用AES算法加密了这个公钥),再用小姐姐的公钥加密这个PSK发给了小姐姐
  4. 小姐姐收到这个信息,她用私钥解开就知道了“我们现在要使用对称加密算法了,私钥是123456”.

在这个过程中邮递员没有直接接触到小姐姐的私钥,他就无法知道小姐姐最后看到的是什么,
一旦我和小姐姐都知道了PSK就可以使用对称加密算法了。

对称加密算法


信息传输安全

例子1:《写信》

在写信的过程中,手是私钥,写出来的信是签名后的数据,笔迹是公钥
签名后的数据可以被公开,但无法被伪造,因为邮递员无法控制我的手也模仿不出我的笔迹。

例子2:《说话》

在交流的过程中,声带是私钥,说出来的内容是签名后的数据,音色是公钥
同样所有人都可以听到我的声音,但是他们无法模仿我的音色。


数字签名+CA认证

上面的问题引出了另一个问题,这个“签名”由谁来签?

HTTPS需要解决信任问题,解决信任问题需要“信任链”。

比如在一场校内联谊,我突然站起来说“hello大家好计科班长Luvsta!”
可是到场的其他班不知道我是计科班长,但咱们班一个男生的兄弟是联谊班的学生
他说:“你看!这是我们班长Luvsta!”
这个时候联谊班的同学会说:“哇~这就是你们计科的班长!”

如何解决“信任链”问题呢?
以上案例就很好的解决了信任链问题,我信任计科班长Luvsta,我朋友信任我,所以我朋友也信任计科班长。

以下例子能解释为什么需要“安全传递信息”
在现代互联网中,人的真实身份和网络身份是分离的,网上的人可能是一个一秒百行的“键盘侠”,可生活中可能是一个身高不足160体重不足80斤“柴火人”,他们之所以敢到处“喷人”是因为在网络中大家都是一个匿名的身份,大家所看到的仅仅是一个ID,这个ID和线下生活中的这个人没有任何关系。

CA机构
例如Lets Encrypt、DigiCert、赛门铁克都是熟知的CA机构,它们颁发的数字证书称之为“密钥对”。证书由CA机构自己的私钥签发称之为“Private Key”。
通常我们使用谷歌的Chrome浏览器打开一个URL时,如果Chrome信任这家CA,这家CA认证了的网站URL,此时Chrome就知道你访问的URL是可信任、安全、绿色的。
信任链关系
此时我们结合第一个寄信例子加入CA数字签名后如何通信

同样小姐姐是服务端(Server),我是客户端(Client)

  1. 我询问小姐姐的公钥
  2. 小姐姐告诉我一个带有CA签名的公钥
  3. 我接收到后比对签名,验证它的确是受信任的CA机构颁发的证书
  4. 此时我用公钥加密了另一个私钥PSK发给小姐姐
  5. 小姐姐用私钥解密了PSK
  6. 这个时候我们都知道了PSK,用就对称加密算法以PSK为密钥加密内容互相通信了

在这个过程中被分离的身份被拼接到了一起,似乎完美的解决了信息安全这个问题,我写给小姐姐信不会被“邪恶”的邮递员伪造、修改、监听。
如何安全的给小姐姐写信


疑点解答

110这类机构是不是给接受方(客户端)只提供公钥,而发送方(服务器)提供公私钥对?如果给多个小姐姐写信,她们签名后的公钥是不是都用同一个110公钥去校验?
在上面的例子里,Luvsta(我)是发送方,作为客户端。小姐姐是接收方,作为服务器。CA(110)是认证的小姐姐。
如果给多个小姐姐写信,我需要知道多个小姐姐的公钥。这些公钥可能并不是同一个110签发的,但一定是受信任的机构签发的,比如119可能也会签发。但12306不是受信任的机构,无权签发证书。

如果先用小姐姐的公钥加密, 再将加密后的信息用Lusvta的私钥加密
信息可能会被伪造。邮递员自己可以整一个密钥对,用邮递员的私钥加密。小姐姐无法确定信息是否是luvsta的。其实,这个逻辑反向过来,靠CA认证luvsta,其实是可行的,只是双向都需要密钥对,算法比较复杂。只需要服务器端(小姐姐)具有RSA密钥对即可。

私钥都是具有相对唯一性,如手和声音都是相对他人而言的唯一性,公钥是他人知道且拥有的,如文字信息等等,具有大众通识性的都算是公钥,我们的语言就是一种公钥,但是某些方言就是自己同乡人的私钥
方言也是公钥。私钥是每个人都拥有一份且永远不会公开的。例如你的家门钥匙,你的声带,你的手。他们对应的公钥是你的家门,你的音色,你的字迹。

公钥和私钥都不是同一个东西,为什么能相互加解密。比如用公钥是"123”,私钥是"456”他们是怎么相互加解密的?
比如我规定一个算法叫“乘法”,你把你要发给我的数据全都乘以“公钥” 2,我解密时用我的“私钥” 1/2 乘以你给我的数据,这就实现了一个公钥加密。

假如世界上没有人会算除法,没有人会根据 2 算出来 1/2,没有人知道怎么根据算法 A0 * 2 * x = A0 解出来 x,那么这个加密算法就足够强了。

但是显然大家都会算除法,所以人们找了一个特别恶心算法,大质数分解和乘方求余数,你(至少现在)不能根据公钥算出私钥,现在 RSA 还足够安全。

CA认证能力
认证的过程在应用层发生,认证的目标是域名。

HTTPS就是加密包装算法吗
HTTP协议基础上额外增加一层,在这一层里使用类似上述的加密算法,就是安全的HTTP,HTTPS。同理,websocket也可以加这一层,就是安全的Websocket,wss。ftp也可以变成ftps。RSA算法是基础,HTTP是协议,它们可以组合,形成安全的协议。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值