關於校園一卡通的便攜化及Mifare M1卡的內部結構

一.便攜化:

        隨着智能設備的普及化以及功能的集成化,現在人們出行只需要一部手機就可以了。但是如果你是在大學的話,就會知道,大學有校園卡這一說。學校會將校園的服務認證。集成到一張卡里面,只有通過卡片進行認證,才能獲得學校的相關服務,例如:借書,洗澡,購物,吃飯,打水等等。

         這種校園一卡通一般都是聯網的,也就是說卡片的使用記錄是會被存儲到數據庫中的,使用記錄是可以查詢的,金額是可以通過網絡進行實時糾正的。這樣的話,對於學校來說,學校的財產安全是得到保障的,不會被別有用心的人“偷錢用”,也就是不能通過更改卡中的金額數據來消費。數據庫會對卡片中的金額進行糾正,當卡片中的金額與數據庫中金額不匹配時,卡中的數據就會被修改成正確數據,來避免“盜刷”。

         但是,這種卡對於學生來說,並不是很友好。卡片本身比較容易丟失,而且補辦非常麻煩,且補辦的費用也不便宜(可以說是暴利)。其實,丟失的風險是可以避免的,我們只要找到合理的方式就可以了。

          下面我談談我的想法,最容易想到的就是把卡夾在手機殼後面。如果是軟殼的話,放下一張卡是沒有問題的,但如果是硬殼的話,根本不可能放得下。如果是多張卡的話,那完蛋了,軟殼也是放不下的。

          而且,就算軟殼手機後面能放下卡,但是手機本身會對射頻的讀寫產生影響,導致卡在手機後面是無法讀寫的,使用的時候還是要從後面拿出來,雖然不容易掉了,但還是很不方便。

           所以我想到了這個解決方案:https://blog.csdn.net/C1664510416/article/details/93408450,這個方案是在長期的摸索中,總結出來的,雖然看着一目瞭然,但是整個思路過程並不是一下子就能想出來的。

二.關於M1卡:

       要想對卡進行改造,必須對卡的工作原理有一定的瞭解,改造越大,創意越新穎,對卡的內部結構的瞭解就要越深(要想做出前所未有的創造,得學多少東西呢?)。

      M1卡的內部結構:

      (1)Mifare1卡由16個扇區組成,每個扇區在有4個數據塊組成,按照順序將數據塊進行編碼,其地址編碼爲0~63

     (2)在扇區1的第0數據塊,存放張卡片製造廠家信息,這個扇區的信息已經固化,不能修改。

     (3)每個扇區的4個數據塊,功能不同。數據塊0~2是用於存儲數據。這3個數據塊主要應用於數據存儲和數據讀操作。

              這裏存儲的數據,可以進行數值初始化、加、減、讀操作。

     (4)塊區3作爲控制塊存在,用於存儲密碼A、存儲控制和密碼B

     (5)每個扇區內數據塊3中的密碼和存儲控制全部獨立存在(也就是說M1卡可以驗證多臺設備實現多種功能),用戶可以根據的需求進行設置。存儲控制限定在4 B,32 bit 。對每個扇區中的每個數據中的每個數據的存取條件均是由密碼和存儲控制共同確定的,每個存儲控制由三個控制位組成。

     (6)控制位是以正反形式存儲於控制字節中,確定了數字塊的訪問權限。例如,進行加值操作須驗證KEY B,進行減值操作須驗證KEY A

       驗證漏洞:

      驗證漏洞是目前使用最多的Mofare M1破解手段,在讀卡器嘗試去讀取一個扇區時,卡會首先發一個隨機數給讀卡器,讀卡器接到隨機數之後利用自身的算法加密這個隨機數再反饋回給卡,卡再用自己的算法計算一次,發現結果一致的話就認爲讀卡器是授權了的,然後就用開始自己的算法加密會話並跟讀卡器進行傳送數據。這時候問題就來了,當再次嘗試去訪問另一個扇區,卡片又會重複剛纔那幾個步驟,但此時卡跟讀卡器之間的數據交換已經是被算法加密了的,而這個算法又是由扇區的密鑰決定的,所以密鑰就被泄露出來了。因此驗證漏洞要求至少知道一個扇區的密鑰,但目前大部分的扇區都沒有全部加密,所以很容易就會被破解。

     重放攻擊:

      重放攻擊是基於Mofare M1卡的PRNG算法漏洞實現的,當卡接近讀卡器獲得能量的時候,就會開始生成隨機數序列,但這有一個問題,因爲是被動式卡,本身不帶電源,所以斷電後數據沒辦法保存,這時基於LSRFPRNG算法缺陷就出來了,每次斷電後再重新接入電,卡就會生成一模一樣的隨機數序列,所以就有可能把這個序列計算出來,所以只要控制好時間,就能夠知道在獲得能量後的某一刻時間的隨機數是多少,然後進行重放攻擊,就有可能篡改正常的數據。如果卡的所有權在手上時,甚至不需要花費太多的時間就可以實現。

 

 

 

 參考文章:[1]  Mifare卡安全性和破解技術_陳威

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章