加密技术是信息安全采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的文本(或者可以理解的信息)与数字密钥的结合,产生不可理解的密文的步骤。对数据加密的技术分为两类,即对称加密和非对称加密。

在本文中所指的ASP加密是种广义加密的概念。广义的加密是指保障数据安全的各种方式,包括编码转换、封装或通过密钥进行加密、签名和身份认证。虽然有些不是严格意义的加密技术(有些方法甚至不叫加密),但作为一种加密的概念,确实早就存在。ASP广义加密是指使用各种编码技术、对称加密算法、简单异或处理及杂凑算法对ASP的代码、关键数据及向数据库传递的数据进行转换处理的过程。本文先对ASP广义加密的各种方法进行介绍,然后分析各自的实用性,并提出一些合理的建议。

一、ASP加密常用方法

ASP是Active Server pages的缩写,是微软提供的一种网站开发程序,是一种服务器端的指令环境,用来建立并执行交互式Web服务器应用程序。本文提到的ASP加密方法是指利用外部程序对ASP设计代码进行处理或在ASP设计中针对敏感数据和信息的保护方法,一般有以下几种方法。

1、使用微软的MS Script Encode进行加密

微软提供了脚本编码器MS Script Encode,可以对ASP程序进行加密。这是一个简单的命令行工具,其执行文件是SRCENC.EXE,需要在DOS下运行。它只加密页面中嵌入的脚本代码,把网页中之间的ASP代码转换成不可读的乱码,其他部分则保持原样不变。加密后的程序,必须使用Internet Explorer 5.0以上版本才能正常浏览。用SRCENC加密之后,文件中被加密过的部分将变成只读类型,只要修改了加密部分,就会导致整个文件不能使用。

2、如果要保护开发的asp代码,可以通过开发动态链接库DLL组件的方法进行保护。

DLL是Dynamic Link Library 的缩写形式,是一个包含可由多个程序同时使用的代码和数据的类库,并不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。

3、使用Base64编码进行转换所需要加密的代码部分。

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息。采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。此方法需要用户自己定义编码转换函数。

4、通过MD5函数对asp中涉及到的用户密码进行函数处理得到数字摘要,替换数据库中的明文密码。

MD5即Message-Digest Algorithm 5,用于确保信息传输完整一致。它是计算机广泛使用的杂凑算法之一,主流编程语言包括asp已有MD5实现。

5、通过对需要加密的代码部分和密钥种子进行异或处理进行加密。

密钥种子可以是种512位或1024位的数据,放在服务器较秘密的位置。这是一种简化的对称加密算法,需要自定义函数实现转换。

二、 asp加密技术分析

在本文提到的这些ASP加密方法实际上是在不同方面对于ASP进行安全保护,归类于以下三种操作方式,现分别进行分析。

1、编码技术

计算机的编码种类比较多,对于普通ASCII字符或汉字都有各种编码转换方法。对于ASP程序常用的编码主要包括GB、UTF-8、UNICODE、ASCII和BASE64等等。因为ASP源代码是文本文件,因而对它的保护尤其重要。MS encode程序是微软开发的一种针对ASP或网页中客户端脚本进行加密代码转换的工具。MS encode程序编码转换容易,和IIS结合紧密,但转换后的代码可以直接使用ZWDECODE程序直接解码。如果需要保护ASP源代码的知识产权,MS encode程序显然用途不大。

Dll文件是被编译过的机器代码,如果没有源项目文件,是很难被反编译的,所以组件加密这种方法很安全,也不容易被破解。如果使用VB语言进行封装的话,操作过程如下:新建一个VB的activex dll项目;编写VB组件;生成安装文件;在IIS服务器上安装组件;在网页中调用组件。

对于ASP脚本编程语言而言,还可以使用其他编码技术进行处理。常用的有base64编码、UNICODE编码、UTF-8编码和ASCII转换。这样就可以把ASP代码转换成一种不能视觉直接识别的密文,有一定的效果。但是这些密文转换成明文比较容易,虽然可以组合其他方法使用,但笔者认为此类操作略显繁琐。

2、HASH函数技术

Hash函数,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HASH函数把一些不同长度的信息转化成杂乱的128位或160位的编码里,即HASH值。HASH函数一般包括MD4、MD5、SHA1等算法。

Hash函数是不可逆的,在ASP中应用是将某些特殊信息处理后保存在数据库中。有人认为将密码通过MD5算法处理后再保存即使被非法入侵者获取也不可能计算出明文密码来,这是错误的,入侵者可以通过网站查询与字典暴力破解等多个方法获取MD5密文对应的密码明文,从而轻松入侵系统。但现阶段处理网站数据库里的密码数据,使用hash函数生成数字摘要再进行比较,进而身份验证是一种较常规和可用的方法。

3、对称加密技术

对称加密算法是应用较早的加密算法,技术成熟。在计算机系统中广泛使用的对称加密算法有DES、3DES、IDEA和AES。在ASP程序中完整地使用对称加密算法并不多见,究其原因笔者认为:加密的对象不好确定,ASP文本文件、关键代码或关键数据都有可能;密钥不易保护;ASP页面包含HTML代码及特殊字符,对于特殊字符处理,程序实现有一定的难度。前面提到的简单异或处理方法利用到对称加密中最基本的数据分组和异或处理方法,对于处理短数据或关键代码来说,方法是有一定的隐蔽性和可用性,密钥种子也需保存安全,是一种ASP程序员基于网站内容的秘密使用。如果用此方法加密用户名或密码数据的话,因方法的秘密性及数据较短,破解还是有一定的难度的。

小知识之对称加密算法介绍:

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。