• 沒有找到結果。

系統架構簡介

在文檔中 USB介面之加解密卡製作 (頁 11-0)

系統架構

大致上我們將整個計劃由 USB 發展板和 PC 之間切為兩部分,一 部分是 DES 硬體電路的發展加上 USB 韌體的撰寫,另一部份是軟體部 份,由應用程式和趨動程式所架構。

硬體電路架構

和 busy 的訊號,它需要與 USB 的 8051 送出的 rd、start 訊號線以 handshaking 模式做資料傳輸,而輸出端的序列傳輸一樣也是以一條 rd and start 與 USB 做 handshaking 的傳輸。而二塊 RAM 其大小為 64 位元組,儲存要加/解密的資料和加/解密完的資料。

主要是 DES 的模組,詳細的 DES 架構圖如下圖:

圖 3.2 DES 架構圖

由控制電路去控制 DES 所需完成的 16 個 round,與 triple DES 裡 DES 所需跑的次數,以及 KEY 的載入。中間所繪的 Iteration Round block 是指 DES 必須完成的 16 回合,而其中的一個回合請看下圖:

圖 3.3 DES 流程圖

後面我們會對 DES 做更進一步的介紹,請自行參閱。

軟體架構

這部份包含兩個部份,其一為 WinDriver 與 Application,而中 間的的關係架構圖如下:

圖 3.4 軟體關係架構圖

我們的 AP 是架構在 WinDriver 的 Library 上,AP 呼叫 Library 中 的 function , 而 Library 再 透 過 Kernel Mode 中 的 WinDriver-Kernel 來存取我們的 Hardware 資源,大致上就如圖中所 示。

USB 發展板部份

在 I/O 部份,由於我們是使用 cypress CY7C64613 128pin FX USB 的晶片,其中包含 8051 microcontroller 與 PA,PB,PC 與 PD 四 組 I/O Port。我們利用 PA、PD 做為資料傳輸的 databus,PC 傳送控 制訊號、指令、與 handshaking 訊號。

在 USB 功能上,我們一共使用了 3 個 bulk endpoint 來完成我們 系統所需的功能,其中包含 2 個 bulk input endpoint 和 1 個 bulk output endpoint,當然還包含 0 endpoint (control)。在 input endpoint 中設定為加密的資料傳輸,而 output endpoint 裡包含從 DES 電路讀取加/解密完的資料。

Driver 的部份

我們使用的是 Jungo 公司出品的 WinDriver 來撰寫我們的 USB driver,一開始我們會先利用 WinDriver 中的 Driver Wizard 來偵測 我們的 USB device(如圖 3.5)。

圖 3.5 Driver Wizard

找到我們的 USB device 時,再針對它產生 INF 檔,然後當 Windows 發現新硬體時以產生的 INF 檔做安裝,安裝完後,按圖二中紅色橢圓 形圈起來的按鈕,就可以針對這個 Device 產生它的一些基本 Function code 及一個簡單的範例程式。

圖 3.6 Generate Driver Code

接下來就是利用 WinDriver 所產生的一些基本 Function(像是傳 data 或是收 data),針對你的應用以 Win32 compiler(像是 BCB、VC)

來寫一個應用程式,讓 User 透過應用程式來使用我們的硬體做 file 的加/解密動作。

我們的 Driver 最主要是用 WinDriver 對我們 USB 所開出來的 5 個 endpoint 所產生的五個 pipe function code:

A. USB_LocateAndOpenDevice( ) B. USB_WritePipe02( )

C. USB_WritePipe03( ) D. USB_ReadPipe82( )

A function- 是 用 來 找 到 我 們 USB device 並 且 取 USB device 的 handle。

B function-是用來對 Pipe02 做寫入的動作,Pipe02 是用來做加密的管 道。

C function-是用來對 Pipe03 做寫入的動作,Pipe03 是用來做解密的管 道。

D function-是用來做讀資料的動作,不管是加密後的資料或是解密後 的資料。

四. 產品應用

我們做出來的產品目前只是個雛型,而我們的目標是希望到時能 下線實做晶片,並且包裝成和鑰匙一樣大小,如此一來攜帶方便,做 到保密的機動性,不管身在何處都可方便的使用。

在這裡針對我們所寫的應用加以介紹,而使用者可利用我們的 API 自行開發出不同的應用:

圖 4.1 產品操作介面

上圖就是我們應用程式的操作介面,首先必須先開啟我們的 USB device,當你按下按鈕”來源”時,會出現一個視窗讓你去瀏覽、選 擇你硬碟裡的檔案,你所選到的檔案路徑會放到”來源”下面的空白 欄位,而按下按鈕”目的”時,你所選到的檔案路徑會放到”目的”

下面的空白欄位,選好兩個欄位後,按下”加密”按鈕,就會把”來 源”欄位裡的檔案,透過我們的 USB device 加密後,存到”目的”

欄位下的檔案,若是按下”解密”的按鈕,那就是把”來源”欄位裡 的檔案,透過我們 USB device 做解密存到”目的”欄位下的檔案。

之後我們可以比對原始檔案與解密後的檔案是否相同,結束之後要記 得將我們的 USB device 關閉。

USB device 操作範例

圖 4.2 選擇來源檔與目的檔

圖 4.3 加密與加密時產生的訊息

圖 4.4 選擇要解密之來源檔與解密後之目的檔

圖 4.5 解密與解密時產生的訊息

圖 4.6 比對檔案

圖 4.7 關閉裝置

而在下面的這張圖中共有三個視窗,其表示的意義為:第一個視 窗為加密的明文,而第二個視窗表示為加密的密文,也是解密的明 文,第三個視窗則為解密的密文。所以我們可以看到第一個文章和最 後一篇文章的內容相同,而且其它人無法從密文得到任何可用的訊 息,這個就是我們所做的一個示範,當然 DES 並不只有這個應用,使 用者也可自行開發。

圖 4.8 明/密文檔比較

五、VHDL介紹

VHDL的發展

在 1970 年代至 1980 年代期間,美國國防部,為方便管理有關武 器承包商的電子電路技術文件,使其遵循統一的設計描述介面,以便 在將來若有新技術推出後,仍能重複再使用原設計,因而發展了名為 VHSIC (Very High Speed Integrated Circuit)的計劃。可惜的是,

由於當時的文件格式,僅能以 gate level 的方式描述電路,一旦面 對數萬邏輯閘以上的設計時,那是件複雜且困難的事情。於是,一種 改良的電路描述方式—“VHSIC 硬體描述語言”(VHSIC Hardware Description Language)便在 1982 年正式誕生;這也就是習稱的 VHDL。其後,並於 1986 被 「國際電機電子工程協會」 (International Electrical& Electronic Engineering, IEEE)收納為其標準之一;

文件編號為 IEEE standard 1076。

VHDL 電路設計語言規範的目的,即是要提供一個高階且快速的設 計工具,含蓋了電路的描述,電路之合成與電路之模擬等三大電路設 計工作。由於 VHDL 電路設計語言所能函蓋的範圍相當廣,它能適應 於各種不同階層的設計工程師的需求。從 ASIC 的設計到 PCB 系統的 設計,VHDL 電路描述語言,均能派上用場。所以 VHDL 電路設計語言

實為硬體設計工程師之必備工具。然而類比電路( Analog Circuit) 與混合訊號(mixed)電路的規範,亦是 VHDL 電路描述語言所欲涵蓋 的,然而這些部份的 VHDL 規範之標準仍在制定中。

成的效果。

順序性敘述(sequential statements):

if a = b then eq <= ‘1’;

else

eq <= ‘0’;

end if;

共時行敘述(concurrent statements):

eq<=’1’WHEN a=b ELSE ‘0’;

布林方程式(booleen equaton):

eq <= (a(0) XOR b(0) NOR (a(1) XOR b(1));

(4) 可流通性或可攜性( Portability ):

因為 VHDL 是一種工業界標準的電路設計語言,它所提供的可

攜性能力,可以使你的設計可以利用不同編譯軟體來編譯,可以利用 不同模擬器來模擬以及可以適用於任何種類的邏輯元件與半導體製 程技術。

VHDL重要詞彙

單體( ENTITY):

單體是一個設計中最基本的一部份,也是不可缺少的一部份,在 單體的這一部分中,通常描述電路設計中的輸出、入訊號的宣告。而 ENTITY 也是 VHDL 的保留字。

架構(ARCHITECTURE ):

架構是描述電路行為特性的主要部份。如以電路圖的設計方法論 之,架構部分相當於電路圖設計中的 schematics,用來描述各個元件 間的互相連結情形。而 VHDL 語言中的描述輸出入埠的單體就相當 於電路圖中的 symbols。

套件( PACKAGE ):

在 VHDL 語言的設計中,可以將一些次程式(subprograms)、程序

( procedure )及一些常用的資料型態,放在一個套件中,則此套件即形 成了一個工具箱,如果在設計中有應用到套件中的程式時,只要將此

資料型態( DATA TYPES ): sequential statements。

構形( CONFIGURATIONS ):

在 VHDL 語言中,可以容許一個單體電路內能有一個以上的構成情 形。而程式設計者可以使用 CONFIGURATION 指令來說明該單體電 路的構造情形。

六、USB 簡介

USB 的傳輸類型

(1) 控制型傳輸(Control Transfer)

屬於雙向傳輸,用來支援介於主機與裝置之間的配置,命令或狀 態的通訊。控制型傳輸包含了三種的控制傳輸型態:控制讀取、控制 寫入以及無資料控制。

(2) 中斷型傳輸(Interrupt Transfer)

屬於單向傳輸並且僅從裝置輸入到 PC 主機,作 IN 的傳送模式,

(但在規格 1.1 及 2.0 中,已定為雙向傳輸,增加了 OUT 的傳送模式) 。 而由於 USB 不支援硬體的中斷,所以必須靠 PC 主機以週期性的方式 加以輪詢,以便知道是否有裝置需要傳送資料給 PC。

(3) 巨量型傳輸(Bulk Transfer)

屬於單向或雙向的傳輸,顧名思意,這類型的傳輸是用來傳送大 量的資料。雖然這些大量的資料須準確的傳輸,但是卻並無傳輸速度 上的限制(即沒有固定的傳輸速率) 。

(4) 即時型傳輸(Isochronous Transfer)

可以是單向或雙向的傳輸。此種傳輸需要維持一定的傳輸速度,

且可以默許錯誤的發生。它採用了事先與 PC 協定好的固定頻寬,以 確保發送端與接收端的速度互相吻合。

為何選用 USB 傳輸介面

USB 為 Universal Series Bus(萬用串列匯流埠)的縮寫,是一種 全球通用的資訊產品串列式標準界面,目前主要用於 PC 與其周邊設

USB 目前版本標準定義了傳輸速度有 480 Mbps(高速,High Speed)、

12 Mbps(全速,Full Speed)及 1.5Mbps(低速,Low Speed)三種,標準 USB 線纜組(A to B Cable Assembly)的 Type A 連接器固定連接 Host

或複雜設定安裝的狀態下,隨時安插使用各式的週邊設備。

總結來說,USB 之便利性有:

(1) 即插即用(Plug-and-Play)的特性並具自動偵測的功能,所以無需考 慮到系統資源是否有衝突的情況。

(2) 可擴充至 127 個外部裝置,足以因應各種類型的裝置同時連接的 困擾。

(3) 熱插拔(Hot Attach & Detch) ,也就是週邊裝置的插入與拔取無須 再關閉電源,節省了關機再裝設的時間。

(4) 安裝簡易,無需拆卸 PC 機殼,使用更為簡易。

(5) 高速的 12Mbps 傳送速度,以能滿足大部分週邊裝置的傳輸使用。

七. DES 加/解密介紹

DES 演算法

DES(data encryption standard)說明:

DES(Data Encryption Standard ) 是在 1970 年代中期由美國 IBM 公司發展出來的,且被美國國家標準局公佈為資料加密標準的一種區 塊加密法(Block Cipher)。直到今日,儘管 DES 己歷經歷了二三十個 年頭,但在已知的文獻中還是無法完全地,徹底地把 DES 給破解掉。 其中有個位元是用來做錯誤更正(Error Correction),所以 64 位元 中真是金匙效用的只有 56 位元。而 DES 加密與解密所用的演算法除 了子金匙的順序不同之外,其他的部份則是完全相同的。

DES 的細節說明:

圖 7.1 是 DES 全部 16 個回合(Round)的加/解密架構圖,其最上 方的 64 位元輸入區塊資料,可能是明文,也可能是密文,端視使用 者要做加密或解密而定。而加密與解密的不同處,只在於圖 7.1 最右 邊的 16 個子金匙之使用順序不同,加密之子金匙順序為 K1 K2 K3 K4……K16,而解密之子金匙正好相反,為 K16 K15 K14……K1。

首先,加/解密輸入區塊依表 7.2 之表之重排次序,進行初始排 列動作,攪亂資料之原來順序後,再分為 L0 與 R0 兩個 32 位元的區 塊。接著,R0 與第一個子金匙 K1 一同經過 f 函數運算,而得到的 32

首先,加/解密輸入區塊依表 7.2 之表之重排次序,進行初始排 列動作,攪亂資料之原來順序後,再分為 L0 與 R0 兩個 32 位元的區 塊。接著,R0 與第一個子金匙 K1 一同經過 f 函數運算,而得到的 32

在文檔中 USB介面之加解密卡製作 (頁 11-0)

相關文件