加密

世界上不存在100%安全的系统,总会有漏洞,而且安全专家知道这一点,所以系统架构师会部署多层防御。
用多层不同的安全机制来阻碍攻击者
密码学(cryotography)一词来自cryto和graphy,大致翻译是秘密写作。为了加密信息,要用加密算法(Cipher)把明文转为密文。
除非知道如何解密,不然密文看起来像一堆乱码。
把明文转为密文叫加密。把密文恢复明文叫解密

DES数据加密标准

IBM和NSA于1977年开发的数据加密标准(DATA ENCYPTIIN STANDARD)
DES最初用56 bit 长度的二进制秘钥,以为着有2的56次方,大约有72千万亿个不同秘钥,1977年也许NSA有这个能力,但其他公司不可能暴力**。但到了1999年,一台25w美金的计算机两天内就可以暴力**,让DES算法不再安全

AES高级加密标准

因此2001年出了,高级加密标准(AES)。AES用了更长的秘钥128/192/256位-让暴力**更加困难。128位即使全世界所有电脑加起来也要千万年才能**。
AES将数据切成一块一块,每块16个字节,然后用秘钥进行一些列替换加密和移位加密。
每一块数据块会重复这个过程10次或以上。
为什么用128位而不是10000位,这其实是考虑性能,如果花几小时加密和发邮件,或几分钟载入网站,没人愿意用
如今AES被广泛利用,比如IPHONE上加密文件,用WAP2协议在wifi中访问HTTPS网站。

秘钥交换(key exchange)

我们需要某种方法没在公开互联网,传递秘钥给对方,这看起来好像不安全,如果秘钥被黑客拦截了,黑客不就能解密通信了吗?解决方法是秘钥交换
秘钥交换是一种不发送秘钥,但依然让两台计算机在秘钥上达成共识的算法。
我们可以用单向函数来做,单向函数是一种数学操作,很容易出结果,但向从据俄国逆向推算出输入非常困难。
以颜色比喻,将颜色混一起很容易,但想知道混了什么颜色很难。
以此比喻,我们秘钥是一种独特的颜色,有一个公开颜色都知道,然后各自有一个颜色只有自己知道。
加密
然后各自混合了颜色后发给对方,然后收到颜色后,把我的秘密颜色加进去,现在3种颜色混合在一起。我们可以吧这个颜色当秘钥
加密

迪菲-赫尔曼秘钥交换(diffie -hellman key exchange)

电脑中不可能用颜色用的是迪菲-赫尔曼,在函数中,单向函数是模幂运算,意思先做幂运算,拿一个数字做底数,哪一个数字做指数,然后除以第三个数,最后拿到我们想要的余数
加密
重点是如果只给余数和基数。很难知道指数是多少
加密
diffie-hellman的基理是,首先我们公开的值,基数和模数,就像公开油漆颜色,所有人都看的到甚至坏人,为了安全向john发信息,选一个秘密指数X,然后计算BXMODmB^XMOD m的值,然后发给john,john也一样,选一个秘密指数y,然后把BYmodMB^Y mod M发给我。
为了算出双方公用的秘钥
我们john发我的数,用秘密指数X,进行模幂运算
加密
加密
加密
双发就得到了一样的秘钥,即使我从没有发给对方过各自的秘密指数
我们可以用这个大数字当秘钥,用AES之类的加密基数来加密通信
双发用一样的秘钥加密和解密,这叫对称加密,因为秘钥一样

非对称加密

用两个不同秘钥,一个个公开,一个私有
人民用公钥加密信息,只有用私钥才能解密
换句话说公钥只能加密不能解密,他们是不对称的
可以想象一个锁上的盒子,为了收到安全信息,我们可以给别人箱子和锁,比人把盒子寄回给我,只有我的钥匙可以打开。
上锁后,如果发件人或其他人想打开盒子,除了暴力尝试没有其他办法。
公钥加密后,只能用私钥解密,反过来,私钥加密后,用公钥解密
这种做法用于签名,服务器可以用私钥加密,任何人可以用服务器的公钥解密,这能证明数据来自正确的服务器或个人。

rsa

目前最流行的非对称加密是RSA
当你访问网站
加密
验证服务器的秘钥,然后建立临时秘钥