「數位身分證」可能出現資安漏洞嗎?有什麼技術可以解決?

「數位身分證」可能出現資安漏洞嗎?有什麼技術可以解決?
Photo Credit: 內政部

我們想讓你知道的是

關於數位身分證的安全性,筆者認為可以分兩部分來討論:一是卡片本身;二是卡片可以連到的後端系統,包含政府資料交換機制(T-Road)。

議題背景

依據內政部規劃,預計在今(2020)年10月換發數位身分證(New eID)具有晶片功能,會整合自然人憑證,讓護照簽證、公投聯署、國民年金、勞保等服務可線上辦理,且遵循資通安全管理法、個人資料保護法等。

但另一方面,因為質疑數位身分證的資安保護,至5月15日上午已有1324人參與民間團體的聯署,反對倉促換發數位身分證。其中包含中研院、大專院校的專家學者。

相關新聞與討論:

但究竟數位身分證可能的資安漏洞為何?運用新的資安技術可以解決問題嗎?我們邀請專家回應如下。

陳以德(高雄醫學大學醫務管理暨醫療資訊學系副教授/前中華電信研究所助理研究員)
2020年6月1日

沒有100%的資訊安全,能做到99.9%的安全就很好了,我們也得要為剩下可能發生0.1%的資安風險做好準備。數位身分證可以透過網路提供便利、快捷的各類申辦案件,但便利與安全是天平的兩端,需要做一些取捨。

關於數位身分證的安全性,筆者認為可以分兩部分來討論:一是卡片本身;二是卡片可以連到的後端系統,包含政府資料交換機制(T-Road)(註1)。

  • 一、卡片本身

新的數位身分證使用Java Card(註2)智慧卡片,而卡片使用的作業系統是Java Card Open Platform(目前最新版本為JCOP 3.1)(註3)。Java Card的應用程式在隔離的虛擬機器Virtual Machine(VM)(註4)中執行;任何應用程式程式要讀、寫或修改卡片內資料,都受到權限控制,資料會被保護。

以JCOP 41 Java Card為例,它內含CPU、記憶體跟輸入輸出介面(I/O)(註5),支援DES(註6)、AES(註7)、RSA(註8),以及ECC (註9)等密碼學模組,在金鑰不離開卡片時,可用來執行加密、數位簽章等動作。

數位身分證所使用的Java Card,需符合國際標準化組織所制定「資訊技術安全評估共同準則」(Common Criteria for Information Technology Security Evaluation, ISO/IEC 15408)中,安全技術評估等級(Evaluation Assurance Level 1-7, EAL)4+的安全認證(註10),或「聯邦資訊處理標準」(Federal Information Processing Standards, FIPS)第140-2號(FIPS140-2)的密碼模組安全需求標準。

筆者建議Java Card的生產過程,以台灣ICT產業的技術,應該請主要生產Java Card的恩智浦半導體股份有限公司(NXP Semiconductors),全數交由NXP台灣廠生產,並由國家級資安單位監控。以避免剛出廠的新卡,就被植入後門程式(註11)的情況發生。

數位身分證使用兩個6~8碼的個人身分識別碼(Personal identification number, PIN),PIN code 1用來保護加密過的個人資料,而PIN code 2用來保護個人的金鑰。民眾使用上需避免為了方便,將 PIN code 1與 PIN code 2設成一樣的密碼。

  • 二、後端系統

而後端系統部分,目前能使用自然人憑證獲取資料的政府機關並不多。T-Road串接各機關,在授權後可以存取各機關的資料,例如戶政、地政、勞保、健保、財稅等。趁這次機會,各機關可以檢視自己系統的安全性。

承接T-Road串接業務的廠商,應該把程式碼公開(open source),由各界來檢驗安全性,並檢查廠商有沒有特意記錄使用者的數位足跡。以AES加密標準為例,美國國家標準與技術研究院讓AES在1998年公布後,接受各界檢驗;到2001年才發布為聯邦資料處理標準(FIPS PUB 197),並開始使用。

在授權使用部分,各機關應該要拿到使用者一次性授權使用申請書及申請書的數位簽章,才能釋出加密後的使用者資料。使用者收到資料後,再解密,以防止惡意攻擊者取得個人資料。

而申請書必須要有時間戳記,以防止重送攻擊(replay attack)(註12)。所以除了T-road外,各機關不同資料的介接程式(Application Programming Interface, API),也需要公開程式碼接受各界檢驗,以確保安全。

最後,世界有相關的資安技術或資安標準,台灣需要調整自己,以達到世界的資安技術或資安標準。如此在與別的國家運用網路交換或共用資料時,才能提出我們系統符合哪些資安標準,讓其他國家也放心與我們介接。

註釋

  1. 政府資料交換機制(T-Road):政府資料傳輸平台,協助整合各政府機關所提供線上申辦服務及數位資料,並運用新興科技將政府服務主動遞送給民眾。(請參考T-Road資料傳輸規劃說明
  2. Java Card:使用Java程式語法撰寫,主要用來儲存金鑰的智慧卡片。
  3. Java Card Open Platform:可以操作Java Card的開源作業系統;開源(開放原始碼,Open source)指的是程式碼公開,每個人都可以自由使用並檢驗有沒有惡意程式在其中。
  4. Virtual Machine:虛擬機器,可以在隔離的環境中,執行作業系統。在隔離環境下,廠商開發的應用程式,要儲取資料時才會受到控管。例如:可以在Windows的環境中,利用虛擬機器來執行Linux作業系統。
  5. 輸入輸出介面(I/O):晶片用來和外部交換資訊的通道,輸出或輸入資訊。
  6. Data Encryption Standard(DES):資料加密標準。1976年被美國國家標準與技術研究院(National Institute of Standards and Technology, NIST)定為聯邦資料處理標準(Federal Information Processing Standards, FIPS)FIPS-46;DES於2005年5月26日廢止,它是使用56 位元金鑰的對稱加密演算法。
  7. Advanced Encryption Standard(AES):進階加密標準。NIST於1997向全世界公開甄選新一代對稱演算法,用來取代DES,其中比利時密碼學家尤安.達蒙(Joan Daemen)和文森.雷傑門(Vincent Rijmen)所設計的Rijndael加密法獲選成為AES,並由NIST於2001年11月26日發布於FIPS PUB 197,AES是使用128~256位元金鑰的對稱加密演算法。對稱加密演算法/非對稱加密演算法:對稱加密演算法加、解密所使用的金鑰是一樣的;而非對稱加密演算法有2把不同的金鑰,用其中一把金鑰來加密,可以用另一把金鑰來解密,所以可以把用來加密的金鑰公開讓大家知道,另一把用來解密的私密金鑰則自行保管。另一用途則是用自行保管的私密金鑰對文件做數位簽章,而全世界的人,可以用公開金鑰來檢驗這份文件是否是你簽出來的。
  8. RSA:由羅納德.李維斯特(Ron Rivest)、阿迪.薩莫爾(Adi Shamir)以及倫納德.阿德曼(Leonard Adleman)三位學者1977年提出的非對稱加密演算法,RSA安全性是基於大整數做因數分解的困難性,現行自然人憑證便是使用RSA來做加密與簽章。自然人憑證自100年1月1日起全面換發金鑰長度為2048位元的憑證。
  9. Elliptic Curve Cryptography(ECC):橢圓曲線非對稱加密演算法,主要優勢是使用較少的金鑰長度,提供相當等級的安全性。一般而言ECC使用金鑰長度160位元就相當於RSA 1024位元的安全性;且相對於RSA的指數運算,ECC用乘法運算,在計算速度上也比較快。
  10. 安全技術評估等級,一般商用品的安全最高是EAL等級4。EAL等級5(含以上)的產品,安全認證屬於軍事等級,且在美國必須由「國家安全局(NSA)」來執行驗證,才能申請EAL 5至7級的產品安全認證。
  11. 後門程式:為了遠端管理而開發的程式,被攻擊者惡意使用以遠端遙控方式竊取使用者個人資料。2007年法務部調查局調查廠商邁拓(Maxtor)的外接式硬碟,實際測試後證實有autorun.inf及ghost.pif木馬程式,會主動連線及上傳資料到外部網站。
  12. Replay attack(重送攻擊):一種網路攻擊,攻擊者攔截使用者發送的資料或數據並重複傳送,以取得使用者資料或拖延正常的資料傳輸過程。

本文經新興科技媒體中心授權刊登,原文刊載於此

責任編輯:朱家儀
核稿編輯:翁世航