iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0

Day 25 M1 卡第一次認證的協定及範例

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

讓我們先來認識一下 M1 卡認證的協定及範例,以便能夠更進一步認識攻擊手法的原理。

Crypto-1 三步驟認證

M1 卡的 Crypto-1 三步驟認證(Three Pass Authentication)是一種用來確保卡片和讀卡器之間通信安全的機制。讀卡機和卡片會同時使用金鑰來協調出真正用來加密或解密資料的 keystream,這個 keystream 每加密一個位元就會變動。這個機制是由以下三個步驟所組成:

  1. 卡片挑戰
    • 卡片向讀卡器發起一個名為卡片挑戰 nt 的隨機數。
  2. 讀卡機回應與挑戰
    • 產生一個名為讀卡機挑戰 nr 的隨機數並與金鑰所產生的 keystream1 進行 XOR 運算。
    • 讀卡機使用卡片挑戰 nt 產生 ar 後與金鑰所產生的 keystream2 進行 XOR 運算。
    • 然後將這兩個加密過的資料回傳給卡片。
  3. 卡片回應
    • 卡片使用卡片挑戰 nt 產生 ar,然後與讀卡機傳送的資料以 keystream2 解密後進行比對。
    • 如果正確時就用 keystream1 解密讀卡機挑戰 nr。
    • 然後使用讀卡機挑戰 nr 產生 at 後與金鑰所產生的 keystream3 進行 XOR 運算。
    • 最後將加密後的資料回傳給讀卡機。
  4. 讀卡機收到回應
    • 讀卡機使用讀卡機挑戰 nr 產生 at,然後與卡片傳送的資料以 keystream3 解密後進行比對。
    • 判斷認證是否成功。

使用 Proxmark3 攔截的通訊資料範例

以下是均民使用 Proxmark3 攔截的通訊資料,並以此為例來介紹實際的認證過程:

首先,第一部分是 M1 卡片的喚醒、防碰撞與選擇卡片:

接下來,讀卡機傳送 60 00 CRC 給卡片,其中 0x60 代表對 Key A 進行認證,0x00 代表區塊 0:

接著,卡片會傳送卡片挑戰 nt 給讀卡機:

然後,讀卡機會產生一個讀卡機挑戰 nr 並與 keystream1 進行 XOR 運算,並使用卡片挑戰 nt 產生 ar 與 keystream2 進行 XOR 運算之後一起傳送給卡片:

接下來,卡片會驗證 ar 的正確性,如果正確就使用讀卡機挑戰 nr 產生 at 與 keystream3 進行 XOR 運算之後傳送給讀卡機:

最後,讀卡機會驗證 at 的正確性,到此就完成了 M1 卡的三步驟認證。


上一篇
Day 24 攔截通訊資料並進行 MFKey64 攻擊
下一篇
Day 26 Nested 系列攻擊手法的原理簡介
系列文
免安裝!一起用 JS 來控制開源的 NFC 讀卡機變色龍吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言