网站作为网民获取信息的主要来源之一,基于Html5的建站服务和应用越来越多,而Html5存在一个关键问题:
网页内的资源(包括了javascript、文字、图像等)可以通过非常简单的方式获取!
目前网络上提供了各种针对javascript(简称js)的加密手段,主要还是以混淆,Base64,去逻辑化等手段进行保护。先不说此类的加密是否安全,但是针对内部链接、文字、图像相关的数据并没有合理的加密手段。这个一方面的原因是js需要浏览器的javascript引擎完成执行,直接密码后的js是无法运行的,于是就出现了上述手段,这些手段仅仅是延缓了破解的时间。而加密后的图文信息基本就无法显示,部分网站为了防止用户获取网页信息,采用屏蔽右键、禁止复制等一系列的措施。显然这些措施均是治标不治本。
(一)javascript加密问题
也许你会问,我一个简单的网站,javascript也就实现了一点简单的网页效果而已,干嘛对javascript源码加密?这样的网站却是没必要,但是如果有一些网页效果辛苦研发出来后想收费呢?如果需要通过HTML5开发游戏呢?这个时候不得不考虑javascript源码加密。不加密就意味着游戏交互信息全是裸露的,游戏第一天上线,第二天就被抄袭。
因为浏览器的执行方式,所以javascript加密后必须在javascript引擎执行之前完成解密工作,否则将无法执行。显然,如何保障这一点成为javascript加密的核心问题。类似于RSA、ECC、AES、DES、SM等非对称和对称加密算法,均是在安全环境下进行解密。比如你把私钥用来解密javascript源码,公钥加密javascript源码并存放于服务器中,就意味着私钥在用户的浏览器中,这基本是本末倒置。换句话讲,除非通过ActiveX控件来构建协议并进行解密,否则将无法保障安全。而采用ActiveX控件存在浏览器兼容,网民需要安装等一列问题。
考虑兼容问题,最简单的方案是解密程序用javascript实现,那么解密秘钥就被完全暴露,那么加密则毫无意义。而且公开了解密的js,解密方法也已知,无法保障javascript源码的安全。于是需要实现下面几点才能在兼容所有浏览器的情况下保障javascript源码的安全:
1)解密javascript源码的解密算法用javascript实现&