开发学院WEB开发Xml 网络传输中 XML 敏感信息的加密 阅读

网络传输中 XML 敏感信息的加密

 2010-10-22 17:18:25 来源:WEB开发网   
核心提示: 这样的转化是可逆的,敏感信息的解密方案解密过程由于对称加密算法的特性,网络传输中 XML 敏感信息的加密(7),解密过程基本上就是加密的逆过程,Step 2.1 把加密后十六进制字符串形式转换为二进制形式按照加密部分 Step 1.3 介绍的转换方法,三重保护为敏感数据提供了一个强大的安全保障,

这样的转化是可逆的。

敏感信息的解密方案

解密过程

由于对称加密算法的特性,解密过程基本上就是加密的逆过程。

Step 2.1 把加密后十六进制字符串形式转换为二进制形式

按照加密部分 Step 1.3 介绍的转换方法,我们就可以把需要解密的十六进制字符串值逆向转换到十六进制值。

Step 2.2 使用 AES 算法进行解密

同样的,跟 AES 的加密过程一样,在服务器端本身就保存着该用户的用户密码,并且可以获得客户端以明文形式传送过来的随机字符串即 SessionID, 由 此便可以以同样的 HMAC 计算方式得到 AES 算法的加密密钥。调用 AES 算法的标准解密过程便可以得到解密后的数据。

Step 2.3 对解密后的数据进行去头操作

解密后的数据还包含我们附加的头部结构,所以我们需要 unPack 操作,以便得到原始数据。具体操作如 清单 8所示。

清单 8. 对解密后的数据进行 unPack

 // 获得解密后,数据体的头部结构 DataHeader header  
 // 从网络序转换到主机序 
  header.canary1 = ntohl(header.canary1); 
  header.offset = ntohs(header.offset); 
  header.size  = ntohl(header.size); 
  canary2   = ntohl(canary2); 
  const UINT32 canary_constant = 0xDEADC0DE; 
 // 验证识别码和头部版本 
  if((header.canary1 != canary_constant) || (canary2 != canary_constant)){ 
    // 标识位错误,直接丢弃或报错 
    LOG << "Header is invalid." << endl; 
    return; 
  } 
  if(header.version != 0){ 
    // 检测版本,如果不是相应版本也做丢弃处理 
    LOG<< "Unrecognized header version : " << (unsigned) header.version << endl; 
    return; 
  } 
 
 // 验证 UID( 即随机字符串 ), 若不一致则报错 
  UINT32 UID_offset   = sizeof(header); 
  UINT32 payload_offset = UID_offset + header.UIDsize; 
  UID.assign(data.begin()+UID_offset, data.begin()+payload_offset); 
  if (UID != SessionID){ 
  LOG << "UID did not match the SessionID." << endl; 
  return; 
  } 
  
 // 抽取原始数据 
  UINT32 payload_end_offset = payload_offset + header.size; 
  payload.assign(data.begin()+payload_offset, data.begin()+payload_end_offset); 

unPack 之后,我们得到的 payload 内容就是本次传输过程中真正的负载数据值。

小结

本文没有采用成本较高而且较复杂的 SSL (Secure Sockets Layer ) 协议进行加密通讯,而是介绍了一套针对敏感信息的加密机制,对数据进行了多重 安全考量。其中包括对数据的 Pack 操作保证数据的完整性;结合利用会话随机字符串 SessionID 和用户密码 password 的 HMAC 值做为加密算法的密钥大大增强了加密过程的安全性;利用目前最好的对称加密算法 AES 保证了加密数 据本身的安全性,三重保护为敏感数据提供了一个强大的安全保障。而且经实践证明,本方法性能良好。

上一页  2 3 4 5 6 7 

Tags:网络传输 XML 敏感

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接