苹果公司要求,从2017年1月起,所有新上线或更新的应用,都应该支持ATS安全标准。什么是ATS?ATS(App Transport Security)是为了提高App与服务器之间安全传输数据一个特性,这个特性从iOS 9和Mac OS X 10.11开始使用,它默认需要满足以下几个条件:
1、服务器必须启用HTTPS,且TLS版本至少是1.2版本
2、连接加密只允许几种先进的加密算法 证书必须使用SHA256或者更好的哈希算法进行签名,要么是2048位或者更长的RSA密钥,要么就是256位或更长的ECC密钥。
除了苹果公司,Google和Mozilla都在加速推进HTTPS。今天我们就来聊聊为什么要推进HTTPS。
一、HTTPS的诞生和定义
我们知道HTTP是明文传输的,可能面临劫持、篡改、监听和窃取的安全风险,为了解决这个问题HTTPS出现了。这里给出维基百科对于HTTPS的定义:
超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。
二、HTTPS的加密技术
HTTPS和HTTP最大的区别之一,是(依赖于SSL/TLS)提供了信息加密、身份验证和完整性校验的功能,可以解决HTTP存在的安全问题。而以上功能的实现离不开加密技术。
我们知道,加密算法根据加密和解密的密钥是否相同,分为两种:对称加密和非对称加密。
对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥(定义来源于维基百科)。常用的对称加密算法有:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥(定义来源于维基百科)。常用的非对称加密算法有:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)。
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
对称加密算法和非对称加密算法各有优缺点。对称加密强度很高,只要使用的密钥足够长,破解几乎不可能。优点是速度快,通常在消息发送方需要加密大量数据时使用。缺点是在数据传送前,发送方和接收方必须商定好密钥,然后双方都能保存好密钥,一旦一方的密钥泄漏,加密信息就不安全了。非对称加密算法能解决密钥安全性问题,优点是安全性更高,缺点是速度较慢。
因此HTTPS采用对称加密和非对称加密两者并用的混合加密机制,在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式。
非对称加密算法存在一个问题,无法证明密钥本身是否就是真实的密钥,因此实际上挡不住中间人攻击。中间人攻击(Man-in-the-middle attack,缩写:MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制(定义来源于维基百科)。
为解决上述问题,采用HTTPS的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。服务器在建立安全连接时带上CA的签名。CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等。CA的安全性是由操作系统或者浏览器来认证的。操作系统或者浏览器会在安装的时候带上一个他们认为安全的CA证书列表,只有建立安全连接的一方带有这些CA的签名,操作系统和浏览器才会认为这个链接是安全的,否则就有可能遭到中间人攻击。
相关推荐
浅谈https与主机名验证,轻松搞定私钥验证
【标题】:“cos应用浅谈” 在IT领域,"cos"常常指的是Cloud Object Storage,这是一种云存储服务,常用于托管和管理大型数据集。这里提到的“cos应用浅谈”很可能是讨论如何在实际项目中使用云对象存储服务,特别...
浅谈NB-IOT网关对接的知识点可以总结为以下几个方面: 一、NB-IOT网关对接的架构 NB-IOT网关对接是指NB-IOT终端同网关平台的对接,包含NB-IOT网关同终端以及应用平台的对接。这个架构可以分为两个部分:南向对接和...
玄魂-磐石计划-浅谈渗透测试前的信息收集PPT课件 搬运博文https://blog.csdn.net/m0_46622606/article/details/106366650
### App优化概述 在当前移动互联网时代,应用程序(App)已成为人们日常生活中不可或缺的一部分。随着市场竞争的日益激烈,如何提升App的性能与用户体验成为了开发者们关注的重点。本文将围绕App优化的关键方面进行...
### 浅谈HTTP协议与REST架构 #### HTTP协议概述 HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要用于从Web服务器传输超文本文档至本地浏览器的传送协议。它采用客户端/服务器模式,通过TCP/IP进行通信...
- **安全处理**:对于HTTPS网页,需要确保SSL证书正确配置,防止中间人攻击。 8. **内存管理和性能优化** - 使用`WebView.clearCache()`和`WebView.clearHistory()`释放缓存和历史数据。 - 在不再需要WebView时...
首先来看Charles官网对HTTPS代理的描述:Charles can be used as a man-in-the-middle HTTPS proxy,
HTTPS流量解密是一种技术手段,通常用于网络安全检测、开发调试或恶意攻击。本文将探讨三种最常见的HTTPS流量解密方法及其背后的原理,同时提醒用户HTTPS并非绝对安全,理解这些方法有助于提高网络安全意识。 首先...
XCActionBar的安装通常是通过Alcatraz这样的Xcode插件管理器进行的,或者直接从其GitHub仓库(https://github.com/pdcgomes/XCActionBar)克隆源代码并手动构建。一旦安装完成,开发者就能享受到一系列增强的功能。 ...
HTTP用于传输数据,而HTTPS在HTTP的基础上加入了SSL/TLS加密,为数据传输提供了安全保障,常用于处理敏感信息,如网上购物、登录等。 【PHP技术】 PHP是一种开源的服务器端脚本语言,尤其适用于Web开发。它可以嵌入...
在阿里云的帮助文档(https://help.aliyun.com/document_detail/29536.html?spm=5176.doc29535.6.555.WWTIUh)中,你可以找到详细的步骤指导。完成这些设置后,我们需要在代码中配置相关的参数,如Topic名称、...
5. 禁用不必要的协议,只允许HTTP和HTTPS请求。 6. 使用正则表达式对请求参数进行有效性验证,防止畸形请求绕过黑名单。 总的来说,理解SSRF漏洞的原理、风险和防范措施对于维护网络安全至关重要。企业应重视内网...
PCI, PCIe 具体描述见:PCIe资料分享-快速入门 https://blog.csdn.net/BjarneCpp/article/details/80370986
Esp8266 进阶之路21 【高级篇】浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。-CSDN博客 https://blog.csdn.net/xh870189248/article/details/80859347
首先,访问IBM Support Portal(https://www.ibm.com/support/)是开始探索的起点。在这个平台上,用户可以找到各种IBM产品的修复程序、更新和驱动程序。进入网站后,点击“Support & downloads”,然后选择“Fixes,...
同时,需要注意到HTTPS的处理,使用证书认证和跳过认证两种方式,可以根据项目的需求选择合适的方式。 在本文中,我们还讨论了使用HttpClient时的证书认证和跳过认证问题,并提供了相关的代码示例。通过这些示例,...
GitHub地址为:[https://github.com/spring-projects/spring-boot](https://github.com/spring-projects/spring-boot)。选择最新版本2.2.2.RELEASE,在该版本下下载压缩文件,文件名为`spring-boot-2.2.2.RELEASE....