00:00
大家好,欢迎大家继续收看上硅谷的link云计算视频,我是刘川老师。那么上节课呢,讲了一下关于SSH的概念及应用,以及呢,SSH登录验证模式当中的用户和密码的登录验证模式,那么这节课来讲一下关于密钥对的登录验证模式,比如说。在我们的这个账户密码的登录验证模式当中啊,我们已经用到了密钥对,为啥这个地方还要单独讲一下密钥对呢?注意我们在讲账户名和密码的验证模式的时候,虽然已经涉及到了密钥对,但是那个密钥对啊。只是单方向的,也就是说最终呢,我们的客户端虽然是拿着服务器的公钥把。把什么?把数据包加密了发给服务器,但是过程当中加了密的内容仍然有几率被别人破解掉。那破解之后是不是别人还是能拿到对应的账号密码呀?那最安全的就是没有账户名和密码,那这样呢,当没有账户名和密码的时候,整个登录过程就会更安全一些,所以说呢,我们的所谓的这种密钥对的登源模式实际上是。
01:10
客户端和服务器端双向密钥对的一种登录验证模式,也就是说不再使用密码了。不再使用密码了。所以说这种双向的密对验证。不再使用密码的这种东西。就更安全一些啊,就更安全一些,那在我们讲这个东西之前啊,我们先来看一下这个图,我们先梳理一下关于这种双向的密钥,对的这种。模式。首先啊,还是客户端向服务器发送什么连接请求,注意啊,是发送连接请求。发送连接请求时呢,会把自己的公钥文件呀发给服务器一份。发送连接请求时,把自己的公钥发给服务器干嘛呢?问服务器。服务器。
02:00
你上面有没有存着我的公钥文件?啊去连接它,然后呢。问一下服务器,我发给你的这个公钥在你那儿有没有存一份?啊。如果有存着的话,也就是说如果事先服务器上就已经有了客户端的公钥的话,那这个时候就会去对比一下。药和它存着的公钥是不是一致的?若一致,则允许,干嘛呀,则允许。请求。如果说没有。比如说客户端向服务器发起请求了,联系请求了,发了一个公钥给他,说那个你查一下你那有没有这个公钥呀。然后服务器说查了一下没有,那这个时候服务器给客户端的回执什么呢?服务器给客户端的回执叫。此公钥未在服务器端注册。注意,叫此公钥未在服务器端。OK,会出现这样一个情况。然后呢,假如说咱就说正常的,如果说服务器端已经有了客户端公钥。
03:05
他已经存了。客户端的公钥。当我们的客户端发起连接请求时,并且把自己的供养发过去时。发过来的这个公钥。和已存着的功效是不是就能对比成功呀?是不是能验证成功呀?在这个时候服务器才会给客户端干嘛呀,才会给他。发送回执。这个回执啊,和我们之前讲那个用户密码那个回执很相似。验证本地公钥和发过来的公钥。是否一致,若一致,则会生成一段challenge。并。干嘛呀,使用公钥加密,再往回发。注意这个时候要干两件事,他这只写了一件事啊,哪两件事呢?注意,这个时候由于客户端去连接服务器,那服务器为了保证和客户端之间这个传输安全,服务器是不是会把服务器的公钥。
04:06
发给客户端呀,也就意味着这个时候的服务器。会有三个密钥文件,一个是什么呢?一个是服务器的S的。公要。一个是服务器的。自由。还有一个是客户端的。工要。比如说这个时候服务器上会有三个这种密钥文件啊。一个是服务器的公钥,服务器的私钥,还有客户端的公钥。那注意,首先第一个事儿是先要把自己的公钥给客户端发一份,然后呢,你会发现客户端需要接收一个指纹密钥,刚才我们那个上节课,我们那个登录的时候已经看到过这个。要接受一下这个密钥对吧。然后呢,其次呢,第二个是就是。会生成一段challenge,这个呢,我们又称之为叫质疑信息,实际上就是他随便找了一个数据,然后呢使用。
05:04
客户端发给他的。这个公钥文件进行加密。上使用客户端发给他的共享性加密,为什么?为什么要使用客户端发给他的工业产品呢?因为客户端有客户端的私钥。客户端也有自己的公钥,那只有拿着客户端的公钥加了密,客户端才能解开。你拿服务器的公钥加密,客户端是解不开的,所以说这个时候呢,第二件事就是服务器会拿着客户端的私钥文件。啊,公钥文件客户端的公钥文件来将这段。Challenge加密并且发给客户端。然后这个时候。发给客户端之后,客户端会拿着什么呢?会使用自己的私钥进行解密。然后呢,这个地方他说直接会把这个challenge返回给服务器,注意我是这样的,没有这么简单啊,没有这么简单。
06:04
这个时候。由于客户端有三个密钥文件,服务器端有三个密钥文件。客户端的三个密钥文件是什么呢?客户端的C开头的啊,客户端的公钥。客户端的私钥。服务器的功用。因为连接请求发过去,服务器就给他把。中药发过来。服务器端有什么呢?有服务器的公钥。服务器的私钥。客户端的公钥。这个时候,当客户端使用自己的私钥解开了那个challenge信息之后。质疑信息之后,会再拿着服务器的公钥将challenge再加密一次,OK,这个地方比较绕,我拿一个具体的密码来做这个具体的challenge信息来做这个举例啊,比如说。服务器啊,为了验证客户端是不是有它的公钥,并且是不是对应的这个公钥私钥是一对的。
07:02
服务器啊的这个challenge呢,我们姑且用123456来。来这个。代替。产的,这信息我说了。服务器在给客户端发的时候是拿着客户端的公钥加密。假设123456在经过。客户端公钥加密之后变成了ABCDEF。我就不写全了啊。OK,那也就意味着服务器往客户端方式发过来的是ABCDEF。而客户端在接收到ABCDEFF之后,发现是自己的公钥加密的,那是不是拿着自己的私钥解密,那我问你对应的公钥和私钥是一对,那私钥把ABCDEF解出来之后,是不是就是123456啊。那注意。这个地方它写的呢,是直接把123456回给服务器,那服务器就证明你是,你确实是那个人,没有问题,可以使用,但是实际上不是这样的。
08:00
实际上还多了一个步骤,那就是客户端有服务器的公钥呀。客户端有服务器的公钥呀,那客户端有服务器的公钥,这个时候干嘛呢?客户端就会再拿着123456,再通过服务器的公钥进行加密,把123456通过服务器的公钥加密,假设服务器的公钥把123456加密之后变成了A1B2C3。客户端给服务器发的时候,发过去的就是A1B2C3 a1b2c3,那当服务器接收到。A1B2C3之后发现这一串字符串是由自己的公钥加密的,那服务器是不会拿着自己的私钥解密,那服务器拿自己的私钥解密,解出来之后是不是又解成了123456,你会发现服务器最终收到的和当初他发给客户端的是不是都是123456,那这个时候。服务器端就相当于验证了这个客户端是什么。
09:03
可以。安全登录他的那个客户端。比如说验证了客户端的身份,是允许登录他。OK,那这个时候服务器才会让客户端和他之间建立一个安全的一些安全的这么一个。然后呢,后期的数据传输都会通过这样一个什么。密钥对的方式,加密的方式来进行传输。这是我们的一个。密钥,对的,这么一种验证模式。下面呢,我是写了一个简化版的一个说明,我们下面来看一下这个地方。这是我给大家总结的一个图。SSH密钥对的验证模式。呢,就把刚才画那个草图综合起来啊。然后呢,上面写了一个注意事项啊。若第三个步骤对比失败,则服务器会通知客户端,此公钥未在服务器端注册,无法登录。这个是。会见到的,那OK,我们来看下面这个关于。的这个图首先有一个前提条件。
10:04
前提条件是客户机啊,已经把自己的公钥呀放到了服务器上,也就是说在第一次连接的时候呢。客户端上是没有这个服务器公钥的是没有的。你看这我用的是虚线代表。然后呢,但是客户端已经想办法把自己的客户端的公钥放到了服务器上。也就意味着这个时候呢,会出现一个问题。客户端有一对密钥。对自己的。服务器上有一对密钥,对自己的以及客户端的公钥。好了,第一次连接请求。客户端拿着自己的公钥去请求连接服务器。服务器要求客户端。干嘛呀?接收自己的公钥文件,也就是说你去连接人家的时候,人家说了,你先把我的公钥存一份。OK,这个时候就形成了,当第一次连接请求之后呢,这时候就形成了客户端和服务器都有了三个ma文件。
11:05
OK,这个理解吧。OK,下一个第二步骤。服务器在接收到了客户端的公钥。服务器在接收到了客户端的公钥,比如说客户端在第一次连接使用时,会发一份公钥过去,他会再发一份。他发过去的公钥和已经存放了的公钥做对比。要做对比,如果在这个存放公告的位置查到了客户端发过来的公钥,则证明什么已经注册过了,这个客户端已经在服务器上注册过了,可以进行啊,什么登录请求,注意啊,是登录请求,这个地方是连接请求,下面是登录请求,也就是说你可以来登录了。但是你要拿着一定的证据才行,OK,这个时候还没完。为什么呢?因为有可能。客户机发过来的公钥在服务器上没有,我说了没有的时候会出现啥呀,没有的时候告诉你啊,什么无法登录,就这个地方,若不一致,则直接拒绝登录请求。该公钥未猪草。
12:06
若一致,则。使用。则服务器会干嘛呀?使用客户端的公钥加密一串质疑信息发送客户端,就是刚才我所说那个例子,比如说密码是123吧,简单点。密码是123,呃,不是质疑信息是123,会拿着客户端的公钥把123加密,假如说加密之后是ABC。服务器就会把ABC发给客户端,由于是经过客户端公钥加密的,那只有客户端私钥你能解,那客户端在接收到ABC之后会拿着。这个四要把ABC。又解成了123。然后这个时候呢,一定要让服务器知道我解成功了,你是不是得把123告诉他呀,但是直接把123告诉他,不是这样的啊,不是这样的,那直接把123告诉他之后,别人是不是把123解锁,别人也告诉他我这有个123啊,那肯定是不行的,所以这个时候干嘛呢,要把123再加密,再传给他,怎么加密啊。
13:01
客户端上不是有服务器吗?拿着服务器公钥再把123加密,那服务器的公钥和客户端公钥肯定不一样,加密结果也不一样呀,那客户端的公钥给123加密是ABC,但是服务器公钥给123加米就不一定是ABC了。假设是。DE。加上DF加密之后变DF,那这个时候客户端把通过服务器公钥加了密的密文DF传给服务器,服务器接收到了DF,那服务器接收到DF之后呢,服务器肯定得用服务器私钥解密,为啥服务器公钥加密,服务器私钥来解密?那服务器四要解密时,就把这个密文DEF解密,那解完之后是不是就123啊,你会发现这个时候服务器给客户端发的时候的是123,接收到的还是123,这不就能够验证了客户端的身份吗?啊,这不就能验证客户端身份嘛,所以你会发现服务器接收到客户端发回的数据包之后呢,使用服务器的私钥解密,如果解出来的质疑信息和当初发出去的质疑信息是一样的,则这个客户端和服务器就能够建立安全的远程连接了。
14:13
这就是SS标,这就是双向的。我有一对喵对,你有一对喵对。我把我的公钥给了你,你把你的公钥给了我。我给你发信息时,我用你的公钥给你发,你用你的私钥来解。你给我发信息时,你用我的公钥给我发,我用我的私钥来解。这就是我们的SSH的密钥,对的登录验证模式,那OK,那现在来说一下关于SSH和telnet的一个区别啊。你说去不就是安全吗?你看人家SSH多安全。整个数据传输过程中进行了加密、验证等等等等过程。你T啥也没有,我告诉你。SH和太阳net对比起来,确实SSH更安全,但是传输效率对比起来,太阳net可能会秒杀,为啥?
15:09
不需要任何的加密、解密验证。效率上肯定会有折扣的,所以说啊,这就验证了我们之前老讲过的一句话,那就是。安全和效率这个东西啊,是不太可能兼得的。上不太可能兼得的。你想要安全,那效率上就。会有一定的这个下降,你想要效率安全上肯定就会有一定的下降,所以说他俩一般是不兼得的啊OK。这是它俩的一个简单对比,那关于我们的这个SSH的密对的验证模式,那我们就讲到这儿了。咱们下节课再见。
我来说两句