iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
3
Security

鯊魚咬電纜:30天玩Wireshark系列 第 9

[Day 6] 這樣算是加密連線嗎?是的,都是SSH

昨天介紹了如果用非加密連線的TELNET協定連到PTT的話,可能會有資料外洩的疑慮,今天則要介紹另一個可以用加密連線來與伺服器互動的方法,就是安全外殼協定(Secure Shell,SSH)協定。

以下就來介紹如何使用加密的SSH連線與PTT伺服器互動。接下來我會以PuTTY來做連線範例,所以會需要使用UTF-8編碼來連到PTT,如果知道怎樣用Big5來連到PTT不會有亂碼的也歡迎分享一下,我還沒試到可以成功的方法。

首先,打開PuTTY,並輸入連線資訊,Host Name輸入bbsu@ptt.cc,Connection Type選擇SSH。

https://ithelp.ithome.com.tw/upload/images/20171225/20107304RnB3b4hOXE.png

接著確認左邊目錄中Window>Translation的Remote character set是不是UTF-8,如果這邊不選UTF-8的話等一下看到的畫面就會有很大的機率是亂碼。

https://ithelp.ithome.com.tw/upload/images/20171225/20107304Zn91ypJXjw.png

沒問題後就按下Open開始連線,並同樣的在帳號輸入iamtesting,密碼輸入password,那這次會收到怎樣的封包呢?

https://ithelp.ithome.com.tw/upload/images/20171225/20107304gq0SkbIa3x.png

這次我們要觀察的是SSH協定的封包,所以在規則欄中輸入ssh後按下ENTER,就可以得到以SSH連線的封包清單。

https://ithelp.ithome.com.tw/upload/images/20171225/20107304nVI0tRV2eE.png

接著來看看封包內容有什麼吧,在第一個封包點右鍵,並選擇Follow>TCP Stream。這是我們看到的封包就完全不一樣了。

https://ithelp.ithome.com.tw/upload/images/20171225/201073043xwcC6nPUh.png

一開始紅框的地方就可以看出雙方是使用SSH連線,從這裡也可以看出來我的PuTTY使用的SSH版本是SSH-2.0-PuTTY_Release_0.67,而PTT主機使用的SSH版本是OpenSSH_7.4p1,另外PTT主機則是Debian Linux系統。藍框的地方是雙方列出支援的各種加密方式,黃框的部分則是雙方開始進行迪菲-赫爾曼密鑰交換(Diffie–Hellman key exchange, D-H)的機制。

https://ithelp.ithome.com.tw/upload/images/20171225/201073045xy2VBm0e7.png

接續上一張圖,黃框的部分還是在進行D-H中,咖啡框的部分則是雙方已經產生了一把密鑰,而我的電腦通知PTT伺服器接下來我們都要用加密的方式來溝通囉!最後,咖啡框以後的就都是加密後的密文了,相信這些密文不只我看不懂,聰明的你們應該也看不懂。

https://ithelp.ithome.com.tw/upload/images/20171225/20107304bfKYmrXuKr.png

補充說明,D-H是一種可以可以在公開管道建立一把密鑰的方式,而SSH就可以利用這種方式,簡單來講,雙方可以先在非加密的連線中雙方建立一個密鑰,接著雙方就可以利用這個密鑰來進行接下來的連線。接下來又要出動我精湛的小畫家畫風來解釋何謂D-H密鑰交換機制囉。

首先我們要先了解,這個機制的目的是要在非加密連線中,同時在雙方產生一把一樣的密鑰,而且必須符合不用透過非加密連線告知對方這個密鑰是什麼,這時我們請小美跟小明出場來幫我們解釋一下,請注意以下的步驟都只是要先產生一把雙方一樣的密鑰,跟流量加密本身還沒有關係。

首先在步驟一,小美跟小明利用公開管道告知對方一個公開的顏色(黃色),接著他們各自選了一個秘密的顏色不告訴對方,小美選了紅色,小明則選了藍色,並寫把公開顏色跟秘密顏色加在一起,於是小美得到了橘色,小明則得到了綠色。

在步驟二時,小美跟小明透過公開管道告訴對方自己加出來的顏色,小美告訴小明自己混出來的顏色是橘色,而小明告訴小美自己混出來的顏色是綠色。這個步驟有一個假設,就是要利用交換的顏色跟公開的顏色推測出秘密顏色是很困難的,因此就算有人竊聽到資訊也幾乎無法進行還原。

接著是步驟三,小美跟小明各自把交換的顏色再加上自己的秘密顏色,並得到最後的秘鑰顏色(咖啡色)。對於雙方來說,最後的到的這個秘密顏色都是由黃+藍+紅所組成的。

最後是步驟四,既然雙方有了共同的密鑰顏色,就可以在不用告知對方密鑰顏色的狀況下,利用此密鑰將接下來所有傳送的資訊進行對稱式加密。

https://ithelp.ithome.com.tw/upload/images/20171226/201073049TOKdBaROp.png

順便一提,如果你是喜歡用網頁版瀏覽PTT(例如Chrome的套件)的朋友,也請記得使用加密連線,這部份明天會有進一步的介紹,也希望大家看完今天介紹完SSH連線的部分,能夠對於使用加密連線能有更深的認識,也請大家最好都使用加密連線來傳送任何資訊喔!


上一篇
[Day 5] 我的PTT哪有這麼不安全
下一篇
[Day 7] 摸摸HTTPS
系列文
鯊魚咬電纜:30天玩Wireshark51
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
魷魚
iT邦新手 1 級 ‧ 2017-12-26 16:01:15

請問一下,如何得知咖啡框就是產生的密鑰@@?

看更多先前的回應...收起先前的回應...
WLLO iT邦新手 4 級 ‧ 2017-12-26 17:02:55 檢舉

不好意思,應該是我的描述比較不精確,咖啡框的部分是我的電腦通知PTT伺服器密鑰已經產生,而不是說咖啡框的內容是密鑰,謝謝。

魷魚 iT邦新手 1 級 ‧ 2017-12-27 08:25:27 檢舉

喔喔 我的意思是倒數第二張圖黃框、咖啡框、無框全部的內文看起來都是.....亂碼,要怎樣判斷正在進行D-H中、通知伺服器密鑰產生、加密後的內文等。先謝謝你的回覆,你的文章很棒,繼續加油:D

WLLO iT邦新手 4 級 ‧ 2017-12-27 13:51:19 檢舉

你好,可以跟封包列表進行交叉比對來得知喔,封包列表(如第4張圖)的下方可以看到以16進位的編碼和ASCII編碼的方式呈現封包的原始內容,再拿ASCII的部分去跟倒數第2、3張的圖對照,就可以知道哪個部分是哪個封包的資料囉~

魷魚 iT邦新手 1 級 ‧ 2017-12-27 13:55:20 檢舉

了解/images/emoticon/emoticon41.gif

我要留言

立即登入留言