这是我参加信息安全大赛时,服务器的环境搭建,主要是加密系统的完善。
开发环境搭建一:服务器端开发环境搭建
开发软件的运用工具Eclipse软件包:
1、测试工具Junit软件包
以白盒测试的方式演示如何使用Java完成相应的加密盒解密。
JUnit安装:
1). 获取JUnit
到https://github.com/junit-team/junit/wiki/Download-and-Install网站下载。如下图4-1所示:
图4-1 JUnit模块下载
2).将下载的junit.jar包引进本系统的J2EE工程中,如下图4-2所示和图4-3所示:
图4-2 拷贝junit.jar包到工程下
图4-3 引进junit.jar包到工程下
2、加固你的系统
鉴于出口限制问题,我们得到的JDK安全强度不够高,主要是密钥长度不够长,对于这一点,Sun公司在其网站上提供了无政策限制权限文件(UnlimitedStrength Jurisdiction Policy Files)。
图 附-1 权限文件下载页面
因此本系统需要重新部署JRE环境中的如下图附-2的local_policy.jar和US_export_policy.jar文件。即复制这两个文件,切换到%JDK_HOME%\jre\lib\securerity目录下,覆盖local_policy.jar和US_export_policy.jar文件。同时也要覆盖%JRE_HOME%\lib\securerity文件下的者两个文件。
图 附-2 jec_policy-6.zip文件中jce目录列表
3、第三方开源组件包
Java7提供了多种算法支持,但是并不完善。许多加密强度较高的算法(如MD4和IDEA),Java 7中没有提供。
1) Bouncy Castle (http://www.bouncycastle.org/)是一个开源加密组件。它提供了多种Java不支持的算法,如消息摘要算法MD4和SHA-224、对称加密算法IDEA、数字签字算法ECDSA等,目前BouncyCastle最新的版本是1.48。我们可以通过http://www.bouncycastle.org/latest_releases.html下载(如下下图附-3)。
图 附-3 Bouncy Castle 可执行二进制文件下载页面
为了引入Bouncy Castle我们需要在%JDK_HOME%\jre\lib\security\java.security文件中添加如下文字:security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider。如下图附-4:
图 附-4配置Bouncy Castle加密组件的java.security文件修改
然后我们需要将bcprov-jdk15on-148.jar文件导入即可。即将bcprov-jdk15on-148.jar文件拷贝到 %JDK_HOME%\jre\lib\ext\目录下。同样对%JDK_HOME%\jre\lib\security\java.security和%JDK_HOME%\jre\lib\ext\进行同样的操作。
本系统运用到的BouncyCastle的API有:
- JCE工具及其拓展包
仅包括org.bouncycastle.jce包。这是对JCE框架的支持。其中定义了一些拓展算法的接口与实现。
- JCE支持者和测试包
包括org.bouncycastle.jce.provider包。
- 轻量级的加密包
包括org.bouncycastle.crypto包及其子包。
- OCSP和OpenSSL PEM支持包
包括org.bouncycastle.crypto包及其子包和org.bouncycastle.openssl包及其子包。这两个包都是和数字证书相关的支持包。 OCSP(Online Certificate StatusProtocol,在线证书状态协议)用于鉴定所需证书(撤销)状态。
- ASN.1编码包
包括org.bouncycastle.sanl包及其子包。标准的ASN.1编码规则有基本的编码规则(BasicEncoding Rules,BER)、规范编码 规则(CanonicalEncoding Rules,CER)等。本系统导出数字证书的时候,会使用到DER编码。
- 工具包
包括org.bouncycastle.until包及其子包。提供了很多与编码转换有关的工具类,如Base64编码和十六进制编码。
- 其他包
包括org.bouncycastle.mozilla包及其子包和org.bouncycastle.x509包及其子包。org.bouncycastle.x509可以用于支持X.509格式 的数字证书。
2) Commons Codec (http://commons.apache.org/proper/commons-codec/)同样是一款开源组件,它位于国际开源组织Apache(http://www.apache.org/)旗下。它同样对Java的API做出了进一步的封装,加强了易用性。我们可以在CommonsCodec的官方网站上下载,如下图附-5所示:
图 附-5 Commons Codec下载页面
目前CommonsCodec最新的版本是1.8。对于CommonsCodec的两个包只要将它们拷贝到工程的lib目录下,并导入工程的引用包里面即可。
Commons Codec在本系统运用主要是如下几方面:
- org.apache.commons.codec:该包内主要完成了编码转换实现,如Base64、二进制、十六进制和字符编码。
- org.apache.commons.codec.binary:该包内仅有一个实现类DigestUtils,它是对Java原生消息摘要实现的改进。
- org.apache.commons.codec.language:该包内主要完成了语言和语音编码器实现。
- org.apache.commons.codec.net:该包内主要完成了网络相关的编码和解码,如Utr编码,解码。
4、网络监听工具WireShark(http://www.woreshark.org)
本项目通过网络监听工具WireShark完成对网络数据的监控。
图 附-6 WireShark