有同事想学习一下软件加密与通信加密技术,现虚拟举例说明,部分思想仅限于此工程,推而广之时,要注意适用范围。
一、需求描述:
1、分公司系统主要构成:
      S1、S2、S3是由Java开发的服务器程序,分别实现通信、数据处理等功能;
      S4是B/S服务程序,由Jsee开发,Tomcat;
      C1是GIS终端程序,由VC6开发;
 
2、总部系统主要构成:
      S4、S5、S6由Java开发;S6安装在分公司系统上;
      与分公司共用C1;
      S7是B/S服务程序,由Jsee开发,Tomcat;
 
要求实现防盗版,防黑客功能,并且同一台服务器只允许使用一个狗或ukey。
 
二、解决方案思路:
实现原则:
1、在这个系统中,按大部分程序是可以用SSL加密传输的,可用Ukey实现,而S1是和硬件通信的,不能采用SSL,只能用狗防盗版了。
2、同一软件用ukey实现SSL后,没有必要加狗。
3、服务器用的keystore以文件形式存放,不要放在iKey里,因为据可告消息来源声称iKey存取一次大约需要1秒。为此,服务器端可以用狗对keystore进行保护。
4、为了表述直观,暂时把加密设备分为三类,一个纯粹为加密软件用的狗,简称软狗;二是为保护keystore文件用的狗,简称ks狗;三是ukey或ikey。
 
具体做法:
1、软狗中存放系统名,不要存放程序名,这样,各程序认证狗时取同一个名,可以实现一台服务器共用一只狗。
2、ks狗中存放系统名、keystore密码,keystore在服务器中用同一密码。
3、系统内用同一ca.key根证书签名。
4、ikey存放keystore、ks密码,对于私钥密码可要求用户输入,或直接存在ikey中。