基于SASL框架下身份认证机制的研究

2015-12-26 03:57郑之华
长春大学学报 2015年2期

基于SASL框架下身份认证机制的研究

郑之华

(福建省湄洲湾职业技术学院自动化工程系,福建 莆田 351254)

摘要:在LDAP V3中身份认证过程是包含在绑定操作过程中的,绑定操作的功能是允许验证信息在客户端和服务端之间交换的,LDAP V3主要支持3种认证方式:匿名认证、基本认证、基于SASL认证。目前SASL定义的安全机制主要有:Anonymous、CRAM-MD5、DIGEST-MD5、External、Kerberos v4与v5等。在这里我们针对CRAM-MD5、DIGEST-MD5、External这三种安全机制进行分析和比较它们的各自优缺点。通过分析和比较为实际身份认证系统提供一个参考。

关键词:SASL; CRAM-MD5; DIGEST-MD5; Extrernal

收稿日期:2014-11-11

作者简介:郑之华(1978-),女, 福建仙游人, 讲师, 硕士,主要从事通信与信息系统方面的研究。

中图分类号:TN918.91文献标志码:A

0引言

SASL(SimpleAuthenticanon and SecurityLayer)简单认证和安全层,由RFC2222文件定义,是面向网络协议提供辅助身份认证的一个通用框架,具有灵活一致的特点。它最初是为了对IMAP协议(Internet Mail Access Protocol 交互式邮件存取协议)提供强认证支持而设计的,随之便发展为一种实现不同协议和认证系统间的交互的更为通用的框架[1]。不同的机制在实现过程中,其实现方式有所不同,目前SASL定义的安全机制主要有:Anonymous、CRAM-MD5、DIGEST-MD5、External、Kerberos v4与v5等。图1说明了它们间的关系。

图1 SASL机制

1基于SASL框架下三种安全机制的比较

在这里我们针对CRAM-MD5、DIGEST-MD5、External这三种安全机制进行分析和比较它们的各自优缺点。

图2 CRAM-MD5机制的认证过程

1.1CRAM-MD5机制

CRAM的英文全称为:Challenge-Response Authentication Mechanism即中文的质询-响应鉴别机制,该机制在SASL中的名称为“CRAM-MD5”,由RFC2195文件定义[2]。

CRAM-MD5机制的认证过程如图2所示。

首先,服务器端向客户端发出质询报文。质询报文主要包含一个由随机数字、时间戳和服务器主机名组成的字符串,该非编码字符串在语法上必须符合RFC 822文件在RFC 1939(Post Office Protocol-Version 3 邮局协议版本3)文件中关于时间戳对应于RFC 822定义的“msg-id”所描述的规定格式(如:,“process-ID”是一个过程名PID的十进制值,“clock”是一个系统时间的十进制值,“hostname”是一个正在运行POP3服务器的完全合格域名,尖括号是必须的),经过编码后发送给客户机。

摘要其次,客户端收到质询报文后记录下该数据,并对质询报文经计算生成,然后用一个包含用户名,一个间隔和“摘要”的报文予以响应,摘要文本由KEYED-MD5算法计算出来,摘要中含有密钥且为客户端和服务器端双方共享的密钥,该共享的密钥仅为客户端和服务器端通讯双方所知。

摘要最后,服务器接收到这个客户机响应后,检验其中的。如果摘要正确,服务器应该确认该客户端已通过认证,并作出适当的响应。否则,向客户机发送一个鉴别失败的消息。

KEYED-MD5计算公式为[3]:

H(K XOR opad,H(K XOR ipad,text));

公式参数说明如下:

1)H是一个将数据块用一个基本的迭代压缩函数来加密的散列函数;

2)K为密钥,密钥的长度可以是任意长度的,推荐的最小密钥长度为64个字长(即512位);

3)XOR为异或操作;

4)ipad和opad分别为两个事先定义的值,“i”、“o”标志内部与外部,ipad=字节0x36重复64次,opad=字节0x5c重复64次;

5)text为质询报文的内容。

计算步骤为:

1) 在密钥K后面添加多个0来创建一个字长为B的字符串。(例如,如果K的字长是20字节,B=64字节,则K后会加入44个字节的0x00);

2) 将上一步生成的B字长的字符串与ipad做异或运算;

3) 将质询报文text填充至第二步计算出来的字符串中;

4) 将第三步产生的字符串用H散列函数进行运算;

5) 将第一步生成的B字长字符串与opad做异或运算;

6) 再将第四步运算的结果填充至第五步运算结果中;

7) 用H作用于第六步生成的数据流,输出最终结果。

KEYED-MD5算法预先计算好共享密钥的中间值(K XOR opad)、(K XOR ipad),并将这些中间结果存储在服务器上,等到有需要验证时候用来生成H散列函数的初始值。

1.2DIGEST-MD5机制

DIGEST-MD5机制英文全称为:Using Digest Authentication as a SASL Mechanism(使用摘要身份验证作为SASL机制)由RFC2831文件定义。DIGEST-MD5机制的认证过程共有三步如图3所示。

图3 DIGEST-MD5机制的认证过程

首先,服务器端向客户端发送一个经过复杂计算长度不超过2048字节的质询报文;

其次,客户端收到服务器端发来的质询报文后,回复一个经过复杂计算长度不超过4096字节的响应报文;

最后,服务器端对收到的响应值进行验证,验证通过后向客户端发送一个验证通过的报文,该报文的计算方法与第二步中的response参数值的计算方法相同。

质询报文计算公式如下[4]:

digest-challenge=1#(realm | nonce | qop-options | stale | maxbuf | charset | algorithm | cipher-opts | auth-param)

响应报文计算公式如下:

digest-response=1#(username | realm | nonce | cnonce | nonce-count | qop | digest-uri | response | maxbuf | charset | cipher | authzid | auth-param)

我们重点研究第二步骤和第三步骤的参数值计算方法,第二步响应报文和第三步验证通过报文的respons参数值具体计算公式如下:

response-value= HEX( KD ( HEX(H(A1)),

{ nonce-value, ":" nc-value, ":",

cnonce-value, ":", qop-value, ":", HEX(H(A2)) }))

默认的A1的值为:

A1 = { H( { username-value, ":", realm-value, ":", passwd } ),

":", nonce-value, ":", cnonce-value }

当客户端响应报文中的authzid值有指定,那么A1的值为:

A1 = { H( { username-value, ":", realm-value, ":", passwd } ),

":", nonce-value, ":", cnonce-value, ":", authzid-value }

默认的A2的值为:

A2= { "AUTHENTICATE:", digest-uri-value }

当客户端响应报文中的qop值为“auth-int”或“auth-conf”,那么A2的值为:

A2={"AUTHENTICATE:",digest-uri-value,":00000000000000000000000000000000"}

上述的response参数值计算公式中运算符号及函数说明如表1所示。

表1 运算符号及函数说明

从上述公式我们可以看出客户端的响应报文与服务器端的验证通过报文的response参数值为一个128位的MD5散列值,即32个16进制数。计算过程如下:

首先response参数值分别计算A1、A2的参数值,然后分别对A1、A2的值进行MD5处理后,再将所得到的MD5散列数变换为32个16进制数,其中A1值中含有用户名及用户密码等信息;

接着将 "nonce-value", ":" ,"nc-value", ":"," cnonce-value", ":", "qop-value", ":"与A2计算后的值串联起来形成一串字符串,再将A1计算后的值与之前得到的字符串串联起来形成新的字符串,将得到的字符串与":"s字符串串联成新的字符串后再进行MD5处理;

最后将得到的16个字节的MD5散列数变换为32个16进制数。

response参数值在计算过程中含有用户名及用户密码,用来表明用户为合法的用户,若第二步骤与第三步骤的response参数值一样,则说明用户身份验证成功。

1.3External机制

在SASL中和外部验证机制有关的机制名称为“External”,它的认证过程如图4所示。

图4 外部机制身份认证过程

1) 客户端向服务器端发出一个含有用户授权身份(采用UTF-8编码)的初始响应;

2) 服务器端使用SASL外部的鉴别机制,对客户端做授权身份的鉴别;

3) 外部机制验证完毕,返回鉴别信息给服务器端;

4)如果服务器端鉴别出客户端确实具有该授权身份,则返回给客户端一个指示鉴别成功的报文,否则,返回给客户端一个鉴别失败的报文。

能够提供这种外部的鉴别机制的系统有IPSec(Internet Protocol Security网际协议安全套件)、TLS。在客户端协商使用外部验证机制之前,客户端发送空的字符串作为授权身份,那么授权身份从存在于外部授权系统中的授权证书中获取。

2比较与总结

对于CRAM-MD机制我们需要注意的是KEYED-MD5算法预先计算好共享密钥的中间值(K XOR opad、K XOR ipad)同样需要保密,若存放中间值的服务器本身不够安全,同样保护不了共享密钥,共享密钥必须随机选取(或使用强大的基于随机种子的伪随机生成方法),为了对付函数和密钥所存在的潜在缺陷并降低泄漏密钥带来的危害,我们还需要周期性的更新共享密钥,采用CRAM-MD5机制可以防止回放攻击,不过它易受到主动攻击(Active attack)。

对于External机制,其本身不提供任何安全保护,它容易受到客户机假冒、服务器假冒攻击,主动攻击和窃听攻击,我们仅仅在外部验证机制的安全性能有足够的强度时使用它[1],另外使用外部验证机制的时候,对于外部的授权证书我们还需要一笔不小的额外投入。

DIGEST-MD5机制在CRAM-MD5机制的基础上发展而来的,不仅提供了身份验证,还支持在身份验证成功后,通过谈判建立安全层来执行完整性和机密性保护。完整性和机密性保护的密钥都是基于前面所述的H(A1)产生的。虽然DIGEST-MD5机制相对于第三方认证系统(例如Kerberos或公共密钥系统)来说不是一种强的身份认证机制。但它可被用来取代那些在安全性方面较弱的明文口令机制。与CRAM-MD5相比,DIGEST-MD5提供了对一定数量的攻击提供重要的保护如:重放攻击、在线字典攻击、脱机字典攻击、中间人攻击、选择明文攻击、防止假冒服务器的欺骗等。在政务内网内,与互联网网络完全物理隔离,网络相对安全下,不增加投资,我们可考虑选择采用基于SASL框架下的DIGEST-MD5机制来进行身份认证。

参考文献:

[1]J.Myers. Simple Authentication and Security Layer (SASL)[EB]. RFC2222,1997,10.

[2]J. Klensin,R. Catoe,P. Krumviede. IMAP/POP AUTHorize Extension for Simple Challenge/Response[EB]. RFC2195,1997,9.

[3]H. Krawczyk,M. Bellare,R. Canetti. HMAC: Keyed-Hashing for Message Authentication[EB]. RFC2104,1997,2.

[4]P. Leach,C. Newman. Using Digest Authentication as a SASL Mechanism[EB]. RFC2831,2000,5.

责任编辑:吴旭云

Research of Identity Authentication Mechanism Based on SASL Framework

ZHENG Zhihua

(College of Automation Engineering, Meizhouwan Vocational and Technical College, Putian 351254, China)

Abstract:Identity authentication process in LDAP V3 is contained in the binding operation process, which allows the verification information to exchange between the client end and the service end. LDAP V3 mainly supports three kinds of authentication methods: anonymous authentication, basic authentication and SASL-based authentication. At present, the security mechanism of SASL mainly includes Anonymous, CRAM-MD5, DIGEST-MD5, External, Kerberos v 4 and v 5. This paper, focusing on CRAM-MD5, DIGEST-MD5 and External, analyzes and compares their advantages and disadvantages, attempting to provide a reference for the actual identity authentication system.

Keywords:SASL; CRAM-MD5; DIGEST-MD5; External