顯示具有 Message Integrity Controls 標籤的文章。 顯示所有文章
顯示具有 Message Integrity Controls 標籤的文章。 顯示所有文章

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月5日 星期六

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

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

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