ref: https://dlorenc.medium.com/improving-tofu-with-transparency-da674aa2879d
本篇文章要介紹的是一種名為 TOFU 的認證機制,其全名為 Trust-On-First-Use.
要探討這個機制前,作者先列舉一個情境
假設你人要到火車站去找一個名為 Alice 的人交換手提箱,你要如何於火車站正確的找到 Alice?
# Nothing
最基本的情況就是你看到每個人都詢問,你是不是 Alice,但是任何人都可以說謊假裝自己是 Alice,因此惡意攻擊者跟 Alice
一樣都可以輕鬆回答你「我就是 Alice」,顯而易見這種機制基本上沒有辦法幫助我們找到 Alice,也沒有辦法分辨到底眼前的人是惡意攻擊者還是 Alice。
一種改善的機制就是 PKI (Public Key Infrastructure),該機制的概念是
1. 有一個第三方服務會發行相關的 ID 證件,該 ID 證件難以偽造 (譬如 Certificate Authorities)
2. 你信賴這個第三方服務
所以你到火車站之後,每遇到一個人就要求對方出示其 ID,並且請第三方服務幫忙驗證這個 ID 證件是否合法,透過這種概念來找到到底誰是 Alice。
這種機制運作起來沒有問題,唯一的問題就是找到一個可信任的第三方服務相對複雜且困難。
有沒有一種相對簡單又有點有效的機制? 就是本篇要探討的 TOFU
假設情境改成,今天需要頻繁的到火車站去找 Alice 交換行李箱,這件事情會重複非常多次。這種情境下,我們可以
記住第一次遇到號稱自己是 Alice 的那個人,接下來每次都找該人交易。
簡單來說就是,相信第一次遇到的人,並且記住該人的狀態與面貌,接下來每次交易都直接尋找上次熟悉的面孔。
網路世界來說,一個非常知名使用 TOFU 的軟體就是 SSH。
SSH 使用者第一次連線到遠方 Server 時會相信自己連接到的是正確的 Server,同時將 Server 本身的指紋資訊給存入到本地快取。
因此接下來每次連接到該 SSH 的時候,就直接比較 Server 的指紋是否一致來確定是否連線。
這個機制聽起來很可怕,不過對於這種「很難預測第一次連線的 Server 是誰的狀態」的情境是滿堪用的,畢竟不容易一開始就被偽裝攻擊。
另外一個使用 TOFU 機制的概念就是 supply-chain security,假設你要透過 Packager Manager 來使用不同版本的 Package
這種情境下系統要如何信任每次抓到的 Package 都是正確的?
透過 TOFU 的機制將每個 Package 的 Hash 值都存放 local,這種情況下就可以去比對第二次,第三次下載的內容是否一致。
不過對於 CI 環境下,要一直維持 local cache 實在不容易,因此 Trust-On-First-Use 就會演化成另外一種 Trust-On-Every-Use.
文章後續還介紹 golang 生態系的 go get 是採用何種機制去信任每次下載的 library,對於這篇文章有興趣的不要錯過
「public key ssh」的推薦目錄:
- 關於public key ssh 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於public key ssh 在 BorntoDev Facebook 的最讚貼文
- 關於public key ssh 在 Checking for existing SSH keys - GitHub Docs 的評價
- 關於public key ssh 在 Generate a Secure Shell (SSH) key pair for an SFTP dropbox 的評價
- 關於public key ssh 在 SSH Keys for GitHub 的評價
- 關於public key ssh 在 Copying Your Public Key Using ssh-copy-id - Stack Overflow 的評價
- 關於public key ssh 在 Chapter 10 Set up keys for SSH - Happy Git and GitHub for the ... 的評價
public key ssh 在 BorntoDev Facebook 的最讚貼文
😁 สวัสดีจ้า วันนี้แอดจะพาเพื่อนๆ มาทำความรู้จักกับ SSH มันคืออะไร? มีความสำคัญยังไงกันนะ ? มาหาคำตอบได้ในโพสต์นี้เลยจ้า !!
.
🔥SSH หรือ Secure Shell เป็นโปรโตคอลสื่อสารที่ทำให้เครื่องคอมพิวเตอร์ 2 เครื่อง สามารถสื่อสารในระยะทางไกลพร้อมกันได้ สร้างขึ้นมาแทน Telnet ที่ไม่มีการเข้ารหัส ซึ่งเจ้า SSH จะมีการเข้ารหัสทำให้สามารถสื่อสารได้อย่างปลอดภัยมากขึ้น
.
📑 การใช้งาน
หากเพื่อนๆ ใช้ Linux หรือ Mac จะใช้ SSH ได้ง่ายมาก ซึ่งจะมีคำสั่ง ดังนี้
.
👉 ssh {user}@{host}
.
คำสั่งนี้จะเป็นการขอเปิดการเชื่อมต่อ Secure Shell ในเครื่องที่ต้องการ โดยที่ {user} คือบัญชีที่ต้องการเข้าถึง และ {host} คือคอมพิวเตอร์ที่ต้องการเข้าถึง เช่น IP Address (244.235.23.19) หรือ ชื่อโดเมน (www.google.com)
.
และเมื่อกด Enter จะได้รับการแจ้งให้ป้อนรหัสผ่านสำหรับบัญชีที่ทำการ Request แล้วรหัสนั้นจะถูกส่งไปยังเครื่องที่เราจะต้องการเชื่อมต่อ หากรหัสถูกต้องก็จะเป็นการเชื่อมต่อสำเร็จ
.
🌈 การเข้ารหัสของ SSH มี 3 แบบ นั่นคือออ
.
🌟 1) Symmetrical encryption - เป็นการใช้ Symmetric keys เข้ารหัสข้อความส่งไปยังฝ่ายตรงข้าม และสามารถใช้เพื่อถอดรหัสข้อความที่ได้รับ SSH จะใช้ Symmetric keys เพื่อเข้ารหัสการเชื่อมต่อทั้งหมด ซึ่งจะช่วยในเรื่อง Authentication และสามารถป้องกันการสอดแนมได้นั่นเอง
.
🌟 2) Asymmetrical encryption - จะใช้ 2 Key ที่แตกต่างกัน คือ Public Key และ Private Key เพื่อเข้ารหัสซึ่ง Public Key SSH ใช้ Asymmetrical encryption เพื่อรักษาความปลอดภัยในการสื่อสารระหว่างฝั่ง Client และ Server
.
🌟 3) Hashing - ใน SSH จะใช้ Hashing เพื่อตรวจสอบความสมบูรณ์ของข้อมูล และเพื่อตรวจสอบความถูกต้องของการสื่อสาร ใช้งานใน Message Authentication Code (MAC) และ Hashed Message Authentication Code (HMAC) เพื่อตรวจสอบให้แน่ใจว่าข้อมูลที่ได้รับไม่มีความเสียหาย และไม่มีการแก้ไขนั่นเอง!
.
เป็นยังไงกันบ้าง พอจะเข้าใจ SSH กันมาบ้างแล้วเนอะ แอดหวังว่าจะเป็นประโยชน์กับเพื่อนๆ นะคะ ถ้าใครมีอะไรเพิ่มเติมสามารถคอมเมนต์ไว้ด้านล่างได้เลยน้า ❤️
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
public key ssh 在 Generate a Secure Shell (SSH) key pair for an SFTP dropbox 的推薦與評價
SSH is a network protocol that ensures secure data transfer. SSH authenticates you using public-key cryptography. You create a pair of keys: a private key that ... ... <看更多>
public key ssh 在 SSH Keys for GitHub 的推薦與評價
SSH keys come in pairs, a public key that gets shared with services like GitHub, and a private key that is stored only on your computer. If the keys match, you' ... ... <看更多>
public key ssh 在 Checking for existing SSH keys - GitHub Docs 的推薦與評價
Check the directory listing to see if you already have a public SSH key. By default, the filenames of supported public keys for GitHub are one of the ... ... <看更多>