立即捐款

新智能身份證真係咁安全?

新智能身份證真係咁安全?

政府星期二向立法會遞交了有關新智能身份證的補充文件。新智能身份證最受爭議的部分莫過於建議引入 RFID 技術,很多人擔憂這個技術會讓政府在市民不知情底下讀取個人資料,甚至可能會出現「遙距抄牌」,侵犯公民自由。就這個問題,這份文件補充了一些技術資料。不過,大概因為文件裡的技術名詞太過艱深,即使是從事資訊科技的人都發覺這份文件的內容不易閱讀,一般人就更難以理解,也沒能引起太大關注。「公民反監控」的團隊詳細研究過這份文件的內容,我們發現,這份文件非但沒有提供足夠的技術細節去釋除公眾疑慮,而且,更有可能揭露了新智能身份證的設計存在安全漏洞。

身份證從來也是種監控

討論新智能身份證之前,我們應該先搞清楚一點,就是身份證制度從來也是政府用來管理人民的工具。回看香港身份證的歷史,它最初出現於日治時期,日本人為了方便管理及監控人口,於是勒令全香港市民均需要領取身份證。例如,市民要領取由日本皇軍配給的米糧時,就必須出示身份證、軍票以及糧油證等才可以獲取。到了1949年,中國共產黨取得政權,大量人口從中國內地湧入香港,香港政府開始實行邊境管制,並且開始登記香港居民及發出身份證。德國是另一個有強制性身份證制度的國家,而建立這套系統的就是納粹德國政府。納粹政府強迫所有猶太人時刻帶上身份證,證上還要有特別的記號標示猶太人身份。正是因為這個身份證系統,納粹德國能夠快速有效地找出猶太人,實行種族清洗。

逼令全民領取身分證、記錄了所有市民的資料、警察有權隨時查看身份證,本身都是對人身自由的侵犯。香港人習慣了出入擁帶身份證,覺得身份證是理所當然的事。但是,我們習以為常的身份證,其實在世界很多地方都不存在。就以經濟合作暨發展組織的成員為例,有半數國家都沒有強制國民領取身份證,當中包括英國、美國、法國、挪威、瑞典這些傳統上較為重視個人自由的國家。有些國家雖有身份證,但沒有強逼所有人領取。更重要一點是,即使要求國民領取身份證的國家,大多數地方都不像香港那樣,警察無需實質懷疑也能查看身份證甚至紀錄下來。

當初規定市民帶身分證是為了打擊非法移民,時移世易,這個問題在今天已經不再重要。而且,截查身份證對打擊罪案的作用不大。我們是否要延續警察無故查閱身份證的權力?既然政府提出更換新的智能身分證,香港社會是不是應該順勢檢討這個強制攜帶身份證的規定?

物理接收範圍只有 10cm?錯!

讓我們回到新智能身份證的討論,先從一個很多讀者關心的問題開始:身份證 RFID 的無線接收範圍,究竟可不可能出現在你不知情底下讀取個人資料,甚至「遙距抄牌」的情況?

先說明一下 RFID 這東西。政府的文件提到新身份證將引入「支援無線傳輸技術界面」,坊間一般都稱這為 RFID (radio-frequency identification),但其實比較準確的說法應該是「非接觸式智能卡」(contactless smart card)。RFID 是一個用途廣泛的無線通訊技術的統稱,早期用於辨識與追蹤貨物,之後陸續發展出其他用途。非接觸式智能卡就是使用 RFID 無線通訊技術的智能卡。因應不同用途,RFID 有很多不同的標準,而不同的 RFID 接收範圍也有很大分別。用於追蹤貨物的 RFID 接收範圍可達數十米,有的內含電池的標籤更可在數百米外讀取。不過,用於智能卡的 RFID 標準的接收範圍就短得多,通常只能在離讀卡器數十厘米的範圍內使用。

政府的文件提到,新智能身份證將嚴格按照 ISO 14443(A 或 B 型)標準設計。ISO 14443 標準是個非常流行的非接觸式智能卡通訊標準,大部份具拍卡支付功能的信用卡、銀行卡和電子車票、一些國家的智能身份證、護照、手提電話的 NFC 功能也使用這個標準。

文件裡重複強調,這個標準只支援約 10 厘米範圍內的近距離通訊。它有一點是正確的,這個標準的設計運作距離的確是 10 厘米以內。如果你在網上搜尋的支援這個標準的讀卡器,大概也是在這個範圍之內運作。但我們的問題是,這個設計距離是否就但同實際可行的最大距離呢?

因為 ISO 14443 是一個十分流行的非接觸式智能卡標準,學術界對於它的安全性研究十分之多。例如,在這個研究當中,研究員嘗試用不同方法對 ISO 14443 RFID 進行竊聽和略讀攻擊。「竊聽攻擊」(eavesdropping attacks),即是在智能卡被正常讀卡器讀取的同時,在遠距離竊聽智能卡的訊號。這種攻擊雖然只能被動地接收資料,但是,如果智能卡的設計不當,也是足以洩漏個人私隱。研究員發現,使用實驗室的工具,他們可以在 3-5 米範圍內成功接收智能卡的訊號並且解碼。「略讀攻擊」(skimming attacks)則是利用高增益天線,超出原設計運作距離讀取 RFID 資料,就好像有些人用特製天線在香港接收深圳的電視頻道。這次,研究員的實驗證明能夠在 20-30 厘米處建立雙向通訊,比起政府宣稱的最大傳輸距離足足多兩倍。而且,他們所使用的器材都是輕易在市面上購買得到的。另外一篇論文,更加詳細說明,如何用少於 $100 美元的成本,用簡單的材料,以手工製作出接收範圍達 25 厘米的讀卡器。如果有更多資源又可以怎樣?有人就計算過,只要有只夠的資源,理論上的最大存取距離可達 55 厘米

科技大國美國在推出 RFID 證件時也曾撞板。2006 年美國簽發包含 RFID (使用不同標準)的電子護照,也是強調只能在 10 厘米內讀取,但後來有人用實驗證明在 10 米之遙也能讀取護照資料,美國政府被迫臨時在護照加入阻隔 RFID 訊號的屏障。

以上實驗證明新智能身份證的最大可行過作距離可能比政府宣稱的 10 厘米多。但 20-30 厘米的接收範圍有多重要呢?試想一下,在擠迫的地方,例如迫地鐵時,身邊的人在少於 20 厘米的距離擦過一點也不出奇。如果警察只要走到你身邊就能「抄牌」,這是個多大的問題?

退一步說,即使有方法限制新身份證只能在 10 厘米內讀取,但是我們仍然有很多機會把身份證置於讀卡器的範圍內,例如當我們用八達通付費的時候。有沒有有可能當我們付費的時候,讀卡器同時讀取身份證的資料,然後就可以把這張八達通和身份證連繫起來?把不同資料連繫,放進資料庫,用程式分析,建立 profile 的方法,其實就是我們現在經常聽到的「大數據」,並非些天馬行空的想像。

有些讀者讀到這裡應該開始覺得不耐煩,為什麼我們用這麼多篇幅講 RFID 的存取距離,政府的文件不是有說過新證須要經光學閱讀器閱讀卡面資料才能啟動無線通訊嗎?接下來,我們會解釋這個稱為「基本存取限制」的原理,並且我們會告訴你,「基本存取限制」本身也可能存在安全漏洞,令我們不能忽略接收範圍的問題。

我們看到政府一再混淆個別儀器限制和物理上的限制,即使不是有意誤導公眾,也代表負責新證建議的政府官員未能掌握當中的技術原理。我們可以信任他們有能力處理新系統的種種複雜的私隱問題嗎?我們亦都質疑背後還有多少重要細節被忽略。

淺談「基本存取限制」

基本存取限制(Basic Access Control)是一種用來防止未獲受權存取 RFID 資料的機制。這不是一項很新的技術,德國早在 05 年的電子護照上已使用這個機制,後來亦被多國的電子護照和身份證明文件採用。

這個機制的原理是,把「鑰匙文字串」印在證件表面一個稱為 machine readable zone (MRZ)的地方。在上圖的德國身份證樣本中,卡背下方的文字串就是 MRZ,在很多護照和證件上也能找到類似的字串。讀取證件時,讀卡器會用光學字符識別(OCR)掃描證件表面的的文字,再用密碼學方法產生出密匙。因為要與 RFID 晶片通訊必須取得到這個密匙,所以我們可以假定持證人把證件從銀包、手袋或衣物內取出,並受權讀取資料。

政府文件這樣說:

即使證件被拿出來,但如未有正確地擺放(例如「鑰匙文字串」並非面向閱讀器)並在距離認可閱讀器 2 厘米之內,「鑰匙文字串」仍然無法被成功擷取,而加密過程及隨後的無線通訊亦不會啓動。

政府聲稱這個光學閱讀器只可以在 2 厘米之內運作。但以一般的 MRZ 的字型,只要有適當軟件,用一部普通數碼相機要在數米外拍攝並讀取文字串並不困難。既然還是需要把證件取出來,能否超越 2 厘米並不是重點,之不過,這再次證明政府的文件上混淆個別儀器限制和物理上的限制。

我們可以再看一看政府文件描述整個讀取智能身份證的步驟:

  1. 把智能身份證直接放在獲證書授權及配備特定運算程式的認可光學證件閱讀器上,將身份證上印有「鑰匙文字串」(Key Text String)的一面面向閱讀器,令閱讀器可擷取「鑰匙文字串」,繼而產生一條隨機加密密匙;
  2. 如認可閱讀器成功擷取「鑰匙文字串」(一如電腦掃描器擷取資料),閱讀器就會根據所擷取的「鑰匙文字串」以及認可閱讀器的特定運算程式產生一條實時的一次性加密密匙;
  3. 閱讀器產生的加密密匙將由晶片認證,並要求晶片建立一對一的專用加密通訊通道;
  4. 只有在加密密匙獲得晶片認證後,晶片和閱讀器之間的加密通訊通道才能建立。值得留意的是,即使該加密通訊通道已被成功建立,晶片的無線資料傳送功能仍處於關閉狀態,即儲存在智能身份證晶片中的資料不會傳送到閱讀器。資料傳送功能只有在進一步認證後才會啟動;
  5. 經過上述(1)至(4)的步驟建立加密通訊通道後,閱讀器須向晶片提交第二條不同的加密密匙以作認證。只有在第二條密匙成功認證後,資料傳送功能才會開啟,閱讀器方可從智能身份證的晶片讀取資料;否則資料傳送功能會一直保持關閉

政府的文件提到新身份證會有雙重認證功能,第一重認證就是上面提過的「基本存取限制」(步驟1至4),而第二重就是步驟 5 另一條加密密匙認證。第二條加密密匙的作用,是用來識別讀取資料的一方,確保即使能取得讀卡器,沒有第二條密匙下也無法讀取數據。

什麼?新智能身份證存在安全漏洞!

擁有「基本存取限制」的新智能身份證看似解決了 RFID 的私隱憂慮,但是,這個「基本存取限制」是否真的如政府文件所說那麼無懈可擊呢?在這份文件裡,我們就發現了多個問題。

對密碼學有些認識的讀者應該會發現一件事,如果新證按照文件詳列的步驟設計,這是個存在「重放攻擊」(replay attack)漏洞的典型設計。舉一個例子,假設你可以用電郵指示銀行轉賬,而且電郵都經過加密。那麼,沒有密匙的人就不能假扮你轉賬,是不是?可是,如果你轉賬給我一次,而我又能截取到你發給銀行的電郵,我可以重發這個加密過的電郵,在銀行的角度,原本的電郵和重發的電郵均正確地加密,所以銀行會重複轉賬到我的戶口。而這個過程裡面我無需取得密匙或知道電郵內容,這就是一種「重放攻擊」。回到身份證上,如果按文件所述,在步驟 3 之前,讀卡器未曾由身份證晶片接收過任何資料,在身份證的角度,沒有交換任何資料底下,身份證的智能晶片是無法分辨出這是一個真正讀卡器還是一個「重放攻擊」。

這種「重放攻擊」可以做什麼呢?如果截取到步驟 1 至 3 的訊號,利用「重放」就可以跳過「基本存取限制」直接到達步驟 3(甚至 4,視乎加密通訊通道用什麼方法建立)。因為沒有第二條加密密匙,這時仍然無法讀取智能卡的資料。即使如此,在這一階段仍然有可能洩漏個人資料。例如,英國的資安研究員發現,包括英美等 50 個國家擁有「基本存取限制」的電子護照,遭受「重放攻擊」時會洩漏特定人物的身份。只要在目標人物用正常讀卡器讀取身份證時,截取 RFID 訊號,就可以利用這種方法追蹤目標,假如在門廊安裝發信裝置,當目標經過時就可以把他識別出來。

亦有另外一些研究員認為,因為「基本存取限制」中用於產生密匙的「鑰匙文字串」(例如證件號碼、簽發日期)變化有限,有可能使用窮舉(brute-force)方法破解。也有人發現,部份證件的 RFID 易受「旁路攻擊」(side-channel attack),令窮舉需要的時間大大減少。

近期上畫的電影「解碼遊戲」,戲中的密碼學家總能夠在一堆仿似無意義的密文當中找出線索。政府補充文件裡每每強調新證會使用嚴格的加密技術,還套上一堆技術名詞 jargon,「即使⋯⋯偵測到訊號,他亦只能夠偵測到經擾亂、沒有意義的訊號」。上面提到的例子剛好說明了即使經過加密也可能會洩漏資料。我們作資訊安全研究的都知道文件上大量 jargon 的系統並不代表安全。好像,兩大信用卡公司的 EMV 支付系統,它們的行銷網站上稱系統用軍用級算法加密,非常安全。但是資安專家發現,EMV 信用卡上包括信用卡號碼的個人資料竟從未加密過,容許任意無線讀取。

誠然,以上的問題都有解決方法。不過問題是,我們能夠對這個政府有信心,相信他們和他們的合約承辦商(第一代智能身份證的總承辦商是電訊盈科)能夠發掘出問題然後妥善處理嗎?如果所有技術細節、審核報告都保密的時候,如此黑箱公眾如何監察?再者,有「不誠實使用電腦」這條萬能 key 罪名,加上《人事登記規例》對非法存取智能身份證的嚴苛條文,面對這麼大的法律風險,民間的資安研究者難以像外國的研究員般檢視智能身份證的安全性。所以,我們認為,政府應盡快公開詳盡的技術文件供公眾審視,將來亦應該公開安全專家顧問的審核報告。否則,在嚴重缺乏公開資訊底下,民間實在難以對新智能身份證的建議投下信心一票。

想知多啲資訊安全同反監控知識?請 Like 公民反監控專頁