做者:Erik Kline (Android 软件工程师) & Ben Schwartza (Jigsaw 软件工程师)android
绝大多数网络链接的第一步都是 DNS 查询。客户端 (如智能手机) 一般使用由 Wi-Fi 或者移动网络提供的 DNS 服务器。客户端向该 DNS 服务器发起查询,将域名 (如 developer.android.google.cn) 转换成 IP 地址 (如 2607:f8b0:4005:808::2003)。在 IP 地址返回到客户端后,客户端就能链接到目的地址。安全
在 1980 年代 DNS 协议刚诞生之时,互联网的规模和复杂程度远不及如今。在过去的几年中,互联网工程任务组 (Internet Engineering Task Force) 一直致力于定义新的 DNS 协议,为用户提供最新的安全以及隐私保护。该协议被称为 DNS over TLS 协议 (标准化为 RFC 7858)。服务器
和 HTTPS 同样,DNS over TLS 使用 TLS 协议创建一条通往服务器的安全通道。一旦安全通道创建成功,除了对链接有监控权限的人以外,没有人能够读取或者更改 DNS 查询和响应 (安全通道仅应用于 DNS,所以它没法保护用户免遭其它类别的安全以及隐私侵犯。)网络
Android P 开发者预览版内置对 DNS over TLS 的支持,在 “网络和互联网” 设置中添加了隐私 DNS (Private DNS) 模式。测试
若用户想使用私有 DNS 服务器,那么他们能够输入一个主机名。Android 会经过安全通道向该服务器发送全部 DNS 查询;在没法送达服务器的状况下,则会标记该网络为 “无网络访问”。google
用于进行测试,您可阅读《由社区维护的可兼容服务器名单》操作系统
DNS over TLS 模式自动为全部系统上的应用提供安全 DNS查询。不过,若应用未使用系统 API,而是自行运行 DNS 查询,它们必须确保在系统进行安全链接状况下,不发送不安全的 DNS 查询。应用能够调用新的 API —— LinkProperties.isPrivateDnsActive(),来获取该信息。3d
咱们宣布,从 Android P 开发者预览版开始,将会内置对 DNS over TLS 的支持。从此,咱们但愿 DNS 安全传输可以覆盖全部操做系统,为广大用户的每一次新链接都提供更好的安全隐私保护。cdn
能够点击 “Android Developers 官方文档” 查看更多关于 Android 开发的内容blog