王 娜
(中国联合网络通信集团有限公司 北京 100033)
云计算数据安全管理是将计算任务部署到云端,通过基于云端数据库、服务器、OpenID的统一身份管理模型、PGP全信任模型等软硬件,建立起统一资源定位符(uniform resource locator, URL)数字身份认证、公钥环数字签名加密管理系统,进行用户跨域、跨服务器登录的身份认证,并根据终端用户授权共享其部分身份信息。随后引入基于数据分离的安全存储算法(KPDA data separation algorithm, KPDA),设置分布式存储系统的有限域、数据信息长度,计算出不同数据切片的元素集合,将其分发、存储至相应的云服务器中,数据恢复时应通过先获取云服务器的身份信息、再还原数据块矩阵阶梯阵列向量,得到原始的网络数据信息。
云计算网络平台属于异构的数据传输与存储模型,用户访问的数据资源、功能服务被配置于不同域中,使用传统单点登录URL网络站点的访问模式,只能被用于解决域内的访问需求,而不能对跨域访问用户做出认证。因而引入基于OpenID的统一身份认证模型,以用户为中心设置开放化、分散化的数字身份识别框架,只需要用户在OpenID服务网站处预先注册,获取其OpenID身份标识符URI(uniform resource identifier, URI)/XRI,由OpenID服务提供商在用户登录时鉴权其终端身份,包括URI身份信息、XRI字符串标识符,若OpenID 服务网站验证用户身份通过后,则将跳转至支持OpenID身份认证的服务方(relying party, RP)网络站点,此时无须再进行用户名、密码的重新认证[1]。
在用户统一身份认证管理过程中,基于OpenID URI数字身份的认证方案,具有去中心化、便捷化特征,通过将用户身份认证、应用服务相分离,由OpenID认证服务器对用户URI/XRI身份标识信息、登录密码做出统一认证,终端用户也可自行管理个人身份标识信息的分发,满足用户不同的数据及服务访问需求。
OpenID统一身份认证模型内包含用户、OpenID服务器、RP服务方站点等组成实体[2]。用户可根据需求选择某一分散的OpenID认证服务器注册个人登录信息,OpenID认证服务器向用户发送唯一的URI身份标识信息(如username.op.com)。同时用户可在多个OpenID认证服务器中注册个人信息,当某一OpenID认证服务器发生故障时,可按照XRDS系统设定的优先级顺序选择其他OpenID服务器,完成用户身份认证,支持OpenID协议的所有云服务访问。
假设访问用户为Alice,用户Alice在OpenID 服务网站中注册的URI身份标识为“alice.openid-provider.org”,此时用户Alice若要使用该URI身份标识登录至RP服务方的“example.com”网络站点,则需要经历以下的OpenID身份认证流程。
(1)用户Alice在网络计算机浏览器内输入“example.com”网络访问站点,example.com收到访问服务请求立即跳转至OpenID身份认证页面。OpenID服务器、RP服务方站点间通过共享密钥建立关联,利用会话请求、会话响应阶段的共享密钥,可检验XRI Resolution协议(用于解析XRI)、Yadis协议(用于解析URL)的合法性。
(2)由OpenID认证服务器根据用户输入的个人注册信息登录表单,认证用户“xri://$ip”“xri://$dns”或URI身份标识信息的合法性,若合法则允许用户登录至OpenID服务器。
(3)RP服务方存储关联句柄,并向OpenID服务器发出认证用户身份请求。OpenID服务器、RP服务方站点间使用Diffie-Hellman密钥交换协议进行通信,使用共享密钥对完成数据消息的数字签名和验证。
(4)RP服务方自动发现用户的URI地址、“openid-provider.org”身份标识信息,并创建与OpenID服务器方的Association关联的共享密钥,向OpenID服务器发送用户身份标识断言的请求,OpenID认证服务器接收请求后,返回验证过的URI身份标识信息和关联句柄。
(5)RP服务方会将自身发现查询的“openid-provider.org”身份标识信息与OpenID服务器返回的URI身份标识信息进行匹配,若用户Alice的身份标识信息“openid-provider.org”不合法,则RP服务方得到否定回答,“example.com”网络站点拒绝用户登录;若“openid-provider.org”身份标识信息合法,则RP服务方允许用户Alice登录,随后网络站点保存该次会话。
(6)属性交换。在RP服务方提交用户身份验证请求的过程中,向OpenID认证服务器发出自身需要某些用户信息字段(也即用户属性信息)的请求,随后OpenID认证服务器将这一用户信息访问请求发送至用户终端,由用户决定是否向其提供身份属性信息,若用户同意则由OpenID服务器返回类似“http://openid.net/srv/ax/1.0”的身份属性信息,RP服务方接收指定的属性列表、身份属性信息,若不同意则拒绝访问。
PGP全信任模型为依托于OpenPGP数字签名标准规格的密文加密技术,负责生成公钥密码的密钥对、加密和解密、数字签名生成和验证等操作。基于PGP信任模型的去中心化分布式网络数据加密,通常采取公钥环信任模式,实现一次性会话密钥的加密、解密、生成数字签名、验证数字签名,进而确保分布式网络数据消息传输、存储的安全性[3]。具体的PGP全信任模型的云计算数据加密、数字签名流程如图1所示。
(1)分布式网络数据消息加密。使用伪随机数生成器自动生成会话密钥对,用接收者的公钥密码加密会话密钥,用会话密钥对数据压缩消息加密,将经过加密后的网络数据消息、加密后的会话密钥合并,并将加密后的网络文本数据转换为报文数据。
(2)压缩数据消息解密。接收者输入解密的口令,使用单向散列函数求取口令的散列值(如用户登录身份认证的password口令),生成私钥的解密密钥。对接收与转换完成的报文数据,使用私钥进行会话密钥解密,再使用会话密钥的对称密码解密压缩数据,得到原始的数据消息。
(3)生成数字签名。由发送用户输入数字签名口令Signature,确定与接收用户PGP公钥相关的“密钥所有者”“密钥数字签名”“密钥合法性Key Legitimacy”等指示字段。使用单向散列函数求取签名口令的散列值,对原始数据消息的散列值进行数字签名,将原始数据消息、签名后的数据散列值合并,压缩为文本数据,通过二进制文本转换器转换为报文数据。
(4)验证数字签名。使用二进制文本转换器,将报文数据转换成二进制文本数据,对压缩过的数据解压缩,分解解压缩后的数据为原始数据消息、签名后的数据散列值。将签名后的数据散列值使用发送用户的PGP公钥解密,使用单向散列函数计算分解的原始数据消息散列值,比较二者生成的散列值结果,若相等则表明数字签名验证成功,否则表示验证失败。
KPDA数据分离算法也被称为密钥策略分散算法,主要面对C/S(服务器/客户机)结构、数据块存储的服务器文件系统,将云计算网络数据分块、独立分布到n个物理节点之中保存,这时便需要用到数据分离与恢复算法。现有的数据分离算法包括数据条带分割技术、密钥加密技术、纠删编码技术等[4]。
(1)数据条带分割技术。数据条带分割是将原始数据分割为若干个小段,保存不同数据块至相应的服务器存储设备中。如:独立磁盘冗余磁盘阵列(redundant array of independent disk, RAID)条带分割技术,是将数据分割存储至RAID0、RAID1、…、RAIDn等的数据字节,不同数据字节被写入不同的存储磁盘[5]。即使某一磁盘出现故障,其他磁盘不受影响,该磁盘分割的数据可通过奇偶校验、纠删编码等方式重建。
(2)密钥加密技术。密钥加密包括密钥生成、数据加密等处理技术。在有限域内围绕原始网络数据,选定单个数据字段长度n=2m,设置码源长度l、可纠错数量t,在原始数据集合GF()中构造1×n阶Goppa码矩阵G=[IFl×(n-1)]、1×1阶非奇异矩阵S、n×n阶置换阵P,对G置乱生成加密密钥G′=SGP。其中S、P表示私钥,G′表示公钥。
(3)纠删编码技术。纠删编码为提高数据可用性的处理技术,采用纠删编码方式将原始明文数据转换为密文,将分离后数据片段合并,设置为n块。将其他冗余数据块扩展、编码与存储至相应网络节点或磁盘,如RS码、Tornad码以防止数据被窃取或丢失,保证网络文本数据的可用性。
(1)密钥生成与加密。利用构造的1×n阶Goppa码矩阵G=[IFl×(n-l)]、G′公钥,对n×n阶的数据字段置换阵P做出加密操作。之后对加密数据做出压缩变换,使原始数据D消除码字间的线性关系,若原始数据D的长度为N,则将不同网络节点存储的数据字段整合为矩阵D,表示如式(1)。将式(1)矩阵计算得到压缩后的原始数据集合记作Mi=(d(l+1)/(i-1),d(l+2)/(i-1),…,dil)。
(1)
(2)确定数据合并规则。依据G′公钥将原始明文数据转换为密文后,按照Ci=(ci1,ci2,…,cin)=MiG′=MiSGP的数据合并规则,设置n个分离的数据片段,构成数据合并规则的线性方程组S=(S1,S2,…,Sn),计算公式如式(2)。其中di∈G,i={1,2,…,N/1}。
(2)
(3)纠删编码。使用诸如RS码的循环码、反馈线性移位寄存器,将S1、S2、…、Sn等数据份额集合做出纠删编码,分配至n个不同的网络节点存储,根据循环码固有的代数结构完成线性分组方程的译码,直到所有数据份额集合分配完毕。
利用硬件参数为Genuine Intel(R) CPU T2080 @1.73 GHz CPU 32 GB的虚拟机、LINUX操作系统,安装BitXMesh测试组件,搭建起用于KPDA数据分离算法存储实验的环境。设置数据分离存储实验的测试代码,对参与实验的原始数据D做出确认、密钥加密、数据份额集合S设置与分配存储,得到不同吞吐数据量下的KPDA算法实验结果如表1所示。
表1 不同吞吐数据量下的KPDA算法实验结果
从表1可得出,当原始数据D吞吐量(TPS)处于100~10 K范围内时,利用KPDA数据分离算法对网络隐私数据做出加密、分离与存储,其实用拜占庭容错算法(practical byzantine fault tolerance, PBFT)处于稳步上升趋势。当面对海量化(TPS>10 K)数据的加密与存储时,PBET容错提升至90%,表现出明显的安全防护优势。
综上所述,基于大数据及云计算技术的用户访问控制、数据安全管理,主要利用密文或密钥策略的属性基加密方案、RAA-CCP统一身份认证协议等,完成用户统一身份认证、数据加密/解密传输、数据存储等任务要求。通过引入基于OpenID统一身份认证模型,获取其OpenID身份标识URI/XRI,由OpenID服务提供商在用户登录时鉴权其终端身份,使用PGP全信任模型进行云计算网络数据数字签名加密,使用KPDA数据分离算法,建构起用于数据块文件分散、分布式私密数据存储的管理系统,实现不同类型数据资源的加密传输、安全存储。