• 沒有找到結果。

DES 演算法介紹

DES(Data Encryption Standard)是在 1970 年代中期由美國 IBM 公司 發展出來的,且被美國國家標準公佈為資料加密標準的一種區塊加密 法。直到今日,儘管 DES 已經經歷了 20 個年頭,但在已知的公開文 獻中,還是無法完全、徹底地把DES 給破解掉。換句話說,DES 這套 加密方法至今仍被公認是安全的。

DES 屬於區塊加密法,而區塊加密法就是對一定大小的明文或密 文來做加密或解密動作。而在DES 這個加密系統中,其每次加密或解 密的區塊大小均為 64 位元,所以 DES 沒有密文擴充的問題。就一般 資料而言,無論明文火密文,其資料大小通常都大於64 位元。這時我 們只要將明/密文中美 64 位元當成一個區塊而加以切割,再對每一個區 塊作加密解密即可。但是對明文做區塊切割時,可能最後一個區塊的 大小會小於 64 位元。此時,我們要在此區塊之後附加”0”位元,直到 此區塊大小成為64 位元為止。

另一方面,DES 所用的加密或解密金匙(Key)也是 64 位元大小,但 因其中有 8 個位元是用來做錯誤更正(Error Correction),所以 64 位元中 真正是金匙效用的只有 56 位元。而 DES 加密或解密除了子金匙的順序 不同外,其餘的部分則是完全相同的。

DES 整體流程 ﹕

DES 的整體流程請參考 P.36 的圖 2-1,其為全部 16 個回合(Round) 的加/解密架構圖,其最上方的 64 位元輸入區塊資料,可能是明文,也 可能是密文,端視使用者要做加密或解密而定。而加解密的不同處,

只在於圖2-1 最右邊的 16 個子金匙之使用順序不同,加密之子金匙順 序為k1,k2,…,k16,而解密之子金匙順序正好相反,為 k16,k15,…,k1。

首先,加解密輸入區塊須依照P.39 表 2-1 之重排次序,進行初始 排列(Initial Permutation)動作,擾亂資料之原來順序後,再分為 L0 與 R0 兩個 32 位元的區塊。接著,R0 與第一個子金匙 k1 一同經過 f 函數 計算,而得到的32 位元輸出再與 L0 做位元間的互斥或(XOR)運算。

其結果成為下一個回合的R1,而 R0 則成為下一回合的 L1,如此連續 運作16 回合。

我們以下列兩個式子來表示其運作過程:

Ri = Li-1 XOR f(Ri-1,Ki) , Li = Ri-1,i =1,2,...,16

而最後所得到的R16 與 L16 不需再互換,直接連結成 64 位元的區 塊,在依P.39 表 2-2 之重排次序做一次終結排序動作,得到 64 位元的 輸出。

子金匙的產生 ﹕

子金匙的產生請參考P.37 圖 2-2。子金匙產生過程中的輸入,為使 用者所持有的64 元母金匙。而加密或解密時,使用者先將母金匙輸入 至子金匙產生流程中即可。首先先經過金匙排列 A(如 P.40 表 2-3) , 將母金匙的8 個除錯位元剔除掉,而留下真正的 56 位元母金匙。接著,

兵分兩路為兩個28 位元的區塊 C0 及 D0,再分別經過一個左旋函數(如 P.41 表 2-5) ,得到 C1 與 D1,連結成 56 位元資料,再依金匙排列 B(如 P.40 表 2-4)做重排動作,便可輸出子金匙 k1,而 k2 至 k16 之得法,依 此類推。

F 函數之功能 ﹕

P.38 圖 2-3 是 f 函數的計算過程架構。f 函數有兩個輸入資料:一 為32 位元的中間密文 R,另一部分是 48 位元的子金匙 K。32 位元的 中間密文R 先經過擴增排列 E(如 P.41 表 2-6) ,即擴增至 48 位元。接 著,再與另一輸入資料,即48 位元的子金匙 K 做互斥或(XOR)運算。

所得到的結果再平均分配給8 個替換盒 S1,S2,…,S8。

每個替換盒的輸出與輸入分別為6 位元與 4 位元。所以經過 8 個 替換盒的替換之後,總輸出資料遂成為4*8=32 位元。最後再經過縮減 排列P(如 P.41 表 2-7)縮減成 32 位元的結果,就是 f 函數的輸出。

替換盒的使用 ﹕

替換盒的替換方法是把6 位元輸入的最左與最右 2 個位元取出來 當 P.42 表 2-8 的列數,而中間剩餘的 4 個位元則拿出來當作表 2-8 的 行數。例:假設第一個替換盒S1 的 6 個輸入位元資料為( 011001 ) 2, 其中右邊為低位元。則我們選擇S1 的第( 01 ) 2 = 1 列及第( 1100 ) 2 = 12 行之內容,也就是 9 = ( 1001 ) 2 為輸出資料。

三、 PCI 介紹

PCI BUS 的簡史 ﹕

為了確保市場上不會擠滿了各種只針對特定處理器的區域匯流排 架構(P. 43 圖 3-1),Intel 制訂了 PCI 匯流排,且不再追隨 VESA VL 標準,因其不足已解決當時,和隨後五年的問題,且VL 匯流排對於 burst 傳輸支援很有限,限制了可達成的輸出率。最新的版本為 2.2 版,在1998 年 12 月 18 日完成,並於 1999 年 2 月生效。

PCI BUS 功能:

PCI 為 Peripheral Component Interconnect(週邊裝置元件互連) 的 縮寫。PCI 匯流排安裝於需要在彼此之間,或者(以及)與系統記憶 體間快速地存取,並且可被處理器已接近其內建匯流排之全速來存取 的配接卡。所有PCI 匯流排讀寫的傳輸皆能用 burst 傳輸的方式來執 行。Burst 的長度是由 burst master(匯流排主控器)來決定。在交易開始 之際,target 會被指定起始位址與交易型態,但不會告知 target 其傳輸 長度。當master 準備傳輸資料項的時候,它會通知 target,此資料項是 否為最後一筆。當傳完最後一筆資料項時,交易便告完成。

主要特色:

1. 與處理器無關:

為 PCI 匯流排所設計的元件是 PCI 所特定的,而非處理器特定 的,因此把裝置設計與處理器升級隔離。

2. 每個 PCI 匯流排支援將近 80 個 PCI 功能:

典型的PCI 匯流排實作支援大約十個電負載,而一個裝置對匯 流排來說都是一個負載。每一個裝置最多可以含有八個PCI 功 能。

3. 最多支援 256 個 PCI 匯流排:

規格提供了最多256 個 PCI 匯流排的支援。

4. 低電源消耗:

PCI 規格設計的主要目標之一就是,建立盡可能減少電流外洩 的系統設計。

5. 在所有的讀寫傳輸上都可以執行 burst:

32 位元 PCI 匯流排支援尖峰傳輸率每秒 132Mbytes 的讀寫傳 輸,64 位元 PCI 傳輸的尖峰傳輸率則為每秒 264Mbytes。而 64 位元、66MHz 的 PCI 匯流排傳輸率最大可達每秒

528Mbytes。

6. 匯流排速度:

2.0 修訂版規格支援最高的 PCI 匯流排速度為 33MHz。2.1 修 訂版則增加66MHz 的匯流排操作。

7. 64 位元匯流排寬度 ﹕

64 位元延伸的完整定義。

8. 存取時間:

60ns(當 PCI 匯流排的 initiator 正在寫入 PCI target,且匯流排 速度為33MHz 時)。

9. 並行的匯流排操作:

橋接器支援完整的匯流排並行性,處理器匯流排、PCI 匯流排,

以及擴充匯流排可同時使用。

10. 支援 bus master:

完整的bus master 支援允許對等的(peer-to-peer) PCI 匯流排 存取,以及透過PCI-to-PCI 及擴充匯流排橋接器來存取主記憶 體與擴充匯流排裝置。此外,PCI master 可以存取一在匯流排 階層中,另一個較低層的PCI 匯流排之 target。

11. 隱藏式匯流排仲裁:

當其他的bus master 在 PCI 匯流排上進行傳輸時,就會發生 PCI 匯流排仲裁。

12. 低接腳數:

減少匯流排訊號的使用,功能性的PCI target 只用 47 支腳,

initiator 只用 49 支腳。

13. 交易完整性的檢查:

位址、指令和資料的同位檢查。

14. 三種位址空間:

記憶體、I/O 及組態位址空間。

15. 自動組態:

具有支援自動化裝置偵測與組態的位元級(bit-level)組態暫存 器(Configuration Register)規格。

16. 軟體的通透性:

當軟體驅動程式和PCI 裝置或與其擴充匯流排有關的裝置通 訊時,它可以使用相同的指令集與狀態定義。

17. 附加卡:

規格包括PCI 連接器和附加卡的定義。

18. 附加卡大小:

規格定義了三種界面卡的大小:長、短、及可變高度的短卡。

PCI bus 操作簡介:

1. 基本定義:

burst 傳輸 ﹕

是由一個位址階段以及隨後兩個或更多個資料階段組成( P. 43 圖 3-2 ),且 bus master 只需參與一次匯流排上所有權的仲裁即可。在位 址階段裡,起始位址與交易型態會被生成,所有在匯流排上的裝置都 會閂鎖位址和交易型態,並將之解碼,以決定哪一個是target 裝置。

Target 裝置將起始位址閂鎖在一位址計數器中,並負責每個資料階段 的位址遞增。應用在PCI 時,target(若 bus master 要求執行時)會在第一 個資料階段完成後,強迫終止交易。master 必須重新參與匯流排的仲 裁,並嘗試以下一個資料項來繼續進行burst 模式。Target 會在第一個 資料階段完成後,終止每一次 burst 傳輸的嘗試。當然,在每一次 burst 傳輸都有其基本要素-位址與交易型態為位址階段的輸出。接著,在每 一個後續的資料階段裡,都可傳輸一個資料物件(在32 位元實作裡最 多32 位元,而在 64 位元裡實作最多為 64 位元)。

Initiator(起始者)、Target(標的裝置)或 Agent ﹕

在每一次 PCI burst 傳輸裡都有兩個參與者就是 initiator 和 target。

Initiator 或稱為 bus master 是起始傳輸的裝置,在 PCI 規格中經常被 使用到。Target 是目前的 initiator 為了進行資料傳輸而定址的裝置。

PCI initiator 與 target 裝置在規格裡通常被稱為 PCI-Compliant Agent。

2.PCI 的傳輸:

位址階段 ﹕

在此階段中,initiator 要確認 target 裝置(透過位址), 以及交 易型態(也稱為指令型態)。Target 裝置是以驅動一個在其指派給它 的範圍內之PCI 位址/資料匯流排起始位址來識別。同一時間 Initiator 以驅動一個在4 位元寬 PCI 指令/ 位元組致能匯流排上(Command or Byte Enable Bus)的指令型態來識別交易型態。Initiator 同時驅動 FRAME# 到低態訊號,表示匯流排上有一個有效的起始位址與交易型 態存在。又因initiator 只在一個 PCI 時脈週期內顯示起始位址與指 令,所每一個PCI target 裝置需在時脈的下一個上升邊緣閂鎖位址(位 址匯流排上)及指令(指令/位元組致能匯流排上),以便將來解碼,

且target 裝置可以確認它是否被定址(位址/資料匯流排起始位址)以 及交易的型態(指令/位元組致能匯流排),但 initiator 只提供起始位 址給target (在位址階段中)。在完成位址階段後的交易期間,位址/

資料匯流排變成資料匯流排,且用來在每一個資料階段裡傳輸資料。

而target 負責閂鎖起始位址,並且在後續的每一次資料傳輸期間,自 動遞增此位址,以便指向下一個資料群組的位址。

宣告交易 ﹕

當 PCI target 確定自己是交易的 target 時,它必須將 DEVSEL#

(Device Select,裝置選擇)驅動到低態來宣告交易,假如在預先決定的 一段時間裡,initiator 未取樣到 DEVSEL#被驅動到低態的話,他就會 終止交易。

資料階段 ﹕

交易的資料階段是指某一段時間,在該時段裡,initiator 與 target 之 間有一個資料物件被傳輸。而被傳輸的資料位元組數是由initiator 在

該資料所設定的指令/位元組致能訊號數目來決定的。每一資料階段持 續的時間至少一個PCI 時脈週期,然而 initiator 與 target 都必須表示 他們準備完成該資料階段,或者用一個 PCI 時脈週期的等待狀態來延

該資料所設定的指令/位元組致能訊號數目來決定的。每一資料階段持 續的時間至少一個PCI 時脈週期,然而 initiator 與 target 都必須表示 他們準備完成該資料階段,或者用一個 PCI 時脈週期的等待狀態來延

相關文件