• 沒有找到結果。

影像檔之加解密技術整合以供資訊安全之應用

N/A
N/A
Protected

Academic year: 2021

Share "影像檔之加解密技術整合以供資訊安全之應用"

Copied!
39
0
0

加載中.... (立即查看全文)

全文

(1)

國立聯合大學電資學院

金腦獎參賽作品

主題名稱:影像檔之加解密技術整合以供資訊安

全之應用

指導教授:陳榮堅 教授

參賽者:王筑霆、邱宇翼、吳百銓

(2)

第一章

概論 ---4

第一節

研究背景 ---4

第二節

研究動機與目的 ---4

第三節

軟體介紹 ---5

第二章

研究流程 ---6

第一節

整合(發送方) ---6

第一節

整合(接收方) ---7

第三章

文獻探討 ---8

第一節

AES 演算法---8

第二節

DES 演算法--- 14

第三節

雜湊函數 --- 15

第四節

RSA Alogrthm--- 16

第五節

數位簽章介紹 --- 20

第六節

BMP

檔頭資訊介紹--- 21

第七節

JPG 檔頭資訊介紹 --- 23

第四章

研究內容 --- 26

第一節

傳送者

--- 26

第二節

接受者

--- 31

第五章

結論 --- 37

參考文獻 --- 38

(3)

圖 1.1 臺灣地區寬頻使用人數成長率 ...4

圖 2.1 整合發送方的流程圖 ...6

圖 2.2 整合發送方的流程圖 ...7

圖 3.1 AES 加密演算法之流程圖 ...8

圖 3.2 非線性的取代運算得到新的項目...9

圖 3.3 列位移函數的位移值 ...10

圖 3.4 行混合函數的行混合功能 ...10

圖 3.5 回合金鑰加法運算函數的互斥運算... 11

圖 3.6 AES 解密演算法之流程圖 ...12

圖 3.7 列位移函數的位移值 ...12

圖 3.8 RSA 加密演算法流程圖 ...17

圖 3.9 RSA 解密演算法流程圖 ...18

圖 3.10 RSA 簽章流程圖...19

圖 3.11 BMP 結構概觀...21

圖 3.12 JPG 標頭檔圖模式 ...23

圖 4.1 使用者介面...26

圖 4.2 開啟圖片(左邊為檔案資訊)...26

圖 4.3 選擇雜湊函數...27

圖 4.4 將圖片資料段產生訊息摘要 ...27

圖 4.5 選擇訊息摘要加密 ...28

圖 4.6 產生數位簽章...28

圖 4.7 選擇 Session Key 加密 ...29

圖 4.8 產生 Session Key 密文 ...29

圖 4.9 AES 介面 ...30

圖 4.10 已加密 AES 的檔案 ...30

圖 4.11 密文檔 ...31

圖 4.12 TXT 檔 ...31

圖 4.13 Session Key 密文解密 ...32

圖 4.14 進行 AES 解密介面 ...32

圖 4.15 得到未加密之圖形 ...33

圖 4.16 未加密圖檔訊息摘要 ...33

圖 4.17 將數位簽章進行解密 ...34

圖 4.18 驗證檔案是否正確 ...34

(4)

表 目 錄

圖 3.1 S-BOX ...9

圖 3.2 逆向 S-BOX...13

圖 3.3 檔案資訊內容...22

圖 3.4 圖形描述資訊欄位說明 ...22

圖 3.5 biBitCount 與顏色表 entry 數的關係...23

圖 3.6 各模式顏色表大小係數 ...23

圖 3.7 (a) marker 名稱與說明 ...24

圖 3.8 (b) SOF marker 的適用情形 ...25

(5)

第一章 概論

第一節

研究背景

根據 2010 年臺灣寬頻網路使用狀況調查,本研究以 93 年 1 月為基數,計 算至 99 年止,網路使用成長率達 38.3%,顯示出台灣使用網路的人口逐年增加, 如圖 1 所示。 圖 1.1 臺灣地區寬頻使用人數成長率 (資料來源:財團法人台安網路資訊中心-2010 年臺灣寬頻網路使用狀況調查) 隨著網路的普及化與許多的電子商務的崛起,如何有效防止網路威脅,需比 以往更具有組織性、整合性與效率。目前資訊安全的技術仍維持各自戰的狀態, 只針對資訊進行部份而非全面的保護。所以我們必須建立一個比網路詐騙更健全 的產業生態系統,以保障全球經濟發展所倚賴的資訊能夠無障礙地交流。因此, 資訊安全對人類是極其重要的。

第二節

研究動機與目的

網際網路資訊發達的時代下,資料互通是很常見的事,例如:影像、文字、 音訊,但也衍生出許多的網路問題,沒有人知道在傳送過程中,檔案是否被有心 人士竄改。 而為了保證資料不被竄改且能確切的傳達給真正的接受者,將檔案做加密運 算,直到確實的傳送給正確的人,配合解密運算,使用特殊的方法解開,以獲得 所要的檔案。

(6)

本系統利用 AES/DES 做影像檔的加密處理,將已進行加密後的影像檔配合 著 HASH 演算法進行雜湊,所得的雜湊再以 RSA 加密演算,其運算後的值作為 數位簽章來驗證其檔案是否為其加密後的影像檔,以達到全方位的完整保護。

第三節

軟體介紹

C++Builder 6 是一個用於在 Windows 平台上撰寫 C++語言應用程式的快速 化程式開發(RAD,Rapid Application Development)的整合式開發環境(IDE,

Integrated Development Environment)。C++Builder 的開發環境中包含了所見及所

得(WYSIWYG)的圖形化使用者介面(GUI)設計工具,是最早導入簡易的、 真正可以用拖拉方式進行軟體開發的程式設計工具之一。C++Builder 的主要優點 是入門容易,一般的初學者很快便能掌握此工具來完成視窗程式設計且特別強調 與影像處理相關元件的使用。

(7)

第二章 研究流程

第一節

整合(發送方)

步驟 1: 發送方將要傳送給 B 的明文,使用 AES、DES 演算法。 步驟 2: 我們取一組金鑰,當作要加密的鑰匙,產生密文 步驟 3: 因為鑰匙是有是由 A 所產生的,但不能直接在網路上傳送,以免傳送時被取得。 因此 A 必須要使用 B 的公開金鑰加密,以方便接收者 B 自行解密,取得 A 的 Session key。 步驟 4: 我們將明文經由 SHA 演算法,可獲得訊息摘要值。 步驟 5: 訊息摘要值就可以代表明文本身,利用 RSA 加密產生訊息摘要簽章 步驟 6: 將”密文”、”Session Key”、”訊息摘要的簽章”傳送給接收方方便接收者 驗証。 圖 2.1 整合發送方的流程圖

(8)

第二節

整合(接收方)

步驟 1: 接收者 B 無法直接對密文進行解密,因此第一件事情必須先將 Session Key 解 開,而 Session Key 是用 B 的公開金鑰加密的,自然 B 可以用自己的私有金鑰將 Session Key 解開。 步驟 2:

Session Key 是用 B 加解密”密文”的 Key,因此將密文及 Session Key 用於 AES、 DES 演算法解密,即可還原明文,達到解密的目的。 步驟 3: 將輸出的明文使用 SHA 演算法,求得訊息摘要,以便驗證比對。 步驟 4: 訊息摘要的簽章是由發送者 A 的私密金鑰所簽的,B 用 A 的公開金鑰以 RSA 演算 法即可以還原訊息摘要值。 步驟 5: 將步驟 3 及步驟 4 的輸出做比對,以確認簽章是否被正確。 圖 2.2 整合發送方的流程圖

(9)

A E S 開 始 輸 入 值 放 入 狀 態 列 S t a t e = i n ; A d d R o u n d K e y ( s t a t e ,w [ 0 ,N b - 1 ] ) S u b B y te s ( s t a te ) S h if tr o w s ( s t a t e ) M ix C o l u m n s ( s ta te ) A d d R o u n d K e y ( s ta t e ,w [ r o u n d * N b ,( r o u n d + 1 ) * N b - 1 ] ) 變 數 k = 0 ,判 斷 k = N r - 1 ; K + + ; N o Y e s S u b B y t e s ( s ta te ) S h i f t r o w s ( s ta t e ) A d d R o u n d K e y ( s t a t e , w [ N r * N b , ( N r + 1 ) * N b - 1 ] ) 狀 態 列 放 置 輸 出 o u t = S t a t e ; A E S 結 束

第三章 文獻探討

第一節 AES 演算法

AES 加密演算法,包含 SubBytes()、ShiftRows()、MixColumns()及 AddRoundKey()四個函數。其加密演算法過程之整個流程圖為圖 3.1。將輸入陣 列 in[]裡的資料複製到狀態陣列 S[],再將狀態列陣列與子金鑰做 AddRoundKey() 運算。接著執行 Nr 回合的加密編碼:從 0 到 Nr-1 回合,每一回合依序執行 SubBytes()、ShiftRows()、MixColumns()及 AddRoundKey()四個運算。第 Nr 回合 則依序執行 SubBytes()、ShiftRows()及 AddRoundKey()三個運算。 以下介紹 SubBytes()、ShiftRows()、MixColumns()及 AddRoundKey()四個運算函 數。 1、 SubBytes() 位元取代函數,是利用 S-Box(代換盒,見表 3.4)的方式,針對狀態列 S[]中的每 圖 3.1 AES 加密演算法之流程圖

(10)

一個以位元組為單位的項目,分別做非線性的取代運算,且得到新的項目,如圖

3.2 所示。例 S1,1的內容為{53},將 x = 5、y = 3 帶入表 3.4 已得到 S’1,1的內容為

{ed}。新的項目是採用 GF(28)有限場的計算方式,其中每位元的計算方式為:

        0 8

' bb 4 mod8b 5mod8b 6mod8b 7mod8ci

bi i i i i i i y 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 95 a8 7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a d 70 0e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df x f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16 2、 ShiftRows() 列位移函數是將狀態列 S[]中,以每列為單位,做左移旋轉的處理。其運算方式 如下:   c shiftrNN b r c r b i c N S b b      0 4與0 ' , , , mod

其中位移值 shift(1,4)=1; shift(2,4)=2; shift(3,4)=3; 表 3.1 S-BOX S0,0 S1,0 S2,0 S3,0 S0,1 S0,2 S0,3 S1,3 S1,2 S1,1 S2,3 S2,1 S3,2 S2,2 S3,1 S3,3 S’ 0,0 S’ 1,0 S’ 2,0 S’ 3,0 S’ 0,1 S’0,2 S’0,3 S’ 1,3 S’ 1,2 S’ 1,1 S’ 2,3 S’ 2,1 S’ 3,2 S’ 2,2 S’ 3,1 S’3,3 S-Box S’ r,c Sr,c 圖 3.2 非線性的取代運算得到新的項目

(11)

3、 MixColumns() 行混合函數是將狀態陣列 S[]中,以每行為單位,經過一個具有可逆性的不可縮 短多項式 a(x)的運算,來達到行混合的功能如圖 4.4。其 a(x)為:

   

x  03 x3

 

01x2

 

01 x

 

02 aS'

 

xa

 

xS

 

x ,則表示成如下的行混合函數的運算式。 b c c c c c c c c N c S S S S S S S S                                        0 , 02 01 01 03 03 02 01 01 01 03 02 01 01 01 03 02 ' ' ' ' , 3 , 2 , 1 , 0 , 3 , 2 , 1 , 0 4、 AddRoundKey() Sr,0 Sr,1 Sr,2 Sr,3 S’r,0 S’r,1 S’r,2 S’r,3 ShiftRows() S0 ,0 S1 ,0 S2 ,0 S3 ,0 S0,1 S0 ,2 S0,3 S1,3 S1 ,2 S1,1 S2,3 S2,1 S3 ,2 S2 ,2 S3,1 S3,3 S0,0 S1,0 S2,0 S3 ,0 S0 ,1 S0,2 S0,3 S1,3 S1 ,2 S1,1 S2 ,3 S2,1 S3,2 S2,2 S3,1 S3,3 S S’ S’ 0,0 S’ 1,0 S’ 2,0 S’ 3,0 S’ 0,1 S’0,2 S’0,3 S’ 1,3 S’ 1,2 S’ 1,1 S’ 2,3 S’ 2,1 S’ 3,2 S’ 2,2 S’ 3,1 S’3,3 S0,0 S1,0 S2,0 S3,0 S0,1 S0,2 S0,3 S1,3 S1,2 S1,1 S2,3 S2,1 S3,2 S2,2 S3,1 S3,3 S0,c S1,c S2,c S3,c S’ 0,c S’ 1,c S’ 2,c S’ 3,c MixColumns () 圖 3.3 列位移函數的位移值 圖 3.4 行混合函數的行混合功能

(12)

回合金鑰加法運算是將該回合的回合金鑰 W[](32 位元)與狀態列 S[]中某一行 (32 位元)做互斥運算如圖 4.5,其運算方式如下:

AES 解密演算法

AES 解密演算法,其中包含三個逆向函數:InvSubBytes()、InvShiftRows() 及 InvMixColumns()。其解密演算法過程之整個流程圖為圖 3.6。

S'0,c,S'1,c,S'2,c,S'3,c

 

S0,c,S1,c,S2,c,S3,c

WroundNbc

0cNb S’ 0,0 S’ 1,0 S’ 2,0 S’ 3,0 S’ 0,1 S’0,2 S’0,3 S’ 1,3 S’ 1,2 S’ 1,1 S’ 2,3 S’ 2,1 S’ 3,2 S’ 2,2 S’ 3,1 S’3,3 S0,0 S1,0 S2,0 S3,0 S0,1 S0,2 S0,3 S1,3 S1,2 S1,1 S2,3 S2,1 S3,2 S2,2 S3,1 S3,3 S0,c S1,c S2,c S3,c S’ 0,c S’ 1,c S’ 2,c S’ 3,c Wl+1 Wl+2 Wl+3 Wl+c l=round*Nb 圖 3.5 回合金鑰加法運算函數的互斥運算

(13)

Sr,0 Sr,1 Sr,2 Sr,3 S’r,0 S’r,1 S’r,2 S’r,3 InvShiftRows () S0,0 S1,0 S2,0 S3,0 S0,1 S0,2 S0,3 S1,3 S1,2 S1,1 S2,3 S2,1 S3,2 S2,2 S3,1 S3,3 S S’ S0,0 S1,0 S2,0 S3,0 S0,1 S0,2 S0,3 S1,3 S1,1 S1,2 S2,3 S2,1 S3,2 S2,2 S3,1 S3,3 A E S 開 始 輸 入 值 放 入 狀 態 列 S t a t e = i n ; A d d R o u n d K e y ( s t a t e ,w [ 0 , N b - 1 ] ) I n v S u b B y te s ( s t a t e ) I n v S h if t r o w s ( s t a t e ) In v M i x C o l u m n s( s t a t e ) A d d R o u n d K e y ( s t a t e ,w [ r o u n d * N b ,( r o u n d + 1 ) * N b - 1 ] ) 變 K = N r - 1 ;判 斷 k = 1 ; N r - - ; N o Y e s S u b B y te s ( s ta te ) S h if tr o w s ( s t a te ) A d d R o u n d K e y ( s t a t e ,w [ N r * N b ,( N r + 1 ) * N b - 1 ] ) 狀 態 列 放 置 輸 出 o u t = S t a t e ; A E S 結 束 1、 InvShiftRows() 為 ShiftRows()的反函數,是將狀態陣列 S[]的內容「右」移旋轉回來,如圖 3.7 所示。 圖 3.7 列位移函數的位移值 圖 3.6 AES 解密演算法之流程圖

(14)

2、 InvSubBytes()

為 SubBytes()的反函數,是採用 S-BOX 的逆向 S-BOX,使用方式亦相同。如表 3.5 3、 InvMixColumns() 為 MixColumns()的反函數,作法是利用 a(x)的逆向多項式 a-1 (x)其內容如下:

   

x b x

 

d x

 

x

 

e a1  0 3 0 2 09  0 令S'

 

xa1

 

xS

 

x ,則表示成如下的行混 合函數的運算式。 b c c c c c c c c N c S S S S e d b b e d d b e d b e S S S S                                        0 , 0 09 0 0 0 0 09 0 0 0 0 09 09 0 0 0 ' ' ' ' , 3 , 2 , 1 , 0 , 3 , 2 , 1 , 0 y 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb 1 7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb 2 54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e 3 08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25 4 72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92 5 6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84 6 90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06 7 d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b 8 3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73 9 96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e a 47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b b fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4 c 1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f d 60 51 7f a9 19 5 4a 0d 2d e5 7a 9f 93 c9 9c ef e a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61 x f 17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d 表 3.2 逆向 S-BOX

(15)

第二節 DES 演算法

DES 是一種區塊密碼,加密資料的基本單位是 64 位元,加解密使用相同的 演算法與金鑰,金鑰的長度為 56 位元。DES 是基於兩個密碼學的基礎特質:替 代(混淆)、換位(擴散)。DES 由 16 個步驟組成,每個步驟又被稱為一個回合。

Triple DES 相當於是對資料應用三次 DES 加密演算法。由於電腦運算能力 的增強,原版 DES 的密鑰長度變得容易破解;TDES 即是用來提供一種簡單的方 法,透過增加 DES 的密鑰長度來避免類似的攻擊,而不是設計一種全新的區塊密 碼演算法。

區塊密文的運作模式

對稱型的區塊密文加密法每次均針對一整個區塊的資料來做處理。在 Des 與 TDes 的例子裡,區塊的長度是 64 位元。如果明文的長度大於 64 位元,那麼 就必須將明文切成以 64 位元為單位的區塊(必要的話,最後一個區塊則附上足 夠的位元數以湊成 64 位元)。目前最簡單的處理方式為 electronic code book (ECB)模式。在這個模式下,所有的明文每次都是以 64 位元當作處理單位,而 每一個區塊的明文都是使用相同的金鑰來做加密。如此一來,對單一個金鑰來 說,每一個 64 位元區塊的明文都會產生唯一的密文區塊。

串流密文與區塊密文的差異

區塊加密系統(Block Cipher)需等收集一定的資料量才可以做加密的動作。 串流密碼構造簡單,加密快速,在網路傳輸過程中,能做到及時(real time response)的效果,適合用在語音傳輸上,也就是最近流行的 VoIP 技術。區塊密 文相形之下,則比較適合用來做檔案的加密。

TDES 三重資料加密標準

由於 DES 的金鑰長度只有 56 位元,再電腦處理速度越來越快的當下,具有被暴 力法破解的淺在危機。為了加長金鑰的長度,可以將三個 DES 串接使用,即 Triple DES。 TDES 三種型態 (1) K1≠K2≠K3:為 168 位元之 3DES,安全性最佳,但金鑰長度過長。 (2) K1=K3≠K2:為 112 位元之 3DES,金鑰長度適中,並且已經被美國金鑰管 理標準 ANS X9.17 與 ISO 8732 所採用。 (3) K1=K2=K3:為 56 位元之 3DES,不會增加密碼學的強度,唯一好處是與 DES 相容。

(16)

第三節 雜湊函數

One-Way Function 不可逆性

Hash 函數位主要的特色就是 One-Way Function。經過 Hash 運算後,無法用任何 演算法還原成原先輸入的訊息。而 Hash 函數的意義,即為任意長度的訊息輸入 後,經由運算可得一個長度較短且固定長度的輸出運算,我們稱之為 Message Digest(訊息摘要)。

MD5、SHA 介紹

(1)MD5

MD5 雜湊函數是麻省理工學院教授 R. Rivest 設計,源自於更早的 MD4 雜湊函數 加以改良而成,屬於 Hash 函數的一種,也是用來驗證傳送訊息的正確性。輸入 是一個不超過 2^64 個位元長度的訊息,MD5 訊息大小為每個子區塊為 512 位元, 也利用 ICF 壓縮的方式,處理每個子區塊的訊息,MD5 運算後會產生 128 位元的 Digest 訊息摘要。但已有論文發表,MD5 演算法並不安全,再 2004 年山東大學 王小雲教授於國際密碼學會議中發表對 MD5 的第 4、11、14 個區塊做攻擊,即可 短時間內找到碰撞。

(2)SHA

美國國家標準技術局再 1993 年制定了 Secure Hash Algorithm 雜湊函數,1995 年因為 SHA 不安全又制定了 SHA-1,較 MD5 安全。2002 年,美國國家標準技術局 又制訂了三個 SHA-256、SHA-384、SHA-512。2004 年,又加入了 SHA-224 標準。 但隨著時代的進步,SHA-1 被破解是遲早的事,只能期待,還有更安全演算法可 以保護我們的檔案。我們以 SHA-1,SHA-2 家族,加以研究,並以軟體實現。

(17)

第四節 RSA Alogrthm

RSA 演算法是一種非對稱性的加密演算法,是由三位教授 Rivest,Shamir, Adleman 所提出的,並取三人姓氏第一個字做為命名。  p,q 為質數  N 為模數是由 p × q 所組合  mod 為取餘數  GCD(a,b)最大公因數  ψ(n)=(p-1)×(q-1)  加密金鑰 e  解密金鑰 d

(1) RSA 公開金鑰:(N,e)

其中 N,e 是個非負整數,而 e 作公開指數 3≦e≦N-1

(2) RSA 私密金鑰:(N,d)

其中 N,d 也為非負整數,而 d 作為私密的指數 e˙d≡1{ mod ψ(n) }

(3) 選擇 p 與 q 條件

 N = p * q  選擇條件:  p 與 q 的長度不要相差太多,兩者大小都應介於 1075 到 10100 之間。  (p-1) 與 (q-1) 都應該含有一個很大的質因數。  gcd(p-1, g-1) 的值,應該很小。

(4) 選擇 e 與 d 的條件

 (N, e) 為公開鑰匙  (N, d) 為私有鑰匙  選擇因素: e × d ≡ 1 modψ(n)

(18)

 選擇方式:  先選擇 p 與 q,之後再選擇 e,但選擇 e 的條件是必須滿 足與 (p-1)(q-1) 的質數關係。  一般採用先選 e,並固定為 3。

RSA 加密演算法

 輸入:明文 m,0≦m≦N-1,公開金鑰(N,e)  輸出:密文 c,0≦c≦N-1  算式方法  c=me mod(N)  輸出 c 圖 3.8 RSA 加密演算法流程圖

(19)

RSA 解密演算法

 輸入:密文 c,0≦c≦N-1,私密金鑰=(N,d)  輸出:明文 m,0≦m≦N-1  算式方法  m=cd mod(N)  輸出 m 圖 3.9 RSA 解密演算法流程圖

(1) RSA 簽章加解密過程

 加密者 A 先將明文表示 m,取得解密者 B 的公開金鑰(N,e),確認 m 小於 N。  透過式子 c=me mod(N),獲得密文 c。  解密者 B 收到密文 c 之後,要將它解密,只要透過式子 m=cd mod(N)即可獲 得 m。 { 解密者 B 擁有私密金鑰(d,p,q) }

(20)

 A,B 角色可以互換,因為非對稱加密系統,公開與私密鑰匙,是互相對 應相輔相成的。 圖 3.10 RSA 簽章流程圖

RSA 公開與私密金鑰

RSA 解密方式可方為兩種: (1) 輸入 KEY: 傳送者需要送公開金鑰給認證者,認證者再用公開金鑰解密,再去 做資料的認證動作。這是業界比較常用的方法。 (2) 無 KEY: 傳送者內建,公開與私密金鑰,驗證者無須知道公開金鑰,只需要 做認證動作。 在 RSA 中,一組私密金鑰,可以對應出很多組的公開金鑰,驗證者的公 開金鑰,只要跟傳送者的公開金鑰相同,就可以驗證出數位簽章。

(21)

第五節 數位簽章介紹

數位簽章(Digest Signature)可取代傳統的簽名或蓋章,但須確保資料在網 路傳輸過程中未被竄改,且能鑑別傳輸者之身分,數位簽章已廣泛用於電子公 文、電子契約、電子支票、軟體防偽、網路報稅等,數位簽章採用公開金鑰密碼 系統。 相同簽署者不同文件時,產生的數位簽章將不同;相同文件,簽署者時,對 應的數位簽章也會不同。數位簽章的運作是每個機構或使用者各自擁有成對的公 開金鑰與私密金鑰,而簽署者根據自己的私密金鑰製造資料的數位簽章,數位簽 章檢驗容易。數位簽章的產生與檢驗用到單向雜湊函數演算法與簽章演算法。 數位簽章(Digest Signature)對於通訊的雙方(送方與收方)需滿足三項需 求,說明如下: 1. 接收方能對傳送方所簽署的訊息進行驗證,以確實驗證傳送源的真實性。 2. 對於包含接收方在內的任何一個人皆沒有辦法傳送方所產生的簽署文件 進行竄改。 3. 一旦雙方在通訊上產生簽署訊息上的爭議時,可由第三者的公證人解決簽 署合法性的爭議。 數位簽章應用於網際網路時代下,可以達到密碼系統所強調的多樣性功能, 諸如完整性,鑑定性,不可否認性,說明如下: 1. 完整性(Integrity):被簽章過的文件,要確實證文件內的資料是不可以 被更動。如果我們驗證數位簽章正確,就可以保證在傳送過程中,文件並沒 有被有心人士竄改,即稱被簽章文件的完整性。 2. 鑑定性(Authentication):再公開與私密鑰匙系統下,簽章過的文件可以 使用公開金鑰驗證是否竄改。即時驗證傳送者身分的真實性。 3. 不可否認性(Non-repudiation):數位簽章的使用是以簽章者的祕密金鑰 簽章文件,只有相對應的公開金鑰可以對文件做驗證比對。當驗證成功時表 示簽章者卻時簽章過此文件。即不可否認性。

(22)

圖形 描述資訊 顏色表 圖形資料 區塊 檔案資訊 除此之外對於簽章者本人之外,沒有任何人可以知道簽章者的祕密金鑰,想 要偽造簽章者的身分,更是難上加難,因此簽章者要保管好秘密金鑰,不可讓其 他人得知。

第六節 BMP 檔頭資訊介紹

BMP 檔是 BitMap 的縮寫,是專為 Windows 下的繪圖軟體所設計的儲存格 式,在 1991 年與 Windows 3.0 版同時發表。 BMP 的特色歸納成以下幾點: 1. BMP 檔可儲存的色彩模式有單色、調色盤(4、16 與 256 色)、24-bit True-Color 三種。 2. BMP 儲存圖點資料的順序是先列後行,由下而上,不是一般圖檔的由上而 下。 3. 單色模式的 BMP 檔也附有顏色表資料。 4. 儲存圖點資料有不壓縮與壓縮兩種選擇。 5. BMP 檔的內部結構可分成四個單元,如下圖: 圖 3.11 BMP 結構概觀

(23)

在 Microsoft Windows Software Development Kit Volume2(簡稱 SDK Vol.2) 中明確定義了 BMP file header 的資料結構:

Offset (byte) Field 說明

0,1 bfType BMP 檔的識別碼,必須是”BM” 2~5 bfSize 此檔案的大小,以 byte 為單位 6,7 8,9 bfReserved1 bfReserved2 保留,必須填滿”0”

0A~0D bfOffBits 圖型資料區塊的位移值,以 byte 為單位

圖形描述資訊紀錄了圖面寬、高、顏色總數與壓縮方式等資訊,SDK V.2 中 定義圖形描述資訊的資料型態:

顏色表緊接在圖形描述資訊之後,所記錄的顏色總數(entry 數)依 biBitCount 的內值而定,顏色總數=2^ biBitCount,下面是 biBitCount 與顏色表包含 entry 數 的對照表:

Offset (byte) Demical Field 功能

0E~11 14~17 biSize 圖形描述資訊區塊的大小,通常為

28h bytes

12~15 18~21 biWidth 圖面寬度,以 pixel 為單位

16~19 22~25 biHeight 圖面長度,以 pixel 為單位

1A~1B 26~27 biPlanes Image plane 的總數,此欄必設定為 1 1C~1D 28~29 biBitCount 紀錄 1 圖點(pixel)資料所需的 bit 數

(BitsPerPixel),必須 1、4、8 及 24 其 中之一 1E~21 30~33 biCompression 圖形資料壓縮代號,目前只有 0:不壓縮 1:以 8bits 為單位壓縮 2:以 4bits 為單位壓縮 22~25 34~37 biSizeImage 圖形資料的大小,以 byte 為單位 26~29 38~41 biXPelsPerMeter 水平 1 米有幾個圖點 2A~2D 42~445 biYPelsPerMeter 垂直 1 米有幾個圖點 2E~31 16~49 biClrUsed 紀錄此圖形所用的顏色總數,如果此 欄為 0,表示圖形所用的顏色總數等 於顏色表色總數。 32~35 50~53 biClrImportant 圖型中重要顏色的總數,如果是 0 表 示所有顏色都一樣重要 表 3.3 檔案資訊內容 表 3.4 圖形描述資訊欄位說明

(24)

RGB 有色盤的顏色大小對應下表: biBitCount(即圖檔顏色模式) 顏色表所占的 byte 總數 1(單色) 8(08h) 4(16 色) 64(40h) 8(256 色) 1024(400h) 24(TureColor) 0(0h)

第七節 JPG 檔頭資訊介紹

JPG 的檔案結構成員有二:一為單元,一為編碼資料段。單元又可分成兩類:  第一類是單獨出現的 marker,最為辨識、偵錯的標記,例如:SOI、RST。  第二類是 marker 與若干資訊欄位(parameters)的組合,簡稱”marker”單元, 例如:DNL 單元,以 DNL marker 當開頭標記,DHT 單元以 DHT marker 做 開頭標記。

而編碼資料區段(entropy-code data segment,簡稱 ECS)是若干 MCU 的組合, 並無任何開始標記。

JPG 中的資料皆以 Byte 為單位(byte-aligned)紀錄,如果某個 parameter 的長 度是 2bytes,紀錄方式一定是 most significant byte first,不會因儲存方式的不同 而有差異。

在 JPG 裡單獨出現的 marker 也可以是一組欄位的總稱。無論是單獨存在的 marker,或是伴隨若干資訊欄位(parameter)一同出現的 marker,格式如下:

Marker 的特色是 2 bytes 長,第 1byte 為 0xFF,第 2byte 為 0xFF 之外的任意 數。Marker 在解碼時作用是在識別碼,像 JPG 檔頭一定要有 SOI(start of image) marker 才算合法的 JPG 檔案,marker 也可當控制碼,像 RST(ReSTART) 可以做 傳輸錯誤的檢查碼,有抑止錯誤延伸的功用;JPG 所有的 marker 名稱與編號如 biBitCount 顏色表 entry 數 顏色代碼 1 2^1=2 0、1 4 2^4=16 0、1、2~D、E、F 8 2^8=256 0、1~FD、FE、FF 24 0 ~ FF xx 表 3.5 biBitCount 與顏色表 entry 數的關係 表 3.6 各模式顏色表大小係數 圖 3.12 JPG 標頭檔圖模式

(25)

下表所示:

SOF marker 有 13 種標記號碼,出現的時機可因使用模式與選用的編碼法而 異,大致可分類如下:

標記號碼 標記名稱 說明

FFCx SOF Start Of Frame, frame header 的開始標記

FFC4

FFCC

DHT

DAC

Definition of Huffman Table,定義 Huffman tables 單元開始標記

Definition of Arithmetic conditioning tables,定義 arithmetic conditioning tables 單元開始標記 FFD0-FFD7 FFD8 FFD9 RSTM SOI EOI interval 的分界記號 Start Of Image,圖檔開始標記 End Of Image,圖檔結束標記 FFDA FFDB FFDC FFDD FFDE FFDF FFE0- FFEF FFF0- FFFD FFFE SOS DQT DNL DRI DHP EXP APPN JPGN COM

Start Of Scan,scan header 的開始標記

Define Quantization tables,定義量化矩陣單元的開始標記 Define Number of lines,重新定義 scan 列數單元的開始標記 Define Restart Interval,定義 restart interval 單元的開始標記 Define Hierarchical Progression,定義階層式圖面單元的標記 EXPansion 單元的開始標記,用於階層圖面是擴展時 APPlication 單元的開始標記 JPeG extention 單元的開始標記 Comment 單元的開始標記 FF01 FF0E- FFBF TEM RES 保留給 arithmetic coding 編碼 保留未用的之單元開始標記 表 3.7 (a) marker 名稱與說明

(26)

標記號碼 標記名稱 使用場合 FFC0 FFC1 FFC2 FFC3 SOF0 SOF1 SOF2 SOF3

Baseline DCT 模式, Huffman code 編碼法

Extended sequential DCT 模式,Huffman code 編碼法 Progressive DCT 模式,Huffman coding 編碼法 Lossless 模式,Huffman coding 編碼法

FFC5 FFC6 FFC7 SOF5 SOF 6 SOF7

Differential sequential DCT 模式,使用 Huffman coding 編碼法 Differential progressive DCT 模式,使用 Huffman coding 編碼法 Differential Lossless 模式,使用 Huffman coding 編碼法

FFC9 FFCA FFCB SOF9 SOF10 SOF11

Extended sequential DCT 模式,使用 arithmetic coding 編碼法 Progressive DCT 模式,使用 arithmetic coding 編碼法

Lossless 模式,arithmetic coding 編碼法 FFCD FFCE FFCF SOF13 SOF14 SOF15

Differential sequential DCT 模式,使用 arithmetic coding 編碼法 Differential progressive DCT 模式,使用 arithmetic coding 編碼法 Differential Lossless 模式,使用 arithmetic coding 編碼法

上表中只有少部分的 marker 單獨存在,大部分的 marker 都尾隨了一些 parameter,而因為這些 marker 所定義的資訊不同,因此第一個 parameter (2bytes) 都是定義 parameter 的長度(包含它自己)。

表 3.8 (b) SOF marker 的適用情 形

(27)

第四章 研究內容

使用者介面介紹: 圖 4.1 使用者介面 我們將系統分為兩種系統來做使用,下就是我們的兩種方法的介紹:

第一節

傳送者

先開啟一張 bmp 或 jpg 的圖檔: 圖 4.2 開啟圖片(左邊為檔案資訊)

(28)

將檔案資料段做雜湊函數:

圖 4.3 選擇雜湊函數 我們選擇 SHA-1 產生訊息摘要:

(29)

圖 4.4 將圖片資料段產生訊息摘要

接下來,將訊息摘要值做 RSA 加密運算:

(30)

已產生 RSA 加密的值,我們簡稱數位簽章:

圖 4.6 產生數位簽章

為了要保護 AES 或 DES 的 KEY,我們必須將 Session Key 加密,已達到保護的 作用。

(31)

圖 4.7 選擇 Session Key 加密 產生 Session Key 加密的值,已利接收者應用:

(32)

我們將檔案做 AES 加密:

圖 4.9AES 介面 加密後之檔案:

(33)

我們將檔案存檔後,會產生密文檔、TXT 文件檔(內有數位簽章值與 Session Key 的密文: 圖 4.11 密文檔 圖 4.12 TXT 檔 最後我們將密文檔與 TXT 檔傳送給接收者,讓接收者可以驗證檔案是否正確。

第二節

接受者

我們將會接收到傳送者給予的文密檔與 TXT 檔,已利我們可以驗證檔案,首先, 我們開啟密文檔做 Session Key 密文解密:

(34)

圖 4.13 Session Key 密文解密

我們將 Session Key 密文解密產生的 Session Key,應用在傳送者密文檔,因為傳 送者使用 AES 加密,因此我們必須得到 AES 的 Session Key,來做 AES 解密。

(35)

解密完後,可得到傳送者原先未加密的圖形:

圖 4.15 得到未加密之圖形

再產生訊息摘要值,來比較傳送者傳輸的數位簽章解密所產生的訊息摘要做比 對,即可得知檔案是否正確。

(36)

圖 4.16 未加密圖檔的訊息摘要

圖 4.17 將數位簽章進行解密 最後我們將兩個訊息摘要做比對:

(37)
(38)

第五章 結論與建議

本系統原則上對稱是密碼系統是用來當作明文的加密器,因為明文往往是非 常大的檔案,因此必須用快速的密碼演算法。但是用對稱式密碼器的最大缺點即 是金鑰必須事先分配,在這點太不方便,也是使用對稱式密碼器最大的限制,但 幸好有 RSA 公開金鑰系統可傳送 session key (以 DES 而言,長度只有 56 位 元,長度遠小於一般明文),解決了對稱式密碼器的窘境。 簽章時也有賴訊息摘要演算法將明文有效擷取“訊息摘要值”(以 SHA-1 而言,為 160 為元),再用 RSA 簽章(加密和簽章其實是一模一樣的,因此 RSA 可以在簽章及分配金鑰時,重複利用),使整個系統可以兼具速度與安全性。 目前尚有許多更理想及人性化的功能目標想要完成,有 GIF 圖檔及 TIF 圖檔, 或是一般的資料檔、音樂檔及影像檔,願能朝向這邊發展,才能將資訊安全層面 擴大,對網路或生活上的一些商業行為的安全性將能更深刻的了解及使用。希望 未來能將此架構於硬體方面實現,以求更進一步的保障。

(39)

參考文獻

[1] 賴溪松、葉育斌(2004)。資訊安全入門。台北:全華科技圖書股份有限公 司出版。

[2] 高志中(2006)。以 DR Signature 配合隨機式 RSA 部分盲簽章所建構之數位

內容多受款者付款機制。中央大學資訊管理學系研究所碩士論文。

[3] Cryptography and Network Security Principles and Practice、William Stallings 譯者:賴榮樞。密碼學與網路安全。 [4] 王旭正、楊中皇、雷欽隆,電腦與網路安全實務 [5] 施威銘研究室,以 PC 影像處理技術(二)圖檔壓縮續篇 [6] 葉義雄,密碼與標準-資通安全專輯之十七(資通安全第 3 輯),2002 [7] 廖源漢,實作一般化的 SHA,交通大學碩士論文,2006 [8] 林麗麗,植基於電子圖章的數位簽章技術,元智大學碩士論文,2002 [9] 張維谷,影像檔寶典(上)---WINDOWS 實作,碁峰資訊,1994 年 3 月 [10] 施威銘,PC 影像處理技術(二) 圖檔壓縮篇,旗標出版社,1994 年 8 月 [11] 林士靖,Borland C++ Builder 完全征服手冊,松崗出版,1997 年 5 月 [12] 洪國勝/江國軍/龍國忠/洪月裡, C++ Builder 6 程式設計快樂上手,旗標出版 社,2002 年

[13] Rong-Jian Chen∗, Jui-Lin Lai,Image security system using recursive cellular automata substitution, May 2007

數據

表 3.8      (b) SOF marker 的適用情 形
圖 4.3  選擇雜湊函數  我們選擇 SHA-1 產生訊息摘要:
圖 4.4 將圖片資料段產生訊息摘要
圖 4.6 產生數位簽章
+7

參考文獻

相關文件

定義問題 統整資訊 概念圖【行動版】.

•第九單元的重點是要練習 用( )記問題

如同一勞務採購案件,本季運用勞務承攬派駐人數較上一季填報 人數有增減情形,請於本欄位填列增加或減少人數(如無請填

語言的意義在於使用 ,而使用又是 因應著不同遊戲情境而定,因此語 言意義具有 豐富性、多變性、..

Original plan and elevation of the Teatro Sabbioneta, Vincenzo Scamozzi.. 文藝復興時期劇場

A7:依政府資訊公開法第 18 條第 1 項第 6 款規定:「政府資訊屬於

電腦內部是使⽤用位元 (Bit) 這個基本單位來表⽰示資料 並儲存於記憶單元 (記憶體) 或輔助記憶單元 (硬碟) 中。.. 每個位元只可以表⽰示

定義: 供應商按貨品定價提供的 折扣2. 供應商按貨品的淨發票價所提