通訊概論
歡迎來到通訊 (Communications) 的學習筆記!在本節中,我們將探討電腦如何確保資料安全、如何在傳輸過程中檢查錯誤,以及電腦內部的不同組件是如何相互溝通的。無論是你正在傳送一則文字訊息,還是你的 CPU 正在與 RAM 溝通,「通訊」都是電腦科學的心臟。別擔心,如果剛開始覺得內容很多,我們會將其拆解成簡單易懂的小單元!
1. 基本加密方法
當我們傳送資料時,不希望駭客或「竊聽者」讀取內容。加密 (Encryption) 是一個使用演算法 (Algorithm) 將可讀的資料(明文,Plaintext)轉變為雜亂無章的代碼(密文,Ciphertext)的過程,只有擁有正確密鑰 (Key) 的人才能理解。
必備術語:
• 明文 (Plaintext):原始且可讀的訊息(例如:"Hello World")。
• 密文 (Ciphertext):加密後、無法直接閱讀的訊息(例如:"Sffbu Xpsme")。
• 密碼 (Cipher):用於加密資料的秘密方法或演算法。
• 密鑰 (Key):由密碼所使用的一串秘密資訊(例如密碼或數字),用於鎖定或解鎖資料。
凱撒密碼 (Caesar Cipher)
這是最古老且最簡單的密碼之一。它的運作方式是將字母表中的每個字母向後移動固定的位數。
例子:若位移量為 3,'A' 會變成 'D','B' 會變成 'E',依此類推。
為什麼它很脆弱?
1. 只有 25 種可能的密鑰(位移量)。電腦可以在瞬間嘗試所有組合!
2. 它容易受到頻率分析 (Frequency Analysis) 的攻擊。在英文中,字母 'E' 非常常見。如果某個特定的符號在密文中出現頻率很高,那它很可能就是 'E'。
3. 一旦你破解出其中一個字母,你就知道了整段訊息的位移量。
弗納姆密碼 (Vernam Cipher) —— 「完美」的安全性
弗納姆密碼很特別,因為如果使用得當,它是數學上無法破解的。要達到「完美安全性」,必須滿足以下條件:
• 密鑰必須是完全隨機的。
• 密鑰長度必須至少與明文一樣長。
• 密鑰必須僅使用一次(通常稱為「一次性密碼本,One-Time Pad」)。
• 密鑰必須在寄件人和收件人之間嚴格保密。
快速回顧:凱撒密碼之所以「脆弱」,是因為它很容易被猜到。弗納姆密碼之所以「完美」,是因為它沒有任何規律可循!
對稱與非對稱加密
• 對稱加密 (Symmetric Encryption):使用相同的密鑰進行加密和解密(例如:凱撒密碼和弗納姆密碼)。這裡最大的問題是密鑰交換問題 (Key Exchange Problem)——如何在不被駭客竊取的情況下,將秘密密鑰傳送給你的朋友?
• 非對稱加密 (Asymmetric Encryption):使用兩個不同但數學相關的密鑰(公開密鑰和私有密鑰)。這解決了密鑰交換問題,因為你永遠不需要分享你的私有密鑰!
關鍵摘要:加密將明文轉為密文。弗納姆密碼是唯一能提供完美安全性的加密方式,前提是密鑰必須是隨機、一次性且足夠長的。
2. 錯誤偵測與修正
當資料從一個地方傳輸到另一個地方時,有時位元(0 和 1)會因為電氣干擾或「雜訊」而發生翻轉。我們使用三種主要方法來偵測這些錯誤:
1. 同位檢查位元 (Parity Bits)
我們在二進位字串中增加一個額外的位元(同位檢查位元),使其中 1 的總數為偶數或奇數。
• 偶同位 (Even Parity):1 的總數必須是偶數。
• 奇同位 (Odd Parity):1 的總數必須是奇數。
例子(偶同位):如果我們要傳送 1011,這裡有三個 1。為了使其成為偶數,我們加入一個 1,結果變成 10111。
2. 多數表決 (Majority Voting)
我們不只傳送一次資料,而是將每個位元重複傳送三次。電腦會檢視這三個位元並進行「投票」。
• 如果接收到 1, 0, 1,電腦會假設該位元原本應該是 1(因為 1 的數量較多)。
• 這非常棒,因為它不僅能找出錯誤,還能實際修正它!
3. 檢查總和 (Checksums)
寄件人會對資料進行計算以得出一個總數值(檢查總和),並將此數值隨資料一同傳送。收件人進行相同的計算,如果收件人的總數與寄件人的總數不符,則表示發生了錯誤。
比較表:
同位檢查 (Parity):簡單,但無法偵測兩個位元同時翻轉的情況。
多數表決 (Majority Voting):非常可靠且能修正錯誤,但傳送的資料量是原本的 3 倍(非常慢!)。
檢查總和 (Checksums):非常適合大型檔案,但需要更多的處理效能來進行計算。
關鍵摘要:同位檢查和檢查總和通常僅能偵測錯誤,而多數表決則能修正錯誤。
3. 內部通訊 (匯流排)
在電腦內部,處理器 (CPU)、記憶體 (RAM) 和 I/O 控制器(例如你的鍵盤或螢幕)需要進行溝通,它們使用「匯流排 (Bus)」系統來完成此工作。
三大匯流排:
將匯流排想像成高速公路,不同的公路運載不同的東西:
1. 位址匯流排 (Address Bus):攜帶資料去往的位置 (Location)。它是單向的 (Unidirectional),從 CPU 到記憶體。如果位址匯流排有 \( n \) 條線,CPU 可以存取 \( 2^n \) 個記憶體位址。
2. 資料匯流排 (Data Bus):攜帶實際的資料或指令。它是雙向的 (Bidirectional),所以資料可以在 CPU 和其他組件之間往返。
3. 控制匯流排 (Control Bus):攜帶指令訊號(例如「讀取」或「寫入」)來協調所有運作。它也是雙向的。
記憶小撇步:以「披薩外送」作比喻
• 位址匯流排:披薩要送往的房屋地址。
• 資料匯流排:實際要外送的披薩。
• 控制匯流排:打電話給店家,指示「製作披薩」或「現在外送」。
什麼會影響效能?
• 匯流排寬度 (Bus Width):匯流排的線數越多,一次能攜帶的資料就越多。64 位元的資料匯流排就像 64 線道的高速公路——比 8 線道的快得多!
• 位址匯流排寬度:這決定了電腦能使用的最大 RAM 容量。
快速回顧:位址匯流排 = 哪裡。資料匯流排 = 什麼。控制匯流排 = 如何/何時。
關鍵摘要:內部通訊仰賴系統匯流排。這些匯流排的寬度直接影響電腦可以定址多少記憶體,以及傳輸資料的速度。
總結檢查清單
✔ 你是否知道明文和密文之間的區別?
✔ 你能否解釋為什麼凱撒密碼很容易被破解?
✔ 你能否列出實現完美安全弗納姆密碼的 4 個條件?
✔ 你能否計算偶數/奇數同位檢查位元?
✔ 你是否理解多數表決如何修正錯誤?
✔ 你能否說出三種內部匯流排及其運作方向?
如果剛開始覺得這部分很複雜也不用擔心!試著畫出匯流排的圖示,或是練習幾次凱撒密碼的位移,你會更清楚它們是如何運作的。你可以做到的!