顯示具有 symmetric key 標籤的文章。 顯示所有文章
顯示具有 symmetric key 標籤的文章。 顯示所有文章

2009年9月6日 星期日

K書筆記本-Cryptography(08)

密碼學是一門這麼複雜的應用數學,但是應用在資安領域中,重點不只是只有在於機密性,更重要的是確保了完整性
很多人往往都只有把密碼學定義在機密性,但等等所看到的內容,全部都與完整性佔了相當大的關係
使用密碼系統大致有下列幾項應用:資料儲存的安全(Data storage)、E-mail、網路協定(Network Protocols)
那麼依照其動作的內容有幾項基本的目的:確保訊息完整性(message integrity)、確保訊息機密訊(message confidentiality)
訊息可信賴性(message authenticity)、 傳送者及接收者的驗證(sender/recipient authentication)、傳送者及接收者的不可否認性
(sender/recipient Non-repudiation)

當然,提到了應用,就不可能只用一種加密系統來運作,一定是混合多種的密碼系統最大的強度就是混合各項安全控制
混合有對稱(Symmetric)、非對稱(Asymmetric)及訊息完整控制(MICs),等等的各種混合系統的作法
下圖流程為數位信封(Digital Envelop),key用於加密為encrypting key(≠ encrypting)
image
當然,上圖所示的,僅僅是混合了兩種的密碼系統,極緻的混合式密碼系統,則如下圖所示:
image
1.訊息以Symmetric key加密,再將Symmetric key以接放者的public key加密傳遞給接收者。
2.訊息加密後,再以hash function產出digiest再以發送者的private key加密配合訊息的密文傳遞給接收者。
3.接收者收到symmetric key的密文後,以接收者的private key解密後,再將訊息的數位簽章內容與訊息密文以Symmetric key解密。
4.接收者再以發送者的public key將收到訊息的數位簽章解密取出digest。
5.接收者將訊息經過hash function取出digest與由數位簽章的digest比對,若比對的內容是相同、並且正確則完成訊息的傳遞及傳送者不可否認性。
6.接下來接收者再將digest以接收者的private key加密傳遞給發送者。
7.發送者收到由接收者送出的數位簽章後,以接收者的public key將digest解開,與自已發送出去的digest比對正確則完成接收者的不可否認性。

較常應用的密碥系統最常應用於mail的傳遞(首重於訊息完整性及加密服務,但有幾個加入了金鑰管理及不可否認性)
而幾個常見的安全郵件協定有:
MSP;Message Security Protocol:支援訊息標示及數位簽章的接收。
Privacy Enhanced Mail(PEM):設計時是以PKI為基礎,包含了支援X.509憑證及它使用了DES以CBC mode
亦可選擇使用ECB mode或是3DES-EDE2做為金鑰管理,但不相容於MIME。
MIME Object Security Service(MOSS):是以MIME為基礎並取代PEM的協定,PEM則是一種封閉的組合及標準的PKI架構。
Pretty Good Privacy(PGP):保護訊息的機密性及完整性,訊息的加密是使用亂數選擇的對稱式session key加密,pgp是一種額外的保護,
可以選擇以RSA, DH及EIGamal的非稱式金鑰加密,及x.509公開金鑰憑證,相容於CA-Based任賴模式
可以相容支j援MIME、S/MIME或PGP/MIME為基礎的MOSS等。預設值為IDEA加密,數位簽章用RSA,MICs是MD5。
S/MIME:是由RSA三者開發,是一個實際的標準,是以公開金鑰加密標準(PKCS)為基礎,使用RSA非對稱金鑰加密,以DES做為對稱加密金鑰
以及以SHA-1為Digest的演算方法。傳送者以數位簽章後再用收件者的公鑰加密。

而常用的安全網路協定則有:S-HTTP(Application layer),SSH;Secure Shell(Transport Layer),SSL;Secure Socket Layer(BetweenTransport and Application)
TLS;Transport layer security(Transport Layer),WPA;WiFi Protected Access、WPA2;802.11i Wireless Lan…等等(於Telecommunications and Network Security)
再詳加說明,本篇著重於密碼的應用,其實後續還有法律相關的問題及破密分析、資訊隱藏的部份,應該於近日可以與各位分享我的心得,謝謝~

2009年9月2日 星期三

K書筆記本-Cryptography(04)

前一篇文章特別有提到symmetric key運作方式有分為stream ciphers及block ciphers,也有提到兩種的差別
其中Stream的運作方式對於一般的統計法,是很難找出其邏輯,並且產生出來的ciphertext是絕對的公正
在Stream cipher運作中,最重要的一個元素就是Keystream,它是用來作用於加密過程,以XOR來建立密文的程序
而Keystream的代表作就是RC4更重要的是它是非常適合裝載在硬體上及網路通訊上使用。
下圖是Keystream的運作示意圖

image

而block ciphers則是以相同的大小切段(例如以8bits;ASCII 或16bits;Unicode),也是以XOR演算後產出密文
相當適合用於較大型的資料,並且對於所有的後續的處理比起strame更加的有效率。下圖是block ciphers運作方式…
image

以上是兩種對稱式加密的基本模式,但是,提到對稱式加密就不得不提DES(Data Encryption Standard;資料加密標準)
身世之謎是來自於1960年由IBM所設計發展,後來被美國國家標準局及美國國家標準協會承認,在DES家族相當的龐大
光是DES本身就包含了相當多種的運作模式,不過,這個設計之下,Block size是64bit,key的size是56bit及8bits Parity
總共演算16rounds,DES的運作模式共有五種,以Block Modes及Stream Modes來區分如下:
Block Modes:Electronic Code Book(ECB)、Cipher Block Chaining(CBC)
Stream Modes:Cipher Feed Back(CFB)、Output Feed Back(OFB)、Counter(CTR)

ECB Mode;電子密碼書模式:平行運作,並且具有較高的容錯性,相當的節省處理的時間,ECB只適合用於短訊息的內容,因此相同的明文內容
會產生相同的密文內容,雖然無法直接以暴力破解法來解開,但是透過Separately attack就可以輕易的分析出來。
下圖為ECB的運作方式:
image

CBC Mode密文區段連續模式:它的運作方式就比較複雜了一些,第一個明文的block先以XOR與IV演算,
接下來的每一個明文都先與前一段密文加上IV後再與金鑰加密。非常的適合用於較長的訊息,而且可容錯,
適合用於IPsec, SSH, VPN, Datastorage。但每一個運作的回合之下,都必須耗費較多的資源去演算
因為它必須作用於full sized blocks且每一個運作都是連續的。下圖為CBC Mode的運作模式:
image

CFB Mode;密文反饋模式:與CBC相當的相似,但是CFB將IV加密後加入與下一段明文做演算。適用於較長的訊息,亦具有容錯的能力
它每一個運作都必須是連續的,當發生錯誤時會擴散至其後的block中,雖然它比CBC發生的錯誤的機率還低,是最常用的Stream mode。
下圖為CFB Mode的運作模式:
image

OFB Mode;輸出反饋模式:其運作模式相當接近於CFB,但不同的是它先把IV加密後加入爾後的每一個金鑰中,再經過加密加入訊息演算中
非常適合用於較長的訊息中,某些的運作是平行的,接送雙方必須保持同步,必須透過一些回復機制來確保雙方是同步的
否則當發生錯誤時是可能造成串聯的。下列是OFB的運作模式:
image

CTR Mode;計數器模式:與OFB類似,但是加秷的是計數器的內容而不是反饋出來的資料。因為是平行處理因此效率相當的好
必須確保不會重用到key或count內容值,否則還是會被破解,即使它的安全性與其它的模式相同的安全,被拿來做為無線網路的標準
及後來成為AES(Advanced Encryption Standard)的Key演算概念。下圖為CTR的運作模式:

image

以上的五種模式是DES的運作的主要模式,下表為以上五種模式的比較表:

Mode

Block / Stream Mode

Long / Short Messages

Serial / Parallel operation possible

Effect of an error

Work that can be done in advance

ECB

Block

Short

Fully parallel

Contained

Keys

CBC

Block

Long

Fully serial

Contained

Keys and IV

CFB

Stream

Long

Fully serial

Contained

Keys and IV

OFB

Stream

Long, but errors are a problem

Partially serial and parallel

Cascades

Most encryption

CTR

Stream

Long

Fully parallel

Contained

Most encryption

有了上面的這張表,大家知道怎麼去選擇合適的模式了吧!

當然DES並不是只有一種,還有Double DES及Triple DES,一樣都是以56bits為基礎的金鑰長度
Double DES的金鑰長度就是112bits以兩把key做加密演算,而Double DES(DDS)一出來隨即被Meet-in-the-middle破解
不是man-in-the-middle喔!這種Meet-in-the-middle就是以「已知明文」的方法來找出key及演算的過程順利的破解了DDES
下圖是DDES的運作示意圖
image


下圖則為Meet-in-the-middle的運作示意圖:
image

而對於 triple DES則又分為有兩把金鑰及三把金鑰的差別
2把金鑰:DES-EEE2(也叫2TDES-EEE), DES-EDE2(也叫2TDES-EDE)
3把金鑰:DES-EEE3(也叫3TDES-EEE), DES-EDE3(也叫3TDES-EDE)
其中EDE Mode是比EEE Mode來的更強,不論是三把金鑰或是兩把金鑰都是為了加強其運作的強度
3TDES的Block長度是64bits, key的長度是168bits,其它與DES相同,2TDES則是與DDES雷同,
只是Bock是切割為三次演算。但DES是一種早就被破解的私鑰加密系統。

下面是幾個常見的Symmetric Key Cryptography:
IDEA(International Data Encryption Algorithm ):於1991年發佈,是參照DES而來Block size是64bit,128bit key,跑8rounds
AES(Advanced Encryption Standard又稱為Rijndael):於1998年發佈block size可介於128~256bits,Key則可選擇128、192、265
並且可自定運作演算次數。其組合由4個步驟AddRoundKey, SubBytes, ShiftRow, MixColumn
RC5:於1994年發佈Block可以有32, 64, 128 bits, key的長度更可提升至2040bits,最多可跑255個rounds
RC6:Based on RC5。
Blowfish: 於1993年發佈,block為64bit, key介於32~448bits。
Twofish:block size 128bits, key最高可到256bits,相同以128bit的key比AES來得慢。

Symmetric key的優點
非常的快Very fast
破解密文非常難(Very difficult to break cipher text)
演算法及工具可以免費取得(Algorithms and tools are freely available)
Stream ciphers確保了極高效率(Stream ciphers ensure highly-efficient)
Block ciphers也有多種modes可供使用(Block ciphers offer multiple modes)

Symmetric key的缺點
key的交換及散發可能是個問題(Key Negotiation / Exchange / Distribution)
延展性差(Poor Scalability)
維持了最基本的安全(Limited Security)

曾經有人問過Jason,到底同步與非同步金鑰那個比較安全,其實,在這裡的比較我們可以看到,同步金鑰比非同步快
這個是唯一被明確點出來的,而至於那個安全呢??非同步被破解的也是不少呀,而簡單的多跑個幾次還是會安全的嘛!
所以,兩者相較,並沒有話一定是同步或非同步就比較安全喲,以上提供給大家參考。

K書筆記本-Cryptography(03)

密碼學的基礎中,密碼系統(Cryptosystems)並不是非常的安全,主要的原因除了以語言特性分析的問題以外,
簡單又容易的找到有問題的字元,這種類型的問題,其實與很多的破密分析中,解除與明文長度相同的加密
幾乎都能順利的找到明文內容也是很容易的,一個好的演算法必須要能在明文若改變1bit而密碼的改變高達50%以上
才是好的演算法,這種就被稱為Strict avalnche criterion;完全崩塌準則,當這樣的演算法才能避免以語言特性的破密法

再者,同一種演算法,在不同的兩把key對相同的明文進行演算時,也要能達成兩個不同key所演算後的密文內容
達到50%以上的改變,否則對於明文被重排時,還是可以比對出演算法的內容差異,
這個也是密碼系統在設計時必須考量到的問題。

基本的重排演算中,又可以被稱為substitution boxes或者叫做S-Boxes,在此指出的S-boxes中的”S”指的就是substitution
另外Transposition(更換) or Permutation(排列)也是屬於此法中常見的特徵,Compression(擠壓)則是hash的精神所在了,
把所有的內容值不論長短,均演算成為相同長度,此時若較長的字串則會受到擠壓了,那麼有由長的變成短的,
當然也會有短的明文Expansion(擴張)為較長的密文,在這個部份又因為key或是subkey的使用而擴大了
這個擴大的過程就稱為padding(補齊)亦指加入額外的資材在明文被加密為密文之後
也增加了因為訊息是被加密的過程中以foil traffic analysis(破列傳遞分析)可找到更多演算法的弱點

key mixing則是在加強了密碼的強度,不論在加密過程中使用了以key schedule的方式加強了key本身的安全性及key的可用性
key schedule又稱為key space,下圖即為key schedule的示意圖:
image
Initialization Vectors (IV):是決定了在整個密碼的加密過程中,增加了亂數的演算層度,有了IV的加入,使用密文更加的Random
在此我們提出一個例子,有一個很有名的加密法叫做RC4他是一種相當的Random的演算法,應用在WEP上
後為何變的如此的容易解開,原因發生在IV,這個加入亂數的IV是由User自行設定的share key,當share key常年不改的狀況之下
即使再random的演算法,只要蒐集到一定的封包量,要解開其內容就變的相當的容易
因此IV產出夠不夠Random也變成相當的重要。

Exclusive-OR(XOR)中文叫做反或閘,是一種數位電子運算的基礎,當兩個二進位的數串經過XOR演算
取出來的值就變的相當的複雜,例如有兩個不同的值分別是11100101及10101111經過XOR演算之後成了01001010
只要有其中一個值再度加入XOR演算就可以得到原另一值,是一種可以拿來做演算或是拿來驗證加密的內容的方法。

Symmetric key cryptography(對稱式金鑰密碼學)中包含的相當多的演算法,是整個密碼系統產生的始祖
Pre-Share key也是其中一種對稱式加密,其中包含:
single shared key又稱為private key/ single key/ secret key,不論是發送者或者是接收者都是使用同一把金鑰進行加密。
many algorithms: 它是眾多種公開標準的密碼演算法的基礎。
two main classes:因使用的方法不同,又分為兩種類別Stream Ciphers(串流加密)及black ciphers(分段加密)
stream是以時間區隔以不同的金鑰加密,因此相同明文可達到不同密文的效果,black ciphers則是以區段做區隔
因此同明文則密文亦會相同。下列是同步金鑰演算的過程:整個演算的過程只用到一把金鑰。

image

接下來,再與大家討論有關Symmetric key的各項議題,包括各種標準的運作原理。先給jason起來運動運動,不然屁股快跟椅子合體了…

K書筆記本-Cryptography(02)

密碼學中領域是離不開數學的,正所謂數學乃科學之母是一點也錯不了的,
從進位制、到網路傳遞都是經過數學的計算後,才真正得以正確的達成電腦的目的,
上個章節只能說是暖暖身,抖抖手腳,今天開始的分享才是真正講起沒有啥人聽的懂的話。

在基本的密碼系統之下,大致上分為:Code(密碼)、Substitution(替換)、Transposition(換置、重排)、
Polyalphabetic Substitution Cipher(多套字母替換)、Running Key(金鑰)、one-time pads(一次性密碼)

code:指的是將一串明文的被經過處理的文字串,以簡單的換置、替換…方法維持了基本的完整性及機密性。

Transposition:將原本的字串重新的排列將順序重新排列,有多重的方法去確保了明文的內容有效性。詳見下圖
我們將this is an example of transposition排列到下列表格中

T H I S I
S A N E X
A M P L E
O F T R A
N S P O S
I T I O N

橫的來看,還是原來的字串,但是將字串改變成為直的運作TSAONI HAMFST INPTPI SELROO IXEASN
以這樣的方式將原本的型態都是以明文做傳遞,以打散重排(Rearranging)的方式來保障字串原本的意義。

Substitution:以取代的方式將文字做順序的位移,當文字的變成另一個文字時就保護了真正的明文意義,
但這種方法只要以frequency analysis(語言特性分析)即可破解,例如英文中常見的組合er、qu則容易算出之間的文字差距,
因此容易被解開。
以上例為例:


1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

重排

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

this is an example of substitution經過重排後移4個字元,則變成了wklv lv hadpos ri vxevwlwxlrq,可以說是用了最基本的加密方式來達成隱碼的作用。

Polyalphabetic Substitution:以Substitution為基礎的一組多重重排的運算法,也就是說,除了以一種的重排理論來運作以外,還以不同的重排方法來加深加密的難度
在此以Frequency analysis就較難從中解出真正的文字意義了。
下列以四組重排字表來示範,以上面的例子做重排,第一個字為T重排為T,第二個字為H重排為K,第三個字為I重排為O,第四個字為S重排為B以此類推。


1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

1

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

2

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

3

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

4

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

Running Key:與特定的字表加密將其順序打亂,並重新選字排列,與Polyalphabetic substitution雷同,但是,其複雜程度又與重排再難上許多
將欲加密的文字選定一個字多,並將其順序依照字碼的字重新選字,例如明文為 Jason so handsome,Key為man我們先將字串轉換為字碼再從字表選字

下表為字表

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

下表為字串內容及字碼(字碼大於26則必須減去26),算好後字串就成了Chlhu lh ougklhty

J

A

S

O

N

S

O

H

A

N

D

S

O

M

E

字碼

10

1

19

15

14

19

15

8

1

14

4

19

15

13

5

M

A

N

M

A

N

M

A

N

M

A

N

M

A

N

字碼

13

1

14

13

1

14

13

1

14

13

1

14

13

1

14

AND

23

2

33

28

15

33

28

9

15

27

5

33

28

14

19

選字

C

H

L

H

U

L

H

O

U

G

K

L

H

T

Y

另外一種running key又稱為share book,意指雙方有一本相同的書,我們只需要傳輸第本書的第幾頁
第幾個字,這種方法即使密碼被取走了,沒有密碼書,還是解不開。

OTP:是目前最夯的一種密碼使用法,符合Some thing you have的精神,比起單純的some thing you know來說,強多了
OTP使用不管是傳送端、接收端都有很特殊的Key值,每一個key也只能使用一次,是一種只能不容易破解的演算法
它有幾個優點,不管是任種一種OTP在產生Key時是真正的random,沒有key會被重覆的使用,所有的pad安全的
即使是被惡意的拔開,也是無法被再次的使用了。

所有的密碼系統都離不開上列幾種,每種密碼系統特性在現在都還是看的到其踨影,下一段再跟大家一起來討論密碼學的部份囉!