3-DES加解密電路 by PCI介面

48  Download (0)

全文

(1)

ెϥ̂ጯ

ྤੈ̍඀ጯր૞ᗟಡӘ

4!.!EFT ΐྋ૜࿪ྮ cz!QDJ ̬ࢬ!

!

!

學 生 : 袁隆宇(四乙)

莊啟新(四乙)

指導教授 : 陳德生

中華民國九十一年十二月

(2)

一、 前言 動機及背景 : --- 1 目的 : --- 1 二、 DES 演算法介紹--- 2 DES 整體流程 : ---2 子金匙的產生 : --- 3 f 函數之功能 : --- 3 替換盒的使用 : --- 4 三、 PCI 介面介紹--- 5 PCI 主要特色 ﹕--- 5 PCI 操作簡介 ﹕--- 7 PCI 的傳輸 ﹕--- 8 訊號群組 ﹕--- 9 PCI 讀取傳輸 ﹕--- 10 PCI 寫入傳輸 ﹕--- 11 PCI 的仲裁 ﹕--- 13 四、 AMCC S5920 介紹--- 17 五、 VHDL 介紹--- 21 VHDL 的程式架構 ﹕--- 22 VHDL 的優點 ﹕---23 行為化模型(Behavior Model)的概念 ﹕---23 六、 WinDriver 介紹--- 25 七、 實作 3 – DES--- 27 八、 測試結果---30 九、 結論與心得--- 33 十、 參考資料--- 35 十一、附錄(圖表)--- 36 圖 2-1﹕DES 整體流程圖 ﹕--- 36 圖 2-2﹕子金匙的產生 ﹕--- 37 圖 2-3﹕f(R,K)函數之計算過程 ﹕--- 38 表 2-1﹕初始排列 ﹕--- 39

(3)

表 2-2﹕終結排列 ﹕--- 39 表 2-3﹕金匙排列 A ﹕--- 40 表 2-4﹕金匙排列 B ﹕--- 40 表 2-5﹕左旋函數 ﹕--- 41 表 2-6﹕擴增排列 E ﹕--- 41 表 2-7﹕縮減排列 F ﹕--- 41 表 2-8﹕替換盒(S-Boxes)函數 ﹕--- 42 圖 3-1﹕PCI 系統之方塊架構圖 ﹕--- 43 圖 3-2﹕BURST 傳輸格式 ﹕--- 43 表 3-1﹕控制 PCI 傳輸之訊號 ﹕--- 43

(4)

一、 前言

動機 :

在大學三年的課程之中,學習了不少有關硬體與軟體的知識 技能,而在學生涉獵多方面廣泛的領域之後,發現我們對硬體與 軟體都有不少的興趣,於是想找一個專題能夠對學生在這兩方面 的訓練有所幫助。而學校之中的資源充足,又有指導老師與學長 的經驗傳授,加上日常生活中隨處可見有關加解密的應用,商業 機密文件、摩斯電碼、軍用情報系統、網路系統皆有加解密的使 用,所以想了解一下有關加解密方面的知識,所以在請教過指導 老師以及我們兩個的討論之後,決定了做這個專題的研究。

目的 :

希望能藉此了解 DES 加解密電路的運作流程,以及在 PCI 介面上傳輸與接受資料的過程,並學習 DES 電路與 PCI 介面溝 通的方式。將 DES 演算法應用在硬體上,來增進在 PCI 硬體介 面時資料加解密的效能。也藉此專題訓練自己從規劃到完成一個 研究題目所需的能力。

(5)

二、 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)運算。

(6)

其結果成為下一個回合的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 函數的輸出。

(7)

替換盒的使用 ﹕

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

(8)

三、 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. 低電源消耗:

(9)

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. 交易完整性的檢查: 位址、指令和資料的同位檢查。

(10)

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 ﹕

(11)

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 在

(12)

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

交易期間 ﹕

在位址階段的開始,FRAME#會被驅動到低態,並持續驅動,直 到initiator 準備(IRDY#)完成最後一個資料階段為止。當 target 在 資料階段中取樣到IRDY#被驅動到低態,且 FRAME#被反驅動到高態 時,它就知道這是最後一個資料階段,且正在進行中,但資料階段必 須直到target 把 TRDY#訊號驅動到低態時,才告完成。 交易完成且匯流排回到閒置狀態 ﹕ 在最後一次資料完成後,initiator 會以反驅動(IRDY#)到高態的 方式,讓 PCI 匯流排回到閒置狀態。非法行為的回應-PCI 並不鼓勵讓 裝置設計者主動檢查是否違反規定,但裝置真的偵測到的話,會建議 以下的原則處理:所有PCI 裝置能慎重地回到閒置狀態(也就是停止 所有匯流排訊號的驅動,並使處在master 或 target 狀態的機器回到靜 止狀態)對於好的裝置而言,應該嘗試停留在操作狀態,以便參與未 來的交易。假使說target 偵測到交易非法的結束時,規格會建議 target 將所有與target 相關的訊號反驅動到非動作態(inactive),並讓其狀 態機器回到閒置狀態。假如target 認為不損害其正常的運作能力,它 放棄所有的訊號,回到閒置狀態,並且不顯示任何錯誤型態。

3.訊號群組:

PCI 時脈訊號(CLK) ﹕ 對所有PCI 匯流排來說,CLK 為一輸入, 而 PCI 裝置的所有輸 入都是在CLK 訊號上升邊緣時被取樣的。如果要改變的話,要符合 1. 時脈邊緣可以維持清晰。 2. 不違反最小的高低態時間。

(13)

3. 沒有待解決的匯流排要求。 4. LOCK#沒有驅動到低態。

時脈只能在邏輯低態時停止(以便省電)。

重置訊號(Reset Signal, RST#):

當低態時,它會強迫所有PCI 組態暫存器、master 及 target 狀態 機器與輸出驅動器回到初始化狀態。 其他控制PCI 傳輸之訊號可參考 P.43 表 3-1。

4.PCI 讀取傳輸:

在開始述說讀取時,首先要說明的是讀寫的一些基本規則:當資料 來源開始驅動有效的資料到資料匯流排上,其備妥訊號(IRDY# 或 TRDY#)必須驅動到低態,但接收資料的裝置則要持續反驅動其備妥 訊號線到高態,直到它準備接收資料為止。一旦備妥訊號被驅動到低 態的話,它就會一直維持低態,直到目前的資料結束為止,且互相的 訊號現不會改變,若當initiator 驅動了 IRDY#到低態,則不管 TRDY #的狀態為何,它都不可改變IRDY#或 FRAME#。同樣地, 當 target 驅動了TRDY#或 STOP#到低態,它就不能改變 TRDY#、STOP#、 或DEVSEL#,直到目前的資料階段完成為止。

(14)

在 CLK2 時:由 FRAME#低態開始為一新的 Cycle。AD bus 上送出要 讀取資料的位址。C/BE#上送出命令表示這個 Cycle 是要讀取。 0010 為 I/O Read;0110 為 Memory Read。

在 CLK 3 時:C/BE#上送出 BE 表示要讀取那些 Bytes。DEVSEL# 為 低態,表示被讀取位置的裝置所發出,告之它已接受到讀取的命 令了。IRDY#為低態表示要讀取的裝置已經準備好可以接收資料 了。

在 CLK 4 時:TRDY#為低態表示被讀取位置的裝置已經準備好資料 並且已送到bus 上了,此時 IRDY#和 TRDY#均為低態表示要讀取 的裝置接收第一筆資料了,而資料在AD bus 上。

在 CLK 5 時:此時 TRDY#為高態表示被讀取位置的裝置未準備好資 料。

在 CLK 6 時:TRDY#為低態表示被讀取位置的裝置已經準備好資料 並且已送到bus 上了,此時 IRDY#和 TRDY#均為低態表示要讀取 的裝置接收第二筆資料了,且資料在AD bus 上。

在 CLK 7 時:雖然此時 TRDY#為低態表示被讀取位置的裝置已經準 備好資料並且已送到bus 上了,但 IRDY#為 High.表示要讀取的裝 置未準備好接收資料了。

在 CLK 8 時:TRDY#為低態表示被讀取位置的裝置已經準備好資料 並且已送到bus 上了,此時 IRDY#和 TRDY#均為 Low 表示要讀 取的裝置接收第三筆資料了。資料在AD bus 上,此時 FRAME# 變成High 表示要讀取的裝置發出結束此 Cycle 。 在 CLK 9 時:此為轉換 Cycle 不可有任何訊號產生,以免有任何錯誤 的情況發生。在下一個CLK 時,可以有另一個 Cycle 發出。

5.PCI 寫入傳輸 ﹕

如同讀取傳輸一樣,那些基本的規則仍然會遵守

(15)

基本 Write 的運作

在 CLK 2 時:由 FRAME#低態開始為一新的 Cycle。AD bus 上送出 要寫入資料的位址;C/BE#上送出命令表示這個 Cycle 是要寫入 ,0011 為 I/O Write;0111 為 Memory Write。

在 CLK 3 時:C/BE#上送出 BE 表示要寫入那些 Bytes。DEVSEL# 為 低態表示被寫入位置的裝置所發出,告之它已接受到寫入的命令 了。IRDY#為低態表示要寫入的裝置已經準備好資料了。資料在 AD bus 上,TRDY#為低態表示被寫入位置的裝置已經準備好接收 資料了,此時 IRDY#和 TRDY#均為低態表示被寫入的裝置接收第 一筆資料了。 在 CLK 4 時:IRDY#為低態表示要寫入的裝置已經準備好資料了,資 料在AD bus 上,TRDY#為低態表示被寫入位置的裝置已經準備 好接收資料了,此時 IRDY#和 TRDY#均為低態表示被寫入的裝置 接收第二筆資料了。 在 CLK 5 時:此時 IRDY#為高態表示要寫入的裝置未準備好資料。此 時TRDY#為高態表示被寫入位置的裝置未準備好接收資料。 在 CLK 6 時:IRDY#為低態表示要寫入的裝置已經準備好資料了。資 料在AD bus 上,此時 TRDY#為高態表示被寫入位置的裝置未準

(16)

備好接收資料,此時FRAME#變成高態表示要寫入的裝置發出結 束此Cycle。 在 CLK 7 時: 此時 TRDY#為高態表示被寫入位置的裝置未準備好接 收資料。 在 CLK 8 時:TRDY#為低態表示被寫入位置的裝置已經準備好接收 資料了,此時 IRDY#和 TRDY#均為低態表示被寫入的裝置接收第 三筆資料了。 在 CLK 9 時:此為轉換 Cycle,不可有任何訊號產生,以免有任何錯 誤的情況發生。在下一個CLK 時. 可以有另一個 Cycle 發出。

6.PCI 的仲裁

在每一時刻裡,一或多個 PCI bus master 裝置都可能同時需要使用 到PCI 匯流排,與另一 PCI 裝置進行資料傳輸。所有請求的 master 都 會驅動他的REQ#輸出到高態,用以告知 bus 仲裁器其待決的匯流排 使用請求,相對地,若PCI 匯流排要將控制權給 master 的話,仲裁器 會將裝置個別的GNT#驅動到低態,以進行一次交易。然而, 有了仲 裁控制器的機制,當然也要有些演算法來做排班,使得每一個bus master 都可以有存取匯流排的權限,與其他的 master 請求無關,而且 定義公平的話可確保一個具高優先權的master 不會主宰匯流排,並在 較低優先權的master 持續請求匯流排時,將它們排除在外,但這並不 表示所有的agent 都必須平等地存取匯流排。假如目前匯流排擁有著 交易完成後,還需要匯流排去進行其他交易的話,那麼,它應該在驅 動目前交易的FRAME #到低態之後,繼續驅動其 REQ#線到低態。 假如沒有其他的bus master 請求使用匯流排,或是目前的 bus master 具 有較高優先權的話,則在目前交易結束後,匯流排仲裁器會繼續把使 用權給目前的bus master。

(17)

PCI BUS 仲裁之時序圖 在 CLK 1 時:裝置 A 發出 REQ#-a.表示希望取得主控權。(即擁有 bus 的使用權) 在 CLK 2 時:仲裁器仲裁之結果由裝置 A 取得,所以發出 GNT#-a。 裝置B 發出 REQ#-b.,表示希望取得主控權。 在 CLK 3 時:裝置 A 發出 FRAME#低態此時主控權在裝置 A。 在 CLK 4 時:裝置 A 完成存取,仲裁器仲裁之結果由裝置 B 取得。 所以發出GNT#-b.收回 GNT#-a. 在 CLK 5 時:此時主控權在裝置 B。但 B 未完成準備所以未發出 FRAME#。 在 CLK 6 時:裝置 B 發出 FRAME#低態,此時主控權在裝置 B。裝 置B 收回 REQ#-b,表示完成存取要放棄主控權。 在 CLK 7 時:因裝置 A 一直未收回 REQ#-a,仲裁器再把主控權給裝 置A 。所以發出 GNT#-a,收回 GNT#-b,裝置 B 完成存取。

(18)

7.PCI 讀取的狀態圖

(19)
(20)

四、AMCC-S5290

為了解決與PCI連結的問題,我們使用了AMCC-S5920來幫助我 們, 由於它支援PCI 2.2 版的架構,正好符合我們所需要的規格,所 以可以藉由此卡來解決與PCI傳輸的問題。我們主要是使用S5920 上的 ADD-ON 部分,其中ADD-ON部分具有4個region,但在此專題當中我們 只使用其中的3個region來使用。用來支援我們使用DES 加解密的過程 中,一些訊號選擇及執行資料傳輸。 DQ[3:0],我們選擇此暫存器來選擇模式,分為選擇加密或解密、 region A及region B。 PTNUM=”00”,在此是選擇到DQ[0]的region,其中是用來選擇 在程式執行過程中做加密or解密的動作。 PTNUM=”10”,”11”,是選擇regiona 或regionb。Region A 和 Region B 為資料傳輸點,開始從第一筆資料傳到Region A,第二筆傳到 Region B 如此反覆,這方法是怕資料delay。當第一筆資料傳輸成功時, 會給一個訊號通知系統傳下一筆資料,這樣Region A 跟Region B 兩個 就不會衝突到。 WR 為寫入模式。 RD 為讀取模式。

特色:

• PCI 2.2 Compliant Target/Slave Device

• Full 132 Mbytes/sec Transfer Rate

• PCI Bus Operation DC to 33 Mhz

• Add-On Bus 8 MHz to 40 Mhz

• Programmable Prefetch and Wait States

• 8/16/32 Bit Add-On User Bus

• Four Definable Pass-Thru Regions

• 32 Byte Burstable PCI Bus FIFO

(21)

• Active/Passive Add-On Bus Operation

• Mail Box Registers w/Byte Level Status

• Direct Mail Box Data Strobe/Interrupt Pin

• Mail Box Read/Write Interrupts

• Direct PCI & Add-On Interrupt Pins

• S5933 PCI Target Mode Replacement

• S5933 Software Compatible

• Plug-N-Play Compatible

• Two Wire Serial Bus nvRAM Support

• Optional External BIOS

• 160 Pin PQFP

應用:

• ISA to PCI Local Bus Conversions

• I/O Communications Ports

• High Speed Data Output

• General Purpose PCI Interfacing

• Data Communications

• Memory Interfaces

• Data Acquisition

(22)
(23)
(24)

五、VHDL 介紹

VHDL 是 Very high speed integrated circuit Hardware

Description Language 的縮寫,意思是非常高速積體電路的硬體描述 語言。這是誕生於一項由美國國防部所支持的研究計劃,而目的是為 了把電子電路的設計意義以文字或文件的方式保存下來,以方便其他 人能輕易地了解電路的設計意義。 1985 年完成第一版的硬體描述語言。1987 年成為 IEEE 的標 準,即 IEEE 1076 標準。1988 年,美國國防部規定所有官方的 ASIC 設計都必須以VHDL 為設計描述語言,所以 VHDL 就漸漸成為工業界 的標準。之後於1993 年增修為眾所週知的 IEEE 1164 標準,1996 年, IEEE 再將電路合成的標準程式與規格加入至 VHDL 硬體描述語言 之中,稱之為 IEEE 1076.3 標準。 由於半導體製程技術的快速進步,VHDL 所能提供高階電路描述 語言的方式,讓複雜的電路可以透過 VHDL 編輯器的電路合成方式, 輕易而且快速的達成設計的規格。而VHDL 電路描述語言所能涵蓋的 範圍相當廣,能夠適用於各種不同階層的電路設計工程師之需求。從 ASIC 的設計到 PCB 系統的設計,VHDL 電路描述語言都能夠使 用,所以 VHDL 電路設計毫無疑問的成為硬體設計工程師的必備工 具。

(25)

VHDL 的程式架構:

(26)

VHDL 的優點:

VHDL 電路設計語言的高階行為化電路描述方式,使得以前需要 數個月才能完成的電路圖設計方式能在數天之內完成。 1. 功能強大:包函了電路描述,電路合成與電路模擬等功能。 2. 設計靈活(Flexibility): VHDL 電路設計語言,將電子電路的設計方式,改變成以行 為化描述的方式來設計。因此具有設計快速、更改及維護容 易、犯錯機率降低及除錯容易等優點。 3. 各種不同的描述風格(Design Description) VHDL 電路設計語言,,提供許多不同的描述風格,如:連 線關係、順序性敘述,共時性敘述及布林方程式等。來適應 大小,複雜性不同的電路設計。 4. 可流通性或可攜性(Portability) 因為VHDL 是一種工業界標準的電路設計語言,它所提供的 可攜性能力,可以使你的設計可以利用不同編譯軟體來編 譯,可以利用不同模擬器來模擬以及可以適用於任何種類的 邏輯元件與半導體製程技術。

行為化模型(Behavior Model)的概念:

行為化模式的意函即是使用描述電路行為的方式來達成將電路模 型化的意義而最基本的行為化模型方式,就是訊號的設定(Signal Assignment)。 使用 VHDL 語言之語法如下: a <= b ;

代表訊號a是由訊號b的設定而來,英文的讀法為”a gets the value of b”。

VHDL語言中的電路時間延遲因素:

在 VHDL 語言中用來描述原件時間延遲的模型,共可分為兩種。 一、慣性延遲(Inertia delay),二、傳遞延遲(Transport Delay)。慣性

(27)

時間延遲型為 VHDL 語言中所內定的時間延遲模型,因為對大部分的 物理原件而言,慣性時間延遲模型較能符合實際原件的操作情形。在 VHDL 的行為化模型的描述中,如果沒有加以註明,則內定為慣性時 間延遲的方式來模擬。如果要將時間延遲模型設為傳遞延遲的方式, 則應在 VHDL 語言中加入保留字 TRANSPORT。

(28)

六、WinDriver 介紹

在專題製作當中,由於需要做到有關於硬體資料傳輸的方面,所 以需要一套可以直接測試硬體功能是否正常─在未寫任何驅動程式之 前先測試硬體是否正常,以免軟硬一起測試容易造成當機。因此藉著 WinDriver 的幫助來測試硬體方面接線路是否有問題,這樣在實作方面 就可以將其分開製作和測試。 WinDriver 是開發驅動程式之工具箱,可以迅速地開發出以 PCI / ISA /ISA PnP/ EISA 為基礎的驅動程式, 使用 WinDriver 的優點是: 開 發者並不需熟悉任何內部作業系統或 kernel programming 或 DDK 及任何 驅動程式.。WinDriver 同時允許開發者能在自己所熟悉的開發環境下, 利用使用者模式(User Mode)來開發出所需的驅動程式 – 如使用

MSDEV Visual C/C++, Borland C++Builder,Delphi 或任何 Win32 編譯 器。

WinDriver 的特徵/優點: 特徵:

(29)

• Powerful Wizards for hardware diagnostics and automatic driver code generation.

• Achieve kernel mode performance using WinDriver KPI.

• Enhanced Built-in support for PLX and other leading PCI bridge vendors V3, Galileo, Altera - PLDA Core and AMCC.

• Automatic implementation of I/O, interrupt handling and access to memory mapped cards.

• Support for DMA, Plug and play, and multiple board handling.

• Same code you write runs on all Windows platforms, Linux and Solaris.

• Coming soon - VxWorks Support

優點:

Cost - Save months of kernel development.

Stability- WinDriver is field tested on thousands of HW configurations.

Portability - Your driver will run on any supported operating system. Just recompile!

Performance - Acheive optimal kernel mode performance via WinDriver's KPI.

(30)

七、實作 3 - DES

其DES的演算法跟原本相同,只是加解密的流程稍微改變了,更複 雜一點。密文先經過第一個DES電路,用Key1加密後送到第二個DES 電路,經由Key2做解密的動作再送到Key3,最後用Key3做加密的動 作,經由以上三個步驟之後可以得到密文。 而解密的動作則跟加密的步驟相反,密文先送到第四個 DES 電 路,用Key3 做解密的動作之後送到第五個 DES 電路,經由 Key2 做加 密的動作再送到第六個 DES 電路,最後用 Key1 做解密的動作之後即 可將密文還原成明文。

3 - DES

Plaintext-明文 Ciphertext-密文 DES DES DES

DES DES DES Key1 Key2 Key3

Key3 Key2 Key1 -1 -1 -1 P.S. : “-1” 表示做 Mode 0 ( 解密動作 ),沒標示表示做 Mode 1 ( 加 密動作 ) 而以下所討論的就是針對於 DES 電路做說明,實作 DES 的程式 碼時,所使用的語言是 Altera 公司所出版的軟體--- maxplusII,實作的 大略結構是將整個 DES 演算法分為三個大 components 分別是 DES.vhd ( 用來控制 des 的主要流程)、key_sel.vhd ( 用來產生 16 把子金匙)、 CRP.vhd ( 用來執行替換盒的工作),而 CRP 中又需利用要八個較小且 功 能 相 同 的 components 分 別 代 表 8 個 替 換 盒 ( SBOX1.vhd 、

(31)

SBOX2.vhd 、 SBOX3.vhd 、 SBOX4.vhd 、 SBOX5.vhd 、 SBOX6.vhd 、 SBOX7.vhd、SBOX8.vhd )。

DES.vhd:

分為四個狀態( idle、initial1、round、final),,idle state 表靜止狀 態,initial1state 表開始執行DES,round state 表正在產生子金匙且將子 金匙與source 做結合的16 個迴圈,final state 表結束迴圈並輸出結果。

STEP 1:DES 輸入的原始資料( desIn[64] ) 先經過初始排列,把資 料位元重新排列。 STEP 2:再將其分為L0 及R0 兩個部分,然後將R0 與第一把子金 匙( K1 )做f 函數,f 函式的輸出再和L0 做XOR,其結果做為 R1 的輸入,而R0 則直接當做L1 的輸入,依此法做16 次後 合併L、R 兩部分。 STEP 3:將做完STEP 2 後所產生的結果經由終結排列,產生最後 的輸出,亦即經過DES 演算法後的最後結果。

key_sel.vhd:

這個檔案是用來產生16 把子金匙的,這個部分比較麻煩的一點 是需要將每把子金匙的位元與母金匙的位元間相對關係算出來。 STEP 1:指定每把子金匙與母金匙的相對應位元。 STEP 2:每把子金匙確定其值之後,便要依靠roundSel 這個訊號 線來決定要使用的是第幾把子金匙。

CRP.vhd:

CRP.vhd 用來各別將DES 中的R ( R0、R2...R15 ),分配各 個替換盒所要的輸入及整合其的輸出,並使用component 的技巧,將 8 個替換盒的程式載入。

STEP 1:將32 bits 的R ( R0、R1...R15 ) 擴充成為48 bits,把 擴充後的資料拿來跟所需的子金匙做XOR。

STEP 2:將X 中的位元拿來分配做為替換盒( SBOX ) 的輸入。 STEP 3:全部替換盒的輸出結果存進S中,再將S 做一次位元排

(32)

列。

SBOX.vhd:

替換盒共有8 個( SBOX1.vhd、SBOX2.vhd...SBOX8.vhd ),利 用特殊替換方法把6 位元輸入的最左與最右2 個位元取出來當列 數,而中間剩餘的4 個位元則拿出來當作行數。直接按表實做輸入及 輸出的關係。

(33)

八、測試結果

圖 8-1 ﹕Key_sel.vhd 測試結果

K(母金匙)的資料為 ﹕0189A3BD7E02FC 而產生的16 把子金匙分別為 ﹕ K1 ﹕B372EF614E13 K9 : D153BF224160 K2 ﹕6C9E9FA29B00 K10 ﹕B59BC5C0A906 K3 ﹕77B85A900736 K11 ﹕137AE7E40698 K4 ﹕2EECF25D0A80 K12 ﹕B975F459124B K5 ﹕FE6D1E506059 K13 ﹕D447ED16D028 K6 ﹕6EA71923B00C K14 ﹕D3D335003D64 K7 ﹕4F9C3FA035A2 K15 ﹕8D9BE7A8A8B0 K8 ﹕EFA8DA2C0A27 K16 ﹕EBA71A836069

(34)

圖 8-2 :3 - DES 測試結果

原始輸入資料 ﹕1234567887654321 Key1 ﹕2AC4E5F6EB6FAC Key2 ﹕ED434F5AFF5E5C Key3 ﹕AB3215EFD453D6 加密之後的密文 ﹕7273C88F553CF757

(35)
(36)

九、結論

心得感想:

莊啟新的心得感想: 自從大二的時候,上了數位電路導論這一門課,就使我對於硬 體方面產生莫大的興趣,而後又陸陸續續上了許多有關於硬體方面 的課程,接觸到了 VHDL 硬體描述語言,所以就決定在大學中最 重要的畢業專題要做有關於硬體方面的題目。於是就接受了『3 - DES 加解密電路 by PCI 介面』這個題目。 剛開始的時候對於所謂的 DES 是什麼東西都完全搞不懂,經 過助教的幫助,提供了許多的資料給我們參考,從最基本的 DES 開 始學習一直到最後的 WinDriver,每一個部分都有其專業的地方,需 要閱讀許多 paper 才能從其中學習到其資料流是如何的傳送,而且 對於 WinDriver 這個部分更是全新的嚐試,必須要了解其操作介面中 的 I/O,Memory 部分對應到 AMCC - S5920 的哪一個 region,才能正 確的測試我們所連接電路是否能夠正常的執行。 而做這個專題雖然我和另一位同學沒有作工作的分配,但是因 為是二個人合作這個題目所以兩人都不會偷懶摸魚,反而是二個人 一起討論每一個細節,通力合作完成這個題目。而在此我對於助教 的認真及專業也非常的佩服,在我們做專題的這一段時間給了我們 非常大的幫助。 經過這一次製作畢業專題這個難忘的經驗,使我常常進出實驗 室,每一次在學校裡呆到很晚時,實驗室裡還是有許多助教在裡面 讀書、找資料的態度,使我覺得進入研究所就讀,一定能夠學到更 多東西,面對更多挑戰。

(37)

袁隆宇的心得感想: 當老師把我們集中在教室準備要讓我們選專題的時候,心理其 實很緊張,因為終於要考驗我們在過去三年裡,得到了什麼知識, 而最重要的是能不能學以致用。綜觀過去所修習的課程,包括軟硬 體兩方面的基礎理論及應用課程,而因為導師陳德生老師是教導我 們硬體的緣故,所以接觸硬體的機會較多 ; 再加上各個硬體課程老 師上課生動易懂,又常有機會實做的關係,使得學生我對硬體方面 的興趣較多一點,但又想磨練自己軟體方面的功力,所以選擇了這 個題目 “DES 加解密電路 by PCI 介面”。 其實對我來說這是一個很陌生的領域,因為以往都只聽說過, 但卻沒有很深的了解。所以一開始的功課就是讀DES、PCI、AMCC S5920 等的相關 Paper,以真正了解整個專題的運作流程,在這方面 比較沒有重大的困難,時序圖算是比較複雜的部分,但經過助教的 指導之後,再多看幾次,就能熟悉其傳輸方式。 再來的困難,就是程式的部分,我們必須以以往學習的僅有的 VHDL 基礎語法及結構來了解整個資料經過電路傳輸運作的流程, 而PCI、AMCC S5920、DES 電路之間的溝通也必須透過 VHDL 來 實做,為了了解這部分我們頻頻找助教請教,才能解決問題,而 MaxPlus 的操作只是久沒使用,有點生疏,但過一段時間就可以操 作得恨順暢了。 而最後要把整個電路接通測試的時候,也因為介面卡、電線接 觸不良等等的問題也搞了很久,常常需要從頭再接一次才會work, 但是當最後用WinDriver 測試成功之後,真的很高興,終於,有了 成果,有了代價。 這次專題製作不僅可以增進自己的專業知識技能,也能培養自 己在面對一個問題時,規劃組織的能力,先真正了解問題,再想出 一套可行的計劃來解決問題 ; 還可以藉此學習如何妥善安排自己 的時間,面對著研究所考試、專題、課業等等的壓力,怎麼分配才 能得到最佳解 ; 而團隊合作的重要,如何溝通不同的想法,整合成 統一的觀念等等,都是在製作這個專題時無形的附加價值。我想這 些訓練對於往後不管做任何事都有很大的幫助。

(38)

十、參考資料:

1. Tom Shanley / Don Anderson,”PCI System

Architecture”( PCI 系統架構)

,羅崑崙 / 朱習悅 譯

2.

http://www.umc.com/chinese/index.asp

3.

http://www.sinter.com.tw/Jungo/index.htm

4.

http://www.costronic.com/

5. 賴溪松,韓亮,張真誠,”近代密碼學及其應用”

6. 林傳生,”使用 VHDL 數位電路設計”

7. 盧毅,”VHDL 與數位電路設計”

(39)

十一、附錄(圖表)

圖 2-1 ﹕DES 整體流程圖

輸入 初始排列 L0 + f L1=R0 R0 R1=L0 ♁ f(R0,K1) R2=L1 ♁ f(R1,K2) L2=R1 L15=R14 R15=L14 ♁ f(R14,K15) R16=L15 ♁ f(R15,K16) L16=R15 輸出 終結排列 + + + f f f 1,2,3, ... 64 1,2,3, ... 32 1,2,3, ... 32 1,2,3, ... 64 K1 K2 Kn K16

(40)

圖 2-2 ﹕子金匙的產生

母金匙輸入 金匙排列A C0 D0 C1 D1 Cn Dn C16 D16 金匙排列B 金匙排列B 金匙排列B 左旋 1 左旋 1 左旋 n 左旋 n 左旋 16 左旋 16 1,2,3, ... 64 1,2,3, ... 28 1,2,3, ... 28 K1 Kn K16

(41)
(42)

表 2-1 ﹕初始排列

(43)

表 2-3 ﹕金匙排列 A

(44)

表 2-5 ﹕左旋函數

回數 左旋位數 回數 左旋位數 1 1 9 1 2 1 10 2 3 2 11 2 4 2 12 2 5 2 13 2 6 2 14 2 7 2 15 2 8 2 16 1

表 2-6 ﹕擴增排列 E 表 2-7 ﹕縮減排列 F

(45)

表 2-8 ﹕替換盒(S-Boxes)函數

行 列 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 替換盒 0 1 2 3 14 0 4 15 4 15 1 12 13 7 14 8 1 4 8 2 2 14 13 4 15 2 6 9 11 13 2 1 8 1 11 7 3 10 15 5 10 6 12 11 6 12 9 3 12 11 7 14 5 9 3 10 9 5 10 0 0 3 5 6 7 8 0 13 S1 0 1 2 3 15 3 0 13 1 13 14 8 8 4 7 10 14 7 11 1 6 15 10 3 11 2 4 15 3 8 13 4 4 14 1 2 9 12 5 11 7 0 8 6 2 1 12 7 13 10 6 12 12 6 9 0 0 9 3 5 5 11 2 14 10 5 15 9 S2 0 1 2 3 10 13 13 1 0 7 6 10 9 0 4 13 14 9 9 0 6 3 8 6 3 4 15 9 15 6 3 8 5 10 0 7 1 2 11 4 13 8 1 15 12 5 2 14 7 14 12 3 11 12 5 11 4 11 10 5 2 15 14 2 8 1 7 12 S3 0 1 2 3 7 13 10 3 13 8 6 15 14 11 9 0 3 5 0 6 0 6 12 10 6 15 11 1 9 0 7 13 10 3 13 8 1 4 15 9 2 7 1 4 8 2 3 5 5 12 14 11 11 1 5 12 12 10 2 7 4 14 8 2 15 9 4 14 S4 0 1 2 3 2 14 4 11 12 11 2 8 4 2 1 12 1 12 11 7 7 4 10 1 10 7 13 14 11 13 7 2 6 1 8 13 8 5 15 6 5 0 9 15 3 15 12 0 15 10 5 9 13 3 6 10 0 9 3 4 14 8 0 5 9 6 14 3 S5 0 1 2 3 12 10 9 4 1 15 14 3 10 4 15 2 15 2 5 12 9 7 2 9 2 12 8 5 6 9 12 15 8 5 3 10 0 6 7 11 12 1 0 14 3 13 4 1 4 14 10 7 14 0 1 6 7 11 13 0 5 3 11 8 11 8 6 13 S6 0 1 2 3 4 13 1 6 11 0 4 11 2 11 11 13 14 7 13 8 15 4 12 1 0 9 3 4 8 1 7 10 13 10 14 7 3 14 10 9 12 3 15 5 9 5 6 0 7 12 8 15 5 2 0 14 10 15 5 2 6 8 9 3 1 6 2 12 S7 0 1 2 3 13 1 7 2 2 15 11 1 8 13 4 14 4 8 1 7 6 10 9 4 15 3 12 10 11 7 14 8 1 4 2 13 10 12 0 15 9 5 6 12 3 6 10 9 14 11 13 0 5 0 15 3 0 14 3 5 12 9 5 6 7 2 8 11 S8

(46)

圖 3-1 ﹕PCI 系統之方塊架構圖

圖 3-2 ﹕BURST 傳輸格式

表 3-1 ﹕控制 PCI 傳輸之訊號

訊號 Master Target 說明

FRAME# 輸入/輸出 輸出

(Cycle Frame)是由目前的 initiator 驅動, 它表示著交易的開始與期間。Master 為了確

定是否取得bus 擁有權,它會在 PCI CLK 上

升邊緣時取樣到FRAME#和 IRDY#都反驅

動到高態,且GNT#被驅動到低態。當

(47)

FRAME#會被反驅到高態。

TRDY# 輸入 輸出

(Target Ready)是由目前所定址的 target 驅

動。若target 準備完成目前的資料傳輸時, 它就會被驅動到低態;在同一個PCI CLK 的 上升邊緣,TRDY#和 IRDY#都被驅動到低態 的話,則此資料階段就完成了。在讀取期間, TRDY#被驅動表示 target 正驅動有效的資 料到資料匯流排上。在寫入期間, TRDY# 被驅動表示target 正接收來自 master 的資 料。 IRDY# 輸入/輸出 輸入

(Initiator ready)是由目前的 bus master 驅

動。在讀取期間,IRDY#被驅動表示 initiator

準備接收從目前所定址的target 傳來的資料

。在寫入期間,IRDY#被驅動表示 initiator 正

驅動有效的資料到資料匯流排上。

STOP# 輸入 輸出 Target 驅動 STOP#到低態,表示他希望

initiator 停止目前正在進行的交易。

DEVSEL# 輸入 輸出

(Device Select)若 master 起始一個傳輸,

且在6 個 CLK 週期內,未偵測到 DEVSEL# 被驅動到低態的話,就必須停止交易。 LOCK# 輸入/輸出 輸入 為在一個單元(atomic)交易序列期間(例如, 在讀取/修改/寫入操作期間),initiator 用來鎖 定(lock)目前所定址的 target。 GNT# 輸入 輸出

(Grant)在 PCI 環境下,若有另一個 master 仍控制著匯流排的時候,就可能進行匯流排 仲裁,而仲裁器決定要把控制權給請求的 master 時,它就會驅動 GNT#線給此 master (GNT#被驅動到低態)。

PERR# 輸入/輸出 輸出

(Parity Error)資料同位錯誤,在 PCI 裝置 偵測與報告同位錯誤是必要的。若在寫入資

(48)

話,則target 會驅動 PERR#到低態然後,才 可繼續交易,或驅動STOP#到低態,提早終 止交易。在burst 寫入期間,initiator 負責監 控PERR#訊號,以確保每一資料項被寫入 target 的過程中,沒有被損壞。若在讀取資料 階段期間,PCI initiator 偵測到資料同位錯誤 的話,initiator 必須要把 PERR#驅動到低 態。 SERR# 輸入/輸出 輸出

(System Error)系統錯誤,可由任意的 PCI 裝置發出,以報告位址同位錯誤、在特殊週 期期間內的資料同位錯誤、及其他非同位的 重大錯誤。

數據

圖 8-2 :3 - DES 測試結果  原始輸入資料  ﹕1234567887654321  Key1  ﹕2AC4E5F6EB6FAC  Key2  ﹕ED434F5AFF5E5C  Key3  ﹕AB3215EFD453D6  加密之後的密文  ﹕7273C88F553CF757

圖 8-2 :

3 - DES 測試結果 原始輸入資料 ﹕1234567887654321 Key1 ﹕2AC4E5F6EB6FAC Key2 ﹕ED434F5AFF5E5C Key3 ﹕AB3215EFD453D6 加密之後的密文 ﹕7273C88F553CF757 p.34
圖 2-2  ﹕子金匙的產生  母金匙輸入 金匙排列 A C 0 D 0 C 1 D 1 Cn Dn C 16 D 16 金匙排列B金匙排列B 金匙排列B左旋 1左旋 1左旋 n 左旋 n左旋 16左旋 161,2,3,...641,2,3,...281,2,3,...28 K 1 KnK16

圖 2-2

﹕子金匙的產生 母金匙輸入 金匙排列 A C 0 D 0 C 1 D 1 Cn Dn C 16 D 16 金匙排列B金匙排列B 金匙排列B左旋 1左旋 1左旋 n 左旋 n左旋 16左旋 161,2,3,...641,2,3,...281,2,3,...28 K 1 KnK16 p.40
圖 2-3  ﹕f(R,K)函數之計算過程

圖 2-3

﹕f(R,K)函數之計算過程 p.41
表 2-2  ﹕終結排列

表 2-2

﹕終結排列 p.42
表 2-1  ﹕初始排列

表 2-1

﹕初始排列 p.42
表 2-4  ﹕金匙排列 B

表 2-4

﹕金匙排列 B p.43
表 2-3  ﹕金匙排列 A

表 2-3

﹕金匙排列 A p.43
表 2-8  ﹕替換盒(S-Boxes)函數  行  列  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 替換盒 0  1  2  3  14 0 4 15  4  15 1 12  137148 1 4 8 2  2  14 13 4  15269 11 1321 81 117 3 10155 1061211 6 1293 1211714 593 10 9 5  10 0  0 3 5 6  7 8 0  13  S1  0  1  2  3  15 3 0 13  1  1

表 2-8

﹕替換盒(S-Boxes)函數 行 列 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 替換盒 0 1 2 3 14 0 4 15 4 15 1 12 137148 1 4 8 2 2 14 13 4 15269 11 1321 81 117 3 10155 1061211 6 1293 1211714 593 10 9 5 10 0 0 3 5 6 7 8 0 13 S1 0 1 2 3 15 3 0 13 1 1 p.45
圖 3-1  ﹕PCI 系統之方塊架構圖

圖 3-1

﹕PCI 系統之方塊架構圖 p.46

參考文獻

相關主題 :