國泰資料外洩其實有咩implications?

Gordon Lau

Gordon Lau

2018-10-26

國泰乘客資料外洩,洩漏咗940萬位乘客資料,令全城嘩然。市民大眾對一件大事過咗咁耐先公佈感到好憤怒同不可思議。政府個人資料私隱專員公署就只係講咗話難以接受,同乘客期望有落差云云。更有議員話係因為炒得太多IT 人,所以造成無人24小時監察住個網絡情況,令到被人攻擊之類。

cathay_pacific.png

但係喺眾多嘅討論之中,有一個重點往往被忽略:就係點解測試要用真實乘客嘅數據 ? 其實事情嘅源由,係因為國泰一個 Vendor 有晒國泰所儲落嘅個人資料,佢哋嘅網絡被人入侵,導致國泰嘅 Testing Network 都畀人入侵。咁大家如果有軟件開發嘅經驗,大家都知道有一樣野叫做 Testing Environment,即係專為測試而設嘅環境。咁入面嘅數據就理所當然理論上同實際上 Production Environment 嘅數據唔會共用。

但係大家都知道理想同現實總係⋯⋯

how_projects_really_work.png

唔少 Vendor 甚至大公司,因為時間、資源問題,都會直接使用 Production Data 作為 Testing environment 嘅數據來源。就結果喺咁多個因素加埋一齊之下,就發生咗呢個大規模資料外洩事件。

其實方法不外乎兩大類: 1. 自己作Testing Data

  1. 數據匿名化 (Data Anonymization)

自己作Testing Data

呢個方法大家都一定用過,因為如果要做好簡單嘅 Integration test 就會用到呢個方法。好處就係因為係自己整 Testing Data,基本上乜野組合都可以有齊,無身份證無年齡之類係現實世界好難遇到嘅問題你都可以做得到。

但係問題好顯而易見,就係要整咁多 Testing Data 係非常費時失事,而大家都明白整 Testing data 呢個感覺上吃力不討好嘅行為解釋畀 Non-technical 嘅人又要大費唇舌。可能你努力做咗幾日之後,換來嘅係上司嘅一句:「你倒個 Production DB 落去咪得囉!」

呢個亦都係上面理想同現實差咁遠嘅主要原因。

咁有無第二個方法解決呢個問題呢? 其實係有嘅!

數據匿名化(Data Anonymization)

所謂數據匿名化,係指將原本敏感嘅個人資料,經過數據處理後﹐變成唔會洩漏大家身份嘅普通資料。

hitachi_tech_anonymize_encrypted_personal.png

以下就分享幾個常見數據匿名化嘅技巧:

  1. 數據項移除 (Attribute Suppression) 簡單嚟講就係好似 Excel 入面咁成個欄移除咗,通常呢個技巧用係一啲好敏感嘅資料之上:例如:姓名、身份證號碼,因為呢一類資料一洩漏咗就好大問題,而除咗用嚟 verify 係咪佢本人之外實在無咩其他用途,所以除咗移除之外係無任何其他選擇。
  2. 自製數據代替 (Psuedonymisation) 呢個同上面作 Data 有啲相似,唔同嘅係唔一定要由頭作到尾,例如用 programming 常見嘅hashing 就可以將每一個人嘅姓名都匿名化,但係又唔會重覆。
  3. 少量改動數據 (Data Perturbation) 有一啲數據類型只要一少量改動就無任何意義,例如如果將每一列個人資料嘅出生日期提前五日,再加上其他數據匿名化嘅技巧,即使有駭客入侵,亦都無用武之地。
  4. 模糊數據 (Generalization) 好似年齡之類嘅資料,如果將年齡由一個數字改為 20-29, 30-39, 40-49,基本上亦會大大減低數據的用途,但係又唔會影響其他功能。

以上就係幾個常用嘅數據匿名化技巧,如果大家有興趣知多一點,可以去以下呢個網址,有詳盡的例子解說。

https://www.pdpc.gov.sg/-/media/Files/PDPC/PDF-Files/Other-Guides/Guide-to-Anonymisation_v1-(250118).pdf

(按:無錯,係新加坡政府嘅官方文件⋯⋯)

希望大家下次接觸到相似嘅問題時候,會諗起數據匿名化呢樣野,咁資訊安全就更得到保障了。

Comments