WWDC 2017:Your Apps and Evolving Network Security Standards

原标题:职场术语:Network Security

Terms definition
Customer Environment within the context of this document, refers to your
app’s end users – their computer or device on which your app runs, and
its hardware constraints and other unique features that could affect
your app, such as the strength of its network connection, memory
availability, and disk space.

http://blog.csdn.net/death\_spank/article/details/7403554 (转)

本地转发:ssh连接和应用的连接 两个连接的方向一致
ssh -L <local port>:<remote host>:<remote port>
<SSH hostname>
远程转发:ssh连接和应用的连接 两个连接的方向不同
ssh -R <local port>:<remote host>:<remote port>
<SSH hostname>

本地端口转发绑定的是 lookback 接口,这意味着只有 localhost 或者
127.0.0.1 才能使用本机的端口转发 , 其他机器发起的连接只会得到“
connection refused.
”。要想让其他机器也能共享这个隧道来转发的话需要在配置文件中使用GatewayPorts
关键字,或者直接命令行下使用”-g”参数。

原标题:职场术语: foot the bill

本文首发于《iOS 成长之路》,购买可查看更多 WWDC
系列文章,转载请联系作者。

第9期

用户环境在这篇文档中包含:使用这款app的最终用户
他们的电脑或者设备上运行你的应用,及其硬件约束和其他独特的特性比如网络的强度,可用内存,和磁盘空间都会影响这款应用.

ssh -g -L 8080:192.168.1.1:80 root@10.10.10.10

远程转发与本地转发正好相反,打开ssh隧道以后,在远端服务器监听一个端口,所有访问远端服务器指定端口都会通过隧道传输到本地的对应端口上,下面是例子。

vns85978威尼斯城官网 1

现在,我们越来越关注用户的隐私和信息安全,但是随着时间的推移,计算机变得越来越高效,那些年代久远的网络协议和加密算法,在新的硬件和攻击方式下,变得岌岌可危。

Network Security

about networking
Satellite connection 卫星连接
Cellular connection 蜂窝网络 4G3G2G
Ethernet cable 以太网线 主要针对家庭
DSL(调制解调器) 商用

ssh -R 80:192.168.1.1:8080 root@10.10.10.10

这里是一篇很好的介绍SSH
PortForwarding的文章vns85978威尼斯城官网,http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/

可以将远端服务器一个端口remote_port绑定到本地端口port,其中-C是进行数据压缩,-f是后台操作,只有当提示用户名密码的时候才转向前台。-N是不执行远端命令,在只是端口转发时这条命令很有用处。-g
是允许远端主机连接本地转发端口。-R表明是将远端主机端口映射到本地端口。如果是-L,则是将本地端口映射到远端主机端口。

ssh的三个强大的端口转发命令:

转发到远端:ssh -C -f -N -g -L 本地端口:目标IP:目标端口 用户名@目标IP

转发到本地:ssh -C -f -N -g –R 本地端口:目标IP:目标端口 用户名@目标IP

dynamic port:ssh -C -f -N -g -D listen_port user@Tunnel_Host

-C:压缩数据传输。

-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-N :不执行脚本或命令,通常与-f连用。

-g
:在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

-L 本地端口:目标IP:目标端口

将本地机(客户机)的某个端口转发到远端指定机器的指定端口.
工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口,
一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和
host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root
才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-R本地端口:目标IP:目标端口

将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口.
工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口,
一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和
host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用
root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明:
port/host/hostport

-p :被登录的ssd服务器的sshd服务端口。

-D port

指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的,
本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接,
该连接就经过安全通道转发出去,
根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议,
将充当 SOCKS4 服务器. 只有 root 才能转发特权端口.
可以在配置文件中指定动态端口的转发.

应用举例
1.将发往本机的80端口访问转发到174.139.9.66的8080端口
ssh -C -f -N -g** -L** 80:174.139.9.66:8080 **
master@174.139.9.66
2.将发往174.139.9.66的8080访问转发到本机的80端口
ssh -C -f -N -g
-R** 80:174.139.9.66:8080 master@174.139.9.66

例子A:我们想远程管理服务器上的MySQL,那么使用下面命令
**ssh -L 3306:127.0.0.1:3306 ** **user@emlog-vps -N **

运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接
localhost:3306即可访问到服务器上的MySQL了。

例子B:一次同时映射多个端口

ssh -L
8888:www.host.com:80
-L
110:mail.host.com:110
-L
25:mail.host.com:25
user@host -N
这个命令将自动把服务器的80,110,25端口映射到本机的8888,110和25端口

今天要讲的短语是:foot the bill

  • 时刻关注 App 的安全,保证 App 的及时更新
  • 了解业界的发展变化,跟进最新的标准、学术研究和工业界的实践
  • 确保集成的第三方库可以得到及时的更新,避免安全隐患
  • OS 移除安全隐患
  • 使用 ATS(App Transport Security),ATS 会强制在 App 中使用最佳实践
  • 相比被攻击后的严重后果,前期投入一定的维护成本是值得的

上个月,顺风快递、华住酒店被爆出数亿用户信息遭泄露的事情,这让很多人揪心,因为近年来这样的事情年年都有报道。

ISP(Internet Service Provider),互联网服务提供商
cache,caching ,proxies缓存,代理
SSL(Secure Sockets Laye安全套接字) TLS(Transport Layer
Security安全传输层协议):TLS与SSL在传输层对网络连接进行加密。
Firewalls防火墙

那么,这个短语到底是什么意思呢?

这里总结了一些常见的网络攻击,它们针对的对象有所不同,有的是想窃取数据,有的是想伪装身份,它们在图中以颜色进行区分。我将会通过一些实践来告诉你,如何去避免这些攻击,具体来说就是关于加密(encryption)、密码散列(cryptographic
hashes)、公共密钥(public
keys)、网络协议(protocols)、证书吊销检查(revocation)等内容的一些实践。

这些其实都是网络安全的一部分,网络安全的英文很简单,就是
network security,同样的,国家安全是 national security,个人安全是 personal security

Network Link Conditioner

原来,在15世纪的时候,人们都是把所有的帐目加起来计算出总和,而且会把总金额写在帐单的底部(foot
of bill or account)。

vns85978威尼斯城官网 2

网络安全很重要,它跟我们每个人息息相关,因为:

所以,foot的意思相当于底部bottom。

现在大多数的 App 网络都已经切换到 HTTPS 了,HTTPS 其实就是在 HTTP
下加入了 TLS 层,TLS
是保证网络安全的基础,它可以对传输内容加密、进行身份验证、避免传输内容被篡改。

Without network security, we’re just
like a naked guy in the network feeling insecure day and night.

style=”font-size: 16px;”>如果没有网络安全,我们就会日夜没有安全感、好像把自己裸露了一样。

后来,foot逐渐有了“结算、支付”的意思,所以,现在人们常用foot
the bill 来表示“付款、买单”

TLS 协议是由 TLS 握手协议和 TLS 记录协议两部分组成,TLS
记录协议负责对传输内容加密,TLS
握手协议又分为四个子协议,负责协商加密算法、共享密钥、传达警告等工作。

再看个例句,

Come on, we are old friends. You place
the order, I will foot the bill.

style=”font-size: 16px;”>拜托,我们都是老朋友了,你来点菜,我来付款吧。

vns85978威尼斯城官网 3

The identity authentication is one of
the important foundation of network security.

style=”font-size: 16px;”>身份认证是互联网安全的重要基础之一。

完返回搜狐,查看更多

TLS
协议中涉及到多种不同的密码技术,比如在握手协议中使用到了非对称加密、散列函数、数字签名技术,在
TLS
记录协议中使用到了对称加密、散列函数等技术。具体的这些技术,在下面会详细介绍,并且说明哪些技术已经过时了,需要更换更安全的加密算法来保证安全。

责任编辑:

本文中,涉及到一些加密算法,根据密钥的使用方式,可以分为对称加密和非对称加密:

▽返回搜狐,查看更多

  • 对称加密:加密和解密的过程中使用的是同一种密钥。常用的加密算法有DES、AES等。
  • 非对称加密:又叫做公钥加密,在加密和解密的过程中使用不同的密钥。常用的加密算法有RSA、ECC等。

责任编辑:

除了上述两种加密算法,还有一些用来确保信息完整性和身份认证的技术:

  • 密码散列算法:它不是一种加密算法,而是用来确保信息未被篡改。密码散列函数会根据信息的内容计算出一个散列值,这个散列值就被用来检查信息的完整性。
  • 数字签名:信息的发送者用私钥加密,接收者使用公钥解密。用私钥加密的密文只能由对应的公钥来解密,所以可以将这个过程叫做数字签名,用来身份认证。
  • 证书:经过 CA 机构数字签名后的公钥证书,用于身份认证。

加密

加密是我们众所周知的用来防止信息被窃听的手段,但是一些加密算法已经非常不安全,很容易被攻击者攻破。特别是
RC4, 目前可以在短短三天之内就可以攻破它。而且,Triple-DES 和 AES
加密算法在 BEAST 和 Lucky 13
这些攻击面前,也无法保证安全性。苹果正在计划在所有平台上弃用 Triple-DES
和 RC4,同时也不推荐使用 AES-CBC 算法,但是还没给出具体的日期。Apple
推荐我们使用 AES-GCM 或者 ChaCha20/Poly1305 算法。

vns85978威尼斯城官网 4

密码散列

密码散列会有一个输入值和一个输出值,输入的称为消息,输出的称为散列值。密码散列会根据输入的内容计算一个散列值出来,这个散列值可以用来判断信息是否完整。但是其中一些密码散列已经不安全了,黑客可以通过碰撞攻击的方式来篡改数据。碰撞攻击是通过大量的尝试,来找到不同的输入值,但是输出值是一样的情况,进而篡改数据。因为篡改后的散列值并没有发生变化,所以你无法判断数据是否被修改过。

MD-5 和 SHA-1 已经不安全了,Apple 已经在前几年在移除了 MD-5
算法的签名证书。SHA-1 在今年的早些时候,也遭遇了攻击。所以,Apple
将也不再信任 SHA-1 算法的签名证书。为了保证绝对的安全,开发者应该使用
SHA-2 算法。

vns85978威尼斯城官网 5

公钥密码

一般情况下,经过公钥加密的内容,只能通过私钥打开加密内容。但是,768 位的
RSA 在2009 年被攻破,Apple 在 2016 年春天已经移除了对 1024 位以下 RSA
签名的证书的支持。由此来看,对 1024 位 RSA 加密的攻击也快要来到了,所以
Apple 也宣布将不再对 2048 位以下 RSA 签名的证书信任。你应该使用 2048
位以上的 RSA 加密,或者其他 Apple 平台信任的椭圆曲线密码。

协议

如果开发者正在使用HTTP协议,那就代表着你传输的内容,任何监听者都可以获取到。同时,一些老化的
TLS 版本,也是不安全的,比如 SSL 3.0、TLS1.1 和
TLS1.0。应该避免使用这些协议,开发者应该使用基于 TLS1.2 的 HTTPS 协议。

同时,Apple 宣布发布 TLS 1.3 Beta 版,后续会详细讲。

吊销

当私钥泄漏或者或者其他一些情况出现时,我们可能需要吊销证书。客户端在收到证书的时候,需要确认证书的吊销情况。

Apple平台默认是不进行吊销检查的。目前存在的吊销机制有以下几种:

  • 证书吊销列表(Certificate Revocation List
    ,CRL),这是一个包含吊销证书序列号的列表,证书颁发机构维护着这样的列表。它的缺点在于,CRL
    会越来越大,实时查询会越来越慢,同时需要不断请求 CA
    的CRL,具有一定的延迟性。
  • 在线证书状态协议(Online Certificate Status Protocol,OCSP),OCSP
    是这样工作的。首先,服务端会从 CA
    申请一个证书,服务端会把证书发送给客户端作为验证,客户端为了验证服务端的身份会向
    CA 发送一个请求,来获取该证书的吊销信息,CA
    会返回该证书的状态给客户端。客户端根据返回结果来判断服务端的证书是否正确。可以看出来,OCSP
    有明显的缺陷,客户端需要向 CA
    发送额外的网络请求,这导致了它存在一些性能问题。并且 OCSP
    是明文传输,会存在安全隐患。基于这两个原因,Apple默认不支持OCSP验证。如果开发者想启用
    OCSP 查询,需要在 App 中集成其他API。

vns85978威尼斯城官网 6

  • OCSP Stapling,它弥补了 OCSP 的缺陷,服务端在从 CA
    请求证书的时候,也会从 CA
    请求到证书的吊销信息,然后将吊销信息和证书一起发送给客户端,客户端可以同时对证书和吊销信息进行校验。

vns85978威尼斯城官网 7

尽管 Apple 鼓励开发者在服务端采用 OCSP Stapling
这种方式,但是普及程度远远不够。Apple
同时宣布加强在所有平台的证书吊销验证。Apple 会从 Certificate
Transparency log 中获取信赖的证书列表,开发者和CA都可以向 Certificate
Transparency log 提交证书,提交的证书会受到监控和审计。然后 Apple
会从证书颁发机构查询证书的吊销状态,把所有吊销证书的信息捆绑到一起,每隔一段时间自动下发给客户端设备,这样客户端就可以周期性的验证证书的吊销状态了。

在进行 TLS 会话时,如果发现证书在吊销列表内,那么客户端则执行一次 OCSP
检查,去校验证书是否真的已经被吊销。如果证书没有在吊销列表中,则不进行
OCSP 检查。这样的话,客户端一般就不需要向 CA
发送额外的网络请求,避免了性能问题。

vns85978威尼斯城官网 8

回顾

Apple
关于加密、散列函数、网络协议、证书吊销校验和公钥密码方面的修改如图所示:

vns85978威尼斯城官网 9

在 Safari
中重新设计了新的证书报错界面,如果你用了不符合要求的证书,那么将会看到如下界面。

vns85978威尼斯城官网 10

可以通过证书查看器,进一步查看证书错误的详细情况。

vns85978威尼斯城官网 11

ATS 在 iOS 9 的时候推出,是为了保证开发者使用加密的网络来传输数据。但是
Apple 发现全部转为 ATS 的过渡期要比预期长,所以 Apple 扩大了对 ATS
的豁免的支持。

去年 Apple 发现目前的 ATS
豁免并不能满足所有开发者的需求,所以就开放了对AVFoundation、WebView 和
Webkit 的单独豁免支持。豁免可以限制在一个单一域名内和整个 App
内,同时也支持对本地网络(原始 IP 地址和不合格的主机名)的豁免。

虽然目前扩大了对豁免的支持,但是 Apple 依然相信使用 ATS
才是正确的选择,依然会积极推荐 ATS 的使用。

TLS 发展历程

TLS 的前身其实就是 SSL(Secure Sockets Layer),Netscape 是最早发布 SSL
的公司,后续由于互联网标准化组织的接手,将 SSL 标准化,并在 1999
年将其称为 TLS(Transport Layer Security)。后续又在 2006 年 4 月对 TLS
1.0 进行了更新,这个版本与 1.0 差异不大。2008 年发布了 TLS
1.2,也就是目前 Apple 推荐在 HTTPS 网络上使用的协议。

TLS 1.3 是正在制定的 TLS 新标准,目前还是草案版本。

vns85978威尼斯城官网 12

TLS 1.3

在 WWDC 上 Apple 阐述了 TLS 1.3 相比 TLS 1.2 的一些改变:

  • 最佳实践
  • 取消对老旧加密算法支持,比如 RC4、SHA-1、CBC 和 RSA 加密算法。
  • 更简单的配置、更容易测试
  • 在 TLS 握手和会话恢复方面性能提升

关于第四点应该是我们最关心的优化点,TLS
握手从原来的四次握手变成了两次握手,也就是说减少了一个 RTT,TLS 1.3
的密钥交换和加密算法的协商都放在了一块。由于这套更高效的握手方法,Apple
宣布大概可以减少三分之一的握手延迟。

vns85978威尼斯城官网 13

虽然正式的版本还没发布,但是现在你可以对 TSL 1.3 beta
版本进行测试了,你可以在

下载安装一个配置文件在手机上,同时手机系统升级到 iOS 11 就可以体验最新的
TLS 协议了。同时,在 macOS High Sierra 中,可以通过以下终端命令启用 TLS
1.3。

defaults write /Library/Preferences/com.apple.networkd tcp_connect_enable_tls13 1
  • 视频地址:Your Apps and Evolving Network Security Standards
  • PPT 地址:Presentation Slides

发表评论

电子邮件地址不会被公开。 必填项已用*标注