iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 25
2

也是10幾年前的古時候,史丹利負責一項Cobol與Cics交易的需求開發,這個案子MD(人天)很多,但急急如律令的急,可以幫公司賺很多錢,當中有一項需求要把客戶在電話中替代核驗身分的密碼儲存下來。

年輕不懂密碼學的史丹利於是和學長找了其他系統儲存登入帳號密碼的函式來Call,驗證密碼時也call相同的函式來確認輸入的密碼是否與儲存在資料庫內加密後的密碼值相同,年輕就是有新鮮肝加班的本錢,很快通過測試並且上線了,有一天負責專案的PM打電話來諮詢,為什麼有一個客戶輸入56785677都驗證通過啊?

登楞..,都可以聽見自己的心跳聲了,這個bug大概是史丹利人生的陰影之一,史丹利當時也丈二金鋼摸不著頭腦,為什麼兩個數字call密碼函式出的結果是相同的?原來因為輸入的明文長度不夠,導致雜湊後的結果相同,自己也留下了一個經驗,盡量用國際標準的加解密演算法,避免使用自行創造的加密或者雜湊方法。

後來對方PM要求我們要賠償損失,要更正密碼儲存方式,很感謝其他組的顧問和學弟幫忙解bug,Sales也盡力幫忙和客戶喬到兩邊都能接受的處置方式,可愛的學弟(台大數學)還到了圖書館借了幾本密碼學的書一起研究。

於是史丹利第一次和密碼學見面了。

密碼學(Cryptology)


密碼學是資訊安全裡的重要學科之一,只要是不想讓別人瞧見的,又或者想避免數字的誤植、資料的完整性,都有著她登場的戲份,隨著我們開發的電腦系統與網際網路的接觸機會越多,密碼學更是我們工程師學習的重要學科,我們來淺淺的認識她。

她是一門古老的科學,出道超過2000年,為了保護敏感的資訊不讓未授權的第三者竊取,她,就開始了演藝生涯,從西元前5世紀的斯巴達密碼棒、羅馬執政官凱撒設計的位移密碼、15世紀的維吉尼亞密碼、16世紀的蘇格蘭女王瑪麗的營救計畫,二次世界大戰德軍的恩尼格瑪密碼機到現代的DES、3DES、AES及RSA,也許密碼學是為了保護簡單的電報不會外洩,像是Attack at Dawn(拂曉攻擊)這一句話,也許大到保護整個資料庫資料(可以參考[Day05] 資料儲存安全(SQL透明資料加密)[Day06] 資料儲存安全(SQL備份檔案加密))。

一直以來都把她當成可遠觀的電腦學科之一,但因為這幾年工作的需要,累積了其他幾種加解密演算的使用及組合經驗,重新見到了住在far,far away country的她,一種老朋友重逢的概念。

密碼學的學科通常畫在資工系或是數學系選修課程,如果要從數學下手,又可分為數論密碼學、代數密碼學、訊息理論,哈!打住,我們快點結束這個話題,複習一下密碼學演算法的分類。

密碼學演算法分類


我們簡單將經常會使用到的密碼學依照金鑰的屬性分類成:

  • 編碼(Encoding),資料可逆: 特殊編碼,例如摩斯密碼、一維條碼、二維條碼。
  • 雜湊(Hash),資料不可逆: 例如MD5 SHA1 SHA2。
  • 對稱金鑰(Symmetric),資料可逆: 例如DES、3DES、AES。
  • 非對稱金鑰(Asymmetric),資料可逆: 例如RSA。

雜湊演算法需要具備不可逆的特性,對稱金鑰與非對稱金鑰主要差別是在加解密金鑰上的使用,對稱金鑰使用同一把金鑰作加解密,而非對稱金鑰利用數學上兩個巨大質數的乘積與因式分解產生兩把金鑰,一把公開金鑰用作加密,另一把私密金鑰進行解密,實作出解密(加密(明文))=明文的加解密流程。

適用情境


每一種演算法都有適用的情境

  • 如果我們想保障資料機密性,我們可以選擇對稱金鑰、非對稱金鑰演算法
  • 如果想確保資料完整性及驗證,我們可以可以選雜湊
  • 如果沒有電腦訊息的地方,我們可以選摩斯密碼,用燈光、用聲音表達。

對稱金鑰也就是江湖人稱對稱式加密演算法的她,執行速度快,很適合於加密大量的資料。
非對稱金鑰也就是非對稱式加密演算法,執行速度較慢,但她可以解決加密端和解密端使用同一把金鑰的問題,她將金鑰分成公開金鑰 (public key) 與私密金鑰 (private key),也常被稱為公開金鑰加密法。

注意使用說明書


因為之前的經驗,有幾項重要使用說明筆記下來。

  • 金鑰管理(key management)是重要的密碼學工作,如果環境允許,盡可能將金鑰及演算法儲存在硬體安全模組HSM(Hardware Security Module)中。
  • 確保有權限的使用者可以使用HSM中的加解密演算法。
  • 密碼或工作金鑰(Working key)定期更換。
  • 使用國際標準且尚未遭到破解的加密演算法(MD5 -> SHA2)。
  • 使用演算法支援的最大金鑰長度(AES128 -> AES256)。

圖靈獎Turing Award


網際網路的蓬勃發展,密碼學在電腦科學中扮演的角色越來越吃重,在電腦界中的諾貝爾獎圖靈獎Turing Award,通常每年只獎勵一名電腦科學家,從2000年以來的16次(2000-2015年),有關密碼學的電腦科學家獲得了4次獎項:

  • 2000年出生上海來自台灣的姚期智博士,計算理論,包括偽亂數生成,密碼學與通訊複雜度。
  • 2002年RSA公鑰密碼學(RSA加密演算法)。
  • 2012年Goldwasser與Micali在密碼科學領域裡,於複雜理論的基礎之上,做出變革性工作;並領先發展出新的具有數學可證明性的有效驗證機制。
  • 2015年Diffie與Hellman在1976年發明迪菲-赫爾曼密鑰交換,對公開密鑰加密技術有重大貢獻

通常這種會得獎的學科都很難,但卻是我們保護重視資產的強力後盾。

參考


密碼學 wiki
https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81%E5%AD%A6

密碼學主題列表
https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A2%BC%E5%AD%B8%E4%B8%BB%E9%A1%8C%E5%88%97%E8%A1%A8

圖靈獎Wiki
https://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E5%A5%96

歐元大樓
http://ithelp.ithome.com.tw/upload/images/20170109/20103434qG3p6p5cch.jpg
2014.12攝於法蘭克福,德國


上一篇
[Day24] 資料傳輸安全(通道加密)
下一篇
[Day26]對稱金鑰加密系統(DEA x TDEA x 2TDEA)
系列文
資料安全與簡單加密演算法見面會 30

2 則留言

1
微中子
iT邦新手 4 級 ‧ 2017-01-09 12:57:15

史丹利後來的故事呢xD

哈!後來的故事很一般也,史丹利還是繼續待同一家公司,我們老闆是那種會和員工站在一起想事情的那種,只希望我們從中學到經驗,倒是自己自責很多。不過學弟解問題很厲害,他用上了字典破解法的方式來回復部分密碼讓災害受到控制。

後來幾年史丹利就從Cobol PG慢慢升到SD、SA、資深SA,再幾年後從主機轉換跑道到開放系統,參與公司研發新的帳務核心系統解決方案,很幸運銷售到很多家銀行,哈!現在是擔任資淺技術顧問一職,白頭髮2根

/images/emoticon/emoticon37.gif

0
微中子
iT邦新手 4 級 ‧ 2017-01-09 12:57:39

史丹利後來的故事呢xD

我要留言

立即登入留言