网络传输中 XML 敏感信息的加密
2010-10-22 17:18:25 来源:WEB开发网由此可以看到,数据进行打包后,在数据的头部和尾部都含由一个符合网络序的校验码 0xDEADC0DE,并且在头部结构体中包含了整 个数据各部分内容的偏移量等信息,这个机制保证了,一旦数据在传输过程中被截断或者被更改就可以很容易的检测到,对数据提供了初步的保护。
Step 1.2 AES 加密算法密钥的获取
下面我们考虑 AES 的密钥如何选取。一般的,可以用用户密码的 MD5 值作为 AES 密钥,但是一旦入侵者监听到散列后的密码值,则比较危险。 而且,目前 MD5 算法已被破解。所以直接采用 MD5 来对用户密码进行散列得到密钥的做法是不太安全的。
如果我们在散列算法中加入特殊的密钥,来结合用户密码产生 AES 密钥,双重保证可以大大提高安全性。HMAC(Keyed-Hash Message Authentication Code) 刚好可以实现此策略。 HMAC 是一种经加密的散列消息验证码,是一种使用加密散列函数和密钥计算出来的一种消息验证码(MAC)。就像任何 MAC 一样,它也可以对信息数据的完 整性和真实性进行同步检查。查看参考资料中的“HMAC”获得更多关于 HMAC 的信息。
在我们的应用场景中,客户端每次跟服务器端进行通信时会产生一个随机字符串 , 即 XML 文件中的 SessionID,然后以此为密钥,生成用户密码的 HMAC 值,为了 进一步加强安全,我们把 HMAC 值转换为十六进制字符串后作为 AES 算法的初始密钥。
随机字符串一般由信息的发送方来产生。随机字符串的生成规则如 图 2所示。
图 2. 随机字符串的组成
对 mac address,process id, time stamp 进行十六进制显示和宽度对齐,便可以得到相应的随机字符串。比如 App-001e3751a6e6-00000d34-000000004ba7589e0. 在每次的会话过程中,随机字符串都各不相同,从而使得生成的 HMAC 值也只在当前会话中有效。
更多精彩
赞助商链接