在上一次的分享中,藉由資訊圖表的幫助讓我們對於《巴拿馬報告》(Panama Paper)能夠快速又正確的掌握基本訊息,進而能夠開始展開對於資料的詮釋及應用——探索式資料分析(Exploratory Data Analysis,簡稱 EDA),就是運用視覺化、基本的統計等工具,來「看」一下資料;以期進行複雜或嚴謹的分析之前,能夠對資料有更多的認識。今天,就以一個資安小故事,讓我們演練一下在資料分析的方法論中,能夠讓你事半功倍的「探索式資料分析」。
故事是這樣開始的:
Data Genetics 的一位分析人員收到一封朋友寄來的笑話,信中宣稱「震驚全球的事實!世界上所有的信用卡 PIN 碼都被破解了!」——接著就列出了一連串從 0000 - 9999 的數字。(信用卡 PIN 碼其實就是一組四碼的數字密碼,在國外刷卡消費時作為認證使用,等同於我們在台灣刷卡時的簽名這個動作)因為四碼的密碼就只有這一萬種組合,所以看到這種「廢文」般的笑話大多數人當然是一笑置之;然而,這引起了這位分析人員的興趣:短短的四個數字裡面,哪些密碼是最容易被猜中的呢?
現在,讓我們跟著這個故事,演練在資料分析的方法論中,如何進行「探索式資料分析」:
一、資料收集
首先,顯然地 Data Genetics 不是信用卡或銀行單位、也不是專門攻擊這些單位的黑帽駭客;身為一個資料科學家,資料的取得是很重要的一環;當無法取得原始資料或是完整資料、資料來源受到限制的時候,就必須做出假設,並根據這些假設取得合理的資料來源,透過適當的取樣、逼近或模擬我們的研究對象。
在這個故事裡,分析人員從各種已經公開釋出、曝光或被揭發的數字密碼資料庫與資安漏洞中,過濾出共三百四十多萬筆的四碼數字密碼,並且假設人們傾向於在不同情境中使用同一組密碼,將這組資料集作為研究對象,試著從密碼組成的頻率去分析。
二、基本統計工具:敘述統計量
利用基本的統計工具,可以由組成數字的頻率直接知道哪一些密碼是最常被使用的,換句話說,哪些密碼是最容易被猜到的?
PIN | Freq | PIN | Freq | ||
#1 | 1234 | 10.71% | #9980 | 8557 | 0.00% |
#2 | 1111 | 6.02% | #9981 | 9047 | 0.00% |
#3 | 0 | 1.88% | #9982 | 8438 | 0.00% |
#4 | 1212 | 1.20% | #9983 | 439 | 0.00% |
#5 | 7777 | 0.75% | #9984 | 9539 | 0.00% |
#6 | 1004 | 0.62% | #9985 | 8196 | 0.00% |
#7 | 2000 | 0.61% | #9986 | 7063 | 0.00% |
#8 | 4444 | 0.53% | #9987 | 6093 | 0.00% |
#9 | 2222 | 0.52% | #9988 | 6827 | 0.00% |
#10 | 6969 | 0.51% | #9989 | 7394 | 0.00% |
#11 | 9999 | 0.45% | #9990 | 859 | 0.00% |
#12 | 3333 | 0.42% | #9991 | 8957 | 0.00% |
#13 | 5555 | 0.40% | #9992 | 9480 | 0.00% |
#14 | 6666 | 0.39% | #9993 | 6793 | 0.00% |
#15 | 1122 | 0.37% | #9994 | 8398 | 0.00% |
#16 | 1313 | 0.30% | #9995 | 738 | 0.00% |
#17 | 8888 | 0.30% | #9996 | 7637 | 0.00% |
#18 | 4321 | 0.29% | #9997 | 6835 | 0.00% |
#19 | 2001 | 0.29% | #9998 | 9629 | 0.00% |
#20 | 1010 | 0.29% | #9999 | 8093 | 0.00% |
⋯⋯ | ⋯⋯ | #10000 | 8068 | 0.00% |
分析的結果,不意外地,老梗的「1234」、「0000」、「6969」等規律排列堆疊的數字組合名列前茅。但是,他同時也發現有些特別的規律:例如高居第六名的「1004」在韓文中的讀音接近「天使」(從這點我們也可以推測該分析人員使用的資料集有部分應該來自韓國)、還有第二十二名的「2580」看起來毫無規律,但是大家只要拿起手機或看看電話的撥號鍵,就知道原因了。
三、資料視覺化 v. s. 資訊圖表
即使是簡單的統計作圖,也能告訴你很多一眼看不出來的秘密。不相信嗎?讓我們來看看幾張讓你秒懂密碼內幕的圖表⋯⋯
1. 累積頻率圖:
從累積頻率圖可以明顯地看出,少部分的密碼就佔了絕大多數的比重;基本上不到五百組就把資料集的一半密碼都破解了。
2. 同樣是累積頻率圖,如果我們關注一些特別的模式(pattern)?
例如,「19XX」的數字,都在資料佔比的前半段,似乎人們格外偏好「19XX」系列的密碼?
3. 進一步的檢視,試著去比較「19XX」vs「??XX」:
可以看到,「19」開頭的出現頻率確實明顯高過其他的組合(同時也看到疊字組合仍是萬年不敗);再來看看所有「19??」的分佈:
可能跟出生、或是生活中的重大事件有關,「195X」一直到「198X」的出現頻率遠遠高過其他年份,這點也符合直覺——會使用密碼的族群主要也是在這些年份出生的青壯年人口為主。
矩陣視覺化
矩陣的視覺化一直是個強大的工具:以四字密碼作為範例,可以將其拆成前後兩組兩位數字的組成,將出現頻率描繪在一個 100 x 100 的矩陣中。
越偏白黃的顏色就是頻率越高的組合,偏紅黑色即是頻率低的組合。
透過矩陣的視覺化,我們其實能夠直接得到前面的圖表中呈現的資訊;換句話說,矩陣視覺化在同樣的篇幅中,提供了更豐富的資訊。以上面提到的「19XX」模式為例:
可以看到有一排很亮的直線,它代表了「19」開頭的這一排,可以跟前面的「19XX」分布圖做個對照,他們其實是說同一件事:可以看成是上圖的高度改成用顏色取代,變成了下圖的一條直線。
除了「19XX」開頭,其實只要是「1XXX」都是相對亮的區域;從矩陣視覺化可以很明顯看出界線;不需要另外繪製一張下圖這樣的相對頻率分佈就可以清楚的指出來。
將矩陣做灰階處理後,也可以很輕鬆地找出「亮點」,把常見的數字組合標記出來。
花了不少的篇幅也介紹了幾樣工具,不知道大家有沒有什麼收穫呢?如果對於最後提到的矩陣視覺化有興趣的朋友,在這邊也推薦中央研究院統計科學研究所的陳君厚研究員於 2014 資料科學愛好者年會分享的《Collaboration with Statistician? 矩陣視覺化於探索式資料分析》,學習愉快!
延伸閱讀:
PIN Analysis by Data Genetics
什麼是信用卡 PIN 碼?
Collaboration with Statistician? 矩陣視覺化於探索式資料分析