很多人聽到密碼學一定都嚇得逼逼挫,
感覺密碼學就很難很多數學很複雜,
不用擔心,其實,我也是跟各位一樣的啦哈哈。
但其實我也不討厭數學,嚴格說起來算是喜歡的,
以前高中就會自己跟同學參加數學檢定考試,
之後在機械系微積分、工程數學也都不錯,
還有流體力學、熱傳學、一直到計算流體力學,
當中也是碰到了許多與數學相關的內容,
甚至在準備轉職的時候,接觸了機器學習裡面也是不少數學。
話雖如此,我還是會怕密碼學der
但今天這篇的內容阿,沒有甚麼數學啦,
假密碼學基礎的密碼學基礎,所以真的不用擔心。
列出了一些與密碼學或是加密有一點點相關的基礎內容,
但如果你想找的職位是真的跟密碼學有密切關係的,
也許真的是要花時間去搞懂像是AES、RSA、MD5、RC4等等不算演算法,
彼此的原理,還有如何實作,這個其實網路上跟不少書籍也都是有教學。
我自己比較接近這種「數學」的密碼學,
大概也是在玩picoCTF的時候,裡面有密碼學的類型,
只有那個時候花了比較多的時間在研究加密模塊還有RSA原理。
不過以身為滲透測試工程師的角度來說,
其實對我的幫助算是很低的,
實際執行專案通常不會碰到需要知道太多密碼學演算法之類,
如果真的有與加密相關的漏洞,
多數也是可以利用公開的exploit或是其他檢測工具利用漏洞或找出風險。
而且我執行專案多數測試與網站相關,網站傳輸中的加密就是SSL/TLS,
所以今天後面的不少內容也都是跟SSL/TLS有關。
與其說瞭解AES演算法甚麼的,對於想學習Web安全與滲透的人,
我比較建議先了解SSL/TLS的整個原理與流程。
照慣例,每篇文章都會附上第一篇的文章,讓大家了解一下這系列文章說明
https://ithelp.ithome.com.tw/articles/10264252
雜湊是一種單向的加密演算法,也就是你丟了一串內容A進去之後,會產生出來內容B,並且內容B理論上是無法推算回得到內容A。並且HASH通常具有幾個特性,像是當輸入的內容有非常少的改變,算出來的結果也會整個不同,還有就是不管輸入的內容多長或多短,輸出的內容長度固定。
當兩個不同的內容A與內容B,都利用同樣的HASH演算法得到同樣的內容C,這樣則為碰撞。
對稱式密碼學當中加解密通常是使用同一把金鑰;而非對稱式加密中,加解密為不同的金鑰,會有一對金鑰,分別為公鑰與私鑰,公鑰加密的內容必須用私鑰才能解開,而私鑰加密的內容也必須要利用公鑰才能解開。
每一個加密區塊,同樣的明文資料加密後,會得到一樣的密文。
Padding Oracle attack
通常非對稱加密當中,私鑰為自己擁有,而公鑰為其他所有人可以知道的。在傳輸加密的訊息時,通常是利用公鑰加密資訊,來達到資訊的機密性,因為只有我有私鑰,只有我可以解開看到裡面內容。數位簽章則是反過來利用私鑰去對要傳輸內容進行加密(簽章),達到資料的完整性,因為每個人都有我的公鑰,而只有我的公鑰可以正確解開我的數位簽章,也就確認了這個內容必定是我傳送的。
SSL與TLS是一種通訊協定,目的在於替傳輸中的訊息進行資料的安全及完整性。SSL是比較就的協定了,現在幾乎都是TLS。
前向保密是通訊協定中的一種安全特性,指的是過去的傳輸訊息不會因為未來金鑰遺失,而導致過去資料被解密,造成資訊洩漏。
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS表示協定、ECDHE表示密鑰交換的演算法、ECDSA是認證的演算法、AES為表示256位元並且CBC加密模式的加密演算法、SHA384表示MAC驗證算法。
Heartbleed、BEAST attacks、POODLE attack、SSL Strip...
對數學或是加密演算法有興趣的,
我覺得可以先研究看看RSA跟橢圓曲線密碼學,
先看看合不合胃口XDDD。
若有要補充也都歡迎留言