南京鐵道職業技術學院王嘯東
基于單片機的IC卡讀寫方法研究
南京鐵道職業技術學院王嘯東
在日常生活中,IC卡有著越來越廣泛的應用,如小區的安保系統、食堂的管理系統等。IC卡的安全性是使用者最為關心的問題之一。本文中,筆者介紹的西門子公司生產IC卡為帶有保護功能和可編程密碼(PSC)的256個字節EEPROM的存儲卡SLE4442。SLE4442具有256X8位的EEPROM用戶內存;32X1位寫保護內存;2線制通信協議,可以按字節尋址;串行接口、觸點配置、復位響應符合ISO標準7816-3;擦除和寫入的編程時間各為2.5MS等特性,滿足了IC卡應用系統的設計要求。
SLE4442主存儲器的容量為256個字節,每個字節為8位。主存儲器可分為保護區和應用區,地址單元為00H~1FH的32個字節是保護區,帶位保護功能,一旦實行保護后,被保護的單元不可擦除和改寫。保護區中沒有設置為保護狀態的字節,其使用與應用區完全相同。
SLE4442保護區已固化的信息如下:00H~03H復位應答信息;04H~07H芯片生產廠家代碼和卡型編碼;15H~1AH應用標識。在應用系統中,根據需要,保護區既可用作存放固定信息,如發行單位編號、卡編號、批次號、發行時間、持卡人姓名、證件號碼等,也可像應用區一樣,存放可變信息。
1.復位電路。在電路上,IC卡與接口設備的連接采用I2C總線形式,支持ISO/7816-3同步傳輸協議,除去密碼區操作外,其他類似與對一般串行EEPROM的操作。對SLE4442的操作僅需3根線,即串行時鐘線CLK、復位線RST和雙向資料線I/O。3根線各自都需要通過一個上拉電阻連到電源線上。復位和復位應答的時序如圖1所示。

上電以后,隨著CLK上的1個時鐘脈沖,當RST由高電平到低電平時,即進行了一次復位操作。這個操作將得到卡的應答。隨著以后32個時鐘脈沖的輸入,I/O線上將得到相應的32位資料,這就是從卡發送到CPU的復位應答標頭。
2.密碼存儲器操作。對密碼內存的操作有三個命令:讀密碼、寫密碼和校驗密碼。其中最主要的是校驗密碼,密碼校驗正確,讀/寫密碼的情況就類似與讀/寫主存儲器的操作。校驗密碼必須嚴格按圖的程序框圖進行,任何改變都會導致失敗,達不到改寫卡中資料的目的,還可能引起EC位從“1”變為“0”。在程序返回前,如校驗不成功,芯片內部將相當于使EC的三位右移一次,高位用0填充。
3.密碼存儲器操作記憶體操作。對主存儲器的操作有4個命令,包括了讀/寫保護區的命令。如果保護區里有被保護位,被保護的信息就不能改寫。伴隨著32個時鐘脈沖的輸入,使用讀保護區的命令可以知道32個字節中那些有被保護的位,也就能夠讀出保護區的內容。保護區中沒帶保護位單元的操作如同對應用區的操作一樣。

IC卡系統硬件電路介紹了單片機、(IC)SEL4442等硬件電路的設計(圖2)。在IC卡控制系統中,在對卡操作前,一般要進行復位和復位應答操作,有時要連續進行兩次這樣的操作,才能得到正確的復位應答信息。復位應答以后,芯片等待輸入操作命令。每個命令必須由三部分組成:一個開始狀態,接著是寫入三個字節(命令字、地址、資料),再接著是一個停止狀態。CLK在高電平時,I/O線由高到低為開始狀態;CLK在高電平時,I/O線由高到低為停止狀態。
西門子公司的IC卡SLE4442,有著眾多的保護、密碼功能,提高了IC卡系統的安全性,推進了IC卡應用系統的普及速度。本文中,筆者介紹的基于單片機的IC卡讀寫方法在實際應用中有著良好的工作效果,系統安全、穩定、可靠。