2009年9月5日 星期六

K書筆記本-Cryptography(07)

密碼學中不斷的提到了金鑰(KEY)這一個字詞,KEY的產生是一個重大的議題,然而…對於KEY的管理才是密加碼密最大的重點
各位想想,本來買了一個七八十萬的保險櫃,用了最難開的鎖,但是鑰匙卻放在一個大家隨手可得的地方
那麼,這個保險櫃等於買沒也沒買,因此,在金鑰的管理(Key Management)成了整個密碼學的重要核心,key不小心流失了
任何再安全的作法都沒有任何作用了,在金鑰管理中最重要的幾個議題,例如:key的建立及推衍、key的散發及更新
確認金鑰的可信、金鑰專有的儲存及廢棄、回復或廢止遺失的金鑰、管理應用程式的金鑰長度…這一些都是在金鑰管理的各項議題。

Key derivation Functions;金鑰推衍函數(KDFs):是一種以金鑰推衍函數去產生多個非同步金鑰以供分享解開秘密內容
即是以一現存的Secret key去產生一把新的Session keys 的技術。並且結合了三種不同的值(hash function;MD5或SHA1, key;
可能是密碼或是其它的值, salt;可以說就是IV,亂數產生以附加到key上去防止攻擊並且達成更大的差異性)去產生key
接下來依照上述的方法去執行產生可用的key。

Key Agreement:在這個部份有三種常見的key agreement schemes(Diffie-Hellman, Unified Diffied-Hellman又稱為DH2,
MQV(Menezes-Qu-Vanstone))DH設計了非同步金鑰,而DH是屬於PKI同步金鑰
而且透過數學的方法使Privet key不會在網路上傳遞,並且能達到key的excahange DH只有一對key pair
而DH2則是屬於兩把key pair的演算法,最後MQV則是利用了很短暫的時間產生出private key及public key
並且信賴的每一把靜態的Key去分享秘密的的金鑰

Diffie-Hellman key Agreement的運作是很數學理論的,而且,在整個金鑰交換的遇程之中,並沒有讓雙方的私鑰流露出來
例如:Jason 和Silvia要分享一張很私密照片,而雙方的資訊構通要以DH做金鑰傳遞,首先:
1.Jason和Silvia共同選擇了Y的X次方乘上(Mod P),Y和P各別是11及13,這個公式則變成11的X次方(Mod 13)
2.接下來Jason和Silvia各別選擇一個秘密的號碼,Jason選擇2,Silvia選擇5,這個時侯雙方的私鑰就定好了
3.Jason將這個秘密套入公式,則是121(mod 13) = 4,Silvia將這個秘密套入公式則是161,051(mod 13) = 7。
4.演算之後將這兩個數字分別傳給對方,Jason告訴Silvia算出來的數字是4,Silvia告訴Jason算出來的數字是7
5.接下來各別再把取得的這個數字重新的套入公式中
Jason將7套入49(mod 13) = 10,Silvia將4套入公式1024(mod 13) = 10。
6.這個時侯,同步金鑰就選定以10做為雙方的secret key。
由上例指出,Jason和Silvia雙方並沒有將私密數字流露在雙方的傳遞上,只有選擇了公式的演算和演算的結果
因此確保了秘密金鑰的內容

確認金鑰的可信性是整個議題中最重要的議題之一,如何信任,和信任模式又有什麼內容(如何知道那些key是可以信的
如何知道那些金鑰的使用是人還是機器),還有兩個信任模型(網路的信任模型;web of trust model,階層式的信任模型)
憑證建立的可信度(馮證提供了基本的可信公鑰;PKI - Public key infrastructure,PKI也可以說是可信賴的人、物:托管單位)

PKI是一種延伸給各項其它服務彼此間具有信任的模式,它提供了幾種信任的方式
它建立了個人、實體的公鑰(與各別的人有實際的連結) ,可證明公鑰是由數位憑證所發出
並且各個不同的CA之間的信任是可提供個別不同的CA發出的憑證相互信賴(Cross-Certification)
憑證(Certificate)的是由憑證管理中心(CA;Certificate Authority)所發出,CA是具有公信力的第三方單位
KDC則是金鑰的發散中心 ,KDC提供了共通的金鑰,但是,所有散發出來的金鑰都是由KDC的私鑰所推衍出來的
因此若KDC的私鑰被取得,那麼KDC則沒任何安全可言,相對的,CA的抵禦就相對的強,入侵者即使成功的入侵了CA
還是無法得知CA的私密金鑰,因此無法偽造金鑰 ,CA對於個人及機關提供認證及憑證簽發的服務
以建立具有機密性、鑑別、完整性及不可否認性的存取控制及可用性的資訊流通安全環境與機制。

數位憑證是參照x509標準所產生的,下面是v3版本的數位憑證組成圖:
image
另外,一定有不少人有疑問,數位簽章也好,數位憑證也罷,到底屬於那一種加密,是非對稱式還是對稱式呢?
其實,在數位簽章的內容中,只是將加密的憑證發出的單位和憑證的編號傳遞給接收者
接收者只需要將收到的憑證相關訊息向CA進行驗證,CA回查內容若屬相同,則該憑證是有效的
若憑證的內容與CA查詢出來的不同,那麼這個憑證是有問題的了,整個憑證的的關係中並沒有私鑰,因公鑰是由CA所持有
因此對於憑證的相關應用應屬於非對稱式的加密。

呼~~~!這一篇跟大家分了有關金鑰管理及相關的應用,下一篇會跟大家一起來討論密碼系統的應用
密碼系統是密碼學應用至我們保護的資訊上,因此在於這應用之下,鐵定比上幾篇來的有趣了許多,那麼晚上見囉!

K書筆記本-Cryptography(06)

訊息完整性控制(Message Integrity Controls)是密碼學精髓中的精髓,加密過後的文字畢竟已經被加密了
那我們怎麼確認收到的已加訊息沒有因為傳輸問題造成移漏?因此,雖然訊息已經被加密了
但是我們還是可以透過訊息完整性控制則可以達成訊息的確認,以保障傳遞的內容是完整無誤的
因此,密碼學中,即有一篇是專門針對各種可能造成封包、訊息本身受損的控制措施

那麼訊息控制怎麼做到的,如何達成的呢?為何可以達成偵測訊息內容是否已遭到無意或有意的修改呢?
訊息控制是透過附加一些相當特殊的值到訊息本體上,而這個特殊的值是可以拿來與內容驗證的
因此當演算過後就可以得知那一些值是有經過修改,其中,有一個密碼學的分支就是以這種概念
來開發One-Way Functions。

那麼,在討論這個部份時,我們先來探一下,訊息控制的分類,大致上,它分類為無意的變更及有惡意的篡改
無意的修改像是網路設備在傳遞訊息時,可能造成一些訊息的遺失而造成的,可以透過parity, Hash function, Checksum…等
而惡意的篡改,像是以其它的破解技術強迫去修改訊息的內容,可以透過像是digital signature, keyed hash HMAC, CBC-MAC…等
達成偵測、控制訊息的一致性,下面是MICs(Message Integrity Controls)的分類示意圖:
image
以上這兩種層級的差別就在於,防止意外的運作中,並不會有所謂的key產生,而在下者,則是有key的概念
而且,這個概是可透過公證單位進行驗證,因此確保了防止惡意的篡改的可能性。

防止意外的變更
Parity:為兩個值做XOR演算後以避免lost掉其中一個值時所做的MIC,代表作是RAID3以上的概念。
Hash Founctions:確保資料傳遞過程中因為各種恩素造成訊息問題,因此提供hash供接收者確認訊息完整性
例如:在下載檔案時有提供MD5的Hash value等下載完成以hash founction驗證內容是否正確。
CheckSum:每個傳遞的資訊中,會針對二進位值的1做總合,在傳遞完成一個訊息時,可供確認傳遞的遇程中是否有遺漏。

防止惡意的篡改
Digital Signature:屬於hash Functions的一個分支,透過簽章的動作在訊息上以憑證簽署,因此可以確保傳遞的過程中是否遭到篡改。
Keyed Hash HMAC:先以Secret key演算出一把Secret key,再使用一個標準的hash function將訊息hash過程加入Secret key加以演算。
若要驗證加密的區段過程,必須先將Secret key解密後,才能驗證
另一種計算方法則更加複雜,將列照常計算後,再使用對稱式加密加務散列,若要認證散列,則必須先對它解密。
CBC-MAC:CBC-MAC是使用DES的CBC mode以Secret Key產生一個64bit的輸出值的share key,以驗證訊息未被篡改。
在此一提,HMAC運作的執行速度遠比CBC-MAC來的快,但CBC-MAC也比HMAC來的安全許多
另外,Digital Signature僅針對訊息加簽,只能確保其不可否認性(non-repudiation),以確保全完整性確認
然而keyed hash則不確保不可否認性,在此keyed hash運作的也比Digital Signature快,因為Keyed hash不需要對PKI做驗證。

在此提到了hash,到底hash與加密有何差別呢? hash是利用訊息的內容切段的值產生出來的一組等長度的值,並且能抵抗生日攻擊
屬於一種one-way Function,但hash與one-way function並不是畫上等號的喲!
由於one-way Function不論多長的message都會演算出一組同長度的值,因此有可能產生不同長度的明文會產生相同的密文
而這個現象就稱為hash collision,整個找出hash collision的理論則是Pigeon hole principle(鴿籠理論-是一種假設理論
當每個籠子只能塞兩隻鴿子,當籠子只有二十個,但有四十一隻鴿子時,一定會有一隻鴿子被擠出來)
hash collision示意圖:
image
且產生出來的值與原message不會有直接的線性關係(non-linear relationship between hases),
意指,當msg1及msg2一起做hash產生的值,不會等於一個訊息中包含有msg1及msg2的hash value
線性關係示意圖:
image

常見的hash Functions
MD(Message Digest)系列(MD2/MD4/MD5),是由Ron Rivest所發佈,其中這個家族有個特性
MD2:運作的速度太慢了(等到天荒地老了還算不完…)
MD4:運作的速度太快了,快也是一種錯嗎?因為…演算快就代表要破解所花費的時間也很快喲~,所以算的太快也是一種錯
MD5:由MD4再做調整將速度調整至可以接受的範圍,因此速度的比例就是MD4>MD5>MD2
MD系列中所有的Hash value長度都是128bit

SHA(Secure Hash Algorithm)
SHA-1於1994年發佈,在SHA的系列中,前幾個是SHA1、SHA2,這兩個都是屬於160bit的長度
接下來新的SHA版本則是加大的Key Space及加強適合較大型的訊息內容
SHA-256則是將Key的長度增加到256bit, SHA-384及SHA-512則分別是384bit,512bit.

各種Hash function
Hash Function的運作過程中,即是將訊息在傳遞之前將訊息經過hash演算出Digest,把Digest和訊息一起傳送給接收者
接收者在收到訊息後,把digest與訊息拆開,並且將訊息以相同的hash function演算出Digest
再把算出來的digest與接收到的digest比對。下圖是hash function的運作方式:
image

key-Hashed MAC主要是保護了hash本身的完整性,而這種function主要是保護Shared Secret key
且這把shared key只有原來hash值的一半長度。
CBC-MAC:則是使用同步金鑰獨立在特殊的DES CBC mode去產生出來源檔案修補長度的表述
CBC-MAC的運作過程與Hash function僅差別在多了一個程序,在把digest附加在訊息上前,再以shared key將digest產出keyed hash
接收者在收到這個訊息時,把訊息與keyed hash與訊息拆開後再以shared key解出digest,再拿來與原訊息的hash產生的digest比對
image

Digital Signatures:它確保了傳送者的驗證確認及具有不可否認性的特性,它是使用非同步加密,傳輸者的私鑰是用來把hash的值加密
接收者則以傳輸者的公鑰去確認簽章的有效性,下列是數位簽章的運作方式:
image

其實,整個確認訊息完整性的運作過程相當的有趣,任何一個步驟都一再的確認訊息的內容是正確的
很多人在對於公鑰、私鑰一直分不清楚,其實有一個很簡單的方法來記,在銀行領錢、簽合約…等等必須要保證的事情
我們是拿私章來蓋,而領錢或者是辦理業務變更時,業務員會拿你存放在銀行的印章卡出來比對印章,存放在銀行的印章卡就是公鑰
希望以上的說明能幫大家記起公開金鑰和私密金鑰的方法。

下一篇的內容我們會著重在金鑰管理、密碼的使用,以及破密分析及資訊隱藏的科技等等…,先來去洗個澡休息一下…呼~

K書筆記本-Cryptography(05)

上一篇提到的是對稱式加密(又稱為私密金鑰加密系統),而對稱式加密雖然速度快,但是在於確保安全的部份則顯示較為軟弱
非對稱式加密則是大大的提升了安全性的部份,而不止是在於機密性的保護,對於內容傳遞的保護則更加的嚴僅
公開金鑰的概念是在1976年由Diffie及Hellman兩人共同提出的,所使用到的有私鑰和公鑰兩種概念
而私鑰和公鑰之間是有絕對關聯,私鑰保有了私密性(Secret)、公鑰則是提供予發散用於加解密使用(distribute)

當然有公開金鑰演算法主要是確保傳遞者的資料機密性(Confidentiality)及證明傳遞,傳遞者以接收者的公鑰將訊息加密後傳遞給接收者
接收者再以私鑰解開,傳遞的過程中因為傳遞者是以接收者的公鑰加密,因此只有接收者的私鑰能解開
加強了其保密性。下圖為確保confidentiality示意圖:
image

證明傳遞則是以傳送者的私鑰加密訊息,接收者以傳遞者的公鑰解密,使用者在解密的過程中,若是金鑰無法解密
則代表訊息傳遞的來源是有問題的,下者為Proof of origin示意圖:
image

當將此二者結合,則同時可以兼具確認來源及確保機密性,下圖為其運作示意圖:
image

於非對稱式加密來說,由於對稱的流程並沒有像非稱式這麼複雜,非對稱式加密的嚴僅度比較夠,當然在運作上面就比起對稱來的慢
也比較不適合用於大容量的資料加密,非稱式加密還有一個特性,舉例說明像是6的k次方是1296,要推算k是很容易的,
但是3的k次方是3乘mod 13,則k的值會有4、7、10.3,這種特性就稱為hard problems,也叫做one-way trapdoor
明文加密成為密文簡單,但反推難。符合這一類的加密法有:RSA(Rivest-Shamir-Adleman), EI-Gamal, Diffie-Hellman,
ECC(Elliptic-Curve Cryptography), DSA(Digital Signature Algorithm)

RSA(Rivest-Shamir-Adleman):是公開金鑰加密系統的代表作,在金鑰的散發是源自於對稱加密,並且具有數位簽章服務的架構
開發者共有三位Ron Rivest, Adi Shamir及Leonard Adleman在1997年開發出來的加密法,預設值是1024bits,
若要安全一點,可把key sizes調整至2048bits~4096bits之間,這種加秷法是以數學上所稱的取冪模組(Modular exponentiation)為基礎的運作方式。

Diffie-Hellman:是世界上的第一套公開金鑰加密系統,於1976年設計出來,使用兩把不同的金鑰達成key exchange
使敏感的訊息得以安全的傳遞,並且保有私鑰,使加密的key不會流露在網路上。

EI-Gamal:於1984年第一次發佈出來,後續包含在PGP之中,成為一種在後端將不安全的訊息傳遞做為後續補強的利器,
並且EIGamal中包含有DSA,且加密的方式類似RSA,Key 的流通則類似Diffie-Hellman.

ECC;橢圓曲線加密法:能用於Key的流通,資料加密及數位簽章上,這種加密法非常的快速,而且key的size相當的小,
用一個比較明確的例子,1024-bit RSA = 160-bit ECC,非常的適合用於資源不足的應用程式
最有名的應用像是微軟的序號演算就是個最好的例子

而非對稱式加密,即然比較複雜以外,月什麼優缺點呢?
優點:
Confidentiality/Privacy;維持了機密性、私密性 (資料不能被非正確的私鑰解密)
Access Control;達成存取控制 (私鑰僅能用於一個個人使用)
Authentication可驗證 (可證實識別是傳輸者)
Integrity確保完整性 (資料不能被篡改)
Non-repudiation不可否認性 (傳送者無法否認曾傳遞過的資料)
缺點:
Computationally Intensive;演算過於密集
Slow太慢 (比起對稱式加密還要慢了約1000倍)

這個章節中,我們討論到了非對稱式加密的幾種常見的加密演算法,也有討論到相關的優缺點
下一篇再跟大家一起討論有關訊息完整性控制的部份,密碼學的部份除了機密性以外,最重要的就是完整性才是真正密碼學的精髓

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安全的
即使是被惡意的拔開,也是無法被再次的使用了。

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

2009年8月13日 星期四

K書筆記本-Cryptography(01)

密碼學…天啊…這種看了會讓人真接趴倒在馬路上的東西怎麼k的下去,如果你即將面臨失業(老闆經營不善)
我想,你應該很有精神k的下去(就跟偶一樣啦!!!),密碼學是整個資訊安全的A.I.C.中一看就知道非C莫屬
但是…把密碼演算更重要的是維持訊息的完整性,而非只有保持訊息的機密性而以。

那密碼學在資安領域中又扮演什麼角色呢??各位還記得嗎??機密性所維持的是『避免有意或無意的洩露資訊』
那麼密碼學有那些基本目標呢?
1.確保敏感資訊的機密性(加密演算法)
2.確保資訊的完整性(digest)
3.確認通訊驗證(SSL, CA)
4.提供支援不可否認性的有效性(digital signature)
5.提供安全存取控制的基礎
6.對選擇昂貴的或是費時的調整(花錢或Free)

在密碼學這個領域中呢,有三個很關鍵的用詞,這三個用詞常常在我們的生活中出現,但是…大家統稱叫加密或密碼學
但是在老外的眼中可有著大大的不同~~!
Cryptography(密碼學;密碼使用法):針對文字密碼學為基礎的演算,是用來保護資訊傳遞的方法。
Cryptanalysis(密碼分析):密碼分析主要是用來分析密碼學的強度,不論是讀取、變更訊息的完整或是驗證密碼、演算法弱點問題。
※也可稱為破密分析(是我國國人最弱的技術)
Cryptology(密碼術):指研究密碼學或是密碼分析。

另外,在整個密碼的產出或是使用的過程中也有特定的關鍵用詞:
Plaintext/Cleartext(明文;明碼):也就是最原始的訊息內容。
Ciphertext/Cryptogram(密文;密碼):經過演算過後的訊息內容。
Encipher/Encrypt/Encode(加密;編碼):指的是將明文演算成為密文的過程。
Decipher/Decrypt/Decode(解密;解碼):指的是將密文演算回復明文的過程。

還有一些必須要再提出來的關鍵用詞:
Cryptographic Algorithm(密碼演算法):指著是數學方法的密碼演算操作。
Cryptosystem(密碼系統):是指裝置或處理使用在加密或解密操作的系統。
Cryptovariable;key(密碼變數;金鑰;):用於密碼演算中左右演算的可變因素。
key space(金鑰可用量):指的是key可用的總數,供選擇使用來做為密碼系統。

要把密碼學說的簡單一點程序就像下面的流程:


明 密碼系統 密

-> (演算法) ->
文 文

密碼學中很多文字其實都是有著相同意思,但是其深層的意涵又有著不同的用法和作法
因密碼學這個領域其廣度及深度是相當的廣大,要把整個密碼學一口氣說完,實在是難呀!!!

接下來再跟大家一起討論同步加密、非同步加密、訊息完整性控制、金鑰管理、
密碼學的使用、破密分析最後是資訊隱藏技術。