现在的位置: 首页 > 综合 > 正文

bombing:5证书认证系统设计与实现-实现下

2014年09月05日 ⁄ 综合 ⁄ 共 5733字 ⁄ 字号 评论关闭

4.4 统一接口实现

统一接口实现是证书认证系统的重要课题设计之一,良好的统一接口[19]能实现证书认证系统的业务与数据有效分层、能提供证书认证系统模块化结构、能提升证书认证系统稳定及性能、能实现证书系统的跨平台通讯及移植,保持证书认证系统的先进性。本证书认证系统统一接口主要包括统一数据库访问接口、统一套接字通讯接口、统一报文编码解码接口等。

4.4.1统一数据库访问接口

统一数据库访问接口[20]用于屏蔽不同数据库的实现细节,支持ORACLE、INFOMIX、DB2、MYSQL等大中小数据库访问,简化证书认证系统数据库操作,保证证书认证系统的设计先进性。其功能主要包括数据库连接池初始化接口、从连接池获取数据库连接接口、释放数据库连接到连接池接口、释放数据库连接池接口、执行单个非select数据库语句接口、执行多个非select数据库语句接口、数据库事务回退接口、数据库事务提交接口、执行select数据库语句接口(返回单条记录)、执行select数据库语句接口(返回多条记录)、打开游标接口、通过游标获取数据接口、关闭游标接口、打开Lob字段写数据接口、往Lob字段写数据接口、打开Lob字段读数据接口、从Lob字段读数据接口、关闭Lob字段接口。

序号

函数设计

描述

1

int UN_EsqlDB_PoolInit(int bounds, char* dbName, char* dbUser, char* dbPswd);

数据库连接池初始化

2

int UN_EsqlDB_ConnGet(UNDBHandle* handle, int sTimeout, int nsTimeout);

从连接池获取数据库连接

3

int UN_EsqlDB_ConnFree(UNDBHandle handle, int validFlag);

释放数据库连接到连接池

4

int UN_EsqlDB_PoolFree();

释放数据库连接池

5

Int UN_EsqlDB_ExecNSelSql(UNDBHandle handle, char* sql);

执行单个非select数据库语句(不包含事务)

6

Int UN_EsqlDB_ExecNSelSqls(UNDBHandle handle, char* sqls[]);

执行多个非select数据库语句(包含事务)

7

int UN_EsqlDB_BeginTran(UNDBHandle handle);

数据库事务开始

8

int UN_EsqlDB_Rollback(UNDBHandle handle);

数据库事务回退

9

int UN_EsqlDB_Commit(UNDBHandle handle);

数据库事务提交

10

int UN_EsqlDB_ExecSelSql(UNDBHandle handle, char* sql, UNDBRow* row);

执行select数据库语句(返回单条记录)

11

int UN_EsqlDB_ExecSelSqlMR(UNDBHandle handle, char* sql, int beginNo, int count, UNDBRow* rows, int* allRecNum);

执行select数据库语句(返回多条记录)

12

int DA_EsqlDB_OpenCursor(DADBHandle handle, char* sql, int fieldCount, DADBCursor* pCursor);

打开游标

 

13

int DA_EsqlDB_FetchByCursor(DADBHandle handle, DADBCursor cursor, DADBRow* row);

通过游标获取数据

 

14

int DA_EsqlDB_CloseCursor(DADBHandle handle, DADBCursor* pCursor);

关闭游标

4.4.2统一套接字通讯接口

统一套接字通讯接口[21]可运行于Windows平台和Linux、Sco Unix、HP-UX和IBM AIX等主流Unix平台,增强证书认证系统技术先进性。该接口能实现普通SOCKET通讯和SSL安全通讯。

序号

函数设计

描述

1

int UN_Socket_PoolInit(UNSock_PoolHandle* hPool, int bounds, char *hostname, int port, int sslflag, UN_SSL_PARAM* sslparam);

Socket连接池初始化

2

int UN_Socket_ConnGet(UN_SSL_SOCKET* hSocket, UNSock_PoolHandle hPool, int sTimeout, int nsTimeout);

从连接池获取Socket连接

3

int UN_Socket_ConnFree(UN_SSL_SOCKET hSocket, UNSock_PoolHandle hPool, int validFlag);

释放Socket连接到连接池

4

int UN_Socket_PoolFree(UNSock_PoolHandle* hPool);

释放Socket连接池

5

int UNSocketServerAccept(UN_SSL_SOCKET listensocket, UN_SSL_SOCKET* connectsocket, int timeout);

SocketServer端接受报文,侦听服务启动

6

int UNSocketServerSessionNew(UN_SSL_SOCKET connectsocket);

SocketServer端SSL通讯建立SessionNew环境

7

int UNSocketClientConnect(UN_SSL_SOCKET clientsocket, UN_SSL_SOCKET* connectsocket, unsigned char *hostname, int port, int sslflag);

SocketClient端连接服务端函数

8

int UNSocketSend(UN_SSL_SOCKET connectsocket, unsigned char* data, int length, int timeout);

数据发送函数

9

int UNSocketReceive(UN_SSL_SOCKET connectsocket, unsigned char** data, int* length, int timeout);

数据接受函数

10

int UNSocketMemFree(void** buff);

数据接受后释放内存函数

4.4.3统一报文编码解码接口

由图4-7 系统报文传送示意图可知,报文种类繁多、结构复杂。但各个服务器之间报文传送的结构是一定的,每个报文结构都可进行统一编号。根据报文统一编号进行编码解码报文数据。报文编码解码规范按照ASN.1的DER编码规则进行实现。其函数实现如下:

 

4.4.4统一证书编码解码接口

统一证书编码解码接口[22]完成证书编码解码、P10证书请求编码解码、CRL证书编码解码、P7编码解码。目前业界流行的证书编码解码工具有微软cryptApi函数(比如,证书库管理函数Certificate store functions)、OPENSSL底层库证书函数、JAVA系列也有不少证书编码解码软件包。

序号

函数设计

描述

1

int UNCert_CreateCertEncodeCtx(void  **ppCertEncodeCtx);

创建证书编码环境

2

int UNCert_SetCertAttributeInt(void  *pCertEncodeCtx, UNCERT_ATTRIBUTE_TYPE  certAttributeType, int  certAttributeValue);

往证书环境中,设置INT型变量

3

int UNCert_SetCertAttributeChar(void  *pCertEncodeCtx, UNCERT_ATTRIBUTE_TYPE  certAttributeType, unsigned char *certAttributeValue, int certAttributeValueLen);

往证书环境中,设置字符串型变量

4

int UNCert_SetCertSignFunc(void  *pCertEncodeCtx, UNCertSignFunc signFunc void  *pSignFuncRef,Int SignFuncRefLen);

设置硬件签名回调函数

5

int UNCert_EncodeCert( void  *pCertEncodeCtx, unsigned char *derCert,int *derCertLen);

按照DER编码规范,进行证书编码

6

int UNCert_DestroyCertEncodeCtx(void  *pCertEncodeCtx);

释放证书上下文

4.5 证书认证系统数据库实现

1)证书认证系统表设计

数据库表设计与系统架构密切相关,本证书认证系统表设计也分为RA子系统表设计、CA子系统表设计、KMC子系统表设计。重点以CA子系统表设计为例阐述实现。

2)CA子系统表设计

CA子系统主要完成CA人员及权限管理、用户证书及用户请求管理、多级CA体系创建、配置管理等。

以CA体系表(TBCAINFO)为例,介绍表字段组成。CA体系表(TBCAINFO)可以由以下字段组成:ca编号(CCaID)、ca名称(cCommName)、ca的DN(CCaDN)、ca的状态(iState)、  ca种类(iType)、ca证书起始时间(dValidStart)、ca证书终止时间(dValidEnd)、证书序列号(cCertSN)、  ca证书(cCert)、   ca使用的加密机ID号(cHsmID)、 ca使用的加密机的密钥号(iKeyNum)、 签发证书的算法ID(iAlgID)、签发ca证书使用的证书模板编号(cTempletID)、ca密钥长度(iRsaBits)等。

2)CA数据库E-R图

4.6 系统安全性设计

CA系统的安全[25]包括系统安全、通信安全、密钥安全、证书管理安全、安全审计、物理安全、人员安全等各方面。

4.6.1硬件级别安全

系统硬件级别安全主要是保障网络、主机系统、应用系统及数据库运行的安全。采取防火墙、病毒防治、漏洞扫描、入侵检测、数据备份、灾难恢复等安全防护措施。因与具体硬件设置有关系,暂不详细描述。

4.6.2软件级别安全

(1)证书认证系统网络结构分区管理[23]

参考图3-1,系统分为远程RA区、公共区、服务区、管理区和核心区、KMC区。     服务区:所有进入此区的人员使用身份识别卡刷卡进入,该区的每扇窗户都应安装玻璃破碎报警器;

管理区所有进入此区的人员需要同时使用身份识别卡和人体特征鉴别才可以进入,人员进出管理区要有日志记录。所有的房间不应安装窗户,所以的墙体应采用高强度防护墙;

核心区:所有进入此区人员需要同时使用身份识别卡和人体特征鉴别才可以进入,人员进出该区要有日志记录。核心区应为屏蔽机房,应加装高强度的钢制防盗门。所有进出屏蔽室的线路都要采取防电磁泄漏措施。屏蔽效果应符合国家密码管理相关政策要求并达到国家相关标准要求。

KMC区:为屏蔽机房,需要KMC专门管理人员方可进行。

(2)子系统间通信安全:CA系统各子系统之间、CA与KMC之间、CA与RA之间采用SSL安全通信机制。证书认证系统的统一套接字通讯接口已经实现SSL安全通讯机制。

(3)证书认证系统密钥管理安全:严格遵守《证书认证系统密码及其相关安全技术规范》对密钥安全的要求。密钥的生成和使用在硬件密码设备中完成;密钥的生成和使用有安全可靠的管理机制;存在于硬件密码设备之外的所有密钥必须加密;密钥有安全可靠的备份恢复机制;对密码设备操作由多个操作员实施。CA根私钥保存在硬件密码设备中,密钥管理中心加密私钥加密存放与数据库中。

(4)强身份认证登陆机制[24]:各个系统的前台管理终端均使用强身份认证登陆机制进行管理。CA管理终端的管理CA统一颁发人员证书和设备证书,人员证书私钥载体使用智能密码钥匙(USBKEY)。访问私钥时使用口令进行保护。

(5)人员分级、权限定制:CA人员中设置CA超级管理员、CA业务管理员、CA业务操作员、CA审计员;KMC中也有相应的人员岗位设置。各个人员都有相应的人员权限进行分配。

4.6.3日志记录及安全审计机制

1)日志记录:证书认证系统各个程序模块运行相互调用,各种业务都需要记录。主要实现记录如下信息:a)调用请求的接收时间;b)调用请求来自的网络地址;c)调用请求发起者的身份;d)调用请求的内容;e)调用请求的处理过程;f) 处理结果等。

2)安全审计:各个关键业务均实现请求签名和验证,方便审计终端的审计;人员操作每一笔业务均签名,实现审计终端的安全审计。

4.6.4证书模板机制安全

证书模板在CA子系统创建、在RA子系统下载并保存RA数据库中,证书模板信息安全性非常重要。证书模板安全性设计主要体现在授权安全性、完整性、安全传输性、使用操作不可否认性。

Ø  CA子系统创建、管理证书模板机制是证书模板授权安全性的重要保障。CA管理员通过强身份认证机制登陆CA终端管理程序,管理证书模板、配置CA证书模板集合。CA终端管理程序与CA后台服务程序统一协调完成证书模板服务、证书的签发,方便RA子系统的承建与证书灵活申请。

Ø  证书模板完整性要求证书模板在RA数据库长期存放过程中,防止信息篡改。本证书模板机制通过在模板结构中增加创建者签名来实现。将待签名数据(tbsTemplet),签名值和签名算法组成完整证书模板数据。tbsTemplet由TeBaseInfo、TeDNInfo、TeKeyID、TeExKeyUseTeAltName、 TeCRLInfo、TeCPSInfo、TeCAAccess、TeOtherPri、TeUserPri等组成。

Ø  证书模板安全传输通过RA子系统、CA子系统安全通讯来保证,一般RA_CA安全通讯通过SSL或者VPN机制来保证。

Ø  证书模板使用不可否认性通过RA业务操作员每一笔业务增加操作员签名、审计日志来保证。

抱歉!评论已关闭.