微微介紹
bottender
主要功能為建立電腦之間 (經過加密) 的 tunnel
是一個協定 (約定)
HTTPS 也有加密
利用 HTTPS 溝通的話,可以算是 tunnel 嗎
HTTP/HTTPS 不被認為是 tunneling protocol
的原因可能是他主要不是被用來傳送別的協定
將其他應用層的協定封裝在負載部分
(大部分)
TCP 是另外一個協定
什麼是基於
A
B
A 寄信給 B
樓層信件管理員
辦公室信件管理員
大樓信件管理員
郵局
樓層信件管理員
辦公室信件管理員
大樓信件管理員
郵局
郵差送信
上層基於下層
A 和 B 的溝通是基於辦公室信件管理員的服務
辦公室信件管理員的服務是基於樓層信件管理員的服務
樓層信件管理員的服務是基於大樓信件管理員的服務
...
每一層知道下層幫他完成什麼跟他要幫上層完成什麼
基於
借會議室基於
網際網路協定套組
https://upload.wikimedia.org/wikipedia/commons/0/0f/Ssh_binary_packet_alt.svg
將其它應用層的協定 (例如 HTTP)
封裝在負載部分
A
A1
B1
B
A 想要寄明信片給 B
但是他可能不想或是不能直接寄給他
A1 和 B1 就是 ssh connection 的兩端
server & client
A 把明信片寄給 A1
B1 拿到打開來
把明信片寄給 B
A 利用 A1 和 B1 間的「通道」來和 B 溝通
A1 把 A 的信包起來傳給 B1
3 個階段
(server authentication)
可能會用 public key & private key
client 用 server 的 public key 加密一段訊息 傳給 server
server 解開來傳給 client 證明他有相對應的 private key
第一次的話有風險
client 要事先知道 server 的 public key
才能避免可能有人騙他
client 要確認自己有找對 server
(key exchange)
雙方要協調出 shared secret (key) 跟 hash function
對稱加密 (shared secret)
用同一把 key 加解密
要想辦法讓參與的人知道 key
非對稱加密 (public key & private key)
用對方的 public key 加密
用自己的 private key 解密
public key 公開,private key 只有自己留著
非對稱加密
因為 public key 是公開的
public key 跟 private key 又有一定的關聯性
要達到跟 shared secret 差不多的強度
key 的長度需要長很多
所以加解密會慢很多
Diffie-Hellman
一個 ssh connection 下還有分 channel
可以同時做很多事
用 layer 的角度來看
Appication
Client
Appication
Server
ssh
ssh
tunnel
Listen 端
Forward 端
Appication
Client
Appication
Server
ssh
client
tunnel
ssh
server
Local 端
Server 端
ssh -L [local_port]:[forward_to_host]:[forward_to_port] [ssh_user]@[ssh_host]
Appication
Client
Database
Server
ssh
client
tunnel
ssh
server
Local 端
Server 端
受保護的網路
但可以 ssh 到某一台
Appication
Server
Appication
Client
ssh
client
tunnel
ssh
server
Local 端
Server 端
ssh -R [remote_port]:[forward_to_host]:[forward_to_port] [ssh_user]@[ssh_host]
Appication
Server
Appication
Client
ssh
client
tunnel
ssh
server
Local 端
Server 端
私人網路
公開位址
只要可以 ssh 到遠端機器
就可以用遠端機器的資源來開發
(chi 介紹的)
如果我想要用公司的 mac mini 來開發...
就要 ssh 到 公司的 mac mini...
但是公司的 mac mini 沒有直接對外開 ssh 的 port...
mac mini
ssh
server
ssh
client
雲端 server
ssh
server
家裡電腦
ssh
client
remote
forwarding
local
forwarding
Barrett, D. J. , & Silverman, R. E. (2001).
SSH, the Secure Shell: The definitive guide. Cambridge, MA: O’Reilly & Associates, Inc.
...
message authentication code
已經可以保證資料完整性了?
還需要防止別人更改或亂丟訊息
或是重送攻擊