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