博客

实际云注意事项: 安全

Lori MacVittie 缩略图
洛里·麦克维蒂
2018 年 11 月 19 日发布

云计算可能很便宜,但它并不是免费的。

当今绝大多数应用程序都是通过安全 HTTP 交付的。 这意味着 TLS 或越来越不受欢迎的 SSL。 它的意思是密码学,传统上被翻译为性能问题。

由于技术的进步,如今的 CPU 速度非常快,并且许多客户端(和服务器端)硬件原生集成了曾经专门的加密硬件。 这意味着,就每个连接而言,速度对于加密而言不再像以前那么重要。

但这并不意味着加密不再是性能和运营费用的来源。 

大多数反对加密技术是性能问题重要根源的论点都是基于涉及一个客户端和一个服务器的简单场景。 这是一个加密过程和一个解密过程。 在这种情况下,反对者的观点大多是正确的。 加密和解密引入的延迟很小,通常比 TCP 和网络相关的开销更不令人担忧。

但如今的应用并不由单一端点组成。 消息必须经过多个中介和代理才能到达“单一端点”。 它们是安全和访问控制、负载均衡和路由端点。 每个人都需要以清晰的方式检查信息,以便在现代数据路径这一复杂的舞蹈中执行其指定的角色。

这就是“加密技术并不那么昂贵”的论点开始站不住脚的地方。 就其本身而言,单个端点所引入的延迟非常小。 但是,当在数据路径中的每个端点重复多次时,这些单独的延迟加起来会产生更明显的效果,并且在公共云的情况下会造成运营成本高昂。

密码学本质上是一个计算成本高昂的过程。 这意味着加密或解密消息所需的 CPU 周期比执行业务逻辑所需的 CPU 周期多得多。 在云中,CPU 周期类似于花费的金钱。 一般来说,这是可以接受的成本,因为其目的是将资本成本转移到运营费用。

但是,如果多次解密和加密一条消息,成本就会开始增加。 实际上,您是为同一个加密过程支付了多次费用。 如果执行一次只需花费一分钱,但执行五次的话,则要花费五分钱。 计算一下一天(或一小时)内数十万笔交易的结果,其成本是惊人的。

还要记住,加密处理所消耗的每个 CPU 周期都是未花在业务逻辑上的 CPU 周期。 这意味着您需要比预期更早地进行扩展,而由于需要启动每个额外的实例来处理负载,因此会产生更多的成本。

可以说,“无处不在的 SSL”不应该导致云中的“无处不在的解密”架构。

解密一次

为了降低成本并最大限度地提高您所购买的 CPU 的效率,值得花时间根据“一次解密”原则设计基于云的架构。 “一次解密”意味着您应该尽量减少数据路径中必须解密并重新加密传输消息的端点数量。

要做到这一点,需要深思熟虑并仔细考虑您当前用于保护和扩展应用的十六种不同的应用服务。 如果您不受要求端到端加密的法规或要求的约束,请设计您的数据路径以便尽早解密消息,以避免以后在解密上浪费额外的周期。 如果您需要维护端到端加密,则尽可能结合服务将使您最有效地利用计算资源。

在单一平台上结合您可以使用的服务(例如,负载均衡与 Web应用防火墙)意味着减少您需要解密传输中消息的次数。 它还有一个额外的好处,就是减少网络连接数量和上网时间,从而为用户和消费者带来性能上的优势。 但真正节省的是不会花费在重复解密和重新加密上的 CPU 周期。 

对于目前很少使用的应用程序来说,考虑加密和解密的影响似乎是浪费时间。 这些钱显然不足以支付这些努力的成本。 但随着应用程序的增长、扩大和生存,这些小钱将累计到有影响的数额。 更不用说,就像便士一样,微秒也是不断累积的。 通过考虑加密对整个数据路径的影响,您可以为用户和企业带来长期利益。