【文章內容簡介】
狀態(tài),以便準備接受新的命令。在輸出數據期間,任何“啟動狀態(tài)”和“停止狀態(tài)”均 被屏蔽掉。 4) 處理數據模式 :這種模式是對 IC 卡芯片做內部處理。 芯片在第一個時鐘脈沖的下降沿將 I/O 從 H狀態(tài)拉為 L狀態(tài)并開始處理。此后芯片在內部連續(xù)計時計數,直到第 N個時鐘脈沖之后的附加時鐘脈沖的下降沿 I/O 線被再次置高,完成芯片的處理過程。在整個處理過程中 I/O 線被鎖定成低狀態(tài)。 芯片的操作命令 1)命令的格式 :每條命令包含三個字節(jié),其順序如下 表 12: MSB 控制字 LSB MSB 地址字 LSB MSB 數據字 LSB B7 B6 B5 B4 B3 B2 B1 B0 A7 A6A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1D0 命令的傳送總是從控制字節(jié)開始。首先傳送字節(jié)的最低位 LSB(即 B0)??刂谱止?jié)傳送完畢以后,依次傳送地址字節(jié)和數據字節(jié),傳送順序均從各字節(jié)最低位開始。在最后一位 D7傳送完成之后,需要增加一個附加脈沖把 I/O 線置成高狀態(tài)。 IC 卡 芯片具有七種命令,其格式和功能見下表 13 字節(jié) 1(控制) 字節(jié) 2(地址) 字節(jié) 3(數據) 功能 命令模式 30H 38 H 34 H 3B H 31 H 39 H 33 H 地址數 地址數 無效 地址數 無效 地址數 地址數 無效 輸入數據 無效 輸入數據 無效 輸入數據 輸入數據 讀存儲器 修改存儲器 讀保護存儲器 寫保護存儲器 讀加密存儲器 修改加密存儲器 比較校驗數據 輸出數據模式 處理模式 輸出數據模式 處理模式 輸出數據模式 處理模式 處理模式 2)有關命令的說明 : 讀主存儲器 :該命令是指讀出主存儲器的內容。該命令的控制字為 (30H)。對于每個字節(jié)來說總是從最低位開始讀出。從給定的字節(jié)地址 (N)開始,直到整個存儲器的末尾。在畢業(yè)論文:基于單片機的 IC 卡讀寫系統的實現 7 該命令輸入以后,接口設備 IFD 必須提供足夠的時 鐘脈沖。對于從地址 (N)開始讀數據所需要的時鐘脈沖的數量 M=(256N) 8+1。對 主存儲器做讀操作不受限制。 讀保護存儲器 :該命令的控制字為 (34H).在連續(xù)輸入 32 個時鐘脈沖情況下,芯片將保護存儲器內各位內容傳送到 I/O 線上。最后一個附加時鐘將 I/O 線置為 H 狀態(tài)。對保護存儲器進行讀取操作不受限制。 讀加密存儲器 :該命令類似于讀保護存儲器那樣,可以讀出 4 個字節(jié)的加密存儲器的內容。在輸出數據模式下,所需時鐘脈沖的數量為 32。其后再附加一個時鐘脈沖將 I/O線置成高狀態(tài)。如果可編程加密代碼( PSC)的校驗不成 功 (除第 0 字節(jié)可讀除外 ), I/O線總保持低狀態(tài)。 修改主存儲器 :該命令就是根據所傳送地址字節(jié)數據,尋址主存儲器的 EEPROM 字節(jié),然后修改字節(jié)內容。該命令的控制字為 (38H)。在處理模式期間,可能有幾種情況: —— 擦除和寫入至少需要 5ms —— 只寫入不擦除,至少需要 —— 只擦除不寫入,至少需要 修改加密存儲器 :該命令是根據所傳送的字節(jié)數和要修改的數據,將加密存儲器中相應字節(jié)的內容進行修改。該命令的控制字為 (39H),該命令只能在可編程加密代碼 (PSC)比較成功之后才能進行。該命令的執(zhí)行 時間和所需的時鐘脈沖與修改主存儲器的情況相同。 寫保護存儲器 :這一命令的執(zhí)行過程包括一個把被輸入的數據與在 EEPROM 中對相應數據進行比較的過程。在確認一致的情況下,保護字位被寫 0。從而使得主存儲器中的信息不可更改。如果數據比較結果不一致,則保護字位的寫操作將被禁止。該命令所需時鐘脈沖和執(zhí)行時間與修改主存儲器命令的情況相同。 存儲芯片的選擇 在此讀寫系統中,單片機必須擴展片外 E178。PROM 用來存儲關鍵信息。工程上常用的E178。PROM 的 28 系列的芯片具有編程簡單、使用方便的特點,但是在此讀寫系統中其容量比實際要求的要大,若選用此系列的芯片不但能浪費絕大部分的存儲單元,而且占用外部的存儲空間,增加了譯碼線路,并且增加了線路板的面積。因此,本系統選用美國 Microchip公司生產的 AT24C02 芯片,不但能最大限度地利用其容量,且不用地址譯碼,不占用外存空間。 該芯片存儲容量為 256 字節(jié),采用 I2C 串行總線協議與單片機通信,該芯片采用低功耗 CMOS 工藝制造,可以在無電源狀態(tài)下長期可靠存儲系統內重要數據,工作壽命可達畢業(yè)論文:基于單片機的 IC 卡讀寫系統的實現 8 106次。當 IC 卡插入系統時,卡內的關鍵數據將存儲在 AT24C02 芯片中,從而實現了重要數據的備 份,提高了讀寫器的可靠性與穩(wěn)定性。 AT24C02 芯片還具有體積小巧的特點,并且采用特殊的工作時序,絕不會誤寫成功,具有高度的可靠性。 A01A22A23V s s4 S D A 5S C L 6Wp 7V c c 8 圖 12 儲存器 管腳圖 SCL:串行時鐘輸入線。數據發(fā)送或接收的時鐘從該引腳輸入。 SDA:串行數據 /地址線。用于傳送地址和發(fā)送與接收數據,為雙向傳輸。 A0、 A A2:器件地址輸入端。 WP:寫保護端。 WP=1 為寫保護,只能讀出不能寫入, WP=0 時器件允許進行正常的讀寫操作。 畢業(yè)論文:基于單片機的 IC 卡讀寫系統的實現 9 第二章 讀寫 系統的工作機制 通訊傳輸機制 本系統中設計的 讀卡器與 IC 卡之 間通信按照一定的操作進行: 讀卡器產生的 RF 場激活 IC 卡工作,之后 IC 卡等待來自 讀卡器的命令, 讀卡器傳送尋卡命令, IC 卡接收到命令之后則傳回響應信息。時隙 算法 ,把時間分為離散的時間段(即時隙),時間段的個數一般有 16 個,每段時間對應一幀數據,一個時隙的大小一般規(guī)定的是 IC 卡傳送自身 ID 號所用的時間,這種方法必須有全局的時間同步,在 系統中,所有的 IC 卡同步由讀寫器控制,時隙數的選擇由隨機數產生, IC 卡只在規(guī)定的相同的時隙開始才傳送其數據幀,并在該時隙內完成傳 送。在時隙算法中,最大的問題是時隙個數的確定,隙數數量 N 對信道的傳輸性能有很大影響,如果有較多的 IC 卡處在讀卡器的作用范圍內,而時隙數有限,則系統的吞吐率就會下降很快。在最壞的情況時,沒有一個 IC 卡能單獨處于一個時隙中發(fā)送成功,這時需要進行調整時隙數,以便有更多的時隙可以使用。如果準備了較多的時隙,但 IC 卡較少,則會造成傳輸效率降低。因此,在時隙算法的基礎上,產生了動態(tài)時隙算法,該算法可動態(tài)的調整時隙數量。動態(tài)時隙算法的基本思想是:讀寫器在等待狀態(tài)中的循環(huán)時隙段內發(fā)送請求命令,該命令使處于工作 狀態(tài)的 IC 卡同步,然后提供 1 或 2 個時隙給處于工作狀態(tài)的 IC 卡使 用, IC 卡可以選擇自己的傳送時隙,如果在這 1 或 2 個時隙內產生了較多的數據沖突,則讀寫器就在下一個請求命令中增加可以使用的時隙數,直到不出現沖突為止。 命令處理流程 IC 卡進入 系統的工作場并獲得足夠的能量后,首先完成防沖突處理流程處理防沖突流程的命令,然后進入應用處理流程,處理應用層的命令 ??ㄆ谂c讀寫設備的通信過程中的狀態(tài)見圖 21: 畢業(yè)論文:基于單片機的 IC 卡讀寫系統的實現 10 P O W E R O F F狀 態(tài)I D L E狀 態(tài)R A E D Y狀 態(tài)A C T I V E狀 態(tài)H A L T狀 態(tài)上 位 復 電R U P A W U P A 命 令應 用防 沖 突 循 環(huán)S E L E C T 命 令W U P A 命 令 圖 21 IC 卡通信狀態(tài)圖 POWER OFF 狀態(tài):卡片缺少負載能量而處于斷電狀態(tài)。 IDLE 狀態(tài):卡片有電,可以偵聽并識別尋卡命令 REQB、 WUPB。在成功執(zhí)行過尋卡命令后,卡可以進入 READY 狀態(tài)。 READY 狀態(tài):可以應用法沖突方法得到 CID。根據 CID,卡片被選中后,可進入 ACTIVE 狀態(tài)。 ACTIVE 狀態(tài):卡片可執(zhí)行應用操作,當接收到一個有效的掛起命令后,卡片進入 HALT 狀態(tài)。 HALT 狀態(tài):在掛起狀態(tài),卡片僅對 WUPB 命令有反應。 防沖突處理流程 IC 卡感應到最小感應場后進入空閑狀態(tài),這時 ,卡被上電,只能響應尋卡 /喚醒( REQB/WUPB)命令,讀寫系統是與一個或多個 IC 卡通信時的主控方,它通過發(fā)出尋卡( REQB)命令來激活 IC 卡的通信活動,以便提示卡進行響應。在防沖突期間,可能發(fā)生兩個或兩個以上都 IC 卡同時響應,也就是發(fā)生了沖突。在完成防沖突處理后, IC 卡通信將完全處于 讀寫系統的控制下,讀寫系統只有一個接口,因此,每次通信只允許與一個 IC 卡通信。防沖突處理方案是以時間槽為基礎的,要求 IC 卡在時間槽內用最小的標識數據進行應答,時間槽的個數被參數化,范圍從 1 到某一整 數 N, N 一般定義為 16,在每一時間槽內, IC 卡響應的概率也是可控制的。在防沖突處理流程中, IC 卡僅被允許應答一次,從而,即便在 讀寫系統場中有多張卡,在一個時間槽內也僅有一張卡應答,并且 讀寫系統在這個時間槽內能捕獲 IC 卡的標識,根據標識, 讀寫系統與被標識的卡建立一個通信通道。 IC 卡接收到正確的尋卡 /喚醒( REQB/WUPB)命令后進入預備接收( READYREQUESTED)狀態(tài),如果命令中應用類別號 (AFI)與自己的 AFI 相符,則繼續(xù)判斷時隙數 N,如果 N=1,則返回 ATQB,進入 READY_DECLARED 狀態(tài)。如果 N 不為 1,則在卡內產生一個 1~N 之間的隨機數 R,如果 R=1,則返回 ATQB,進入 READY_DECLARED 狀畢業(yè)論文:基于單片機的 IC 卡讀寫系統的實現 11 態(tài)。如果 R1 則等待時隙數為 R 的 SLOT_MARKERL 命令后,發(fā)送 ATQB 命令,進入READY_DECLARED 狀態(tài)。此時,卡也可以響應 REQB/WUPB 命令,重新回到 READY_REQUESTED狀態(tài)。進入 READY_DECLARED 狀態(tài)后,卡可識別 REQB/WUPB 命令、 ATTRIB 命令、 HALT 命令。當接收到 REQB/WUPB 命令,則又重新回到 READYREQUESTED 狀態(tài)。當接收到休眠( HALT)命令,則進入休眠( HALT)狀態(tài),此時,卡之響應 WUPB 命令。當接收到 ATTRIB命令,如果與自己的卡唯一標識符 PUPI 不同,則仍處于 READYDECLARED 狀態(tài),相同則返回響應,進入激活狀態(tài),此時,卡將只響應應用層命令和 DESELECT 命令。 數據傳輸的完整性和安全性 使用 識別技術傳輸數據時和容易遇上干擾,使傳輸的數據發(fā)生改變從而導致 傳輸錯誤。通常使用數據檢錯與糾錯算法來識別傳輸錯誤并啟動校正措施。在 識別的通信程過中最常用的檢驗方法就奇偶校驗、循環(huán)冗余校驗。 IC 卡應確認讀卡器的身份,防止存儲數據未被認可的讀出或重寫,而且讀卡器也應確認 IC 卡的身份,以防止假冒和讀入偽造數據。在與安全有關的識別系統的應用中,例如出入系統或支付系統,必須采取安全措施來防止遭受惡意攻擊。 認證過程 (a)讀卡器發(fā)送查詢命令給 IC 卡, IC 卡返回響應信息,響應信息中包含 一個隨機數 Rb 給讀卡器。 (b)讀卡器產生一個隨 機數 Ra,使用共享的密鑰 K 和共同的加密算法 Ek,算出加密 數據塊 TOKEN AB,并將 TOKEN AB 傳送給 IC 卡。 (c) IC 卡接收到 TOKEN AB 后,進行解密,將得到的隨機數 Rb’與原先發(fā)送的 Rb 比較,如果結果一致則讀卡器獲得了 IC 卡的確認。 (d) IC 卡發(fā)送另一個加密數據塊 TOKEN BA 給讀卡器, IC 卡產生一個隨機數 Ra1,使用共享的密鑰和共同的加密算法,算出加密的數據塊 TOKEN BA,發(fā)送給讀卡 器。 (e)讀卡器接收到 TOKEN BA 并對其解密,若最后得到的隨即數 Ra’與原先發(fā)送的隨機數 Ra 相同,則完成了讀卡器對 IC 卡認證過程。 加密的數據傳輸 :通信時的數據在傳輸時可能會受到非法的攻擊。識別系統在閱讀器與應答器之間傳輸數據時,使用密鑰和加密算法將傳輸數據(明文)變換為秘密數據(密文),可以有效防止攻擊。若不了解加密算法和密鑰 K,攻擊者無從解釋其截獲的密文。 通信命令及響應格式 畢業(yè)論文:基于單片機的 IC 卡讀寫系統的實現 12 21 ANTICMD CRC N Bytes 2Bytes ANTICMD:防沖突流程中的命令, N0 DATA CRC2