
【架构师从入门到进阶】第五章DNSCDN网关优化思路——第十节网关安全-单向加密网络安全中的加密场景单向加密彩虹表预防彩虹表的方式参数防篡改本篇文章我们来学习网站安全性的信息加密。网关的安全性我们在这里面先把一些常用的信息加密的手段给大家说一下然后再说一下这些常用的加密手段在实际工作中的一些用法。网络安全中的加密场景在网络安全中有一些加密的场景比如说数据安全方面信息加密的技术经常会被用到在很多网站系统中尤其是一些小型的网站一些内部系统或者说比较小的网站它存的这个用户名和密码尤其是密码它都是明文存储的。曾经在二零一一年的12月份当时发生一件事情是csdn密码泄露当时由于这个网站的安全措施不利导致用户数据库被黑客拖库拖库是什么意思呢就是把整个数据库全部down下来了。更让人惊奇的是当时他们的用户的密码竟然是明文。所以为了保护网站的数据安全系统需要对这些信息进行加密的处理。信息技术的加密分为三类单向加密对称加密非对称加密单向加密我们先来说单向加密单向加密也称为单向散列加密。比如说我们有一个信息叫做a这个a不管有多长然后进行一些散列计算通过散列计算得到一个固定长度的输出b这个b是一个固定长度。计算的过程是单向的也就是说你已知a能知道b但是知道b无法算出a。那么利用单向散列加密的这个特性可以进行密码的加密保存也就是说我把我的密码通过散列算法变成了一个b那么你从b是无法知道别人的明文的。这样的话在用户登录时进行密码的验证的时候验证的方法是将用户输入的密码进行单向散列的加密加密之后的密文和数据库存储的密文进行对比如果一致则验证成功。通过这样的方式呢即使数据库泄露也就是被人拖库之后他也拿不到密码也就无法去登录。彩虹表但是在实际中这种方式虽然不能通过反向的知道明文但是由于人们设置密码具有一定的模式好多人设的密码就是那么固定的几种形式所以可以通过彩虹表去破解。也就是说好多人整理了一张表这张表是明文和密文的对应关系表也就是当我拿到密文之后和我的密文一对比发现你的密文和我的密文一样那么你的明文我就知道了。就这么反向对比一下通过这种对比方式也可以进行猜测式的破解。预防彩虹表的方式为了预防这种方式呢通常人们在使用单向加密的时候会在里面加一点点盐也叫做salt。比如说这是一个正常的信息a然后再加一个salt可能是随机生成的一串字符串最后生成一个密文b。里面多了一个盐它通过彩虹表就不知道这个盐是什么就会增加它破解的难度。常用的单向散列算法有md5有sha的单项散列算法。参数防篡改还有一个特点就是输入的任何微小的变化都会导致输出的完全不同。这个特性有时也会被用来生成信息的摘要计算具有高离散程度的随机数等用途。比如说可以用在我们的接口参数防篡改的验证上举个例子。我们现在这个接口的参数有三个参数那么我们这三个参数加上一个盐然后生成一个密文。然后再向后端传输这个参数的时候除了传输正常的参数之外还把密文也传进去。后端拿到这些参数之后会根据前端正常的参数后端也有一个盐是彼此商量好的再根据和前端约定的生成密文的方式去生成一个密文。如果生成的密文和前端传过来的这个密文是一致的那么我们认为参数没被篡改过如果参数被黑客篡改了那么根据输入的微小的变化会导致输出的大不相同的这个特性密文就对不上了我们就知道我们的参数被人修改掉了。