• / 98
  • 下載費用:30 金幣  

支持高性能安全協議的裝置.pdf

摘要
申請專利號:

CN200910161368.5

申請日:

2009.08.10

公開號:

CN101997834B

公開日:

2015.01.07

當前法律狀態:

授權

有效性:

有權

法律詳情: 專利權的轉移號牌文件類型代碼:1602號牌文件序號:101737087327IPC(主分類):H04L 29/06專利號:ZL2009101613685登記生效日:20160720變更事項:專利權人變更前權利人:北京天宏繹網絡技術有限公司變更后權利人:北京多思技術服務有限公司變更后權利人:100195 北京市海淀區北塢村路甲25號北京靜芯園G座109室變更事項:地址變更前權利人:100195 北京市海淀區北塢村路甲25號靜芯園G座樓106室|||專利權的轉移IPC(主分類):H04L 29/06登記生效日:20160713變更事項:專利權人變更前權利人:北京多思安全芯片科技有限公司變更后權利人:北京天宏繹網絡技術有限公司變更事項:地址變更前權利人:100195 北京市海淀區北塢村路甲25號靜芯園G座樓108室變更后權利人:100195 北京市海淀區北塢村路甲25號靜芯園G座樓106室|||文件的公告送達IPC(主分類):H04L 29/06收件人:周燕文件名稱:手續合格通知書|||專利權的轉移號牌文件類型代碼:1602號牌文件序號:101729992946IPC(主分類):H04L 29/06專利號:ZL2009101613685登記生效日:20160308變更事項:專利權人變更前權利人:北京南思達科技發展有限公司變更后權利人:北京多思安全芯片科技有限公司變更事項:地址變更前權利人:100091 北京市海淀區紅山口甲3號工程維修大隊新建綜合樓189號一層變更后權利人:100019 北京市海淀區北塢村路甲25號靜芯園G座樓108室|||專利權的轉移IPC(主分類):H04L 29/06變更事項:專利權人變更前權利人:北京多思科技發展有限公司變更后權利人:北京南思達科技發展有限公司變更事項:地址變更前權利人:100080 北京市海淀區中關村南大街甲56號方圓大廈B801變更后權利人:100091 北京市海淀區紅山口甲3號工程維修大隊新建綜合樓189號一層登記生效日:20141224|||授權|||實質審查的生效號牌文件類型代碼:1604號牌文件序號:101071488444IPC(主分類):H04L 29/06專利申請號:2009101613685申請日:20090810|||公開
IPC分類號: H04L29/06 主分類號: H04L29/06
申請人: 北京多思科技發展有限公司
發明人: 劉大力; 曹春春
地址: 100080 北京市海淀區中關村南大街甲56號方圓大廈B801
優先權:
專利代理機構: 中國國際貿易促進委員會專利商標事務所 11038 代理人: 劉倜
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN200910161368.5

授權公告號:

|||||||||||||||101997834B||||||

法律狀態公告日:

2016.08.10|||2016.08.03|||2016.04.06|||2016.03.30|||2015.01.21|||2015.01.07|||2011.05.18|||2011.03.30

法律狀態類型:

專利申請權、專利權的轉移|||專利申請權、專利權的轉移|||文件的公告送達|||專利申請權、專利權的轉移|||專利申請權、專利權的轉移|||授權|||實質審查的生效|||公開

摘要

本發明公開一種安全處理器,特征在于,該安全處理器支持多種安全協議,該安全處理器包括:接口模塊,用于從安全處理器外部獲取包處理控制信息和待處理的包;以及包處理模塊,用于根據包處理控制信息依照安全協議對包進行處理。

權利要求書

1: 一種安全處理器, 特征在于, 該安全處理器至少部分是可重組的, 該安全處理器支持 多種安全協議, 該安全處理器包括 : 接口模塊, 用于從安全處理器外部獲取包處理控制信息和待處理的包 ; 以及 包處理模塊, 用于根據包處理控制信息依照安全協議對包進行處理。
2: 如權利要求 1 所述的安全處理器, 特征在于, 所述安全處理器還包括 : 公鑰模塊, 其與接口模塊相連, 用于提供大數算術運算和模冪乘運算。
3: 如權利要求 1 所述的安全處理器, 特征在于, 該安全處理器支持 IPsec 協議和 MPPE 協議, 其中 所述包處理控制信息包括第一包處理輸入指令和安全關聯 ; 所述包處理模塊對包處理輸入指令譯碼, 根據譯碼結果從接口獲取 SA 和待處理的包, 并根據 SA 中的設置對包進行 IPsec 協議和 / 或 MPPE 協議處理。
4: 一種安全處理器, 特征在于, 該安全處理器至少部分是可重組的, 該安全處理器支持 IPsec 協議和 MPPE 協議, 該安全處理器包括 : 接口模塊, 包括用于與主機通信的第一接口、 用于與外部存儲器或內存通信的第二接 口、 以及用于與網絡設備通信的第三接口 ; 數據通路, 與第一接口和第二接口連接, 所述數據通路包括多個數據通道 ; 包處理模塊, 其經由數據通路獲取第一包處理輸入指令和安全關聯, 并與第三接口通 信以獲取待處理的包, 所述包處理模塊根據安全關聯對包進行 IPsec 協議和 / 或 MPPE 協議 處理 ; 公鑰模塊, 用于提供大數算術運算和模冪乘運算, 所述公鑰模塊通過數據通路與所述 第一接口和第二接口通信 ; 以及 系統配置模塊, 用于提供對安全處理器的操作控制。
5: 如權利要求 3 或 4 所述的安全處理器, 特征在于 : 所述要處理的包還包括預先附加到包內的第二包處理輸入指令。
6: 如權利要求 1-4 中任一所述的安全處理器, 特征在于, 所述包處理模塊包括 : 指令模塊, 用于讀取包處理輸入指令, 將指令分配給包引擎模塊, 并產生包處理輸出指 令; 以及 一個或多個包引擎模塊, 用于對所分配的包處理輸入指令進行譯碼, 并根據譯碼解釋 讀取數據和 SA, 進行包頭和包尾的處理, 并根據 SA 的指示完成算法處理, 輸出處理后的包。
7: 如權利要求 6 所述的安全處理器, 特征在于, 所述指令模塊還包括仲裁模塊, 用于對包處理輸入指令進行仲裁, 將指令分配給包引 擎模塊, 并產生包處理輸出指令, 其中所述指令模塊能夠通過輪詢或中斷的方式獲取包處 理輸入指令。
8: 如權利要求 6 所述的安全處理器, 特征在于, 所述包引擎模塊還包括 : 指令和 SA 譯碼模塊, 用于對所分配的包處理輸入指令進行譯碼, 并根據譯碼解釋讀取 數據和 SA ; 以及 處理模塊, 根據 SA 的指示進行算法處理, 以及進行協議處理。
9: 如權利要求 8 所述的安全處理器, 特征在于, 所述包引擎模塊的處理模塊還包括包數據輸入輸出緩沖器。 2
10: 如權利要求 6 所述的安全處理器, 特征在于, 所述包引擎模塊還包括用于隨機數計算的隨機數模塊。
11: 如權利要求 2 和 4 中任一所述的安全處理器, 特征在于, 所述公鑰模塊包括 : 公鑰算法內核, 用于執行大數運算 ; 模冪運算器, 用于執行模冪乘運算 ; 以及 公鑰算法模塊控制器, 用于接收指令, 控制公鑰模塊的操作。
12: 如權利要求 11 所述的安全處理器, 特征在于, 所述公鑰模塊還包括存儲器, 用于存儲公鑰計算的數據, 也適于存儲安全關聯 SA。
13: 如權利要求 11 所述的安全處理器, 特征在于, 所述模冪運算器支持基本模冪乘運算操作或使用中國剩余定理的 RSA-CRT 操作。
14: 如權利要求 11 所述的安全處理器, 特征在于, 所述模冪運算器由多套獨立資源組成, 各資源實現的規格可以重組, 以實現更大規格 的數據操作。
15: 如權利要求 5 所述的安全處理器, 特征在于, 所述系統配置模塊包括下列中的一個 或多個 : 中斷模塊, 用于管理用于安全處理器操作所需的中斷 ; PLL 模塊和時鐘分頻模塊, 用于提供供安全處理器各模塊使用的時鐘 ; 隨機數模塊, 用于提供隨機數 ; 和 復位模塊, 用于控制各模塊的復位和激活。
16: 如權利要求 5 所述的安全處理器, 特征在于, 所述數據通路是 DMA 數據通路。
17: 如權利要求 16 所述的安全處理器, 特征在于, 所述 DMA 數據通路支持主模式傳輸和目標模式傳輸, 其中, 在所述主模式下, DMA 數據通路連接第一接口和包處理模塊, 在目標模式下, DAM 數據 通路將第一接口與系統配置模塊和 / 或安全處理器內的存儲器。
18: 如權利要求 1-4 中任一所述的安全處理器, 特征在于, 所述安全處理器基于宏指令體系結構。
19: 一種安全處理器, 特征在于, 該安全處理器至少部分是可重組的, 該安全處理器支 持多種安全協議, 該安全處理器包括 : 接口模塊, 包括用于與主機通信的第一接口、 用于與外部存儲器或內存通信的第二接 口、 以及用于與網絡設備通信的第三接口 ; 數據通路, 與第一接口和第二接口連接, 所述數據通路包括多個數據通道 ; 包處理模塊, 其是可重組的, 與第三接口通信以獲取待處理的包, 所述包處理模塊能夠 根據安全協議進行操作 ; 協議譯碼器, 通過控制所述包處理模塊來實現協議 ; 以及 系統配置模塊, 用于提供對安全處理器的操作控制, 所述系統配置模塊能夠執行系統 初始化、 注入以及錯誤邏輯控制。
20: 如權利要求 19 所述的安全處理器, 特征在于, 所述協議譯碼器對協議指令進行譯碼, 并依據協議指令的譯碼結果, 接收指令攜帶的 3 數據, 調用指令功能所要求的協議程序。
21: 如權利要求 19 所述的安全處理器, 特征在于, 所述包處理模塊包括 : 指令模塊, 用于讀取輸入指令, 將指令分配給包引擎模塊, 并產生輸出指令 ; 以及 一個或多個包引擎模塊, 來實現輸入指令功能以及對包的處理, 并輸出處理后的包。
22: 如權利要求 21 所述的安全處理器, 特征在于, 所述指令模塊還包括仲裁模塊, 用于對輸入指令進行仲裁, 將指令分配給包引擎模塊, 并產生輸出指令, 其中所述指令模塊能夠通過輪詢或中斷的方式獲取輸入指令。
23: 如權利要求 21 所述的安全處理器, 特征在于, 所述包引擎模塊還包括 : 指令譯碼模塊、 配置 IP、 可重組 IP、 大數運算和模冪運算模塊、 隨機數模塊, 其中所述配置 IP 和可重組 IP 用于實現多種密碼算法, 大數運算和模冪運算模塊用于 提供大數運算, 以及基本模冪乘運算操作和 / 或使用中國剩余定理的 RSA-CRT 操作, 而隨機 數模塊用于提供隨機數, 所述指令譯碼模塊對指令進行譯碼并通過譯碼結果來控制配置 IP、 可重組 IP、 大數運 算和模冪運算模塊、 隨機數模塊, 來實現指令功能以及對包的處理。
24: 如權利要求 21 所述的安全處理器, 特征在于, 所述安全處理器還包括公鑰模塊, 該 公鑰模塊包括 : 公鑰算法內核, 用于執行大數運算 ; 模冪運算器, 用于執行模冪乘運算和 / 或使用中國剩余定理的 RSA-CRT 操作 ; 所述包引擎模塊還包括 : 指令譯碼模塊、 配置 IP、 可重組 IP、 隨機數模塊, 其中所述配置 IP 和可重組 IP 用于實現多種密碼算法, 隨機數模塊用于提供隨機數, 所述指令譯碼模塊對指令進行譯碼并通過譯碼結果來控制配置 IP、 可重組 IP、 隨機數 模塊, 并協同公鑰算法模塊來實現指令功能以及對包的處理。
25: 如權利要求 21 所述的安全處理器, 特征在于, 所述安全處理器還包括用于提供隨機數的隨機數模塊以及公鑰模塊, 該公鑰模塊包 括: 公鑰算法內核, 用于執行大數運算 ; 模冪運算器, 用于執行模冪乘運算和 / 或使用中國 剩余定理的 RSA-CRT 操作 ; 所述包引擎模塊還包括 : 指令譯碼模塊、 配置 IP、 可重組 IP, 其中所述配置 IP 和可重組 IP 用于實現多種密碼算法, 所述指令譯碼模塊對指令進行譯碼并通過譯碼結果來控制配置 IP、 可重組 IP, 并協同 隨機數和 / 或模塊公鑰算法模塊來實現指令功能以及對包的處理。
26: 如權利要求 23-25 中任一所述的安全處理器, 特征在于, 大數運算和模冪運算模塊或所述模冪運算器包括多套獨立資源組成, 各資源實現的規 格能夠重組, 以實現更大規格的數據操作。
27: 如權利要求 19 中任一所述的安全處理器, 特征在于, 所述系統配置模塊還包括存 儲模塊, 用于存儲處理器操作所需的信息和數據, 所述存儲模塊包括信息區和數據區, 所述信息區用于存儲安全信息, 而所述數據區用 于存儲公鑰參數、 設備密鑰、 授權設備鑒權證書、 鑒權密鑰、 算法程序、 協議程序、 授權用戶 公鑰證書。 4
28: 如權利要求 19 或 20 所述的安全處理器, 特征在于, 所述數據通路是 DMA 數據通路。
29: 如權利要求 30 所述的安全處理器, 特征在于, 所述 DMA 數據通路支持主模式傳輸和目標模式傳輸, 其中, 在所述主模式下, DMA 數據通路連接第一接口和包處理模塊, 在目標模式下, DAM 數據 通路將第一接口與系統配置模塊和 / 或安全處理器內的存儲器。
30: 如權利要求 19 所述的處理器, 其特征在于, 所述協議譯碼器適于執行下列中的一 項或多項 : 指令狀態測試, 包括輸入輸出狀態測試 ; 指令注入測試 ; 指令譯碼, 包括指令調 度、 錯誤處理、 指令 I/O 操作 ; 以及通信狀態測試, 包括密級、 授權體制測試。

說明書


支持高性能安全協議的裝置

    【技術領域】
     本發明涉及安全處理器, 具體的, 涉及支持高性能安全協議的安全處理器。背景技術 隨著信息技術的飛速發展, 在處理器領域中, 可重組設計得到了原來越多的關注。
     典型的, 可重組邏輯由三部分組成 : 重組元素、 可控節點、 以及它們之間的連接網 絡。重組元素用于實現各種算法的基本操作成分, 是可重組邏輯用于構建各種算法的基本 元素。重組元素之間的連接網絡用于為各種算法建立所需的數據傳輸通路。顯然, 重組元 素及其連接網絡必須在可控節點的控制下才能實現不同的算法。
     可重組邏輯的電路結構和功能的改變是通過對可控節點賦以不同的編碼值來實 現的。算法的每一個操作步驟都是通過對多個可控節點賦予一定的控制編碼來完成的。所 述控制編碼也稱為配置文件。
     傳統的數據加密方法有兩種, 一種是軟件加密方法, 即用軟件實現加密 / 解密算 法, 在通用計算機上完成數據加密 / 解密操作 ; 另外一種是硬件加密方法, 即完全用硬件實 現某種加密 / 解密算法, 制造出針對某種加密 / 解密算法的 ASIC 芯片, 數據的加密 / 解密 在專用的加密芯片上實現。 軟件加密方法較為靈活, 但速度較慢 ; 而專用加密芯片的加 / 解 密速度很快, 但是由于其針對特定算法, 靈活性差。
     另外, 從安全的角度來講, 上述兩種加密方法都有極大的安全隱患。 對軟件加密方 法而言, 攻擊者可以用各種跟蹤工具秘密修改算法而使任何人都不知道。對專用密碼芯片 來講, 一旦芯片生產出來以后, 其實現的密碼算法是不可改變的, 然而任何算法都有可能被 攻破, 因此長期使用一種專用密碼芯片難以保證信息的安全。而且針對某種特定算法的專 用密碼芯片不能適應其它的密碼算法。此外, 專用密碼芯片所實現的算法在設計階段和生 產階段是已知的, 存在算法泄密的隱患。
     因此, 要使密碼芯片能夠靈活、 快速地實現多種不同的密碼算法, 則密碼芯片的體 系結構必須具有一定程度的靈活性。因此, 需要一種能夠提供可重組的密碼邏輯的安全處 理器, 以高效靈活地實現多種期望的算法, 從而提高系統密碼體系的安全性。
     另一方面, 隨著信息技術的高速發展, 危害信息安全的事件也不斷發生。VPN 是一 種確保遠程網絡之間能夠安全通信的技術, 通常用以實現相關組織或個人跨開放、 分布式 公用網絡 ( 如因特網 ) 的安全通信。VPN 實質上利用共享的因特網設施, 實現 “專用” 廣域 網絡, 最終以極低的費用為遠程用戶提供能和專用網絡媲美的保密通信服務。
     傳統形式的 VPN 采用 ESP 協議并工作在隧道模式, 這種形式的 VPN 被廣泛地使用 在企業中, 用于安全連接位于異地的企業計算機資源。
     圖 1 示出了典型的 VPN 應用情況。通信雙方通過各自的網關經 VPN 隧道連接, 而 通信信息經 VPN 芯片加密 / 脫密。
     Host1 將包發給 Gateway1。Host1 到 Gateway1 之間的通訊可以是沒有安全保護 的。Gateway1( 路由或防火墻 ) 收到 Host1 發來的包, VPN 進程為收到的包加入新的包頭,
     其中源地址 : Gateway1 ; 目的地址 : Gateway2, 加密發出。 兩地之間通過 Gateway1-Gateway2 的虛擬的專有通道 (Tunnel) 進行通訊。Gateway2 收到 Gateway1 發來的包, 認證, 解密, 去 掉最外層的包頭, 轉發給 Host2。
     從企業用戶的角度看, 數據報從 Gateway1 到 Gateway2 只經歷了一跳, 這是因為原 數據報的包頭被封裝在新的包頭之內, TTL 由 Gateway1 到 Gateway2 只減了 1, 就好像沒有 穿越 Internet, 而是一直在私有網絡里傳輸一樣。
     從黑客角度來看, 因為加密的緣故, 黑客無法知道通訊兩端的內容, 甚至通訊所使 用的上層協議, 如 TCP 還是 UDP, 都無法知道。 并且真實地址被封裝并加密, 黑客也無法知道 實際是哪兩臺機器在通信。 另外, 因為無法通過完整性認證的包將被網關丟棄, 篡改包的內 容也是沒有任何意義的。
     由于最初設計 TCP/IP 協議簇時, 人們并沒有重點考慮它的安全性, 使得以 Ipv4 為 代表的 TCP/IP 協議簇存在以下的安全問題 : IP 協議沒有為通信提供良好的數據源認證機 制, 僅采用基于 IP 地址的身份認證機制 ; IP 協議沒有為數據提供強的完整性保護機制 ; IP 協議沒有為數據提供任何形式的機密性保護 ; 協議本身的設計存在一些細節上的缺陷和實 現上的安全漏洞, 使各種安全攻擊有機可乘。 IPSec 正是為了彌補 TCP/IP 協議簇的安全缺陷, 為 IP 層以及上層協議提供保護而 設計的。它是由 IETF IPSec 工作組于 1998 年制定的一組基于密碼學的安全的開放網絡安 全協議, 總稱 IP 安全體系結構, 簡稱 IPSec。
     IPSec 的設計目標是 : 為 IPv4 和 Ipv6 提供可互操作的, 高質量的, 基于密碼學的 安全性。它工作在 IP 層, 提供訪問控制, 無連接的完整性, 數據源認證, 機密性, 以及有限的 數據流機密性, 以及防重放攻擊等安全服務。在 IP 層上提供安全服務, 具有較好的安全一 致性和共享性及應用范圍。這是因為, IP 層可為上層協議無縫地提供安全保障, 各種應用 程序可以享用 IP 層提供的安全服務和密鑰管理, 而不必設計自己的安全機制, 因此減少密 鑰協商的開銷, 也降低了產生安全漏洞的可能性。
     IPsec 中有兩個獨立的用于安全傳輸數據的協議 : “Authentication Header” (授 權頭, AH) 和 “Encapsulating SecurityPayload” ( 封裝安全有效載荷, ESP)。AH 為數據流 提供數據完整性認證的服務。ESP 為所傳輸數據提供加密和數據完整性認證的服務。
     IPSec 協議通過 AH 和 ESP 協議對傳輸的數據提供完整性認證和加密的安全服務。 在密鑰的獲取方面, IPSec 提供了 IKE 協議, 使通訊的雙方能夠通過安全的自動協商獲得相 同的密鑰。安全協議部分定義了對通信的各種保護方式, 密鑰協商部分定義了如何為安全 協議協商保護參數, 以及如何認證通信實體的身份。
     IPSec 密鑰管理主要是由 IKE 協議完成。IKE 用于動態安全關聯 SA 及提供所需要 的經過認證的密鑰材料。
     IPSec 可以在主機, 安全網關 ( 指實現 IPSec 協議的中間系統, 如實現 IPSec 的路 由器或防火墻就是一個安全網關 ) 或在兩者中同時實施和部署。用戶可以根據對安全服務 的需要決定到底在什么地方實施。
     IPsec 協議有兩種工作模式。傳輸模式 (Transport Mode) 將原 IP 包中的數據部 分進行封裝, 從而提供了端對端的安全連接。隧道模式 (Tunnel Mode) 封裝整個 IP 包, 從 而建立網關到網關間的安全的虛擬的一跳 (hop)。常常利用隧道建立跨越 Internet 區域
     的連接兩個網關的隧道, 從而組成傳統方式的 VPN(Virtual Private Network, 虛擬專用網 絡 )。
     在 IPSec 傳送加密數據之前, IPSec 通訊的雙方需要配置相匹配的用于安全通訊 的參數, 如加密算法及密鑰等。這可以通過手工配置, 或使用 IKE 協議進行協商獲得。IKE 協議是用于 IPSec 通訊的雙方相互認證及協商安全通訊參數的一系列消息的交換。協商的 內容包括 : 通信將使用的加密算法和認證算法, 密鑰長度和密鑰的有效期等, 并且最終雙方 通過 Deffie-Hellman 算法得到共知密鑰等。
     IPSec 協議支持的數據加密算法包括 DES, 3DES 和 AES 等, 支持的完整性認證算法 包括 : MD5, SHA-1, H-MAC 等。
     用 IPSec 保護一個 IP 數據流之前, 需先建立一個安全關聯 SA。所謂安全關聯 SA 是指通信對等方之間為了給需要受保護的數據流提供安全服務時而對某些要素的一種協 定。如 IPSec 協議, 協議的操作模式, 密碼算法, 密鑰, 密鑰的生存周期等。
     一個安全關聯由三個參數唯一指定 :
     安全參數索引 SPI : 一個與 SA 相關的位串, 僅在本地有意義。SPI 由 AH 和 ESP 攜 帶, 使得接收系統能選擇合適的 SA 處理接收包。 IP 目的地址 : 目前, 只允許使用單一地址, 表示 SA 的目的地址, 可以是用戶末端系 統, 防火墻或路由器。
     安全協議標識 : 標識該關聯是一個 AH 安全關聯還是 ESP 安全關聯。
     安全關聯 SA 的組合是指一個 SA 不能同時對 IP 數據報提供 AH 和 ESP 服務, 如果 需要提供多種安全保護, 就需要使用多個 SA。當把一系列 SA 應用于 IP 數據報時, 稱這些 SA 為 SA 集束。SA 集束中各個 SA 應用于始自或者到達特定主機的數據。多個 SA 可以用傳 輸鄰接和嵌套隧道兩種方式聯合起來組成集束。
     SA 可以手工或動態創建, 當用戶數量不多, 而且密鑰的更新頻率不高時, 可以選擇 使用手工建立的方式。但當用戶較多, 網絡規模較大時, 就應該選擇自動方式。IKE 就是 IPSec 規定的一種用于動態管理和維護 SA 的協議, 它使用了兩個交換階段, 定義了四種交 換模式, 允許使用四種認證方法。
     IKE 的基礎是 ISAKMP、 Oakley 和 SKEME 等三個協議, 它沿用了 ISAKMP 的基礎, Oakley 的模式以及 SKEME 的共享和密鑰更新技術。由于 IKE 以 ISAKMP 為框架, 所以它使 用了兩個交換階段, 階段一用于建立 IKE SA, 階段二利用已建立的 IKE SA 為 IPSec 協商具 體的一個或多個安全關聯, 即建立 IPSec SA。同時, IKE 定義了交換模式, 即主模式, 野蠻模 式, 快速模式和新群模式。
     IKE 允許四種認證方法, 分別是基于數字簽名的認證, 基于公鑰加密的認證, 基于 修訂的公鑰加密的認證和基于預共享密鑰的認證。
     IPsec VPN
     IPSec VPN 是基于 IPSec 協議建立的虛擬專用網絡。實現 IPsec 的方案無外乎是 硬件和軟件兩種, 目前大部分是純軟件方式實現, 少數以硬件方式實現的也只是指產品的 形式, 往往用專門的芯片來做加解密, 在主控的 CPU 上用軟件實現 IPsec 協議。這樣的方式 在低速系統上可行, 但在 Gbit 線速路由器系統中不能滿足性能要求。
     由于 IPSec 協議簇主要是為解決 TCP/IP 協議簇的安全性問題而設計的, 并非專門
     為 VPN 設計, 所以將 IPSec 作為安全隧道協議支持 VPN 時, 就會有一些固有的缺陷 :
     (1) 不支持基于用戶的鑒別。 雖然 IPSec 的安全機制是最完善的, 但在安全認證方 面 IPSec 僅提供數據源認證, 不支持基于用戶的鑒別, 這對于利用動態地址構建隧道的情 況是無法滿足安全要求的。
     (2) 不支持動態地址和多種 VPN 應用模式。 。
     (3) 不支持多協議。IPSec 不支持對非 IP 協議的封裝, 所以, 就其對 VPN 的支持而 言, 不符合虛擬網絡自治和協議獨立的基本要求。
     (4) 關于 IKE 的問題。IPSec 除了提供鍵入密鑰的手工管理方式外, 主要推薦采用 IKE 進行安全關聯和密鑰的協商, 其優點是定義好安全策略后, 可以自動協商安全關聯和密 鑰, 無需用戶維護。 但是, 由于安全關聯和密鑰品質對于傳輸安全的重要性, IKE 在應用方面 過于靈活, 又十分復雜, 加之 IKE 在安全性方面存在一定的局限性, 它的自動協商, 反而導 致了安全管理人員對整個過程的不可控。我國商用密碼的實際應用情況是, 由密碼管理中 心進行密碼的算法配置, 密鑰管理中心進行高品質密鑰編制, 檢驗, 存儲, 備份, 分配, 存檔, 銷毀, 恢復, 審計等, 所以需要由安全管理中心替代 IKE 的工作。
     (5) 關于服務質量保證問題。IPSec 的 Qos 保證主要依賴于 IP 網絡的 Qos 解決方 案, 但在 IP 網絡的 Qos 保證問題一直沒有得到很好地解決, 尤其是實際運行的 IP 網絡幾乎 仍是盡力而為的 Qos 保證策略。
     針對上述問題, 本申請的發明人提出了一種支持高性能協議的安全處理器。
     本發明采用軟、 硬結合的方法, 既考慮系統性能本身的優化, 將相對技術穩定的部 分以及系統性能的瓶頸用硬件實現, 以提高系統的速度和可靠性, 同時又顧及技術的發展, 將需要不斷更新的、 應用策略、 包處理、 IKE 處理等部分用宏指令體系的硬件方式實現。 發明內容 傳統的 IPSEC VPN 系統大部分是用軟件來實現認證和加解密計算的, 少數以硬件 方式實現的也只是指產品的形式, 往往用專門的芯片來做加解密, 在主控的 CPU 上用軟件 實現 IPsec 協議。這樣的方式在低速系統上可行, 但在高速系統 ( 如, Gbit 線速路由器系 統 ) 中不能滿足性能要求。
     本發明的 IPSEC VPN 系統是驅動芯片來實現認證和加解密計算的, 在穩定性、 安全 性和工作效率上有很大提升。
     附圖說明
     下面結合附圖介紹示例性的實施例介紹本發明的各種方案、 特點、 優點及應用, 其 中:
     圖 1 概念性地示出了 VPN 的典型應用 ;
     圖 2 示出了本發明一個實施方案的 VPN 芯片的大體框圖 ;
     圖 3 示出了本發明一個更具體的實施例的 VPN 芯片的體系結構 ;
     圖 4 示出了本發明一個實施方案的 VPN 芯片的產品應用體系結構 ;
     圖 5 示出了根據本發明的 VPN 芯片的包處理模塊的示意性框圖 ;
     圖 6 示出了根據本發明的 VPN 芯片的公鑰模塊的示意框圖 ;圖 7 示出了根據本發明一個實施方案的接口宏指令控制器結構 ; 圖 8 示出了本發明一個實施例的數據傳輸路徑的示意性示出 ; 圖 9 示出了根據本發明一個實施例的 DMA 控制與狀態寄存器 ; 圖 10 示出了 PCI DMA 控制與狀態寄存器 ; 圖 11 示出了 EMI DMA 控制器寄存器 ; 圖 12 中示出了根據本發明一個實施方式的 DMA 數據通路的示例性配置 ; 圖 13 示出了根據本發明一個實施方式的 SPI 接口控制 ; 圖 14 示出了根據本發明的 SPI3 配置寄存器 ; 圖 15 示出了本發明 VPN 芯片中的一種包處理體系結構 ; 圖 16 示出了根據本發明的包處理輸入宏指令的輸入 ; 圖 17 示出了本發明的包處理體系結構的示意框圖 ; 圖 18 示出了本發明中安全關聯 (SA) 的記錄格式關聯 ; 圖 19 示出了本發明包處理模塊的配置寄存器模塊 ; 圖 20 示出了根據本發明的基本加密包格式 ; 圖 21 示出了根據本發明的基本解密包格式 ;圖 22 示出了基本 HASH 包格式 ;
     圖 23 示出了基本 HASH- 加密包格式 ;
     圖 24 示出了根據本發明一個實施例的基本 HASH- 解密包格式 ;
     圖 25 示出了根據本發明一個實施例的 ESP 輸出隧道模式包格式 ;
     圖 26 示出了根據本發明一個實施例的 ESP 輸入隧道模式包格式 ;
     圖 27 示出了根據本發明一個實施例的 ESP 輸出傳輸模式包格式 ;
     圖 28 示出了根據本發明一個實施例的 ESP 輸入傳輸模式包格式 ;
     圖 29 用于說明根據本發明實施例的 AH 包頭定位及可變位處理 (IPV6) ;
     圖 30 用于說明根據本發明實施例的 AH 包頭定位及可變位處理 (IPV4) ;
     圖 31 示出了根據本發明實施例的 AH 輸出包格式 ;
     圖 32 示出了根據本發明實施例的 AH 輸入包格式 ;
     圖 33 示出了根據本發明實施例的 ESP 和 AH 輸出隧道模式包格式 ;
     圖 34 示出了根據本發明實施例的 ESP 和 AH 輸入隧道模式包格式 ;
     圖 35 示出了根據本發明實施例的 SPI-3 常規輸出包格式 ;
     圖 36 示出了根據本發明實施例的 SPI-3 帶復制有效載荷的 AH 輸出包格式 ;
     圖 37 示出了根據本發明實施例的 MPPE 輸出 ;
     圖 39 進一步示出了根據本發明一個實施例的復位宏指令語用圖 38 示出了根據本 發明實施例的 MPPE 輸入 ;
     圖 40 示出了根據本發明實施例的算法 IP 的模塊示意框圖 ;
     圖 41 示意性地示出了分組算法模塊激活宏指令語用 ;
     圖 42 示出了根據本發明另一方面的算法模塊激活宏指令語用 ;
     圖 43 示出了根據本發明實施例的公鑰算法模塊結構 ;
     圖 44 示出了根據本發明實施例的大數值運算模塊 ( 公鑰算法內核 ) 結構 ;
     圖 45 示出了根據本發明一個實施例的模冪運算器 ;圖 46 示出了根據本發明一個實施例的隨機數模塊結構 ; 圖 47 示出了根據本發明實施例的隨機數模塊指令配置 ; 圖 48 示出了本發明的 RNG 宏指令語用 ; 圖 49 示出了根據本發明實施例的 PLL 控制以及 PLL 控制寄存器宏指令語用 ; 圖 50 示出了根據本發明實施例的中斷宏指令寄存器的配置 ; 圖 51 示出了根據本發明實施例的中斷控制器 ; 圖 52 示出了本發明 VPN 芯片的總體工作流程 ; 圖 53 示出了 PCI 配置空間配置子流程 ; 圖 54 示出了本發明 VPN 芯片的芯片初始化子流程 ; 圖 55 示出了本發明 VPN 芯片的芯片啟動子流程 ; 圖 56 示出了本發明 VPN 芯片的宏指令處理過程 ; 圖 57 示出了本發明 VPN 芯片的宏指令啟動和輸入子流程 ; 圖 58 示出了本發明 VPN 芯片的 FIFO 中宏指令仲裁分配過程 ; 圖 59 示出了本發明 VPN 芯片的包引擎編碼 ( 加密 ) 工作流程 ; 圖 60 示出了本發明 VPN 芯片中包引擎譯碼子流程 ; 圖 61 示出了本發明 VPN 芯片中包引擎數據處理子流程 ; 圖 62 示出了本發明 VPN 芯片中輸出宏指令處理子流程 ; 圖 63 示出了本發明 VPN 芯片中 SPI-3 包處理流程 ; 以及 圖 64 示出了本發明 VPN 芯片根據另一實施例的實現方案。具體實施方式
     下面參考附圖說明本發明的優選實施例。
     圖 2 示出了本發明一個實施方案的 VPN 芯片的大體框圖。本發明的 VPN 芯片包括 包處理模塊 ( 也可稱為內核運算模塊 ) 以及接口模塊。包處理模塊可以從接口模塊接收控 制信息 ( 控制指令 ), 獲取要處理的數據包 ( 例如, IP 包 ), 根據對控制指令的解碼從接口 獲取處理所依據的 SA, 并根據 SA 的指示, 對包進行 IPsec 協議 ( 例如 AH 和 / 或 ESP, 也包 括 MPPE) 處理以及相關的加密解密處理。包處理模塊可以包括一個或多個用于對包進行處 理的包處理引擎模塊 ( 以下可簡稱為包引擎模塊 )。
     接口模塊可以包括多種接口, 例如與主機的接口, 與外部存儲器的接口和或與內 存的接口、 與網絡設備 ( 例如路由器 ) 的接口。還可以包括與主板的接口。
     本發明的 VPN 芯片還可以進一步包括公鑰模塊, 其通過接口獲取數據以及控制信 息, 進行大數 ( 大規格數 ) 算術運算和模冪乘運算。公鑰模塊可以與硬件指令一起為主機 應用程序提供完整的公鑰服務 ( 如 IKE)。
     本發明的 VPN 芯片還可以進一步包括系統配置模塊, 用于提供對安全處理器的操 作控制。對于某些實施方式, 系統配置模塊可能是必須的, 但是對于其他的實施例, 其僅是 優選存在的。
     在一些實施例中, 系統配置模塊可以包括鎖相環 (PLL) 模塊、 時鐘分頻模塊、 隨機 數模塊、 復位模塊、 中斷模塊等。系統配置模塊可以通過 PCI 接口與主機連接, 并可以與處 理器內部的其他模塊相連, 以向安全處理器各模塊相應提供操作控制 ( 包括中斷、 時鐘、 數據等 )。但是, 系統配置模塊的結構并不限于此。例如, 隨機數模塊也可以設置在包處理模 塊中, 也可以設置為獨立的模塊。系統配置模塊也可以不包含復位模塊。甚至本發明的處 理器可以不包括 PLL 模塊和 / 或時鐘分頻模塊, 例如可以利用外部輸入的時鐘。
     圖 3 示出了本發明一個更具體的實施例的 VPN 芯片的體系結構。 如圖所示, VPN 芯 片包括包處理模塊、 數據通路、 公鑰模塊、 系統配置模塊, 還包括 PCI 接口、 EMI 接口和 SPI-3 接口。其中 VPN 芯片通過 PCI/PCI-X 接口與主機連接, 通過 EMI 接口連接外部存儲設備, 而 通過 SPI-3 接口連接網絡設備 ( 例如路由器 )。所述包處理模塊包括宏指令模塊和多個包 引擎模塊。這里, 示出了根據 DMA 標準的數據通路, 用于包處理模塊和公鑰模塊以及與相關 接口的連接, 這僅是示例性的, 本領域技術人員將理解, 也可以采用其他的適當數據通路。
     本發明所采用的 PCI 接口可以是 PCI、 PCI-X 或 PCI-E 接口或兼容接口, 其遵循主 機的 PCI、 PCI-X、 或 PCI-E 規范, 并可以在主模式和目標模式下工作。在主模式下, PCI 接口 連接 DMA 數據通路 ; 而在目標模式下, 其連接系統配置模塊和 / 或存儲器。
     本發明所采用的 EMI 接口可以連接 DMA 數據通路和外部存儲器 ( 諸如, SRAM、 SSRAM、 SDRAM 等 )。而本發明的內存接口 ( 例如, DDR 系列的接口 ) 可以連接 DMA 數據通路 和內存 ( 例如主機的內存 )。 本發明所采用的 SPI 接口模塊遵循 SPI 系列規范, 其可以連接包處理模塊和路由 器。在本發明的 VPN 芯片的一些實施方案中, 可以采用例如 SPI-3 或 SPI-4 標準的接口。
     本發明的 VPN 芯片所采用的數據通路可以是 DMA 數據通路。 DMA 是高性能、 多通道 的直接存儲器存取, 主要執行外部接口與內部模塊數據的高速雙向傳輸操作。 DMA 數據通路 僅是示例, 也可以采用其他的高速數據通路。
     在一個具體實現方案中, 本發明的 DMA 控制器有 19 個數據傳輸通道, 由 DMA 仲裁 控制通道的使用順序。本領域技術人員將理解, 可以根據需要使用更多或更少的數據傳輸 通道。
     其中, DMA0 通道用于主機發起 (PCI) 的 DMA 主設備方式傳輸, 但其不受 DMA 控制, 由主機直接控制。另外 18 個 DMAn 通道被用于支持內部包處理的 DMA 傳輸, 其傳輸方式由 DMA 控制。DMA 控制器與 I/O 接口一起用于芯片數據的輸入輸出。包處理模塊可以通過 DMA 數據通路接收來自 PCI-X 或 EMI 或內存的指令或數據。關于數據通路的具體說明將在下文 中進行。
     圖 4 示出了本發明一個實施方案的 VPN 芯片的產品應用體系結構。本發明的 VPN 安全芯片可以通過外部存儲器接口 (EMI) 或內存接口 ( 例如, DDR) 與安全關聯庫 (SA) 交 互, 通過串行外設接口 (SPI-3) 與路由器 ( 或其他包輸入 / 輸出設備 ) 通信, 通過外設部件 互連 (PCI) 接口與主機通信。而主機可以關聯有安全策略庫。主機和路由器可以連通到網 絡。
     圖 5 示出了根據本發明的 VPN 芯片的包處理模塊的示意性框圖。本發明的包處理 模塊包括宏指令模塊、 仲裁模塊、 配置寄存器、 以及若干包引擎模塊。 所述包引擎模塊包括 : 宏指令和 SA 譯碼模塊、 INFIFO、 協議模塊 ( 包括 AH 協議、 ESP 協議、 MPPE 協議等 )、 OUTFIFO、 以及算法模塊 ( 包括加密算法 : AES/DES/3DES、 ARC4、 國家加密算法 ; 摘要算法 : MD5/SHA1、 國家摘要算法等 )。
     在本發明的一個實施例中, 包處理引擎是可重組的。例如多個算法可以包括相同
     的基本重組元素。然而, 可重組設計不限于密碼算法模塊, 不僅是包處理引擎是可重組的, 系統配置也可以是可重組的, 例如, 中斷優先級可重組、 存儲器同異步方式可重組、 總線規 范以及大小尾端數據結構表現方式可重組、 數據通路可重組等等。用于可重組邏輯的配置 文件可以存儲在芯片的存儲器中, 也可以通過其他方式提供, 例如通過指令提供。因此, 可 以說本發明的 VPN 芯片至少是部分可重組的。
     包處理模塊包括 8 個包引擎模塊, 從而可以同時并行處理 8 個包。但這僅是示意 性的, 可以包括更多或更少個包處理引擎。同樣的, 所述算法也僅是示例性的, 本領域技術 人員將理解, 可以包括任何期望的算法。所述包處理模塊可以與 DMA 通路和 SPI-3 接口連 接。同樣的, 在本發明中 DMA 通路包括通道 1-18 和通道 0, 這僅是示例性的, 可以根據需要 設置更多或更少的通道, 也可以選擇任一個特定的通道來執行通道 0 的功能和作用。
     圖 6 示出了根據本發明的 VPN 芯片的公鑰模塊的示意框圖。公鑰模塊可以包括模 冪乘模塊和大數模塊 ( 將在下文中具體說明 )。 在目標模式下, 公鑰模塊可以與 PCI 接口連 接。公鑰模塊還可以連接 DMA 數據通道 0 和 RAM。
     下面更詳細說明本發明 VPN 芯片的接口以及接口宏指令控制器結構。
     根據本發明的一個實施方案, 本發明 VPN 安全芯片的接口模塊可以包括 : PCI 接口 ( 支持 33 和 66MHz)/PCI-X 接口 ( 支持 100 和 133MHz)/PCI-E ; EMI 接口, 其可以支持支持 SDRAM、 異步 SRAM 和雙端口 SSRAM 設備連接擴展存儲器接口, 也支持 SDRAM、 異步 SRAM 和雙 端口 SSRAM 的任何組合 ; 以及 SPI 接口 ( 如, SPI3, SPI4)。
     本發明 VPN 安全芯片 PCI 接口、 PCI-X 接口支持 32 位和 64 位總線 ; EMI 數據總線 寬度在 32 位至 64 位之間選擇, 且支持字節寫 ; 通過 EMI 接口最大內存容量為 256M 字節 ; SPI-3 接口可以只支持 32 位數據規格。
     本領域技術人員將理解, 對所采用的接口、 接口采用的頻率、 數據規格、 位寬、 存儲 容量等沒有具體的限制, 可以根據需要選擇。如前所述的, 本發明也可以采用 PCI-E 接口或 者 SPI-4 接口等等。
     本發明中的 PCI/PCI-X/PCI-E、 SPI3/4、 EMI 等接口均是依據相應標準設計, 包括 交易模式、 配置寄存器語義、 交易規則、 數據映射以及控制等。
     圖 7 示出了根據本發明一個實施方案的接口宏指令控制器結構。在本發明的一個 實施例中, 所有宏指令配置寄存器和隊列均在 PCI 配置寄存器空間和內存空間統一編址。 宏指令根據靜態宏指令寄存器的設置, 決定來自 PCI、 SPI3 或 EMI ; 安全策略 SA 根據動態宏 指令寄存器的設置, 決定來自 PCI 或 EMI 或公鑰算法 (PKA) 模塊的 RAM ; 宏指令隊列的選擇 也是根據靜態宏指令寄存器的設置, 來自 PCI 時隊列有例如 32 組表項, 來自 SPI3 時隊列有 例如 5 組表項。
     所有芯片的內部數據資源的配置均由 PCI 寄存器空間和內存空間統一配置。即 : 芯片的內部數據資源是 PCI 總線的映射。接口的控制通過宏指令配置信息進行, 而宏指令 配置信息均由主機建立、 更新。
     宏指令對接口模塊的配置和控制包括 : PCI 接口模塊配置, 其進行宏指令配置文 件的訪問 ( 裝載和讀取宏指令信息 ), 進行數據輸入輸出管理 ; SPI3 接口模塊配置 : 進行包 處理宏指令和包數據的輸入輸出管理與控制 ; EMI 接口模塊配置 : 進行包處理宏指令和安 全策略 SA 的輸入輸出管理與控制 ; 三個外部接口與內部總線進行數據或指令傳輸, 交換。在本發明的一個實施方案中, SPI3 接口獨立與包處理模塊建立數據和指令關系 ; PCI 接口與 SPI3 接口可以分別處理包處理宏指令和數據包處理關系 ; EMI 接口與 PCI 接口 可以分別處理包處理宏指令和 SA 關系或包處理宏指令和數據包處理與 SA 關系 ; 如果 PCI 直接與 EMI 發生操作關系, 僅能通過芯片內部的緩存實現, 此時, 數據傳輸長度依據 EMI 指 令配置的長度 ( 或與 PCI 呼叫傳輸的長度之比, 取較小值 )。
     本發明的處理器可以支持如下 PCI 規范能力 : 廢棄操作、 自動回復、 目標設備和主 設備模式傳輸、 奇偶校驗、 存儲器讀、 存儲器寫、 配置空間讀和配置空間寫能力。
     在一個實施方案中, 本發明的 VPN 芯片提供 1 個 64 位最高 100MHz 的 PCI-X( 兼容 PCI) 的總線接口。在本發明的一個實施方式中, 在 PCI-X 總線上可以連接有其他主設備有 NP 處理器或其他處理器, 而本發明的 VPN 芯片僅作為在 PCI-X 總線上 1 個 128K 字節的單 塊連續存儲空間的目標設備。在該目標設備中的編址, 又被分配給芯片內部模塊。本發明 的 VPN 芯片的 PCI-X 目標設備存儲地址可以通過 17 個位的地址存取。PCI-X 地址的其余位 被芯片解碼, 以確定 PCI-X 總線設備的尋址 ( 呼叫 ) 是否與芯片 PCI-X 存儲器基址寄存器 的值匹配, 從而確定 VPN 芯片是否為此次 PCI-X 的目標設備。需要注意的是, 在該實施方案 中, PCI-X 地址的其余位可以并不寫入 VPN 芯片的寄存器。
     在本發明中, 對于指令配置寄存器訪問, 可以直接存儲到寄存器。對于數據傳輸, 通常情況, 目標模式傳遞配置寄存器數據, 主模式是由芯片發起, 因此芯片已知源和目的。 對于輸入, 主機有配置數據和數據傳輸, 兩者在芯片響應時, 要仲裁, 加入輸入數據緩沖區 是需的 ( 只加入一組緩沖 )。 對于輸出, 芯片內部所有數據都有緩沖, 因此, 在本發明的一個 實施例中, PCI 數據緩沖區僅僅設計一組輸入緩沖。
     在一個實施例中, 在主模式下, PCI 接口連接至 DMA 數據通路 ; 而在目標模式下, 其 連接至系統配置模塊和 / 或存儲器。
     下面說明在本發明的實施例中所使用的數據通路。在本發明的一個實現方案中, 提供了數據總線控制器 ( 例如, 64 位 ), 該控制器可有效用于在主機數據接口 PCI、 包處理模 塊、 內部內存和 / 或外部存儲器 EMI 之間的數據傳輸。在本發明的一個實現方案中, 該數據 總線控制器被實現為 DMA 控制器。
     該 DMA 控制器主要是負責外部接口與芯片內部之間的數據 ( 包括指令 ) 傳輸 ; 作 為數據傳輸通道, 能夠接收要傳輸數據的信息, 如 ID、 地址、 長度、 模式等 ; 控制 DMA 的 19 個 通道的使用順序 ; 根據體系要求對所傳輸的數據進行大小尾端轉換控制。
     在本發明的該實現方案中, DMA 是根據 VPN 體系中外部接口與內部模塊間數據傳 輸的需要而設計的數據通路。而外部接口與芯片內部數據的數據表現形式, 存儲形式以及 傳輸形式可能不同, 需要有大小尾端轉換控制。
     由于存在多個通道, 需進行 DMA 仲裁控制。 19 個通道可以同時發申請, 仲裁輪詢控 制 19 個通道的使用, 在接收到申請后, 仲裁要輪詢控制發出允許信號。與外部接口有數據 傳輸關系的每個內部模塊都有自己的通路, 可同時發申請, 由仲裁控制通路的占用順序。 另 一方面, 數據大小尾端轉換控制需要在 PCI、 EMI 對內部及內部對 PCI、 EMI 的傳輸接口處完 成。
     在本發明中, DMA 數據傳輸控制類包括 : 主機發起 - 主機主控的指令配置操作控 制; 主機發起 - 芯片主控的指令配置操作控制 ; 芯片發起 - 芯片主控的指令配置操作控制。所述輸出傳輸控制涉及 PCI 總線、 EMI 總線、 包處理總線和內部總線。
     圖 8 示出了本發明一個實施例的數據傳輸路徑的示意性示出。圖中示出了三個外 部接口 : PCI, SPI3, EMI ; 4 條總線 : 包數據總線 1, EMI 總線 2, PCI 總線 3, 內部總線 4。主機 通過 PCI 有主模式傳輸 ( 包處理總線, EMI 總線, 內部總線 ) 和目標模式傳輸 (EMI 總線和 內部總線 ), 且優先響應目標模式。芯片通過 PCI 有主控方式的 DMA 傳輸 ( 包括主機發起或 芯片發起 ) 以及芯片目標模式的非 DMA 方式傳輸 (PCI 到 EMI, PCI 到內部 )。
     直接存儲器存取 (DMA) 控制器是使用狀態機邏輯實現控制的內部總線通路開關 的自動選擇。當一個宏指令譯碼執行時, 控制信號驅動 DMA 的數據同時操作。
     DMA 控制器以 PCI 總線為主控 ( 發起, 主控 ), 可以控制選擇內部宏指令寄存器、 包 處理模塊 ( 輸入輸出數據緩存 )、 公鑰存儲器的數據通路, 完成數據交換。 DMA 控制器以 PCI 總線為發起 ( 芯片主控 ), 可以控制選擇宏指令隊列輸入輸出, 分段合包宏指令輸入, SA 信 息輸入, 密文數據輸出等數據交換。
     芯片中的 DMA 控制器有 19 個控制通道, 允許任意時刻有 19 個 DMA 交易能夠等待 執行。當主模式和目標模式同時申請使用 DMA 控制器時, 目標模式傳輸優先處理。由于 PCI 和 EMI 傳輸是獨立的, 且兩個申請的源目地址均不同時, 能夠同時進行兩個 DMA 傳輸。主機 只能直接控制 DMA 通道 0。其它的通道由芯片的內部狀態機根據指令控制自動發起控制并 完成數據交換。
     下表具體示出了一種數據傳輸路徑分配。 數據通道 0 1 主要用于 : 主要用于主機發起芯片控制模式的數據傳輸。 由芯片發起的 DMA 主模式傳輸。輸入宏指令隊 列和輸出宏指令隊列管理器 “包處理宏指令” 由芯片發起的 DMA 主模式傳輸。輸入分段和輸 出合包 “包處理的分段合包宏指令” 包處理模塊實施的數據選擇。第 1 個包模塊通路 : SA1“第 1 個包引擎的 SA 與狀態信息” 包處理模塊實施的數據選擇。第 1 個包模塊通路 : 第 1 個包引擎的輸入數據和輸出數據 包處理模塊實施的數據選擇。第 2 個包模塊通路 : SA2“第 2 個包引擎的 SA 與狀態信息”234515101997834 A CN 101997839說6明書11/59 頁包處理模塊實施的數據選擇。第 2 個包模塊通路 : 第 2 個包引擎的輸入數據和輸出數據 ......... 包處理模塊實施的數據選擇。第 8 個模塊通路 : SA8“第 8 個包引擎的 SA 與狀態信息” 包處理模塊實施的數據選擇。第 8 個模塊通路 : 第 8 個包引擎的輸入數據和輸出數據7 ~ 16 1718這種分配僅是示例性的, 本領域技術人員將理解, 可以根據需要任意進行設置。
     根據本發明, 數據傳輸的發起方可以是主機或芯片 ; 數據傳輸的設備可以是主設 備或目標設備 ; 數據傳輸的方式可以是 DMA 方式或非 DMA( 如, 源目尋址 ) 方式 ; 數據傳輸的 對象可以是 PCI、 EMI、 內部 ( 寄存器、 存儲器、 隊列 )。
     下面具體說明數據傳輸 :
     在 DMA 方式下, 通過仲裁器控制完成數據傳輸, 僅當主機發起, 并作為主設備 ;
     實施源目尋址時, DMA 輪詢操作控制暫停, 主機操作優先。
     主機發起, 主設備, 源目尋址 : 優先 DMA, 由 PCI 接口呼叫, 芯片即時響應 ;
     主機發起, 目標設備, DMA0 : 由主機配置宏指令和啟動控制, 芯片依據配置的宏指 令信息 ( 源目地址, 長度 ) 完成操作 ;
     芯片發起, 主設備, DMAn : 由芯片呼叫 PCI, 主機響應后, 完成宏指令配置操作。
     其應用組合包括 :
     主機發起, 主設備, 源目尋址 ( 非 DMA) ; 芯片為目標設備, 完成指令寄存器配置或 公共 RAM 數據傳輸或 PCI-EMI 數據交換或主機讀取狀態寄存器 ;
     主機發起, 目標設備, DMA0 ; 芯片為主設備, 完成主機配置的 DMA 指令的尋址數據 操作 ;
     芯片發起, 主設備, DMAn ; 主機為目標設備, 完成主機配置的宏指令操作 ;
     主機發起, 主設備, 源目尋址 ( 非 DMA) ; 芯片為目標設備, 完成指令寄存器配置或 公共 RAM 數據傳輸或 PCI-EMI 數據交換或主機讀取狀態寄存器 ;
     主機發起, 目標設備, DMA0 ; 芯片為主設備, 完成主機配置的 DMA 指令的尋址數據 操作 ;
     芯片發起, 主設備, DMAn ; 主機為目標設備, 完成主機配置的宏指令操作。
     下面說明根據本發明一個實現方案的 DMA 數據交換。
     在本發明的該實現方案中存在三個數據傳輸模式 : 主機發起, 由芯片作為主設備 完成 PCI 與內部和 EMI 與內部的數據傳輸 ; 使用專用通道 0 ; 主機發起, 并由主機作為主設 備完成 PCI 與 EMI、 PCI 與內部和 EMI 與內部的數據傳輸, 不占用通道 ; 芯片發起, 由芯片作 為主設備完成 PCI 與內部和 EMI 與內部的數據傳輸, 使用數據通道 1-18。其中大小尾端數 據規格的控制是數據傳輸關鍵。
     在該實現方案中, 存在三個設備 : 主機 PCI、 外部存儲器 EMI 和芯片。每個設備的
     數據表現形式, 存儲形式以及傳輸形式不同。因此建立數據傳輸的大小尾端控制也需由三 種傳輸模式的 6 段宏指令配置。
     在本發明的一個簡化的實現方案中, 不支持 SPI3 接口的數據與 PCI 或 EMI 的傳 輸, 僅支持 SPI3 與芯片的數據傳輸, 其中在芯片內部數據均為小尾端, SPI3 規范均為大尾 端, 因此 SPI3 與芯片的數據傳輸被固定轉換, 不需要配置大小尾端指令。
     圖 9 示出了根據本發明一個實施例的 DMA 控制與狀態寄存器。 DMA0 通道的宏指令 配置信息為 : 主機發起, 芯片作為主模式的操作。所述寄存器包括 : DMA 主大小尾端控制 寄存器 (P_DMA_APP_MST_ENDIAN), 用于靜態配置信息, 確定大小尾端控制 ; DMA 目的地址寄 存器 (P_DMA_APP_DST_ADDR), 用于數據傳輸目的地址 ; DMA 源地址寄存器 (P_DMA_APP_SRC_ ADDR), 用于數據傳輸源地址 ; DRM 狀態寄存器 (P_DMA_APP_STATUS), 用于操作狀態、 芯片填 寫、 主機訪問 ; 以及 DMA 指令寄存器 (P_DMA_APP_COMMAND), 用于主機發起的控制信息。
     圖 10 示出了 PCI DMA 控制與狀態寄存器。DMAn 通道的宏指令配置信息為 : 芯片 發起, 作為主模式的操作。所述寄存器包括 : PCIDMA 狀態與配置 (P_PA_DMA_STAT_CFG), 用于主機設定的數據傳輸規格要求以及操作狀態的反饋 ; PCI DMA 目標讀取長度 (P_PA_ TARGET_READ_COUNT), 用于對主機而言的最大目標傳輸長度約束 ; PCI DMA 目標頁 (P_PA_ TARGET_PAGE), 用于指定 EMI 外部存儲器的頁地址 ; PCI DMA 目標模式散列加密大小尾端 (P_PA_DMA_STAT_CFG), 用于數據傳輸中的大小尾端數據交換信息。
     圖 11 示出了 EMI DMA 控制器寄存器。 DMAn 通道的宏指令配置信息 : 主機或芯片發 起, 芯片作為主模式的操作。所述寄存器包括 EMI DMA 狀態與配置 (P_ED_DMA_STAT_CFG), 其用于配置存儲器類型、 狀態、 映射。
     用戶 DMA 傳輸為主機發起、 芯片作為主設備實施的數據傳輸。主機發起是指通過 DMA 指令寄存器 “啟動請求” 的操作。源地址和目的地址要依據 DMA 指令寄存器總線標識的 指示確定對象。指令寄存器是操作控制的主體, 狀態寄存器是主機訪問操作前后的信息。
     PCI DMA 狀態與配置 (P PA DMA STAT CFG) 寄存器主要完成 PCI 傳輸長度的最大 配置值設定。它是檢驗值。PCI DMA 目標頁 (P PA TARGET PAGE) 對應的存儲器類型和尋址 轉換。PCI DMA 目標讀取長度 (P PA TARGET READ COUNT) 寄存器主要實現 PCI 對 EMI 的訪 問, 用于配置傳輸長度的配置值設定。 EMI DMA 狀態與配置 (P_ED_DMA_STAT_CFG) 寄存器主 要完成 EMI 傳輸長度的最大配置值設定。它即是檢驗值又是運行值。PCI DMA 目標 & 獨立 散列 / 加密大小尾端 (P PA TGT HASHENC ENDIAN) 寄存器主要配置數據傳輸中的大小尾端 設置。
     在本發明的一個實現方案中, DMA0 通道, 由主機發起, 芯片作為目標設備完成指令 配置或數據傳輸 ; DMA 指令寄存器的使能控制發出 DMA0 通道的申請。DMA1 ~ 18 通道均由 芯片發起, 由芯片作為主設備完成數據傳輸。主機只能直接控制 DMA 通道 0。其它的通道由 芯片根據指令配置控制, 自動發起控制并完成數據交換。
     圖 12 中示出了根據本發明一個實施方式的 DMA 數據通路的示例性配置。
     下面說明根據本發明實施例的 SPI3 接口。SPI-3 接口是一種流接口, 由兩個單獨 的單向 32 位寬總線組成。SPI-3 接口允許連接到 SPI-3 鏈接層設備的主機。SPI-3 接口命 名是站在主機 ( 鏈接層設備 ) 角度命名的, TX 對于 SPI-3 設備是指輸入總線, 而 RX 是指輸 出總線。如圖 13 所示, 本發明的 SPI 接口連接鏈路層設備和內部總線, 其包括 SPI3 接口邏輯和 SPI3 接口控制模塊。SPI3 接口控制模塊進一步包括 TX/RX 控制狀態機、 TX/RX FIFO 管理、 輸出端口 / 數據選通、 端口地址譯碼、 FIFO 空間有效邊界設置、 輸入端口 / 數據選通
     發送端口 TX 操作分為幾種類型 : 單 PHY 模式 ; 多 PHY 字節層模式 ; 多 PHY 包層靜 態模式 ; 多 PHY 包層動態模式。所選定的 SPI-3 模式對包處理吞吐量會產生影響。一般來 說, 如果較少出現大于 2K 字節的包, 那么 “單 PHY” 模式是最有效的, 因為該模式不需要在數 所總線上指示 PHY 端口地址。如果大于 2K 字節包出現比較多, 則 “多 PHY 字節層” 模式是 最佳選擇, 因為 “單 PHY” 模式會屏蔽掉其他 7 套可用的資源, 直到大包完全處理完畢。如果 不知道大包出現的頻率, 推薦使用 “多 PHY” 模式。
     在 “多 PHY 包層” 靜態模式中, 可通過使用由 8 個端口組成的一個固定組進行靜態 運行, 因而將 8 個內置 FIFO 和 8 個包引擎進行匹配, 即只能支持 256 個端口中的 8 個固定 地址。在 “多 PHY 包層” 動態模式, 芯片可通過動態分配最多可達 256 端口的一組端口, 進 行運行。 “多 PHY 包層” 靜態模式傳輸效率最接近 “字節層” 模式, 大約是每 256 字節多開銷 20 字節。多 PHY 包層動態模式的效率取決于鏈路層設備對每個端口的調度能力。
     下表示出了 TX 特征的各操作模式的特點。
     18
     101997834 A CN 101997839模式 ·SPI-3 總線的最高效率使用帶寬 ·可預測信息包流 ( 一次一個包, 按 順序 )。 ·優點缺點 ·只有 1 個 FIFO 有效。當處理大包時, 將阻止對 其他 7 個包引擎的數據流。 ·無法區分在 SPI-3 總線上 IP 包的使用端口。單 PHY多 PHY, 字節層說·能夠保持 8 個獨立的包流處于運行 狀態, 保持 8 個包引擎始終處于工作 狀態。 同多 PHY 字節層模式·包流不規則, 無法預測。 ·僅局限于 8 個端口——不可以使用 8 個以上的端 口明接收端口 RX 接口可以在兩種不同的模式下運行 : 單 PHY 模式和多 PHY 模式。兩者 區別僅在于輸出時數據總線上每次傳輸數據是否需要先報告端口地址。單 PHY 模式傳輸每 次都須在數據前均需要報告端口地址 ; 多 PHY 模式入此次數據傳輸與上次數據傳輸端口相 同時, 不需報告端口地址, 只有與上次數據傳輸的端口不同時才報告端口地址。
     RX 端口和 TX 端口的區別是在 TX 端口上芯片需要通過管腳信號向鏈路層報告鏈路 與 “字節層” 相同, 除了 : ·吞吐量還取決于連接設備登記發送端口的能力 如何。 ·小包可能妨礙性能。 與 “靜態” 相同 ·256(255) 個 SPI-3 端口的充分使用。 允許將端口號用做 ID 標簽。19書多 PHY, 包層, 靜態多 PHY, 包層, 動態14/59 頁101997834 A CN 101997839說明書15/59 頁層申請的端口是否可以接收數據。TX 端口在不同操作模式下, 報告狀態的方式及用來報告 狀態的管腳信號不同。
     注意 : 以下所述 FIFO 的可用狀態由指令寄存器中用戶設定的高限閾值和低限閾 值來確定。當 FIFO 的可用空間高于高限閾值, 表明該 FIFO 可用 ; 當數據接收至 FIFO 的可 用空間低于低限閾值時, 聲明該 FIFO 不可用。
     當包的目標地址被一個 SPI-3 端口的宏指令被接收時, 包處理模塊管理器建立輸 出流數據線程。
     此宏指令可以來自 PCI 主機也可以來自 SPI-3 輸入流。為請求一個新線程, 包處 理模塊管理器向 SPI-3 接口內核發出請求信號, 同時發出被請求的端口號及給該端口分配 的包處理模塊編號。在 SPI-3 接口輸出 FIFO 有空間時, 此請求被響應。
     包處理模塊將通過一個專門的狀態信號向 SPI-3 接口發送數據準備好的信號。該 信號當包處理模塊輸出緩沖區存儲量超過預設的最小連發規模時, 或是包處理模塊完成了 包的處理時即有效。 隨后, 當輸出緩沖區存儲量低于其預設的最低限制時, 數據準備好信號 無效。
     當 SPI-3 接口檢測到相關包處理模塊發送數據準備好信號的端口時, 開始向鏈路 層設備進行新的數據傳輸。數據傳輸開始是選擇數據所屬的端口, 隨后是傳輸數據本身, 直到包處理模塊發出包結束信號為止, 或是直到預定的字節數已經發送到了鏈路設備時為 止。
     而在后一種情況下, 只有當包處理模塊中其至少有預設的字節數需要發送, 才會 置數據準備好信號有效。 SPI-3 接口不會讀取超過此數量的數據字節。 因此, 在每一次傳輸 之后, RX FIFO 中不會保留下未發的數據。這樣, SPI-3 接口只需要提供一個 RX FIFO 就夠 了, 沒有因為 RX FIFO 滿了而導致的等待時間。
     SPI3_TX/RX 配 置 初 始 化 指 令 位 指 定 是 否 對 于 每 個 單 獨 包 都 啟 用 新 傳輸 ( 用 RSX) :
     當位為 ‘0’ 時, 如果本包還象前一個包一樣傳輸到同一個端口則不開始新傳輸, 提 高鏈接的包效率, 節省一個端口交換周期。
     當為 ‘1’ 時, 每個新包的傳輸不論端口是否改變都將啟動一個新的傳輸。
     注意 : 該位不影響切換端口。
     這表明包狀態和長度的輸出宏指令被包處理模塊附在輸出數據流的后面。 該宏指 令被 SPI-3 接口當作普通數據處理。
     當 SPI-3 接口接收到 RENB 信號無效時, 需中斷數據流。所有的輸出都被保持, 直 到 RENB 再次有效。
     所有的信號都在 RFCLK 上升沿更新和采集。RDAT 總線、 RPRTY、 RMOD、 RSOP、 REOP 及 RERR 信號在 RVAL 為高且前一周期 RENB 為低的時鐘周期內有效。數據傳輸中, RVAL 一 直聲明有效, 直到輸出 FIFO 空或者是包結束。在 RVAL 為低且上一周期 RENB 為低的時鐘周 期內 RSX 信號有效。
     如果在此數據包傳輸時出現錯誤, 在 REOP 有效時, 同時聲明 RERR。由于其他端口 的 FIFO 有足夠的數據來啟動數據傳輸, 則再一次聲明 RSX, 指明新的端口地址。
     圖 14 示出了根據本發明的 SPI3 配置寄存器。本發明的 SPI3 配置寄存器包括 :TX 配置寄存器 P_SPI3_TXCONFIG, 其用于輸入配置, 包括輸入隊列的指針約束、 總 線使能、 固定線程配置或輪尋線程配置等 ;
     TX/RX 配置 RX 寄存器 P_SPI3_TXRXCONFIG, 其用于傳輸配置, 包括輸入輸出的數據 規模、 奇偶效驗、 數據包序列等控制配置 ;
     線程 0- 線程 7 狀態與配置寄存器 P_SPI3_THROSTATUS, 其主要反映包處理的操作 狀態, 如: FIFO 益出, 包處理未結束等。同時, 對于操作狀態可由主機設定是否中斷。
     如圖 14 所示, 線程配置寄存器可以有多組。
     下面說明本發明 VPN 芯片中所采用的 EMI 接口。
     有兩種通過 EMI 接口訪問外部存儲器的方法 : 使用目標 PCI 傳輸訪問 ; 和通過建 立 DMA 控制器訪問。 PCI 目標方式傳輸對于小數據量傳輸有效, 而 DMA 傳輸對于大量數據傳 輸有效。
     對于芯片中的數據總線寬度并沒有特別的限制, 例如芯片中的數據總線寬度可在 32 到 64 位 ( 字節可寫 ) 之間選擇。當設置為 32 位外部數據總線寬度時, 230 字節或 1G 字 節的數據總量被分為 228 個 4- 字節 ( 對于 1 個 4 字節輸出可選擇字節 )。當設置為 64 位 外部數據總線寬度時, 不使用外部地址最低位 ( 位 2), 使用 4 個額外字節選擇輸出管腳選擇 64 位輸出總線上的高 32 位的字節。
     本發明的 VPN 芯片可以支持外部存儲器的類型包括 : SRAM, SSRAM, SDRAM。上述各 種存儲器可以每次只用一種, 也可以同時采用多種存儲器的組合。
     在本發明的 VPN 芯片的一個實施方案中, 主機使用 PCI-X 接口作為芯片的宏指令 控制端口, 并且使用包處理輸入宏指令用于包處理控制信息的傳輸。通過 SPI-3 接口接收 的包也可以有一個預先附加到包數據里的輸入流——包處理輸入宏指令。 包處理模塊執行 主模式 DMA 讀取操作, 從 PCI-X 或 EMI 存儲器的輸入宏指令隊列中提取包處理輸入宏指令。 包處理輸入宏指令有效地將包處理信息傳輸到芯片的包處理模塊, 使得包處理模塊能夠自 主地對包處理指令進行排隊和處理, 減少包處理模塊的等待數據的可能, 并最大程度地提 高吞吐量。
     本發明的包處理模塊可同時支持來自 PCI-X 或 SPI-3 這兩個接口的包處理輸入輸 出宏指令。位于主機存儲器的輸入宏指令隊列緩沖區主要用于從 PCI 連接的主機與本發明 的 VPN 芯片之間傳輸多個 ( 例如 6 個 )32 位長度的包處理輸入宏指令。位于芯片內的宏指 令取指控制器模塊完成 DMA 的主模式讀取, 以從輸入宏指令隊列緩沖區中提取包處理輸入 宏指令, 保存在芯片內緩存區中 ( 例如, 可以具有 32 個表項 )。控制權位可以轉換, 這樣主 機和本發明的 VPN 芯片之間的包命令傳輸和執行可以異步。宏指令根據包處理仲裁模塊的 分配輸入到包引擎譯碼控制器, 依據包處理宏指令的譯碼解釋, DMA 完成數據輸入輸出, SA 輸入或輸出, 進入包處理模塊完成包數據處理。在包引擎完成數據處理后, 更新宏指令, 由 DMA 輸出到外部緩存。
     下面說明本發明 VPN 芯片中包處理體系結構。 圖 15 示出了本發明 VPN 芯片中的一 種包處理體系結構。如圖所示, 本發明的包處理宏指令輸入包括 : SPI3 輸入 ( 單宏指令 ) ; 根據來自主機的到輸入宏指令控制器的讀宏指令中斷從 DMA 讀取或從輸入宏指令隊列基 址輸入宏指令。從輸入宏指令控制器的輸出連接到 32 表項的片內包處理宏指令隊列。此 處 32 表項是宏指令輸入 FIFO。之后, 進行命令仲裁。命令仲裁可用輪詢的方式完成。本發明的包處理宏指令輸出包括 : 通過來自包處理模塊的宏指令處理完成中斷而輸出 ; 通過將 輸出宏指令隊列基址輸入到輸出宏指令控制器進行 DMA 寫操作而輸出 ; 以及由命令仲裁輸 出宏指令 (SPI3 輸出 )。
     當包處理輸入宏指令和輸出宏指令被啟動時 ( 即, 包處理模塊 DMA 配置寄存器 (P_ HD_DMA_CONFIG) 的特定位被置位 ), 需確定包處理模塊如何獲知外部輸入宏指令隊列緩沖 區上有新的宏指令。有兩種方式 : 輪詢或中斷。
     在選擇輪詢配置下 : 包處理模塊一直檢測包處理輸入宏指令, 直到其檢測到有效 的宏指令 ( 所有權 ( 將在下面說明 ) 定義為包處理模塊 )。在包處理輸入宏指令輪詢寄存 器中可以設置查詢的頻率, 即總線帶寬的開銷。對查詢頻率和查詢重試是分別控制。讀取 的宏指令無效時 ( 第一條無效或第二條的低 64 位 ) 會產生查詢重試。
     在中斷配置下 : 主機在輸入宏指令隊列緩沖區上積攢一個或多個包處理輸入宏指 令, 然后向包處理模塊發起一個中斷以告知其提取宏指令并開始處理。這種模式能降低系 統總線的開銷, 并且由于主機確定宏指令被處理的時間, 因此主機可以控制系統數據流量。
     輸入宏指令隊列緩沖區主要用于從 PCI 連接的主機與芯片之間傳輸 6 個 32 位 (192) 長度的包處理輸入宏指令。芯片內的宏指令取指控制器模塊完成 DMA0 的主模式讀 取, 以從輸入宏指令隊列緩沖區中提取包處理輸入宏指令。 下面說明宏指令所有權位處理。 主機與芯片間異步處理的一個要素就是雙方之間 包處理輸入宏指令和包處理輸出宏指令的傳遞。為了使宏指令交換同步, 在本發明的一個 實施方案中, 使用兩對控制權位。一對是第一個 32 位中的宏指令, 另一對則是最后 1 個 32 位中的宏指令。 宏指令的讀取方應校驗兩對所有權是否匹配, 實現一方寫操作, 而另一方讀 取宏指令的正常狀態。也就是說, 需采取存儲器訪問限制的控制設置, 以防止出現操作沖 突。控制權位通過配置 ( 主機和芯片賦值 ) 可以轉換, 這樣主機和芯片之間的包命令傳輸 和執行可以異步。
     每對控制權位可以提供 3 種狀態 :
     ‘00’ =空閑或無效宏指令
     ‘01’ =所有權轉到 VPN 芯片
     ‘10’ = VPN 芯片完成, 所有權傳回至主機
     ‘11’ =保留
     在初始化時, 主機將把整個輸入宏指令隊列存儲區復位至零。
     圖 16 示出了根據本發明的包處理輸入宏指令的輸入。 來自 EMI 和 PCI 的輸入經多 路復用器輸入到包處理輸入宏指令控制 / 狀態字寄存器 (P_HD_CONTROL_STATUS)、 包處理 模塊源地址寄存器 (P_HD_INPUT)、 包處理模塊目的地址寄存器 (P_HD_OUTPUT_ADDRESS)、 包處理模塊 SA 地址寄存器 (P_HD_SA_ADDRESS)、 用戶 ID 寄存器 (P_HD_ID)、 包處理模塊長 度寄存器寄存器 (P_HD_LENGTH) ; 而經 SPI3 的輸入被輸入到包處理輸入宏指令控制 / 狀態 字、 包處理模塊目的地址、 包處理模塊 SA 地址以及包處理模塊長度寄存器。
     VPN 芯片有兩種使用的包處理宏指令格式 :
     通過 PCI-X 或 EMI 接口傳輸, 并且是唯一被輸入宏指令隊列支持的格式, 其中輸入 宏指令隊列格式包括 : 包數據源指示、 包目的指示和 SA 記錄指示, 控制和狀態信息。
     通過 SPI-3 接口傳輸的輸入流包處理輸入宏指令格式與輸入宏指令隊列格式相
     似, 只是沒有包源域和用戶 ID。因為 SPI-3 輸入流包處理輸入宏指令總是附在包數據之前 同時傳入, 數據源一定被確定為來自 SPI-3 接口。這種輸入流包處理輸入宏指令格式僅用 于 SPI-3 接口。
     包處理宏指令控制包處理模塊的實時操作, 包處理宏指令被寫入到輸入宏指令隊 列 (FIFO), 指令寄存器設置其驅動包處理模塊的狀態機。包處理輸入宏指令格式也用于包 處理輸出宏指令。本發明中的包處理輸入宏指令可以指示控制 / 狀態、 源地址、 目的地址、 SA 地址、 用戶 ID、 旁路偏移長度、 包長等等。
     包處理輸入宏指令控制 / 狀態字與 SA 結構內的被指定的數據一起, 提供基本的指 令譯碼信息給包處理模塊。此命令提供給包處理模塊用于處理包的各種指示。一旦所要求 的操作被完成, 不論是成功或不成功, 此控制 / 狀態字都會在包處理輸出宏指令中提供結 果狀態。主機可以檢查這些狀態以決定下一步操作。
     包處理輸入宏指令控制 / 狀態字寄存器可以包括 :
     所有權位 : ′ 10′, 表示芯片主控, 芯片通過輪詢機制查看主機是否有宏指令需 要處理, 如果有就處理, 沒有宏指令需要處理就等待一段時間發起并查詢是否被主機主控 ; 所有權位 : ′ 01′, 表示主機主控, 主機通過輪詢機制查看芯片的處理空間能否輸入宏指 令, 如果能輸入就, 不能輸入宏指令就等待一段時間發起并查詢是否被芯片主控。
     散列操作最后包位 : ′ 1′表示該數據是 HASH 操作最后一段是進行 HASH 填充的 使能。
     相關包或順序包 : 如果宏指令來源是 PCI 則是相關包, 宏指令來自 SPI_3 則是順序 包。相關包位的設定在需在所有的、 除最后宏指令之外的宏指令中進行設置。相關包的包 位設置為′ 0′表示是獨立宏指令 ; ′ 1′表示是多個相關宏指令。
     填充控制 / 狀態 : 在包處理輸出宏指令中, 填充狀態域由本發明的 VPN 芯片寫入, 表示被插入 ( 輸出 ) 和檢測 ( 輸入 ) 到多少填充字節。輸入包的填充檢測功能只在 IPSec 或 PKCS#7 填充模式下使能。此填充字節數包括附加的如在 IPSec ESP 填充中的 ‘填充長 度’ 和 ‘下個包頭域’ 。
     包處理輸入宏指令控制 / 狀態字寄存器可以包括若干錯誤 / 狀態指示位。
     本發明中的包處理模塊源地址寄存器指示用于包處理模塊的開始地址。 此模塊在 輸出到 PCI 或 EMI 時沒有特殊要求, 當輸出為 SPI_3 時位 [7:0] 設為 SPI_3 的輸出端口。
     本發明中的包處理模塊目的地址寄存器指定寫入結果操作的目的地址 ( 開始地 址 )。包處理模塊 SA 地址寄存器用于指定 SA 記錄開始地址。用戶 ID 寄存器用于指定包的 用戶 ID。包處理模塊長度寄存器長度域表示用于操作所有通過 VPN 處理器的包數據總長 ( 以字節為單位 ), 在完成一個操作后, 長度域將指定返回數據的結果長度。
     下面說明本發明中的宏指令更新。 包處理輸出宏指令將會更新大多數包處理輸入 宏指令域 ( 條目 )。下表顯示了被更新的各域操作 :
     在從輸入宏指令隊列讀取一組有效包處理輸入宏指令后, 即按上表寫回每個輸入 宏指令隊列條目。注意多個輸入宏指令隊列條目可以在一次傳輸連發操作中被更新。
     最后, ‘控制’ 域的所有權位被更新, 以顯示 VPN 芯片已成功地讀取這些條目, 使得 主機可以重新填入輸入宏指令。這種設置還確保了 VPN 芯片不會從結束處返回開始重新處 理已經被處理過的宏指令。在輸入宏指令隊列處理后 ( 或出現錯誤 ), 輸出宏指令將等待 DMA 輸出至輸出宏指 令隊列。如果輸入宏指令隊列和輸出宏指令隊列頂部相互重疊, 本發明的 VPN 芯片將會探 測到這種狀態, 并自動禁止輸入宏指令隊列條目的單獨更新 ( 因為包處理輸出宏指令將改 寫所有權位, 因此不需要單獨更新輸入宏指令隊列條目 )。
     需注意, 由于在本發明的 VPN 芯片中存在多個包處理引擎模塊, 包處理輸出宏指 令很可能以一種不同于讀取包處理輸入宏指令的順序寫出。對于重疊的輸入宏指令隊列 和輸出宏指令隊列, 這意味著包處理輸入宏指令并不一定被相同包的包處理輸出宏指令改 寫。
     下面說明本發明的包處理輸出宏指令。包處理模塊完成一個包處理時, 在輸出宏 指令隊列內寫入一個包處理輸出宏指令。 輸出宏指令隊列可以認為是輸入宏指令隊列的一 個映射。用戶指定輸出宏指令隊列位于哪個總線和哪個基址。這種靈活性可以使結果由芯 片控制有效地被存入到主機 ( 也就是說使用目標 DMA 寫入方式 ) 而無需要求主機完成主模 式讀取操作。
     通常, 如果主機不在內部輸入宏指令隊列緩沖區中寫入包處理輸入宏指令, 那么 輸入宏指令隊列和輸出宏指令隊列應在相互的頂部被覆蓋, 指令相同。這樣可以減少宏指 令的存儲空間, 并降低存儲總線開銷。如果輸入宏指令隊列和輸出宏指令隊列各自在獨立 的外部存儲位置上, 那么還需要另外更新輸入宏指令隊列所有權位, 以防止包處理模塊重 復處理舊的宏指令。
     通過 SPI-3 接口輸出的數據包, 在包數據后附上了包處理輸出宏指令。另外, P_ HD_DMA_CONFIG 寄存器可以設有專門的位來控制是否 “SPI-3 的包處理輸入宏指令” 的處理 結果也寫入到輸出宏指令隊列。這會通知主機 “PCI/EMI 到 SPI-3” 處理已經完成, 被分配 的包存儲空間可以被重新分配。
     下面具體說明本發明的包處理體系結構。芯片中的包處理模塊可以包括若干個 ( 例如 8 個 ) 相同的高性能的包處理引擎模塊。 宏指令輸入保存在芯片內緩存區中, 由指令 譯碼仲裁器控制宏指令輸入隊列和輸出隊列。依據包處理宏指令的譯碼解釋, DMA 完成數 據輸入輸出, SA 輸入或輸出, 進入包處理引擎模塊完成包數據處理。
     圖 17 示出了本發明的包處理體系結構的示意框圖。圖中上半部分為所有包處理 引擎模塊共享邏輯的控制。圖中下半部分顯示的是這些包處理引擎模塊中的一個結構, 該 結構的處理是依據宏指令的控制, 將數據緩存, 并分配下一個包數據 ; 之后進行包頭處理, 依據 SA 指示完成算法處理, 包尾處理和轉存與輸出數據緩沖區中, 由 DMA 狀態機完成整個 包處理的操作。 當主機的宏指令輸入到隊列中后, 控制權轉移到芯片, 譯碼器識別數據源和 目的后, 控制 DMA 操作, 并將 SA 策略的指針地址的數據傳遞交由 DMA 完成, 通過包處理狀態 機控制完成包數據處理操作。
     包處理模塊可同時支持來自 PCI-X 或 SPI-3 這兩個接口的包處理輸入輸出宏指 令。 通過總線控制器轉換 DMA 處理, 8 個以上的并行和獨立的包處理引擎模塊可分別或同時 接受 PCI-X 或 SPI-3 的數據。每個模塊都可以使用對稱加密和散列算法的部件模塊。在處 理包時, 每個包處理引擎模塊都能同時運行 : 芯片自動通過實施 DMA 狀態機控制信息傳輸 和通過主總線轉換、 加載到或是從主機 / 設備 / 內存上獲取數據。DMA 處理包括數據流控 制, 以保證處理資源與數據流的匹配。調用 AH 處理模塊及 ESP 處理模塊實現 IPsec 的拆包處理。在命令仲裁后, 進行 SA 處理和命令處理。
     下面首先說明包處理引擎模塊的處理模塊, 如圖 17 下部所示。處理模塊可以包括 密碼單元和散列單元, 用于執行相關的密碼算法。密碼單元可以進行 DES、 3DES、 AES、 ARC4 加密和解密, 同時散列單元可以進行 SHA-1 和 MD5 散列和 HMAC 算法。這些算法僅是作為示 例, 如前所述的, 處理模塊所能實現算法不限于此。 圍繞密碼單元和散列單元的是協議包頭 / 包尾處理模塊, 它們負責在數據包內插入必要的域。例如 : 在一輸出包內可以插入 : ESP 包頭 (SPI& 序列號 )、 ESP 包尾 ( 填充, 下個包頭 &ICV)、 AH 包頭 ( 下個包頭, SPI, 序列號 &ICV)、 對 AH 操作更新 IP 包頭域 ( 下個包頭、 長度、 檢驗和 )、 AH 操作的可變位處理、 IV 插 入。 對于一個輸入包, 處理器處理如下幾項操作 : 確認序列號 (IPSec ESP & AH)、 確認 ICV、 確認填充值、 剝去包頭和包尾、 剝去 IV、 剝去填充。
     每個包處理模塊提供輸入和輸出 FIFO 緩沖區 ( 例如, 2K 字節大小 )。該 FIFO 的 數據傳輸是完全自動進行的。算法模塊數據總是使用包處理模塊的 DMA 控制器傳輸輸入 / 輸出緩沖區數據。
     本發明的處理模塊支持 DES, 3DES, AES(Rijndael) 和 ARC4 等算法, 并且支持 DES 及 AES 的兩種操作模式 : ECB 和 CBC。加密 / 解密操作可以是高度并行的和流水線的。在協 議模式下, 使用 Ipsec 協議標準的 3DES-CBC 模式。
     算法模塊可以對輸入數據自動填充 (pad) 字節。 例如, 當輸入數據不是 8 字節 (64 位 DES 模塊 ) 或 16 字節 (128 位 AES 模塊 ) 倍數時, 算法模塊將自動加上填充字節。對于 如何進行填充, 有多種選擇, 可以由 SA 表項指令 0 域填充控制位規定。
     下面說明包處理模塊的宏指令取指控制模塊。 芯片內的宏指令取指控制模塊完成 DMA 的主模式讀取, 以從輸入宏指令隊列緩沖區中提取包處理輸入宏指令。控制權位可以 轉換, 這樣主機和芯片之間的包命令傳輸和執行可以異步。位于主機存儲器的輸入宏指令 隊列緩沖區主要用于從 PCI 連接的主機與芯片之間傳輸包處理輸入宏指令。在一個實施例 中, 從 PCI 連接的主機與芯片之間傳輸 6 個 32 位長度的包處理輸入宏指令。
     將包處理命令輸入到包處理模塊可以通過 PCI-X 或 EMI 接口實現。包處理輸入宏 指令在被傳輸到內部指令隊列前, 被送到片內的輸入宏指令隊列緩沖區 ( 例如, 包括 32 個 表項 ) 緩存。或者, 4 個 32 位長的包處理輸入宏指令也可以來自 SPI-3 接口。在這種情況 下, 這些宏指令加在數據包前給出, 因此不必通過宏指令取指控制模塊處理。 這些包處理輸 入宏指令在被傳輸到內部指令隊列前, 填裝到一個片內的 5 個表項的包處理輸入宏指令緩 沖區緩存。來自 SPI-3 接口的宏指令節約了 2 個指令 : 一個是數據包的源指示, 一個是用戶 ID( 這是主機對數椐包來源的標識 )。通過 SPI-3 接口時, 數據源一定是該接口。
     下面說明包處理模塊的處理控制器 ( 加密 DMA 控制器 )。處理控制器用于控制包 引擎模塊的操作, 其可以實現以下功能 :
     1. 接收來自內部緩沖區緩存的包處理輸入宏指令作為輸入。
     2. 當收到一個有效的宏指令, 處理控制器開始 DMA 傳輸, 讀取安全關聯 (SA) 記錄。 SA 記錄通過 1 個連發訪問讀到內部總線, 其中一些數據被送到處理模塊內的安全關聯寄存 器, 其它的如指令域數據送到處理控制器內的安全關聯寄存器。
     3. 處理控制器解碼 SA 內的指令并決定是否在提取輸入包數據前還要執行其他的 DMA 傳輸, 比如復制旁路數據并加載 IV 或對 SA 指定的狀態記錄做內部摘要。4. 處理控制器檢測處理模塊的狀態輸出并產生控制輸入。 對處理模塊產生的 1 周 期狀態機控制信號包括 : 1) 加密操作開始, 2) 安全關聯 SA 數據輸入結束, 3) 包數據輸入開 始, 4) 包數據輸出開始, 5) 包數據輸入結束, 6) 包數據輸出結束。
     處理模塊控制總線在安全關聯 SA 結束信號有效之前需穩定, 該信號用于鎖存操 作類型和數據長度。
     鎖存到處理模塊內的控制數據決定對數據進行何種操作。除了加密算法, 此選項 還包括是否插入 / 拆除 IPSec 包頭 ; 是否 AH 操作應報告有效載荷或 IP 包頭 ; 是否應啟動可 變位處理等。
     處理控制器監視處理模塊內的可用的輸入空間。一旦安全關聯 SA 傳輸完成, 可用 空間超過預設的輸入閾值, 處理控制器開始進行 DMA 傳輸以復制盡可能多的輸入包到處理 模塊。如上所述, 包數據輸入優先, 以確保處理模塊一直有數據處理。
     如果沒有足夠的輸入包數據空間或者如果輸入傳輸完成了, 處理控制器會測試輸 出數據長度是否超過了預設的輸出閾值。如果超過了, 會發起 DMA 傳輸輸出包數據。這個 步驟會一直持續到收到處理模塊的操作完成狀態信號, 且所有輸出包數據都已經寫入到目 的地址。
     需注意 : 如果 SA 指定合包輸入或分段輸出, 處理控制器將向分散合包處理模塊發 送信號 ( 而不是向 DMA 控制器發信號 ), 獲得下一分段的宏指令并傳輸指定的字節數到處理 模塊。
     在包輸出完成后, 處理控制器還要處理特殊的傳輸, 如: 更新已經寫入到輸出數據 的認證數據 (ICV)。按照 IPSec 協議, 在更新輸入 ESP 和 AH 包的 SA 序列號和抗重放窗口位 圖之前, 處理控制器先檢測認證是否失敗。
     在包處理結束時, 處理控制器會建立一個 DMA 傳輸完成寫出結果包處理輸入宏指 令。在此時, 處理控制器是空閑的并準備接收下一個宏指令輸入。
     圖 18 示出了本發明中安全關聯 (SA) 的記錄格式關聯 : 安全關聯 (SA) 指令字 0(P_ HE_COMMAND0_OFFSET) 和安全關聯 (SA) 指令字 1(P_HE_COMMAND1_OFFSET)。
     SA 管理可以通過定制的主機軟件完成。 芯片 SA 管理完全依據主機的指令控制, 這 樣 SA 可以在芯片內部公鑰存儲器或 PCI-X 總線或存儲器中存儲, 通過指令索引實現 SA 加 載。芯片可通過 PCI-X 或 EMI 總線讀取訪問主機或外部存儲器的 SA 記錄。每個 SA 記錄的 大小為 128 字節, 對可以支持 SA 數量芯片沒有限制。
     當公鑰操作不在芯片上進行時, 芯片允許使用公鑰算法模塊中的 RAM 用于片上 SA 保存。在一個實施例中, 該 RAM 可以最多保存每個 128 字節的 64 個 SA 記錄。
     在一個實施例中, 使用以下步驟在片上公鑰 RAM 上存儲 SA 記錄 :
     1. 將 SA 寫入到公鑰 RAM 區, 該區不用于公鑰 IKE 輸入或輸出參數。
     2. 在包處理輸入宏指令上指定公鑰 RAM 地址為 SA 地址。宏指令上的 SA 總線 ID 設為內部總線 ‘10’ 上。
     3. 將包處理輸入宏指令放置在輸入宏指令隊列上, 并進行正常處理。
     SA 指令字 0 可以指示 : 操作碼、 是入還是出、 操作組、 填充方式、 加解密算法選擇、 散列算法選擇、 包頭處理、 源總線 ID、 目的總線 ID、 IV 來源、 是否保存 IV、 保存 HASH 狀態、 是 否輸入合包、 是否輸出分段等等。而 SA 指令字 1 可以指示是否復制包頭到輸出、 是否復制有效載荷到輸出、 是否復 制填充到輸出、 IPV4/V6、 IP 包頭可變位處理、 ECB/CBC 選擇、 擴展頭可變位處理、 解密密鑰、 散列 / 加密偏移、 密鑰長度、 ARC4 狀態、 保存 ARC4 狀態等。
     對于 SA 指令字, 還可以有些位被保留, 以供將來或其他使用。
     安全關聯 (SA) 記錄與包處理輸入宏指令一起提供包處理模塊所有執行操作的所 有必要信息。 SA 記錄包含用于有效生命周期內的靜態設置和包處理模塊動態更新的所有信 息。所有需由主機確定和修正的控制信息都包含在包處理輸入宏指令中。對于 SA 記錄中 的內容, 芯片僅處理協議的基本操作信息, 保留的位域供主機設置使用。SA 中可以記錄 : 指 令字 0 和指令字 1, 用于 DES、 3DES 和 AES 的密鑰、 內部摘要、 SPI、 序列號、 抗重放窗口位圖 ; 校驗和、 保存的 IV、 保存的摘要字節數、 保存的內部摘要等。
     根據本發明一個方面, 為了保證加密 / 解密的最佳性能, 本發明的 VPN 芯片支持硬 件填充功能。這些功能包括 : 在加密前生成并添加填充字節至數據包明文的末端 ; 在將包 解密后校驗正確的填充字節 ; 在將包解密后刪除填充字節。
     在一個實施例中, 本發明的 VPN 芯片硬件可以支持四種填充模式 : IPsec 填充模 式、 PKCS#7 填充模式、 常數填充模式以及零填充模式, 如下所示 : IPsec 填充模式 : 添加 0 至 255 填充字節, 繼之以填充計數 ‘n’ (0 至 255), 然后是 “下一包頭” 字節。填充字節數值是 1 至 n。 “下一包頭” 字節限定在填充控制寄存器中。總 共可添加 2 至 257 字節。
     PKCS#7 填充模式 : 添加 1 至 128 字節 : 填充字節數值=填充計數的十六進制值, 如 果需要 3 個填充字節, 那其應是 : ‘03, 03, 03’ 。
     常數填充模式 : 將用戶指定字符的 0 至 255 字節添加至明文數據, 以確保總字節數 是 64 位的倍數。包處理輸入宏指令的第一個 32 位 (P_HD_CONTROL_STATUS 寄存器 ) 給出 了填充常數 ( 從 0x00 至 0xff 的任何值 )。
     零填充模式 : 將 0x00 的 0 至 255 字節添加至明文數據, 以確保總字節數為 64 位的 倍數。
     需注意, 就 ESP、 零加密算法而言, 本發明的 VPN 芯片仍將按標準添加填充為 64 位 或 128 位的倍數 (AES 算法要求 )。
     如果主機系統希望實現一種硬件不支持的填充類型, 那么應選擇模式 3( 零填 充 )。 主機只要對需加密數據的末端主動插入填充字符而確保輸入包處于 64 位或 128 位的 倍數即可, 在這種情況下, 硬件不會增加任何填充字節。
     在某些填充模式中, 本發明 VPN 芯片可以進行填充校驗。 例如, 在 IPSec 和 PKCS#7 填充模式中, 本發明的 VPN 芯片能夠驗證與期望值不同的解密填充 ( 在 ESP 中, 下一包頭字 節值未經驗證 )。 對于 IPSec 填充來說, 本發明的 VPN 芯片檢查填充計數域的值是否符合填 充字節數, 且填充字節是以 0x01 開始的增量計數。對 PKCS#7 填充來說, 假定包的最后字節 數值為 ‘N’ , 那么在包的末端至少有 ‘N’ 個相同字節的復制字節, 本發明的 VPN 芯片對此進 行校驗。
     當包處理結束時, 包處理輸出宏指令 (P_HD_CONTROL_STATUS 寄存器 ) 的第一個 32 位中的狀態字節將顯示填充校驗狀態。 如果選擇了填充模式 2 或 3, 則不會出現填充錯誤報 告。
     可選的, 本發明的 VPN 芯片可去除使用 IPSec 或 PKCS#7 填充的輸入包操作中的解 密填充字節, 節省 I/O 總線的數據傳輸時間。這是由每個包的 SA 記錄分別決定。
     根據本發明一個方面, 芯片可靈活處理 DES/3DES/AES 初始向量 (IV)。 就輸出包數 據而言, IV 可以以以下三種模式中的任一種來讀取 : 能自動插入 ( 隨機值 ) ; 可從數據輸入 緩沖器的開始處讀取 ; 可從 SA 的狀態記錄中讀取 ( 輸入宏指令隊列和輸出宏指令隊列已激 活 )。第一種模式是最有效的, 因為這種模式不需要任何額外的 I/O, 而且主機處理器不需 要提供 IV。當使用模式 3 時, 應該使狀態記錄中的 IV 隨發送的各包進行變化。可在處理包 結束時 ( 通過本發明的 VPN 芯片將 IV 寫回至狀態記錄 ) 做到這一點。
     對于輸入包數據而言, IV 可以以下兩個模式中的任一模式讀取 : 可從數據輸入緩 沖器的開始處讀取 ; 可從 SA 的狀態記錄中讀取 ( 輸入宏指令隊列和輸出宏指令隊列已激 活 )。在大多數協議中, 如 IPSec 協議, IV 明確被傳遞至包的前部, 因此應采用模式 1。
     圖 19 示出了本發明包處理模塊的配置寄存器模塊。如圖所示, 本發明包處理模 塊的配置寄存器模塊包括多個全局寄存器, 包括 : 包處理模塊 DMA 配置寄存器 (P_HD_DMA_ CONFIG) ; 總線 ID 配置寄存器 (P_HD_BUS_ID_CONFIG) ; 輸入宏指令隊列的源基址寄存器 (P_HD_PDR_SRC_BASE_ADDR) ; 輸入宏指令隊列的大小及偏移寄存器 (P_HD_PDR_SRC_SIZE_ OFFSET) ; 輸出宏指令隊列目的基址寄存器 (P_HD_PDR_DST_BASE) ; 輸出宏指令隊列的大小 和偏移寄存器 (P_HD_PDR_DST_SIZE_OFFSET) ; 輸入宏指令隊列的輪詢寄存器 (P_HD_PDR_ RING_POLL) ; 輸入宏指令隊列外部狀態寄存器 (P_HD_PDR_SRC_SIZE_OFFSET) ; 包處理模塊 I/O 閾值寄存器 (P_HD_MIN_INPUT_OUTPUT_SIZE)。
     具體說明如下。
     下面說明處理模塊 DMA 配置寄存器是驅動芯片在線最后寫入的一個寄存器, 用于 選擇控制包處理路徑的靜態設置。 這些設置在初始化時被典型設置, 并不再改變。 該寄存器 指示是否復位所有的處理模塊, 是否復位輸入宏指令隊列計數器 / 指示器, 是否復位分段 / 合包緩存, 是否使能監控復位, 輸入宏指令源隊列總線 ID、 輸入宏指令目的隊列總線 ID、 輸 入宏指令和輸出宏指令啟動、 集中分段緩存隊列總線 ID、 是否應用大小尾端交換到輸入宏 指令 ( 僅 PCI/PCIX)、 是否應用大小尾端交換到 SA、 是否應用大小尾端交換到包數據、 是否 應用大小尾端交換到分段 / 合包宏指令、 MPPE 最大密鑰更新次數、 是否為串行模式、 是否啟 動寫入 SPI3 包處理輸出宏指令。
     注意 : 如果輸入宏指令和輸出宏指令啟動位被設為 ‘1’ ( 輸入宏指令隊列和輸出 宏指令隊列使能 ), 芯片將立即開始輸入宏指令隊列的狀態機管理。
     具體說明如下 :
     對于復位所有的包處理模塊位, 需注意 : 在初始化后, 復位控制寄存器 (P_KM_ RESET_CONTROL) 應被用于執行本發明的 VPN 芯片每個模塊的異步復位, 包括包處理模塊
     對于復位輸入宏指令隊列計數器 / 指示器位, 需注意 : 如果輸入宏指令隊列沒有 使能, ( 此寄存器位 8 設為 ‘0’ ), 那么此位會以復位狀態留下。另外此復位需與宏指令狀 態機的 ‘所有權人’ 相協調, 確保指示器在復位后的同步。
     對于復位分段 / 合包緩存位, 需注意 : 此復位需與分段緩沖區的 ‘所有權人’ 相協 調, 確保指示器在復位后的同步。
     對于使能監控復位位, 需注意 : 此致命錯誤的原因會是在 AES 操作中的無效填充或是用于 AH 操作的無效 IP 包頭
     對于輸入宏指令和輸出宏指令啟動位, 需注意 : 如果包處理輸入宏指令和 / 或包 處理輸出宏指令將被執行, 那么此位應被啟動 ( 設為 “1” )。復位值= ‘0’ 。由于 SPI-3 宏 指令包括在輸入數據流的開始中, 因此 SPI-3 不使用包處理輸入宏指令管理器。
     對于應用大小尾端交換到輸入宏指令位, 需注意 : 如果啟動設為 ‘1’ , 大小尾端交 換將由 P_PA_TGT_HASHENC_ENDIAN 寄存器最低位指定。另外, 如果在 P_PA_TGT_HASHENC_ ENDIAN 寄存器內沒有大小尾端交換指定, 那此位設置無效。如果設置為 ‘0’ , 那么包處理輸 入宏指令將被提取時不帶任何大小尾端交換
     對于 MPPE 最大密鑰更新次數位, 需注意 : MPPE( 微軟點對點加密 ) 是一種用于 PPTP 生成加密連接的加密協議。當把 MPPE 與分段 / 合包合成時, 需在包數據前附一個 32 位數, 并且將旁路偏移量設置為 4 用于去除所附的 32 位數。
     下面說明總線 ID 配置寄存器。此寄存器的目的是建立芯片的運行環境, 此環境是 用于選擇和使用可用的總線 : 如 PCI, EMI, 內部總線以及 SPI-3。為宏指令譯碼控制和數據 輸入輸出傳輸控制產生控制源。 注意 : 在復位以后的缺省狀態下芯片處于等待, 不允許任何 輸入 / 輸出傳輸, 僅當運行環境建立后, 才開始執行控制。
     此寄存器可以指示是否啟動高可靠模式、 HAE 腳狀態、 輸入宏指令隊列總線 ID、 SPI3 總線 ID 配置、 是否啟動紅色 / 黑色傳輸包處理輸入宏指令、 包處理輸入宏指令固定總 線處理、 SPI3 紅色 / 黑色傳輸啟動、 固定 SPI3 總線處理、 高可靠模式測試控制。
     在該寄存器中定義了包如何流過本發明的 VPN 芯片芯片, SA 源自何處, 以及是否 執行分段 / 合包處理, 是否總線 ID 固定或者通過使用 SA 記錄里的總線 ID 域確定, 來自輸 入宏指令隊列的包源、 目的和 SA 總線 ID 是否固定, SPI-3 輸入包的目的和 SA 總線 ID 是否 固定。
     通過對輸入宏指令隊列源和 SPI-3 接口輸入包的總線 ID 固定分配, 可以使得分配 一個接口只用于明文數據、 密文數據或兩個都用。 也可能定義一個固定源總線 ID、 固定目的 總線 ID 和固定 SA 總線 ID。對于 SPI-3 接口也是同樣, 不過, 此時源 ID 不被定義, 因為當使 用 SPI-3 用于包處理輸入宏指令時, 源總線 ID 總是 SPI-3 接口。
     固定分配包處理輸入宏指令源和 SPI-3 接口的使用適用于要求明文 / 密文數據物 理分離的應用。例如 : 來自包處理輸入宏指令隊列的輸入包, 對應的位能被設置為明文輸 入; 對來自 SPI-3 的輸入包, 對應的位能被設置用于密文輸入。這將指定 PCI-X 接口為明文 包處理輸入宏指令, 指定 SPI-3 接口為密文包處理輸入宏指令。對于來源于包處理輸入宏 指令隊列的輸入包, 源總線 ID( 位 [9:8]) 將被設置到 PCI, 目的總線 ID 將被設置到 SPI-3。 對于來源于 SPI-3 的輸入包, 目的總線 ID 將被設置到 PCI-X, 源缺省值為 SPI-3。SA 總線 ID 位可任意設置, 但出于性能和安全的考慮推薦設置為 EMI, SA 訪問在芯片的外部存儲器。
     下面說明本發明的輸入宏指令隊列的源基址寄存器。該寄存器值僅在 P_HD_DMA_ CONFIG 寄存器的位 ( 輸入宏指令和輸出宏指令啟動位 ) 被設置為 ‘1’ , 啟動包處理輸入宏 指令和包處理輸出宏指令管理器時產生作用。適用于來自 PCI-X 和 EMI 的宏指令。輸入宏 指令隊列的源基址寄存器允許主機指定 PCI-X 存儲空間的輸入宏指令隊列的源基址設置。
     下面說明本發明的輸入宏指令隊列的大小及偏移寄存器。該寄存器值僅在 P_HD_ DMA_CONFIG 寄存器的位 ( 輸入宏指令和輸出宏指令啟動位 ) 被設置為 ‘1’ , 啟動包處理輸入宏指令和包處理輸出宏指令管理器時產生作用。適用于 PCI-X 和 EMI。輸入宏指令隊列 的大小及偏移寄存器可以指示輸入宏指令隊列大小 ( 表項數 )、 輸入宏指令隊列偏移。
     下面說明本發明的輸入宏指令隊列目的基址寄存器。該寄存器值僅在 P_HD_DMA_ CONFIG 寄存器的位 ( 輸入宏指令和輸出宏指令啟動位 ) 被設置為 ‘1’ , 啟動包處理輸入宏 指令和包處理輸出宏指令管理器時產生作用。適用于 PCI-X 和 EMI。輸入宏指令隊列目的 基址寄存器指令指示輸出宏指令隊列基址。
     下面說明本發明的輸出宏指令隊列的大小和偏移寄存器。該寄存器值僅在 P_HD_ DMA_CONFIG 寄存器的位 ( 輸入宏指令和輸出宏指令啟動位 ) 被設置為 ‘1’ , 啟動包處理輸 入宏指令和包處理輸出宏指令管理器時產生作用。適用于 PCI-X 和 EMI。輸出宏指令隊列 的大小和偏移寄存器指令用于指示輸出宏指令隊列大小和輸出宏指令隊列偏移。
     下面將說明本發明的輸入宏指令隊列的預約登記寄存器。該寄存器值僅在 P_HD_ DMA_CONFIG 寄存器的位 ( 輸入宏指令和輸出宏指令啟動位 ) 被設置為 ‘1’ , 啟動包處理輸 入宏指令和包處理輸出宏指令管理器時產生作用。適用于 PCI-X 和 EMI。該寄存器指令指 示隊列預約查詢因子 ( 設置值用于分頻并得到查詢時間頻率 )、 隊列重試因子 ( 設置值用于 分頻并得到重試時間頻率 )、 是否連續取指。
     根據本發明的一個實施方案, 包處理模塊的輸入宏指令隊列輪詢寄存器允許設置 兩個用于宏指令取指控制器的輪詢參數 : 第一個參數是 VPN 芯片從外部輸入宏指令隊列讀 取宏指令進入到內部輸入宏指令隊列緩存的基本查詢頻率 ; 以及第二個參數是重試時間間 隔, 指定 VPN 芯片讀取無效宏指令條目 ( 所有權位不是分配給本發明的 VPN 芯片芯片 ) 后, 再次重試之間需要等待的時間。此重試時間間隔應設置為比輪詢等待時間間隔短的周期, 否則下一個查詢將先于重試。這兩個參數都主要用于限制宏指令查詢過程所消耗的帶寬。
     需注意 : 讀取宏指令中斷可能先于查詢等待時間進行, 這會導致間隔時間沒到就 執行宏指令讀取。這種情況下, 查詢等待時間會重新復位到開始點。另外, 需注意 : 如果宏 指令被直接寫入到芯片內部輸入宏指令隊列緩存, 那么此寄存器被忽略。此模式被配置為 輸入宏指令和輸出宏指令啟動位。
     下面說明本發明的輸入宏指令隊列外部狀態寄存器。輸入宏指令隊列外部狀態 寄存器指令用于指示包處理輸入宏指令 - 輸入宏指令隊列讀取計數器、 包處理輸入宏指 令 - 輸出宏指令隊列寫入計數器。
     下面說明本發明的包處理模塊 I/O 臨界值寄存器。包處理模塊輸入 / 輸出緩沖區 閾值寄存器, 用于指定包處理模塊應開始向包處理緩沖區 RAM 傳輸包數據或輸出包數據的 “最大限度” 和 “最小限度 “的長度設置, 用于控制來自包處理模塊的包數據輸入和輸出的 DMA 連發數據存取大小。該寄存器指示包處理模塊輸入臨界值、 Pkt 輸入完成、 包處理模塊 輸出臨界值等。
     需注意 : P_DMA_APP_ 指令寄存器傳輸長度設置將可以限制通過 PCI-X 接口傳輸的 數據長度。復位值 0x008 是非常短的包數據連發存取, 但它仍是有用的, 因為很難提供一種 可滿足所有尺寸包的設置。輸入和輸出閾值表示高于該值輸入緩沖區將停止要求輸入數 據, 同時輸出緩沖區開始要求輸出數據的的長度 (32 位為單位 )。對于輸入緩沖區, 最好設 置閾值高一些, 以平衡用戶希望在包處理模塊源接口上的最大連發存取尺寸要求。長連發 存取將長時間占用總線, 但傳輸效率會更高。 對于輸出緩沖區, 理想的閾值設置是對于滿足小于 2K 字節的輸出緩沖大小的包, 可以通過一次連發操作完成輸出。期望在包處理模塊處 理數據的最后部分時就開始從緩沖區中傳輸數據包 ( 即邊處理邊輸出 ), 這樣將使得處理 和寫出的完成是差不多在同時完成的。這需依據將要傳輸的包的長度而定。
     下面具體說明根據本發明示例性實施例對包的處理。
     圖 20 示出了根據本發明的基本加密包格式。根據本發明的一個實施方式, 主機需 按照以下方式準備輸入數據 :
     如果設置了安全關聯 (SA) 指令字 P_HE_COMMAND0_OFFSET“從輸入裝載 IV” , 則: a) 主機需將 IV 放在在旁路偏置的后面, 有效載荷的前面 ; b) 對于基本加密運算, 本發明的 VPN 芯片自動對 IV 偏置使用標準設置值。即, 如果使用 DES/3DES, 芯片自動以 64 位 IV 定 位有效載荷位置 ; 如為使用 AES, 則依據 128 位 IV。
     本發明的 VPN 芯片在包處理上執行以下操作 :
     1. 從源復制 “旁路偏置” 數據到目的地址。
     2. 如果設置了 “從輸入裝載 IV” , 則從輸入流中獲取 IV, 并用于加密。否則, 使用 來自于根據 P_HE_COMMAND0_OFFSET[25:24] 定義的其他源獲取 IV。
     3. 根據安全關聯 (SA) 指令字 P_HE_COMMAND0_OFFSET[7:6] 附加填充。
     4. 使用指定的算法對包進行加密, 并將結果寫出到目的地址。
     5. 在包處理輸出宏指令隊列中更新數據包長度、 “狀態” 和 “VPN 芯片完成” 。在包 處理輸入宏指令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成” 。
     需注意, 即使對 “零加密算法” 運算, 仍然需要填充到 64 位的倍數 ( 對于 ARC4, 不需要添加填充 )。還需注意, IV 應傳輸給收方, 如果設置了安全關聯 (SA) 指令字 P_HE_ COMMAND0_OFFSET[28], 則可從 “狀態” 記錄中獲取 IV。另外, 還需注意, 對于基本加密操作, 使能 “復制包頭到輸出” 不會將 IV 從源地址復制到目的地址。
     圖 21 示出了根據本發明的基本解密包格式。根據本發明的一個實施例, 對應的, 主機需按照以下方式準備行輸入數據 :
     如果設置了安全關聯 (SA) 指令字 P_HE_COMMAND0_OFFSET“從輸入裝載 IV” , 則:
     a) 主機需將 IV 放在旁路偏置之后, 有效載荷的前面。
     b) 對于基本解密運算, VPN 芯片自動對 IV 偏置使用標準設置值。即, 如果使用 DES/3DES, 芯片自動以 64 位 IV 定位有效載荷位置 ; 如為使用 AES, 則依據 128 位 IV。
     根據本發明的一個實施例, 本發明的 VPN 芯片在包上執行以下操作 :
     1. 從源復制 “旁路偏置” 數據到目的地址。
     2. 如果設置了 “從輸入裝載 IV” , 則從輸入流中獲取 IV, 并用于解密。否則, 使用 來自于根據安全關聯 (SA) 指令字 P_HE_COMMAND0_OFFSET[25:24] 定義的其他源。
     3. 使用指定的算法對包進行解密, 并將結果寫出到目的地址。
     4. 如果沒有設置 “復制輸入填充到輸出” , 且如果填充類型不是 “零” 或常數填充, 則檢查并丟棄來自加密有效載荷的填充。
     5. 在輸出宏指令中更新數據包長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏 指令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成” 。
     需注意 : 對零加密算法數據需要做填充, 對 ARC4 密文不需要 ; 設置 “復制包頭到輸 出” 不會將 IV 從源復制到目的地址。圖 22 示出了基本 HASH 包格式。
     根據本發明的一個實施方案, 主機需通過 SA 記錄中的安全關聯 (SA) 指令字 P_ HECommand0_OFFSET 使能 “保存 HASH 狀態” 控制, 則 VPN 芯片將在運算結束后將 hash 摘要 填入 SA 狀態紀錄中。輸出的有效載荷中不包括 HASH 摘要。
     本發明的 VPN 芯片在包上執行以下運算 :
     1. 從源復制” 旁路偏置” 數據到目的地址。
     2. 使用指定的算法對有效載荷進行 HASH 或 HMAC 運算。
     3. 若設定了 “保存 HASH 狀態” , 將字節數和 HASH 摘要寫到該 SA 的狀態記錄。
     4. 如果設定了 “復制有效載荷到輸出” , 則將有效載荷寫到目的地址。
     5. 在輸出宏指令中更新數據長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏指 令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成。
     需注意, 本發明的 VPN 芯片可按照標準要求自動執行 MD5 或 SHA-1 填充。
     圖 23 示出了基本 HASH- 加密包格式。 根據本發明的一個實施方案, 主機需通過 SA 記錄中的安全關聯 (SA) 指令字 P_HECommand0_OFFSET 使能 “保存 HASH 狀態” 控制, 則 VPN 芯片將在運算結束后將 hash 摘要填入 SA 狀態紀錄中。輸出的有效載荷中不包括 HASH 摘 要。 主機需按以下方式進行輸入數據的準備 : 如果設定了 “從輸入裝載 IV” : 主機需將 IV( 如果使用的話 ) 放在有效載荷的前面 : 如 DES/3DES, 則 64 位 : 或者, 如 AES, 則 128 位。
     主機需將安全關聯 (SA) 指令字 P_HECommand1_OFFSET 中的 “HASH/ 加密偏置” 設 置為對應 IV 的長度 ( 如果使用的話 ) : 如 DES/3DES, 則 2 個 32 位 : 或者, 如 AES, 則 4 個 32 位 ( 注意, HASH/ 加密偏置中需要進行 HASH 而不加密的部分還可以包含更多的數據, 而不 僅是 IV)。
     需注意, 本發明的 VPN 可按照標準要求自動執行 MD5 或 SHA-1 填充。即使對 “零加 密算法” 運算, 仍然需要填充到 64 位的倍數。
     圖 24 示出了根據本發明一個實施例的基本 HASH- 解密包格式。
     對于 Hash 解密, 根據本發明一個實施方式的 VPN 芯片在包上執行以下運算 :
     1. 從源復制” 旁路偏置” 數據到目的地址。
     2. 如果設置了 “從輸入裝載 IV” , 則從輸入數據裝載 IV。
     3. 解密并重新認證數據包 ( 如 DES/3DES, 則 HASH/ 加密偏置可為 64 位 ; 如 AES, 則 128 位 ; 或者如果附加其他數據, 可為更長。)
     4. 如沒有設定 “復制包頭到輸出” , 丟棄整個 HASH/ 加密偏置, 包括 IV。 注意 : 如果 該偏置超過 IV 的長度 ( 除 IV 外還包括其他數據 ), 則 IV 被認為是偏置數據中最靠近有效 載荷的數據 : 如 DES/3DES, 則 64 位 ; 或者, 如 AES, 則 128 位。
     5. 如果沒有設定 “復制輸入填充到輸出” , 則丟棄填充值 ( 僅對 IPSec/PKCS 填充 模式丟棄, 對零或常數填充則不丟棄 )。
     6. 如果設定了 “保存 HASH 狀態” , 則將 HASH 摘要寫到該 SA 的狀態記錄。
     7. 寫有效載荷到目的地址。 注意 : 在一次包含加密或解密的運算中, 本發明的 VPN 芯片均將復制有效載荷到輸出, 不管 “復制有效載荷到輸出” 的設置如何。
     8. 在輸出宏指令中更新數據長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏指
     令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成。注意 : VPN 芯片即始對零加 密數據也查驗填充值。
     圖 25 示出了根據本發明一個實施例的 ESP 輸出隧道模式包格式。根據本發明一 個實施方式, 在內部包頭前還可附上 ESP 頭和 IV( 可選 ), 在圖中沒有顯示出來。在隧道模 式中, 理論上 ESP 是在添加外部 IP 包頭前進行的。但主機可以選擇預構造外部 IP 包頭, 并 使用旁路功能而使得在 VPN 芯片不被處理。
     主機須按以下方式準備輸入數據 :
     1. 如果沒有使能 “包頭處理” (HEADER_PROCESSING) :
     a) 主機需包含 ESP 包頭 (SPI、 序列號 ), 在旁路數據 ( 如果有的話 ) 之后, 在任何 其他數據之前。
     b) 如果設定了 “從輸入裝載 IV” : 主機需將 IV 放在有效數據的前面。
     主機可能會選擇在 VPN 芯片進行處理之前或之后加外部隧道 IP 包頭。如果隧道 包頭在加密處理之后加, 那么旁路偏置應該被設置為 0。VPN 芯片不會處理包含在旁路偏置 中的外部 IP 包頭。如果在外部 IP 包頭中在 ESP 頭之前存在 IPv4 選項或 IPv6 擴展包頭, 那么也應該被包括進旁路偏置數據中。即使對一個 “零加密算法” 運算, 仍將添加填充 (ESP 有要求, 目的是為了為 “下一包頭” 域留出空間 )。對于 “零加密算法” , 填充至 64 位的倍數。 圖 26 示出了根據本發明一個實施例的 ESP 輸入隧道模式包格式。在一個實施例 中, 本發明的 VPN 芯片在包上執行以下操作 :
     1. 從源復制” 旁路偏置” 數據 ( 如果出現的話 ) 到目的地址。
     2. 如果使能 “包頭處理” (HEADER_PROCESSING), 解析 ESP 包頭, 并對照 SA 中的預 期 SPI、 預期序列號和抗重放窗口位圖對 SPI 和序列號進行驗證 ( 如果出現旁路偏置, 后面 緊跟著的就是 ESP 包頭 )。
     3. 從輸入數據裝載 IV。IV 緊隨 ESP 包頭之后。
     4. 解密并認證數據包。
     5. 如果沒有設定 “復制包頭到輸出” , 則丟棄 ESP 頭和 IV。
     6. 驗證 “密文填充” 并提取下一包頭。
     7. 如果沒有設定 “復制輸入填充到輸出” , 則丟棄 “填充” ( 對于 ESP 運算, 填充部 分包含了 ESP 包尾 ( 填充 + 填充長度 + 下一包頭 ))。
     8. 如果認證算法不是零算法, 則對照包含在數據包中的 ICV 和計算的 ICV 進行驗 證。
     9. 如果認證算法不是零算法, 則丟棄包中所包含的 ICV。
     10. 如果使能 “包頭處理” (HEADER_PROCESSING), ICV 驗證正確, 且 SPI 和序列號 有效, 則在 SA 記錄中更新 “序列號” 和 “抗重放窗口位圖” 域。
     11. 在輸出宏指令中更新數據包長度、 “下一包頭” 、 檢測的填充長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏指令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯 片完成” 。
     在本發明的一些實施例中, 主機將剝離外部隧道 IP 包頭, 然后再將其送給 VPN 芯 片進行解密。但是, 也可以通過使用旁路偏置數據, 使其直接通過 VPN 芯片。
     在本發明的一些實施例中, 不管 “復制包頭到輸出” 、 “復制有效載荷到輸出” 或 “復
     制填充” 域是如何被設置的, 均不會將 ICV 返回給主機。
     圖 27 示出了根據本發明一個實施例的 ESP 輸出傳輸模式包格式。本發明的 VPN 芯片在 ESP 傳輸模式中的運算與隧道模式完全相同。主機可以選擇使用旁路功能來傳輸內 部 IP 包頭, 但在此情況下, 本發明的 VPN 芯片將不更新 IP 包頭來反應變更的數據包長度、 下一包頭或校驗和。主機需完成這些操作。
     主機可選擇將內部 IP 包頭傳輸給本發明的 VPN 芯片或不傳輸。上述例子描述的 是將內部包頭傳輸給 VPN 芯片并通過芯片進行簡單復制的范例。如果內部包頭被安排在算 法處理之后加, 則旁路偏置應被設置為 0。
     如果有附在 ESP 包頭之前的 IPv4 選項或 IPv6 擴展包頭, 則應將它們包含在旁路 偏置數據之內。
     圖 28 示出了根據本發明一個實施例的 ESP 輸入傳輸模式包格式。當設置了 “復制 包頭到輸出” 時, 在輸出中可包含 ESP 包頭和 IV。此外, 當設置了 “復制填充” 時, 在該輸出 中可包含 ESP 包尾 ( 填充 + 填充長度 + 下一包頭 )。VPN 芯片在 ESP 傳輸模式中的運算與 隧道模式完全相同。 主機可以選擇使用旁路功能來傳輸內部 IP 包頭, 但在此情況下, VPN 芯 片將不更新 IP 包頭來反應變更的數據包長度、 下一包頭或校驗和。主機須執行這些操作。
     一般情況下, 主機將剝離外部隧道 IP 包頭, 然后再將其送給 VPN 芯片進行解密。 但 是, 也可以通過使用旁路偏置數據, 使其直接通過 VPN 芯片。
     圖 29 用于說明根據本發明實施例的 AH 包頭定位及可變位處理 (IPV6)。圖 30 用 于說明根據本發明實施例的 AH 包頭定位及可變位處理 (IPV4)。
     圖 31 示出了根據本發明實施例的 AH 輸出包格式。在輸入中, 在 IP 內部包頭之前 和之后都可出現選項和擴展包頭, 在圖中未示出。當沒有設定包頭處理時, AH 頭包括在輸 入中。無論隧道模式和傳輸模式都一樣。
     主機需按照以下要求準備輸入數據 :
     如果沒有使能 “包頭處理” (HEADER_PROCESSING) :
     主機需緊隨 IP 外部包頭之后包含 AH 包頭 ( 下一包頭、 包頭長度、 SPI、 序列號、 加 上留給 ICV 的若干字節的 “空檔” )。在 IPv6 情況下, 在 AH 包頭之后可放置與 IP 外部包 頭相關的目的擴展包頭。IP 外部包頭需正確設置自己的 “下一包頭” 、 “長度” 和 “校驗和 (IPv4)” 域, 以反應 AH 包頭的狀況。由于 HMAC 操作包含包頭, 這些域在經過 VPN 芯片的操 作之后不會更新。
     VPN 芯片在包上執行以下運算 :
     1. 從源復制旁路偏置數據 ( 如果有的話 ) 到目的地址。
     2. 如使能 “包頭處理” : 插入 AH 包頭到包中, 包括下一包頭、 包頭長度, 加上來自 SA 的 SPI 和序列號。注意, “下一包頭” 域是來自主機提供的包處理輸入宏指令。在外部 IP 包 頭中更新下一包頭、 長度和校驗和 (IPv4)。在 SA 記錄中更新 “序列號” 。
     3. 在 AH 包頭中在 ICV 位置填零。
     4. 根據 IPsec 標準, 對數據包進行 HMAC 運算。 如果設置了 “可變位處理” (MUTABLE_ BIT_HANDLING), 則此操作將所有可變位置零處理。
     5. 將截取的 96 位 ICV 寫入到 AH 包頭中。
     6. 如果沒有設定 “復制包頭到輸出” , 則丟棄 IP 外部包頭。7. 如果沒有設定 “復制有效載荷到輸出” , 則丟棄 IP 內部包頭和有效載荷。
     8. 在輸出宏指令中更新新的長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏指 令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成。
     由于外部 IP 包頭和內部 IP 包頭都需要進行認證, 因此通常情況下旁路偏置將被 設置為 0。當其他系統控制數據附在到包上時, 可以使用旁路偏置功能。如果 “復制包頭 到輸出” 和 “復制有效載荷到輸出” 都沒有被設置, 那么僅僅返回 ICV, 且結果長度= 12(96 位 )。當 “復制包頭到輸出” 或 “復制有效載荷到輸出” 使能時, 均返回 AH 頭 +ICV。
     圖 32 示出了根據本發明實施例的 AH 輸入包格式。在輸入中, 在 IP 內部包頭之前 和之后都可出現選項和擴展包頭, 在圖中沒有示出。
     VPN 芯片在包上執行以下操作 :
     A. 從源復制任何” 旁路偏置” 數據 ( 如果有的話 ) 到目的地址。
     B. 查找 AH 包頭的位置 (IPv4 : VPN 芯片通過讀取外部包頭長度來計算與 AH 包頭 之間的偏移。IPv6 : VPN 芯片通過外部 IP 包頭和擴展包頭來定位 AH 包頭 )。
     C. 如果使能 “包頭處理” (HEADER_PROCESSING), 則解析 AH 包頭, 并對照 SA 中的 SPI、 預列號和抗重放窗口位圖對 SPI 和序列號進行驗證。
     D. 將來自數據包的 ICV 保存到一個臨時緩存, 將包中的 ICV 置零。對包進行 HMAC 運算, 并對照保存在臨時緩沖中的 ICV 驗證結果。
     E. 如果沒有使能 “復制包頭到輸出” , 則從數據包中剝離 IP 外部包頭 ( 還要剝離 可能出現的 AH 包頭和擴展包頭 )。
     F. 如果沒有使能 “復制有效載荷到輸出” , 則剝離 IP 內部包頭和數據包的有效載 荷部分 [ 注意 : 如果既沒有設定 “復制包頭到輸出” 也沒有設定 “復制有效載荷到輸出” , 則 結果長度可能為零 ]。
     G. 如果 SPI、 序列號和 ICV 都驗證正確, 則更新 SA 記錄中的 “序列號” 和 “抗重放 窗口位圖” 域。
     H. 在輸出宏指令中更新結果長度、 “下一包頭” 、 “狀態” 和 “VPN 芯片完成” 。在包 處理輸入宏指令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成。
     由于外部 IP 包頭和內部 IP 包頭都需要進行認證, 通常情況下旁路偏置將被設置 為 0。當其他系統控制數據附在到包上時, 可以使用旁路偏置功能。對于 AH 輸入來說, VPN 芯片不會更新外部 IP 包頭中的任何域 ( 例如下一包頭、 長度以及校驗和域 )。 主機需在 VPN 芯片完成后對這些域進行更新。注意, 當設定了 “復制包頭到輸出” 后, 將返回 AH 頭 +ICV。 當選擇了零加密算法后, VPN 芯片不驗證填充。
     圖 33 示出了根據本發明實施例的 ESP 和 AH 輸出隧道模式包格式。捆綁運算通過 使用多個指向同一個數據包的連續包處理輸入宏指令來實現。 “相關包” 位需在所有的、 除 最后宏指令之外的宏指令中進行設置。
     運算 1 : 第一個宏指令指定執行 ESP 隧道模式 :
     1. 第一個宏指令指定一個旁路偏置, 等同于外部隧道包頭和所有選項 / 擴展的大 小。
     2. 如果沒有使能 “包頭處理” , 則主機需要在需要旁路的數據中包含進 AH 包頭。 AH 包頭的 “下一包頭” 域需被設置為 ESP。運算 2 : 第一個宏指令指定執行 AH 隧道模式 : 1. 由于 AH 需認證整個數據包, 第二個宏指令的旁路偏置指定為 0。 2. 在該運算階段, VPN 芯片需更新 IP 外部包頭的數據長度、 下一包頭和校驗和等數據。 外部隧道 IP 包頭需被包含在數據包內提交給 VPN 芯片, 因為在 AH 認證中需包括 外部隧道 IP 包頭。
     圖 34 示出了根據本發明實施例的 ESP 和 AH 輸入隧道模式包格式。捆綁運算通過 使用多個指向同一個數據包的連續包處理輸入宏指令來實現。 “相關包” 位需在所有的、 除 最后宏指令之外的宏指令中進行設置。
     運算 1 : 第一個宏指令指定, 執行輸入 AH 隧道模式 :
     a) 第一個宏指令指定旁路偏置為 0, 因為 AH 需認證整個數據包。
     b) 如果沒有使能 “復制包頭到輸出” , 則丟棄 IP 外部包頭和 AH 包頭。
     運算 2 : 第二個宏指令指定執行輸入 ESP 隧道模式 :
     a) 如果設定了 “復制包頭到輸出” , 第 2 個宏指令需指定一個旁路偏置, 等同于外 部隧道包頭的大小, 包括所有選項 / 擴展, 以及 AH 包頭。
     外部隧道 IP 包頭需被包含在數據包內提交給 VPN 芯片, 因為在 AH 認證中需包括 外部隧道 IP 包頭。當選擇了零加密算法后, VPN 芯片將不驗證填充。
     圖 35 示出了根據本發明實施例的 SPI-3 常規輸出包格式。主機需按照以下方式 進行輸入數據的準備 :
     ·每一個輸入到 SPI-3TX 接口上的數據包需在其前有一個包處理輸入宏指令。
     ·包數據的字節長度需完全等同于宏指令中所規定長度。
     ·SPI-3 包的總長度需完全等同于包數據長度加包處理輸入宏指令的字節數。
     包數據格式可以包括一個旁路數據域、 一個 IV 和依協議而定的包頭。每一個輸出 到 SPI-3RX 接口上的數據包都有一個包處理輸出宏指令尾隨其后 ( 例如 16 字節 )。目的 地址域為 SPI-3 端口號, 數據包通過此端口進行傳輸。包數據的字節長度等同于宏指令中 所規定的長度。包數據可能有一個零長度, 在這種情況下, SPI-3 包只有一個宏指令。包處 理輸出宏指令在 SPI-3 傳輸的數據包中可以以 64 位計數定位。在此情況下, 若包數據不是 64 位的倍數, 則在包數據和宏指令之間需要插入 1-7 個字節的填充。這些填充字節的值不 做規定。包數據格式包數據格式可以包括一個旁路數據域、 一個 IV 和依協議而定的包頭。 該格式不適用于帶 “復制有效載荷” 的 AH 輸出包。
     圖 36 示出了根據本發明實施例的 SPI-3 帶復制有效載荷的 AH 輸出包格式。在 AH 輸出包情況下, 只有在整個包被 HASH 之后才能夠知道 ICV。因此, 在此情況下, SPI-3RX 將 在有效載荷之前輸出一個無效 ICV, 并在有效載荷之后及輸出宏指令之前輸出正確的 ICV。
     根據本發明一個方面, 包數據是一個 AH 包, AH 包的 ICV( 例如 12 字節 ) 初始化為 “零” 。它包括一個 IP 包頭, 隨后為擴展包頭 ( 可選 ), 再隨后為一個帶無效 ICV 零的 AH 包 頭, 再隨后為其他包頭 ( 可選 ), 最后為一個 AH 有效載荷數據。 包數據的總字節長度在宏指 令的長度域中規定。正確的 ICV 值在 SPI-3RX 傳輸的數據包中以 64 位計數定位。因此, 若 在此之前的包數據不是 64 位的倍數, 則在包數據和 ICV 之間需要插入 1-7 個字節的填充。 這些填充字節的值不做規定。包處理輸出宏指令可以同樣也以 64 位計數定位, 因此始終與
     ICV 保持 4 字節填充的間隔。這些填充字節的值不做規定。接受 AH 包的主機需對整個包進 行緩沖處理, 并在正確位置插入正確的 ICV, 然后才能將該包轉發出去。
     圖 37 示出了根據本發明實施例的 MPPE 輸出。在圖中, 如果沒有使能 “包頭處理” , 則需在輸入數據包中放置 MPPE 包頭。
     主機需按照以下方式準備輸入數據 :
     如果沒有使能 “包頭處理” , 主機需在輸入數據包中包括 MPPE 包頭。該包頭長度為 4 個字節, 開始字節為 0x00 和 0xfd( 壓縮數據包的 PPP 協議包頭 )。第 3 個和第 4 個字節 包含 12 位一致性計數 ( 第 3 個字節是高字節 ) 和 4 位標識 ( 分別標識 A ~ D)。D 標識位 需被設定, A 標識位是重開始位, 在以下情況下需設定 :
     a) 不帶狀態的 MPPE。
     b) 在帶狀態 MPPE 的情況下, 第 1 個數據包或者在復位請求后需設置。在此情況 下, 數據包處理輸入宏指令中控制狀態域的位 [3] 需被設置。
     c) 對于帶狀態 MPPE, 如果一致性計數的最低字節是 0Xff。
     VPN 芯片在包上執行以下操作 :
     A. 從源復制 “旁路偏置” 數據 ( 如果出現的話 ) 到目的地址。
     B. 如果使能 “包頭處理” : SA 中的一致性計數加 1。在數據包中插入 4 字節長 MPPE 包頭, 包括 : PPP 協議包頭 0x00、 0xFD、 12 位一致性計數 ( 儲存在 SA 中 ) 以及 A 到 D 的 4 位 標志位。
     C. 根據 MPPE 模式和包處理輸入宏指令的控制狀態域中位 [3], 更新 RC4 密鑰和狀 態, 如下 :
     a) 對于不帶狀態的 MPPE, 執行密鑰更新算法, 并從新的會話密鑰初始化 RC4 狀態。
     b) 對于帶狀態的 MPPE, 如果一致性計數的低字節為 0xFF, 執行密鑰更新算法并從 新的會話密鑰初始化 RC4 狀態。
     c) 對于帶狀態的 MPPE, 如果設定了包處理輸入宏指令的控制狀態域中的位 [3], 則從新的會話密鑰重新初始化 RC4 狀態。
     d) 對于其他情況下的帶狀態 MPPE, 不改變 RC4 狀態。
     D. 使用在前面操作中獲得的 RC4 狀態, 用 RC4 算法加密有效載荷數據。
     E. 在輸出宏指令中更新結果長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏指 令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成。
     圖 38 示出了根據本發明實施例的 MPPE 輸入。在圖中, 如果使能了 “復制包頭到輸 出” , 則在輸出包中會出現 MPPE 包頭。
     主機需按照以下方式準備輸入數據 :
     主機需對 MPPE 已加密數據包提供 4 字節的 MPPE 包頭, 包括 PPP 協議域 0x00、 0xFD 和一致性計數和 4 位標志位 ( 來自于輸入的數據流 )
     VPN 芯片在包上執行以下操作 :
     A. 從源復制” 旁路偏置” 數據 ( 如果出現的話 ) 到目的地址。
     B. 檢查 MPPE 包頭中的一致性計數, 應該為 SA 中的一致性計數再加上 1。 復制 MPPE 包頭到 SA 中的相關域。如果一致性計數不匹配預期值, 則執行以下操作 :
     a) 對于不帶狀態模式, 如果實際值和預期值之間的差額小于一定的限度, 則接受數據包的丟失, 并執行密鑰更新算法, 執行的次數根據該差額而定。
     b) 對于不帶狀態模式, 如果該差額大于所規定的限額, 則中止數據包處理。
     c) 對于帶狀態模式, 如果設定了包頭中的重開始位, 任何一致性計數都可以接受, 即使 SA 中 MPPE 包頭域中的 “D” 位為 0。芯片將執行密鑰更新算法, 執行的次數根據所遺漏 的 “標志” 包 ( 一致性計數的低字節為 0xff) 的數量而定。
     d) 對于帶狀態模式, 如果 SA 中 MPPE 包頭域中的 “D” 位為 0, 則該數據包視為錯誤。 不再對該數據包進行進一步處理。
     e) 對于帶狀態模式, 如果一致性計數不匹配預期值, 且沒有設定重開始位, 則視為 錯誤。芯片將清除 SA 中所存儲 MPPE 包頭域中的 “D” 位, 以表明遇到一個一致性計數錯誤。 主機需向發送方發出一個同步請求。
     C. 根據 MPPE 模式和所接收的 MPPE 包頭內容的不同, 按照以下方式初始化 RC4 狀 態。
     a) 對于不帶狀態 MPPE, 執行密鑰更新算法, 并從新的會話密鑰中初始化 RC4 狀態。
     b) 對于帶狀態 MPPE, 如果一致性計數的低字節為 0xFF, 執行密鑰更新算法, 并從 新的會話密鑰中初始化 RC4 狀態。 c) 對于帶狀態 MPPE, 如果在 MPPE 包頭中設定了重開始位, 從當前的會話密鑰重新 初始化 RC4 狀態
     d) 對于在所有其他帶狀態 MPPE 的情況, 不更改 RC4 狀態。
     D. 用前面操作中所獲得的 RC4 狀態, 解密 RC4 的有效載荷數據。
     E. 如果沒有設定 “復制包頭到輸出” , 丟棄 MPPE 包頭。
     F. 在輸出宏指令中更新結果長度、 “狀態” 和 “VPN 芯片完成” 。在包處理輸入宏指 令 ( 如果和輸出宏指令隊列分開的話 ) 中更新 “VPN 芯片完成。
     通常情況下旁路偏置被設置為 0。如果使用發段 / 集中處理, 需增加 4 個字節的 無效旁路數據, 并關閉包頭處理。 當其他系統控制數據附在到包上時, 可以使用旁路偏置功 能。 “包頭處理” 位無效。芯片均檢測 MPPE 包頭。
     根據本發明另一方面, SA 記錄可以包括前述的指令字 0、 指令字 1、 會話密鑰、 初始 密鑰、 保存 ARC4i&j 指針、 statesalt 字節、 MPPE 一致數計數 + 包頭以及 ARC 狀態記錄等等。
     以上結合具體實施例說明了本發明的包處理模塊。本領域技術人員將理解, 上面 所列出的數值, 例如位寬、 字節數等等僅是為了說明的方便, 本領域技術人員可以根據其需 要而任意設置適當的數值。
     下面說明根據本發明的 VPN 芯片中對分組、 散列和公鑰算法模塊的配置和譯碼控 制器設計。對分組、 散列和公鑰算法模塊的宏指令配置和譯碼設計, 主要包括 : 初始化、 復 位、 激活、 功能使能控制、 數據操作控制。
     復位宏指令是一個典型的針對 IP 設計的配置文件。控制信息全部來自宏指令信 息。由該宏指令指示芯片的一個或多個模塊的復位態。系統復位后, 所有模塊保持在工作 狀態 ( 初始態 )。
     在應用系統環境確立之后, 主機依據實際需求已經完全掌握芯片的處理功能, 可 以有選擇地停止不需要的模塊操作 ( 可以節省功耗 )。例如 : 做 D-H 時, 分組算法不執行 ; PCI 控制操作時, SPI3 不執行 ; 模冪運算時, 包處理不執行 ; 分組算法在處理時也僅僅是用
     一種算法。因此, 本發明的復位宏指令 ( 其可以是靜態宏指令 ) 僅控制每個模塊的復位操 作, 可以將各模塊保持在復位狀態, 并通過指令靈活配置模塊狀態。一般情況下, 主機僅在 初始化時配置一次。圖 39 進一步示出了根據本發明一個實施例的復位宏指令語用。如圖 所示, 在該實施例中, 復位宏指令可以控制圖中所示的多個模塊的復位。
     下面說明本發明的算法模塊激活宏指令。圖 40 示出了根據本發明實施例的算法 IP 的模塊示意框圖。 首先說明分組算法密文控制指令。 該分組算法密文控制指令可以控制 分組算法模塊 ( 例如 RJNDAEL 算法 AES、 3DES、 AR4 等 ) 的激活。該算法模塊的運行操作使 能與激活共同作用。這是一種選擇控制。
     圖 41 示意性地示出了分組算法模塊激活宏指令語用。復位宏指令配置與控制的 語用 ( 邏輯設計 ) 和算法模塊激活的宏指令在邏輯意義上是完全相同。根據本發明一個方 面, 與操作使能共同驅動算法模塊運行。
     圖 42 示出了根據本發明另一方面的算法模塊激活宏指令語用。如圖 42 所示, 來 自算法模塊激活宏指令的一位控制, 用于激活散列算法 MD 5 和 SHA1。在同一時刻, 只有一 個模塊運行。
     所述復位指令和算法模塊激活指令可以由系統配置模塊的復位模塊發布。
     下面說明本發明的公鑰算法模塊。本發明的公鑰算法模塊可以實現 : 大規格數據 加減運算、 大規格數據乘除運算、 大規格數據模運算、 數據左右移位操作、 大規格數據比較 運算、 大規格數據模冪乘運算。 公鑰算法模塊起到公鑰算法內核和模冪運算器的控制作用。 公鑰算法內核執行常規大數運算, 模冪運算器則提供高速模冪乘運算。
     圖 43 示出了根據本發明實施例的公鑰算法模塊結構。如圖所示, 本發明的公鑰算 法模塊可以從 PCI-X/PCI 接收 / 發送控制數據, 從 EMI 接收 / 發送數據。公鑰算法模塊包 括公鑰算法內核、 公鑰算法模塊控制器、 模冪運算器等。公鑰算法模塊可通過 PCI 總線輸入 指令和數據。例如, 可以通過三個獨立的指令寄存器組 ( 大數值運算寄存器, 定長模冪運算 寄存器, 變長模冪運算寄存器 ), 從 PCI 總線輸入。變長模冪運算和定長模冪運算指令用于 執行模冪乘運算, 如 Diffie-Hellman 和 RSA( 中國剩余定理 [CRT]) 計算。大數值運算指令 用于執行一般大數運算 ( 加、 乘等 )。上述的指令寄存器組僅是示例, 也可以包括更多或更 少的指令寄存器組, 其也可以不是獨立的甚至是相同的。
     公鑰算法模塊處理各指令占用資源具有優先權 ( 他們是實施控制的宏指令, 只要 有操作啟動, 就開始計算, 并占用存儲資源 ( 例如, 8K 和 1K 字節 ))。注意, 這三個寄存器組 可以是獨立的, 主機可同時發出執行指令。 用于公鑰計算的數據儲存在公鑰模塊 RAM 中 ( 例 如, 以 8K 字節形式 ), 可通過 PCI 總線讀取。除了輸入數據和結果數據外, RAM 內還有計算 過程中公鑰算法模塊生成的中間參數。根據本發明一個方面, 主機負責配置公鑰算法模塊 進行有效運算, 提供正確的操作數據并給結果數據分配空間。
     公鑰算法內核 RAM 是一個雙端口的體系結構, 其中一個端口與主機接口相連 ( 經 PCI 或 EMI)。主機可在任何時間讀 / 寫這個 RAM。本發明的 VPN 芯片設計允許公鑰模塊 RAM 用于芯片內 SA 記錄儲存。而模冪運算器也可以包括模冪運算器 RAM, 其是模冪運算器的專 用資源, 可通過 PCI 總線讀取, 主要用于測試。
     圖 44 示出了根據本發明實施例的大數值運算模塊 ( 公鑰算法內核 ) 結構。大數 值運算是指對大數的基本運算。在本發明的一個實施例中, VPN 芯片的公鑰算法內核可以包括乘法器、 累加器、 除法器、 移位器, 以及內核調度模塊, 如圖 44 所示。芯片可以自行控制 數據在公共存儲器中的操作。
     下表示出了本發明的大數值運算模塊可以執行的運算。
     函數 乘數學運算 AxBA_addr 被乘數B_add 乘數C_addr 結果D_addr 無加A+B加數加數結果無減A-B加數加數結果無右移 左移 除 模 比較A >>移位值 A <<移位值 A/B AmodB A=B A<B A>B A- > C輸入 輸入 被除數 被除數 輸入 A無 無 除數 模數 輸入 B結果 結果 余數 余數 無無 無 商 無 無轉移
     輸入無結果無另外, 軟件可使用以下公鑰處理模塊中斷位 : 通道 0 上完成的模冪運算器操作, 通 道 0 上完成的模冪運算器操作, 隊列操作直到公鑰算法內核完成。
     大數值運算模塊的輸入數據應符合相應的要求, 避免主機設定非法數據規格操 作。所述非法操作包括數學上未定義的操作 ( 如零除 ) 和超出公鑰算法內核數據規格的操 作。 根據本發明的一個實施方式, 主處理器需按照設計給出的控制與操作數據, 公鑰算法模 塊不檢查非法操作。
     本領域技術人員將理解, 可以采用例如 16 位、 32 為、 64 位、 128 位等等的位寬, 可以 采用其他的更高和更低的位寬。相應的, 對數據長度等的要求也會相應改變。也可以采用 更多或更少的限制, 只要能夠實現本發明中的功能即可。
     下面說明根據本發明實施例的模冪 ( 乘 ) 運算模塊。根據本發明, 模冪運算器支 持模冪計算, 在本發明的一個實施例中, 其執行的操作包括基本模冪乘運算操作和 / 或使 用中國剩余定理的 RSA-CRT 操作。
     圖 45 示出了根據本發明一個實施例的模冪運算器, 其包括四套獨立資源, 每套資 源實現一定位數 ( 例如, 512 位 ) 模冪乘運算。各資源實現的規格可以重組, 以實現更大規格的數據操作。可經變長模冪運算指令和定長模冪運算指令 ( 寄存器組 ) 啟動運算。
     在本發明的一個實施方式中, 變長模冪運算寄存器控制模冪運算器第 0 套資源的 入口, 定長模冪運算寄存器控制模冪運算器第 2 套資源的入口。模冪運算器第 0 套資源可 與其他三套資源組合, 以支持例如 1024 位、 1536 和 2048 位運算。模冪運算器第 2 套資源只 能模冪運算器第 3 套資源組合, 因此最大運算量是 1024 位。然而, 這僅是示例性的, 也可以 進行其他的入口設置和組合。
     在本發明的一個實現方案中, 芯片可以不支持主機對模冪運算器第 1 套資源和模 冪運算器第 3 套資源的支持控制。所示的資源數量及位寬僅是示例性的, 可以根據需要使 用更多或更少的資源, 采用更大或更小的位寬。
     下表示出模冪運算模塊資源分配。
     模冪運算器操 作 變長模冪運算 變長模冪運算 變長模冪運算 變長模冪運算 變長模冪運算 變長模冪運算操作 ( 規格 )第 0 套資源第 1 套資源第 2 套資源第 3 套資源512 位 DH 1024 位 DH 1536 位 DH* 2048 位 DH* 1024 位 RSA(CRT) 2048 位 RSA(CRT)*X X X X X X X X X X X X* X* X* X* X*定長模冪運算 定長模冪運算 定長模冪運算
     512 位 DH 1024 位 DH 1024 位 RSA(CRT)X X X X X其中, 根據本發明的一個實施方案, 變長模冪運算和定長模冪運算控制可以是獨 立的, 因此可同時進行多個模冪計算。此外, 還可同時進行 RSA-CRT 部分冪運算操作以提高 并行度, 減少計算時間。因此, 在要求兩個 1024 位 RSA-CRT 并行計算的情況下 ( 一個變長 模冪運算操作, 一個定長模冪運算操作 ), VPN 芯片實際上將同時進行 4 個模冪乘運算。由 于變長模冪運算和定長模冪運算資源共用, 因此對可同時進行的運算有一定的限制。 例如, 變長模冪運算上的 2048 位模冪乘運算需禁止其他任何并行計算, 所有計算資源均被變長 模冪運算操作占用。圖表闡述了各資源可執行的操作以及可同時進行的操作。
     41下表示出了根據本發明一個實施方案的模冪運算模塊規格設計。101997834 A CN 101997839說明書37/59 頁需要說明的是, 如果模數大于 512 位, 且模數的位 [1]( 第 2 個最低位 ) = ‘0’ , 那 么指明的模數長度需至少比實際模數長度大兩位。例如 : 如果指明的模數長度是 1024 位, 那么實際的模數長度不能大于 1022 位。如果實際模數長度是 1023 或 1024 位, 那么需使用 模冪運算器三套資源 (1536 位 )。因此, 如果模數的位 [1] 為 ‘1’ , 適用上面的資源分配表。 如果位 [1] 為 ‘0’ , 適用上面的規格設計表。
     在基本模冪乘運算中, 需有底數、 模數和指數等數據。在 RSA-CRT 計算中, 需要給 出模數 P 和 Q( 長度為一半 )、 指數 D1 和 D2( 長度為一半 ), 輸入數據 M 和數據 Q。模冪運算 器的分段結構要求輸入值長度 ( 指數除外 ) 是 512 位的倍數。 主機需將數據用零填充至 512 位的倍數, 并且給出數據的實際有效位數。下表中數據表明了基本模冪乘運算和 RSA-CRT 模冪乘運算的輸入數據要求。
     操作 512 位基本模冪乘運算 1024 位基本模冪乘運算指數 * 無 無模數 512 位 1024 位基數 512 位 1024 位1536 位基本模冪乘運算 2048 位基本模冪乘運算
     無 無1536 位 2048 位1536 位 2048 位42101997834 A CN 101997839說D1* 無 無 D2* 無 無明P書Q 512 位 1024 位 A 512 位 1024 位 輸入38/59 頁操作 1024 位 RSA-CRT 2048 位 RSA-CRT
     512 位 1024 位1024 位 2048 位
     模數 [0] = 1 模數值必須是奇數盡管在本發明的一些實現方案中, 將所有的模冪乘運算分為 512, 1024, 1536 或 2048 位計算, 實際上本發明可以支持 32 位倍數的基本模冪乘運算和 64 位倍數的 RSA-CRT 計算。輸入中進行零填充的目的在于存儲分配和初始化。操作數據應該遵循表中的要求。
     根據本發明, 主機負責將一塊連續存儲區分配給模冪運算模塊結果數據。主機需 保證分配的空間足以容納結果數據。此外, 模冪運算器還將分配給結果的空間用做中間參 數存儲區, 所需大小取決于數據長度, 特別是模數長度。分配的空間與模數數據的規格相 關, 而不是與實際有效位長度相關。在計算結束時, 實際有效位將位于分配空間的低端。與 公鑰算法內核操作不同的是, 本發明的 VPN 芯片在模冪乘運算中不提供結果最高有效非零 字的位置。
     在本發明的一種實施例中, 提供的變長模冪運算可以支持模數長度為 512, 1024, 1536, 2048 位的基本模冪乘運算, 并可以支持模長度為 1024 和 2048 位的 RSA-CRT 模冪乘運 算。根據本發明一個實施例, 模數長度可以用零填充至 512 位倍數后的長度。
     在本發明的一種實施例中, 提供的定長模冪運算可以支持模數長度為 512 和 1024 位的基本模冪乘運算, 以及模數長度為 1024 位的 RSA-CRT 模冪乘運算。
     下面說明本發明中的隨機數模塊。本發明 VPN 芯片中的隨機數模塊 ( 隨機數發生 器 )(RNG) 為不同應用提供了真隨機數的高質量來源。在本發明的實施例中, 采用真正的熵 源——物理白噪聲, 并利用 FIP 140-1 標準的數學信息處理機制, 從而確保隨機輸入能夠滿 足密碼隨機性的要求。并且, 在本發明 VPN 芯片的一個實現方案中, 對隨機數模塊的技術要
     求: 滿足 5 種局部效驗測試, 支持 BBS 和 LSFR 算法, 加入物理噪聲源, 輸出反饋, 訪問許可機 制。
     圖 46 示出了根據本發明一個實施例的隨機數模塊結構。如圖所示, 在隨機數發生 器模塊上電復位后, 即利用已經設計確定的初始種子參數 S0 進行計算。同時物理噪聲源不 斷進行噪聲值采集, 當達到噪聲值設計規格時, 取物理噪聲值規格的低位 ( 值應大于 S0/2, 小于 S0) 裝入計數器。計數器根據裝入的值進行計數運算。當計數器衰減至結束時, 表明 需控制更新 BBS 初值進行新一輪循環運算, 同時再裝入當前物理噪聲值重新計數。當隨機 數發生器種子參數更換時, 取當前物理噪聲序列值寄存器和隨機數序列值寄存器, 進行隨 機策略計算, 獲得新的種子參數 Si。每次 BBS 算法模塊輸出的隨機值要與物理噪聲序列值 進行隨機策略計算 ( 異或 ), 得到隨機數發生器隨機值輸出序列。使用計數器 (CNT_CTRL) 控制邏輯操作和功能實現。( 注意是不是要描述圖 )
     在本發明的一個實現方案中, 每隔一定時間對 BBS 發生器的初值進行更新, 訪問 隨機數發生器隨機值序列需要許可控制。另外, 可以使用 LFSR 算法代替 BBS 算法。
     在本發明的一個實現方案中, 隨機數模塊將真隨機數以 32 位提供給應用, 并且在 每次被訪問后, 自動重新生成新的隨機數。
     圖 47 示出了根據本發明實施例的隨機數模塊指令配置。如圖 47 所示, 隨機數模 塊指令配置包括 :
     隨機數輸出寄存器 RNG 輸出寄存器 P_RN_OUTPUT, 其用于提供對 32 位隨機數的讀 訪問。其輸入來自 BBS/LFSR 算法模塊, 輸出至 PCI 總線或與物理噪聲源進行異或操作, 產 生新的隨機數種子值。當寄存器發出隨機數已經準備好被讀取信號時, RNG 輸出寄存器將 自動啟動 RNG 寄存器產生新的隨機數。其復位初始值為 0。
     RNG 狀態寄存器 P_RN_STATUS, 其用于隨機數訪問許可 ( 準備 / 占線 ), 本寄存器 采用報警計數器對 BBS 運算次數進行計數, 在進行了 32 次后, 表明輸出寄存器隊列已裝滿, 將讀允許標識置為讀允許狀態。此后等待用戶取走隨機數, 用戶取走隨機數后發數據更新 標識, 則讀寫控制邏輯將讀允許標識置為無效, 重新對模乘運算次數進行統計, 待隊列裝滿 發讀允許標識。RNG 狀態寄存器 ( 位 (0) 為 ‘0’ 時 ) 向主機發出可以讀取隨機數的信號, 并向中斷寄存器發出中斷, 直到隨機數被讀取, 同時通知 RNG 輸出寄存器可以開始準備下 一個隨機數 ; RNG 狀態寄存器 ( 位 (0) 為 ‘1’ 時 ) 將禁止外部讀取, 表示正在產生新的隨機 數; 其為 32 位, 復位初始值為 0x00000001。
     RNG 控制寄存器 P_RN_CONTROL, 主要用于控制 RNG 寄存器內部的各項工作, 檢驗 RNG 操作 ;
     RNG 配置寄存器 P_RN_CONFIG, 其用于配置 RNG 進行使用, 可以指示環形振蕩器的 環形延時以及報警復位計數等。本寄存器 ( 位 [2:0], 初值為 4) 選擇 LFSR#1 中移位寄存器 的延時 ; 本寄存器 ( 位 [5:3], 初值為 3) 選擇 LFSR#2 中移位寄存器的延時 ; 本寄存器 ( 位 [11:6], 初值為 32) 為報警復位計數器置初值, 即控制了 BBS/LFSR 運算次數 ; BBS/LFSR 運 算一次, 計數器值減一, 當計數器值為零時, 說明輸出寄存器隊列已滿, 發出 OV 信號, 通知 讀取控制邏輯, 隨機數已經產生, 可以發出讀允許信號通知主機。
     圖 48 示出了本發明的 RNG 宏指令語用。系統復位后, 模塊開始工作。首先利用內 部初始參數 S0 進入 BBS 或 LFSR 計算, 計算時由 RNG 配置寄存器控制 ; 運算完成后, 將結果發送到輸出寄存器并由 RNG 配置寄存器的讀寫控制模塊 ( 讀寫控制模塊對 BBS 模塊模乘循 環次數進行計數, 每次模乘結束計數器加一。在計滿 32 組以后, 產生讀允許標志, 通知用戶 可讀取隨機數。此后若無數據更新請求, 讀允許標志一直有效。每次用戶讀走一組發數據 更新請求標志, 則讀寫控制模塊重新產生讀允許信號。) 發出 OV 信號通知主機可以讀取隨 機數, 同時將結果與物理噪聲源進行異或操作, 產生新的隨機數種子值 SI ; 物理噪聲不斷 輸入隊列寄存器 ( 每個時鐘周期產生一位 ) 得到最近的物理噪聲, 取物理噪聲源進入衰減 計數器進行減一計數, 減一計數結束產生更換初值使能, 以此選擇對隨機數種子值的更新。
     RNG 算法分為 BBS 和 LSFR 兩種。 BBS( 模乘 ) : 兩數相乘, 將結果除以一個固定的整 數求余數。LSFR( 線性反饋移位寄存器 ) : 將輸入的數據首先與輸入的靜態編碼做與操作, 然后將產生的數據做縮位異或操作, 最后將產生的一位數據放入邏右移一位的輸入數據的 最高位。
     隨機數模塊指令配置還包括 :
     RNGA 寄存器 P_RN_A_REG, 用于測試和診斷提供對熵 A 寄存器的讀訪問 ;
     RNGB 寄存器 P_RN_B_REG, 用于測試和診斷提供對熵 A 寄存器的讀訪問 ;
     RNG X 寄存器 [31:0]P_RN_X_0, 用于提供對 X 寄存器 (BBS/LFSR 運算結果的最低 32 位 ) 的讀訪問 ;
     RNG X 寄存器 [31:0]P_RN_X_1, 用于提供對 X 寄存器 (BBS/LFSR 運算結果的中間 32 位 ) 的讀訪問 ;
     RNG X 寄存器 [31:0]P_RN_X_2, 用于提供對 X 寄存器 (BBS/LFSR 運算結果的最高 17 位 ) 的讀訪問 ;
     RNG LFSR1 寄存器 [31:0]P_RN_LFSR1_0, 用于提供對 LFSR#1 的讀訪問, 提供用于 檢測的 0 和 1 的個數的讀訪問 ;
     RNG LFSR1 寄存器 [47:32]P_RN_LFSR1_1, 用于提供對 LFSR#1 的指定的最高有效 位的讀訪問, 提供用于檢測的 0 和 1 的個數的讀訪問 ;
     RNG LFSR2 寄 存 器 [31:0]P_RN_LFSR2_0 和 RNG LFSR2 寄 存 器 [47:32]P_RN_ LFSR2_1 與上面的類似, 針對 LFSR#2 的讀訪問 ;
     RNG 計數器 P_RN_ 寄存器 [31:0]COUNTER, 用于提供對物理噪聲源產生的隨機數位 數的讀訪問 ; 以及
     RNG 報警計數器寄存器 P_RN_ALARM_COUNT, 用于提供主機不滿意 ( 隨機性不好 ) 的隨機數的數量的讀訪問。
     上述寄存器是為了隨機數性能測試使用, 主要提供局部效驗, 為測試和診斷提供 對寄存器的讀訪問。
     下面說明根據本發明實施例的時鐘和中斷設計。如先前所述的, 在本發明的一個 實施例中, 本發明 VPN 芯片的系統配置模塊包括 PLL 模塊、 時鐘分頻模塊和中斷模塊。
     圖 49 示出了根據本發明實施例的 PLL 控制以及 PLL 控制寄存器宏指令語用。如 圖所示, PLL 宏指令控制寄存器輸出兩組信號, 分別連接 PLL 系統和 PLL 模模塊。其中軟復 位根據 PLL 模塊的技術要求, 延時并建立計數器控制 PLL 系統和 PLL 模運算的復位。模冪 信號寬度寄存器也控制一個延時計數器, 使模冪運算結果保持到系統時鐘可以采集大信號 寬度。PLL 系統和 PLL 模運算分別通過下面公式產生主時鐘和模運算時鐘 : 公式 : FOUT = FIN * {4(M+2)/[(P+2) * S]}(FIN 為 PLL 系統和 PLL 模運算的時 其中, P、 M、 S 是 PLL 控制寄存器產生的三種控制信號, 分別控制 PLL 系統和 PLL 模鐘)
     運算。 PLL 控制寄存器指令包括兩組 PLL 配置信息 ( 系統和模冪運算 )。此寄存器的 32 位指令控制兩個 PLL 產生以下兩個時鐘 : 系統時鐘, 用于 VPN 內部大部份電路, 輸出到 EMI 時鐘管腳 ; 以及模冪運算器時鐘 : 用于高速模冪運算器。輸入的 32 位數據通過 PLL 控制寄 存器分成兩組 PLL 配置信息 : 系統 (PC、 SC、 MC) 和模冪運算 (PE、 SE、 ME), 控制 PLL 系統和 PLL 模運算產生系統時鐘和模運算時鐘 ;
     對該寄存器的語義具體說明如下。
     軟件系統復位 : 在改變系統時鐘 PLL 設置后, 需將該位設為 1 保持 150 微秒以上, 以使系統時鐘 PLL 再次鎖存穩定。復位值= ‘0’
     停止模冪運算器時鐘 : 降低模冪運算器時鐘 PLL 功率, 停止模冪運算器時鐘。
     軟件系統復位 : 在改變系統時鐘 PLL 設置后, 需將該位設為 1 保持 150 微秒以上, 以使 PLL 系統和 PLL 模運算再次復位。復位值= ‘0’
     下面說明本發明中模冪運算器信號寬度寄存器指令。 該指令的低四位輸入一個減 一計數器, 運算完畢輸出并保持結束信號 OV, 讓系統時鐘在有效周期內可以檢測到, 并取走 模冪運算結果, 最后釋放 OV。
     在本發明的一個實施方案中, 至少將模冪運算器信號放大為系統時鐘的 2 倍, 從 而保證模冪運算器信號在系統時鐘域內被檢測到。
     下面說明根據本發明實施例的中斷設計。在本發明的一個實現方案中, 利用靜態 宏指令作為針對 IP 的控制條件配置, 例如, 中斷控制配置。
     根據本發明, 外部設備 ( 主機 ) 與芯片發生邏輯控制時, 信號特征可作為中斷源可 選項, 中斷恢復的控制權和狀態是可選項。 另外, 還支持保存中斷源, 屏蔽中斷源, 清除中斷 源等常規設計。
     在一個實施例中, 在本發明的 VPN 芯片上有如下的中斷管腳 : 中斷輸入 (INTI) 和 中斷輸出 (INTA_n)。中斷輸入是讀取宏指令信號, 可啟動包處理模塊狀態機。該中斷可經 連接至 INTI 管腳的外部信號啟動。INTI 管腳可以是負沿觸發的。主機中斷控制器允許對 INTA_n 中斷輸出信號 ( 可能連接至主機系統的中斷輸入 ) 在 1 和 14 源之間進行設置。P_ IC_HOST_MASK_CONTROL 寄存器提供中斷源的屏蔽選擇。
     中斷分為硬件中斷和內部中斷。硬件中斷是主機產生的強制性中斷, 由強制 PCI 主機中斷寄存器控制, 優先級高于內部中斷。內部中斷是由芯片內部各個模塊發出中斷請 求 ( 中斷源 ) 產生的中斷, 各個中斷源間無優先級的高低。
     圖 50 示出了根據本發明實施例的中斷宏指令寄存器的配置。該寄存器配置包括 :
     驅動 PCI 主機中斷寄存器 P_IC_GEN_HOST_INTERRUPT : 強制主機中斷 ( 優先級最 高);
     驅動宏指令讀取寄存器 P_IC-FORCE_DESC_READ : 主機發起宏指令隊列信息的指 令;
     主機宏指令完成計數寄存器 P_IC-DESC_DONE_COUNT : 指示包處理宏指令執行數量; 主機未屏蔽狀態寄存器 P_IC-HOST_UNMASKED_STATUS : 中斷源的非屏蔽中斷狀 態, 供主機讀取 ;
     主機清除中斷寄存器 P_IC-HOST_CLEAR_INTERRUPT : 主機復位中斷, 可將未屏蔽 狀態寄存器和屏蔽控制寄存器復位 ;
     主機屏蔽控制寄存器 P_IC-HOST_MASK_CONTROL : 控制對中斷源的屏蔽 ;
     主機中斷配置寄存器 P_IC-HOST_INT_CONFIG : 中斷信號配置 ;
     主機屏蔽狀態寄存器 P_IC-HOST_MASKED_STATUS : 屏蔽后的中斷源, 供主機讀取。
     主機未屏蔽狀態寄存器 P_IC-HOST_UNMASKED_STATUS 和主機屏蔽狀態寄存器 P_ IC-HOST_MASKED_STATUS 這對寄存器可使主機讀取任何中斷源在應用屏蔽之前或之后的狀 態。所有的內部中斷源是脈沖或沿觸發產生, 被鎖存在未屏蔽或屏蔽狀態寄存器中。使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清除中斷可將屏蔽與無屏蔽寄存器鎖存的狀態復位。
     在本發明的一個實施例中, 對中斷的主體結構 ( 主機未屏蔽狀態寄存器、 主機清 除中斷寄存器、 主機屏蔽控制寄存器和主機屏蔽狀態寄存器的來源、 處理和輸出 ) 用按位 設計來加以實現, 即通過對一個中斷源的實現和對此模塊的調用, 來實現整個中斷的主體 結構。
     下表列出了根據本發明一個實施例的中斷源。
     名稱 驅動主機中斷 鎖存器位 0 說明 寫入 ( 無效數據 ) 至 P_IC_GEN_HOST_INTERRUPT 寄存器將強制 PCI 主機 進行 木中斷 INTI 管腳的負沿脈沖上鎖存的 IRQ 值 INTI 負沿鎖存值 1用戶 DMA 完成2用戶 DMA 傳輸完成時產生用戶 DMA 錯誤3在用戶 DMA 傳輸中如果出現錯誤狀態即會產生新隨機數準備好4表示新的隨機數準備好, 可被讀取公鑰處理模塊 - 模冪運算器操作完成, 變長 模冪5在公鑰處理模塊變長模冪運算操作已經結束運算操作 公鑰處理模塊 - 模冪運算器 長模冪6 操作完成, 定公鑰處理模塊定長模冪運算操作已經結束。運算操作 公鑰處理模塊 - 大數值運算操作完成 保留7公鑰處理模塊大數值運算已經結束。8 至 14對應位必須以 ‘0’ 寫入。47101997834 A CN 101997839輸出宏指令完成 15說明書43/59 頁1 個包處理輸出宏指令已寫入至輸出宏指令隊列。輸出宏指令計數完成16選擇的包處理輸出宏指令數量已被寫入到輸出宏指令隊列。包處理模塊 DMA 錯誤17在包處理模塊 DMA 傳輸中出現錯誤。SPI-3 宏指令完成 SPI-3 錯誤18 19數據包及附后的包處理輸出宏指令已寫入至 SPI-3(RX) 接口。 在 SPI-3 輸入 (TX) 操作中出現錯誤。輸入宏指令隊列空20輸入宏指令隊列目前空。保留21 至 31對應位必須以 ‘0’ 寫入。
     圖 51 示出了根據本發明實施例的中斷控制器。中斷源的狀態除了查詢中斷狀態 寄存器外, 還可以查詢模塊宏指令配置狀態寄存器。例如 : SPI-3 錯誤, 在 SPI3 線程狀態配 置寄存器中, 已經將錯誤中斷屏蔽或不屏蔽, 合成后輸出到中斷模塊, 因此在一個中斷發生 后, 主機除了查詢中斷狀態寄存器外, 還應該查詢 SPI3 線程狀態寄存器。下面說明根據本發明一個實施例的中斷流程。在中斷源產生后, 進入主機未屏蔽 中斷狀態寄存器, 同時主機清除中斷寄存器產生清除中斷信號進入瑣存器 ; 如果不屏蔽中 斷, 中斷源狀態可直接輸出, 供主機讀取 ; 如果屏蔽中斷, 從主機未屏蔽中斷狀態寄存器出 來的中斷源和主機屏蔽控制寄存器產生的控制信號經過與門進入主機屏蔽中斷狀態寄存 器 ( 可供主機讀取 ), 最后將屏蔽后的中斷源信號經過或門然后輸出。
     下面說明本發明中強制 PCI 主機中斷寄存器指令。本寄存器產生一個強制主機中 斷的中斷源, 優先級高于其它的中斷源, 輸入到主機未屏蔽中斷狀態寄存器。 本寄存器只能 執行寫操作, 但任何寫操作將導致主機中斷。
     下面說明本發明中強制宏指令讀取寄存器及其指令。本寄存器僅適用于 P_HD_ PDR_SRC_SIZE_OFFSET 寄存器位 [15:0] 為非 0 情況時。 PCI 主機可將任何值寫入 P IC FORCE DESC READ 寄存器以啟動宏指令讀取。 本寄存器產生的信號和中斷輸入信號 INTI 執行或操 作, 將產生的信號輸入宏指令讀取計數器 ( 例如, 系統提供一個 16 位計數器記錄讀取宏指 令事件中斷的次數 ), 最后將此計數器的值輸出到包處理模塊, 通知包處理可以讀取下一個 宏指令。本寄存器只能執行寫操作, 但任何寫操作將導致主機中斷。
     下面說明本發明中主機宏指令完成計數寄存器及其指令。 主機將宏指令隊列中等 待處理的宏指令個數輸入到本寄存器, 本寄存器將宏指令個數輸入到事件計數器, 包處理 模塊完成一次宏指令處理, 就給事件計數器發出一個信號, 計數器減一, 當計數器中值為零 時, 計數器輸出信號發起中斷 ; 如: P_IC_DESC_DONE_COUNT 寄存器設定為 0x0004。如果三 個包很快處理完, 那么在輸出宏指令隊列上會首先填充三個包處理輸出宏指令。 然而, 計數 器仍在等待第四個包被處理, 不會形成中斷。一直要等到第 4 個包也處理完后, 才會產生中 斷。在此之前, 主機不會取走已處理完的 3 個包。主機可以通過查詢結果而不是僅依靠等
     待中斷的方式來獲得包處理的結果。
     下面說明本發明中主機未屏蔽狀態寄存器及其指令。使用本寄存器, 主機將查看 即將開始的中斷的所有可能來源。所有這些來源無論是否進行了屏蔽, 都將鎖定在本寄存 器內并需使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清零, 以獲取隨后事件。 ‘1’ 表示出現了 關聯中斷。 復位缺省值為 0x00000000。 使用本寄存器, 無論中斷源是否進行了屏蔽, 都將鎖 定在本寄存器內供主機查看即將開始的中斷的所有可能來源, 由于所有的中斷位都被本寄 存器鎖定, 需使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清零以獲取隨后事件。
     下面說明本發明中主機屏蔽狀態寄存器及其指令。 該寄存器使得主機可查看中斷 的選擇性來源, 這些中斷均指向可與 PCI 中斷相連的 INTA_n 引腳。由于具備了未屏蔽狀態 寄存器, 所有的中斷位都被鎖定, 需使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清零以獲取 隨后事件。 ‘1’ 表示出現了關聯中斷。本只讀寄存器在屏蔽中斷后為主機提供可視性的中 斷狀態, 這些中斷執行或操作, 從 INTA_n 引腳輸出, 與 PCI 中斷相連。
     下面說明本發明中主機清除中斷寄存器及其指令。該寄存器與 P_IC_HOST_ MASKED_STATUS 寄存器 ( 寫與讀 ) 在同一地址上, 這便于讀取寫入相同位后探測即將開始的 中斷, 以將鎖定的中斷狀態清零。本寄存器使用與 P_IC_HOST_MASKED_STATUS 寄存器相同 的位圖。 中斷源進入未屏蔽中斷狀態寄存器后, 如需中斷, 需使用本寄存器清零才能獲取隨 后中斷事件, 中斷處理完成后, 可以使用本寄存器將中斷狀態寄存器中鎖定的中斷狀態清 零。
     下面說明本發明中主機屏蔽控制寄存器及其指令。本寄存器使用與 P_IC_HOST_ MASKED_STATUS 寄存器相同的位圖。所有保留位的位置的對應掩碼需寫為 ‘0’ 。本讀 / 寫 寄存器用于配置主機中斷控制器的中斷屏蔽。 本寄存器產生的主機屏蔽控制信號和未屏蔽 中斷執行與操作, 可實現激活中斷源和禁止中斷源。
     下面說明本發明中主機中斷配置寄存器及其指令。 本寄存器可將屏蔽中斷狀態寄 存器和未屏蔽中斷狀態寄存器清零, 也可指示主機中斷輸出類型, 將中斷輸出信號 INTA_n 轉換為電平信號或脈沖信號輸出。
     配置脈沖類型的主機中斷輸出將導致外部中斷信號被激活后在兩個系統時鐘周 期內進行低脈沖。 當設定為電平類型時, 中斷信號將被設定為低, 直到被主機清零為止。 (即 其將遵循 P_IC_HOST_MASKED_STATUS 寄存器中的相關設置 )。
     那么 P_IC_HOST_MASKED_STATUS 寄存器中顯示出的所有中斷將在 INTA_n 引腳上 出現中斷輸出脈沖時從 P_IC_HOST_UNMASKED_STATUS 寄存器中自動清除。基本上, 這迫使 所有的脈沖中斷自動清零, 使它們可立即重新激活以產生另一次中斷。如果設定為 ‘0’ , 那 么主機需在這些相同來源產生另一次中斷前鎖定中斷來源。 中斷配置指令的低兩位產生兩 個一位信號, 位 [0] 選擇主機中斷控制器的輸出引腳 INTA_n 的類型 - 脈沖或電平 ; 位 [1] 控制主機清除中斷寄存器的輸出, 以此來選擇是將主機屏蔽中斷狀態寄存器清零, 還是將 主機未屏蔽中斷狀態寄存器清零。
     以上參照附圖詳細說明了根據本發明實施例的包處理模塊、 系統配置模塊、 各接 口、 數據通路、 公鑰算法模塊等結構、 操作、 指令配置等。
     下面結合附圖來說明本發明 VPN 芯片的工作流程。
     圖 52 示出了本發明 VPN 芯片的總體工作流程。如圖 52 所示, 首先進行 PCI 上電初始化, 這是 PCI 配置空間配置過程。然后進行芯片靜態配置和初始化過程。之后, 啟動芯 片, 建立主機宏指令隊列。隨后是取指令和宏指令處理過程。該過程可以發送包到包處理 模塊, 進行包引擎處理。輸出處理的結果和輸出宏指令。之后, 可以返回到取指令和宏指令 處理過程或結束。初始化過程可以直接發送 SPI-3 包到包引擎處理過程。下面將詳細說明 各子流程。
     圖 53 示出了 PCI 配置空間配置子流程。首先, 主機讀取內存空間長度, 然后主機 寫分配基址。在此之后, 主機讀寫其他 PCI 配置空間。之后, 流程進入到靜態配置和初始化 子流程。
     圖 54 示出了本發明 VPN 芯片的芯片初始化子流程。芯片初始化過程首先進行復 位, 密文控制, 設備信息初始化等, 然后將 EMI、 SPI-3 接口初始化, 之后將 DMA 初始化, 隨后 將中斷和隨機數模塊初始化, 接著將包處理全局變量和公鑰初始化。目標模式寫配置空間 詳見配置寄存器列表。初始化完成后, 流程進入芯片啟動子流程。
     圖 55 示出了本發明 VPN 芯片的芯片啟動子流程。 主機建立 SA 庫, 并建立指令隊列 或寫入指令, 之后, 設置取指令方式。在芯片啟動之后, 流程進入到宏指令處理子流程。對 于主機所執行的上述過程, 安全處理器并不關注。
     圖 56 示出了本發明 VPN 芯片的宏指令處理過程。在芯片啟動完成后, 處理器取宏 指令 ( 輪詢或中斷 ), 此時申請 DMA 通道 ( 例如, DMA1)。接著, 效驗宏指令。如果宏指令無 效, 則拋棄無效指令, 流程返回取宏指令步驟。若指令有效, 則 (1) 可以回填宏指令, 或 (2) 進行仲裁、 分配包引擎, 此時比對 SA 地址。然后, 包被分配給不同的包引擎處理。
     圖 57 示出了本發明 VPN 芯片的宏指令啟動和輸入子流程。如圖 17 所示, 在中斷 強制宏指令讀取或輪詢時間到, 或者重試時間到時, 宏指令啟動, 申請 DMA 通道 (DMA1)。在 申請 DMA 通道之后, 判斷第一條宏指令是否有效。如果有效, 則將有效指令存入 FIFO, 需要 時, 由仲裁模塊對 FIFO 的存入進行仲裁。之后調用下一條指令, 如果是該下一條指令是無 效指令, 則回填指令, 流程回到申請 DMA 通道步驟。如果第一條宏指令無效, 則回到宏指令 啟動步驟 ( 例如, 在等待重試時間到時 )。在申請 DMA 通道后, 可以更新宏指令所有權位。
     圖 58 示出了本發明 VPN 芯片的 FIFO 中宏指令仲裁分配過程。如圖 58 所示, 在宏 指令輸入后, 執行宏指令分配。分配可以是順序分配或者是非順序分配。在順序分配的情 況下, 首先判斷包引擎的空閑狀態, 對空閑的包引擎順序分配, 交由包引擎進行處理。而在 非順序分配的情況下, 首先與忙包引擎比較 SA 地址是否相同, 若是, 則等待該包引擎空閑 后再分配, 之后交由包引擎處理 ; 若否, 則對空閑包引擎順序分派, 交由包引擎處理。
     圖 59 示出了本發明 VPN 芯片的包引擎編碼 ( 加密 ) 工作流程。在宏指令處理后, 指令被交由包引擎處理。包引擎首先對宏指令進行譯碼。之后, 根據指令取 SA 并對 SA 進 行譯碼, 在此過程中申請 DMA- 包 SA 通道。然后, 取數據 ( 申請 DMA- 包數據通道 ), 執行處 理過程, 包括加解密、 HASH、 MPPE 協議操作、 IPsec 協議 ( 例如 AH、 ESP) 操作等。在處理之 后, 輸出數據 ( 申請 DMA- 包數據通道 )。如果需要, 可以返回到取數據步驟, 以取得后續期 望的數據。否則, 結束, 給出結束信號, 并寫輸出宏指令隊列, 最后輸出宏指令。
     圖 60 示出了本發明 VPN 芯片中包引擎譯碼子流程。如圖 60 所示, 在收到宏指令 后, 進行宏指令譯碼。之后, 申請 DMA 通道 ( 例如, 可以規定 DMA3 通道或除主模式通道外的 任何通道 ), 讀取 SA, 并進行 SA 譯碼。之后, 申請 DMA4 通道以讀取包數據。此時, 如果數據量小于輸入 FIFO 的域值, 則返回繼續申請 DMA4 通道以讀取包數據。否則, 包引擎對數據進 行處理。
     圖 61 示出了本發明 VPN 芯片中包引擎數據處理子流程。如圖 61 所示, 包引擎處 理數據分為輸出包數據處理和輸入包數據處理。 這兩種處理又可分別包括協議操作和基本 操作。協議操作可以包括 ESP 輸出 / 輸入包處理、 AH 輸出 / 輸入包處理、 MPPE 處理。輸出 包數據處理的基本操作可以包括加密處理、 散列處理以及加密 - 散列處理, 而輸入包數據 處理的基本操作可以包括解密以及解密 - 散列處理。在上述的協議操作和 / 或基本操作之 后, 可以輸出數據和 / 或更新 SA 域。
     圖 62 示出了本發明 VPN 芯片中輸出宏指令處理子流程。在包引擎的處理完成之 后, 對包引擎的處理完成進行登記, 并生成輸出宏指令。
     圖 63 示出了本發明 VPN 芯片中 SPI-3 包處理流程。如圖 63 所示, 在芯片初始化 之后, 接收 SPI-3 傳輸請求, 并相應分派包引擎。之后, 將宏指令寫入包引擎, 在此之后, 將 SPI3 數據寫入包引擎, 進而執行處理過程。處理完成后, 輸出數據。在需要時, 可以返回到 SPI3 數據寫入步驟, 以繼續寫入數據。否則, 在輸出數據后, 結束, 并寫輸出宏指令隊列, 生 成輸出宏指令。
     以上參考附圖大致描述了本發明 VPN 芯片的操作流程。
     本 發 明 的 VPN 安 全 芯 片 可 以 實 現 以 下 算 法 : DES、 3DES、 AES、 ARC4、 MD5、 SHA1、 H-MAC、 中國 HASH 和中國加密算法。 除此以外, 還可以包括 PES、 FEAL、 Geffe、 IDEA、 Gifford、 Geffe、 中國 AES 等算法, 以及所希望的任何算法。
     本發明的 VPN 安全芯片的大數模塊可以包括以下基本運算功能 : 加、 減、 乘、 除、 模、 左移、 右移、 比較、 轉移、 增量、 減量、 進位加、 借位減、 模加逆、 模加、 模乘。
     本發明的 VPN 安全芯片的模冪乘模塊可以支持 512 位、 1024 位、 2048 位的模數、 底 數和指數 ; 其中 1024 位和 2048 位規格支持完整的中國剩余定理操作。
     本發明 VPN 安全芯片大數模塊可以支持多種數據規格, 如: 32 位、 64 位、 128 位、 256 位、 512 位、 1024 位、 2048 位。本發明 VPN 安全芯片模冪乘模塊可以支持多種位寬 ( 如, 512 位、 1024 位、 2048 位 ) 的模數、 底數和指數, 其中 1024 位和 2048 位規格支持完整的中國 剩余定理操作。當然, 使用其他位寬的數據規格也在本發明的范圍內。
     在本發明的一個實施例中, 本發明的 VPN 芯片還可以包括可信模塊 (TPCM/TPCM) 模塊, 其可以與主板連接 ( 例如通過 LPC 接口 ), 從而在可信計算中可以作為信任根。
     另外, 本發明的 VPN 芯片并不限于上面所具體描述的實施例。例如, 盡管在上述的 實施例中采用的宏指令體系, 然而, 本領域技術人員將理解, 根據本發明的教導, 采用其他 指令體系來實現本發明也是顯而易見的。另外, 包處理模塊是可重組的, 可以支持多種算 法, 包括國家密碼算法以及國際公開算法等等。根據不同的配置文件 ( 可以是靜態的 ( 例 如存儲在存儲器中 ) 或動態的 ( 例如指令 )), 包處理模塊可以實現除 IPsec 協議和 MPPE 協 議以外其他的安全協議如 DSL 協議、 SSL/TSL 協議以及用戶自定義的安全協議的處理等等。
     另外, 基于本發明的安全處理器, 實現多種安全協議的嵌套也是顯而易見的。例 如, 只需在執行了一種安全協議的處理之后再進行另一安全協議的處理即可。這僅是示例 性的, 基于本發明實現協議嵌套的方式并不限于此, 可以是多種多樣的。
     下面說明根據本發明另一實施例的實現方案。在該實現方案中, 本發明的處理器還支持 DSL 安全協議。
     DSL 安全協議
     DSL 安全協議 11.20a 各版本由證書、 授權機關 ( 授權中心、 管理中心、 網管中心 )、 協議信息、 安全設備 ( 用戶卡 )、 加密數據信息組成。
     DSL 安全協議包括了建立通信鏈路、 用戶申請登記授權、 授權中心用戶密鑰證書 信息授權、 管理中心用戶安全熵密鑰信息授權、 網管中心用戶卡輔助密鑰信息授權、 授權中 心用戶密鑰證書管理、 管理中心和網管中心密鑰信息管理、 用戶私鑰存儲、 身份認證、 數據 認證、 密鑰協商、 密鑰生成、 密鑰交換、 密碼體制選擇、 明密文加脫密處理、 算法擴展、 算法選 擇、 證書、 密鑰更新及管理、 以及用戶和系統安全熵重組設計等功能。其中安全熵可作為一 種安全策略。
     DSL 安全協議 (11.20a 版本 ) 是建立在多個授權機關 ( 由授權中心和 / 或管理中 心和 / 或網管中心 ) 分別或共同實施安全設備證書登記授權入網的體系下, 實現安全通信。 登記授權時 : 由授權中心向每個安全設備授權用戶密鑰證書信息或將授權用戶密鑰證書信 息存儲于用戶卡中 ; 由管理中心向每個安全設備授權用戶安全熵密鑰證書信息或將授權用 戶安全熵密鑰證書信息存儲于用戶卡中 ; 由網管中心向每個安全設備使用的用戶卡授權輔 助密鑰證書信息。
     具有授權用戶密鑰證書信息或和授權用戶安全熵密鑰證書信息或和授權輔助密 鑰證書信息的安全設備或用戶卡的用戶, 才能使用安全設備或和用戶卡進行網內用戶間的 加密通信。
     DSL 安全協議 11.20a 主要功能包括 :
     1. 建立通信鏈路 : 用戶與授權機關建立通信鏈路、 用戶之間建立通信鏈路、 安全 設備與用戶卡證之間建立通信鏈路、 安全芯片與安全設備終端之間通信鏈路。
     2. 用戶申請登記授權 : 用戶首次申請登記授權、 更改申請登記授權。
     3. 用戶密鑰生成 : 用戶申請登記授權時的密鑰生成 ; 保護授權信息時的密鑰生 成; 加密通信一次一密要求時的密鑰生成。
     4. 用戶密鑰保護 : 使用孫子定理計算模型對用戶主密鑰系統保護。
     5. 用戶密鑰計算 : 使用孫子定理計算模型恢復用戶密鑰
     6. 用戶密鑰存儲 : 對用戶主密鑰系統保護信息分儲。
     7. 授權中心授權 : 首次授權、 更改授權、 更新授權。
     8. 公鑰證書和授權證書管理 : 授權中心對用戶公鑰證書管理、 用戶使用用戶密鑰 對授權中心和用戶的密鑰證書管理。
     9. 身份認證 : 雙方身份認證信息計算、 用戶安全熵重組設計計算、 系統安全熵重 組設計計算、 身份認證、 提取秘密信息。
     10. 密鑰協商 : 密鑰協商信息計算、 公共密鑰計算。
     11. 密鑰交換。
     12. 授權信息存儲。
     13. 加脫密操作 : 數據加脫密傳輸由數據摘要算法認證控制。
     14. 更新密鑰和更換算法 : 更新加脫密密鑰控制、 擴展算法、 算法選擇。
     15. 安全策略設計。16. 系統管理操作 ( 如, 采用宏指令體系的芯片操作系統 (MCOS)) : 實現初始化控 制、 指令操作控制、 協議控制和安全監測、 數據接口控制、 算法擴展、 和其它協議連接控制。
     在本發明的一個實施方案中, MCOS 系統可以實現安全策略設計、 控制 DSL 安全協 議實現、 管理數據接口、 實施密鑰、 數據傳輸認證 ; 控制密鑰生成、 兼容安全級別和明話、 密 話操作以及監測主動攻擊 ( 截轉、 重撥、 監聽 )。
     在 DSL 安全協議中, 可以主要包括四大流程 :
     1. 芯片初始化流程 : 每次芯片上電后首先要對芯片初始化, 初始化操作分為邏輯 初始化和程序初始化操作。
     2. 申請授權流程 : 授權端和用戶進行交互, 由授權端向用戶端授權證書。
     3. 更新授權流程 : 用戶申請授權后, 會有時效認證, 當用戶證書過期需要更新授 權或者在用戶需要的情況下更新授權。
     4. 保密通信流程 : 主叫或被叫建立安全通信鏈路, 進入保密通信流程, 使得雙方 能夠進行保密通信。
     DSL 安全協議還支持多種建立通信鏈路的方式 :
     1. 用戶首次或更改申請登記時, 建立的語音通訊鏈路 ;
     2. 授權中心更新授權用戶密鑰信息時, 建立的語音通訊鏈路 ;
     3. 用戶網絡申請登記或授權中心網絡更新授權用戶密鑰信息個人數據安全系統 (PDSS) 方式時, 建立的網絡通訊鏈路。
     建立授權通訊鏈路后, 具有首次登記、 更改登記和更新授權的授權方式。 更改登記 和更新授權的授權方式需進行雙方的身份認證、 密鑰協商、 密鑰計算、 加密傳輸。
     更具體的主要流程如下表所示 :
     初始化操作
     申請登記與授權操作
     更新授權操作
     建立授權通訊鏈路
     建立加密通訊鏈路密鑰更新操作
     算法更新操作安全協議指令系統
     DSL 安全協議指令系統包括 : 初始化指令、 內部輸入輸出指令、 外部輸入輸出指令 和控制操作指令。初始化指令是安全芯片對安全設備 ( 或系統 ) 的安全策略設計、 對安全 卡進行安全控制的管理指令 ; 內部輸入輸出指令是安全芯片與安全設備建立鏈路的控制指 令; 外部輸入輸出指令是安全芯片的 MCOS 系統執行安全協議的控制指令 ; 控制操作指令是 安全芯片的 MCOS 系統執行安全協議時, 監控系統工作狀態的控制指令。
     初始化指令
     初始化指令以密碼形式存儲, 用于初始化時, 建立控制信息表和建立通信鏈路后, 傳遞設備初始化信息指令。初始化指令包括 : 安全級別指令、 使用方式指令、 兼容性能指令 和密鑰擴展指令。安全級別指令指示安全級別。使用方式指令指示安全設備以及用戶卡的 使用方式, 如獨立使用、 配合使用、 共同使用等。兼容性能指令可以指示不同密級之間的兼 容性。而密鑰算法擴展指令可以指示密鑰卡擴展、 安全卡擴展、 協議擴展等。
     初始化指令形態包括 : 初始化安全信息指令和初始化兼容信息指令。初始化指令 的使用目的是為了通信雙方在系統初始化時, 建立安全信息表。主要用于加密通信雙方確 定安全設備的安全密級、 兼容信息、 使用方式、 密鑰與算法擴展信息。
     內部輸入指令
     內部輸入指令是安全設備與安全芯片建立鏈路關系的控制指令。 內部輸入指令包 括:
     啟動指令 : 安全設備建立通信鏈路后, 根據鏈路建立特征, 發出啟動安全芯片的控 制指令, 其可以包括用于例如管理中心更新授權、 用戶首次授權或更改授權的指令 ;
     結束指令 : 安全設備監控通信鏈路狀態, 斷路后, 發出結束安全芯片操作的控制指 令;
     用戶數據信息輸入指令 : 通過安全設備, 輸入用戶信息 ( 例如, 口令信息, 算法信 息、 摘要信息、 密鑰信息等 ) ;
     管理信息輸入指令 : 通過安全設備, 輸入用戶或系統重組信息 ( 例如, 口令信息、 用戶安全熵、 系統安全熵、 密鑰信息等 )。
     內部輸出指令
     內部輸出指令是安全芯片與安全設備建立輸出信息關系的控制指令。 內部輸出指 令包括 : 傳輸指令, 是安全芯片通知安全設備轉發數據信息的指令, 安全設備根據該指令的 要求, 轉發安全芯片的數據信息 ; 操作指令, 是安全芯片根據安全協議的操作控制, 產生提 示使用者信息的, 并在安全設備顯示信息的控制指令。 所述操作指令適于指示傳輸信息、 通 信方式、 安全級別、 使用方式、 兼容性能、 密鑰擴展、 注入授權狀態、 錯誤信息中的一種或多 種。所述傳輸信息包括下列中的一種或多種 : 證書信息、 身份信息、 協商信息、 授權信息、 口 令信息、 密鑰信息、 算法信息、 摘要信息、 用戶安全熵、 系統安全熵、 插入卡、 可拔出卡。
     內部輸入輸出指令形態反映安全芯片和安全設備之間通信操作的功能和指令數 據規范。
     外部 ( 協議 ) 用戶輸入輸出指令
     外部用戶輸入輸出指令用于申請證書登記、 建立與管理中心和用戶之間通信鏈路 的操作控制。指令反映操作功能和作為操作信息的起始標記。其中 :
     用戶握手指令是在協議執行的過程中, 鏈路雙方開始執行功能操作或結束操作 時, 雙方認證執行正確性的交互信息指令 ;
     證書登記指令是用戶執行證書登記授權時, 發出用戶證書信息前的操作起始標記 控制 ;
     數據傳輸指令是執行傳輸加密信息功能時, 發出加密信息前的操作起始標記控 制;
     身份認證指令是執行身份認證功能時, 傳輸身份認證信息和身份認證安全熵信息 前的操作起始標記控制 ;
     密鑰協商指令是執行公共密鑰計算或密鑰交換功能時, 發出密鑰計算信息前的操 作起始標記控制 ;
     數據認證指令是執行傳輸數據與數據摘要信息認證功能時, 發出數據摘要信息前 的操作起始標記控制 ;安全熵指令是安全設備執行初始化操作時, 鏈路雙方為身份認證而需一致確定共 同的熵的操作。執行時作為發出安全熵信息前的操作起始標記控制。
     外部 ( 協議 ) 管理中心輸入輸出指令
     管理中心輸入輸出指令用于授權用戶證書登記、 建立與管用戶之間通信鏈路的操 作控制。指令反映操作功能和作為操作信息的起始標記, 其中 :
     管理中心握手指令是在協議執行的過程中, 鏈路雙方開始執行功能操作或結束操 作時, 雙方認證執行正確性的交互信息指令 ;
     授權指令是執行用戶證書登記授權功能時, 發出授權用戶證書信息前的操作起始 標記控制 ;
     數據傳輸指令是執行傳輸加密信息功能時, 發出加密信息前的操作起始標記控 制;
     身份認證指令是執行身份認證功能時, 傳輸身份認證信息和身份認證安全熵信息 前的操作起始標記控制 ;
     密鑰協商指令是執行公共密鑰計算或密鑰交換功能時, 發出密鑰計算信息前的操 作起始標記控制 ;
     數據認證指令是執行傳輸數據與數據摘要信息認證功能時, 發出數據摘要信息前 的操作起始標記控制 ;
     安全熵指令是安全設備執行初始化操作時, 鏈路雙方為身份認證而需一致確定共 同的熵的操作, 執行時作為發出安全熵信息前的操作起始標記控制。
     系統操作控制指令
     系統操作控制指令分為兩個部分 : 協議操作控制的指令和系統操作控制的指令。 其中, 協議操作控制的指令用于實現協議執行過程中的錯誤處理和結束處理功能 ; 而系統 操作控制的指令用于實現 MCOS 系統輔助協議的執行操作功能, 對協議指令的狀態進行處 理, 包括 : 程序調度、 數據處理、 接口初始化、 功能管理等。
     協議控制指令形態是安全協議指令體系的重要組成部分。 反映協議控制中所有指 令分類、 指令功能、 指令語義、 數據規格和語義。協議控制指令形態涉及 : 通信類指令形態, 其用于申請登記或更改登記和首次授權、 更改授權、 更新授權, 通信雙方握手信息 ; 功能指 令形態, 其用于數據傳輸指令、 身份認證指令、 密鑰協商指令和數據認證指令, 并確定執行 中使用的算法體制、 密鑰和摘要算法處理數據的長度 ; 以及安全熵指令形態, 其用于安全熵 有關指令。
     操作控制指令形態包括兩個組成部分 : 協議操作控制和系統操作控制。
     安全設備內部數據格式
     安全設備內部數據格式是安全設備與安全芯片建立通信關系的數據操作。 安全設 備控制是指安全芯片與安全設備建立通信關系的相互指令操作和數據操作。
     啟動
     安全設備建立通信鏈路后, 識別用戶發起呼叫或管理中心發起呼叫。并根據安全 設備記錄信息識別 : 授權機關電話號碼或標識 ; 用戶加密通信電話號碼或標識 ; 產生啟動 指令, 通過安全設備與安全芯片接口傳輸啟動指令。
     輸入指令當用戶使用安全設備需要手工輸入用戶信息時, 安全設備產生用戶信息輸入指 令, 通過安全設備與安全芯片接口傳輸用戶信息輸入指令 ; 當用戶使用安全設備需要手工 輸入管理信息時, 安全設備產生管理信息輸入指令, 通過安全設備與安全芯片接口傳輸管 理信息輸入指令。
     傳輸指令
     安全芯片執行安全協議時, 通過向安全設備發出傳輸指令建立通信關系 ; 安全設 備根據傳輸指令的數據傳輸長度要求, 計算數據傳輸結束。安全芯片與安全設備的通信關 系, 必須以指令操作為控制數據傳輸的標記。當傳輸指令發出后, 安全設備開始計數, 直至 數據傳輸結束, 新的指令開始。
     操作指令
     安全芯片根據安全設備輸入指令的處理, 產生操作指令回復安全設備, 通過安全 設備與安全芯片的接口傳輸操作指令。 安全芯片對安全設備的協議指令均通過操作指令建 立握手認證關系。
     結束指令
     安全設備監控通信鏈路, 識別連接通信鏈路狀況, 若斷鏈, 產生結束指令, 通過安 全設備與安全芯片接口傳輸結束指令。
     管理系統內部數據格式
     管理系統內部數據格式是管理系統與安全芯片建立通信關系的數據操作。
     啟動
     管理系統建立通信鏈路后, 識別用戶發起呼叫或管理中心發起呼叫。并根據用戶 安全設備記錄信息識別 : 用戶電話號碼或標識 ; 授權或未授權信息 ; 管理系統功能操作需 求和授權或未授權信息 ; 產生啟動指令, 通過管理系統與安全芯片接口傳輸啟動指令。
     管理系統控制
     管理系統控制是指管理系統與安全芯片建立的通信關系。 管理系統為使用安全芯 片發出的相互指令操作和數據操作。數據操作的接口, 是以系統調用方式或其他方式建立 的。
     輸入指令
     當管理系統分配用戶密鑰信息時, 建立用戶信息數據表 ( 流 ), 管理系統產生用戶 信息輸入指令, 通過管理系統與安全芯片接口傳輸用戶信息輸入指令和用戶信息數據表 ;
     當管理系統分配用戶管理信息時, 建立用戶管理信息數據表 ( 流 ), 管理系統產生 用戶信息輸入指令, 通過管理系統與安全芯片接口傳輸管理信息輸入指令和用戶管理信息 數據表 ;
     傳輸指令
     安全芯片執行安全協議時, 通過向管理系統發出傳輸指令建立通信關系 ; 管理系 統根據安全芯片傳輸指令的數據傳輸長度要求, 計算數據傳輸結束。安全芯片與管理系統 的通信關系, 必須以指令操作為控制數據傳輸的標記。 當傳輸指令發出后, 管理系統開始計 數, 直至數據傳輸結束, 新的指令開始。
     操作指令
     安全芯片根據管理系統輸入指令的處理, 產生操作指令回復管理系統, 通過管理系統與安全芯片的接口傳輸操作指令。 安全芯片對管理系統的輸入指令均通過操作指令建 立握手認證關系。
     結束指令
     管理系統監控通信鏈路, 識別連接通信鏈路狀況, 若斷鏈, 產生結束指令, 通過管 理系統與安全芯片接口傳輸結束指令。
     建立用戶之間通信鏈路
     安全設備與安全設備之間數據格式是用戶之間建立通信鏈路, 實現用戶 i 安全芯 片與用戶 j 安全芯片建立通信關系的數據操作。
     初始化控制
     安全設備系統初始化后, 建立了設備的正常工作狀態, 包括 : 接口初始化、 初始信 息計算等。在建立了通信鏈路, 完成安全設備內部控制操作后 : 雙方發出用戶握手指令, 建 立通信關系 ; 雙方發出初始化指令, 該指令反映安全設備的工作狀態, 雙方根據初始化指 令信息, 完成安全設備系統初始化操作工作建立安全信息表, 建立統一的安全級別、 兼容性 能、 使用方式、 密鑰與算法等安全信息 ; 雙方發出用戶握手指令, 認證雙方系統安全協議的 數據通信開始。
     協議控制
     雙方發出協議指令信息之前, 均需通過安全設備的傳輸指令認證 ; 雙方發出身份 認證信息指令和身份認證信息 ; 雙方發出用戶握手指令, 認證雙方。
     建立用戶之間通信鏈路還涉及操作控制和結束控制。
     以上概略性地說明了本發明的實施方案中所采用的 DSL 安全協議的主要功能、 流 程、 指令體系、 指令形態以及格式。然而, 這里列出的流程、 指令等僅是示例性, 本領域技術 人員將理解, 可以對其進行多種變更而仍實現協議的各功能。 對于其他的安全協議, 可以類 似構建相應的程序、 指令等來實現其功能。下面具體說明根據本發明另一實施例的 VPN 芯 片的結構示例。
     與上述實施例的結構不同的是, 在本發明的系統配置模塊還可以包括存儲模塊 ( 例如 FLASH), 且本發明還具有協議譯碼器, 如圖 64 所示。該實施例的系統配置模塊可以 實現信息原始注入、 系統初始化、 自檢等功能。運算內核 ( 包處理模塊 ) 能夠根據安全協議 進行操作, 實現安全協議的一些基本功能。 協議譯碼器能夠控制包處理模塊, 例如對協議指 令進行譯碼, 根據譯碼結果控制運算內核 ( 包處理模塊 ) 的基本功能的組合, 來實現具體安 全協議。例如, 通過狀態機描述控制來實現用戶初始化操作、 首次授權、 更改 / 更新授權、 用 戶通信等功能操作。所述協議指令是用于建立鏈路的指令。
     根據本發明一個實現方案, 系統配置模塊可以實現的功能還包括 : 接口初始化、 白 裸片測試、 注入、 自檢、 控制信息表建立 (IDI 寄存器 )、 軟件初始化程序調度、 錯誤邏輯控制 等。下面參考更具體地說明本發明的系統配置模塊的各功能。
     接口初始化 : 系統上電后, 發出接口初始化信號, 執行接口的初始化。
     白裸片測試 : 接口初始化完畢后, 發出白裸片測試使能信號啟動白裸片測試流程, 完成 FLASH 初始化、 白裸片測試、 授權測試、 修改標識寄存器值等。
     注入 : 實現對 FLASH 信息區和數據區數據的注入。
     自檢 : 硬件無自檢流程, 存儲的校驗和僅公共更改注入時檢查使用, 可由軟件初始化流程實現用戶自定義的自檢功能 ( 例如, 上述實施例中的初始化流程 ) ;
     控制信息表建立 : 此功能在白裸片測試完成 ( 注入完整, 且已授權 ) 之后發出狀態 寄存器使能信號來驅動控制信息表建立 ;
     軟件初始化程序調度 : 本實現方案中處理器系統初始化功能可分為兩部分, 一部 分由硬件邏輯完成, 包括上述的白裸片測試、 控制信息表建立等, 一部分由宏指令程序完 成, 實現用戶自定義的初始化功能, 如: 證書授權標識測試 ; 附屬設備在線驗證、 自檢、 初始 化數據計算 ( 包括用戶私鑰計算、 用戶密鑰證書存儲、 用戶密鑰計算、 用戶密鑰保護、 用戶 密鑰存儲、 身份認證信息計算等 )。
     在本發明的一個實現方案中, 硬件無自檢流程, 存儲的校驗和僅供更改注入時檢 查使用。可由軟件初始化流程實現用戶定義的自檢功能。另外, 本發明的系統配置模塊還 可以實現安全監控。
     注入指令可以來自于接口或數據通路。 注入邏輯的驅動來源于協議譯碼器的譯碼 結果指示。譯碼結果可以指示以下信息 : 注入機關、 首次注入還是更改注入、 信息區數據或 數據區數據、 信息長度、 數據區注入時為首塊或后續塊等。更改注入時, 需首先檢查口令和 校驗碼。接收注入數據時需進行校驗。
     協議譯碼器將依據協議指令的譯碼結果, 接收指令攜帶的數據查詢程序地址表, 裝載宏指令地址寄存器, 調用指令功能所要求的宏指令程序, 交由包處理模塊的宏指令模 塊譯碼并執行, 等待宏指令程序執行結束或執行異常 ( 宏指令的返回協議譯碼器操作的指 令 )。根據 DSL 協議, 協議譯碼器可以執行 : 指令狀態測試, 包括輸入輸出狀態、 指令注入測 試; 指令譯碼, 如宏指令調度、 錯誤處理、 宏指令 IO 操作等 ; 以及通信狀態測試, 如密級、 授 權體制測試。
     系統配置模塊的存儲模塊用于存儲處理器操作所需的各種數據、 程序、 配置文件 等。在本發明的一個實現方案中, 存儲模塊可以分為兩個獨立部分 : FLASH 存儲器和公共存 儲器。FLASH 是用于系統配置模塊的數據資源, 而公共存儲器是所有部件共享的數據資源。 本領域技術人員將理解, 可以根據實際應用的需要而實現不同架構的存儲模塊, 例如可以 為一整體, 例如也可以采用其他的易失性或非易失性存儲器。
     在本發明的一個實現方案中, FLASH 作為信息和數據的存儲區域, 包括信息區和主 存儲區 ( 數據區 ) 分別用于存儲設備信息 ( 例如原始信息、 證書、 密鑰 ) 和一般數據。原始 信息可以包括 : 靜態數據, 由注入機關實現的原始注入數據 ( 設備信息、 算法、 協議程序、 公 鑰信息 ) ; 動態數據, 由授權機關授權首次、 更改或更新注入的數據 ( 密鑰證書、 申請私鑰證 書、 鑒權私鑰證書、 設備信息、 公鑰信息等 ) ; 以及生成數據, 由安全設備隨機生成的或隨機 獲得的數據 ( 設備密鑰、 隨機密鑰、 分儲密鑰、 算法、 數據等 )。
     用戶設備信息區與授權設備信息區一致, 可以包括如下內容密鑰隨機數 ( 由設備 自生成 ), 白裸片注入標記以及授權標志字、 驗證時鐘、 安全監控記錄、 多個 ( 如第一至第 三 ) 機關注入信息等等。 其中在不同機關的注入信息中可以指示算法程序地址、 ( 用戶 ) 協 議程序地址以及 DSL 協議程序地址以及相關的口令、 校驗碼等。
     數據區可以包括以下幾個部分 :
     公鑰參數部分, 用于存儲與公鑰相關的參數 ;
     設備密鑰部分, 其中設備 ( 用戶 ) 密鑰由程序控制生成, 簽名密鑰和申請密鑰的存儲格式一致, 參數位置和規格由系統程序確定 ;
     用戶設備保留部分 ( 或授權設備鑒權證書位置 ), 用于存儲授權設備鑒權證書, 其 中授權設備鑒權證書參數排列由程序確定, 授權標識由程序填寫, 鑒權證書主要用于在為 用戶授權時進行身份認證 ;
     鑒權密鑰部分, 用于存儲鑒權密鑰 ( 其時授權證書的一種 ), 在設備狀態為授權設 備時動態裝載, 參數位置和規格在原始注入時確定 ;
     算法程序部分, 用于存儲算法程序, 算法程序空間由邏輯保護 ; 在安全策略設計 時, 根據策略編碼, 建立算法屬性 ;
     DSL 協議程序部分, 用于存儲 DSL 協議程序, 其可以包括初始化程序、 用戶輸入指 令、 管理輸入指令、 申請授權接口指令、 更新授權接口指令、 更新通信接口指令、 加密通信接 口指令、 接口注入指令, 以及若干由接口指令啟動的程序 ;
     用戶協議程序部分, 用于存儲用戶協議程序, 可以類似于 DSL 協議程序部分 ; 以及
     一個或多個 ( 如第一至第三授權機關 ) 授權用戶公鑰證書部分, 用于存儲多個授 權機關授權用戶公鑰證書。
     上述的存儲模塊可以不在系統配置模塊中, 只要其受到本發明的系統配置模塊的 控制或以其他方式得到邏輯保護即可。另外, 存儲模塊并不限于 FLASH, 也可以使用其他的 存儲器。還可以利用上述實施例中現有的存儲器。另一方面, 本發明協議譯碼器也可以設 置在系統配置模塊中, 或者以另外方式設置。
     在本發明的一個實施方案中, 保存于 FLASH 中的數據都是加密存儲的, 每次注入、 讀出數據前將信息區中的隨機數密鑰取出, 對要寫入或讀出的數據進行加解密。 另外, 密鑰 內部隨機產生, 因此, 不能通過存儲掃描方式獲取算法信息。 芯片應用者的指令界面不提供 對 FLASH 的讀寫操作, 對算法信息的升級需要通過原算法的認可方可實施, 因此攻擊者無 法篡改注入的算法信息。
     如在上面所述的, 包引擎模塊是可重組的。其可以包括若干配置 IP 和可重組 IP, 可以利用適當的配置文件來對其進行配置, 從而實現例如 DSL 中所期望的算法和處理邏 輯。 所述包引擎模塊還可以包括 : 大數運算和模冪運算模塊, 用于提供基本的大數運算以及 模冪乘和 / 或 RSA-CRT 操作 ; 和隨機數模塊, 用于提供隨機數。
     當然, 隨機數也可以由包引擎模塊外的隨機數模塊提供, 所述大數運算和模冪運 算模塊也可以利用公鑰算法模塊中的公鑰運算和模冪乘運算器。例如, 可以利用公鑰算法 模塊和包處理模塊協同來實現協議。
     從而, 通過系統管理、 協議譯碼器和協議指令以及 DSL 或其他協議程序 ( 宏指令, 其可以集成在處理器中 ) 的配合, 結合適當的配置文件, 可以利用本發明的包處理模塊 ( 以 及公鑰算法模塊 ) 實現 DSL 協議以及其他安全協議的功能。
     同時, 該實施例的處理器依然可以通過包處理模塊 ( 例如, 根據配置文件進行重 組 ) 支持 IPsec 協議族和 MPPE 協議的處理。從而可以將經過 DSL 協議處理的數據 ( 例如, 利用私鑰加密了的數據 ) 作為 IPsec 協議待處理的包, 進行 IPsec 協議的處理, 從而極大地 提高了通信的安全性。
     另外, 由于在本實施例中, 也可以存儲其他安全協議程序 ( 例如, 用戶自定義協議 程序 ), 來實現其他的協議。 因而, 基于該實施例實現多個安全協議的嵌套是顯而易見的, 從而能夠進一步增強安全性。
     以上結合附圖描述了本發明的具體實施例。在上述的實施例中, 本發明的 VPN 芯 片基于宏指令 ( 例如, 變長宏指令 ) 體系, 但是本領域技術人員將理解, 本發明的 VPN 芯片 也可以類似架構在其他指令體系的基礎上。
     在上述實施例的模塊、 部件、 裝置以及它們的命名、 結構、 配置等等僅是一種示例, 而不是限制權利要求的范圍。本領域技術人員可以根據實際應用的需要使用上述模塊、 部 件、 裝置中的一種或多種, 以及使用一個或多個上述模塊、 部件或裝置。 例如, 可以根據應用 的需要增加或刪除算法, 這也在本領域技術人員的認知范圍之內。
     本發明的 VPN 芯片可以應用于安全路由器、 IPsec 網關、 SSL 網格、 可信防火墻、 可信網閘、 簽名加密服務器、 網站防護系統、 監控系統、 證書管理服務器、 安全終端 / 服務器 等。

關 鍵 詞:
支持 性能 安全 協議 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:支持高性能安全協議的裝置.pdf
鏈接地址:http://www.rgyfuv.icu/p-6420401.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图