认证(Authentication)与加密(Encryption)的区别

认证:确认身份。

加密:破坏数据格式。

 

将认证当成加密,是很多网络技术初学者容易犯的错(包括我也是),但认证与加密是完全不一样的技术,它们的使用场景也不同。

认证与加密是一门很复杂的学科,对各种认证与加密算法有兴趣的可以找资料学习一下“密码学”。本文仅以概述方式让大家能快速理解并区分认证与加密这两者的区别。

 

关于认证

认证:Authentication

认=确认、检查

证=凭证、身份

简单理解的话,认证的目的就是确认凭证、检查身份、确认权限。

 

想象一下认证在大家日常生活中有哪些应用场景呢?

  • 你读完大学,获得本科毕业证书,去找工作时,用人单位会到学信网去查询你的学历是否属实;
  • 中国内地居民如果想去香港澳门,需要去办理港澳通信证,办理了就代表你有去香港澳门的权限了,你去香港澳门时验证你的港澳通行证即可顺利过关;
  • 你注册淘宝账号,需要确认手机号是不是属于你,淘宝会发送验证码短信到你手机上,你输入验证码后就能确认你有权限使用这个手机号;

上述场景中,毕业证、港澳通行证、短信验证码都是检查身份、确认权限的一种手段。如果这个身份和权限检验错误,你就无法使用对应的服务。

 

在我们学习网络技术时,需要用到认证的地方也很多,比如:

  • 路由协议:两台路由器之间要发送路由,但又不知道对端的身份是否可信,于是可以用认证手段来进行身份的匹配,如果身份认证通过才会发送路由,认证失败就不发路由;
  • 安全协议:比如VPN,两个VPN设备要建立IPsec VPN,可以使用认证手段来确定对端的身份是否安全,认证通过的就建立VPN连接,认证失败就无法建立VPN连接;
  • 服务器:服务器提供某种网络服务,客户端如果需要使用这个服务,就需要进行身份认证,认证通过就可以使用该服务,认证失败就无法使用该服务。
  • ……

特别需要注意的是,网络技术中的认证并不会对用户的数据进行破坏,它只是在用户的数据中嵌入一段用来表明身份用作验证的密码。

下图是OSPF路由协议在发送数据时嵌入在数据中的验证密码,其中“bossfang”就是认证的密码:

OSPF启用明文认证的Hello包

 

关于加密

加密的目的,是保证数据的安全,如果数据没加密,别人劫持了后可以直接打开,而加密后,这个数据必须解密后才能打开。

加密:使用一种加密算法和一个加密密码,将原始数据的排序进行扰乱,转换成错误的、系统无法识别的乱码。当然这个扰乱是有规律的,扰乱的规律就是算法和密码;

解密:解密方需要知道加密方使用的是什么加密算法以及加密密码是什么,算法结合密码就会知道对数据扰乱的规则了,然后将这段乱码用这个算法和密码进行反向扰乱,就可以将乱码数据还原成原始数据。

 

举一些大家日常生活、工作中用的较多的加密例子:

  • 你给一些朋友共享一个文件到网盘,又担心这个文件被别人下载到,于是会把文件用压缩软件压缩并加密,再把解压密码告诉朋友。如WinRAR,WinRAR就用了AES加密;
  • 你浏览网站时,一些资讯类的网站使用http开头,而设计到金钱交易的网站大多使用https开头,多了一个s,因为https的数据是使用SSL算法加密了的,这个s就是Security(安全)的意思;
  • 如果你是网络管理员,会经常远程登录网络设备进行管理,可能会使用不加密的telnet协议,也可能会使用加密了的SSH协议来保证安全传输。

 
下面可以看看Telnet和SSH在传输时捕获的数据包,其中Telnet协议是没加密的数据,而SSH协议是加密的数据。。

 
Telnet协议抓包:明文

对Telnet协议的抓包可以看到,所有数据都是可以解码出来的,这就是明文传输的数据,并不安全。

Telnet数据抓包解码

 

SSH协议抓包:密文

加密过的SSH数据在传输时的抓包,数据都是乱码,真实的数据内容是看不到的,这种方式安全性更高。

SSH数据抓包解码

 

总结

不管是认证还是加密,都是网络安全领域的特性,这些技术都有很多种算法,每种算法都有不同的计算强度,强度越高在处理数据时对CPU内存的消耗越大。

常见的认证和加密算法如下:

  • 常见的认证算法有:MD5(128bit)、SHA家族(包含SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512)、及更高级的数字签名技术
  • 常见的加密算法有:DES(56bit)、3DES(112bit)、AES(128/192/256bit)、RSA(1024/2048/3072/7680/15360bit)、ECC(160/224/256/384/512bit)

 

未经允许不得转载:CTO十万个为什么 » 认证(Authentication)与加密(Encryption)的区别

赞 (0)