Lotus Domino Notes中强身份认证的应用
岳工自动化
2008年第27卷第4期
固络与信息技市0.I.Automation
NetworkandInformationTechnology2008,Vo1.27,No.4 文章编号:1006—1576(2008)04—0042—02
LotusDominoNotes中强身份认证的应用
粱文铮,沈浩
(中国
物理研究院计算机应用研究所,四川绵阳621900)
摘要:在一套以Notes开发的B/S结构OA系统中,实现USB—Key硬件和MD5
散列算法加密的强身份认证和集
成.其
包括:初始化,强身份认证等.该集成方案在解决用户身份认证过程中安
全问题的同时,能够将用户从繁
杂的用户名/密码中解脱出来.
关键词:MD5散列算法;随机数;代理;CGI变量
中图分类号:TP393.08文献标识码:A
ApplicationofStrongIdentityAuthenticationinLotusDominoNotes
LIANGWen—zheng,SHENHao
(InstituteofComputerApplication,ChinaAcademyofEngineeringPhysics,Mianyang621
900,China)
Abstract:TheB/SstructureOAsystembasedonNotesdevelopment,realizesUSB—
Keyhardwareandstrongidentity
authenticationandintegrationofMD5disperselistalgorithmencrypt.Itsstepsincludeinitiali
zation,andstrongidentity
authentication.Itsintegrationschemesolvesthesafetyproblemofuseridentityauthenticatio
nandcomplexusername/
codeproblemsatthesametime.
Keywords:HMAC——
MD5;Randomdata;Agent;CGIvariable
0引言
由于传统的用户名加密码的认证模式已经不能 满足网络环境下的安全需求.故通过分析已有的数 据加密算法,在基于Notes开发的B/S结构OA系 统中成功地进行了集成和验证,同时给出了Notes 登录库身份认证中传参问题的解决方法. 1MD5散列算法
MD5(MessageDigestAlgorithm5)散列算法, 作用是使用散列函数,把任意长度的字节串变换成 一
定长度的大整数即可将一个可变长度的信息变 换为固定长度输出,也称作"信息摘要".其特点: ?输入2个不同的明文不会得到相同的输出值; ?根据输出值不能得到原始明文,即过程不可逆. 由于固定长度的字符串可用来检查文件的完整 性,验证数字签名以及用户身份验证等,MD5被广 泛用于加密和解密技术上.在软件的加密保护中, 一
般只使用MD5算法作为加密的中间步骤. 2总体设计与实现
图1为一个计算机网络及安装在客户端上的具 有MD5散列算法加密功能的USB—Key的简单示意 图,该网络既可以是一个小型的局域网或Intranet,
又可以是现实中的Internet. 一羽lL些网缝的其它部
图1网络示意图
2.1初始化
首先由服务器端生成合法用户的20位密钥L3j, 并保存在Notes数据库中.然后将该密钥和用户的 唯一身份标识符(登录名)传入USB—Key中, USB—Key通过HMAC—MD5算法将传入的密钥转换 成2个16位的私钥对,最后把该私钥对和登录名一 起保存在USB—Key中.
创建Init表单,在表单中添加如下域:SOPIN (管理员SOPIN码),USERNAME(用户登录名) 和USERKEY(密钥),添加按钮:初始化(Initialize).
服务器端的初始化:通过notes公式
@Command([FileSave])将USERNAME和
USERKEY存入notes数据库,当使用其他数据库 保存时,则需考虑notes和其他数据库的集成(如: sqlserver,Sybase,oracle等),然后编写相应的代 收稿日期:2008-01—13;修回日期:2008—02—29 作者简介:梁文铮(1983一),男,重庆人,2005年毕业于电子科技大学,现为中国工程
物理研究院在读硕士研究生,从事软件工程与数据 库研究.
?42?
兵工自动化
2008年第27卷第4期
网络与信息技市
NetworkandInformationTechnology
0.I.Automation
2008,Vo1.27,No.4
理将data进行存储;最后将USERNAME和 USERKEY通过IE传给USB—Key初始化页面. 客户端USB—Key的初始化:在按钮中通过编
写JavaScript调用相关API完成对key的初始化: 首先在key中生成指定名称的二级目录;然后根据 MD5HMAC方法把USERKEY转换为私钥对并分别 写入文件1和文件2;最后创建用户文件,把用户 登录名写入文件3,伪代码如下:
fl="0l23456789ABCDEF": Soft—MD5HMAC(0,0,doc.USERKEY.Value,f1);
CreateFile(0,1,16,4,7,2,1,2);Write(0,0,0,fl,16);
CreateFile(0,3,3,2,0,0,7,2);
Write(0,0,0,doc.USERNAME.value,3);
2.2强身份认证
当利用密钥进行身份验证时,客户端首先向服 务器发出登录请求,服务器则通过用户登录名从数 据库中取出相应用户的密钥.这意味着当前与客户 端连接的USB-Key中己存储了合法的用户信息和 私钥信息,且登录用户已经通过正确的PIN码成功 访问USB—Key.
当服务器收到客户端的登录请求后,便向客户 端发送一个随机字符串X,该随机字符串最终送入 客户端的USB-Key中进行计算.与此同时,服务 器则根据用户登录名取出对应的密钥并利用发送给 客户端的随机串X,在服务器上用加密引擎进行运 算,得到运算结果Rh.
客户端将此随机串X传入USB—Key中, USB-Key则利用此串与内置在其中的私钥文件对 通过硬件加密引擎进行运算,也得到一个运算结果 Rc,将此运算结果在网络中发送给服务器. 服务器比较两运算结果Rh(服务器)与Rc(客 户端)是否相同,便可确定一个网络用户的身份合
法性.由于私钥对存在于USB—Key中,而整个运 算过程也是在其中来完成的,密钥鉴别是通过加密 算法来实现的,随机字符串作为运算的一个输入因 子使其运算结果也随输入的变化而不同,如果黑客 简单截获到认证过程的数据仍无法在网络中冒充 USB—Key客户端,所以整个认证体系对现有的网 上身份认证做了十分有益的补充钔,如图2. --—一
12(Domino服务器)
吕{-'4
5'圈16
图2强身份认证过程示意图
Notes中认证过程实现如下:
建立表单logon,在表单中添加如下域:PIN (USB—Key的PIN码),RandomData(随机串); 然后建立按钮:提交(Submit).
首先初始化Key对象,输入PIN码访问当前
USB—Key;把访问路径切换到存放用户登录名的二 级目录,读取登录名信息和长度;然后打开私钥文 件,对当前私钥文件完成一次hash运算得到Rc(客 户端),伪代码如下:
UserNameLen=GetFilelnfo(0x0,0x3,0x3,0);
UserlD=Read(0,0,0,UserNameLen);
OpenFile(0x0,0x1);Digest=HashToken
(1,2,RandomData);
服务器端生成Rh并完成Rc和Rh的比较:
HMAC—
MD5(UserKey.getBytes0); MD5hm=newHMAC—
hm.addData(Randata.getBytes());digest=hm.sign();
ServerDigest=hm.toString0;
由于初始化阶段的密钥和身份认证阶段的随机
串都是20位字符串,可以通过设计并调用统一代
理实现,伪代码如下:
StringRndData=…';charUpper='z';charLower='a': Randomr=newRandom();
for(inti=0;i<20;i++){inttempval=(int)((int)Lower+
(r.nextFloat()((int)(Upper—Lower))));
RndData+=newCharacter((char)tempva1).toString0;】】
2.3遇到的问题和解决方法
根据该NotesOA系统的设计,登录时由登录表
单logon在WebQueryOpen事件中调用随机串生成
代理f@Command([ToolsRunMacro];"(GenerateR
andomData)")),生成20位字符串RandomData,然
后在登录按钮的onclick事件中将RandomData传入
USB-Key中通过Hash运算生成Rc(客户端),再
把Rc和RandomData传给服务器端做比较.最后根
据比较结果判定当前登录用户身份的合法性.
由于使用Notes开发,设计登录
时直接采
用LotusDominoNotes提供的登录库和公共通讯录
(name.nsf),或者基于该登录引擎进行定制和二次
开发.故在设计登录页面时受到以上条件的约束,
无法直接把Rc和RandomData在响应登录事件时传
给后台,也就无法完成用户身份的合法性校验.
解决方法是:在onclick事件触发的JavaScript 代码中正常返回语句returntrue之前,添加
{document.al1.RedirectTo.value="/OA/main.nsf/Valid
ation?OpenForm&"+Digest+"&"+docRandomData.V
alue;1,将Rc和RandomData传给中间表单
Validation.(下转第5o页)
?43?
兵工自动化
2008年第27卷第4期
网络与信息技市
NetworkandInformationTechnology
0.I.Automation 2008,Vo1.27,No.4 a—
val,uintn—index,uint*locX,uint*locY)
{
uinti;
//启动定位引擎
L0C—DISABLE0;
L0C—ENABLE0;
//使能LOC—
REFERENcE—LOAD,准备写入参考坐标 LOC—.
REFERENCE——LOAD(TRUE); ||写参考竖标
//等待完成后读出坐标值
while(!LOC—DONE()); *locX=LOCX:
locY=LOCY;
//关闭定位引擎
LOC—
DISABLE();
}
4结束语
for(i=O;i<LOC——REF——NODE;i++)
{该方法是一款优秀的片上系统解决方案,必将
REFc00RD=..de在无线传感网络为代表的应用领域中有所表现
.RERCOORD=refNodes『i1.
v:……,…'…………………………
参考坐标写入完成
参考文献:
LOC—
REFERENCE—LOAD(FALSE);【1】于海斌,等.智能传感器网络系统【M】.北京:科学出
//使能LOC—PARAMETER—LOAD,准备写入测量参数版社.2006. LOC—
PARAMETER—
LOAD(TRUE);【2】崔莉,等.无线传感器网络研究进展【J】.计算机研究与 MEASPARM=aval;发展,2005,42(1):163—174.
MEAsPARM="jndex;【3】ByrneJA
.
1Idsforthe21stCentury.
BusinessWeek【J】.for(i=
0;i<LOCREFNODE;i++)….'一……………'…….'
,1999,(8):78—167?
MEASPARM=refNodes【i】.rssi;【4】10EmergingTechnologiesthatWillChangetheWorld[J].
1TechnologyReview,2003,106(1):33—49.
//测量参数写入完成【5】马永强,等.基于ZigBee技术的射频芯片CC2430【J】. LOC—
PARAMETER—LOAD(FALSE);单片机与嵌入式系统应用,2006,3:45—47. ,,启动定位估计计算【6】CC2430PRELIMINARYDataSheet(Rev.1.03),2005.
LOC—RUN();[71CC2431PRELIMINARYDataSheet(Rev.1.O),2007.
(上接第43页)在中间表单Validation中通过CGIL5J
变量Query—String获取Rc和RandomData然后在 Validation表单的WebQueryOpen事件中完成用户 身份认证,并返回相应的验证值;最后在Validation
表单的onLoad事件中根据返回值判定当前用户是 否继续完成登录事件或者重定向回登录页面,这样 便完整地实现了用户身份认证全过程.
3基于PKI的强身份认证应用简述
目前主流的业界PKI
是RSALab的
PKCS#11(也称Cryptoki).PKCS#11属于公开密钥 加密标准(PKCS),它通过定义通用的编程接口模 型(Cryptokitokens),来解决不同厂商和开发人员 的公开密钥加密应用之间的交互与兼容问题. 设计基于PKI安全体系和USB-Key硬件的强 身份认证方案时应考虑:首先,访问USB—Key的 应用程序必须遵循PKCS}}l1标准;其次,通过定制 USB-Key的驱动程序来实现Key的接入认证以及 对Key中数据加密存储的支持;最后,开发支持 Cryptokitokens的USB—Key应用程序接口,该接口 负责与USB驱动程序通讯.
这样,兼容PKCS#11的应用程序可以使用 ?
5O?
USB—Key来存储私钥和数字证
,生成RSA/DSA 密钥对,进行数字签名与认证和加解密数据. 4结语
该集成方案解决了用户身份认证中的安全问 题.在没有建立CAf6】证书服务等高安全性PKI认 证体系时,较简单的username/password模式,基 于MD5散列算法加密的USB-Key强身份认证不失
为一种高可靠性的系统安全认证集成解决方案.访
问USB-Key需提供该Key的PIN码,即使在USB—
Key丢失的情况下,也不会对信息系统构成安全隐
患.同时将用户从繁杂的用户名/密码中解脱出来.
参考文献:
【1】LiuLixin.TheInformationSecurityofOASystemBased
onLotus/Domino【Z】.2005.
【2】彭文波.MD5算法原理及应用【J】_信息网络安全,2004, (5).
【3]冯登国.公开密钥基础设施一概念,标准和实施【M】.北 京:人民邮电出版社,2001.
【4】EPass1000NDDeveloper'SGuide—FeitianTechnologies[Z].
【5]杨海涛.LotusDomino系统实现似cGI交互的便捷方法 【J】.计算机系统应用,200l,(3).
【6]张巍.认证中心CA的功能及实现技术【J】_计算机工程 与技术.2003.