專利名稱:人類輸入安全碼的制作方法
人類輸入安全碼
祖旦 冃足
認(rèn)證是多種類型的網(wǎng)絡(luò)通信中的一個(gè)重要問題。在某些安全協(xié)議中,人類用 戶可擔(dān)當(dāng)安全信道。即,這些協(xié)議需要人類用戶來將秘密或真實(shí)的值輸入到第一設(shè)
備中,該值將向該第一設(shè)備認(rèn)證用戶或第二設(shè)備。例如,用于UPnP2設(shè)備的認(rèn)證 機(jī)制可要求人類用戶將注冊(cè)碼鍵入到計(jì)算設(shè)備(第一設(shè)備)中,該注冊(cè)碼隨設(shè)備在 紙件上發(fā)出或者可從該設(shè)備內(nèi)的顯示器讀取。以此方式,用戶被認(rèn)證來使用該第一 設(shè)備。對(duì)于另一示例,經(jīng)認(rèn)證的密鑰交換協(xié)議可要求人類用戶通過電話向另一人類 用戶讀出認(rèn)證碼以防止針對(duì)該協(xié)議的中間人攻擊。在又一示例中,可要求用戶驗(yàn)證 可信公鑰的散列碼或根證書(例如,網(wǎng)絡(luò)瀏覽器應(yīng)用程序中的自簽名SSL證書)。 在再一示例中,用戶可將媒體設(shè)備(第一設(shè)備)(例如,電視機(jī)、數(shù)字錄像機(jī)、立 體聲系統(tǒng)等)的安全碼(諸如公鑰的散列)輸入到新購買的通用遙控器(第二設(shè)備) 中。該遙控設(shè)備然后可將用戶輸入的安全碼傳輸?shù)皆撁襟w設(shè)備以允許該遙控器被認(rèn) 證并用于該媒體設(shè)備。
以上相關(guān)技術(shù)的示例以及與其有關(guān)的限制旨在說明而非排他。在閱讀說明書 并研究了附圖之后,本領(lǐng)域的技術(shù)人員將清楚相關(guān)技術(shù)的其它限制。
概述
以下提出了本發(fā)明的簡(jiǎn)化概述以向讀者提供基本理解。本概述并不是本發(fā)明 的廣泛綜述,也不標(biāo)識(shí)本發(fā)明的關(guān)鍵/決定性要素或描繪本發(fā)明的范圍。其唯一的 目的是以簡(jiǎn)化的形式提出此處公開的某些概念作為對(duì)稍后提出的更詳細(xì)描述的前 序。
使用人類用戶作為安全通道可能對(duì)安全碼的長度有限制。例如,人類用戶記 住長安全碼的能力有限,并且如果安全碼足夠長,則人類用戶可能難以正確輸入該 安全碼。另外,即使人類用戶能夠記住和/或復(fù)制長安全碼,他們也可能會(huì)發(fā)現(xiàn)該 任務(wù)不是令人愉快的。通常,人類用戶可能愿意輸入20-40位值的平均信息量,而 許多安全協(xié)議要求長得多的值(例如,50-80位)的傳輸以便對(duì)于蠻力攻擊是安全的。該問題會(huì)隨著時(shí)間的推移而加重,因?yàn)槿祟愝斎氚踩a的能力保持相同,而計(jì) 算設(shè)備的能力和速度卻持續(xù)增長。
例如,遙控設(shè)備的公鑰可被傳輸?shù)诫娨暀C(jī)以允許該遙控器可用于該電視機(jī)。 在此示例中,電視機(jī)公鑰是ioo個(gè)數(shù)位長,但是可使用任何長度的密鑰。通常,媒 體設(shè)備可用兩個(gè)設(shè)備(例如,遙控器和媒體設(shè)備)之間的密鑰交換來識(shí)別授權(quán)的遙
控器。設(shè)備之間的密鑰交換可通過證書或科布洛斯(Kerberos)來實(shí)現(xiàn)。然而,要 求用戶將電視機(jī)的公鑰傳送到遙控器可能是繁重且充滿差錯(cuò)的。公鑰在某些示例中 可被散列。然而,采用公鑰的128位散列值,該散列值仍有約20個(gè)數(shù)位長,這仍 被認(rèn)為對(duì)于用戶是繁重的。另一方面,僅有5-10個(gè)數(shù)位的用戶輸入碼可能僅編碼 了約30-50位的信息,這可被認(rèn)為是不安全的。由此,為擴(kuò)展用戶輸入的安全碼的 安全性,和/或減小用戶輸入的安全碼的長度,可使用可擴(kuò)展散列??蓴U(kuò)展散列的 示例在2003年3月27日提交的專利申請(qǐng),美國專利第10/401241號(hào),以及 http:〃www.ietf.org/rfc/rfc3972.txt上的2005年3月的正TF因特網(wǎng)草案No, 3972 Cryptographically Generated Address (用密碼生成的地址)中有描述,這兩個(gè)參考 文獻(xiàn)都通過引用結(jié)合于此。
用于CGA的一種通用且可擴(kuò)展的格式以及相關(guān)聯(lián)的認(rèn)證機(jī)制可提供重量級(jí)認(rèn) 證機(jī)制的大部分安全性。在某些情況下,CGA的可擴(kuò)展格式可降低管理和通信開 銷??蓴U(kuò)展CGA可有效地去除或減小對(duì)密碼散列值的長度的64位限制。盡管可 擴(kuò)展CGA可增加地址生成的成本,但可擴(kuò)展CGA可相應(yīng)地增加"蠻力"攻擊(即, 對(duì)散列沖突的窮盡搜索,或從用于找出對(duì)許多地址的匹配的攻擊者自己的公鑰來創(chuàng) 建大型的、預(yù)計(jì)算的接口標(biāo)識(shí)符數(shù)據(jù)庫)的成本。在許多情況下,可擴(kuò)展CGA與 現(xiàn)有的CGA使用和驗(yàn)證相比可維持或略微增加地址使用和驗(yàn)證的成本。出于簡(jiǎn)明 的目的,可擴(kuò)展CGA在以下將被稱為ECGA。
在生成ECGA的一個(gè)示例中,地址所有者使用公鑰和其它參數(shù)來計(jì)算兩個(gè)散 列值。第二散列值設(shè)置了第一散列值的輸入?yún)?shù),且從第一散列值中導(dǎo)出網(wǎng)絡(luò)地址 的至少一部分。兩個(gè)散列值的組合增加了生成新地址的計(jì)算復(fù)雜度,并且因此增加 了蠻力攻擊的成本。兩個(gè)散列值的組合允許地址所有者選擇超過現(xiàn)有的基于CGA 的認(rèn)證機(jī)制的64位限制的安全級(jí)別。
作為針對(duì)蠻力攻擊的另一措施,可在第一散列輸入中包括地址的路由前綴 (即,地址所有者不可選擇的部分)。在第一散列計(jì)算中包括路由前綴通過使得針 對(duì)全局范圍地址的某些蠻力攻擊更昂貴來增加預(yù)計(jì)算攻擊的成本,因?yàn)楣粽弑仨殞?duì)每一地址前綴完成單獨(dú)的蠻力搜索。萬一地址所有者在網(wǎng)絡(luò)之間移動(dòng)并且因此改 變了相應(yīng)的路由前綴,則第二散列值可被重復(fù)使用,因?yàn)樗瑟?dú)立于路由前綴的值。 以此方式,可避免和/或減少地址生成的計(jì)算上昂貴的部分。由于重新計(jì)算第二散 列函數(shù)的高開銷在路由前綴變化時(shí)可能是不需要的,因此ECGA可以適用于移動(dòng) 通信應(yīng)用。
對(duì)第一和第二散列函數(shù)中的任一個(gè)或兩者的輸入可如在IETF因特網(wǎng)草案 3972中定義的那樣來格式化或可被格式化為包含公鑰和可能的其它參數(shù)的另一數(shù) 據(jù)結(jié)構(gòu)。在另一示例中,對(duì)第一和第二散列函數(shù)中的任一個(gè)或兩者的輸入可被格式 化為自簽名證書的一部分。自簽名證書是用于以因特網(wǎng)協(xié)議儲(chǔ)存并傳輸公鑰的標(biāo)準(zhǔn) 格式。該證書上的簽名證明公鑰所有者希望使用ECGA。另外,證書使得在同一協(xié) 議中并排使用基于ECGA的和基于公鑰基礎(chǔ)結(jié)構(gòu)(PKI)的地址認(rèn)證更為容易。然 而,某些協(xié)議可能需要節(jié)省八位組并僅傳輸公鑰和其它參數(shù),而非完整的自簽名證 書。例如,為此可定義類似于RFC 3972中的格式的經(jīng)優(yōu)化的參數(shù)格式。此外,協(xié) 議可通過避免重發(fā)接收器已知的或在協(xié)議的其它部分中發(fā)送的參數(shù)來優(yōu)化參數(shù)的 傳輸。
地址所有者可在發(fā)送消息時(shí)使用ECGA作為其自己的地址,或者如果從另一 地址發(fā)送經(jīng)數(shù)字簽署的消息,則可指示該消息是代表ECGA的所有者來發(fā)送的。 具有公共簽名密鑰和其它CGA參數(shù)的消息的接收者可通過對(duì)公鑰和其它參數(shù)執(zhí)行 兩個(gè)散列函數(shù)并通過驗(yàn)證消息上的簽名來認(rèn)證消息的來源。
在基于ECGA的認(rèn)證機(jī)制中,消息接收者可以是單獨(dú)的實(shí)體或是創(chuàng)建該消息 的同一實(shí)體。后者的一個(gè)示例是消息創(chuàng)建者儲(chǔ)存消息以在稍后的時(shí)間檢索。當(dāng)消息 的創(chuàng)建者檢索該消息時(shí),認(rèn)證機(jī)制確保消息的完整性在其被儲(chǔ)存時(shí)未受損害。
在以下討論的各種示例中,減少或消除了上述各種問題中的一個(gè)或多個(gè),而 其它示例針對(duì)其它改進(jìn)。通過結(jié)合附圖考慮來參考以下詳細(xì)描述,可以更容易明白 并更好地理解上述許多特征和/或其它特征。
附圖描述
本描述將通過考慮附圖閱讀以下詳細(xì)描述來更好地理解,附圖中
圖1是示出其中可實(shí)施認(rèn)證機(jī)制的示例通信網(wǎng)絡(luò)的示意圖2是示出其中可實(shí)現(xiàn)認(rèn)證機(jī)制的至少一部分的示例計(jì)算機(jī)設(shè)備的示意圖;
圖3是示出示例地址生成過程的示例輸入和示例輸出的示意圖;圖4是發(fā)送設(shè)備創(chuàng)建可擴(kuò)展的用密碼生成的地址的示例過程的流程圖; 圖5是示出從發(fā)送設(shè)備的公鑰和其它參數(shù)中示例性地導(dǎo)出可擴(kuò)展的用密碼生 成的地址的示意圖6是示出從發(fā)送設(shè)備發(fā)送到接收設(shè)備的經(jīng)認(rèn)證的消息的示例組成部分的示
意圖7是示出示例地址所有權(quán)驗(yàn)證過程的示例輸入和示例輸出的示意圖; 圖8是用于驗(yàn)證一公鑰屬于可擴(kuò)展的用密碼生成的地址的所有者的示例過程 的流程圖9是示出接收設(shè)備對(duì)公鑰和可擴(kuò)展的用密碼生成的地址之間的綁定進(jìn)行的 示例性驗(yàn)證的示意圖IO是示出認(rèn)證過程的示例生命周期的序列圖11是發(fā)送設(shè)備創(chuàng)建可擴(kuò)展的用密碼生成的地址的示例過程的流程圖12是發(fā)送設(shè)備創(chuàng)建可擴(kuò)展的用密碼生成的地址的示例過程的流程圖13示出了發(fā)送設(shè)備生成可擴(kuò)展的用密碼生成的地址的示例過程的流程圖14是示出示例性非密碼地址的示意圖15是用于生成圖14的非密碼地址的示例過程的流程圖16是用于認(rèn)證圖14的非密碼地址的示例過程的流程圖17是示出另一示例性非密碼地址的示意圖18是用于生成圖17的非密碼地址的示例過程的流程圖19是用于認(rèn)證圖17的非密碼地址的示例過程的流程圖20是示出從第一和第二輸入值示例性地導(dǎo)出非密碼地址的示意圖21是用于生成圖20的非密碼地址的示例過程的流程圖22是用于認(rèn)證圖20的非密碼地址的示例過程的流程圖23示出了使用人類作為安全信道來傳送安全碼的示例系統(tǒng)的示意圖24示出了安全碼的示例性生成的示意圖25示出了生成安全碼的示例方法的流程圖;以及
圖26示出了認(rèn)證安全碼的示例方法的流程圖。
附圖中,相同的參考標(biāo)號(hào)用于指示相同的部分。
詳細(xì)描述
以下結(jié)合附圖提供的詳細(xì)描述旨在作為對(duì)本示例的描述,
8
并非旨在標(biāo)識(shí)可構(gòu)造或利用本示例的唯一形式。該描述闡明了該示例的功能以及用于構(gòu)造和操作該示 例的步驟序列。然而,可由不同的示例來實(shí)現(xiàn)相同或等效的功能和序列。
盡管此處將本示例描述并示出為在認(rèn)證機(jī)制系統(tǒng)中實(shí)現(xiàn),但是所描述的系統(tǒng) 是作為示例而非局限來提供的。如本領(lǐng)域的技術(shù)人員所理解的,本示例適于在各種 不同類型的認(rèn)證、授權(quán)和訪問控制系統(tǒng)中應(yīng)用。
以下描述將介紹可擴(kuò)展CGA (以下稱為ECGA)的生成以及可如何由認(rèn)證機(jī) 制來認(rèn)證ECGA。然后將討論實(shí)現(xiàn)選項(xiàng)以及該認(rèn)證機(jī)制可如何在其它情況下操作。 ECGA的特征可用于提供一種簡(jiǎn)單的、輕量級(jí)的、和/或可部署的認(rèn)證機(jī)制,以便 于用于認(rèn)證消息或其它信息。例如,該認(rèn)證機(jī)制可確定信息可是否可被信任是來自 發(fā)送者地址或它聲稱所來自的其它實(shí)體。該認(rèn)證機(jī)制的全部或一部分可被應(yīng)用于任 何類型的消息或信息以增強(qiáng)安全性和/或認(rèn)證。
一種認(rèn)證機(jī)制可在諸如圖1的示例網(wǎng)絡(luò)等網(wǎng)絡(luò)環(huán)境中部署。如圖1所示,局 域網(wǎng)(LAN) 100上的計(jì)算設(shè)備102可伴有服務(wù)器104和/或路由器106。路由器允 許LAN上的設(shè)備通過互聯(lián)網(wǎng)絡(luò)108與諸如設(shè)備IIO等遠(yuǎn)程計(jì)算設(shè)備通信。因特網(wǎng) 是互聯(lián)網(wǎng)絡(luò)的一個(gè)示例。圖1中的任何設(shè)備,包括路由器可向任何其它設(shè)備發(fā)送消 息。在當(dāng)今典型使用的協(xié)議中,消息包含發(fā)送者的網(wǎng)絡(luò)地址("發(fā)自(FROM)地 址")和接收者的網(wǎng)絡(luò)地址("發(fā)往(TO)地址")。
作為第一示例,考慮設(shè)備102由被授權(quán)來重新配置路由器106的系統(tǒng)管理員 操作。為安全起見,路由器不接受來自除設(shè)備102之外的設(shè)備的命令。但是當(dāng)路由 器接收到其發(fā)自地址被設(shè)為設(shè)備102的地址的重新配置命令消息時(shí),路由器相信該 消息是真實(shí)的,并執(zhí)行該命令。(該示例僅出于說明性目的r路由器通信一般比此 處所描述的要安全得多。)然而,創(chuàng)建并發(fā)送帶有欺騙性的發(fā)自地址的消息是非常 容易的。例如,設(shè)備112可創(chuàng)建路由器重新配置命令消息,并將設(shè)備102的網(wǎng)絡(luò)地 址放在發(fā)自地址域中。如果沒有用于認(rèn)證消息的機(jī)制,則路由器不能知道哪一設(shè)備 實(shí)際發(fā)送了該消息。路由器不知道該消息不是真實(shí)的,并執(zhí)行該命令,這可能會(huì)損 害LAN上的所有設(shè)備的安全性。作為第二示例,設(shè)備102使用"鄰居發(fā)現(xiàn)(Neighbor Discovery)"協(xié)議來將路由器的網(wǎng)絡(luò)地址解析成鏈路層地址(即,MAC地址), 然后在與諸如設(shè)備110等遠(yuǎn)程設(shè)備通信時(shí)使用該路由器。如果沒有適當(dāng)?shù)恼J(rèn)證機(jī) 制,則設(shè)備114可能假扮路由器106。來自設(shè)備102的、針對(duì)設(shè)備110的消息因此 會(huì)去往設(shè)備114,設(shè)備114可讀取該消息的內(nèi)容、丟棄該消息(由此針對(duì)設(shè)備102 發(fā)起服務(wù)拒絕攻擊)、和/或在將其繼續(xù)發(fā)送到設(shè)備110之前更改消息。作為第三示例,設(shè)備114可干擾其中設(shè)備102獲得網(wǎng)絡(luò)地址的進(jìn)程。例如,如果設(shè)備102 執(zhí)行"重復(fù)地址檢測(cè)"協(xié)議來檢査沒有其它網(wǎng)絡(luò)節(jié)點(diǎn)正在使用與設(shè)備102相同的地 址,則設(shè)備114可生成使得看上去所有地址都己被某一其它網(wǎng)絡(luò)節(jié)點(diǎn)使用(即,擁 有)的消息。這樣,設(shè)備114可阻止設(shè)備102獲得網(wǎng)絡(luò)上的地址。這些僅僅是示出 對(duì)認(rèn)證的普遍需求的三個(gè)示例。這些示例可被擴(kuò)充到使用任何種類的通信方法或協(xié) 議發(fā)送到任何種類的設(shè)備的任何種類的消息。
為阻擋諸如在前一段的前兩個(gè)示例中描述的攻擊,消息接收者可認(rèn)證消息的 發(fā)送者,g卩,確定該消息是否實(shí)際上是由該消息中指示的發(fā)送者發(fā)送的。當(dāng)接收者 能夠可靠地確定消息的真實(shí)發(fā)送者時(shí),則接收者可選擇僅在消息是由適當(dāng)或可信設(shè) 備發(fā)送時(shí)才對(duì)其采取動(dòng)作。為阻擋在前一段的第三個(gè)示例中描述的種類的攻擊,網(wǎng) 絡(luò)節(jié)點(diǎn)需要生成新的網(wǎng)絡(luò)地址并證明它本身有高概率生成了該地址的方法。這一方 法以相當(dāng)大的成功率阻止惡意網(wǎng)絡(luò)節(jié)點(diǎn)虛假地聲稱該新地址的所有權(quán)。
在以下描述中,除非另外指明,否則該認(rèn)證機(jī)制是參考由一個(gè)或多個(gè)計(jì)算機(jī) 執(zhí)行的動(dòng)作和操作的符號(hào)標(biāo)識(shí)來描述的。由此,可以理解,有時(shí)被稱為計(jì)算機(jī)執(zhí)行 的這些動(dòng)作和操作包括計(jì)算設(shè)備的處理單元對(duì)以結(jié)構(gòu)化形式表示數(shù)據(jù)的電信號(hào)的 操縱。這一操縱變換了數(shù)據(jù)或?qū)?shù)據(jù)維持在計(jì)算設(shè)備的存儲(chǔ)器系統(tǒng)中的各位置上, 這以本領(lǐng)域的技術(shù)人員都理解的方式重新配置或更改了計(jì)算機(jī)的操作。維護(hù)數(shù)據(jù)的 數(shù)據(jù)結(jié)構(gòu)是具有由數(shù)據(jù)的格式定義的特定屬性的存儲(chǔ)器的物理位置。然而,盡管在 前述上下文中描述了該認(rèn)證機(jī)制,但是它并不意味著局限,如本領(lǐng)域的技術(shù)人員所 理解的,以下描述的各種動(dòng)作和操作也可用硬件來實(shí)現(xiàn)。
參考圖2,該認(rèn)證機(jī)制可在連接的計(jì)算機(jī)網(wǎng)絡(luò)上的網(wǎng)絡(luò)節(jié)點(diǎn)之間的通信中實(shí) 現(xiàn)。每一網(wǎng)絡(luò)節(jié)點(diǎn)駐留在可具有許多不同計(jì)算機(jī)架構(gòu)之一的計(jì)算設(shè)備中。出于描述 的目的,圖2示出了可用于這些設(shè)備的一個(gè)示例計(jì)算設(shè)備架構(gòu)的示意圖。所描繪的 架構(gòu)僅是合適的計(jì)算環(huán)境的一個(gè)示例,并非旨在對(duì)本發(fā)明的使用范圍或功能提出任 何局限。也不應(yīng)將計(jì)算設(shè)備解釋為對(duì)圖2所示的任一組件或其組合具有任何依賴或 需求。該認(rèn)證機(jī)制可以使用眾多其它通用或?qū)S糜?jì)算或通信環(huán)境或配置來操作。適 用于本發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境和配置的示例包括但不限于,移動(dòng)電話、 袖珍計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、膝上型設(shè)備、手持式設(shè)備、機(jī)頂盒、服務(wù)器、路由器、 網(wǎng)絡(luò)地址轉(zhuǎn)換器、交換機(jī)、無線接入點(diǎn)、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、小 型機(jī)、大型計(jì)算機(jī)、以及包括上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算環(huán)境。
在圖2所示的基本配置中,計(jì)算設(shè)備102通常包括至少一個(gè)處理單元200和存儲(chǔ)器202。存儲(chǔ)器202可以是易失性(如RAM)、非易失性(如ROM、閃存等) 或兩者的某一組合。這一基本配置在圖2中由虛線204示出。
存儲(chǔ)介質(zhì)設(shè)備可具有另外的特征和/或功能。例如,存儲(chǔ)介質(zhì)設(shè)備可包括另外 的存儲(chǔ)(可移動(dòng)和/或不可移動(dòng)),包括但不限于PCMCIA卡、磁盤和光盤、磁帶、 外部硬盤驅(qū)動(dòng)器、以及任何其它合適的可移動(dòng)或不可移動(dòng)存儲(chǔ)。這類另外的存儲(chǔ)在 圖2中由可移動(dòng)存儲(chǔ)206和不可移動(dòng)存儲(chǔ)208示出。
計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于儲(chǔ)存如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或
其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介 質(zhì)。存儲(chǔ)器202、可移動(dòng)存儲(chǔ)206和不可移動(dòng)存儲(chǔ)208都是計(jì)算機(jī)存儲(chǔ)介質(zhì)的示例。 計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,HDD、 RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ) 器技術(shù)、CD-ROM、 zip驅(qū)動(dòng)器、數(shù)字多功能盤或其它光學(xué)存儲(chǔ)、磁帶盒、磁帶、 磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、以及可以用來儲(chǔ)存期望的信息并可由計(jì)算設(shè)備訪問的 任一其它介質(zhì)。
計(jì)算設(shè)備102還可包含允許主機(jī)與其它設(shè)備通信的通信信道210。通信信道 210可包括一個(gè)或多個(gè)通信信道,并且是通信介質(zhì)的一個(gè)示例。通信介質(zhì)通常可以 用諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來具體化計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié) 構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語"已調(diào)制數(shù)據(jù)信號(hào)"指 以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例 而非局限,通信介質(zhì)包括如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及如聲學(xué)、無線 電、紅外和其它無線介質(zhì)等無線介質(zhì)。此處使用的術(shù)語計(jì)算機(jī)可讀介質(zhì)包括存儲(chǔ)介 質(zhì)和通信介質(zhì)兩者。
計(jì)算設(shè)備102還可具有輸入設(shè)備212,如鍵盤、鼠標(biāo)、輸入筆、語音輸入組件、 觸摸輸入設(shè)備等等。輸出組件214包括屏幕顯示器、揚(yáng)聲器、打印機(jī)等等,以及用 于驅(qū)動(dòng)它們的呈現(xiàn)模塊(通常稱為"適配器")。計(jì)算設(shè)備102具有電源216。
可擴(kuò)展的用密碼生成的地址
諸如計(jì)算設(shè)備102等設(shè)備可用使得消息只能由該特定設(shè)備來編寫的方式來編 寫消息,例如,消息可諸如通過使用認(rèn)證機(jī)制被認(rèn)證為來自發(fā)送計(jì)算設(shè)備。認(rèn)證機(jī) 制可以是單邊的,這表現(xiàn)在接收者無需具有與發(fā)送者的進(jìn)一步通信來完成認(rèn)證過 程。例如,消息可包含諸如圖1的路由器106等消息接收者解碼該消息并確定它必 定來自諸如計(jì)算設(shè)備102等特定設(shè)備所需的所有內(nèi)容。該認(rèn)證機(jī)制可以基于結(jié)合消息發(fā)送者的網(wǎng)絡(luò)地址的選擇來使用的公鑰密碼技 術(shù)。所選的網(wǎng)絡(luò)地址可包括基于公鑰和其它參數(shù)的可擴(kuò)展的用密碼生成的地址
(ECGA)。在圖1的示例中,ECGA地址是計(jì)算設(shè)備102的地址。可從設(shè)備102 的公鑰中導(dǎo)出這一地址的一種方式結(jié)合圖3、 4和5來描述。
ECGA可用任何適當(dāng)?shù)姆绞絹砩桑T如由圖3所示的ECGA生成器312來 生成。ECGA生成器312可以在圖1的計(jì)算設(shè)備102內(nèi)實(shí)現(xiàn),它可取一個(gè)或多個(gè)輸 入(或其任何組合),這些輸入可包括地址所有者的公鑰300、地址所有者的網(wǎng)絡(luò) 的路由前綴308、沖突計(jì)數(shù)310數(shù)據(jù)值(可以被初始地設(shè)為零)、修飾符306數(shù)據(jù) 值、安全性參數(shù)(Sec) 302、時(shí)間參數(shù)等中的一個(gè)或多個(gè)。修飾符306可以是任何 適當(dāng)?shù)男揎椃?,在一個(gè)示例中可以是隨機(jī)的16個(gè)八位組的串。安全性參數(shù)302可 以是任何適當(dāng)?shù)陌踩斎耄梢允侵翟?到7之間的無符號(hào)3位整數(shù)。安全性參 數(shù)302的值可由發(fā)送設(shè)備(地址所有者)來選擇,諸如由計(jì)算設(shè)備102來選擇。時(shí) 間參數(shù)可定義在生成ECGA時(shí)計(jì)算第二散列值的時(shí)間。ECGA生成器312輸出新 ECGA地址314。輸出的ECGA地址可以根據(jù)任何適當(dāng)?shù)膮f(xié)議,包括但不限于互聯(lián) 網(wǎng)協(xié)議版本6 (IPv6)、鏈路層地址(MAC地址)等等。ECGA生成器可輸出相 關(guān)聯(lián)的CGA參數(shù)316,以及可任選的自簽名證書。
在一個(gè)示例中,輸出的ECGA可以根據(jù)IPv6協(xié)議。如圖5所示,IPv6地址 314為128位長。它一般被劃分成兩部分。最左邊的64位是路由前綴308,它用于 通過因特網(wǎng)將互聯(lián)網(wǎng)協(xié)議(IP)分組路由到目的地網(wǎng)絡(luò)。最右邊的64位是接口標(biāo) 識(shí)符504,它標(biāo)識(shí)了本地網(wǎng)絡(luò)內(nèi)的單個(gè)節(jié)點(diǎn)。地址的接口標(biāo)識(shí)符504部分被稱為"節(jié) 點(diǎn)可選擇"部分,因?yàn)榘l(fā)送設(shè)備102能夠自由地如它認(rèn)為適合地設(shè)置該部分。接口 標(biāo)識(shí)符可用任何適當(dāng)?shù)姆绞絹磉x擇,例如隨機(jī)地、只要同一網(wǎng)絡(luò)上的兩個(gè)節(jié)點(diǎn)共享 同一值、由本地管理員分配等等。盡管128位HV6地址314劃分成兩個(gè)64位部分 是典型的,但是該劃分可按某種其它比例來完成。例如,接口標(biāo)識(shí)符504的長度可 增加,其代價(jià)是減小路由前綴308的長度,或者接口標(biāo)識(shí)符的某些部分可由一路由 協(xié)議來確定,使得它們實(shí)際上成為地址前綴的一部分。
發(fā)送節(jié)點(diǎn)的網(wǎng)絡(luò)地址可用任何適當(dāng)?shù)姆绞奖粯?biāo)識(shí)為ECGA,包括但不限于路 由前綴的預(yù)設(shè)部分、接口標(biāo)識(shí)符的預(yù)設(shè)部分、消息中的首部或消息內(nèi)容等中的一個(gè) 或多個(gè)。例如,網(wǎng)絡(luò)地址本身可將地址標(biāo)識(shí)為ECGA。在一個(gè)示例中,接口標(biāo)識(shí)符 504可包括可被置位以指示該網(wǎng)絡(luò)地址是ECGA的兩個(gè)位。在IPv6地址中,從64 位接口標(biāo)識(shí)符504的左邊開始的第7位是通用/本地位或"u"位。它通常被設(shè)為1以表示該接口標(biāo)識(shí)符504是從來自接口硬件的EUI-64標(biāo)識(shí)符配置的,且因此是全 局唯一的。從左邊開始的第8位是個(gè)別/組或"g"位,它一般對(duì)組播地址被設(shè)為1。 位組合u4, g^通常不被使用,因?yàn)榻M播地址(如由§=1所指示的)不能是全局 唯一的(如由u=l所指示的)。以此方式,可分配11=1, g=l的位組合來指示ECGA 地址。分配了網(wǎng)絡(luò)地址的一個(gè)或多個(gè)位,諸如IPv6地址的u和/或g位可便于在任 何安全協(xié)議中對(duì)用密碼生成的以及非用密碼生成的地址的混合使用,而不會(huì)減弱任 一地址類型的安全性。然而,可以理解,即使不進(jìn)行這一分配也可使用ECGA地 址和認(rèn)證。
ECGA的路由前綴或接口標(biāo)識(shí)符可包括指示生成ECGA時(shí)使用的散列值的類 型或長度(或兩者)的散列指示符。在一個(gè)示例中,散列指示符包括安全性參數(shù)(Sec) 302,它可指示安全級(jí)別。如果在生成地址時(shí)使用了時(shí)間參數(shù)來確定安全級(jí)別,則 所確定的安全級(jí)別可由安全性參數(shù)或散列指示符以與不使用時(shí)間參數(shù)時(shí)完全相同 的方式來指示。即,用于確定安全級(jí)別的機(jī)制可以獨(dú)立于用于在地址中傳送安全級(jí) 別的機(jī)制。然而,可以理解,可使用任何適當(dāng)?shù)纳⒘兄甘痉麃碇甘舅x擇的第二散 列值或一組可能的散列值。
如果散列指示符值被編碼到地址位中,則攻擊者可能無法在同時(shí)改變地址的 情況下改變安全性參數(shù)的值或?qū)Φ谝缓?或第二散列值的其它輸入。在一個(gè)示例中, 散列指示符是無符號(hào)整數(shù)。盡管可對(duì)散列指示符選擇任何適當(dāng)?shù)奈婚L度,但是圖5 示出了安全性參數(shù)的一個(gè)示例長度為3位。散列指示符550可以在接口標(biāo)識(shí)符504 的任何適當(dāng)?shù)牟糠种?。例如,如圖5所示,散列指示符可以在接口標(biāo)識(shí)符的最左邊 位部分或ECGA的節(jié)點(diǎn)可選擇部分中.編碼。散列指示符可允許地址所有者增加地 址生成的計(jì)算成本,且因此一相應(yīng)地增加了針對(duì)該地址的蠻力攻擊的成本。由此, 在某些情況下,如以下所描述的,將Sec302增加l可向該散列的長度添加攻擊者 必須破解的16位。
為生成ECGA,諸如IPv6地址等網(wǎng)絡(luò)地址可包括基于公鑰信息的散列值。然 而,IPv6中網(wǎng)絡(luò)地址的節(jié)點(diǎn)可選擇部分通常是64位。在某些特殊協(xié)議中,節(jié)點(diǎn)可 選擇部分可以更長,其代價(jià)是減小了路由前綴的長度。在其它協(xié)議中,諸如在NAT 和防火墻穿越協(xié)議中,節(jié)點(diǎn)可選擇部分可以較短,諸如48位,因?yàn)槁酚汕熬Y較長 或者接口標(biāo)識(shí)符的某些位由協(xié)議來確定。以此方式,散列輸出的長度被限于大約 64位,在IPv6中有時(shí)候被限于少至48位。然而,在某些情況下,大約48或64 位可能無法提供足夠的安全性和/或可能不包含足夠強(qiáng)的密碼散列值。ECGA包括公鑰的散列作為網(wǎng)絡(luò)地址的一部分。如圖5所示,接口標(biāo)識(shí)符504 的至少一部分可包括公鑰300的散列的至少一部分。公鑰的散列可由任何適當(dāng)?shù)牡?一散列函數(shù)510來生成,包括但不限于MD5、 SHA-1、 N散列等等。
參考圖11的流程圖,生成ECGA可從確定IIOO地址所有者的公鑰開始。地 址所有者的公鑰可用任何適當(dāng)?shù)姆绞絹泶_定。例如,公鑰可由ECGA生成器諸如 通過從地址所有者的計(jì)算設(shè)備的存儲(chǔ)器檢索公鑰、從證書授權(quán)機(jī)構(gòu)檢索公鑰等來確 定。確定公鑰可包括將公鑰變換或編碼成可由ECGA生成器使用的格式。例如, 如圖4的操作400中所示,地址所有者的公鑰可以被DER編碼為ASN.l結(jié)構(gòu),它 可具有諸如SubjectPublicKeylnfo (主題公鑰信息)等類型。
可確定H02ECGA參數(shù)。例如,如圖4的流程圖的操作402中所示,可將修 飾符數(shù)據(jù)值(例如,圖3的修飾符306)初始化為16個(gè)隨機(jī)的八位組或任何其它 適當(dāng)?shù)男揎椃?。路由前綴(例如,圖3的路由前綴308)可被設(shè)為地址所有者的 本地子網(wǎng)處的路由器通告的路由前綴值。沖突計(jì)數(shù)(例如,圖3的沖突計(jì)數(shù)310) 可被初始化為零。公鑰可被設(shè)為地址所有者的經(jīng)DER編碼的公鑰。ECGA參數(shù)的 確定可包括將ECGA參數(shù)值變換或編碼成可由ECGA生成器使用的格式。例如, 如圖4的操作404中所示,可串接每一 ECGA參數(shù)以形成如通過引用結(jié)合于此的 IETF RFC 3972中定義的CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)。在另一示例中,CGA參數(shù)可以被 DER編碼為ASN.l結(jié)構(gòu)。
可計(jì)算1104第二散列值。盡管此處稱為"第二"散列值,但是它實(shí)際上是時(shí) 間上首先計(jì)算的散列值。第二散列值可以是公鑰300與操作1102中確定的CGA 參數(shù)中的一個(gè)或多個(gè)的組合的散列。例如,第二散列值可以是圖3的修飾符306 與公鑰300的組合的散列。例如,修飾符306和公鑰300可與零值路由前綴和沖突 計(jì)數(shù)串接404以形成如IETF RFC 3972中定義的CGA參數(shù)數(shù)據(jù)結(jié)構(gòu),如圖5和圖 4的方法中所示。串接可由圖5所示的第二散列函數(shù)520來散列化以提供圖5所示 的第二散列值500。第二散列函數(shù)可以是任何適當(dāng)?shù)纳⒘泻瘮?shù),諸如SHA-1算法, 并且可以與第一散列函數(shù)510相同或不同。
認(rèn)證機(jī)制可使用SHA-1散列函數(shù)來同時(shí)實(shí)現(xiàn)第一和第二散列函數(shù)兩者。散列 函數(shù)的輸出可以比算法所需的,諸如SHA-1的160位長。在這一情況下,散列值 可例如通過取散列函數(shù)輸出的最左邊的所需位數(shù)而被截?cái)嗟竭m當(dāng)?shù)拈L度。SHA-1 算法是單向散列函數(shù),這意味著它取一消息并將其轉(zhuǎn)換成固定長度的數(shù)位串,也稱
為消息摘要。散列函數(shù)的速度對(duì)于地址生成過程可能不是重要的。第二散列函數(shù)的目的是設(shè)置第一散列函數(shù)的至少一個(gè)輸入?yún)?shù)(諸如修飾符)的值,并且增加生成 新地址的復(fù)雜度的是兩個(gè)散列值的組合。由于第二散列函數(shù)指數(shù)地增加散列的成 本,因此SHA-1和其它散列函數(shù)之間的微小的速度差別在本發(fā)明中是無關(guān)的。盡
管此處使用SHA-1作為散列函數(shù)的一個(gè)示例,但是也可改為使用具有第二前象抵 抗(second-preimage-resistance)特性的任何其它密碼函數(shù)。
在一個(gè)示例中,第二散列函數(shù)的結(jié)果可以是圖5中的第二散列值500??蓪⒌?二散列值的一部分的位與零進(jìn)行比較1106,如圖11所示。例如,如圖4所示,可 將第二散列值500的最左邊N*Sec位與零進(jìn)行比較(圖4中的406和408)。例如, 第二散列值00001ccd45bfe68e38b8d47bab2cd070781d765f具有最左邊19個(gè)0位的 計(jì)數(shù)值。如果N46,則這對(duì)應(yīng)于Sec^且N+Sec46。修飾符和所確定的計(jì)數(shù)值可 用任何適當(dāng)?shù)姆绞絹韮?chǔ)存,諸如儲(chǔ)存在數(shù)據(jù)存儲(chǔ)中。
值N可以是取決于對(duì)其使用ECGA的協(xié)議的任何適當(dāng)?shù)闹?。如圖4的步驟406 中所示,N的值可以是16,然而,可以理解,對(duì)N可使用任何適當(dāng)?shù)闹?,諸如4、 8、 12等。如果最左邊的NMec位都是0,或者如果Sec二0,(步驟408和1108), 則該過程分別以圖4和11中的步驟412和1112繼續(xù)。否則,以任何適當(dāng)?shù)姆绞叫?改1110修飾符306 (或作為對(duì)第一和第二散列值兩者的輸入的其它CGA參數(shù))的 值,如圖ll所示。例如,可對(duì)該修飾符選擇另一隨機(jī)數(shù)。在另一示例中,如圖4 所示,該修飾符可在步驟410中遞增。計(jì)算第二散列值的過程再次分別以圖4和 11中的步驟404和1104繼續(xù),使用新修改的修飾符和公鑰來確定第二散列值。
諸如步驟402、 1102中的修飾符306等CGA參數(shù)的初始值以及步驟410、 1110 中的修改修飾符的方法可任意選擇。為了避免對(duì)修飾符306重復(fù)地嘗試同一值,可 隨機(jī)選擇初始值。隨機(jī)數(shù)生成器的質(zhì)量可以不重要,只要不頻繁重復(fù)相同的值。修 改修飾符306的一種方式是如同它們是128位整數(shù)(采用任何字節(jié)順序)那樣遞增 內(nèi)容八位組410。
對(duì)于大于O的安全性參數(shù)(Sec) 302的值,不保證該過程在特定次數(shù)的迭代 之后終止。步驟404-410中的蠻力搜索平均花費(fèi)約2"'see次迭代來完成(迭代次數(shù)
的中位數(shù)是0.69*216'^)。
Sec的值可能難以確定。例如,Sec的值越大,生成ECGA的處理成本也越大。 然而,如果Sec是靜態(tài)的,則經(jīng)過一段時(shí)間之后,市場(chǎng)上計(jì)算速度的增加可能會(huì)降 低所得的ECGA的安全性。例如,如果計(jì)算能力的成本每18個(gè)月就減半,則第二 散列值中所需的零位的個(gè)數(shù)(N*Sec)就應(yīng)當(dāng)每18個(gè)月遞增1以維持針對(duì)蠻力攻擊的相同的安全級(jí)別。然而,對(duì)計(jì)算能力在接下來5-50年內(nèi)的預(yù)測(cè)可能是困難的。
此外,要求用戶或管理員增加N*Sec的值在ECGA是在操作系統(tǒng)安裝或引導(dǎo)時(shí)自 動(dòng)生成的情況下可能是做不到或不切實(shí)際的。此外,NfSec的預(yù)定值可能太小,這 可能會(huì)導(dǎo)致所生成的ECGA的安全性要低于所需。相反,N*Sec的預(yù)定值可能太 大,這可能導(dǎo)致地址生成過程中不可接受的延遲。
蠻力攻擊的未來成本可由生成ECGA的成本,例如計(jì)算系統(tǒng)生成ECGA的計(jì) 算能力來隱含。例如,輸入的N+Sec (見圖3的Sec 302)可用指示要用于地址生 成的時(shí)間的時(shí)間輸入?yún)?shù)來替換。以此方式,第二散列值的生成可以基于生成該第 二散列值的計(jì)算設(shè)備的速度。時(shí)間輸入?yún)?shù)可由任何適當(dāng)?shù)囊环?,諸如設(shè)備制造商 或操作系統(tǒng)銷售商或由用戶來設(shè)置或初始化(諸如在步驟1102中),并且可被設(shè) 為用戶希望花費(fèi)在ECGA生成上的時(shí)間。例如,如果用戶正在等待達(dá)大約1 CPU 日的計(jì)算或者在該計(jì)算在后臺(tái)緩慢完成的情況下更多的時(shí)間,則時(shí)間輸入可被設(shè)置 在大約l-60秒的范圍內(nèi)。如果ECGA生成是由較快的計(jì)算機(jī)或除針對(duì)該地址的設(shè) 備之外的專用機(jī)器完成的,則計(jì)算時(shí)間可取決于用于ECGA生成的機(jī)器的能力來 設(shè)置。更具體地,輸入到ECGA生成器312的時(shí)間參數(shù)可以參考計(jì)算圖5的第二 散列值500的時(shí)間,而非使輸入N+Sec 302基于參考多個(gè)比特的個(gè)數(shù)。時(shí)間參數(shù)可 以采用任何適當(dāng)?shù)男问胶?或單位,諸如以秒、CPU周期等為單位的整數(shù)或?qū)崝?shù)值。 ECGA生成器可在由該時(shí)間參數(shù)輸入定義的一段時(shí)間內(nèi)計(jì)算多個(gè)第二散列值,并且 可選擇輸出的第二散列值500作為在該段時(shí)間內(nèi)生成的"最安全"散列值。該最安 全散列值可用任何適當(dāng)?shù)姆绞絹泶_定,諸如由在輸入時(shí)間內(nèi)生成的具有最大個(gè)數(shù)的 O位的散列值。如果0位的個(gè)數(shù)被表達(dá)為N*SeC,其中Sec是在該地址的某些位中 編碼的安全性參數(shù),則最安全散列值可通過選擇具有最大個(gè)數(shù)的0位的散列值并將 該個(gè)數(shù)向下舍入到最近的N的整數(shù)倍來確定。最大個(gè)數(shù)的0位可以在散列值的預(yù) 定部分中(諸如預(yù)定個(gè)數(shù)的最左邊位)、可以是完整的所計(jì)算的散列值的最大個(gè)數(shù) 的O位、可以是所計(jì)算的散列值內(nèi)的最大個(gè)數(shù)的連續(xù)O位、最大散列擴(kuò)展等等。
圖12示出了基于時(shí)間而非安全性參數(shù)來生成ECGA的替換方法。參考圖12, 可確定1100公鑰,這類似于圖11的公鑰確定。CGA參數(shù)的確定1202可包括將時(shí) 間參數(shù)初始化為計(jì)算第二散列值所允許的時(shí)間??芍T如由ECGA生成器來計(jì)算 1204公鑰與諸如修飾符等一個(gè)或多個(gè)CGA參數(shù)的組合的散列值。該方法可檢査 1206是否超過了由時(shí)間參數(shù)指定的時(shí)間。ECGA生成器可用任何適當(dāng)?shù)姆绞?,諸 如通過將時(shí)間參數(shù)與注解已經(jīng)過的時(shí)間的時(shí)鐘、計(jì)算一個(gè)或多個(gè)散列值所花費(fèi)的計(jì)算機(jī)周期數(shù)等進(jìn)行比較來確定?;蛘?,對(duì)于散列計(jì)算的終止條件1206可以由從硬 件定時(shí)器接收的外部中斷或從同一機(jī)器上的另一軟件線程接收的信號(hào)來實(shí)現(xiàn)。如果
未超過該時(shí)間參數(shù),則可修改1210用作對(duì)第二散列值的輸入的一個(gè)或多個(gè)CGA
參數(shù),諸如修飾符。例如,可以如上所述用任何適當(dāng)?shù)姆绞絹硇薷脑撔揎椃?,諸如 選擇另一隨機(jī)八位組、遞增該修飾符的前一值等等。經(jīng)修改的參數(shù)可以與公鑰組合
來計(jì)算1204散列值的下一迭代。
如果在散列值生成過程中已超過了時(shí)間參數(shù),則可從由步驟1204計(jì)算的一個(gè) 或多個(gè)生成的散列值中選擇1208第二散列值。在一個(gè)示例中,最安全的所生成的 散列值中的一個(gè)或多個(gè)可被儲(chǔ)存在散列值數(shù)據(jù)存儲(chǔ)中。每一散列值可與用于計(jì)算該 散列值的CGA參數(shù)相關(guān)聯(lián)地儲(chǔ)存。第二散列值可用任何適當(dāng)?shù)姆绞絹磉x擇,諸如 通過選擇在由時(shí)間參數(shù)指定的時(shí)間段內(nèi)生成的"最安全"散列值。例如,在生成 1206每一散列值之后,可對(duì)所選擇部分中0位的個(gè)數(shù)計(jì)數(shù),并將其與先前計(jì)算的 散列值的0位的計(jì)數(shù)進(jìn)行比較??蓛?chǔ)存用于計(jì)算在所選部分中具有最大個(gè)數(shù)的0 位的散列值的CGA參數(shù)。以此方式,可選擇在由時(shí)間參數(shù)定義的時(shí)間結(jié)束時(shí)所儲(chǔ) 存的CGA參數(shù)來輸入到第一散列函數(shù)1112中。所儲(chǔ)存和選擇的值可用任何適當(dāng) 的方式來儲(chǔ)存,諸如儲(chǔ)存在數(shù)據(jù)存儲(chǔ)中,并且可以與儲(chǔ)存在該數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)矩陣 內(nèi)的一個(gè)或多個(gè)其它值相關(guān)聯(lián)。
圖13的流程圖示出了圖12的過程可以如何在RFC 3972中定義的ECGA格式 的特定情況下實(shí)現(xiàn)的一個(gè)示例。與圖5的流程圖相比,其中安全性參數(shù)Sec的值是 對(duì)ECGA生成過程的輸入,圖13中的Sec值是計(jì)算的輸出,并且接收時(shí)間參數(shù)作 為輸入。生成將在超過1308時(shí)間參數(shù)時(shí)結(jié)束。在蠻力搜索循環(huán)(步驟404、 1306、 1308和410)期間,儲(chǔ)存1306匹配找到的最高Sec值的散列值。在超過時(shí)間參數(shù) 并且循環(huán)終止之后,產(chǎn)生找到的最高Sec值的修飾符將用于地址生成的其余部分。
時(shí)間參數(shù)限制了 CGA生成可花費(fèi)的最大時(shí)間。地址生成器可通過在不太可能 在剩余時(shí)間內(nèi)找到比已找到的更強(qiáng)的地址的情況下停止對(duì)新修飾符的搜索來進(jìn)一 步減少地址生成所消耗的平均時(shí)間。即,如果找到了對(duì)應(yīng)于安全性參數(shù)Sec的第二 散列值(即,第二散列值中的NfSec個(gè)O位),則生成器可計(jì)算在時(shí)間參數(shù)限制 內(nèi)的剩余時(shí)間內(nèi)找到具有下一更高安全性參數(shù)Sec+1的第二散列值的概率??蓪⑦@ 一概率與諸如1%、 50%或99%等預(yù)定閾值進(jìn)行比較。如果該概率低于閾值,則生 成器可停止嘗試其它修飾符值,并使用迄今為止找到的最安全的散列值和修飾符 (即,具有安全性參數(shù)Sec的散列值和修飾符)。當(dāng)N^8或N46時(shí),可在該過程的較早期找到產(chǎn)生合理安全的Sec值的CGA參數(shù)值(諸如修飾符值),并且繼續(xù) 蠻力搜索循環(huán)直到超過時(shí)間參數(shù)極不可能找到產(chǎn)生更高的SEc值的CGA參數(shù)值 (諸如修飾符值)。因此,早期停止具有顯著減少花費(fèi)在ECGA生成上的平均時(shí) 間的潛力。
早期停止條件可被評(píng)估1307,作為圖13中的蠻力搜索循環(huán)的一部分。在這一 情況下,對(duì)循環(huán)的終止條件1308不僅可以在超過時(shí)間參數(shù)時(shí)觸發(fā),而且還可以在 早期停止條件為真時(shí)觸發(fā),如圖13所示。圖5和圖13之間的差別示出了 ECGA 生成算法(諸如IETF RFC 3972中定義的)和將時(shí)間參數(shù)實(shí)現(xiàn)應(yīng)用于RFC 3972的 標(biāo)準(zhǔn)CGA地址的本示例之間的差別。
給定找到更安全的CGA參數(shù)值的閾值概率p、用于地址生成的最大時(shí)間 MaxTime、已經(jīng)過的時(shí)間t、迄今為止嘗試的修飾符值的個(gè)數(shù)n、以及已找到的最 大安全性參數(shù)Sec,可按對(duì)數(shù)比例(即,按照位的計(jì)數(shù))來計(jì)算早期停止條件。例 如,生成器可在PMaxTime或PMinTime且N^Sec+l) > log2((Max-t) * n / t)-1og2(ln(l/(l-p)))時(shí)終止蠻力搜索。MinTime是計(jì)算應(yīng)花費(fèi)的最小時(shí)間。適當(dāng)?shù)淖钚?時(shí)間取決于可用于計(jì)算的CPU能力的變化量,并且應(yīng)被設(shè)得足夠大以防止計(jì)算速 度的隨機(jī)變化對(duì)停止條件產(chǎn)生影響?;蛘撸?jì)算散列的速率(n/t)可通過其它手 段來估計(jì),諸如通過在ECGA生成之前測(cè)量CPU的性能。
對(duì)于給定概率閾值p,終止條件可通過計(jì)算最后一項(xiàng)的數(shù)字值并將該項(xiàng)向上或 向下舍入到最近的整數(shù)(即,舍入到滿位)來逼近。例如,如果N^6且p-99。/。, 則以上停止條件可被逼近為t > Max或(t > Min且16*(Sec+l) > RoundDown(log2((Max-t) * n /1)) + 7 )。
早期停止條件可提高僅在有較高概率在剩余時(shí)間內(nèi)找到匹配的情況下繼續(xù)對(duì) Sec+1的搜索的概率。散列長度(N46或N:8)的16或8位遞增是相對(duì)較大的步 幅。因此,生成器通常在早期停止,因?yàn)樗鼘?duì)于一個(gè)安全級(jí)別(Sec)找到了匹配, 并且對(duì)到達(dá)下一級(jí)別(Sec+1)幾乎沒有改變。在大多數(shù)情況下,這將導(dǎo)致地址生 成在所分配的時(shí)間之前很久即終止。然而,在某些機(jī)器上,地址生成將花費(fèi)全部的 所分配的時(shí)間MaxTime。
一旦生成了第二散列值(如圖11中通過安全性參數(shù)所示,以及圖12中通過 時(shí)間參數(shù)所示),可通過確定1112第一散列值來生成可擴(kuò)展的用密碼生成的地址。 可使用任何適當(dāng)?shù)倪^程來基于第二散列值確定第一散列值。
例如,可使用圖4或圖13的步驟412到424來使用第一散列函數(shù)確定第一散列值。例如,可將公鑰與諸如一個(gè)或多個(gè)數(shù)據(jù)字段的合成等一個(gè)或多個(gè)其它參數(shù)(如 圖4和圖5所示)串接,這些其它參數(shù)包括用于生成第二散列值的CGA參數(shù)(諸
如修飾符306、路由前綴308、和/或沖突計(jì)數(shù)310)中的一個(gè)或多個(gè)。修飾符值306 在第二散列計(jì)算的先前步驟中設(shè)置,并且可從合適的數(shù)據(jù)存儲(chǔ)中檢索出。沖突計(jì)數(shù) 310最初被設(shè)為零,并且可在發(fā)生地址沖突時(shí)遞增,如以下進(jìn)一步解釋的。路由前 綴308可以由地址創(chuàng)建器用任何適當(dāng)?shù)姆绞?,諸如從網(wǎng)絡(luò)IOO獲得。例如,路由前 綴可通過在節(jié)點(diǎn)的網(wǎng)絡(luò)鏈路上監(jiān)聽來自本地路由器106的通告來確定。關(guān)于這在 IPv6網(wǎng)絡(luò)上如何工作的細(xì)節(jié),參見IETF RFC 2462的"IPv6 Stateless Address Autoconfiguration" (IPv6無狀態(tài)地址自動(dòng)配置)和IETF RFC 3971的"Secure Neighbor Discovery(SEND)"(安全鄰居發(fā)現(xiàn)(發(fā)送)),這兩篇參考文獻(xiàn)對(duì)于其 描述的所有內(nèi)容整體結(jié)合于此。
組合的公鑰和CGA參數(shù)可被散列化,諸如通過可包括SHA-1算法的第一散 列函數(shù)來進(jìn)行(圖4的步驟412)。結(jié)果是圖5所示的第一散列值502。
可以理解,路由前綴308不是對(duì)上述步驟的第一散列函數(shù)的必要輸入。從對(duì) 第一散列函數(shù)的輸入中省略路由前綴308在第一和第二散列輸入的所有部分都相 同的情況下可導(dǎo)致第一和第二散列值相同。防止兩個(gè)相同的散列結(jié)果的一種解決方 案是對(duì)第一和第二散列函數(shù)使用不同的散列函數(shù)。除此之外或者作為替代,可通過 向第一和/或第二散列值計(jì)算的輸入追加預(yù)定的靜態(tài)第二修飾符(例如,值為1或0 的字節(jié))從SHA-1算法中實(shí)例化兩個(gè)完全不同的散列值。作為另一示例,可通過 將諸如160位SHA-1散列等較長的散列值劃分成兩個(gè)部分來計(jì)算兩個(gè)散列值。以 此方式,該散列值的一部分可用作第一散列值,而該散列值的第二部分可用作第二 散列值。
如圖11和12所示,可基于所計(jì)算的第一散列值的至少一部分來生成1114 ECGA。例如,第一散列值的至少一部分可被用作ECGA的接口標(biāo)識(shí)符(或其它部 分)的至少一部分。在一個(gè)示例中,如圖4和圖13所示,可串接64位路由前綴 308和第一散列值502的最左邊64位來形成128位IPv6地址314。可以理解,其 它協(xié)議可能要求或允許將路由前綴和/或接口標(biāo)識(shí)符部分選為其它適當(dāng)?shù)奈婚L度。
在步驟416,如圖5的示意圖所示,可修改地址以指示該地址是ECGA。例如, 如上所述,地址中的"u"和"g"位(即,由第一散列值形成的用戶接口部分)可 都被設(shè)為l,這可將該地址標(biāo)識(shí)為ECGA。在一個(gè)示例中,可修改該地址以包括散 列指示符。例如,在使用安全性參數(shù)Sec的情況下(如上參考圖ll所述),該安全性參數(shù)或計(jì)數(shù)值可被包括在ECGA的至少一部分中,諸如接口標(biāo)識(shí)符中。在一
個(gè)示例中,接口標(biāo)識(shí)符的最左邊3位可被設(shè)為Sec的值。以此方式,第一散列值的 前三位可用安全性值來替換,或者第一散列值中插入到ECGA的接口標(biāo)識(shí)符部分 的部分可被移回以為在ECGA中插入安全性值而留出空間。如果使用時(shí)間參數(shù)來 生成ECGA,則由允許的計(jì)算時(shí)間和用于ECGA生成的CPU的速度來確定Sec或 其它散列指示符的值。在確定了 Sec值(或其它散列指示符值)之后,可如它作為 對(duì)ECGA生成的輸入完全一樣地處理該值。即,無需將時(shí)間參數(shù)編碼到地址位中, 也無需在使用地址時(shí)傳遞該時(shí)間參數(shù)。相反,將所選的Sec值或其它散列指示符編 碼到地址中或通過其它手段來傳遞。散列指示符可被編碼到接口標(biāo)識(shí)符的任何部分 中,諸如接口標(biāo)識(shí)符的最左邊三位或ECGA的節(jié)點(diǎn)可選擇部分中??梢岳斫?,被 編碼到ECGA的接口標(biāo)識(shí)符中的u位、g位、散列指示符等可替換第一散列值的那 些位置中的那些位,或者替換地可被放置在ECGA和第一散列值中圍繞所編碼的 參數(shù)的位置上。代替將ECGA指示符(例如,u和g位)、散列指示符等編碼到 ECGA地址中, 一個(gè)或多個(gè)指示符可在協(xié)議消息中發(fā)送、由協(xié)議規(guī)范隱含、由通信 上下文隱含、在證書中發(fā)送、在以下進(jìn)一步討論的正TF RFC 3972中定義的CGA 參數(shù)數(shù)據(jù)結(jié)構(gòu)中發(fā)送、等等。
計(jì)算設(shè)備102可檢查圖11和12的步驟1116 (也示為圖4中的步驟418)中 的地址314是否已經(jīng)由網(wǎng)絡(luò)中的另一節(jié)點(diǎn)使用,即,是否存在地址沖突。例如,計(jì) 算設(shè)備102可檢查對(duì)于所生成的ECGA 314是否存在地址沖突。地址沖突可以用任 何適當(dāng)?shù)姆绞絹頇z測(cè)。例如,不同協(xié)議可提供確定沖突的不同方式。在作為用于向 網(wǎng)絡(luò)上的設(shè)備分配動(dòng)態(tài)IP地址的協(xié)議的動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)中,服務(wù)器 104跟蹤IP地址以及它所租用的地址之間的沖突。對(duì)于IPv6,該機(jī)制被稱為"重 復(fù)地址檢測(cè)"。
如果使用ECGA作為其地址的設(shè)備移至另一網(wǎng)絡(luò),則可修改1118用于計(jì)算第 一和第二散列值中的一個(gè)或多個(gè)的ECGA參數(shù),并且可通過返回到計(jì)算1104第二 散列值或返回到計(jì)算1112第一散列值來基于一個(gè)或多個(gè)經(jīng)修改的ECGA參數(shù)計(jì)算 新ECGA。 CGA參數(shù)可用任何適當(dāng)?shù)姆绞絹硇薷?118。例如,可遞增或重新計(jì)算 修飾符、可將沖突計(jì)數(shù)復(fù)位為零或?qū)⑵溥f增、等等。
在一個(gè)示例中,ECGA生成中允許的沖突計(jì)數(shù)310值可被設(shè)定上限。例如, 如圖4和圖13所示,可在步驟420中遞增己編碼的CGA參數(shù)結(jié)構(gòu)304。可將沖突 計(jì)數(shù)與諸如3等預(yù)定的最大允許沖突數(shù)進(jìn)行比較422。如果存在預(yù)定數(shù)目的沖突(諸如3),則該過程可以終止。如果該過程終止,則可在步驟424處報(bào)告出錯(cuò)。如果 該過程沒有終止,則地址生成過程能以用遞增的沖突計(jì)數(shù)值來計(jì)算新的第一散列值 412來重新開始。
如果沒有檢測(cè)到地址沖突,則該過程可如圖11和12所示成功終止1120。在 成功終止中,在圖4所示的一個(gè)示例中,通過串接修飾符、路由前綴、沖突計(jì)數(shù)、 公鑰(可被儲(chǔ)存在經(jīng)DER編碼的ASN.l SubjectPublicKey數(shù)據(jù)項(xiàng)中)以及可能的 擴(kuò)展字段來創(chuàng)建IETF RFC 3972中定義的CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)。
可使用公鑰300來創(chuàng)建自簽名證書316 (例如,X.509 v3證書或任何其它適當(dāng) 的證書)并簽署。證書可以采用任何適當(dāng)?shù)男问剑⑶铱砂ㄈ魏芜m當(dāng)?shù)膮?shù)以協(xié) 助驗(yàn)證ECGA。例如,證書可使用公鑰(可被儲(chǔ)存在SubjectPublicKey數(shù)據(jù)項(xiàng)中) 來創(chuàng)建。證書可包括擴(kuò)展(諸如extnValue數(shù)據(jù)項(xiàng)),它編碼了生成第一散列值和 第二散列值中的任一個(gè)或兩者時(shí)使用的CGA參數(shù)中的一個(gè)或多個(gè)。包括在證書或 經(jīng)優(yōu)化的參數(shù)格式中的CGA參數(shù)除了在ECGA中包括第二散列指示符之外或作為 其替代,可包括散列指示符。
在某些情況下,例如,在使用經(jīng)優(yōu)化的參數(shù)格式而非證書的協(xié)議中(例如,IETF RFC 3972中定義的CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)),創(chuàng)建和簽署426可被跳過,并且可改為 創(chuàng)建經(jīng)優(yōu)化的參數(shù)格式。證書和/或經(jīng)優(yōu)化的參數(shù)格式可用圖11和12中任一個(gè)或 兩者中所示的方法生成。
如上所述,第一散列值502可創(chuàng)建地址314中的接口標(biāo)識(shí)符504 (可具有64 位)的一部分(諸如59位)。第二散列函數(shù)增加了蠻力攻擊,即攻擊者改變散列 輸入來將其自己的公鑰與別人的地址進(jìn)行匹配的成本。除了將59個(gè)地址位與第一
散列值進(jìn)行匹配之外,攻擊者必須將預(yù)定個(gè)數(shù)的O位(例如,最左邊的0位)與第 二散列值進(jìn)行比較,如由上述可包括在ECGA中的安全性參數(shù)和/或零計(jì)數(shù)參數(shù)所 指示的。如上所述,預(yù)定個(gè)數(shù)的0位可以是N+Sec或使用時(shí)間參數(shù)選擇的第二散 列值中的0位的個(gè)數(shù)。稱為散列擴(kuò)展的這一技術(shù)有效地將散列長度增加到早先的提 議中的64位邊界之外。在ls^Sec示例中,所得的安全級(jí)別等于59+N"ec位的散 列長度。
在某些情況下,如果地址的路由前綴308改變,但是地址所有者的公鑰300 不變,則可使用修飾符306的舊值。以此方式,如果在計(jì)算第二散列值500時(shí)沒有 包括路由前綴308,則可以無需重復(fù)圖4的步驟404到410 (或步驟1104-1108) 的蠻力搜索??蓴U(kuò)展的密碼地址的認(rèn)證
對(duì)ECGA的認(rèn)證可如通過引用結(jié)合于此的IETF RFC 3972中定義地進(jìn)行。不 論ECGA生成過程是取確定第二散列值中的0位的個(gè)數(shù)的Sec值還是確定用于 ECGA生成的時(shí)間的時(shí)間參數(shù)作為輸入,該認(rèn)證過程都是相同的。
通過基于其公鑰300來構(gòu)造計(jì)算設(shè)備102的唯一 ECGA 314,創(chuàng)建了計(jì)算設(shè)備 102的ECGA 314與其公鑰300之間的關(guān)聯(lián)。該關(guān)聯(lián)允許圖6中的消息接收者106 通過驗(yàn)證該管理以及消息上的簽名來將計(jì)算設(shè)備102認(rèn)證為消息發(fā)送者。為了將消 息認(rèn)證為來自特定ECGA地址314,作為地址所有者,計(jì)算設(shè)備102可用其公鑰 300來簽署消息。如圖6所示,計(jì)算設(shè)備102然后向計(jì)算設(shè)備106發(fā)送分組600, 該分組可包括消息604、簽名606、以及CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)316。接收計(jì)算設(shè)備可 諸如通過使用發(fā)送者的公鑰、用于生成第一和/或第二散列值的一個(gè)或多個(gè)CGA參 數(shù)、和/或諸如第二散列值的預(yù)定部分中的O位的個(gè)數(shù)等散列指示符來驗(yàn)證ECGA。
現(xiàn)在參考圖6、 7、 8和9,計(jì)算設(shè)備102向接收者計(jì)算設(shè)備106發(fā)送消息600, 接收者計(jì)算設(shè)備106可以與圖2所示的計(jì)算設(shè)備102類似或不同地配置。消息600 可包含任何適當(dāng)?shù)膬?nèi)容,諸如標(biāo)準(zhǔn)和/或非標(biāo)準(zhǔn)IP首部608和消息正文610中的一 個(gè)或多個(gè),以及其它內(nèi)容。IP首部608可包括源地址314、目的地地址602、以及 任何其它適當(dāng)?shù)氖撞啃畔?12中的一個(gè)或多個(gè)。消息600的正文610可以包括消息 604、 CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)、諸如在地址生成過程期間創(chuàng)建的數(shù)字簽名606、以及任 何其它適當(dāng)?shù)男畔⒅械囊粋€(gè)或多個(gè)。消息內(nèi)容數(shù)據(jù)604可以是明文(即,未散列或 加密)。數(shù)字簽名606可以從消息中包括的數(shù)據(jù)來生成。
當(dāng)計(jì)算設(shè)備106接收到經(jīng)認(rèn)證的消息600時(shí),接收計(jì)算設(shè)備106可采用驗(yàn)證 器700 (圖7)來試圖認(rèn)證消息發(fā)送者的身份。圖7中的CGA驗(yàn)證器700可取來 自接收的消息600的一個(gè)或多個(gè)輸入來驗(yàn)證發(fā)送者。例如,ECGA驗(yàn)證器可取發(fā)送 者地址314和CGA參數(shù)316。
驗(yàn)證器700可輸出消息600可信的指示702。如果驗(yàn)證器700提供消息可信的 指示702,則驗(yàn)證器知道CGA參數(shù)316包含地址所有者102的公鑰300。驗(yàn)證器 700然后可使用公鑰300來認(rèn)證來自地址所有者102的經(jīng)簽署的消息600,或與地 址所有者102交換會(huì)話密鑰。如果發(fā)送者不能被驗(yàn)證,則驗(yàn)證器可輸出消息不能被 認(rèn)證的指示704。
圖8和9示出了可由驗(yàn)證器700執(zhí)行的示例驗(yàn)證過程。最初,地址314可被識(shí)別為ECGA。例如,地址中的"u"和"g"位可在步驟800處與1進(jìn)行比較。如 果任一個(gè)位為0,則地址314是非CGA地址,并且驗(yàn)證可能無法進(jìn)行或者是不必 要的834?;蛘撸墒褂媚骋黄渌鼨C(jī)制來指示該地址是ECGA,或者這可從上下文 或其它協(xié)議消息中推導(dǎo)。例如,某些協(xié)議可能要求某些地址是ECGA。繼續(xù)步驟 804,可從ECGA的預(yù)定部分中讀取安全性參數(shù)Sec 302或第二散列值中0位的個(gè) 數(shù)。例如,可從地址314的接口標(biāo)識(shí)符的最左邊三位讀取安全性參數(shù)或0位個(gè)數(shù)。 接著,在步驟806,確定公鑰300的值。例如,公鑰可從授權(quán)提供者檢索、從CGA 參數(shù)316檢索、或者公鑰可用任何適當(dāng)?shù)姆绞絹頇z索。公鑰的值可以是 SubjectPublicKeylnfo (主題公鑰信息)數(shù)據(jù)值。
在步驟808處,可找到并解碼CGA參數(shù)(諸如CGA參數(shù)數(shù)據(jù)結(jié)構(gòu))。例如, CGA參數(shù)可隨經(jīng)簽署的消息從地址所有者接收,或者它可用某種其它方式,諸如 經(jīng)由在線數(shù)據(jù)庫傳送。可檢查沖突計(jì)數(shù)310的值以確定它是否小于預(yù)定的最大沖突 數(shù),如上所述該最大沖突數(shù)可以為3。由此,在一個(gè)示例中,可檢查沖突計(jì)數(shù)的值 以確定它是否為O、 l或2。如果不是,則驗(yàn)證在步驟834處失敗。接著,在步驟 812處,可檢查可被儲(chǔ)存在CGA參數(shù)結(jié)構(gòu)304 316中的路由前綴308的數(shù)據(jù)的值 以確定它是否等于消息600中的地址314的路由前綴(即,取決于協(xié)議,為最左邊 的64位或其它個(gè)數(shù)的位)。如果不同,則驗(yàn)證在步驟834處失敗。如果驗(yàn)證失敗, 則可采取任何適當(dāng)?shù)捻憫?yīng)動(dòng)作,諸如驗(yàn)證器700可發(fā)出消息600 (圖6)的認(rèn)證驗(yàn) 證失敗的指示704 (圖7)。
在步驟816處,可組合公鑰300和CGA參數(shù)(可被儲(chǔ)存在CGA參數(shù)結(jié)構(gòu)304 中)的一個(gè)或多個(gè)其它數(shù)據(jù)值,諸如串接。然后可對(duì)該組合執(zhí)行適當(dāng)?shù)牡谝簧⒘兴?法(例如,SHA-1算法)。結(jié)果是用于第一散列值的值。
在步驟818處,可將所計(jì)算的第一散列值的預(yù)定部分(例如,最左邊64位) 與地址314的接口標(biāo)識(shí)符504 (即,地址的最右邊64位)進(jìn)行比較??珊雎灾T如 "u"和"g"位等預(yù)定位設(shè)置以及儲(chǔ)存安全性參數(shù)/時(shí)間參數(shù)的預(yù)定位(例如,接 口標(biāo)識(shí)符的最左邊三位)中的差別。如果該64位值不同(除預(yù)定位值以外),則 驗(yàn)證失敗834,并且作為響應(yīng),驗(yàn)證器700可發(fā)出ECGA驗(yàn)證過程失敗的指示704。
如果ECGA的接口標(biāo)識(shí)符匹配所計(jì)算的第一散列值的所選部分,則可組合822 公鑰300和修飾符306的數(shù)據(jù)值。例如,可串接公鑰和來自CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)的 修飾符306。對(duì)于另一示例,可將CGA參數(shù)中的路由前綴和沖突計(jì)數(shù)設(shè)為0。然 后對(duì)該組合執(zhí)行第二散列函數(shù)(例如,SHA-1算法)。結(jié)果是用于第二散列值的值。在步驟824處,可將第二散列值的預(yù)定部分中的位(例如,最左邊的幾位)與
0或另一預(yù)定值進(jìn)行比較824。在一個(gè)示例中,可將預(yù)定部分中的O位的個(gè)數(shù)與值 N+Sec進(jìn)行比較,其中安全性參數(shù)Sec可從ECGA中提取。如果N+sec位中的任 一個(gè)為非零,則驗(yàn)證失敗834。作為響應(yīng),驗(yàn)證器700可發(fā)出指示704,該指示說 明認(rèn)證過程已失敗。如果Sec等于0,則認(rèn)證或驗(yàn)證從不會(huì)從步驟824失敗,因?yàn)?要比較的第二散列值的最左邊位的個(gè)數(shù)為O (即,16*0=0)。
如果地址認(rèn)證在步驟832處成功,則驗(yàn)證器700知道公鑰300屬于地址314 的所有者。計(jì)算設(shè)備的驗(yàn)證器700將地址314認(rèn)證為發(fā)送分組600的計(jì)算設(shè)備102 的ECGA。接收計(jì)算設(shè)備106然后可自由地接受真實(shí)的消息內(nèi)容數(shù)據(jù)604并作出相 應(yīng)的動(dòng)作。
參考圖10,將認(rèn)證過程的一個(gè)示例性完整生命周期示為消息序列圖。該過程 以地址所有者(即,計(jì)算設(shè)備102)向地址創(chuàng)建器(即,生成器312)提供輸入開 始。輸入可包括公鑰、安全性值和/或時(shí)間參數(shù)、值為O的初始沖突計(jì)數(shù)、和/或適 當(dāng)?shù)穆酚汕熬Y。接收該輸入的地址創(chuàng)建器可基于該輸入和公鑰來生成遵循協(xié)議的 ECGA。地址生成器可將計(jì)算的ECGA和CGA參數(shù)返回給地址所有者。地址所有 者可確定對(duì)所生成的ECGA是否發(fā)生了沖突。如果是,則地址所有者可遞增沖突 計(jì)數(shù),并向地址創(chuàng)建器請(qǐng)求新的ECGA。該請(qǐng)求可包含一個(gè)或多個(gè)輸入?yún)?shù),禾口/ 或地址創(chuàng)建器可將該輸入?yún)?shù)儲(chǔ)存一段時(shí)間直到?jīng)]有檢測(cè)到?jīng)_突。如果沒有檢測(cè)到 沖突,則地址所有者可開始使用該地址來進(jìn)行通信。然后可使用ECGA來通過網(wǎng) 絡(luò)路由消息。例如,地址所有者可創(chuàng)建消息,并可用其公鑰來簽署該消息。消息可 被發(fā)送到訪問驗(yàn)證器來認(rèn)證該消息的接收者。發(fā)送的消息可包含發(fā)送者的網(wǎng)絡(luò)地 址,例如ECGA、 CGA參數(shù)、消息以及消息的簽名。驗(yàn)證器可驗(yàn)證該消息,例如, 驗(yàn)證ECGA對(duì)應(yīng)于CGA參數(shù)并且簽名是可驗(yàn)證的,等等。
盡管在計(jì)算設(shè)備生成要傳輸?shù)浇邮沼?jì)算設(shè)備106的分組600時(shí)使用大于0的 用于安全性值302和/或時(shí)間參數(shù)的值是可任選的,但地址驗(yàn)證器700可支持所有 的安全性參數(shù)值。更具體地,認(rèn)證過程可能需要恒定量的計(jì)算和/或可能相對(duì)較快, 而不論安全性或時(shí)間參數(shù)的值如何。此外,如果驗(yàn)證器不支持較高的安全性值,則 地址所有者使用ECGA的動(dòng)機(jī)可能較小。
CGA參數(shù)數(shù)據(jù)結(jié)構(gòu)中的修飾符306和沖突計(jì)數(shù)310的值在驗(yàn)證器700執(zhí)行的 認(rèn)證過程中可被忽略,例外是在步驟810處檢查該沖突計(jì)數(shù)是否在允許范圍內(nèi)以及 在步驟816和822處將兩個(gè)值包括在適當(dāng)?shù)纳⒘休斎胫?。?yàn)證方可以是與消息創(chuàng)建方相同的實(shí)體。例如,計(jì)算設(shè)備102創(chuàng)建消息600, 并將其本地或遠(yuǎn)程地儲(chǔ)存在圖2的存儲(chǔ)設(shè)備206或208之一中。稍后,計(jì)算設(shè)備檢 索消息600并采用可以為本地的驗(yàn)證器700來認(rèn)證檢索到的消息。實(shí)際上,本發(fā)明 可在其中檢索消息并需要檢查其完整性來提供對(duì)進(jìn)程安全的某一增強(qiáng)的置信度級(jí) 別的任何情形中。
在使用自簽名證書而非經(jīng)優(yōu)化的參數(shù)格式(例如,IETF RFC 3972中定義的 CGA參數(shù)數(shù)據(jù)結(jié)構(gòu))的協(xié)議中,可增加簽名驗(yàn)證。為簡(jiǎn)明起見,建議使用證書316 的所有協(xié)議都需要驗(yàn)證其簽名和有效性時(shí)段。
ECGA的其它實(shí)施例
基于ECGA的認(rèn)證因性能和成本可能是有吸引力的。例如,ECGA.可在沒有 適當(dāng)?shù)腜KI證書可用時(shí),或者在聯(lián)系在線授權(quán)機(jī)構(gòu)具有過高的性能損失時(shí)被用作 后備。在許多情況下,在將基于ECGA的認(rèn)證與其它同樣強(qiáng)健的認(rèn)證方法相結(jié)合 時(shí)可能沒有問題或者減少了問題。
單邊認(rèn)證的應(yīng)用
如上所述,用于ECGA的認(rèn)證機(jī)制將經(jīng)認(rèn)證的消息與其創(chuàng)建者相關(guān)聯(lián)。所有 權(quán)的ECGA認(rèn)證可適用于除以上描述的之外的應(yīng)用。對(duì)基于ECGA的認(rèn)證的可能 應(yīng)用包括安全鄰居發(fā)現(xiàn)以及重復(fù)地址(沖突)檢測(cè)中的地址所有權(quán)證明、移動(dòng)HV6 綁定更新認(rèn)證、機(jī)會(huì)主義IP安全(IPSec)加密和認(rèn)證的密鑰交換等等。
協(xié)議(諸如IPv6)地址自動(dòng)配置、重復(fù)地址(沖突)檢測(cè)(DAD)、以及鄰 居發(fā)現(xiàn)(ND)可能受到服務(wù)拒絕攻擊的威脅。協(xié)議的一種易受攻擊性是不清楚誰 擁有IP地址以及誰被授權(quán)來控制IP地址和鏈路層地址之間的映射。例如,在無狀 態(tài)自動(dòng)配置中,IPv6節(jié)點(diǎn)選取它所處的網(wǎng)絡(luò)中的一任意IPv6地址,并發(fā)送一廣播 消息來檢查有沒有別的任何人已經(jīng)使用同一地址。攻擊者可通過對(duì)所有重復(fù)地址檢 測(cè)消息進(jìn)行響應(yīng)并聲稱正在使用目標(biāo)節(jié)點(diǎn)所選取的任何地址來阻止其它節(jié)點(diǎn)獲得 IP地址。ECGA的實(shí)現(xiàn)可減少這一難題,這表現(xiàn)在可使用消息地址和相關(guān)聯(lián)的公 鑰來認(rèn)證重復(fù)地址檢測(cè)消息。
鄰居發(fā)現(xiàn)是ARP的IPv6等效物,即用于將IP地址映射到鏈路層地址的協(xié)議。 將IP地址映射到鏈路層地址的一種易受攻擊性是攻擊者可通過欺騙鄰居發(fā)現(xiàn)消息 來將分組重新定位到遠(yuǎn)離其直接下一中繼段(hop)目的地之處。ECGA地址可減少或阻止上述攻擊。在許多情況下,ECGA地址可能特別適用于保護(hù)這些協(xié)議的安
全,因?yàn)槟繕?biāo)是認(rèn)證IP地址而非某一較高級(jí)標(biāo)識(shí)符。節(jié)點(diǎn)可創(chuàng)建新的ECGA地址, 然后通過簽署DAD消息來證明其對(duì)該地址的所有權(quán)。類似地,ND消息上的簽名 可阻止或減少欺騙攻擊。在兩種協(xié)議中,簽署各個(gè)IP分組。由此,經(jīng)優(yōu)化的參數(shù) 格式對(duì)于這些應(yīng)用可以是適當(dāng)?shù)摹?br>
在移動(dòng)IPv6草稿規(guī)范的示例中,移動(dòng)節(jié)點(diǎn)通過發(fā)送必須被認(rèn)證以防止服務(wù)拒 絕攻擊的綁定更新來將其當(dāng)前位置通知給其對(duì)應(yīng)方。當(dāng)前的移動(dòng)IPv6草稿使用了 基于某些網(wǎng)絡(luò)路由器可能安全的假設(shè)的相對(duì)較弱的非密碼認(rèn)證方法。一種替代方案 可以是使用基于ECGA的公鑰認(rèn)證。ECGA地址可能特別適用于這一目的,因?yàn)?移動(dòng)IP使用了 IP地址作為唯一節(jié)點(diǎn)標(biāo)識(shí)符?;贓CGA的認(rèn)證還可減少協(xié)議消息 數(shù)。由此,可以存在將基于ECGA的認(rèn)證指定為對(duì)移動(dòng)IPv6的可任選優(yōu)化的情況。 如果連接的兩個(gè)端節(jié)點(diǎn)都具有ECGA地址,則端節(jié)點(diǎn)可在密鑰交換中使用ECGA 并創(chuàng)建IPSec安全關(guān)聯(lián)來進(jìn)行加密和數(shù)據(jù)認(rèn)證。這種認(rèn)證可"機(jī)會(huì)主義地"完成, 即,只要兩個(gè)端節(jié)點(diǎn)都支持ECGA就可完成。機(jī)會(huì)主義保護(hù)的好處可包括阻止IP 源欺騙攻擊、針對(duì)被動(dòng)竊聽的私密性、以及減少網(wǎng)絡(luò)中介對(duì)IP分組的過濾中的一 個(gè)或多個(gè)。在許多情況下,發(fā)送和接收節(jié)點(diǎn)認(rèn)證彼此的IPv6地址,而非主機(jī)名或 用戶。在這一情況下,基于ECGA的認(rèn)證可在攻擊者干擾域名到IP地址的映射的 情況下阻止IP源地址欺騙而非DNS欺騙。在將來,安全DNS可給出IP地址的真 實(shí)性的合理保證。安全DNS和ECGA可一起來提供按照其域名對(duì)主機(jī)的強(qiáng)有力的 認(rèn)證。還可以有用于在DNS中儲(chǔ)存PKI證書或公鑰的提議。將ECGA與安全DNS 相結(jié)合的一個(gè)優(yōu)點(diǎn)在于名稱服務(wù)無需儲(chǔ)存公鑰。它只需提供主機(jī)名和地址之間的可 靠綁定,這是其原始功能。
關(guān)于進(jìn)一步的信息,參見托馬斯 奧拉(Tuomas Aura)于2003年1月提交 公布的"Cryptographically Generated Address(CGA)"(用密碼生成的地址),該文 獻(xiàn)對(duì)其所描述的全部內(nèi)容整體結(jié)合于此。
非密碼尋址
如上所述,可在網(wǎng)絡(luò)地址本身內(nèi)指示CGA或ECGA,諸如通過將IPv6接口 標(biāo)識(shí)符的u和g位都設(shè)為1。同樣,包含不等于1的u或g位的網(wǎng)絡(luò)地址不是CGA 或ECGA。以此方式,接收節(jié)點(diǎn)可將網(wǎng)絡(luò)地址標(biāo)識(shí)為遵循或不遵循CGA或ECGA 認(rèn)證協(xié)議,這可意味著與該地址相關(guān)聯(lián)的發(fā)送節(jié)點(diǎn)遵循或不遵循CGA或ECGA認(rèn)
26證協(xié)議。
將地址及其相關(guān)聯(lián)的節(jié)點(diǎn)正確標(biāo)識(shí)為不遵循CGA或ECGA可允許在對(duì)某些節(jié) 點(diǎn)可能需要或允許CGA或ECGA認(rèn)證的同一網(wǎng)絡(luò)或協(xié)議上的消息話務(wù)中使用非 CGA或非ECGA認(rèn)證方法。以此方式,下級(jí)節(jié)點(diǎn)可使用CGA或ECGA網(wǎng)絡(luò),同 時(shí)仍限制攻擊節(jié)點(diǎn)呈現(xiàn)CGA或ECGA作為非密碼地址的能力。
將地址標(biāo)識(shí)為CGA、 ECGA、非密碼地址或其它類型的地址可用于對(duì)消息區(qū) 分優(yōu)先級(jí)以供處理。例如,其中發(fā)送者地址是真實(shí)CGA或ECGA的消息可被分級(jí) 在對(duì)其它消息和/或消息類型的處理之上。具有真實(shí)的非密碼地址的消息可具有低 于CGA或ECGA的優(yōu)先級(jí),但是可具有高于不包含發(fā)送者地址或不具有經(jīng)認(rèn)證的 CGA、 ECGA或非密碼地址的消息的處理優(yōu)先級(jí)。可以理解,可使用基于發(fā)送者 地址類型的消息處理和/或認(rèn)證的任何其它優(yōu)先級(jí)區(qū)分。
可使用任何適當(dāng)?shù)姆椒▉順?biāo)識(shí)非CGA或非ECGA (以下稱為非密碼地址), 同時(shí)降低攻擊節(jié)點(diǎn)欺騙下級(jí)節(jié)點(diǎn)來獲得對(duì)可能較不安全的認(rèn)證方法的訪問的能力。 例如,可生成非密碼地址的地址位,使得非密碼地址不能是或可能不是對(duì)公鑰的散 列的編碼。以此方式,接收節(jié)點(diǎn)可正確地標(biāo)識(shí)發(fā)送節(jié)點(diǎn)的能力。
在一個(gè)示例中,可生成非密碼地址,使得非密碼地址的一個(gè)或多個(gè)節(jié)點(diǎn)可選 擇位為常數(shù),或用對(duì)等節(jié)點(diǎn)已知的預(yù)定值來填充。網(wǎng)絡(luò)地址的節(jié)點(diǎn)可選擇位可包括 不被協(xié)議托管或控制的網(wǎng)絡(luò)地址的任何位。例如,在IPv6中,接口標(biāo)識(shí)符是節(jié)點(diǎn) 可選擇的,例外是標(biāo)識(shí)該地址的特征的某些托管位,諸如上述的u和g位。由此, IPv6地址的節(jié)點(diǎn)可選擇位包括節(jié)點(diǎn)標(biāo)識(shí)符中不包括諸如u和g位等位的那些位。 在網(wǎng)絡(luò)地址的節(jié)點(diǎn)可選擇部分的至少一部分內(nèi)設(shè)置的預(yù)定值可以是任何適當(dāng)?shù)闹担?諸如一系列0、或任何其它適當(dāng)?shù)闹怠T谝粋€(gè)示例中,如圖14的示例地址1400中 所示,IPv6非密碼地址的接口標(biāo)識(shí)符1404的32-48個(gè)前導(dǎo)位1402可被設(shè)為0,然 而可以理解,可預(yù)設(shè)不可選擇位的任何合適部分以指示非密碼地址。地址的節(jié)點(diǎn)可 選擇部分的預(yù)定位置中諸如一系列0等預(yù)定值可減小接口標(biāo)識(shí)符匹配公鑰的散列 的可能性。
圖15示出了生成如圖14所示的非密碼地址的示例方法1500。地址所有者或 授權(quán)的第三方可通過根據(jù)支配協(xié)議來設(shè)置1502網(wǎng)絡(luò)地址的不可選擇部分來生成非 密碼地址。例如,網(wǎng)絡(luò)地址的非選擇部分可包括路由前綴和/或指示網(wǎng)絡(luò)地址的特 征、地址所有者、消息類型(例如,u和g位)等的其它位。網(wǎng)絡(luò)地址的節(jié)點(diǎn)可選 擇位的預(yù)定部分可被設(shè)置1504為預(yù)定值。例如,如上所述,節(jié)點(diǎn)標(biāo)識(shí)符的38-48個(gè)前導(dǎo)位可被設(shè)為0。節(jié)點(diǎn)可選擇位的其余部分可根據(jù)地址生成技術(shù)來設(shè)置1406, 這些技術(shù)包括標(biāo)識(shí)沖突、子網(wǎng)標(biāo)識(shí)等等。地址所有者然后可在向網(wǎng)絡(luò)的接收節(jié)點(diǎn)發(fā)送消息時(shí)使用非密碼地址來標(biāo)識(shí)其自身。圖16示出了認(rèn)證標(biāo)識(shí)具有非密碼地址的發(fā)送節(jié)點(diǎn)的消息的示例方法1600。 接收節(jié)點(diǎn)可接收1602消息,并提取1604發(fā)送節(jié)點(diǎn)的網(wǎng)絡(luò)地址??蓪⒕W(wǎng)絡(luò)地址的預(yù) 定部分與指示非密碼地址的預(yù)定值進(jìn)行比較1606。該預(yù)定值可以用任何適當(dāng)?shù)姆?式來檢索,諸如通過對(duì)已鑒定的授權(quán)機(jī)構(gòu)或地址分配授權(quán)機(jī)構(gòu)的請(qǐng)求、從存儲(chǔ)器中 檢索、通過對(duì)發(fā)送節(jié)點(diǎn)的請(qǐng)求等等。如果網(wǎng)絡(luò)地址的預(yù)定部分等于該預(yù)定值,則接 收節(jié)點(diǎn)可確定發(fā)送地址是非密碼地址,并且采取1608適當(dāng)?shù)膭?dòng)作,該動(dòng)作可以是 在不認(rèn)證的情況下接受消息、啟動(dòng)下級(jí)設(shè)備可接受的認(rèn)證方法等等。如果網(wǎng)絡(luò)地址 的預(yù)定部分沒有指示非密碼地址,則接收節(jié)點(diǎn)最初可確定發(fā)送地址可以是CGA或 非CGA,并啟動(dòng)1610適當(dāng)?shù)腃GA或ECGA認(rèn)證方法,如上述方法之一。在另一示例中,可通過計(jì)算除地址所有者的公鑰之外的值(以下稱為非密碼 值)的散列來生成非密碼地址。要散列化的非密碼值可以是不會(huì)與公鑰混淆的任何 適當(dāng)?shù)闹担T如隨機(jī)數(shù)、鏈路層地址、將節(jié)點(diǎn)標(biāo)識(shí)為不遵循CGA或不遵循ECGA 的串等等。對(duì)于由RFC-3972支配的CGA,公鑰具有特定的ASN.l編碼,可在選 擇非密碼值避免它。參考圖17,非密碼地址1700可包括路由前綴308和接口標(biāo)識(shí)符1704。接口 標(biāo)識(shí)符可包括不是節(jié)點(diǎn)可選擇的一個(gè)或多個(gè)位,諸如u和g位1706、 1708。網(wǎng)絡(luò) 地址的節(jié)點(diǎn)可選擇部分的至少一部分(例如,接口標(biāo)識(shí)符1704的部分1710和部分 1712,可以排除置位的位1706、 1708)可包含非密碼值的散列。節(jié)點(diǎn)可選擇部分 中包含密碼值的散列的部分可以是網(wǎng)絡(luò)地址中包含根據(jù)CGA或ECGA協(xié)議的公鑰 的散列的相同部分。圖18示出了生成諸如圖17所示的非密碼地址的示例方法1800。地址所有者 或授權(quán)的第三方可生成非密碼地址??筛鶕?jù)支配協(xié)議來設(shè)置1802網(wǎng)絡(luò)地址的不可 選擇部分。例如,網(wǎng)絡(luò)地址的不可選擇部分可包括路由前綴和/或指示網(wǎng)絡(luò)地址的 特征、地址所有者、消息類型(例如,u和g位)等的其它位??捎萌魏畏绞絹泶_ 定1804非密碼值,諸如使用隨機(jī)數(shù)生成器、預(yù)定值、鏈路層地址等??墒褂萌魏?適當(dāng)?shù)纳⒘泻瘮?shù)來散列化1806非密碼值,該散列函數(shù)可以與用于生成CGA或 ECGA的第一或第二散列函數(shù)相同或不同。可將網(wǎng)絡(luò)地址的節(jié)點(diǎn)可選擇位的預(yù)定部 分設(shè)置1808為非密碼值的散列的至少一部分。例如,可將接口標(biāo)識(shí)符的59個(gè)預(yù)定位或最右邊的40位(除不可選擇位之外)設(shè)為包括非密碼值的散列的最左邊的值。 節(jié)點(diǎn)可選擇位的其余部分(諸如為安全性參數(shù)、散列指示符等保留的位)可根據(jù)地 址生成技術(shù)來設(shè)置1810,這些技術(shù)可包括標(biāo)識(shí)沖突、子網(wǎng)標(biāo)識(shí)等。用于生成非密 碼地址的非密碼值可被保存在適當(dāng)?shù)臄?shù)據(jù)存儲(chǔ)中。地址所有者然后可在向網(wǎng)絡(luò)的接收節(jié)點(diǎn)發(fā)送消息時(shí)使用非密碼地址來標(biāo)識(shí)其自身。圖19示出了認(rèn)證由諸如圖16所示的非密碼地址所標(biāo)識(shí)的發(fā)送節(jié)點(diǎn)發(fā)送的消 息的示例方法1900。發(fā)送節(jié)點(diǎn)可生成1902消息。消息可包括非密碼地址作為發(fā)送 節(jié)點(diǎn)標(biāo)識(shí)符。消息還可包含用于生成發(fā)送節(jié)點(diǎn)的地址的非密碼值。非密碼值可被包 括在消息中的任何適當(dāng)位置中和/或用任何適當(dāng)?shù)姆绞桨ㄔ谙⒅?。例如,非?碼值可被包括在消息正文的證書中,非密碼值可被包括在消息的首部和/或正文中、 等等?;蛘?,非密碼值可從消息中省略。例如,接收節(jié)點(diǎn)可事先知道非密碼值也可從數(shù)據(jù)存儲(chǔ)中檢索該非密碼值,接收節(jié)點(diǎn)可從除消息之外的其它來源檢索該非密碼 值,等等。接收節(jié)點(diǎn)可接收1904消息并提取1906發(fā)送節(jié)點(diǎn)的網(wǎng)絡(luò)地址。接收節(jié)點(diǎn)可用 任何適當(dāng)?shù)姆绞絹泶_定1908非密碼值。例如,接收節(jié)點(diǎn)可從消息中提取非密碼值、 可從存儲(chǔ)器中檢索非密碼值、可請(qǐng)求發(fā)送節(jié)點(diǎn)或其它節(jié)點(diǎn)在后續(xù)消息中發(fā)送非密碼 值、可從發(fā)送節(jié)點(diǎn)接收指示非密碼值的單獨(dú)消息、等等。接收節(jié)點(diǎn)可散列化1910 該非密碼值??蓪⒕W(wǎng)絡(luò)地址的預(yù)定部分與所計(jì)算的非密碼值的散列的至少一部分進(jìn) 行比較1912。如果網(wǎng)絡(luò)地址的預(yù)定部分等于預(yù)定值的該部分,則接收節(jié)點(diǎn)可確定 發(fā)送者的地址是非密碼地址,并可采取1914適當(dāng)?shù)膭?dòng)作。適當(dāng)?shù)膭?dòng)作可包括諸如 在不認(rèn)證的情況下接受消息、啟動(dòng)下級(jí)設(shè)備可接受的認(rèn)證方法等任何適當(dāng)?shù)膭?dòng)作。 如果網(wǎng)絡(luò)節(jié)點(diǎn)的預(yù)定部分沒有指示非密碼地址,則接收節(jié)點(diǎn)可確定發(fā)送地址可以是 CGA或ECGA,并啟動(dòng)1816適當(dāng)?shù)腃GA或ECGA認(rèn)證方法,諸如以上描述的方 法之一。可以理解,上述對(duì)CGA的擴(kuò)展可以在生成并認(rèn)證包括非密碼值的散列的 非密碼地址時(shí)實(shí)現(xiàn)。非密碼值的至少一部分可以是接收節(jié)點(diǎn)已知或者可由其發(fā)現(xiàn)以認(rèn)證該非密碼 地址。例如,非密碼值可以是多個(gè)輸入值的組合,諸如串接。例如,非密碼值可以 是諸如隨機(jī)數(shù)、計(jì)數(shù)器值、或?qū)⑹褂迷摰刂返墓?jié)點(diǎn)特有的標(biāo)識(shí)符等第一輸入值和第 二輸入值的串接。接收節(jié)點(diǎn)可例如通過從授權(quán)提供者確定、通過從先前的或相關(guān)的 通信中的信息確定、通過從上下文信息確定、或通過知道該發(fā)送節(jié)點(diǎn)或所有非CGA 標(biāo)識(shí)符節(jié)點(diǎn)的預(yù)定值,而事先知道第一輸入值。如上所述,可使用任何適當(dāng)?shù)牡谝?9和第二輸入值,使得所得的非密碼值的組合不會(huì)與用于生成相應(yīng)的CGA和/或ECGA的公鑰和/或輸入串混淆(或與其相似)。消息可包括非密碼值的散列以及用作該非密碼值的一部分的第二輸入值(例 如,隨機(jī)數(shù)),它如上所述可被包括在發(fā)送者地址中、消息的首部中、和/或消息 的正文中。以此方式,消息可以不包括對(duì)第一輸入值的未編碼引用,例如明文。類 似地,如果接收節(jié)點(diǎn)事先知道第二輸入值,諸如隨機(jī)數(shù),則消息可包括非密碼值的 散列以及第一輸入值,它如上所述可被包括在發(fā)送者地址中、消息首部中、和/或 消息正文中。以此方式,消息可以不包括第二輸入值。類似地,如果接收節(jié)點(diǎn)事先 知道非密碼值的第一和第二輸入值,則除其在非密碼值的散列內(nèi)的已編碼形式以 外,消息中可以既不包括第一輸入值也不包括第二輸入值。盡管此處的描述包括第 一和第二輸入值,但是可以理解,可以適當(dāng)?shù)厥褂脙蓚€(gè)以上輸入值以形成非密碼值。在一個(gè)示例中,第一輸入值可對(duì)特定節(jié)點(diǎn)(或節(jié)點(diǎn)類型)預(yù)定,并且為接收 節(jié)點(diǎn)所知。非密碼值的第二輸入值可以是多個(gè)可能的第二輸入值之一。接收節(jié)點(diǎn)可能知道這多個(gè)可能的第二輸入值,但是可能不知道使用這些可能的第二輸入值中的 哪一個(gè)來生成非密碼值。如果可能的第二輸入值的個(gè)數(shù)與接收節(jié)點(diǎn)的計(jì)算能力相比 較小,則接收節(jié)點(diǎn)可嘗試這些可能的第二輸入值中的一個(gè)或多個(gè)來確定是否使用這 些可能的第二輸入值中的任一個(gè)。在一個(gè)示例中,如圖20所示,第一輸入值2002和第二輸入值2004可被串接 以形成非密碼值2000。第一輸入值可以是任何適當(dāng)?shù)闹?,諸如子網(wǎng)前綴、鏈路層 地址、NetBIOS、 DNS名、發(fā)送節(jié)點(diǎn)的DNS域后綴、預(yù)定的非密碼地址標(biāo)識(shí)符等 中的一個(gè)或多個(gè)。第二輸入值可以是任何適當(dāng)?shù)闹?,諸如隨機(jī)數(shù)、 一組可能的第二 輸入值中的成員等等,它可以類似于以上參考修飾符值所描述的方式來生成和/或 修改。非密碼值2000可被輸入到散列函數(shù)2006中,后者可以與以上參考圖5描述 的第一或第二散列函數(shù)相同或不同。散列函數(shù)的結(jié)果可用于確定非密碼值的散列 2008,諸如通過在由時(shí)間參數(shù)(以下進(jìn)一步討論)指定的一段時(shí)間內(nèi)從散列函數(shù)的 多個(gè)結(jié)果中選擇、使用安全性值、或使用散列函數(shù)2006的直接結(jié)果來確定。如果 時(shí)間參數(shù)被設(shè)為約為零,則該方法可選擇所生成的第一個(gè)散列結(jié)果。以此方式,可 限制生成非密碼地址所花費(fèi)的計(jì)算時(shí)間。非密碼值的散列的至少一部分可被插入到非密碼地址的至少一部分中。例如, 如圖20所示,所選值2008的至少一部分可與路由前綴308和預(yù)設(shè)位2016 (根據(jù) 支配協(xié)議)串接。以此方式,所選散列值2008的一部分可作為非密碼地址的部分2014來插入,另一部分可作為非密碼地址的部分2018來插入,和/或再一部分可作 為非密碼地址的部分2020來插入。如上所述,第一和/或第二輸入值可用任何適當(dāng)?shù)姆绞?,諸如通過消息中的首 部、在消息的正文中(諸如在證書中)被傳送到接收節(jié)點(diǎn),或者可以是接收節(jié)點(diǎn)已 知的。例如,如圖20所示,第二輸入值2004可通過將第二輸入值插入到非密碼地 址的部分2020中,經(jīng)由發(fā)送者的非密碼地址被傳送到接收節(jié)點(diǎn)??梢岳斫?,可修 改形成非密碼地址的串接的順序和長度以滿足特定協(xié)議和/或節(jié)點(diǎn)的需求和/或關(guān) 注事項(xiàng)。在一個(gè)示例中,第二輸入值可被插入到具有16位的地址部分2014中,并 且結(jié)果2012的部分可被插入到總共具有48位的地址部分2018和2020中。用于生 成非密碼地址的非密碼值(例如,第一輸入值和/或第二輸入值)的至少一部分可 被保存在適當(dāng)?shù)臄?shù)據(jù)存儲(chǔ)中。圖21示出了生成諸如圖20所示的非密碼地址的示例方法2100。可用任何適 當(dāng)?shù)姆绞?,諸如通過標(biāo)識(shí)該地址所有者的預(yù)定的第一輸入值,來確定2102第一輸 入值。例如,第一輸入值可以是子網(wǎng)前綴、鏈路層地址、NetBIOS、 DNS名、地址 所有者的DNS域后綴、指示非密碼地址的預(yù)定值等中的一個(gè)或多個(gè)。在一個(gè)示例 中,指示非密碼地址的預(yù)定值可以是諸如"this is not a cryptographic address"(這 不是密碼地址)等串或任何其它合適的串或值??捎萌魏芜m當(dāng)?shù)姆绞匠跏蓟?104散列參數(shù)。例如,可諸如通過生成隨機(jī)數(shù)、 從預(yù)定的一組數(shù)字中選擇一隨機(jī)數(shù)等來初始化第二輸入值。計(jì)算散列值的時(shí)間可被 設(shè)為零,并開始運(yùn)行以跟蹤計(jì)算該散列值所使用的時(shí)間。沖突計(jì)數(shù)可被設(shè)為零???組合2106,諸如串接第一和第二輸入值??缮⒘谢?108第一和第二散列值的組合 以生成散列輸出。可將計(jì)算散列輸出的時(shí)間與預(yù)定的或輸入的時(shí)間參數(shù)進(jìn)行比較 2110。如果未超過該時(shí)間參數(shù),則可修改2122該非密碼值的一個(gè)或多個(gè)部分。例 如,可諸如通過將值遞增l、選擇該組可能的輸入值中的下一輸入值、生成另一隨 機(jī)數(shù)等,來修改第一和/或第二輸入值??山M合2106新修改的輸入值,并計(jì)算2108 的另一散列值。該過程可重復(fù),直到超過了時(shí)間參數(shù)。如果超過了時(shí)間參數(shù),則可 如上參考圖12所描述的從所生成的散列值中選擇2114非密碼值的散列值??苫诜敲艽a值的散列用任何適當(dāng)?shù)姆绞絹砩?118非密碼地址。例如,可 將路由前綴與所選的非密碼值的散列的至少一部分串接。如果第二輸入值是接收節(jié) 點(diǎn)已知的或可由其確定(諸如通過嘗試一組可能的第二輸入值中的一個(gè)或多個(gè)), 則可從非密碼地址中省略第二輸入值。在另一示例中,可將第二輸入值與路由前綴31以及非密碼值的散列串接來形成非密碼地址??蓪⑺傻姆敲艽a地址與現(xiàn)有地址進(jìn)行比較2120以確定是否發(fā)生了地址沖 突。如果發(fā)生了沖突,則可修改2116第一和第二輸入值中的一個(gè)或兩者,并且該過程返回到組合2106第一和第二輸入值。該過程可被重復(fù),直到?jīng)]有檢測(cè)到與所生成的非密碼地址的沖突或沖突數(shù)超過了最大沖突參數(shù)。如果沒有檢測(cè)到?jīng)_突,則可結(jié)束2124非密碼地址的生成。所得的非密碼地址可被提供給地址所有者、儲(chǔ)存 在數(shù)據(jù)存儲(chǔ)中等等。另外,用于生成該非密碼地址的輸入值和/或非密碼值中的一 個(gè)或多個(gè)可被儲(chǔ)存在適當(dāng)?shù)臄?shù)據(jù)存儲(chǔ)中。在一個(gè)示例中,如果地址所有者是下級(jí)節(jié) 點(diǎn),則網(wǎng)絡(luò)管理員或地址服務(wù)可為該地址所有者計(jì)算非密碼地址并諸如通過網(wǎng)絡(luò)連 接或配置接口 (諸如用戶接口或網(wǎng)絡(luò)管理工具)將該地址傳送到地址所有者。該非 密碼地址可由該地址所有者使用。如上所述,作為非密碼地址的所有者的發(fā)送節(jié)點(diǎn)可以是下級(jí)設(shè)備。由此,發(fā) 送節(jié)點(diǎn)可能無法散列化公鑰和/或形成證書。相反,發(fā)送節(jié)點(diǎn)本身可使用傳統(tǒng)協(xié)議 來認(rèn)證來自其它節(jié)點(diǎn)的消息(例如,由接收節(jié)點(diǎn)發(fā)送的響應(yīng))。在某些情況下,地 址所有者甚至可能不知道接收節(jié)點(diǎn)可將其地址驗(yàn)證為非密碼地址??梢岳斫?,上述 散列擴(kuò)展方法可用于擴(kuò)展非密碼生成和認(rèn)證。以此方式,發(fā)送節(jié)點(diǎn)可指示其是下級(jí) 設(shè)備,且由此無法驗(yàn)證CGA或ECGA,并且接收節(jié)點(diǎn)可確定發(fā)送節(jié)點(diǎn)具有非密碼 地址。在一個(gè)示例中,接收節(jié)點(diǎn)可基于發(fā)送節(jié)點(diǎn)的非密碼地址來啟動(dòng)對(duì)消息的認(rèn)證。 然而,在認(rèn)證過程中,接收節(jié)點(diǎn)可將發(fā)送節(jié)點(diǎn)的地址標(biāo)識(shí)為非密碼地址。在某些情 況下,如果檢測(cè)到一非密碼地址,則對(duì)該非密碼地址的認(rèn)證可以不包括任何進(jìn)一步 的認(rèn)證動(dòng)作,或者可使用替換(或傳統(tǒng))協(xié)議。圖22示出了確定由類似于圖21的方法生成的地址是否可被標(biāo)識(shí)為非密碼地 址的示例方法2200。方法2200可結(jié)合CGA和/或ECGA的認(rèn)證方法來實(shí)現(xiàn)。該方 法可串行、并行實(shí)現(xiàn),和/或可被組合以減少計(jì)算等等。發(fā)送節(jié)點(diǎn)可生成2202消息。 消息可包括非密碼地址作為發(fā)送節(jié)點(diǎn)標(biāo)識(shí)符。消息還可以不包含用于生成發(fā)送節(jié)點(diǎn) 的地址的第一輸入值和第二輸入值、可以包含其中的一個(gè)或可包含兩者。例如,如 上所述,發(fā)送節(jié)點(diǎn)的地址可包括路由前綴以及非密碼值的散列的至少一部分。消息 可省略或排除對(duì)第一或第二輸入值中任一個(gè)的未編碼形式的引用或公開。接收節(jié)點(diǎn)可接收2204消息,并提取2206發(fā)送節(jié)點(diǎn)的網(wǎng)絡(luò)地址。接收節(jié)點(diǎn)可 用任何適當(dāng)?shù)姆绞絹泶_定2208第一輸入值。例如,接收節(jié)點(diǎn)可從地址中提取子網(wǎng)前綴(或鏈路層地址等)作為第一輸入值、可從存儲(chǔ)器中檢索預(yù)定的非密碼標(biāo)識(shí)符 作為第一輸入值、可請(qǐng)求發(fā)送節(jié)點(diǎn)在后續(xù)消息中發(fā)送第一輸入值、可從發(fā)送節(jié)點(diǎn)接 收指示第一輸入值的單獨(dú)消息等等。接收節(jié)點(diǎn)可確定2210第二輸入值。例如,接 收節(jié)點(diǎn)可從一組可能的第二輸入值中選擇一個(gè)第二輸入值、從發(fā)送節(jié)點(diǎn)的地址中提 取第二輸入值等等。在一個(gè)示例中,該組可能的輸入值可以是從0-16的一組整數(shù), 并且接收節(jié)點(diǎn)可選擇這些可能的第二輸入值中的一個(gè)??梢岳斫?,可能的第二輸入 值的個(gè)數(shù)、范圍、和/或值可以基于一個(gè)或多個(gè)因素來預(yù)定,這些因素包括第二輸 入值的長度、下級(jí)節(jié)點(diǎn)和/或接收節(jié)點(diǎn)的計(jì)算能力、網(wǎng)絡(luò)大小、下級(jí)節(jié)點(diǎn)的個(gè)數(shù)等 等。接收節(jié)點(diǎn)可用任何適當(dāng)?shù)姆绞絹砩?212非密碼值,諸如通過串接第一和第 二輸入值、根據(jù)如對(duì)于ECGA討論的擴(kuò)展方法來散列化第一和/或第二輸入值等等。 接收節(jié)點(diǎn)可散列化2214非密碼值。可將網(wǎng)絡(luò)地址的預(yù)定部分與所計(jì)算的非密碼值 的散列的至少一部分進(jìn)行比較2216。如果網(wǎng)絡(luò)地址的預(yù)定部分等于非密碼值的散 列的該部分,則接收節(jié)點(diǎn)可標(biāo)識(shí)2218發(fā)送地址是非密碼地址并采取適當(dāng)?shù)膭?dòng)作, 這些動(dòng)作可以是在不認(rèn)證的情況下接受消息、啟動(dòng)可由下級(jí)設(shè)備接受的認(rèn)證方法 等。如果網(wǎng)絡(luò)地址的預(yù)定部分沒有指示非密碼地址,則接收節(jié)點(diǎn)可返回到確定2210 第二輸入值,并選擇該組輸入值中的下一可能的第二輸入值且繼續(xù)。如果在使用了 所有可能的第二輸入值之后并且沒有一個(gè)所生成的散列值指示非密碼地址,則接收 節(jié)點(diǎn)可采取2220適當(dāng)?shù)膭?dòng)作。例如,接收節(jié)點(diǎn)可確定發(fā)送地址可能是CGA或ECGA 并且啟動(dòng)適當(dāng)?shù)腃GA或ECGA認(rèn)證方法,諸如上述方法之一?;蛘?,接收節(jié)點(diǎn)可 確定地址既不是非密碼地址,又不是CGA,也不是ECGA,并且可采取適當(dāng)?shù)膭?dòng) 作,諸如丟棄所接收的消息、發(fā)送出錯(cuò)消息等等??梢岳斫?,上述對(duì)CGA的擴(kuò)展可在生成并認(rèn)證包括非密碼值的散列的非密碼 地址時(shí)實(shí)現(xiàn)。例如,第一和第二輸入值可被串接并通過第二散列函數(shù)來散列化。安 全性參數(shù)或時(shí)間參數(shù)可用于選擇第二散列值。諸如安全性參數(shù)Sec等散列指示符可 被編碼到地址位中,或可用另一方式傳送來指定第二散列函數(shù)的該組允許值。非密 碼值可包括路由前綴、第一輸入值、第二輸入值、沖突計(jì)數(shù)、以及第二散列值中的 一個(gè)或多個(gè)。非密碼值可通過第一散列函數(shù)來散列化,并且第一散列函數(shù)的結(jié)果的 至少一部分可被插入到非密碼地址中。可使用類似的過程來認(rèn)證非密碼地址。人類輸入安全碼如上所述,用于生成ECGA的散列擴(kuò)展技術(shù)可用于在其它應(yīng)用中生成擴(kuò)展的 散列。例如,可使用類似的散列擴(kuò)展技術(shù)來提高單向散列函數(shù)的強(qiáng)度和/或在某些 外部要求限制了散列位的個(gè)數(shù)并且該限制低于被認(rèn)為(或可能在將來)針對(duì)蠻力攻 擊安全的要求的任何情況下減少位數(shù)。例如,為減少人類輸入的安全碼的長度(并維持相同的安全性),和/或提高人類輸入的安全碼的強(qiáng)度(并維持安全碼的長度),可使用類似于ECGA的散列 擴(kuò)展的過程來生成和/或認(rèn)證安全碼。手動(dòng)傳送(例如,輸入、驗(yàn)證、比較、發(fā)送 等)的任何安全碼可使用擴(kuò)展散列方法來生成以提高安全性和/或限制安全碼的長 度同時(shí)維持相同的安全性級(jí)別。盡管以下使用允許媒體設(shè)備和遙控器之間的通信的 安全碼作為示例,但可以理解任何密鑰交換協(xié)議(例如,TLS握手、互聯(lián)網(wǎng)密鑰交 換(IKE)、安全支持提供者接口 (SSPI))可使用要求是真實(shí)的、但不必是秘密 (例如,網(wǎng)絡(luò)設(shè)置、諸如車庫門等設(shè)備的公鑰、配置設(shè)置等),并可具有擴(kuò)展的安 全性和/或減少的長度的安全碼。圖23示出了使用人類2310作為安全信道來傳送安全碼的系統(tǒng)。如圖23所示, 第二設(shè)備2302可能需要被第一設(shè)備2304認(rèn)證以允許將第二設(shè)備用于第一設(shè)備。第 一和第二設(shè)備可以是任何適當(dāng)?shù)脑O(shè)備,如上所述這些設(shè)備可彼此認(rèn)證,或使用安全 碼來驗(yàn)證彼此的授權(quán),或使用安全碼對(duì)一個(gè)或多個(gè)參數(shù)達(dá)成一致。在此示例中,第 二設(shè)備2302是諸如電視機(jī)等媒體設(shè)備,而第一設(shè)備2304是遙控器。第一設(shè)備和第二設(shè)備可對(duì)作為諸如密鑰分發(fā)等安全協(xié)議的一部分所需的某一 數(shù)據(jù)2305達(dá)成一致。該數(shù)據(jù)可由第一設(shè)備發(fā)送給第二設(shè)備、由第二設(shè)備發(fā)送給第 一設(shè)備、或作為諸如密碼密鑰交換等兩個(gè)設(shè)備都發(fā)送和接收消息的協(xié)議的結(jié)果來創(chuàng) 建。例如,數(shù)據(jù)2305可包含一個(gè)或多個(gè)分量,諸如設(shè)備或用戶標(biāo)識(shí)符、公鑰、迪 非一赫爾曼(Diffie-Hdlman)指數(shù)、會(huì)話密鑰、密碼認(rèn)證符、密碼協(xié)議套標(biāo)識(shí)符、 時(shí)間或日期值、配置參數(shù)、實(shí)體標(biāo)識(shí)符或安全策略描述。在圖23的示例中,第一設(shè)備2302可以是遙控器,安全碼可以是第一設(shè)備的 公鑰的散列,而數(shù)據(jù)2305可以是公鑰。第二設(shè)備可以是在人類輸入安全碼之前或 之后使用公鑰來認(rèn)證第一設(shè)備的媒體設(shè)備。用戶2310可接收與第一設(shè)備相關(guān)聯(lián)的安全碼2306。在一個(gè)示例中,第一設(shè)備 2304可用任何適當(dāng)?shù)姆绞綄踩a傳送給用戶2310。例如,諸如第一設(shè)備的顯示 器等用戶接口可將安全碼傳送給用戶。在另一示例中,安全碼可由第一設(shè)備被動(dòng)地 傳送給用戶。例如,安全碼2306可通過可由用戶在檢索安全碼時(shí)參考的標(biāo)記或標(biāo)簽而可供用戶2310使用。例如,安全碼2308可以位于貼在第一設(shè)備上的標(biāo)簽上。 除此之外或作為替代,用戶可通過來自第三方的消息來發(fā)現(xiàn)該安全碼。例如,用戶 可通過紙件郵件接收到將安全碼通知給用戶的證書。在另一示例中,用戶可通過其 它媒體,諸如電話呼叫或通過網(wǎng)絡(luò)通信來訪問安全碼。在另一示例中,用戶可能知 道安全碼,并且不需要從第一設(shè)備傳送安全碼。為使人類用戶2310擔(dān)當(dāng)安全信道,用戶可使用任何適當(dāng)?shù)氖侄螌踩a2306 傳送給第二設(shè)備2302。例如,在媒體設(shè)備或其它電子設(shè)備的情況下,用戶可通過 第二設(shè)備的字母數(shù)字鍵區(qū)或鍵盤來直接輸入安全碼。在另一示例中,用戶2310可 諸如通過將安全碼輸入到計(jì)算設(shè)備中并通過通信網(wǎng)絡(luò)將該安全碼發(fā)送到第二設(shè)備 來將安全碼傳送給第二設(shè)備。在另一示例中,用戶可通過電話鏈路將安全碼傳送給 第二設(shè)備。例如,用戶可通過電話機(jī)的數(shù)字鍵區(qū)來輸入安全碼,或者可說出安全碼。 可以理解,可使用任何通信手段來將安全碼從用戶傳送到第二設(shè)備。在另一示例中,第二設(shè)備可將同一安全碼2306傳送給用戶,并且用戶可將從 設(shè)備2304接收到的安全碼與從設(shè)備2302接收到的安全碼進(jìn)行比較。如果兩個(gè)安全 碼相等,則用戶可例如通過按下第二設(shè)備上的鍵或通過向第二設(shè)備輸入某一其它確認(rèn)輸入來向第二設(shè)備發(fā)出接受信號(hào)。在安全協(xié)議中,對(duì)兩個(gè)代碼的這一比較可以等 于用戶將代碼輸入到第二設(shè)備中或作為其替代。兩個(gè)代碼的比較可具有減少了對(duì)用 戶需要的工作或與用戶輸入的安全碼相比要求更簡(jiǎn)單的輸入設(shè)備的益處。除了第二設(shè)備認(rèn)證第一設(shè)備之外,第一設(shè)備還可認(rèn)證第二設(shè)備。在一個(gè)示例中,人類用戶可將第二安全碼傳輸?shù)降谝辉O(shè)備,該第二安全碼可用于第二認(rèn)證。在 另一示例中,用戶可通過按下鍵或通過向第二設(shè)備輸入某一其它確認(rèn)輸入來用信號(hào) 通知第二設(shè)備對(duì)該輸入的接受。在又一示例中,用戶可用信號(hào)通知兩個(gè)設(shè)備兩個(gè)安 全碼的成功比較,其中每一安全碼是從設(shè)備之一輸出的。在這些示例中,數(shù)據(jù)2305 可包括諸如兩個(gè)設(shè)備的公鑰等兩個(gè)設(shè)備的參數(shù)。第二設(shè)備對(duì)第一設(shè)備的認(rèn)證可授權(quán)第一設(shè)備訪問第一設(shè)備、或控制第一設(shè)備、或使用第一設(shè)備作為輸入或輸出設(shè)備。第二設(shè)備向第一設(shè)備的認(rèn)證同樣可授權(quán)這些 動(dòng)作。在另一示例中,用戶可與單個(gè)設(shè)備對(duì)數(shù)據(jù)值2305達(dá)成一致,而非兩個(gè)設(shè)備對(duì) 數(shù)據(jù)2305達(dá)成一致。例如,參考圖23,用戶2310可檢索不與第一設(shè)備2304相關(guān) 聯(lián)的安全碼2306。如上所述,用戶可用任何適當(dāng)?shù)姆绞絹頇z索安全碼,包括例如 通過與第一設(shè)備相關(guān)聯(lián)的標(biāo)記或標(biāo)簽、來自紙件郵件的證書、電話呼叫或通過網(wǎng)絡(luò)通信、在用戶已知的情況下來自用戶自己的存儲(chǔ)器等等。第二設(shè)備2302可從通信 網(wǎng)絡(luò)接收數(shù)據(jù)、從諸如其存儲(chǔ)器等存儲(chǔ)設(shè)備檢索數(shù)據(jù)、或者數(shù)據(jù)可由用戶輸入到第二設(shè)備中。為向第二設(shè)備2302認(rèn)證或授權(quán)數(shù)據(jù)2305,用戶可將安全碼2306傳送 給第二設(shè)備。用戶可用任何適當(dāng)?shù)姆绞絹韺踩a傳送給第二設(shè)備,這些方式如上 所述可包括,例如通過第一設(shè)備的字母數(shù)字鍵區(qū)或鍵盤直接輸入安全碼、將安全碼 輸入到計(jì)算設(shè)備中并通過通信網(wǎng)絡(luò)將安全碼發(fā)送給第一設(shè)備、通過電話機(jī)的數(shù)字鍵 區(qū)輸入安全碼或通過向之后可將安全碼或授權(quán)消息傳輸?shù)降谝辉O(shè)備的人說出安全 碼,等等。或者,第二設(shè)備可輸出安全碼,用戶然后可將該安全碼與用戶已知的值進(jìn)行比較。用戶然后可使用諸如按鍵等輸入來用信號(hào)通知第二設(shè)備安全碼的成功比 較。在一個(gè)示例中,第二設(shè)備可在使用數(shù)據(jù)來配置設(shè)備設(shè)置、傳送設(shè)置或訪問控制 設(shè)置之前認(rèn)證或授權(quán)該數(shù)據(jù)。在另一示例中,第二設(shè)備可在允許用戶采取期望的動(dòng) 作,諸如訪問第二設(shè)備、與第二設(shè)備通信等之前認(rèn)證或授權(quán)該數(shù)據(jù)。第一設(shè)備對(duì)輸 入的安全碼的認(rèn)證在以下進(jìn)一步討論。圖24示出了安全碼生成的一個(gè)示例示意圖,圖25示出了生成安全碼的示例 方法的流程圖。與如上參考圖3、 4、 5和11-13所述的ECGA的生成相同,要由 用戶輸入的安全碼可通過使用擴(kuò)展散列來生成。例如,對(duì)第二散列函數(shù)520的輸入 可包括數(shù)據(jù)2305和修飾符306。數(shù)據(jù)可以是任何適當(dāng)?shù)男畔?。例如,?shù)據(jù)可包含 設(shè)備或用戶標(biāo)識(shí)符、公鑰、迪非一赫爾曼指數(shù)、會(huì)話密鑰、配置參數(shù)、密碼算法套 件標(biāo)識(shí)符、設(shè)備配置參數(shù)、通信參數(shù)、以及任何對(duì)安全性關(guān)鍵的信息中的一個(gè)或多 個(gè)。修飾符306和數(shù)據(jù)2305可用任何適當(dāng)?shù)姆绞絹斫M合。例如,如圖24所示,修 飾符與數(shù)據(jù)串接。然而,可以理解,可用任何適當(dāng)?shù)捻樞蚝头绞絹韺?shí)現(xiàn)對(duì)第二散列 函數(shù)520的輸入的順序和組合。第二散列函數(shù)520可散列化輸入值以生成散列值500??蓹z査終止條件2404。 終止條件可以是對(duì)預(yù)定的一組散列值中包括第二散列值的測(cè)試。例如,如上所述, 終止條件可以是安全性值,諸如0位的個(gè)數(shù)或N*Sec。安全性值N*Sec可與散列 值500的最左邊部分中0位的個(gè)數(shù)進(jìn)行比較。如果散列值500沒有相等或更大個(gè)數(shù) 的O位(或者任何其它預(yù)定位模式),則不滿足終止條件。除此之外或作為替代, 終止條件可以是時(shí)間參數(shù)。時(shí)間參數(shù)可以與總時(shí)間進(jìn)行比較以確定第二散列值。如 果未超過時(shí)間參數(shù),則第二散列值的生成可繼續(xù)。除此之外或作為替代,終止條件 可包括指示生成比先前找到的更安全的散列值500的概率的概率閾值。如上所述, 概率閾值可以與所計(jì)算的生成更安全散列值的概率進(jìn)行比較。如果生成更安全散列36值的概率大于或等于概率閾值,則第二散列值的生成可以繼續(xù)。如果散列值的生成繼續(xù)(例如,不滿足終止條件),則可修改2410修飾符306并可將新的修飾符值與數(shù)據(jù)2305組合(例如,串接)。散列值500的生成可繼續(xù), 直到滿足終止條件。應(yīng)當(dāng)注意,在某些實(shí)現(xiàn)中,修飾符不必是單獨(dú)的數(shù)據(jù)字段,而 數(shù)據(jù)的任何可變部分都可用作修飾符。如果滿足終止條件,則可從生成的多個(gè)散列值500中選擇第二散列值。第二 散列值可以用任何適當(dāng)?shù)姆绞絹磉x擇。例如,第二散列值可被選擇為由第二散列函 數(shù)生成的多個(gè)散列值500中"最安全"散列值(例如,產(chǎn)生最高Sec值的散列值 500)。產(chǎn)生找到的最高Sec值的修飾符可被儲(chǔ)存以用于安全碼生成的其余部分。一旦選擇了第二散列值并儲(chǔ)存了相關(guān)聯(lián)的修飾符,可通過使用第一散列函數(shù) 510確定第一散列值502來生成安全碼2306。如上參考圖5所述的,第一和第二散 列函數(shù)可以是任何適當(dāng)?shù)纳⒘泻瘮?shù),并且可以是相同或不同的散列函數(shù)。對(duì)第一散 列函數(shù)的輸入可用任何適當(dāng)?shù)姆绞絹泶_定。例如,如圖24所示,對(duì)第一散列函數(shù) 的輸入可包括修飾符306和數(shù)據(jù)2305的組合。在某些情況下,輸入到第一散列函 數(shù)的數(shù)據(jù)2305可以與輸入到第二散列函數(shù)的數(shù)據(jù)不同,或者數(shù)據(jù)可以僅部分相同。 在某些情況下,可在對(duì)第一散列函數(shù)的輸入中包括一個(gè)或多個(gè)可任選附加數(shù)據(jù)值 2412。為防止第一散列值等于第二散列值,可修改一個(gè)或多個(gè)可任選參數(shù)以確保散 列輸入是不同的,例如,對(duì)第一散列函數(shù)的輸入可以與對(duì)第二散列函數(shù)的輸入不同, 可向一個(gè)或多個(gè)輸入追加靜態(tài)變量等等。在其它情況下,第一散列函數(shù)可以與第二 散列函數(shù)不同。在另一示例中,第二散列函數(shù)可以是較大散列值的預(yù)定部分,而第 一散列值可以是該較大散列值的另一部分。第一散列函數(shù)510的結(jié)果是第一散列值502。第一散列值502的至少一部分可 用于形成安全碼2306的至少一部分。例如,如圖24所示,第一散列值502的至少 一部分可形成整個(gè)安全碼2306??墒褂玫谝簧⒘兄档娜魏芜m當(dāng)?shù)牟糠?,諸如第一 散列值的最左邊的、且具有對(duì)于安全碼正確的個(gè)數(shù)的位的長度的部分。在其它情況 下,可將第一散列值的至少一部分與一個(gè)或多個(gè)代碼參數(shù)組合,諸如串接。這一個(gè) 或多個(gè)代碼參數(shù)(未示出)可包括例如制造商代碼、日期指示符、位置指示符、網(wǎng) 絡(luò)指示符等??梢岳斫?,可使用任何適當(dāng)?shù)念A(yù)定代碼參數(shù)來形成安全碼2306??扇芜x地,可將諸如Sec等散列指示符550與第一散列值的至少一部分組合 以形成安全碼2306。這例如在終止條件基于時(shí)間參數(shù)時(shí)是有用的。然而,如果散列指示符值是固定的、可從某一其它通信中知道、或從協(xié)議上下文中知道,則可能 不必將散列指示符編碼到安全碼中。在某些情況下,可將所生成的安全碼2306與其它已知或可發(fā)現(xiàn)的安全碼進(jìn)行比較。如果沒有沖突,則可將安全碼2306與第一設(shè)備相關(guān)聯(lián)地儲(chǔ)存。在某些情況系,包含第一散列值的一部分的安全碼可被編碼以允許人類用戶更容易理解和/或 傳輸。例如,安全碼可被編碼到一系列字母數(shù)字字符中。如上所述,可準(zhǔn)備要傳送給用戶2310的安全碼,諸如打印在標(biāo)簽上、編碼到第一設(shè)備中以向用戶顯示、打 印到證書中以發(fā)送或用紙件郵件寄給用戶等等。如果與任何現(xiàn)有的安全碼有沖突,并且應(yīng)用程序或協(xié)議要求安全碼是唯一的, 則可修改對(duì)第一散列函數(shù)的一個(gè)或多個(gè)輸入值。在一個(gè)示例中,可調(diào)整修飾符,并 且安全碼生成可返回到使用第二散列函數(shù)510來生成散列值500。在另一示例中, 可如圖4所示遞增420沖突計(jì)數(shù)(可被初始化為零)。沖突計(jì)數(shù)可以是輸入到第一 散列函數(shù)510的附加數(shù)據(jù)值2412之一。以此方式,可使用遞增的沖突計(jì)數(shù)以及其 它原始輸入?yún)?shù)(例如,修飾符306和數(shù)據(jù)2305)來確定新的第一散列值502。沖 突計(jì)數(shù)也可以是輸入到第二散列函數(shù)520的可任選輸入值。然而,沖突計(jì)數(shù)值可在 生成第二散列值時(shí)被初始化為零并保持為零。如果應(yīng)用程序或協(xié)議要求安全碼是唯一的,則從新生成的第一散列值502得 到的安全碼可與已知和/或可發(fā)現(xiàn)安全碼進(jìn)行比較以確定是否發(fā)生沖突。該過程可 重復(fù)直到不發(fā)生沖突。圖25示出了生成安全碼的示例方法的流程圖,該方法類似于圖13的生成 ECGA的方法。然而,可以理解,安全碼可以用與上述可擴(kuò)展散列中的任一種相似 的方式來生成。如圖25所示,可確定2502數(shù)據(jù)2305。如上所述,數(shù)據(jù)可以是兩 個(gè)設(shè)備或一個(gè)設(shè)備與用戶希望達(dá)成一致的任何適當(dāng)?shù)男畔?。可初始?504修飾符。 例如,修飾符可被初始化為一隨機(jī)值,在某些情況下該隨機(jī)值可以是16個(gè)隨機(jī)八 位組。如果要進(jìn)行沖突評(píng)估,則可將沖突計(jì)數(shù)初始化為零或其它適當(dāng)?shù)闹?。可確定2506終止條件。如上所述,終止條件可以是第二散列值中的預(yù)定位模 式。例如,在第二散列值的最左邊位中可期望有至少N申Sec個(gè)0位。除此之外或 作為替代,第二散列值的生成可接受在給定時(shí)間參數(shù)期間生成的"最安全"散列值。 如上所述,時(shí)間參數(shù)可隨時(shí)間修改以基于生成安全碼的計(jì)算設(shè)備的計(jì)算速度和能力 針對(duì)將來的計(jì)算期望進(jìn)行調(diào)整。除此之外或作為替代,終止條件可包括指示在給定 一段時(shí)間內(nèi)生成第二散列函數(shù)的更安全散列值結(jié)果的概率的概率閾值,該給定一段時(shí)間可以是被分配給安全碼生成的剩余時(shí)間。概率閾值可取決于生成第二散列值的 計(jì)算系統(tǒng)所期望的計(jì)算時(shí)間、安全碼中期望的安全性以及任何其它適當(dāng)?shù)膮?shù)而被
設(shè)為任何適當(dāng)?shù)膮?shù)。
為形成對(duì)第二散列函數(shù)的輸入,可用任何適當(dāng)?shù)姆绞綄?shù)據(jù)與修飾符組合 2508。例如,數(shù)據(jù)可與修飾符串接。組合的值然后可由第二散列函數(shù)散列化以生成
2510散列值?;诘诙⒘泻瘮?shù)的結(jié)果,可確定2512散列指示符。例如,可如上 所述對(duì)散列值的最左邊部分中0的個(gè)數(shù)進(jìn)行計(jì)數(shù),并且可確定相關(guān)聯(lián)的安全性值 (Sec)作為散列指示符。
可用任何適當(dāng)?shù)姆绞?,諸如通過選擇由第二散列函數(shù)生成的多個(gè)散列值中最 "安全"的散列值,來選擇2516第二散列值。例如,第二散列值可被設(shè)為具有找 到的最高安全性值(例如,最左邊0位的個(gè)數(shù))的散列值。更具體地,散列指示符 可以是安全性值,并且可與先前確定的散列指示符進(jìn)行比較。與最高安全性值(散 列指示符)相關(guān)聯(lián)的散列值可被選為當(dāng)前第二散列值。與所選的第二散列值相關(guān)聯(lián) 的修飾符和散列指示符可用任何適當(dāng)?shù)姆绞絻?chǔ)存,諸如儲(chǔ)存在數(shù)據(jù)存儲(chǔ)中。第二散 列值可在生成第二散列函數(shù)的后續(xù)結(jié)果時(shí)更新,直到滿足終止條件。
可評(píng)估2518終止條件。例如,可將時(shí)間參數(shù)與從第二散列函數(shù)生成多個(gè)散列 值結(jié)果的運(yùn)行時(shí)間進(jìn)行比較。除此之外或作為替代,終止條件可確定第二散列值是 否屬于由散列指示符定義的一組可接受散列值。例如,終止條件可將散列指示符與 第二散列值的一部分中的期望位模式進(jìn)行比較。對(duì)于一個(gè)更具體示例,散列指示符 可指示散列值的最左邊部分中0位的個(gè)數(shù),并且第二散列值的生成可在散列指示符 等于或超過安全性參數(shù)時(shí)終止。除此之外或作為替代,終止條件可包括確定生成比 現(xiàn)有的所選第二散列值更安全的第二散列值的概率。如果該概率低于或等于一概率 閾值,則第二散列函數(shù)的生成可終止。
如果不滿足終止條件,則可用任何適當(dāng)?shù)姆绞絹硇薷?520修飾符,例如遞增。 應(yīng)當(dāng)注意,修飾符306無需是單獨(dú)的數(shù)據(jù)字段,而可以是數(shù)據(jù)2305的可變部分。 生成第二散列值的過程可返回到將修飾符與數(shù)據(jù)組合以繼續(xù)生成第二散列函數(shù)的 結(jié)果作為潛在的第二散列值。
如果滿足終止條件,則可將所選第二散列值的修飾符與數(shù)據(jù)2305相組合 2522,并可任選地與附加數(shù)據(jù)2418相組合2522。附加數(shù)據(jù)可以是兩個(gè)設(shè)備,或一 個(gè)設(shè)備與用戶希望達(dá)成一致的任何適當(dāng)?shù)男畔?。在附加?shù)據(jù)2418而非數(shù)據(jù)2305 中包括特定信息的原因是附加數(shù)據(jù)比數(shù)據(jù)更頻繁地改變,或者附加數(shù)據(jù)在生成第二
39散列并確定修飾符時(shí)是不可用的。數(shù)據(jù)或附加數(shù)據(jù)還可包括一個(gè)或多個(gè)可任選參 數(shù),諸如沖突計(jì)數(shù)。對(duì)第一散列函數(shù)的輸入的分量可用任何適當(dāng)?shù)姆绞絹斫M合,諸 如串接。然后可由第一散列函數(shù)來散列化該組合以生成2524第一散列值。
然后可從第一散列值的至少一部分生成2526安全碼。例如,可選擇第一散列
值的一部分,諸如第一散列值的最左邊部分的正確個(gè)數(shù)的位,來形成安全碼??捎?任何適當(dāng)?shù)姆绞綄⒌谝簧⒘兄档脑摬糠峙c其它信息相組合,諸如串接。例如,可將 制造商標(biāo)識(shí)符、日期指示符、散列指示符、修飾符等中的一個(gè)或多個(gè)與第一散列值 的該部分串接來生成安全碼。
如果應(yīng)用或協(xié)議要求安全碼是唯一的,則可將所生成的安全碼與其它已知或 可發(fā)現(xiàn)的安全性值進(jìn)行比較以確定是否存在沖突。如果沒有找到?jīng)_突,則可返回
2536所生成的安全性值??梢岳斫猓魏芜m當(dāng)?shù)挠?jì)算設(shè)備可生成安全碼。例如, 第一設(shè)備可計(jì)算其自己的安全碼,或者,諸如第一設(shè)備的制造商等第三方可計(jì)算安 全碼并將該安全碼及其相關(guān)聯(lián)的修飾符和/或散列指示符儲(chǔ)存在第一設(shè)備的數(shù)據(jù)存 儲(chǔ)中。在另一示例中,用戶可計(jì)算安全碼(使用第一設(shè)備或另一設(shè)備)并將該安全 碼傳送到第一設(shè)備。在又一示例中,第二散列值可由制造商計(jì)算,并且第一散列值 可由該設(shè)備計(jì)算,同時(shí)在附加數(shù)據(jù)中包括制造商不可用的某些信息。
如果存在沖突,則可修改對(duì)第一散列函數(shù)和第二散列函數(shù)中的任一個(gè)或兩者 的輸入?yún)?shù)。例如,可用任何適當(dāng)?shù)姆绞絹磉f增沖突計(jì)數(shù),諸如遞增l。可將沖突 計(jì)數(shù)與一沖突閾值進(jìn)行比較。如果沖突計(jì)數(shù)等于或超過該沖突閾值,則可采取適當(dāng) 的動(dòng)作。例如,可暫停生成安全碼的過程,和/或可發(fā)送一出錯(cuò)消息。如果未超過 該沖突閾值,則生成安全碼的過程可返回到組合2522修飾符、作為第二散列參數(shù) 的沖突計(jì)數(shù)、數(shù)據(jù)值和可任選的附加數(shù)據(jù)值,直到確定了適當(dāng)?shù)陌踩灾祷蛟撨^程 被暫停。
如果生成安全性參數(shù),則該安全性參數(shù)可用任何適當(dāng)?shù)姆绞絹砭幋a以供使用。 例如,該安全性參數(shù)可被編碼成一字母數(shù)字組合。在某些情況下,編碼可選擇彼此 可容易區(qū)分和/或不易于出現(xiàn)轉(zhuǎn)錄差錯(cuò)的字母和/或數(shù)字。例如,可避免數(shù)字0和1, 和/或字母"I"和"0"以減少轉(zhuǎn)錄中的差錯(cuò)。本領(lǐng)域的技術(shù)人員可以理解,可適 當(dāng)避免或添加其它字母或數(shù)字,諸如避免單個(gè)數(shù)字或字母的順序重復(fù)??梢岳斫猓?替換實(shí)施例不限于羅馬字符和阿拉伯?dāng)?shù)字。例如,可使用符號(hào)和其它字母表和數(shù)字 體系。
由人類用戶傳送到第一和/或第二設(shè)備中的任一個(gè)的所生成的安全碼可與第二設(shè)備先前或隨后知道的數(shù)據(jù)進(jìn)行比較。
圖26示出了將數(shù)據(jù)與安全碼進(jìn)行比較的另一示例方法2600的流程圖,該方 法類似于以上參考圖8所描述的方法。為使第二設(shè)備能夠認(rèn)證第一設(shè)備和/或用戶, 第二設(shè)備可接收2602用戶傳送的安全碼。如果所輸入的安全碼被編碼,則第一設(shè) 備可解碼該安全碼。第一設(shè)備可檢索2604 —個(gè)或多個(gè)散列參數(shù)。散列參數(shù)可包括 散列指示符,諸如安全性參數(shù)、修飾符、數(shù)據(jù)、附加數(shù)據(jù)。數(shù)據(jù)或附加數(shù)據(jù)可包括 沖突計(jì)數(shù)。例如,第一設(shè)備可從存儲(chǔ)器中檢索一個(gè)或多個(gè)散列參數(shù)、可從安全碼中 解析散列參數(shù)值(例如,該值與第一散列值的部分串接以形成安全碼)等等??梢?理解,可用不同的方式來檢索不同的散列參數(shù)。
如果數(shù)據(jù)或附加數(shù)據(jù)包括沖突計(jì)數(shù),則可將該沖突計(jì)數(shù)與預(yù)定閾值進(jìn)行比較 2608。如果沖突計(jì)數(shù)超過了預(yù)定閾值,則對(duì)安全碼的認(rèn)證失敗,并且可采取2606 適當(dāng)?shù)膭?dòng)作。例如,適當(dāng)?shù)膭?dòng)作可包括向用戶發(fā)送出錯(cuò)消息、停止試圖認(rèn)證安全碼、 拒絕對(duì)第 一設(shè)備的訪問等等。
如果沒有沖突計(jì)數(shù),或者如果沖突計(jì)數(shù)沒有超過該閾值,則可組合2610并由 第一散列函數(shù)散列化2612 —個(gè)或多個(gè)檢索到的參數(shù)??蓪⒌谝簧⒘泻瘮?shù)的結(jié)果的 預(yù)定部分與輸入的安全碼的一部分進(jìn)行比較2614。如果值不同,則認(rèn)證失敗,并 可采取2606適當(dāng)?shù)膭?dòng)作。
如果值匹配,則可用預(yù)定方式組合2616散列參數(shù),諸如修飾符和數(shù)據(jù)值以及 附加數(shù)據(jù)值,以形成對(duì)第二散列函數(shù)的輸入。該組合可由第二散列函數(shù)來散列化 2618。可例如通過從安全碼中解碼或通過使用一 固定值或由協(xié)議上下文指定的值來 確定2620用于所計(jì)算的第二散列值的散列指示符??梢源_定該第二散列值是否屬 于由散列指示符定義的一組可接受的散列值。例如,可對(duì)第二散列值的最左邊部分 中0位的個(gè)數(shù)進(jìn)行計(jì)數(shù)??蓪⑺?jì)算的第二散列值的散列指示符與檢索到的所接收 安全碼的散列指示符進(jìn)行比較2622。如果第二散列值的值不屬于該組可接受的散 列值(例如,如果O位的個(gè)數(shù)小于散列指示符所要求的個(gè)數(shù)),則認(rèn)證失敗,并可 采取2606適當(dāng)?shù)膭?dòng)作。如果第二散列值屬于該組可接受的散列值(例如,如果O 位的個(gè)數(shù)大于或等于散列指示符所要求的個(gè)數(shù)),則該安全碼可被認(rèn)為已驗(yàn)證并可 采取2634適當(dāng)?shù)膭?dòng)作。例如,第二設(shè)備可處理數(shù)據(jù)2305或可傳送一成功消息、可 允許訪問等等。
在生成安全碼時(shí)使用散列擴(kuò)展,可提高安全碼的強(qiáng)度和/或可將人類用戶傳輸 的平均信息量保持在合理小的水平。當(dāng)計(jì)算能力隨著時(shí)間推移而增長時(shí),可增大時(shí)間參數(shù)和/或安全性值以適應(yīng)對(duì)更強(qiáng)安全碼的需求。例如,可增加0位的個(gè)數(shù)(例 如,散列擴(kuò)展的長度)。例如,32位的散列擴(kuò)展對(duì)于用當(dāng)前計(jì)算設(shè)備進(jìn)行的計(jì)算
可能是微不足道的。然而,使用散列擴(kuò)展技術(shù),人類輸入安全碼可具有30位的平 均信息量,其針對(duì)蠻力攻擊的提高的強(qiáng)度為30位+32位散列擴(kuò)展=62位,典型攻 擊者難以在實(shí)時(shí)中間人攻擊中對(duì)其破解。
本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,用于儲(chǔ)存程序指令的存儲(chǔ)設(shè)備可分布在網(wǎng)絡(luò) 上。例如,遠(yuǎn)程計(jì)算機(jī)可儲(chǔ)存被描述為軟件的過程的示例。本地或終端計(jì)算機(jī)可訪 問遠(yuǎn)程計(jì)算機(jī)并下載該軟件的一部分或全部來運(yùn)行程序。或者,本地計(jì)算機(jī)可按需 下載軟件片斷,或通過在本地終端上執(zhí)行某些軟件指令并在遠(yuǎn)程計(jì)算機(jī)(或計(jì)算機(jī) 網(wǎng)絡(luò))上執(zhí)行某些指令來進(jìn)行分布式處理。本領(lǐng)域的技術(shù)人員還可認(rèn)識(shí)到,通過利 用本領(lǐng)域的技術(shù)人員己知的常規(guī)技術(shù),該軟件指令的全部或一部分可由諸如DSP、 可編程邏輯陣列等專用電路來執(zhí)行。
參考所示實(shí)施例描述并示出了本發(fā)明的原理之后,可以認(rèn)識(shí)到,可在不背離 這些原理的前提下作出所示實(shí)施例的某些修改、置換、添加及其子組合。因此,所 附權(quán)利要求書以及之后引入的權(quán)利要求書旨在被解釋為包括落入其真實(shí)精神和范 圍之內(nèi)的所有這些修改、置換、添加、子組者及其等效技術(shù)方案。
鑒于可應(yīng)用本發(fā)明的原理的許多可能的實(shí)施例,應(yīng)當(dāng)認(rèn)識(shí)到,此處相對(duì)于附 圖所描述的實(shí)施例意味著僅是說明性的,且不應(yīng)被認(rèn)為是限制本發(fā)明的范圍。例如, 出于性能原因,可用硬件,諸如在網(wǎng)卡上,而非軟件來實(shí)現(xiàn)密碼操作。因此,此處 描述的本發(fā)明構(gòu)想了落入所附權(quán)利要求書及其等效技術(shù)方案之內(nèi)的所有這樣的實(shí) 施例。
權(quán)利要求
1. 一種或多種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在被實(shí)現(xiàn)時(shí)執(zhí)行一種生成供人類用戶到設(shè)備的通信的安全碼的方法,所述方法包括a)基于一修飾符和第一數(shù)據(jù)值的組合生成一散列值;b)修改所述修飾符;c)重復(fù)所述生成散列值和修改所述修飾符的操作,直到一終止條件;d)從所述多個(gè)散列值中選擇第二散列值;e)基于與所選擇的第二散列值相關(guān)聯(lián)的修飾符與第二數(shù)據(jù)值的組合生成第一散列值;以及f)生成供所述第一設(shè)備的人類用戶通信的安全碼,所述安全碼包含所述第一散列值的至少一部分。
2. 如權(quán)利要求1所述的一種或多種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述終止 條件包括確定所述散列值是否屬于一組可接受的散列值。
3. 如權(quán)利要求2所述的一種或多種計(jì)算機(jī)可讀介質(zhì),其特征在于,生成所述 安全碼包括將一散列指示符與所述第一散列值的所述部分組合,所述散列指示符與 所述一組可接受的散列值相關(guān)聯(lián)。
4. 如權(quán)利要求3所述的一種或多種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述散列 指示符包括在所述第二散列值的所選部分中具有預(yù)定值的位的計(jì)數(shù)。
5. 如權(quán)利要求1所述的一種或多種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述第一 數(shù)據(jù)值與所述第二數(shù)據(jù)值相同。
6. 如權(quán)利要求l所述的一種或多種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述第二 數(shù)據(jù)值包括所述第一數(shù)據(jù)值以及一個(gè)或多個(gè)附加數(shù)據(jù)值。
7. 如權(quán)利要求6所述的一種或多種計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括檢 測(cè)所述安全碼和一安全碼之間的沖突,并遞增所述附加數(shù)據(jù)值之一中的沖突計(jì)數(shù)參 數(shù)。
8. 如權(quán)利要求1所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述終止 條件包括指示生成所述第二散列值的時(shí)間的時(shí)間參數(shù)。
9. 如權(quán)利要求1所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述終止條件包括將生成將在一指定時(shí)間段內(nèi)選擇來代替當(dāng)前生成的散列值的另一散列值 的概率與一指定閾值進(jìn)行比較。
10. —種方法,包括a) 使用第二散列函數(shù)計(jì)算多個(gè)散列值,直到一終止條件,對(duì)所述多個(gè)散列值 中的每一散列值的輸入包括一數(shù)據(jù)值和一修飾符;b) 從所述多個(gè)散列值中選擇第二散列值;C)使用第一散列函數(shù)來計(jì)算第一散列值,對(duì)所述第一散列函數(shù)的輸入包括所 述數(shù)據(jù)值與所選的第二散列值的修飾符的串接,所述第一散列值與所述第二散列值 不同;以及d) 將一安全碼的至少一部分設(shè)為所述第一散列值的一部分,所述安全碼可由 人類用戶用來向 一設(shè)備認(rèn)證所述數(shù)據(jù)值。
11. 如權(quán)利要求IO所述的方法,其特征在于,還包括e) 人類用戶檢索與第一設(shè)備相關(guān)聯(lián)的安全碼;f) 所述人類用戶將所述安全碼傳送到第二設(shè)備;g) 所述第一設(shè)備和所述第二設(shè)備通過通信網(wǎng)絡(luò)通信來對(duì)一數(shù)據(jù)值達(dá)成一致;h) 所述第二設(shè)備使用所述安全碼來認(rèn)證所述數(shù)據(jù)值。
12. 如權(quán)利要求11所述的方法,其特征在于,還包括i) 所述第二設(shè)備使用所述數(shù)據(jù)值來認(rèn)證所述第一設(shè)備。
13. 如權(quán)利要求11所述的方法,其特征在于,所述數(shù)據(jù)值包括所述第一設(shè)備 的公鑰。
14. 如權(quán)利要求ll所述的方法,其特征在于,將所述安全碼傳送到所述第二 設(shè)備包括使用字母數(shù)字鍵區(qū)來輸入所述安全碼,并將所述安全碼傳送到所述第二設(shè) 備。
15. 如權(quán)利要求11所述的方法,其特征在于,檢索所述安全碼包括接收包含 所述安全碼的證書,或檢査與所述第一設(shè)備相關(guān)聯(lián)的標(biāo)簽。
16. 如權(quán)利要求IO所述的方法,其特征在于,所述終止條件包括確定一散列值是否屬于一組可接受的第二散列值。
17. 如權(quán)利要求10所述的方法,其特征在于,還包括e) 生成指示一組可接受的第二散列值的散列指示符;f) 將所述散列指示符編碼到所述安全碼的至少一部分中。
18. 如權(quán)利要求IO所述的方法,其特征在于,選擇所述第二散列值包括選擇所述多個(gè)散列值中在所述散列值的預(yù)定部分中具有最大位數(shù)的預(yù)定值的散列值。
19. 一種認(rèn)證數(shù)據(jù)值的方法,所述方法包括a) 獲得所述數(shù)據(jù)值;b) 接收一安全碼作為人類輸入; C)計(jì)算所述數(shù)據(jù)值的第一散列值;d) 將所述第一散列值的至少一部分與所述安全碼的至少一部分進(jìn)行比較;e) 計(jì)算所述數(shù)據(jù)值的第二散列值;以及f) 檢查所述第二散列值是否屬于一組可接受的散列值。
20. 如權(quán)利要求26所述的方法,其特征在于,還包括g) 從所述安全碼的一部分解碼一散列指示符;h) 從所述散列指示符中確定所述一組可接受的散列值。
全文摘要
用于生成ECGA的散列擴(kuò)展技術(shù)可用于提高單向散列函數(shù)的強(qiáng)度和/或在某些外部要求限制了散列位的個(gè)數(shù)并且該限制低于被認(rèn)為(或可能在將來)針對(duì)蠻力攻擊是安全的要求的任何情況下減少位的個(gè)數(shù)。例如,為減少人類輸入的安全碼的長度(并維持相同的安全性),和/或?yàn)樘岣呷祟愝斎氲陌踩a的強(qiáng)度(并維持安全碼的長度),可使用擴(kuò)展散列方法來生成和/或認(rèn)證該安全碼。
文檔編號(hào)H04L9/00GK101536395SQ200680022978
公開日2009年9月16日 申請(qǐng)日期2006年6月28日 優(yōu)先權(quán)日2005年6月28日
發(fā)明者M·羅伊, T·阿拉 申請(qǐng)人:微軟公司