引言
以PC为中心的传统的互联网应用如今在嵌入式系统中得到了广泛的应用,但以往大部分嵌入式Web服务器的开发是针对性非常强的某一项或某一些专用功能程序开发,即使在一些具体的项目中做了一些控制和监测嵌入式设备系统的Web服务器应用,也只是力求做到小巧,满足本系统本平台的相对简单的功能,因此,此类嵌入式Web服务器安全性都不能得到很好的满足。面对今天高端嵌入式设备的快速发展,硬件成本的显著下降,甚至有的嵌入式系统硬件已经与通用计算机接近的这种情况,嵌入式市场完全可能需要可靠安全性的嵌入式Web服务器软件。本文就信息认证的安全性方面,提出了嵌入式Web服务器身份认证的解决方案。
1 采用方案的分析
嵌入式Web服务器与通用领域的web服务器相比,存在以下方面的差距:两者运行的目标环境不一样,通用Web服务器一般运行在计算资源和内存都比较丰富的服务器上,嵌入式Web服务器运行的目标系统大多是各类专用的设备。资源比较缺乏,两者在各自系统中起的作用不一样,通用Web服务器的系统是利用服务器向大家提供信息服务,而嵌入式Web服务器主要功能起对设备提供监测、控制等特殊功能的作用。
两者在各自系统中的地位不一样,嵌入式Web服务器只是作为一种管理手段而存在,并且嵌入式Web服务器通常只有设备管理员进行访问,因此嵌入式Web服务器无需高吞吐率,但要求短的响应时间。因为二者之间存在上述的差距,决定了两者所处的客观环境和安全性复杂程度的不同,所以要求二者采用不同的方案来实现Web服务器身份认证机制。嵌入式领域中不能采用通用领域的基于DCE/Kerberos或公共密钥复杂的认证方案来实现Web服务器身份认证,那么嵌入式Web服务器应该采用何种方案呢?本文给出一种简易、安全的基于HTTP认证协议的身份认证方案来实现嵌入式Web服务器的身份认证,它可以广泛地应用在各种通用的Web浏览器和目标平台的嵌入式Web服务器中。本文方案主要由密钥维护、角色权限分配和身份认证处理模块组成。
2 身份认证的实现
2.1 口令字管理及口令数据库的设计
密钥的分配和管理由密钥维护模块负责。当用户进行注册时,设定自己的口令字,用户的密钥可以由口令字生成。一个口令字必须接受严格的口令字检查。当用户设置口令字时,强制口令字必须有足够的长度,并且检查工具会对此口令字进行检查,如识别为弱口令字,强制用户修改为强口令字。
口令数据库设计不能以明文形式存放,要求采用密码体制对口令数据库进行加密,通常采用私钥密码体制对口令数据库进行加密。因为私钥密码系统具有运算效率高、使用方便、加密效率高等特点,并且在系统应用中不要求密钥交换,所以也不可能失密。私钥密码体制采用的算法技术根据自身系统所需算法的安全性和复杂性的高度不同,可以分别采用传统的加密方法和采用满足数据加密标准的DES和IDEA算法。
2.2不同角色的权限分配
角色权限分配模块可以对用户组、用户、认证方案、访问控制灵活配置,要求配置不同角色的认证方案、访问控制权限、URL授权。角色权限分配模块的访问控制采用简化的基于角色的访问控制模型。设计的目的是要求角色对信息系统资源应该有控制的进行访问,即防止合法用户的非法操作,它是建立在身份认证之上的访问控制,根据不同的角色,规定了他们对资源的访问方式,是基于权限管理的一种非常重要的安全策略。模块设计依照以下的安全准则:基于角色对用户组访问控制;支持动态地改变用户的权限;提供方便的授权和取消机制;用户之间授权关系可以依照角色进行管理。对URL授权的访问认证方案分为以下4种情况:
(1)不需要访问认证方案,可以自由访问服务器资源,无需用户名和密码的校验:
(2)Basic访问认证方案,需要用户名和密码的校验,但用户名和密码是以明文形式在网络上传输。
(3)Digest访问认证方案,需要用户名和密码的校验,用户名和密码小是以明文形式存在于网络上:
(4)禁止访问原始服务器上的任何资源。
以上4种访问认证方案完全可以根据自身嵌入式系统的工作情况和工作要求,来选择适合自身嵌入式系统的访问认证,达到嵌入式Web服务器在嵌入式系统上更合理的应用。
2.3身份认证处理模块详细流程
身份认证处理模块中Digest访问认证方案实现的总体流程图如图1所示,服务器程序和应用程序完成角色权限分配的工作后,当客户申请原始服务器的资源时,如果请求的是原始服务器设置了要求授权访问的资源时,服务器要求角色身份认证。当服务器要求Digest访问认证时,服务器提供客户图1认证的总体流程响应头和参数值列表,作为“挑战”发送给客户,响应状态行及
Digest在这里表示Digest访问认证方案。realm是字符串“Embedded-WebServer”,指的是要求使用的证书的参考信息,以便用户决定使用什么证书。建议此参考值中应至少包括服务器域名和被保护的Web资源领域信息,可以根据这个字符串知道要求输入的用户ID和密码,该参数值最终的使用方式依赖于客户程序的具体实现。domain是机器名和TCP通信协议要求的端口号组成的字符串。nonce value是向客户发送的“挑战”信息,该参数值为经过Base64编码的随机数,随机数的长度和产生方法依赖于服务器的具体实现,但服务器必须保证每次状态码的响应信息中该随机数的值是惟一的。一般考虑采用伪随机数发生器,组合用伪随机数、客户口地址、时间戳、HTTP Etag响应头值由服务器来产生字串nonce(128位散列值)保证此参数值的惟一性。最后包括所用算法的参数值,该参数值指出了对前面的散列值进行数字签名的Hash算法(一般考虑采用MD5算法)。
图1 认证的总体流程
Web浏览器收到“挑战”信息后,录入用户名和口令字,按服务器提供的参数值列表的要求,组织身份验证报文m,进行数字签名,详细认证过程如图2所示。用MD5算法签名身份验证报文m,生成摘要H(m)后,用加密器E和密钥k加密报文摘要得到Ek(H(m))后,向服务器发送新的请求,包括状态行和请求头域,其中必须包括请求头域Authofizmion如下例所示:
图2 客户认证过程
其中response是128位散列值即Ek(m)),服务器用解密器D和密钥k解密报文摘要Ek(H(m)),得到报文摘要H(m),Cnonce是客户端签名产生临时的128位散列值。服务器收到客户端发来的“应答”信息后,从加密口令数据库中得到用户名和口令字,使用收到身份验证报文m,开始实体认证经过签名后的报文摘要H(m),嵌入式Web服务器重复客户方的签名过程如下:
(1)首先对A1(其中A1是“用户ID:realm:用户密码”组成的字节串)用MD5算法进行签名,签名后得到一个128位敖列值H(A1);
(2)对A2(其中A2是“HTTP方法:URL”组成的字节申)用MD5算法进行签名,签名后得到一个128位散列值H(A2);
(3)将“A1:nonce:ne:cnonce:qop:A2”组成一个字节串,然后在用MD5算法对其进行签名,最后得到H(m’)。
最后比较Web浏览器对身份验证报文m签名生成摘要H(m)和嵌入式Web服务器对身份验证报文m签名生成的摘要H(m’)是否相等,相等则服务器处理请求的资源,不等则拒绝访问。经过Web浏览器对身份验证报文m签名和嵌入式Web服务器对身份验证报文m签名过程,完全实现了对身份验证报文m的信息认证。
3 结束语
本文作者给出了一种嵌入式Web服务器身份认证的解决方案。实现身份认证已经完成了嵌入式Web服务器安全性极为关键的一步。基于嵌入式Web服务器安全性的各种应用情况没有通用领域Web服务器的安全性情况复杂,并且嵌入式Web服务器的实时性要求比通用领域的Web服务器要高,采用安全协议势必降低系统响应性能。因此对普通意义上应用的嵌入式Web服务器,对身份验证报文的信息认证不失为一个好的解决安全性的方案。
投稿及文章评论请联系:zhaom@e-works.net.cn MSN:zhaoman123329@live.cn
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:嵌入式Web服务器身份认证的解决方案