你的心臟不是對稱的,就跟你的臉一樣。
首先要隆重介紹,密碼學永遠的男主角跟女主角,Alice 和 Bob。
他們兩個是青梅竹馬、是情侶、是老師跟學生、是小王子跟他的玫瑰、是我跟你。
他們代表著互相通訊的兩人。
Alice 永遠想要傳訊息給 Bob,而 Bob 永遠想要知道 Alice 傳了什麼給他
(絕對沒有不讀不回這種事,那是討厭的人才會做的事)
於是Alice 和 Bob 會用各式各樣的加密方式,傳送他們的訊息。
Eve 是個小變態,他會在中途偷聽他們傳了什麼,但是他不會竄改訊息。
但是 Oscar 就沒那麼簡單了,Oscar是壞人,他不僅會偷聽他們的訊息,還會竄改訊息(壞吧)。
除此之外,還有Charlie、Issac、Ivan、Justin、Mallory、Matilda、Peggy、Steve、Walter 等等等等等。
每個人都有不同的能力(好像在玩遊戲),代表著不同的角色。
所謂對稱式加密(Symmetric Encryption),就是加密跟解密用的密鑰是同一個。
對稱式加密相對於非對稱式加密( 又稱公鑰加密 )。
白話文來說,假設Alice 要寄信給 Bob,那麼Alice要將她的信投到Bob的信箱之前,會用一把鑰匙把信箱打開,然後把信投進去(假設他的信箱沒有投遞的孔)。接著Bob要拿信的時候,就用一把一模一樣的鑰匙把信箱打開,得到他的信。
這樣一個用同樣密碼加密跟解密的過程,就叫對稱式加密。
對稱式加密的底下,又分成串流密碼(stream cipher)和區塊密碼(block cipher)。
差別在於,加密是以位元為單位、區塊加密是以區塊為單位。
而串流加密的速度通常比較快、區塊密碼速度較慢。
詳細原理我們留待明後天介紹。
非對稱式加密(Asymmetric Encryption),又稱公鑰加密。
相對於對稱式加密,是一種加密和解密使用不同密鑰的加密方式。
非對稱式加密稍微複雜一些,我舉個例子好幫助理解。
假設Alice要寄信給Bob。
於是Bob就拿出一個盒子和鎖,這個鎖就是公鑰(public key)。
接著Alice把信放到盒子裡鎖起來,寄給Bob。
只有Bob才打得開這個盒子,因為只有他擁有鎖的鑰匙,也就是私鑰(private key)
要注意:這個私鑰需要保藏的非常好。
而私鑰可以推導出公鑰,但是私鑰不能推導出公鑰。
於是在真實情況底下,做為一個收件人,你得先產生一個私鑰、並用這個私鑰推導出公鑰。
接著,公開你的公鑰給所有人。
當有人想要傳訊息給你的時候,他使用你的公鑰加密他要傳的訊息,這個訊息一經加密,就只有你解的開。
你收到訊息後,就可以使用私鑰將密文轉換回明文。
由於對稱式加密在不同對象之間就需要不同的密鑰(並且要儲存),
而公鑰加密只需要產生一對公私鑰,只需記住自己的私鑰即可,
所以公鑰加密在密鑰管理上較為方便。
對稱式密較為簡單,因此速度較快。
對稱式加密的密鑰長度較短、非對稱式加密的密鑰較長,
除此之外,運算的複雜度也讓非對稱式加密更為安全。
對稱式加密的特性是,速度快,安全度較低。
非對稱式加密的特性是,速度慢,安全度較高。
而運算的速度跟安全性同等重要,畢竟一個極度安全,但要算到天荒地老的演算法也沒有人要使用吧。
因此在實務上,會將兩者交替使用,之後會再做詳細介紹。
圖片來源:
https://www.reddit.com/r/ProgrammerHumor/comments/8v3mqy/is_this_cryptography_meme_relatable_to_programmers/
https://sectigostore.com/blog/5-differences-between-symmetric-vs-asymmetric-encryption/
https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/
參考資料:
https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/
https://www.digicert.com/faq/ssl-cryptography.htm