【IoT】加密與安全:NFC 讀寫 IC 卡以及密碼安全驗證

雖然 IC 卡本身的加密安全性能一般,但仍然有必要了解一下。

1、主要指標

1.1、S50 非接觸式 IC 卡性能簡介(M1)

1)容量爲 8K 位 EEPROM(1K 字節)

2)分爲 16 個扇區,每個扇區爲 4 塊,每塊 16 個字節,以塊爲存取單位

3)每個扇區有獨立的一組密碼及訪問控制

4)每張卡有唯一序列號,爲 32 位

5)具有防衝突機制,支持多卡操作

6)無電源,自帶天線,內含加密控制邏輯和通訊邏輯電路

7)數據保存期爲 10 年,可改寫 10 萬次,讀無限次

8)工作溫度:-20℃~50℃(溼度爲 90%)

9)工作頻率:13.56MHZ

10)通信速率:106KBPS

11)讀寫距離:10cm 以內(與讀寫器有關)

1.2、MiFare one IC S70 主要指標

1)容量爲 32K 位 EEPROM 

2)分爲 40 個扇區,其中 32 個扇區中每個扇區存儲容量爲 64 個字節,分爲 4 塊,每塊 16 個字節; 

3)8 個扇區中每個扇區存儲容量爲 256 個字節,分爲 16 塊,每塊 16 個字節;以塊爲存取單位 

4)每個扇區有獨立的一組密碼及訪問控制 

5)每張卡有唯一序列號,爲 32 位 

6)具有防衝突機制,支持多卡操作 

7)無電源,自帶天線,內含加密控制邏輯和通訊邏輯電路 

8)數據保存期爲 10 年,可改寫 10 萬次,讀無限次 

9)工作溫度: -20 ℃ ~50 ℃ ( 溼度爲 90%) 

10)工作頻率: 13.56MHZ 

11)通信速率: 106 KBPS 

12)讀寫距離: 10 cm 以內(與讀寫器有關)

2、存儲結構

M1 卡分爲 16 個扇區,每區有4塊(塊0~塊3),共 64 塊,按塊號編址爲 0-63。

第0扇區的塊0(即絕對地址塊0)用於存放芯片商、卡商相關代碼,已經固化不可更改。

其他各扇區的塊0、塊1、塊2爲數據塊,用於存貯用戶數據;

塊3爲各扇區控制塊:用於存放密碼 A、存取控制條件設置、密碼 B。

各區控制塊結構相同,容量 = 16區 * 4塊 * 16字節 = 1024 字節。

1)存儲結構

2)第 0 扇區的塊 0(即絕對地址 0 塊),它用於存放廠商代碼,已經固化,不可更改。

3)每個扇區的塊 0、塊 1、塊 2 爲數據塊,可用於存貯數據。

數據塊可作兩種應用:

用作一般的數據保存,可以進行讀、寫操作。

用作數據值,可以進行初始化值、加值、減值、讀值操作。

4)每個扇區的塊 3 爲控制塊,包括了密碼 A、存取控制、密碼 B。

具體結構如下:

密碼 A(6 字節)+ 存取控制(4 字節)+ 密碼 B(6 字節)

5)每個扇區的密碼和存取控制都是獨立的,可以根據實際需要設定各自的密碼及存取控制。

存取控制爲 4 個字節,共 32 位,扇區中的每個塊(包括數據塊和控制塊)的存取條件是由密碼和存取控制共同決定的,在存取控制中每個塊都有相應的三個控制位。

定義如下:

塊 0: C10 C20 C30

塊 1: C11 C21 C31

塊 2: C12 C22 C32

塊 3: C13 C23 C33

如:C10 中的 C 代表這是控制位,1 代表第一位,0 代表是塊 0 的控制位

三個控制位以正和反兩種形式存在於存取控制字節中,決定了該塊的訪問權限。

如進行減值操作必須驗證 KEY A,進行加值操作必須驗證 KEY B。

例如:

字節 6:0xFF   1111 1111

字節 7:0x07   0000 0111

字節 8:0x80   1000 0000

字節 9:0x69

其中:1111 1111 1110 是 0000 0000 0001 的取反

000:塊 0 數據塊權限

000:塊 1 數據塊權限

000:塊 2 數據塊權限

001:塊 3 控制塊權限

6)數據塊(塊0、塊1、塊2)的存取控制:

KeyA|B 表示密碼 A 或密碼 B

例如:

當塊 0 的存取控制位 C10 C20 C30=1 0 0 時,驗證密碼 A 或密碼 B 正確後可讀;

驗證密碼 B 正確後可寫;不能進行加值、減值操作。

7)控制塊塊 3 的存取控制與數據塊(塊 0、1、2)不同,它的存取控制如下:

例如:

當塊 3 的存取控制位 C13 C23 C33=1 0 0 時,表示:

密碼 A:

不可讀,驗證 KEYA 或 KEYB 正確後,可寫(更改)。

存取控制:

驗證 KEYA 或 KEYB 正確後,可讀、可寫。

密碼 B:

驗證 KEYA 或 KEYB 正確後,可讀、可寫。

3、工作原理

卡片的電氣部分只由一個天線和 ASIC 組成。

1)天線:

卡片的天線是隻有幾組繞線的線圈,很適於封裝到 IS0 卡片中。

2)ASIC:

卡片的 ASIC 由一個高速(106KB 波特率)的 RF 接口,一個控制單元和一個 8K 位 EEPROM 組成。

3)工作原理:

讀寫器向 M1 卡發一組固定頻率的電磁波,卡片內有一個 LC 串聯諧振電路,其頻率與讀寫器發射的頻率相同,在電磁波的激勵下,LC 諧振電路產生共振,從而使電容內有了電荷,在這個電容的另一端,接有一個單向導通的電子泵,將電容內的電荷送到另一個電容內儲存,當所積累的電荷達到 2V 時,此電容可做爲電源爲其它電路提供工作電壓,將卡內數據發射出去或接取讀寫器的數據。

4)復位應答(Answer to request)

M1 射頻卡的通訊協議和通訊波特率是定義好的,當有卡片進入讀寫器的操作範圍時,讀寫器以特定的協議與它通訊,從而確定該卡是否爲 M1 射頻卡,即驗證卡片的卡型。

5)防衝突機制 (Anticollision Loop)

當有多張卡進入讀寫器操作範圍時,防衝突機制會從其中選擇一張進行操作,未選中的則處於空閒模式等待下一次選卡,該過程會返回被選卡的序列號。

6)選擇卡片(Select Tag)

選擇被選中的卡的序列號,並同時返回卡的容量代碼。

7)三次互相確認(3 Pass Authentication)

選定要處理的卡片之後,讀寫器就確定要訪問的扇區號,並對該扇區密碼進行密碼校驗,在三次相互認證之後就可以通過加密流進行通訊。

在選擇另一扇區時,則必須進行另一扇區密碼校驗。

8)對數據塊的操作

讀(Read):讀一個塊;

寫 (Write):寫一個塊;

加(Increment):對數值塊進行加值;

減(Decrement):對數值塊進行減值;

存儲(Restore):將塊中的內容存到數據寄存器中;

傳輸(Transfer):將數據寄存器中的內容寫入塊中;

中止(Halt):將卡置於暫停工作狀態;

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