?? rfc2289.txt
字號:
組織:中國互動出版網(wǎng)(http://www.china-pub.com/)
RFC文檔中文翻譯計(jì)劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:張海斌(netdebug internetdebug@elong.com )
譯文發(fā)布時(shí)間:2002-01-31
版權(quán):本中文翻譯文檔版權(quán)歸中國互動出版網(wǎng)所有。可以用于非商業(yè)用途自由轉(zhuǎn)載,但必須保留本文檔的翻譯及版權(quán)信息。
Network Working Group N. Haller
Request for Comments: 2289 Bellcore
Obsoletes: 1938 C. Metz
Category: Standards Track Kaman Sciences Corporation
P. Nesser
Nesser & Nesser Consulting
M. Straw
Bellcore
February 1998
一次口令系統(tǒng)
A One-Time Password System
備忘錄狀況
這份文檔為Internet社區(qū)指定為Internet標(biāo)準(zhǔn)(軌跡)協(xié)議,并且為進(jìn)一步改進(jìn)需要討論和建議。這份協(xié)議的標(biāo)準(zhǔn)化狀態(tài)和狀況請參閱"Internet官方協(xié)議標(biāo)準(zhǔn)(Internet Official Protocol Standards )"(STD 1)的當(dāng)前版。這份備忘錄的分發(fā)不受限制。
版權(quán)聲明
Copyright (C) The Internet Society (1998). 版權(quán)所有.
目錄
目錄 2
0.譯者的話 2
1.0 摘要 3
2.0 概述 3
3.0 介紹 3
4.0 需求術(shù)語 4
5.0 安全哈希函數(shù)(SECURE HASH FUNCTION) 4
6.0 一次口令的產(chǎn)生 5
7.0 一次口令的驗(yàn)證 7
8.0 一次口令更改 7
9.0 避免競爭攻擊 8
10.0 安全考慮 9
11.0 確認(rèn) 9
12.0 參考文獻(xiàn) 9
13.0 作者的地址 10
附錄 A - 安全哈希算法界面 11
附錄 B - 可替換字典算法 13
附錄 C - OTP認(rèn)證例子 14
附錄 D - 六詞和二進(jìn)制格式之間轉(zhuǎn)換的字典 17
完整版權(quán)聲明 23
0.譯者的話
譯者在翻譯這份文檔的時(shí)候,采取直譯的方式,盡量保證原文的原意。同時(shí)也盡量考慮了中文的語義順暢,便于中文讀者閱讀,譯者在譯文中加入了一些修飾語和譯注,修飾語一般在括號中寫明,而譯注均有“譯者注”字樣。由于譯者翻譯本篇文擋時(shí)間有限,譯文中一定會存在許多理解有誤、用詞不當(dāng)之處,歡迎讀者來信指正,共同學(xué)習(xí)。
1.0 摘要
這篇文檔描述一次口令認(rèn)證系統(tǒng)(one-time password authentication system)(OTP)。系統(tǒng)提供對系統(tǒng)訪問(login)的認(rèn)證以及針對基于重放獲取可再用口令(replaying captured reusable passwords)之上的被動攻擊的安全認(rèn)證需求的其他應(yīng)用。OPT從S/KEY 演化而來(S/KEY是Bellcore的商標(biāo))。一次口令系統(tǒng)被Bellcore(貝爾通訊研究所)釋放,在參考[3]和[5]中描述。
譯者注:one-time password稱為一次性口令,在本文中稱為一次口令。
2.0 概述
一種互聯(lián)網(wǎng)計(jì)算系統(tǒng)的攻擊形式是監(jiān)聽網(wǎng)絡(luò)連接以獲得認(rèn)證信息,例如合法用戶的登錄IDs和口令。一旦這個(gè)信息被捕獲,它就能獲得用于以后對系統(tǒng)的訪問(權(quán))。一次口令系統(tǒng)被設(shè)計(jì)為還擊這種攻擊類型,稱作“重播攻擊”[4]("replay attack")。
在本文檔中描述的認(rèn)證系統(tǒng)使用一秘密通行短語(pass-phrase)去衍生一系列一次口令(單獨(dú)使用的)。使用這個(gè)系統(tǒng),用戶的秘密通行短語任何時(shí)候(例如認(rèn)證過程中或者通行短語更改過程中)都不在網(wǎng)絡(luò)中傳輸。因此,對重放攻擊是非脆弱的。附加的安全通過無秘密信息需要被存儲在任何系統(tǒng)中的特征被提供,包括被保護(hù)的服務(wù)。
OTP系統(tǒng)避免針對認(rèn)證子系統(tǒng)受到外部被動攻擊的危害。它不能阻止網(wǎng)絡(luò)監(jiān)聽去獲得私有信息的存取以及不能提供避免或者“社會工程”("social engineering")或者主動攻擊(active attacks)[9]的危害的保護(hù)。
3.0 介紹
在OPT一次口令系統(tǒng)的操作中存在兩個(gè)實(shí)體。發(fā)起者(generator)必須從用戶的秘密通行短語和從服務(wù)的質(zhì)疑(challenge)中提供的信息產(chǎn)生適當(dāng)?shù)囊淮慰诹睢7?wù)必須發(fā)送包括給發(fā)起者適當(dāng)?shù)漠a(chǎn)生參數(shù)的質(zhì)疑,必須驗(yàn)證接收的一次口令,必須存儲接收到的最近有效的一次口令,以及必須存儲相應(yīng)的一次口令序列數(shù)(sequence number)。同時(shí)服務(wù)必須也便于以安全的方式對用戶的秘密通行短語的改變。
OTP系統(tǒng)發(fā)起者傳送用戶的秘密通行短語,隨后接收到從服務(wù)質(zhì)疑的一部分的(隨機(jī))種子(seed),通過安全哈希函數(shù)(hash function)多次疊代運(yùn)算產(chǎn)生一個(gè)一次口令。每一次成功的驗(yàn)證之后,安全哈希函數(shù)疊代的次數(shù)減少1。這樣,唯一序列的口令產(chǎn)生了。服務(wù)通過計(jì)算安全哈希函數(shù)一次和比較先前從發(fā)起者接收到的一次口令來驗(yàn)證發(fā)起者的一次口令。這個(gè)技術(shù)由Leslie Lamport [1]第一次提出。
4.0 需求術(shù)語
在這篇文檔中,用于定義每一個(gè)特殊需求的重要意義的詞通常大寫。這些詞是:
- MUST
這個(gè)詞或者形容詞"REQUIRED"表示這項(xiàng)是具體指定的絕對需求。
- SHOULD
這個(gè)詞或者形容詞"RECOMMENDED"表示在特定的環(huán)境中存在有效的理由去忽略這項(xiàng),但是完整的含義應(yīng)該被理解以及在做出不同的進(jìn)程之前要仔細(xì)衡量。
- MAY
這個(gè)詞或者形容詞"OPTIONAL"表示這項(xiàng)是真正可選的。例如,一個(gè)銷售商可以選擇包括這項(xiàng),因?yàn)槭袌龅男枨蠡蛘咴鰪?qiáng)產(chǎn)品(的功能);而另一個(gè)銷售商可以忽略同一個(gè)選項(xiàng)。
5.0 安全哈希函數(shù)(SECURE HASH FUNCTION)
OTP系統(tǒng)的安全依賴于安全哈希函數(shù)的不可逆性。這樣的函數(shù)必須是正向易于計(jì)算的,但是反過來計(jì)算不可行。
這里有三個(gè)這樣的哈希算法接口被定義,Ronald Rivest 的MD4 [2]和MD5 [6],以及NIST 的SHA [7]。所有服務(wù)和發(fā)起者之間一致的工具必須(MUST)支持MD5。他們應(yīng)該(SHOULD)支持SHA和可以(MAY)也支持MD4。明顯的,發(fā)起者和服務(wù)之間為了互操作必須使用同樣的算法。其他哈希算法可以通過公開適當(dāng)?shù)慕涌跒檫@個(gè)系統(tǒng)的使用具體指定。
上面列出的安全哈希算法有其可以接收任意長度的輸入和產(chǎn)生固定大小輸出的特性。OPT系統(tǒng)使用附錄A中定義的算法將輸出折疊為64 bit。64 bit也是一次口令的長度。當(dāng)必要時(shí)這個(gè)程度可以確認(rèn)對安全是足夠長的以及對于手工輸入是足夠短的(參見下面,輸出的格式)。
6.0 一次口令的產(chǎn)生
這部分描述一次口令的產(chǎn)生。這個(gè)處理過程由所有輸入被組合在一起的初始化步驟、安全哈希函數(shù)被應(yīng)用指定次數(shù)的運(yùn)算步驟,和64 bit一次口令被轉(zhuǎn)化為人類可讀格式的輸出函數(shù)組成。
附錄C包含給定輸入的集合的輸出例子。它提供了證實(shí)這些算法應(yīng)用的表達(dá)實(shí)現(xiàn)。
初始化步驟
原則上,用戶的安全通行短語可以是任何長度。為了減少來自例如窮舉搜索或者字典攻擊的危險(xiǎn),通訊短語字符串必須(MUST)至少包含10個(gè)字符(參見下面的輸入格式)。所有工具必須(MUST)支持至少63個(gè)字符的通行短語。安全通行短語通常,但不被要求,是由用戶提供的原文信息。
在這個(gè)步驟中,通行短語與從服務(wù)方以明文方式傳遞過來的種子(seed)連接在一起。這個(gè)非安全(non-secret)種子允許客戶在多個(gè)機(jī)器上(使用不同的種子)使用同樣的安全通行短語以及通過改變種子安全地再循環(huán)使用他們的安全通行短語。
這個(gè)連接的結(jié)果通過使用附錄A中列舉的安全哈希函數(shù)算法之一,然后產(chǎn)生64 bit輸出。
計(jì)算步驟
一系列一次口令通過應(yīng)用對初始化步驟(稱為S)的輸出多次安全哈希函數(shù)運(yùn)算產(chǎn)生。也就說,第一個(gè)一次口令通過將S傳遞到由用戶指定次數(shù)(N次)的安全哈希函數(shù)運(yùn)算產(chǎn)生。下一個(gè)一次口令通過傳遞S到安全哈希函數(shù)N-1次運(yùn)算產(chǎn)生。監(jiān)視一次口令傳輸?shù)谋O(jiān)聽者不能產(chǎn)生下一個(gè)需要的口令,因?yàn)橐龅竭@些就意味著哈希函數(shù)的逆運(yùn)算。
輸入的格式
安全通行短語僅被OTP發(fā)起者看到。為了允許發(fā)起者之間的可交互性,所有的發(fā)起者必須(MUST)支持10到63字符長度的安全通行短語。執(zhí)行工具可以(MAY)支持更長的通行短語,但是這樣的工具存在與僅支持短通行短語的工具之間失去交互性。
種子必須(MUST)由純正的字母數(shù)字字符(alphanumeric characters)組成以及在長度上為16字符長。種子是一串必須(MUST)不能包含空格(blanks)和應(yīng)該由嚴(yán)格的從來自ISO-646內(nèi)部編碼集合(ISO-646 Invariant Code Set)的字母數(shù)字字符組成的字符串。種子必須(MUST)是大小寫無關(guān)的以及必須(MUST)是在處理之前內(nèi)部轉(zhuǎn)換為小寫。
序列號和種子一起組成一個(gè)大的數(shù)據(jù)單元稱為挑戰(zhàn)(challenge)。挑戰(zhàn)作為從安全通行短語計(jì)算正確的一次口令需要的參數(shù)提供給發(fā)起者。挑戰(zhàn)必須(MUST)是標(biāo)準(zhǔn)語法以便自動產(chǎn)生在上下文中能識別的挑戰(zhàn)以及提取這些參數(shù)。挑戰(zhàn)的語法如下:
otp-<algorithm identifier> <sequence integer> <seed>
三個(gè)標(biāo)志段(tokens)必須(MUST)以空格分開(可以定義為任何數(shù)量的空格和/或制表符tabs)和整個(gè)挑戰(zhàn)字符串必須(MUST)以或者是空格或者一新行結(jié)束。字符串"otp-"必須(MUST)為小寫。算法標(biāo)識符是大小寫敏感的(已知存在的標(biāo)識符都是小寫),以及種子是大小寫不敏感的并且在使用之前轉(zhuǎn)換為小寫。如果額外的算法被定義,適當(dāng)?shù)臉?biāo)識符(短的,但是沒有限制為三或者四個(gè)字符)必須被定義。當(dāng)前定義的算法標(biāo)識符是:
md4 MD4 Message Digest
md5 MD5 Message Digest
sha1 NIST Secure Hash Algorithm Revision 1
一個(gè)OTP挑戰(zhàn)例子是:otp-md5 487 dog2
輸出的格式
上面處理過程產(chǎn)生的一次口令在長度上為64 bit。輸入一個(gè)64 bit數(shù)字是困難的并且容易出錯(cuò)的過程。 一些產(chǎn)生器插入口令到輸入流中和另外一些對于“剪切和粘貼”的系統(tǒng)使其有效。仍然有一些其他的布置(arrangements)需要一次口令手工輸入。OTP系統(tǒng)設(shè)計(jì)為易于手工輸入而沒有妨礙自動的方法。因此一次口令可以(MAY)轉(zhuǎn)換為,和所有服務(wù)必須(MUST)有能力接受的,僅使用從ISO-646 IVCS字符集中的六個(gè)(1到4個(gè)字母letter)簡單類型詞(word)的序列。每個(gè)詞從2048個(gè)詞的字典中選取;每個(gè)詞為11bit,所有一次口令可以被編碼。
在這個(gè)編碼中兩個(gè)附加位(bits)用于存儲校驗(yàn)和(checksum)。密鑰的64 bits被分裂為一對bits,然后這些對(pairs)被加和在一起。 這個(gè)和(sum)的兩個(gè)最低有效位在隨著和(sum)的最低有效位作為最低位編碼的六詞(word)序列的最后兩位(bits)被編碼。所有OTP產(chǎn)生器必須(MUST)計(jì)算這個(gè)校驗(yàn)和以及所有OTP服務(wù)必須(MUST)作為解碼(decoding)這個(gè)一次口令的代表操作的一個(gè)部分顯式的驗(yàn)證這個(gè)校驗(yàn)和。
產(chǎn)生六詞格式(six-word format)的產(chǎn)生器必須(MUST)以單空格作為分隔的大寫形式展示。所有服務(wù)必須(MUST)接受六詞格式而忽略大小寫和用作分隔的空格。下面兩行表示同一個(gè)一次口令。第一行作為從產(chǎn)生器輸出和服務(wù)的輸入是有效的,第二行僅作為手工輸入到服務(wù)是有效的。
OUST COAT FOAL MUG BEAK TOTE
oust coat foal mug beak tote
互操作要求所有的OTP服務(wù)和產(chǎn)生器使用相同的字典。標(biāo)準(zhǔn)字典起初在其描述在RFC 1760 [5]中的"S/KEY One Time Password System"明確指定。
為了便于小的產(chǎn)生器的實(shí)現(xiàn)(implementation),對于一次口令的表示十六進(jìn)制輸出是一個(gè)可選擇的表示。所有服務(wù)軟件的實(shí)現(xiàn)必須(MUST)接受同六詞格式一樣的大小寫不敏感的十六進(jìn)制(數(shù)字)。十六進(jìn)制數(shù)字可以由空格分隔,所以服務(wù)要求(REQUIRED)忽略所有的空格。如果表示是通過空格分開的,首位的零必須保留。十六進(jìn)制格式的例子如下:
Representation(表示) Value(值)
3503785b369cda8b 0x3503785b369cda8b
e5cc a1b8 7c13 096b 0xe5cca1b87c13096b
C7 48 90 F4 27 7B A1 CF 0xc74890f4277ba1cf
47 9 A68 28 4C 9D 0 1BC 0x479a68284c9d01bc
除了接受六詞和十六進(jìn)制的64 bit一次口令編碼之外,服務(wù)應(yīng)該(SHOULD)接受在附錄B中描述的可替換的字典編碼。在這個(gè)編碼中的六個(gè)詞一定(MUST)不能與在標(biāo)準(zhǔn)字典詞的集合中重疊(overlap)。為了避免十六進(jìn)制表示的含糊不清(ambiguity),在可替換字典中的詞必須(MUST)不能僅由字母A-F構(gòu)成。這樣編碼的解碼詞不需要任何可替換字典使用的知識,所以任何可選字典的可接受暗含著所有字典的可接受。在可替換字典中的詞是大小寫敏感的。產(chǎn)生器和服務(wù)必須(MUST)在處理這些詞的過程中保護(hù)大小寫。
總的來說,所有兼容的服務(wù)必須(MUST)接受使用標(biāo)準(zhǔn)字典(RFC 1760 和附錄D)的六詞輸入,必須(MUST)接受十六進(jìn)制編碼,和應(yīng)該(SHOULD)接受使用可替代字典技術(shù)(Alternative Dictionary technique)(附錄B)的六詞輸入。一次口令的十六進(jìn)制編碼看上去像一個(gè)有效的六詞標(biāo)準(zhǔn)字典編碼是有很小的可能性的,所有工具(implementations)必須(MUST)使用下列模式(scheme),如果一個(gè)六詞編碼的一次口令是有效的,它被接受。否則如果一次口令可以作為十六進(jìn)制被解釋,和編碼是有效的,那么它被接受。
7.0 一次口令的驗(yàn)證
正如上文描述的一個(gè)期望OTP驗(yàn)證需求的服務(wù)系統(tǒng)的應(yīng)用發(fā)送一個(gè)OTP挑戰(zhàn)。從這個(gè)挑戰(zhàn)和安全通行短語給定參數(shù),發(fā)起者能計(jì)算(或者查找)通過服務(wù)被驗(yàn)證的一次口令。
服務(wù)系統(tǒng)有一個(gè)數(shù)據(jù)庫,包含每一個(gè)用戶,從最后成功驗(yàn)證的一次口令或者新近初始化的第一個(gè)OTP序列。為了驗(yàn)證用戶,服務(wù)解碼從發(fā)起者接受到的一次口令為64-bit 密鑰并且然后這個(gè)密鑰通過安全哈希函數(shù)一次。如果這個(gè)操作的結(jié)果匹配存儲的先前OTP,驗(yàn)證是成功的和接受的一次口令被存儲為將來使用。
8.0 一次口令更改
由于哈希函數(shù)應(yīng)用的數(shù)目通過產(chǎn)生器每次減少1執(zhí)行,在一些點(diǎn)上用戶必須重新初始化系統(tǒng),否則不能夠進(jìn)行驗(yàn)證。
盡管一些計(jì)算站(installations)可能不允許用戶初始化遠(yuǎn)端,應(yīng)用工具必須(MUST)提供一種方法去做,而不泄露用戶的安全通行短語。一種方法是通過明確指定第一個(gè)一次口令的方式提供一個(gè)重新初始化的序列。
當(dāng)一次口令序列被重新初始化的時(shí)候,工具必須(MUST)驗(yàn)證種子或者通行短語被更換。計(jì)算站應(yīng)該(SHOULD)不鼓勵(lì)任何以明文的方式在網(wǎng)絡(luò)上發(fā)送安全通行短語的操作,因?yàn)檫@樣的行為失去了一次口令的概念。
工具可以(MAY)為[重新]初始化使用下列的技術(shù):
o 用戶選擇一個(gè)新的種子和哈希計(jì)數(shù)(count)(默認(rèn)的值可以被提供)。用戶提供這些,然后相應(yīng)產(chǎn)生一次口令,對于主機(jī)系統(tǒng)。
o 用戶也可以(MAY)作為錯(cuò)誤檢查對count-1次產(chǎn)生相應(yīng)的一次口令。
o 用戶應(yīng)該(SHOULD)針對原有的種子和原有的哈希計(jì)數(shù)產(chǎn)生一次口令為了保護(hù)空閑終端(idle terminal)或者工作站(這個(gè)暗含著當(dāng)計(jì)數(shù)是1的時(shí)候,用戶能夠登陸但是不能修改種子或者計(jì)數(shù))。
將來明確指定的協(xié)議可以被定義,對于所有的主機(jī)和產(chǎn)生器將能夠允許平滑的和也許自動的互操作的重新初始化。
9.0 避免競爭攻擊
所有一致服務(wù)工具必須(MUST)在避免本部分中描述的競爭狀況的危害。抵御這個(gè)攻擊的防護(hù)是概括的;工具可以(MAY)使用這個(gè)方法(approach)或者可以(MAY)選擇一個(gè)可選擇的防御。
對于一個(gè)攻擊者去監(jiān)聽大多數(shù)的一次口令,猜測剩余的,然后迅速傳遞合法用戶完成授權(quán)是可能的。多數(shù)針對六詞格式的最后一個(gè)詞進(jìn)行猜測更可能成功。
一個(gè)可能的防御是防止用戶同時(shí)開始多個(gè)認(rèn)證會話。這個(gè)意味著一次合法用戶已經(jīng)初始化的認(rèn)證,攻擊者將被阻塞直到第一次認(rèn)證處理完成。在這個(gè)方法(approach)中,為防止拒絕服務(wù)攻擊(denial of service attack)超時(shí)時(shí)間是必須的。
10.0 安全考慮
這篇文檔討論針對簡單口令系統(tǒng)[4]的通過限定已經(jīng)使用的監(jiān)聽/重放攻擊的危險(xiǎn)改善安全的認(rèn)證系統(tǒng)。
OTP系統(tǒng)的使用僅提供避免被動監(jiān)聽/重放攻擊危害的保護(hù)。它沒有提供對于傳輸數(shù)據(jù)的保密,以及它沒有提供避免例如在當(dāng)前Internet[9]上已知存在的會話攔劫(session hijacking)的主動攻擊的危害保護(hù)。IP Security(IPsec)的使用,參見[10], [11], 和[12]針對TCP會話攔劫的保護(hù)被推薦。
OTP系統(tǒng)對主機(jī)系統(tǒng)的成功保護(hù)依賴于使用的安全哈希函數(shù)不可逆性(non-invertability)。據(jù)我們所知,沒有哈希算法已經(jīng)被攻破,但是通常認(rèn)為MD4沒有MD5安全強(qiáng)度高。如果服務(wù)支持多種哈希算法,它(系統(tǒng)的安全)僅同最弱算法的安全強(qiáng)度。
11.0 確認(rèn)
在OTP的認(rèn)證觀念(idea)由Leslie Lamport[1]第一次提出建議。Bellcore(貝爾通訊研究所)的 S/KEY系統(tǒng),其是OTP的起源,由Phil Karn提出建議,其也發(fā)表了大部分的Bellcore參考實(shí)現(xiàn)(implementation)。
12.0 參考文獻(xiàn)
[1] Leslie Lamport, "Password Authentication with Insecure
Communication", Communications of the ACM 24.11 (November
1981), 770-772
[2] Rivest, R., "The MD4 Message-Digest Algorithm", RFC 1320,
April 1992.
[3] Neil Haller, "The S/KEY One-Time Password System", Proceedings
of the ISOC Symposium on Network and Distributed System
Security, February 1994, San Diego, CA
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -