加密认证扫盲

该篇主要收集了当前一些基本的数据安全相关概念:

  • MD5
  • 对称加密
  • 非对称加密
  • OAuth2认证

MD5

MD5加密是==不可逆==的,意味着加密后的字符串无法解密。即使知道了加密算法,也无法反推出原信息。在linux中可以用下面命令进行对文件内容加密,

1
2
>$ md5sum a.txt
ebaa3901a14b9cdbdf105dfb38e6e73e a.txt

ebaa3901a14b9cdbdf105dfb38e6e73e 就是加密后的内容。倘若有人篡改了该文件,再次生成的字符串会大不一样。通过校验MD5值便可知道原信息有没有改变。于是常用来作密码校验。

对称加密

首先需要了解密钥概念。密钥就好比钥匙,算法好比锁,有了锁和钥匙才能打开或锁上。密钥分为加密密钥和解密密钥,加密密钥和加密算法配合进行数据的加密,解密密钥与解密算法配合进行数据的解密。

所谓对称加密指的就是加密密钥与解密密钥是同一个密钥。

当A想向B发送加密信息时,两人先约定一个密钥。A用该密钥进行加密后传给B,B接收到后再用同一密钥进行解密。

非对称加密

与对称加密相反,非对称加密中加密密钥与解密密钥是不同的两个密钥。一般的,在非对称加密中,加密密钥称为公钥,解密密钥称为私钥,公钥与私钥成对出现,公钥是公开的,无论谁都可以获取,而私钥只有拥有者自己知道。

当A想向B发送加密信息时,B首先会拥有一对公钥私钥,由于公钥是公开的,于是A用公钥进行加密后传给B,B然后用私钥进行解密。由于私钥只有B知道,即使加密信息被截获,他人无法破解。

OAuth2 认证

OAuth 认证最常见的场景,比如微信中打开一个链接,跳到第3方服务之前,会跳出一个授权框,是否允许第3方服务获取微信账号部分数据。这里涉及三方:用户(服务方的用户)、服务方、第三方应用。

OAuth认证的基本流程是这样的。用户登录了第三方的系统后,会先跳去服务方获取一次性用户授权凭据,再跳回来把它交给第三方,第三方的服务器会把授权凭据以及服务方给它的的身份凭据一起交给服务方,这样,服务方一可以确定第三方得到了用户对此次服务的授权(根据用户授权凭据),二可以确定第三方的身份是可以信任的(根据身份凭据),所以,最终的结果就是,第三方顺利地从服务方获取到了此次所请求的内容。


如上图,其中认证服务于资源服务都属于服务方提供的服务。token 具有时效性,过期得重新申请。