云是一个火热的话题,对于一个新的概念,大量的软件产品和方案也随之而来。有的企业在评估云带来的好处;有的企业在研发自有的特色云;甚至有的企业已经开始品尝螃蟹的味道。但从一个多年关注安全领域研究的从业者角度来看,目前的云充满了各种风险,在整个架构上有着独有的脆弱性。
那么,在我的眼中,云究竟是什么呢?随着科技的发展,计算机性能的提高与网络的普及,物理计算机本身和相互之间的逻辑化变得十分有活力,无论是VM(虚拟机)技术还是云技术都是把物理设备逻辑化的一种表现形式。只不过VM(虚拟机)是把外延缩小,云是把外延放大,我们可以把云看作一台逻辑上独立的大型计算机。有安全从业经验的朋友可能会有这样的认识,调试病毒的时候我们需要在VM(虚拟机)里进行,这样就不会影响整个系统。也就是说当外延缩小时,安全性可以得到保障。但是外延放大的云有什么安全保障呢?目前的云没有一个标准的安全接口规范,每一家提供商都是自己定义的连接接口。这种情况实际上就带来了非常大的安全隐患,也为将来云与云之间的交互带来了不便。
由于没有一个标准化的接口定义,导致现有云产业的无序发展。就像一个单细胞生物进化到多细胞生物一样,会有很复杂的演变过程和大量的抛弃分支。我相信大部分的问题是由于最初的安全定义不够强壮,造成后续的代码框架无法修改,或者修改的代价太大,不如重头再来。我们以实际例子来看云的脆弱性:
1、终端安全问题
云的端接口是分发给客户使用的也是最容易被得到分析的。以杀毒云为例,如果攻击者通过分析病毒样本提交的交互接口,直接利用自写程序在多个计算机同时提交大量的样本文件,那么杀毒云会不会死掉?即使服务器足够强壮,可以抵御攻击,那么海量的病毒样本又该如何处理?
2、云节点间的安全问题
大部分的云节点之间都是基于一种简单信任机制。以某网络交易提供商为例,由于每个节点之间的完全信任关系,只要攻破其中的一个节点,就相当于完全控制了整个云。攻击方案可以通过嗅探节点间的通讯,伪造新节点的加入达到控制的目的。攻击的手段还有很多,仅此一斑,可见节点间安全带来的严峻挑战。
3、云与云之间的安全问题
集团内应用云和存储云的连接、私有云和私有云的连接、私有云和公有云的连接、即时服务云和计算云的连接等等一系列连接的安全协议和规范都存在问题。入侵应用云后,模拟应用云给存储云重放某些封包会不会存储错乱,私有云和私有云之间如何信任,私有云和公有云的连接怎么才能保障安全等等。
以上的一些攻击构想都充分说明云安全的接口定义已经迫在眉睫了。
目前整个软件行业都存在一个安全概念的缺失问题。在我看来做任何软件的应用开发,首先在应用分析的基础上建立一个安全框架,然后在这个安全的框架下进行开发,而不是为了只是完成客户的功能需求,单纯为了功能而Code。这涉及到整个软件产业的基础构架问题,这里不再赘述。我们还是回到云安全的问题上。首先分析云安全的基础元素。按云的核心构成部分可以分为云的节点、云的接入端、云的边界点(内边界、外边界);按照云的类型分为即时应用云(前端服务云、中台服务云、存储云)、运算云;将来可能会有主云、从云、中心云、辅助云、边界云等等功能分化的云。
那么我们先看一下最简单的安全接入问题,就是端的安全。首先接入的??要通过身份验证才可以接入以确保可信性、防抵赖性、唯一性。数据传输走加密信道,解码进行必要的长度检查和特殊字符过滤。当出现恶意接入或恶意攻击可定位、可阻断时,交互的协议可使用类似vpn隧道的建立过程。云节点的节点间通讯除了上面的端的安全性可用外,要增加必要的互信等级定义(全信任、服务信任、应用信任等),通讯内置可信标识(证书或硬件)接收端定义可使用协议种类标识。确保在限定的节点,发出限定的内容,同时过滤不可信的或恶意构造的数据包。云边界的安全接口可以综合上面提到的安全方案,但是要注意将交互定义明确化,区分内边界和外边界的安全级别定义的不同。特殊需要注意的是,因为应用云和运算云实时性和信任程度的不同,运算云可以使用更复杂的算法和安全认证技术,例如rsa2048的5次叠加握手,确保信道安全可靠不被拦截篡改。
当大规模云化网络的实现完成后,就如同多细胞到功能分化的普通生物最后到人类一样,开始功能专长化发展。最后组成由中心化的核心智能云调配各种特殊功能的专属子云资源,当然这里面涉及到的云间信任、云间管理、云间协作等等一系列问题,留给专家组自行完善和讨论吧。我这里先展望一下,也为云安全预敲一下警钟。希望软件业以后有概念性的东西出来,先建立安全框架再进行产业化,衷心的希望中国企业能够联合起来抢先制定云的安全接口标准,我们一起以“一流企业做标准”这句话共勉吧。
【编辑推荐】