摘 要 随着信息化建设的快速发展,基于互联网的应用—微信平台越来越多。微信正在引领一种全新的生活方式,但同时也带来了不小的安全隐患,设计者不得不把安全防破解攻击性考虑到极致。
【关键词】微信 密码报文 安全性
微信用户的密码如何保存?微信的公众号推出之后,更多的公司、服务场所都有相应自己的微信平台促销自己的产品,为了吸纳用户关注。需体验性好,而且安全性有保证。本文从以下从几个角度来考虑如何做一个让用户放心的基于微信的精细化公共平台。
基于微信的公共号,其实,就是一个wap的访问,在微信中做一个跳转功能,使用微信内置的浏览器跳转到设计者对应的网页中,从而进行访问操作。如何把用户的密码、网页的信息进行加密,来防止被篡改呢?相应地加密手段是必要的。
1 加密手段
现在主流的加密算法有:对称加密算法,非对称加密算法和hash算法。
1.1 对称加密
指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。
常见的对称加密算法:des、3des、desx、blowfish、idea、rc6和aes
1.2 非对称加密
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。
常见的非对称加密算法:rsa、ecc、diffie-hellman、el gamal、dsa。
1.3 hash算法
hash算法是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一的hash值,却不能通过这个hash值重新获得目标信息。因此hash算法常用在不可还原的密码存储、信息完整性校验等。
常见的hash算法:md2、md4、md5、haval、sha、hmac。
如何做到尽可能不让外部人员(恶意攻击者)知道加密数据是采用何种加密算法和加密类型的呢?
2 采用加密机进行转加密
加密机会分配给使用者一个索引,一个16进制的密钥。待加密者,把索引、密钥、待加密的数据按一定的格式进行组合通过socket链接发送到加密机中。加密机找到相应加密算法进行加密后返回给待加密者。
整个流程中,待加密者并不知道加密机使用了何种算法,大大的提高了破解的可能性。但是,我们可以借助这种机制把安全性再提高一个台阶。假如有a系统和b系统。a系统是前台web用于数据的操作,b系统是后台对于web的响应,查询的数据来源和业务处理。加密机给a系统和b系统各自分配不同的密钥,a不知道加密机给b所分配的密钥和索引值,因为b系统是后台级,用户不可能接触到,所以b系统可以知道加密机给a系统所分配的密钥和索引。a系统的用户输入一个密码,这个时候,把密码 + 索引 + 密钥 通过socket链接上送到加密机中加密后返回一串16位的16进制字符。然后,a把返回的字符密文ciphertext通过xml报文或者json上送给后台,后台得到此ciphertext后,通过把密钥a,索引a,密钥b,索引b一起组合为特定的字符串通过socket送给加密机进行转加密得到新的ciphertext保存到数据库。就这样,后台数据库保存的密码的ciphertext和前台加密出来的密码的ciphertext是不一致的,从而反正内部人员查看数据库的密文找到特定的规律进而破解ciphertext.依次类推,此种办法还可以加密一些重要的数据。
3 前端和后台进行交互的加密
上面说到,a系统返回ciphertext通过xml报文或json上送到后台,恶意攻击者可以篡改此xml报文。为了防止前端和后端交互的报文中被第3方恶意篡改。对其报文进行加密是非常有必要的。
如何加密才能安全性能更高呢?所以a系统和b系统之间的xml报文的交互就需要相应的加密措施。b系统生成报文的证书,同时把证书非公开的发给a系统。a系统通过此证书对xml报文进行加密后上送给b系统。b系统,用证书进行解密获得原始的xml报文进行相应的业务处理后返回的xml报文再通过证书加密返回给a系统。a系统得到xml报文,用证书进行解密得到处理结果反馈给用户。第3方通过监听解析包工具获得数据报文也是密文的。假如第3方攻击者得到xml的密文后,通过破解或者其他渠道获取到证书,从而能解密xml报文得到明文数据。这个时候,怎么办呢?第3方直接修改一些必要的数据,例如金额,卡号,再给证书加密送给后台b系统,一
篡改成功的实施了。
4 b系统(后端系统)防篡改
如何做到识别出数据是否被篡改过呢?
4.1 采用md5对数值进行hash加密
md5是文件或者信息的一个签名,可以理解为指纹,md5多用于软件、信息、文件被篡改的验证。假如c做了个《客户端系统软件—聊天软件》供用户使用,发布到其公司对应的官网供用户进行下载,同时,提供该软件的md5值。用户若从其他非官方下载此聊天软件,若要核实该软件是否被篡改或者植入木马病毒,即可以对比该软件的md5数值和官网提供的md5数值是否一致。若一致,表明未被篡改过。否则,则被篡改了。所以,a发报文给b系统,可以把报文进行md5,然后一同发送给b系统。b对比xml报文的md5值和一起送过来的是否一致从而区分是否被篡改。这样,有个弊端,若篡改者,篡改了xml报文,同时生成新的报文的md5值给b系统,从而也成功的欺骗了b系统。
4.2 采用报文验签的形式加密
本文利用每个交易,每个不同的xml报文,需要的字段不一样的特性,设计出更方便的加密方式。内部定义每个报文需要加密签名的字段,采用只有双方知道的加密方式对特定的字段进行组合加密,然后再把证书加密一起送给b系统。这么实现有2个好处:
(1)待加密的字段更少了,产生的需要传输的报文字节更少了,提高了传输的效率。
(2)待加密的字段更灵活了,内部规定对应哪些报文需要加密哪些字段。一般会加密那些被篡改会引起系统错乱的情况。第3方攻击者,通过sniffer等工具截获到报文,要进行破解欺骗的难度大大的提高了。从而大大的提高安全性。
参考文献
[1]王地.“摇一摇”微信可能变“危信”[r].检察日报,2012(11).
[2]周璇.以微博为媒介的新型电子商务模式分析[m].武汉:中国商办工业杂志社,2011.
[3]黄俊英.手机定位技术的分析与研究[j].福建电脑,2011.63-64.
作者单位
广东环境保护工程职业学院 广东省广州市 528216