HTTP 明文不安全,什么样的通信过程才是安全的?
通信过程具备四个特性就可以认为是安全的:机密性、完整性、身份认证、不可否认
机密性:数据保密,只能可信的人访问,对其他人是不可见的秘密(对称加密算法)
完整性:数据在传输过程中没有被篡改,不多不少,完完整整,保持原状(摘要算法)
身份认证:确认对方的真实身份,保证消息只能发给可信的人(如果通信时另一方是假冒的网站,那么数据再保密也没有用,黑客完全可以使用冒充的身份“套”出各种信息,加密和没加密一样)、(ca证书)
不可否认:不可抵赖,不能否认已经发生过的行为(非对称加密算法)
HTTPS 名字里的“S”,它把 HTTP 下层的传输协议由 TCP/IP 换成了 SSL/TLS,由“HTTP over TCP/IP”变成了“HTTP over SSL/TLS”,让 HTTP 运行在了安全的 SSL/TLS 协议上(可参考第 4 讲和第 5 讲),收发报文不再使用 Socket API,而是调用专门的安全接口
HTTPS:即HTTP over SSL/TLS,用来解决HTTP明文传输导致的不安全问题。流程大致为:
使用对称加密算法加解密报文,保证机密性;使用摘要算法保证数据完整性;使用证书CA来进行身份认证;而不可否认则由非对称加密算法来实现。由于非对称加密算法耗时比对称加密算法长,所以用非对称加密算法来加解密给报文加密的对称算法的秘钥:即使用公钥对对称加密算法秘钥进行加密,私钥用来相应地解密。
客户端和服务器都支持非常多的密码套件,而最后协商选定的是“ECDHE-RSA-AES256-GCM-SHA384”
基本的形式是“密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法”,
“握手时使用 ECDHE 算法进行密钥交换,用 RSA 签名和身份认证,握手后的通信使用 AES 对称算法,密钥长度 256 位,分组模式是 GCM,摘要算法 SHA384 用于消息认证和产生随机数。”
1、因为 HTTP 是明文传输,所以不安全,容易被黑客窃听或篡改;
2、通信安全必须同时具备机密性、完整性、身份认证和不可否认这四个特性;
3、HTTPS 的语法、语义仍然是 HTTP,但把下层的协议由 TCP/IP 换成了 SSL/TLS;
4、SSL/TLS 是信息安全领域中的权威标准,采用多种先进的加密技术保证通信安全;
5、OpenSSL 是著名的开源密码学工具包,是 SSL/TLS 的具体实现。
问题:
1、你能说出 HTTPS 与 HTTP 有哪些区别吗?
HTTPS相对于HTTP具有机密性,完整性,身份认证和不可否认的特性,HTTPS是HTTP over SSL/TLS,HTTP> HTTP over TCP/IP
明文 加密 https 可以鉴别网络安全
2、你知道有哪些方法能够实现机密性、完整性等安全特性呢?
机密性由对称加密AES保证,完整性由SHA384摘要算法保证,身份认证和不可否认由RSA非对称加密保证
机密性主要用对称加密实现,非对称加密虽然也可以,但是效率太低,不实用。
3、之前调用第三方的支付走https协议都需要本地配置一个证书。为啥最近有个项目也是用的https协议(url里会放token)。直接和http一样调用就好了,不需要本地配置证书了呢?
回复:
本地证书是用来做双向认证的,服务器用客户端的证书来验证客户端的证书。
通常我们上网是单向认证,只验证服务器的身份,客户端(也就是用户)的身份不用证书验证。
4、我们现在正在申请SSL证书,SSL证书有专门的机构颁发,文中老师提到HTTPS能够鉴别危险网站,防止黑客篡改,这些具体是怎么做到的呢?由专门机构颁发的原因是什么?
回复:
如果网站是http而不是https,那么浏览器就会认为网站不安全,有风险。
如果证书内容不完善,或者被列入了黑名单,那么浏览器也可以提示用户有危险。
这些的关键都是证书,用证书里的信息,来验证网站的有效性、真实性。
因为证书用来证明网站的身份,就像身份证、学位证一样,如果随便颁发,那么它的可靠性就得不到保证,所以必须要由指定信任的专门机构来颁发,由ca来“背书”,保证证书和它关联的网站是安全可靠的。
5、HTTPS能够鉴别危险的网站?这个仅仅从浏览器弹出不安全的提示来说的嘛?或者说怎么个鉴别法?网站是否真实也无法验证。加了https的网站也有可能是钓鱼网站吧?也没法验证啊?
回复:
1.如果网站的证书不可信(过期、失效、被废除、伪造),那么就可以说明网站是不安全的,而http不能对网站有任何的认证措施。
2.证书有dv、ov、ev三种,能从ca的层面证明网站的所有者。
3.当然,如果网站故意作恶,https也无法制止,它只能证明网站确实是如证书所声明的,不是假冒的。
6、 https能有效防止抓包然后篡改报文数据,防止xxs攻击吗?
回复:
https传输的内容是加密的,所以抓包后看不到明文,是无法窜改数据的。
但xss属于内容攻击,报文本身是合法的,所以它不能防止。
https只能保证数据传输安全,但在链接的两端不能提供保护
7、“收发报文不再使用 Socket API,而是调用专门的安全接口。”这个安全接口是什么呢?
回复:
可以看一下https的协议栈,它的下面还是tcp/ip。
拿OpenSSL来说,它提供了一系列的接口函数,比如SSL_read、SSL_write,加密后封装成tls记录,再交给tcp传输。