1. 普通的网络传输
都为明文传输。是不安全的。
2. 明文传输在自己企业内部局域网具有一定的安全性!但是在整个互联网一定是不安全的!
3. 当一个公司在北京上海广州深圳都设立了分公司,最笨的方法,就是在这几大城市之间部署真的网线和通信设备,搭建了一个从南到北,从西到动的一个真实的局域网。可想你得有财大气粗。即使你财大气粗,但仍然这么做,我会毫不留情的说你除了钱你就是个笨蛋傻子!如果你又在美国纽约设立了一个分公司呢??傻子~
4. 使用VPN:IP和内容都加密
1)除了真实的局域网,聪明的你还可以选择[虚拟局域网]:你不用花那么大的价钱搭建自己的真实局域网了,省了一大笔钱!!这个技术就是VPN技术。VPN技术就是在整个互联网中,搭建起一个【虚拟】的局域网。它一般是企业内部搭建起一个VPN服务器。然后外地员工可先打开电脑的VPN服务功能,然后从电脑端客户端登录到这个服务器。完成点对点连接。打开VPN服务功能代表着,用户启用虚拟网卡!这个电脑上的所有软件在对外通信的时候,在链路层最终提交给真实物理网卡之前VPN采用ipSec类似这样的技术给原本要发出去的IP报文重新封装如下,并对新的内容【原来的IP地址+原来的内容】加密,交给点对点的VPN服务器。VPN服务器收到这样的新的报文之后,进行解密报文拆解,得到原目的地的IP和内容。然后就用自己的名义【VPN服务器自己的IP】帮助那位客户端发送给目的地网站请求。VPN服务器收到响应之后,就又进行封装,成自己要响应给客户端的响应报文,发给客户端。
客户端 | VPN服务器 | 远程网站 |
IP协议报文 | IP协议报文 | IP协议报文 | |
VPN重新打包并加密 | 新的IP(VPN服务器) | 新的内容 | 新的内容 |
ipSex | 原来IP(真实目的地) | 原来内容 |
全程我们看到除了VPN暴露了自己的IP地址外,其他信息全部是非常强的加密。整个过程,客户端的IP地址和请求内容,或者目的地的IP地址和请求内容。在传输过程中是加密不可见的。即使别人劫持了这样的报文。除了知道这里有个VPN服务器在活动外,其他啥都不知道。这样就好像搭建了一个透明的管道,但是看不穿!所以可以把VPN技术称之为特殊的隧道!这样一来,只有拥有登录VPN服务器权限的客户才能互相通信[有个中间人],以VPN服务器中心构建起了一个虚拟的局域网。借助于密码学的伟大。人类节省了很多的成本和资源!
以为VPN的技术设计到了修改IP报文。所以在OSI七层模型中,这个技术可被归类于网络层和数据链路层。它的下层直接就是真实物理网卡【物理层】!
5. 使用SSL 采用CA和浏览器公证认证技术:
1)应用层的HTTPS/FTP/POP3/SMTP等协议技术【对内容进行标准化协议封装】均是通过socket接口载体,然后进入下达到传输层采用TCP和UDP两种方式进行传输。
2)如果采用普通的传输【明文】,一定是不安全的。且这里也不想大费周章的弄一台VPN服务器来对【IP+内容】加密。现在的需求是:我的IP可以被暴露没问题、无所谓!只要内容加密不被人看到就可以了!而且我的APP和网页我自己负责加密。不用你【VPN】软件统一帮我!万一我连你VPN也不信任了呢。你会把我的信息暴露了呢???
3)问题来了,你想自己加密??然后你的客户端想加密之后发给服务器??你分发【APP和网站】挂到网上。APP可以被反编译得出源码,网站更不用说了,你的html+css+js是完完全全的暴露给别人了。你的源码暴露了之后,【普通加密算法】你怎么加密的方法,黑客分析你的方法然后逆行解密不就K.O你了吗?
4)然后你想说你要升级加密算法【才有钥匙加密和使用钥匙解密】,采用使用钥匙才能解密的【对称和非对称】加密算法。那好,这个钥匙你要放在哪里【前端客户端】,如果你也赤裸裸的放在前端,别人拿到你的钥匙,也看了你的加密算法,不照样给你破解了吗??又K.O你了!
5)然后你又想到一个,把钥匙交给服务端保管,需要加密的时候,跟服务器申请。但是我想提醒你!你自以为向服务器请求得到的钥匙,可不一定真的是你的服务器发给你,黑客也能在你向服务器请求钥匙的时候,监听到你的请求,并劫持你,然后,它假装是服务器,向你发来一个它编造的假的钥匙。然后你拿到钥匙之后,用了这把钥匙加密,然后把数据传给服务器,服务器有可能收不到,也可能收到了,服务器自己也解密不了,因为这并不是它给你的钥匙加密的密文。反而,中途被黑客劫持到了这段报文,因为是它偷梁换柱给你它的钥匙,所以反倒是他能解密了这个密文。这样又K.O你了。
6)所以你最后一定要做的事情是:确保你客户端拿到的钥匙是你真正服务器给你的钥匙,这之后就出现了CA机构、数字签名、证书。具体如何请看如下图【借鉴网友】:
关键在第三步:让CA机构和浏览器厂商 权威信用联合 帮你检查你请求的钥匙的真实性!
这个就是SSL技术的原理。
SSL技术是搭建在传输层上的协议,它不涉及IP协议的修改。只是对传输内容进行加密!
任何从应用层传下来使用传输层TCP协议的应用层协议都可以使用这个SSL技术。
比如HTTP+SSL == HTTPS ! 当然FTP/POP3/SMTP...等等都可以结合SSL技术!
注意!
SSL只是对HTTP的报文主体部分加密。头部并未加密!!黑客攻击者仍然能利用HTTP协议的头部进行攻击!!
还有一种情况是不安全的,也可以分类为架构上的不安全:如下!!所以一定要把Mysql数据库【引擎】当做一个普通的服务端程序来看待!!如果是远程的,对于它的连接也要有SSL线路或者中间人SSL+本地!!