个人 用户由于没有提供交易功能,所以只采用 ID 号和密码口令的身份确认机制。
● 安全管理
为了确保系统的安全性,除了采用上述技术手段(即“技防”)外,还必须建立 严格的内部安全机制(即“人防”)。“人防”措施包括:根据最小权限原则, 结合分级管理来分配操作权限;严格管理内部用户帐号和密码;加强用户的身 份确认;对关键应用实施跟踪;建立安全维护日志;后台自动记录运行痕迹;对 重要数据进行备份。 一个实际电子商务安全项目 作者主持的湖南省教育厅资助项目“电子商务高级中间件的设计与开发”实 际项目,采用安全中间件的解决方案,成功地完成了电子商务中业务处理的部 分安全问题。所使用的开发平台为:java(jsp)开发工具+ tomcat 服务器+ SQL Server 及 access 数据库。其总体
设计框架图如图 1 所示。 现将部分安全关键技术详述如下: ● 用 RMI 机制的 3 层模式结构来封装加密算法 RMI 即 Remote Method Invocation(远程方法调用),它提供了针对 java 对象 的分布式计算的一种简单而直接的模型。RMI 使用
Java 内置的安全机制保证 下载执行程序时用户系统的安全,并使用专门为保护
系统免遭恶意小程序侵 害而设计的安全管理程序。RMI 机制将表示层、处理层和数据层分开,一方面 使得并发操作更易被处理,另一方面,使得安全控制更容易实现。
RMI 架构包 括 3 部分:(1)桩/骨架层 Stub/Skeleton;(2)远程调用层 Remote Reference Layer;(3)传输层 Transport Layer。 实现 RMI 分 3 步进行:第一步是建立和编译服务接口。 这个接口定义了所有的 提供远程服务的功能;第二步是远程服务的实现;第三步是使用 RMI 编译器 rmic 来生成桩和框架文件;最后是建立服务器和客户端。其中接口设计的源 代码如下: //生成 RMI 接口的 JAVA 源代码 //packagename: rmiinterface.rmi Package rmiinterface.rmi import java.rmi.Remote; public interface Encrypt extends Remote{ public byte[] Encode(String sText) throws java.rmi.RemoteException; public String Decode(byte[] sText) throws java.rmi.RemoteException; }
4
江苏经贸职业技术期末论文
需要说明的是,这个接口继承自 Remote,每一个定义的方法都必须抛出一个 RemoteException 异常对象。
加密来实现安全传输 ● 使用 SSL 加密来实现安全传输 SSL(Secure Socket Layer),安
全套接字层,位于 HTTP 层和 TCP 层之间,用来 建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL 是工作在 公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但 解密数据必须要通过相应的私人密钥。 使用 SSL 安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书 与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的 公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话 密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了 一个惟一的安全通道。加密解密通
常用 RSA 算法来实现分 3 步完成:第一步: 生成密钥对;第二步:公钥加密;第三步:私钥解密。 为简单起见,这里只列出密 钥对的生成过程,源代码如下: //生成密钥对的 JAVA
源代码 public int generateKeyPair(int length){ BigIntegerp, q, n, d, e, pSub1, qSub1, phi; BigIntegerdP, dQ, qInv;
int pbitlength = (length + 1) / 2; int qbitlength = (length- pbitlength); e=new BigInteger("65537",10); //生成素数 p,并且使 p-1 与 e 互素 for (;;){ p = new BigInteger(pbitlength, 50,new SecureRandom()); if (e.gcd(p.subtract(ONE)).equals(ONE)) break; } for (;;){ //生成素数 q,并且使 q-1 与 e 互素,与 p 不相等 for (;;) { q = new BigInteger(qbitlength,50,new SecureRandom()); if (e.gcd(q.subtract(ONE)).equals(ONE) %26amp;%26amp; !