IC卡讀寫器的編程和使用
IC卡與其它卡片的區別主要是:IC 卡能在卡上存儲器中安全可靠地存儲大量有用信息,并且可以對數據提供多級安全保密措施.因此,為設計一個好的IC 卡應用系統,必須了解IC卡的數據結構特點.掌握IC卡的編程和讀寫方法.
從使用角度來看,不管是普通存儲卡,邏輯加密卡,或智能CPU卡,卡上必定有:用于與其它應用系統相區別的發行商代碼, 用于與本系統中其他用戶相區別的個人代碼,用于控制對卡上數據修改的擦除密碼,以及用于存放數據的存儲區.由于IC 卡平時不與電源相接,要保證卡上存儲的數據不會丟失,只能使用只讀存儲器即ROM 型存儲器.因此卡上數據可以長期保存,一般數據可存放100年.又由于IC卡上數據在使用中要經常修改,故一般應該使用電可擦除可編程只讀存儲器,即EEPROM.一般IC 卡數據改寫次數大于100000次.
目前的各種IC卡應用系統中使用的IC卡主要是邏輯加密型卡. 這種卡帶有多級密碼保護,比普通存儲卡安全性能強得多;同時又比智能CPU卡結構簡單,不需要復雜的密碼計算過程,而且結構簡單,編程使用方便.本講中以美國ATMEL公司的邏輯加密卡AT88SC1604為例,來說明對IC卡應用系統中的IC 卡發行軟件和用戶應用軟件的編程方法,以及IC卡寫入過程.
一.邏輯存儲卡的數據結構和編程特性
AT88SC1604卡具有一個公用區和四個應用數據區.其數據結構如附表所示.公用區內有廠商代碼,發行商代碼,總密碼,密碼計數器等等.我們可以規劃和利用這些數據區對全卡基本特性進行控制.應用區共四個,第個分區有自己的分區密碼, 擦除密碼,密碼計數器和讀寫控制位,用于對本區內數據的寫入,讀出和修改進行控制.應用區其余部分是存儲數據的存儲單元.1604卡的第一分區存儲容量為9K位,其它三個分區數據存儲容量為2K位.連同公用區總存儲量為16K位.
廠商代碼又叫制造商代碼,是由IC卡制造商在卡出廠時寫入.一般對某一發行商提供的一批卡提供同一代碼,以便與其它廠商的卡相區別. 寫入時將相應保護熔絲1熔斷,此時IC卡開發者可以讀出廠商代碼,判斷其生產廠商,但不能修改它.
發行商代碼:用于IC卡個人化,發卡時由系統軟件寫入, 用來表明此卡屬于哪一應用系統.例如:工商行發行的金融IC卡寫入的發行商代碼,表明了所屬的金融系統.此卡使用時,ATM機會自動核實這一代碼.如果不正確,說明這不是本系統的卡,不能使用.發行商代碼受熔絲2控制,熔斷前,此密碼可修改,熔斷熔絲后.此密碼可讀出, 可核實,但不能修改.
IC卡上的熔絲是IC卡個人化標記.除控制發行商代碼外,也控制整個卡上數據的讀寫.熔絲熔斷前,卡上數據讀寫受總密碼SC和讀寫控制位控制, 各分區密碼不起作用,此時可用IC卡讀寫器對卡進行初始數據的規劃和寫入.熔絲熔斷后, 卡發給用戶個人,此時各分區數據操作不但受總密碼SC控制,而且受各分區密碼和擦除密碼和控制.
總密碼SC一般用作用戶密碼,應通過IC卡發行軟件中提供的用戶環境,由用戶自己設置并且寫到卡上.此密碼一旦寫入,不可讀出也不保留在系統中,只能核對.用戶在以后使用IC卡時,可能通過由應用程序提供的密碼核對功能界面,由用戶本人鍵入加以核對.密碼輸入正確,說明是合法用戶,可以對卡上數據進行讀寫.密碼輸入錯誤時,密碼計數器SCAC減1.此外,在熔絲熔斷之前,總密碼還控制各分區密碼的讀寫.
密碼計數器SCAC用于統計用戶密碼核對次數.輸入正確密碼時,計數器清零( 即8位全置-1-).每輸錯一次,計數器一位變為-0-,若八次輸入錯誤,計數器各位全變為-0-時,則此卡已作廢.
擦除密碼控制對存儲器中已寫數據的擦除.由于EEPROM 在寫入數據時只能寫入到空白區(即各位為-1-),對已寫有數據的存儲區只能先探險,后寫入.每次要擦除一行信息.擦除密碼在卡發行時寫入,由應用系統控制,只能核實,不能讀出以防止非法破壞卡上已有的數據.
各分區有自己的分區密碼,以便實現一卡多用.分區密碼和分區擦除密碼控制本區數據的讀,寫,擦操作.例如用一個1604卡兼工作證,醫療證,工資卡和就餐卡.在不同場合使用此卡時讀寫器分別核實各分區密碼,僅操作本區數據,而不影響其它分區.