文章列表

EP2 - 什麼是資訊安全?

Podcast連結


本集內容大綱

資安三元素

  • 機密性
  • 完整性
  • 可用性

機密性

概念: 不想被知道的東西,不會被知道,確保資料不被未經許可的人存取或修改

常用的工具: 加密,就像是把東西鎖在保險箱裡

加密的安全程度 決定因素

  • 加密演算法 (保險箱本身的設計)

    • 較差的保險箱可能可以直接用鐵鎚敲破,而較好的不僅不怕鐵錘,可能還可以防水防火
    • 保險箱就像加密時使用的加密演算法,這個演算法有好壞的差異,也有不同的使用時機
  • 密碼 (鑰匙和鎖的複雜程度)

    • 越複雜的鎖越難開,越難開的鎖也就越安全
    • 密碼如果是0000或1234的話很容易被猜出來,反之,越長越複雜的密碼往往越難被猜中

好的加密方法: 好的加密演算法 + 足夠安全的密碼

  • 高級的保險箱 + 簡單的密碼 → 快猜中,不管保險箱多高級都沒有用
  • 安全的密碼 + 防護不好的保險箱 → 不需要花費力氣去猜密碼,直接把保險箱砸爛就好了
  • 好的加密演算法 和 足夠安全的密碼 是相輔相成缺一不可的

完整性

概念: 確保想保護的資訊可以正確且完整的被處理及保存

以拼圖為舉例

  • 拼好的拼圖 → 想保護的訊息
  • 把拼圖打散弄亂 → 資安的保護措施

需要注意的點: 有沒有不小心把其中幾片拼圖弄不見、有沒有別的拼圖混入了我們的拼圖中

常用的工具: 數位簽章

  • 就像現實生活中簽名的動作

    • 防止對方擅自修改合約內容
    • 雙方的簽名證明持有合約的正確性
  • 由雜湊函數及公開金鑰加密法組成

    • 雜湊函數:確認資料本身的完整性,並確保資料沒有被他人修改過
    • 公開金鑰加密法:確認資料來源的正確性

可用性

概念: 確保公司 / 軟體可以正常運作

  • 資安與可用性是兩個互相衝突的東西
  • 實務面向的審視,不能為了資安放棄公司的正常營運

常見的駭客攻擊手法

阻斷式攻擊 Denial of Service (DoS) : 駭客刻意讓網站癱瘓不能正常運作

  • 工具:駭客自己所擁有的電腦
  • 就像過年時的高速公路,同時有太多用路人要使用高速公路而導致大塞車

分散式阻斷攻擊 Distributed Denial of Service (DDoS) :更進階的阻斷式攻擊

  • 工具:被駭客控制的多台電腦同時發動攻擊,可能是你我身邊被駭的筆電主機或智慧家電
  • 就像幫派大哥在鬧事時帶了很多小弟
  • 難處:不僅僅要抓住大哥,還要分辨在現場的人到底是鬧事的小弟還是只是剛好路過的路人甲

解決辦法

  • 加寬高速公路 (成本效益的考量,連假只佔了一年中的幾天,為了這幾天加寬高速公路值得嗎?)
  • 分析所有訪客,找出行為不正常的訪客 (較實務的作法,需要大數據的幫忙)

常見的天然災害

火災、水災、地震、颱風,直接對設備造成物理性傷害

為什麼要討論到天然災害?
現在的生活已經離不開電腦跟網路,確保網路跟電腦能維持基本的運作已經變成必須

  • 實例:美國的資訊安全與基礎設施安全管理局 Cybersecurity & Infrastructure Security Agency 在 COVID-19 期間明定哪些行業屬於必要 / 非必要,美國已經將資訊安全與基礎設施相提並論

應對方式:企業永續計畫 Business Continuity Plan (制定詳細的防範措施)

  • 如何備份? 備份在哪? 多久備份一次?
  • 意外事件發生時該如何應對? 該通知誰?
  • 如何把影響降到最低? 如何在最短的時間內恢復企業的營運?

常見的資安工作職位

  • 資安工程師

    • 增加應用程式的安全性、修補漏洞
    • 專門開發資安用的軟體,像是防毒軟體
  • 資安研究員

    • 研發新的演算法
    • 分析現有演算法,尋找缺失或改進演算法
    • 幫忙審視公司/軟體的安全性
  • 資安架構師

    • 從系統架構的方面上來確保安全性
  • 資安分析師

    • 監控系統已在駭客入侵或事件發生時能立即做出反應
  • 資安長

    • 負責做決定以及監督
  • 網路警察

    • 專門處理網路事件或資安事件的警察
  • 資安鑑識工程師

    • 在資安事件中負責採證

雜湊函數 Hash Function

有些地方會翻譯為哈希函數,雜湊函數是一種演算法類型,當我們輸入一個值給雜湊函數時,他會回傳給我們一個雜湊值(hash, hash value),一個理想的雜湊函數會有以下特性:

雜湊值長度固定

從雜湊函數取得的雜湊值不會因輸入值的長短而有所改變。不管輸入的是一個字、一句話,或是五百字心得,當輸入不同的值給雜湊函數,從函數取得的雜湊值長度應該是固定的。雜湊值的長度則是由雜湊函數所決定,不同的雜湊函數可能會有不同的雜湊值長度。

單向函式 One Way Function

在講解單向函式以前我先稍微解釋雙向函式。以一個簡單的算式 (A + 2) x 5 = B 來說,當我們輸入A值時會得到B,且我們可以由B來回推出A是什麼,這就是雙向函式。單向函式則相反,當我們輸入A值時可以從函式得到B,但我們無法從B回推出A。 雜湊函數就是屬於一種單向函式,我們可以從輸入值給雜湊函數來得到雜湊值,但我們無法從雜湊值回推出輸入的值為何。

碰撞抵抗性 Collision Resistant

雜湊函數上指的碰撞就是當有兩個不同的值經過雜湊函數後會得到相同的雜湊值。碰撞在雜湊函數上是不可避免的,因為有雜湊值長度固定的特性,當輸入的值有無限種可能性,但輸出的值長度卻有限,就一定會發生碰撞。一個好的雜湊函數不是應該避免碰撞,而是要有碰撞抵抗性,什麼是碰撞抵抗性呢? 就是雖然有碰撞的發生,但我們無法用計算或推理的方式去找出哪些輸入值會造成碰撞。 這個概念就像理論上是有可能有兩個人有相同的指紋的。但我們無法光從指紋本身就推斷出是否有兩個不同的人的指紋都是長這樣,或是找出哪兩個人會有一樣的指紋。我們只能在遇到兩個人有一樣的指紋時知道,原來這兩個人有相同的指紋。

Source: https://en.wikipedia.org/wiki/Cryptographic_hash_function

上圖為雜湊函數的範例,從圖中可以看出輸入的值不同,產出的雜湊值就會不同,且即使一句話中的只有一個字母不同,也會讓產出的雜湊值有很大的改變。(Source: Wikipedia - Cryptographic Hash Function)

雜湊函數的應用

因為有以上的那些特性,雜湊函數在資訊安全以及其他的領域上變得十分重要。計算雜湊值這個動作就很像在採集指紋及證據,可以用來證明資料是否有被竄改或是更動過,也可以用來驗證資料傳輸的過程中是否有遺漏。

數位簽章 中就是利用雜湊函數來確認資料有沒有被竄改,會在簽章的過程中產生資料的雜湊值,並在事後需要驗證資料時再次計算雜湊值,並比對兩個雜湊值是否相符。

區塊鏈 中的不可篡改特性也是利用到雜湊函數來實現,當有新的資料被加到區塊鏈的鏈上時,會需要留一個紀錄以便未來時驗證資料的正確性。當然他們可以選擇上傳資料或是檔案本身,但如果我們需要儲存在區塊鏈上的資料是一個影片檔或大型圖檔時,就換占用許多不必要的空間,因此區塊鏈的做法是一律儲存那個資料或是檔案的雜湊值,如此一來不僅能作為一個資料驗證的憑據,也可以確保每筆資料所需要的空間都是一樣的。

雜湊表 雜湊表則是雜湊函數的另一個應用。他是利用計算資料的雜湊值,並將雜湊值作為那筆資料儲存位置的索引,未來如果需要尋找這筆資料時只要計算它的雜湊值就可以快速找出他的儲存位置。


這邊有個可以線上計算雜湊值的小工具 https://emn178.github.io/online-tools/md4.html ,網頁上右邊Hash那列就是一些常見的雜湊函數,大家可以上去玩玩看,看你能不能找到有相同雜湊值的兩個輸入值。