iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
JavaScript

免安裝!一起用 JS 來控制開源的 NFC 讀卡機變色龍吧!系列 第 19

Day 19 針對 M1 卡半加密卡或全加密卡的攻擊 ①

  • 分享至 

  • xImage
  •  

Day 19 針對 M1 卡半加密卡或全加密卡的攻擊 ①

本文章的內容僅限學術及研究用途,請勿進行任何違法行為,否則後果自負。

通常卡片在製造的時候,會被設定一組預設的卡片金鑰。如果門禁系統有修改卡片的部分金鑰,就稱為半加密卡;如果有修改全部的金鑰,就稱為全加密卡。前面均民示範的幾個 M1 卡的範例程式碼,都是假設卡片是在未加密的狀態,但如果想要讀取半加密卡或全加密卡的內容,就要先想辦法取得卡片金鑰。

M1 卡使用了一個名為 CRYPTO-1 的加密演算法,會把讀卡機與卡片之間的通訊資料進行加密。但在過去的幾年中,已經發現了多種針對 M1 卡的攻擊方法。這些攻擊利用了 CRYPTO-1 的設計缺陷,可以在短時間內恢復金鑰,並破解取得卡片中儲存的資料。

字典檔攻擊

這個攻擊手法主要就是蒐集一些常見的卡片金鑰,然後逐一嘗試。以下是 M1 卡常見的字典檔:

Darkside Attack

這個攻擊手法是利用了兩個漏洞:NACK 洩漏的漏洞、以及卡片挑戰的隨機數隨機性不足的漏洞。這個攻擊手法可以憑空獲得金鑰,但因為速度較慢,所以通常在拿到任何一個金鑰之後,就會使用其他的攻擊手法(例如:Nested)。

MFKey32

這種攻擊手法是透過模擬卡片,並讓讀卡機使用金鑰進行認證至少 2 次。認證過程中模擬卡會傳送卡片挑戰,並記錄讀卡機所傳送的回應。由於卡片挑戰是已知的,所以可以計算 keystream 並還原金鑰。

名詞解釋:

  • keystream:M1 卡在資料加解密時,並不是直接使用卡片的金鑰,而是透過卡片的金鑰計算出 keystream,然後再與資料進行 XOR 運算,並且每加密一個位元後就會經過特定公式計算下一個 keystream。

攔截通訊資料並進行 MFKey64 攻擊

透過攔截讀卡機與卡片之間的通訊資料,然後透過分析資料並進行 MFKey64 攻擊來還原金鑰。

Relay Attack

這種攻擊手法其實就是中間人攻擊 (MITM)重放攻擊,主要是將兩個裝置連接起來,並讓一個裝置 A 模擬成卡片與真正的讀卡機溝通,然後讓另一個裝置 B 模擬成讀卡機與真正的卡片溝通。這樣除了可以攔截中間通訊的內容之外,還可以重播、篡改通訊資料。這個手法均民也沒有研究過,所以不會著墨太多。


上一篇
Day 18 M1 卡片的完整模擬及拷貝
下一篇
Day 20 針對 M1 卡半加密卡或全加密卡的攻擊 ②
系列文
免安裝!一起用 JS 來控制開源的 NFC 讀卡機變色龍吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言