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