在万物互联的时代,We don’t connect to the Internet, we are the Internet.
如此重要的互联网,需要一种协议来保护传输中的信息安全,那就是SSL(Secure Socket Layer)和TLS(Transport Layer Security)。
这篇文章就简单介绍一下SSL/TLS。
1. 一开始,我们裸奔
当互联网刚开始设计的时候,并没有将安全考虑进去。所以我们的数据都是明文传输的。这在一开始接入的节点很少的时候没有问题,大家依赖君子协议也能很好地工作。
但是随着接入节点的增多以及使用互联网的业务越来越重要,这种“裸奔”越来越不合适。所以,需要一种方法对传输的数据进行加密。
未加密时,网络模型如下:
既然有五层,那就有多个地方可以完成加密的操作。这样,就引出了第一个问题:哪里加密?
2. Protect the Transport
SSL/TLS是在传输层(Transport Layer)上面应用层(Application Layer)下面对数据进行加密的:
这也是TLS名字的由来。
从这里也可以看出网络分层的优势:每一层只关注自己的任务即可而不需要操心其他。应用层只需要把数据交给TLS层即可,TLS负责加密,然后数据就这么一层一层下发直到传输到对面节点,对面节点逆序处理,就可以得到原始数据了。
如果不需要加密,那么去除TLS层,不会影响其他层的工作。
TLS的主要目标有四个:
- 加密安全(Cryptographic Security):主要职责,保证通信链路的安全;
- 互通性(Interoperability):独立开发人员可以通过共同的加密参数使用不同的开发工具开发出可以一起工作的程序或库;
- 可扩展性(Extensibility):TLS支持多种加密方法,这需要TLS具有可扩展性,方便加密方法的变更;
- 高效性(Efficiency):由于加密是一个耗时的操作,因此TLS需要把加密的额外性能消耗降到最低。
接下来,看看SSL和TLS的历史,以及两者之间的关系。
3. A Brief History of SSL/TLS
- 1994年网景公司(Netscape)发布SSL协议,由于严重的安全缺陷SSL 1.0没有应用;
- 1995年发布SSL 2.0,第一次在网景公司的浏览器上应用;
- 1996年发布全新的SSL 3.0版本;
- 1996年五月,成立TLS工作组,将SSL标准化;
- 1999年,发布TLS 1.0;
- 2006年发布TLS 1.1;
- 2008年发布TLS 1.2;
- 2018年发布TLS 1.3。
这里,我们使用TLS这个名称。
4. 好的,加密吧
一种加密方法,在正确部署与使用的情况下,需要解决三个问题:
- 保密性(Confidentiality):消息不能再裸奔了,不能让人一看就知道是啥;
- 真实性(Authenticity):我要知道你说你是谁是不是真的;
- 完整性(Integrity):保护传输链路的安全,消息不能被篡改,即使被篡改也能发现。
为了解决这些问题,我们需要讨论一下密码学。不过只是在较高的层次上来谈论,忽略一些底层的细节,当需要的时候再详细讨论。毕竟,密码学是一门涉及很广也和数学有很多关联的科学。
To Be Continued…