歡迎來到第 6 章:保安、私隱與數據完整性!
各位未來的電腦科學家,大家好!這一章非常重要,因為我們將超越單純了解電腦如何「運作」,轉而聚焦於如何確保數據的「安全」與「正確」。在這個萬物皆聯網的時代,理解保安、私隱與完整性不僅是學術要求,更是生活中必不可少的知識。
別擔心某些術語聽起來很生硬,我們會透過你日常生活中會遇到的例子,以淺顯易懂的方式為你剖析。讓我們一起攻克這一課吧!
6.1 數據保安 (Data Security)
理解核心概念:SPI
在深入探討技術措施之前,我們必須先釐清三個學生常混淆的術語:
1. 數據保安 (Data Security)
數據保安 指的是保護數據及其儲存系統,防止未經授權的存取、修改或破壞。簡單來說,就是把壞人擋在門外。
例子:透過密碼和防火牆保護敏感的客戶資料庫。
2. 數據私隱 (Data Privacy)
數據私隱 指的是個人有權控制其個人資料被收集、使用及分享的方式。它確保只有必要的數據會被收集,並且在合乎道德的前提下使用。
例子:確保公司在未經你明確許可的情況下,不得將你的電郵地址出售給廣告商。
3. 數據完整性 (Data Integrity)
數據完整性 確保數據在其整個生命週期中都是準確、完整、一致且可靠的。這意味著數據沒有被意外或惡意篡改。
例子:如果學生的成績記錄為「A」,除非經過特定的授權更改,否則它必須保持為「A」。如果傳輸錯誤導致它變成了「G」,那麼完整性就喪失了。
網絡與互聯網帶來的保安威脅
電腦系統,特別是連接到網絡和互聯網的系統,時刻面臨危險。這些威脅通常分為兩類:蓄意(惡意攻擊)與無意(錯誤)。
惡意程式 (Malware)
惡意程式是專門為了干擾、損壞或獲取電腦系統未經授權存取而設計的軟件。
- 病毒 (Virus): 附著在合法程式上並自我複製,從而造成損害或損壞檔案。
- 間諜軟件 (Spyware): 暗中監控用戶活動(如按鍵記錄或瀏覽過的網站),並將這些資料回傳給第三方。
未經授權存取與社交工程
- 黑客 (Hackers): 擅自進入電腦系統的人,通常是利用軟件或保安措施中的漏洞進行攻擊。
-
網絡釣魚 (Phishing): 一種社交工程,攻擊者會偽裝成可信的實體(如銀行或知名公司),透過電子通訊誘騙用戶洩露敏感資訊(如密碼或信用卡號碼)。
比喻:網絡釣魚就像用魚餌(偽造電郵)來釣取密碼。 -
網域欺騙 (Pharming): 在用戶不知情的情況下,將用戶從合法的網站重定向到虛假網站,即使輸入了正確的網址也一樣。這通常是透過污染 DNS 伺服器快取來實現的。
你知道嗎?網域欺騙比網絡釣魚更高級,因為用戶甚至不需要點擊可疑連結;他們的電腦或網絡會自動將他們發送到詐騙網站。
限制這些威脅風險的核心方法,是將技術措施(如防火牆)與用戶教育(以辨識釣魚電郵)結合起來。
保護系統與數據的保安措施
我們採用多層次防護來保護電腦系統本身(例如防火牆)以及其中儲存的特定數據(例如加密)。
1. 認證與存取控制
這些措施用於驗證用戶身份並控制該用戶被允許進行的操作。
- 用戶帳戶與密碼: 最常見的方法。強密碼會結合大小寫字母、數字和符號。
-
認證技術:
- 生物認證 (Biometrics): 利用獨特的生理特徵(指紋、虹膜掃描)來驗證身份。
- 數碼簽署 (Digital Signatures): 用於驗證訊息或文件真實性和完整性的數學方案。它能證明寄件人的身份,並確保數據未被篡改。
- 存取權限: 決定哪些用戶或組別可以讀取、寫入、修改或刪除特定的檔案或資源。
2. 系統保護軟件
- 防火牆 (Firewall): 一種保安屏障(硬體或軟件),根據預設的保安規則監控並控制流入和流出的網絡流量。它就像在門口檢查身份證的保安。
- 防毒軟件 (Anti-virus Software): 掃描、偵測並移除或隔離已知的病毒及其他惡意程式。
- 反間諜軟件 (Anti-spyware): 專門設計用於偵測並移除未經許可追蹤用戶活動的程式。
3. 加密 (Encryption)
加密 是將明文(可讀的數據)轉換為 密文(不可讀、亂碼的數據)的過程,需要使用算法和密鑰,使未經授權的一方無法使用。
- 如果黑客竊取了加密數據,他們只會得到無法讀取的密文。
- 數據只能由擁有正確 密鑰 (key) 的人轉換回明文(即解密)。
保安是關於透過防火牆和加密等工具來防禦外部威脅(黑客、惡意程式)。私隱是關於控制個人數據的使用。完整性是關於確保數據的準確性。
6.2 數據完整性 (Data Integrity)
如前所述,數據完整性 意味著數據是準確且有效的。我們主要透過兩個不同的過程來實現:數據驗證 (Data Validation) 和 數據核對 (Data Verification)。
數據驗證 vs. 數據核對
這是兩個極為關鍵的區分!
數據驗證 (Data Validation)
驗證 是檢查輸入的數據是否「合理」且「遵守預設規則」。它根據既定的限制來檢查輸入內容。它不能保證數據絕對正確,只能保證數據是可以接受的。
比喻:檢查輸入的電話號碼是否有 10 位數字(驗證),但不會檢查這是否是你打算撥打的那個人(核對)。
數據核對 (Data Verification)
核對 是檢查輸入電腦的數據是否與原始來源數據「相符」。它確保在抄錄或傳輸過程中的準確性。
數據驗證的方法
這些檢查內建於軟件中,用以立即標示不正確的輸入。
-
範圍檢查 (Range Check): 檢查數值是否落在指定的最小值和最大值之間。
例子:考試分數必須在 0 到 100 之間。 -
限制檢查 (Limit Check): 檢查是否符合單一的最大值或最小值。
例子:年齡必須大於或等於 18 歲(最小值限制)。 -
格式檢查 (Format Check): 檢查數據是否為正確的類型或模式。
例子:日期必須以 DD/MM/YYYY 的格式輸入。 -
長度檢查 (Length Check): 檢查數據是否包含所需的字元數量。
例子:密碼長度必須至少 8 個字元。 -
存在檢查 (Presence Check): 確保欄位沒有留空(即數據必須存在)。
例子:「姓氏」欄位不能為空。 -
一致性檢查 (Existence Check): 檢查輸入的數據是否已存在於檔案或資料庫中。
例子:登入時,輸入的用戶 ID 必須存在於合法用戶名單中。 -
校對碼 (Check Digit): 對原始數值數據(如條碼或 ISBN)進行數學運算,產生一或兩個額外的位數。當數據被輸入時,系統會再次計算並進行比對,如果不匹配,則數據輸入無效。
例子:廣泛用於信用卡號碼和產品條碼,以捕捉輸入錯誤。
給學生的貼士:記住這個口訣:Really Fine Lunch Provides Every Check(範圍、格式、長度、存在、一致性、校對碼)。
數據核對的方法(輸入期間)
這些方法確保數據是從原始文件正確鍵入的。
- 視覺檢查 (Visual Check): 一種人工檢查,即檢查員將螢幕上輸入的數據與原始文件進行比較。
- 雙重輸入 (Double Entry): 數據由兩名不同的操作員或兩套程式鍵入系統兩次。電腦隨後比較這兩次輸入,任何差異都會標記錯誤,需要人工核對。
數據核對的方法(傳輸期間)
數據在透過網絡傳輸時可能會損壞。核對方法用於偵測這些傳輸錯誤。
1. 同位檢查 (Parity Check)
同位檢查 在數據位元組中增加一個額外的位元(同位位元 Parity bit),以確保位元組中「1」的總數始終為偶數(偶同位)或始終為奇數(奇同位)。
-
運作方式(以偶同位為例):
如果數據位元組是 10100010(有 3 個 1,為奇數),同位位元設為 1。完整的位元組變成 101000101(有 4 個 1,變為偶數)。
如果數據位元組是 11000010(有 3 個 1,為奇數),同位位元設為 1。完整的位元組變成 110000101(有 4 個 1,變為偶數)。
- 位元組同位: 檢查每個傳輸的單一位元組。
- 區塊同位: 跨多個位元組區塊檢查(使用橫向和縱向檢查),以精確識別單個錯誤可能發生的位置。
常見錯誤:同位檢查只能偵測奇數個錯誤(1、3、5 等)。如果傳輸期間有 2 個位元翻轉,同位結果仍然正確,錯誤將無法被偵測。
2. 總和檢查碼 (Checksum)
總和檢查碼 是將數據區塊(多個位元組)視為一個大數值並進行相加。
-
流程:
1. 傳送方計算數據區塊中所有位元組的總和。
2. 這個總和(即 Checksum)會隨數據區塊一起發送。
3. 接收方計算所接收數據區塊的總和。
4. 如果接收方的總和與傳送方的 Checksum 匹配,則數據完整性通過驗證。 - Checksum 比簡單的同位檢查更強大,因為它們通常可以偵測到數據區塊中的多個錯誤。
驗證是用來檢查數據是否 合理(範圍、格式等)。核對是用來檢查數據是否 抄錄 準確(雙重輸入、同位檢查等)。兩者對於維護數據完整性都至關重要。