「子非魚,安知魚之樂。」
在介紹協定之前,
我們要來介紹一個非常重要的概念,叫做憑證頒發機構(Certificate authority, CA)。
想像你今天要和一個人通訊,而我們使用的是公鑰密碼系統。
你怎麼知道對方的公鑰到底是哪一個?
他就寫在那啊,對吧。
對啊,但你怎麼知道是「他」把他寫在那的?
所以問題來了,假設你今天用了錯誤的公鑰進行公鑰加密傳輸重要的資訊,
然後你以為你把訊息傳給了BOB,結果傳給了OSCAR,
那問題就大了。
如果你今天傳送的不是普通訊息,比如「吃什麼?」,
而是傳送了你的信用卡密碼,
那這就是一個很大的問題。
而這個問題是可以被惡意造成的。
前幾天有個新聞,說美國的一個男子被惡意錢包偷走了 16.4552 顆比特幣。(那可是超多錢啊)
而偷走的方式是使用中間人攻擊。
什麼是中間人攻擊?
拿第一天的例子好了。假設你要傳訊息給漂亮女生說「你好漂亮」,
但是你沒有親口告訴他,
你請了班上的一位同學幫你傳話,
結果好死不死,那個同學超討厭你,
他把你要傳的話改成「你好醜,醜死了」,然後跟漂亮女生講。
而這位同學,就是 OSCAR,也就是中間人(man-in-the-middle)。
真正的中間人攻擊和上面的例子不同的地方是,
這種攻擊是可以主動製造的。
也就是你壓根兒不知道自己請了一個人幫你傳話。
看一下這張圖,比特幣被偷走的事件可能是這樣發生的。
受害者載了一個惡意軟體,而這個軟體是一個錢包軟體,他可以用來打幣(轉帳)給別人。
所以要使用這個軟體,理所當然的你必須提供你要轉入的地址。
你告訴這個軟體你要把多少錢轉到哪個地址裡。
一個正常的軟體應該要幫你把這個訊息原封不動地放到網路上等著礦工來打包。
結果他幫你換了個地址,把你的錢打進了他自己的錢包裡。
回顧一下 Diffie-Hellman key exchange,
你就可以知道,中間人是可以主動進行攻擊的。
Alice 和 Bob 都會以為自己在和對方通訊,其實兩人都在和 Mallory 通訊。
因為在一開始建立密鑰時,他們都以為 Z 是對方的公鑰,因為根本沒辦法知道 Z 是不是對方的公鑰。
這個問題非常嚴重,因為所有的公鑰密碼系統都有可能遭受中間人攻擊。
所以我們需要一個認證機構,
而這個認證機構就叫做CA。
CA在做的事情,就是驗證你真正擁有這個公鑰。
如果他認證此人真正擁有此公鑰,那他就會頒發一個數位憑證,那其實就是用他的私鑰做簽章。
所以 CA 自己也會有一個公鑰和私鑰,私鑰用來簽章,公鑰讓使用者驗章確認數位憑證。
這把私鑰必須保管的非常好。
而有使用者、CA、資料庫,CA為使用者頒發憑證的這件事,就叫做公鑰基礎建設(PKI)。
明天會來講 TLS/SSL ,以及HTTPS
其中就會使用到 CA 的概念。
圖片來源:
https://memes.tw/image/5732
https://tenor.com/search/bad-laugh-gifs
https://commons.wikimedia.org/wiki/File:Man-in-the-middle_attack_of_Diffie-Hellman_key_agreement.svg
參考資料:
https://threatpost.com/man-sues-parents-teens-hijacked-1m-bitcoin/168964/
https://www.wallarm.com/what/what-is-mitm-man-in-the-middle-attack