2009年9月6日 星期日

K書筆記本-Physical/Environmental Security(01)

實體安全,那不就是保安囉!保安!保安~~!這個不是周星馳的電影,實體安全是資訊安全防止竊取等等的事件,
可能在實際環境上會發生的問題,進而威脅到資訊安全,因此在於實體安全是一個相當重要的議題
那麼在安全的金三角中可以說A.I.C.是三者並重,但是…在實體安全之上有一個特別的規範那個叫做”People first”(人命關天)
因此有關威脅到人命的問題,都必須以人為最先安全,例如機房著火,不可能叫管理人員去滅火
警衛可能會有遇到帶槍的入侵者,因此最好有防彈的設備或設施。

那麼做實體安全上的主要目的有那些呢?deter(威嚇)、delay(延遲)、detect(偵查)、assess(評估)、Respond(回應)
deter(威嚇):主要是讓攻擊者或入侵者打消意念。
delay(延遲):增加偵查的時間及增加回應的時間和機會。
detect(偵查):偵測雖然是推測攻擊者的意圖,但我們不可能一直延遲攻擊者去做任何攻擊的動作,偵測必須更加有效且即時。
assess(評估):是比較舊的說法,指第一份的回報一般而言都是警告,第一次偵測時,往往需要時間去評估次回攻擊的方法。
Respond(回應):這個動作是指在發生任何事件(event)時,在它成為事故前應涵蓋在事故回應計劃之內。

那麼實體安全上又有那些威脅,從最大的範圍一路到中心核心,最大的範圍像是自然的環境,次之則是工具系統
再來就是人為的問題了…
Natural/Environmental(自然環境):像是考慮大自然的問題,例如水災、颱風、地震,在整個環境之前,
應先針對所在的地點問題加以防範,例如:台灣地處於地震帶,又是容易有颱風及海洋型氣侯,那麼在選擇機房設置時
當然要特別設計,若將機房設置在地下室,如果到時侯因為颱風淹水時呢?再來,海洋型氣侯空氣較為鹽濕
那麼備份的磁帶應該要置放於更好的保存環境,再來因為地震發生的問題,像是921,台北不少地方都有崩塌
那麼在選擇工作處所時,是否要考慮一下建築物的防震系數。
Utility Systems(工具系統):這個是相當容易理解的,像是水電、空調(HVAC),考慮到有可能因為供電的問題造成電力全失
因此在選擇電力進入配電盤時,應該選擇兩個不同的變電所所提供的電源,而UPS的配置也應該要考慮有所備援
甚至連伺服器所用的雙入電源,也應該選擇兩個不同的電力主線,以免機房電力問題而造成服務中斷,空調的部份
也應考慮到其溼度、溫度(溼度太高設備會鏽蝕、太低會有靜電),畢竟是給機器散熱用而非給人員使用
因此機房的HVAC不應該讓任何人員都可以操作,而也應該要將人員操作的環境和機房分隔,
以避免影響人員的健康問題
Human-made/Political Events(人為或是政治事件):像是爆炸、故意破壞、偷竊、恐佈攻擊、暴動…等等問題
據IDC的統計,所有的資安事件有80%是人為的因素,例如像誤觸電源、拔錯線…等等問題
此類問題應該建立好的事故回應計劃和好的預防(Preventative)計劃

那麼會有那一些惡意的行為威脅到安全的對策?
Theft(偷竊):針對偷竊的對稱包涵有電子門禁系統(EAC)、入侵偵測(IDS)、門上鎖、鑰匙的控制還有入侵陷阱。
Espionage(商業間碟):商業間碟一定是有特定的目標,最佳的處理方式可以由進入公司的背景確認(background check)、職務輪調(job rotations)。
Dumpster Diving(廢棄物處理):公司內的機密文件的廢棄作法與一般文件應該要有所不同,若以相同的方式,可能對手直接買通清潔公司
將要廢棄的文件直接運往對手那邊,因此在廢棄的重要文件應該要有其廢棄的policy和procedure,例如軍方的做法,銷毀要有監銷官。
Social Engineering and shoulder surfing(社交工程及肩窺):這些問題可以透過教育訓練及其它的相關抽查方法,來驗證是不是有效的教育。
HVAC;Heating, Ventilation and Air Conditioning Access(熱對流及空調存取):如上所提的,機器使用的HVAC應與人員使用的分隔
尤其是針對那些特別的區域應該有良好的控制原則。

經過以上的基本幾項實體環境安全的問題的解說,大家是不是有體會到實體安全不只是只有周星馳電影中的保安問題,更多的議題是在人的問題
因此這些問題都必須透過好的管理規則並且落實,這樣一來,資安不會因為做而做,而變成型式上的空談…

K書筆記本-Cryptography(09)

法律問題…
上篇提到密碼學的應用會有法律上的問題,見鬼了,用應用密碼會有什麼問題呀,其實密碼學的應用是為了隱藏不想讓別人知道的秘密
若今天黑道份子在傳遞一些交易訊息時,利用了密碼系統將這段訊息重重的加密,並且用的是較高階的密碼系統
那麼…情治單位真的拿他們沒辦法了,因此在密碼學法律問題常就有三個議題類型:輸出控制、輸入控制及國內使用控制。
輸出控制是希望將國內較嚴僅、用於情治使用的密碼系統或密碼系統產品流出,以避免被他國的情治單位取得而加以破密分析。
輸入控制則是降低由國外輸入較高階的密碼系統,以避免滲透的情治人員利用這些密碼系統穿透了國安系統。
國內使用控制較為廣義,泛指所有使用國內密碼系統的人應該要加以控制。

密碼系統的應用上,確實帶給我們很好的機密的資訊隱藏,本義是很好的東西,但是就怕利用的人心懷不軌,因此在法律上的議題
除了國際間的相互合作外,很難有其它更好的方法來抵制密碼系統應用於壞的用途,其中國際間現在共有的一些規範
也有針對軍方使用的一些合約協定,像Wassenaar Arrangement(瓦聖納協定)主要是針對一些較不安全的國家,將較敏感的高科技技術輸入
例如像是中國、北韓、伊拉克等等的條文,現在簽署的國家已超過四十個。
還有像是歐洲防制網際網路犯罪委員會(Council of Europe Convention on Cybercrime),雖然名為歐洲,但是會議的觀查員都是來自於其它國家
當然,歐盟本身針對他們所使用的密碼系統,也加以聯合統一管理,針對破密分析工具則不會輸出給其它國家
法律上的本質是以限制,原因是被一旦遭到洩漏,可能造成的傷害會超過於國家經濟的收入,但是於學派立場,則是希望開放密碼系統的輸出入
如此一來,各國或是其它學術機關就可以針對其它密碼系統的強項,來補足自已的密碼系統不足的地方,這個是很兩極的議題
至今仍然是被置於天平的兩端之上。光是一個密碼系統,不管是加密還是破密分析,都一再的強調對經濟、國安上的衝擊
若是貿然的進行,當然會造成相當大的傷害,因此對於此部份,也只能交給時間來處理了。

破密分析
破密分析是研究密碼系統或是演算法強度的一種挑戰,其中,到底那些面向要考慮的呢?
Key Space:到底有多少的支key可以被拿來應用。
key size:可用的key的長度為多少,雖然不是愈長就愈強,但是在破密的分析中,差1bit就天南地北了。
演算法本身:開發一個密碼演算法,是必須達到一定的強度,預防破密分析快速的找到演算的規範。
正確完成:太多的問題是與密碼完成時沒有選擇對的架構就產出這個產品,其中包含key management, Social engineering,亂數產生的掌握
不夠的配對組合,很容易就被找到問題的所在。
當然,在破密分析上面會針對一些密碼系統的幾個方向來找問題,也是密碼系統的幾個常見的弱點,其實與上面所提到的內容差異不大…
不好的key management:可使用的Key太少,不夠隨機,或者是key的加密與資料的加密是同一把key。
Malleability(延展性):一個密碼系統的若在演算明文產生為密文的過程中而附加上次的資訊可能讓明文與密文產生某種連結的關係,
而容易使Chosen-ciphertext attack成功的破密。
不好的亂數產生及過度的發散或造成混亂,這些都有可能成為破密分析中得分的那一球,破密分析不一定是要做某種數或是值的取出
更深層的意義是告訴我們應該使用更安全的密碼系統,一個封閉的演算法並不一定是安全的,接受大眾公開的驗證並且修改到可接受的範圍
這樣的心態才能正確的使密碼系統更加安全,例如選用標準的解決方法(FIPS140、Common criteria evaluation)、
高工作因素的(例如:破密的過程與取出的內容效益與時間比不成正比的),再來就是上面所提到的,選擇接受公開驗證的密碼演算法。

那麼到底破密分析有那一些目標呢?其實,有人認為,破密是一門科學藝術,因為它所投入的往往是一場耗費多時只有一點點進度的比賽
但一但找到關鍵點,則會找出讓人覺的不可思議的問題,基本上破密分析共有:
Attacking the Key, Algorithm, Implementation, Data (ciphertext or plaintext), People(Social Engineering),
一位很有名的駭客說的:往往Social engineering是最有效的破密方法,我直接取得key,也直接取得密碼演算系統,我的目的只是它傳遞的訊息
當然,破密的技術又有那一些呢?
Brute-force attack:大家應該不默生吧,這個叫做暴力破解,但暴力破解可不是猜密碼給系統去演算對或不對喲…,
幾乎任何加密系統沒有暴力破解解不開的,根據摩爾定律(每隔18個月,處理器的速度加倍提升),但是暴力破解還是有條件的
它必須先取得密文,接下來就是時間與密碼系統的竸賽了。

破密攻擊
常見的攻擊就以明文(Plaintext)與密文(Ciphertext)來區分,當然各別的破密攻擊的作用和需求就完全不同了
在明文的攻擊方面(主要是為了取出key或是演算法的內容)
known-Plaintext attack(已知明文攻擊):這個並不是只有取得明文喲,是連密文都知道的,透過這個組合去了解演算法的內容和key。
Chosen Plaintext attacks(選擇明文攻擊):是指一次丟好幾組的明文到演算法中,去觀查其密文的變化進而找到key。
Adaptive chosen plaintext attacks(適合的選擇明文攻擊):以選擇某一組明文並且修改去觀查密文的變化,也是用來找到以密文反推明文方法。

在密文的攻擊方面(主要是為了知道其明文的內容)
Ciphertext-only attack(僅有密文攻擊):利一堆密文希望可以還原出明文來,此類型的攻擊現代密碼學幾乎是不可能成功了。
Chose-Ciphertext attack(選擇密文攻擊):已經知道密文轉回明文的方法,以自選的一組密文來推出明文是什麼。
Adaptive Chosen Ciphertext attack(適合的選擇密文攻擊)與Adaptive chosen plaintext attacks相反,精選的密文來測試演算法。

在上述的破密攻擊中,只有know plaintext attack是已取得一組密文和密文的組合,其它都是只有取得密文或明文
其它的還有幾種基礎的攻擊,像是:
Meet-in-the-middle attack(中途攻擊):是成攻的破解DDES的分析法,藉以取明文與密文之間的變化去取得演算法的內容,屬於know plaintext attack。
silde attack:以觀查key schedules的重覆、具體的使用去推演出下一個key。
Main-in-the Middle attack(中間人攻擊):又稱為雙面人攻擊,即是attacker對Jason偽冒Silvia,對Silvia偽冒Jason,任何傳遞的資訊都被attacker看光了。
Side Channel attacks:這個就難解釋了,是一種透過觀查其周邊的洩露出來的訊息做攻擊,例如演算RSA時用掉的電量、時間、時頻…等等周邊的
資源的消耗來試圖推算出金鑰,但是…這個方法不需要使用任何的密碼系統露洞,就可以進行分析,雖然有學者稱為欺騙
但破密分析最終就是要找到KEY。

另外,針對不同的Ciphers,不論是以Stream或是block的特性不同,也有不同的應對攻擊:
Stream(串流):Frequency(頻率)分析及Statistical(統計)攻擊,如果IV, keystream不夠random,則容易受到這兩種攻擊而解出key.
Block(區段):linear(線性)破密分析、Differential(差分)破密分析, linear-Differential(線性差分), Algebraic(代數)攻擊、frequency(頻率)攻擊。
以上的分析或是攻擊法都在前面的章節中有說明,在此就不再特別說明了。

而hash functions也有兩個基礎理論的攻擊法,Dictonary(字典) attacks以及Birthday(生日) attacks,這兩種攻擊都有個別的特性:
Dictionary attacks:是以找到特定文字的hash組合,一般是用來猜password的功能,另外最近常見的是Rainbow table
需預先去產生所需的text-digest pairs資料庫,也是屬於Dictionary的一種。
Birthday attacks:是基於一種一個班級的學生有23人生日是同一天的機率高到50%,若人數達到60個人,則機率更達到99%,同理,在有限的長度之下
要產生一組hash有可能重覆的機率就大幅的提升。

以上的攻擊都是屬於科技端、數學理論的攻擊,當然也會有非科技型態的攻擊,其中最好用的就是Social Engineering
最好的方法就是針對未有資安概念的實員進行攻擊,尤其是在整個開發的過程隨即攻擊相關人員,預先取得密碼演算方法或是key。
另外…在國外的影集常常出現的,偷竊是建構在實體安全之上的,雖然資料被經過加密,但若我連設備和加密工具一起偷竊走,那麼即使是再強的
密碼演算系統,恐怕…也沒有太大的用處了…

Steganography(隱匿法)
這是一種將資訊隱匿起來的一種密碼方法,一般是使用在於儲存圖片的資訊,以每一個區段中的最後一個bit裡面,因此可以隱藏一些資訊,
也可以說是一種cover channel,在這種方法之上,就容量上來看似乎沒有差別,在肉眼的看來,也沒有啥差異,但是…透過MD5 Hash value中
可發現兩張圖片就很大的差異…實作的部份可以透過像s-tools來達成。

接下來像是數位浮水印(digital watermarking)、數位權利管理(Digital Right Management),數位浮水印是將一個數位的資訊、版權簽入
屬於一種隱匿法,一般又分為可見和不可見的分類,可見的是像一般的浮水印一樣,崁在檔案中,而不可見則是將檔案做小符度修改
使用者並不會有太大的查覺,但是透過修改時則無法被存入,這除非有所有人的授權,否則是無法將浮水印移除抹滅的。
DRM則是則是將數位浮水印的技術延伸去用來保護數位媒體,它結合了硬體及軟體的框架,當然DRM也是一種隱匿法
如果一個具有DRM的檔案移轉到另一台電腦上去使用,因該台電腦並沒有取得DRM的授權,則無法使用這個檔案,也會被禁止使用。

密碼學這個領域雖然組合了密碼系統及演算法,但是更重要的是著重在訊息完整訊控縐,而數位簽章及憑證的應用也加強了訊息的安全強度
最後,跟大家討論破密分析及密碼的應用,尤其是一些資訊隱匿的方法,都是密碼的實際應用,希望這章節可以給大家帶來一些實際應用的想法。

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

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