ATMEL接觸式IC卡及開發實例_第1頁
ATMEL接觸式IC卡及開發實例_第2頁
ATMEL接觸式IC卡及開發實例_第3頁
ATMEL接觸式IC卡及開發實例_第4頁
ATMEL接觸式IC卡及開發實例_第5頁
已閱讀5頁,還剩228頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Untitled Document頁碼,1/36ATMEL接觸式IC卡及開發實例Untitled Document偽碼程序在AT24C系列卡的ADDR地址開始寫LEN個字節,并且讀出校對。 寫成功 ELSE 寫失敗偽碼程序在AT24C系列卡的ADDR地址開始讀LEN個字節。AT88SC102、AT88SC1604、AT88SC1608、AT88SC153幾個型號的IC卡為ATMEL加密卡,采用CMOS低功耗技術,具有傳輸代碼、生產,密碼及錯誤計數器、熔絲保護等安全保護功能。存儲空間分成設置區和區兩大功能區,應用區又可分為不同的分區,每個區具有各自獨立的保密能。從型號上看,AT88SC為系列號,

2、最后一位數字為應用區分區數,分別為、4、8、3個分區,中間的數字10、160、15為K位容量,分別為1K、16K、1.5K位。其中不同應用分區另有自已的分區密碼。AT88SC1604又可分為等區卡和不等分區卡兩種。AT88SC102加密卡加密卡的訪問時間讀為2us/位,寫為5ms/位;工作電壓為5V10%;/擦除次數為10萬次;數據保持100年;工作溫度為-2570;通訊協議符合同步協議。分區 位地址 位數 字節地址 字節數廠商代碼區 0-15 16 0-1 2發行者區 16-79 64 2-9 8主密碼區 80-95 16 10-11 2主密碼錯誤計數區 96-111 16 12-13 2代

3、碼保護區 112-175 64 14-21 8應用區一 176-687 512 22-85 64一區擦除密碼 688-735 48 86-91 6應用區二 736-1247 512 92-155 64二區擦除密碼 1248-1279 32 156-159 4二區擦除密碼錯誤計數 1280-1407 128 160-175 16測試區 1408-1423 16 176-177 2:擦、寫是兩種不同的操作,擦是位寫1操作,寫是位寫0操作。修改數據,只有先擦除才能再寫數據。熔絲熔斷(FUSE2)前與熔絲熔斷后它的保密特性是不同的。的保密特性:由ATMEL公司出廠時設置(FUSE1),只讀不可更改。A

4、TMEL公司可以為批量戶定制此代碼,以保證卡片的唯一性。:可讀。SC核對正確,IZ可以反復擦寫。:SC核對正確時,SC可讀和擦寫,SC核對不正確時,SC不能讀和擦寫。 :初始值為4,SC核對每錯1次SCAC減1,SCAC等于0時,卡自毀,如果SC核正確SCAC恢復為初始值4。SCAC永遠可讀。:為用戶標注,用于對卡中信息操作過程的標注,永遠可讀,SC核對正確后,AZ2;前2位為寫讀保護位,即176位為AZ1寫保護位(1PR),177位為AZ1頁碼,2/36Untitled Document保護位(1RD),736位為AZ2寫保護位(2PR),737位為AZ2讀保護位2RD)。 SC核對正確時,

5、AZn可讀(n代表1或者2,下同),如果SC核對不正確,nRD控制著AZn的可讀性,即如果nRD=1時,AZn可讀;如果nRD=0時,AZn不熔絲熔斷(FUSE2)前,nPR不起作用,只要SC核對正確,AZn就可擦寫, ,EZ2:SC核對不正確時,EZn不能讀和擦寫。SC核對正確時,EZn可讀和擦熔絲熔斷(FUSE2)前,EZn不起什么作用。:熔絲熔斷(FUSE2)前,EAC2不起什么作用。:用于測試卡的擦寫性能。任意條件下均可測試。后的保密特性:由ATMEL公司出廠時設置(FUSE1),只讀不可更改。ATMEL公司可以為批量戶定制此代碼,以保證卡片的唯一性。:永遠可讀。但熔絲熔斷(FUSE2

6、)后IZ內容被固化,IZ將永遠不能再改。 :不可讀,SC核對正確時,SC可擦寫,SC核對不正確時,SC不能擦寫。 :初始值為4,SC核對每錯1次SCAC減1,SCAC等于0時,卡自毀,如果SC核正確SCAC恢復為初始值4。SCAC永遠可讀。:為用戶標注,用于對卡中信息操作過程的標注,永遠可讀,SC核對正確后,AZ2;前2位為寫讀保護位,即176位為AZ1寫保護位(1PR),177位為AZ1保護位(1RD),736位為AZ2寫保護位(2PR),737位為AZ2讀保護位2RD)。 SC核對正確時, AZn可讀(n代表1或者2,下同),如果SC核對不正確,nRD保護著AZn的可讀性,即如果nRD=1

7、時,AZn可讀;如果nRD=0時,AZn不熔絲熔斷(FUSE2)后,即使SC核對正確,也要看nPR是否為1,如果是0,AZn寫保護永遠不能寫。,EZ2:SC核對不正確時,EZn不能讀和擦寫。SC核對正確時,EZn可讀和擦熔絲熔絲熔斷(FUSE2)后,只有EZn核對正確,才能對AZn進行擦除操同時不可能再對EZn進行讀和擦寫操作。:熔絲熔斷(FUSE2)后,AZ2只有128次擦除機會,每擦1次計數減1。 :用于測試卡的擦寫性能。任意條件下均可測試。偽碼程序在AT88SC102卡完成初始化操作和在一應用區ADDR地址開始寫個字節,并讀出校對。繼續 ELSE 非法卡可以寫一些系統標識寫成功 ELSE

8、 寫失敗偽碼程序判斷AT88SC102卡是否是本系統支持的卡和對一應用區ADDR地址始的LEN個字節完成某種操作。讀出系統標識頁碼,3/36Untitled Document系統標識 THEN 繼續 ELSE 非法卡繼續 ELSE 非法卡一些其它操作繼續 ELSE 非法卡寫成功 ELSE 寫失敗AT88SC1604加密卡加密卡的訪問時間讀為2us/位,寫為5ms/位;工作電壓為5V10%;/擦除次數為10萬次;數據保持10年;工作溫度為070;通訊協議符合同步協議。又可分為等分區卡和不等分區卡兩種,它們各區和熔絲地址不一。二、三、四應用區不等分區卡沒有區密碼錯誤計數,而等分區卡有,不等區卡在性

9、能上比較明顯地偏重第一區。在選擇AT88SC1604卡時應注意它是不分區卡還是等分區卡。等分區卡的存儲結構:(二、三、四應用區沒有區密碼錯誤計數) 分區 位地址 位數 字節地址 字節數廠商代碼區 0-15 16 0-1 2發行者區 16-79 64 2-9 8主密碼區 80-95 16 10-11 2主密碼錯誤計數區 96-103 8 12 1代碼保護區 104-167 64 13-20 8一區密碼 168-183 16 21-22 2一區密碼錯誤計數 184-191 8 23 1一區擦除密碼 192-207 16 24-25 2一區擦除密碼錯誤計數 208-215 8 26 1應用區一 21

10、6-9775 9560 27-1221 1195二區密碼 9776-9791 16 1222-1223 2二區擦除密碼 9792-9807 16 1224-1225 2二區擦除密碼錯誤計數 9808-9815 8 1226 1應用區二 9816-11863 2048 1227-1482 256三區密碼 11864-11879 16 1483-1484 2三區擦除密碼 11880-11895 16 1485-1486 2三區擦除密碼錯誤計數 11896-11903 8 1487 1應用區三 11904-13951 2048 1488-1743 256四區密碼 13952-13967 16 174

11、4-1745 2四區擦除密碼 13968-13983 16 1746-1747 2四區擦除密碼錯誤計數 13984-13991 8 1748 1應用區四 13992-16039 2048 1749-2004 256測試區 16040-16055 16 2005-2006 2熔絲 16288-1630316383 2047分區卡的存儲結構:(二、三、四應用區有區密碼錯誤計數)分區 位地址 位數 字節地址 字節數廠商代碼區 0-15 16 0-1 2發行者區 16-79 64 2-9 8頁碼,4/36Untitled Document主密碼區 80-95 16 10-11 2主密碼錯誤計數區 96

12、-103 8 12 1代碼保護區 104-167 64 13-20 8一區密碼 168-183 16 21-22 2一區密碼錯誤計數 184-191 8 23 1一區擦除密碼 192-207 16 24-25 2一區擦除密碼錯誤計數 208-215 8 26 1應用區一 216-4311 4096 27-538 512二區密碼 4312-4327 16 539-540 2二區密碼錯誤計數 4328-4335 8 541 1二區擦除密碼 4336-4351 16 542-543 2二區擦除密碼錯誤計數 4352-4359 8 544 1應用區二 4360-8455 4096 545-1056 5

13、12三區密碼 8456-8471 16 1057-1058 2三區密碼錯誤計數 8472-8479 8 1059 1三區擦除密碼 8480-8495 16 1060-1061 2三區擦除密碼錯誤計數 8496-8503 8 1062 1應用區三 8504-12599 4096 1063-1574 512四區密碼 12600-12615 16 1575-1576 2四區密碼錯誤計數 12616-12623 8 1577 1四區擦除密碼 12624-12639 16 1578-1579 2四區擦除密碼錯誤計數 12640-12647 8 1580 1應用區四 12648-16303 3656 15

14、81-2037 457測試區 16304-16319 16 2038-2039 2熔絲 16352-1636716383 2047:擦、寫是兩種不同的操作,擦是位寫1操作,寫是位寫0操作。修改數據,只有先擦除才能再寫數據。熔絲熔斷(FUSE2)前與熔絲熔斷后它的保密特性是不同的。的保密特性:由ATMEL公司出廠時設置(FUSE1),只讀不可更改,不等分卡一般為,等分卡一般為7156。ATMEL公司可以為批量用戶定制此代碼,以保證卡片唯一性。:可讀。SC核對正確,IZ可以反復擦寫。:SC核對正確時,SC可讀和擦寫,SC核對不正確時,SC不能讀和擦寫。 :初始值為8,SC核對每錯1次SCAC減1,

15、SCAC等于0時,卡自毀,如果SC核正確SCAC恢復為初始值8。SCAC永遠可讀。:為用戶標注,用于對卡中信息操作過程的標注,永遠可讀,SC核對正確后,SC2,SC3,SC4,EZ1,EZ2,EZ3,EZ4:熔絲熔斷(FUSE2)前,不起什么。SC核對正確時,SCn、EZn可讀和擦寫(n代表1或2或3或4,下同), ,S2AC,S3AC,S4AC,E1AC,E2AC,E3AC,E4AC:永遠可讀,熔絲熔斷FUSE2)前,不起什么作用。SC核對正確時,SnAC、EnAC可擦寫,AZ2,AZ3,AZ4;前2位為AZn的寫讀保護位,即寫保護位(nPR),讀保護nRD)。 SC核對正確時,AZn可讀,

16、如果SC核對不正確時,nRD控制著AZn的性,即如果nRD=1時,AZn可讀;如果nRD=0時,AZn不可讀。熔絲熔斷(FUSE2)前,nPR不起作用,只要SC核對正確,AZn就可擦寫, :用于測試卡的擦寫性能。任意條件下均可測試。 熔絲熔斷后的保密特:由ATMEL公司出廠時設置(FUSE1),只讀不可更改,不等分卡一般為頁碼,5/36Untitled Document,等分卡一般為7156。ATMEL公司可以為批量用戶定制此代碼,以保證卡片唯一性。:永遠可讀。但熔絲熔斷(FUSE2)后IZ內容被固化,IZ將永遠不能再改。 :不可讀,SC核對正確時,SC可擦寫,SC核對不正確時,SC不能擦寫。

17、 :初始值為8,SC核對每錯1次SCAC減1,SCAC等于0時,卡自毀,如果SC核正確SCAC恢復為初始值8。SCAC永遠可讀。:為用戶標注,用于對卡中信息操作過程的標注,永遠可讀,SC核對正確后,SC2,SC3,SC4:不可讀,SC核對正確時,SCn可校對,SC核對不正確時,不能校對。SCn核對正確時,SCn可擦寫。,S2AC,S3AC,S4AC:初始值為8,SCn核對每錯1次SnAC減1,SnAC等于0,n區自毀,如果SCn核對正確SnAC恢復為初始值8。SnAC永遠可讀。,EZ2,EZ3,EZ4:不可讀,SCn核對正確時,EZn可校對,SCn核對不正確,EZn不能校對。EZn核對正確時,

18、EZn可擦寫。,E2AC,E3AC,E4AC:初始值為8,EZn核對每錯1次EnAC減1,EnAC等于0,n區自毀,如果EZn核對正確EnAC恢復為初始值8。EnAC永遠可讀。,AZ2,AZ3,AZ4;前2位為AZn的寫讀保護位,即寫保護位(nPR),讀保護nRD)。 SCn核對正確時,AZn可讀,如果SCn核對不正確時,nRD控制著AZn可讀性,即如果nRD=1時,AZn可讀;如果nRD=0時,AZn不可讀。核對正確時,AZn可擦, EZn核對不正確時,Azn不可擦。熔絲熔斷(FUSE2)后,即使SCn核對正確,也要看nPR是否為1,如果是0,AZ寫保護永遠不能寫。同時不可能再對EZ1進行讀

19、和擦寫操作。:用于測試卡的擦寫性能。任意條件下均可測試。偽碼程序在AT88SC1604卡完成初始化操作和在一應用區ADDR地址開始寫個字節,并讀出校對。繼續 ELSE 非法卡可以寫一些系統標識寫成功 ELSE 寫失敗偽碼程序判斷AT88SC1604卡是否是本系統支持的卡和對一應用區ADDR地開始的LEN個字節完成某種操作。讀出系統標識系統標識 THEN 繼續 ELSE 非法卡繼續 ELSE 非法卡一些其它操作繼續 ELSE 非法卡繼續 ELSE 非法卡 頁碼,6/36Untitled Document寫成功 ELSE 寫失敗AT88SC1608加密卡果說AT88SC1064是在AT88SC10

20、2、AT24C16的基礎上作了一些改進的話,那么則是接觸式IC卡的一次成熟穩定的飛躍,在一卡多用上更能體現它長處,它的保密性能強,讀寫速度快,無需先擦除就可以進行寫操作。加密卡時鐘頻率為1MHz,支持頁寫方式(16字節/頁),如果以頁寫方訪問的話,訪問時間為10ms(最大)/頁;工作電壓為2.7V5.5V;寫/擦除次10萬次;數據保持100年;工作溫度為070;通訊協議符合ISO/IEC 同步協議。其是AT88SC1608加密卡的高保密性能十分突出,除了帶加密邏輯,還具有高認證及反截取跟蹤技術,64位相互認證及認證錯誤計數器,錯誤計數8次。 具有1個128字節設置區和8個256字節應用分區,8

21、個區可以自由合,分別受讀密碼、寫密碼(16套密碼、各3個字節)控制,錯誤計數8次。 共有17408位(2176字節)存儲空間,其中前16K位(2K字節)為應區,后1K位(128字節)為設置區。(字節地址以16進制表示)分區 $0 $1 $2 $3 $4 $5 $6 $7 地址分區0(User0) 256字節 $000分區1(User1) 256字節 $100分區2(User2) 256字節 $200分區3(User3) 256字節 $300分區4(User4) 256字節 $400分區5(User5) 256字節 $500分區6(User6) 256字節 $600分區7(User7) 256字

22、節 $700128字節 $800設置區存儲結構:(字節地址以16進制表示)地址復位應答(ATR) 歷史代碼(HC) $00(FZ) 保留 卡商代碼(CMC) $08權限 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 $10留 $18證區 AAC 識別碼(Nc) $20(Ci) $28鑰 密鑰(Gc) $30區 測試區(MTZ) $38碼區 PAC 寫密碼0(WP0) PAC 讀密碼0(RP0) $40寫密碼1(WP1) PAC 讀密碼1(RP1) $48寫密碼2(WP2) PAC 讀密碼2(RP2) $50寫密碼3(WP3) PAC 讀密碼3(RP3) $58寫密碼4(WP4

23、) PAC 讀密碼4(RP4) $60寫密碼5(WP5) PAC 讀密碼5(RP5) $68寫密碼6(WP6) PAC 讀密碼6(RP6) $70寫密碼7(WP7/SC) PAC 讀密碼7(RP7) $78:哪個區用哪套密碼或是否要認證要由訪問權限AR0-AR7 來決定。 頁碼,7/36Untitled Document:復位應答,由ATMEL定義,不可改。:歷史代碼,由ATMEL定義,不可改。:廠商代碼,由ATMEL定義,不可改。:卡商代碼,由卡廠定義,不可改。:訪問權限。個人化前定義。(詳細用法參見訪問權限):識別碼,通常用作卡的唯一標識-卡號。個人化前定義。:密文,個人化前可寫一隨機數,

24、認證卡時使用,每次認證會被自動改寫。 :密鑰,64位的保密種子,由Nc通過F1公式推算出來,在個人化前,寫入卡。個人化后不可訪問,認證時作為該卡的F2公式的參數。(詳細用法參見認協議):為認證錯誤計數器。初始值為8。:用于測試卡的讀寫性能。任意條件下均可測試。:8套讀寫密碼集, 每個分區可以分別指向唯一的密碼集,也以指向同一套密碼集,這樣就可以只核對一套密碼而進入多個分區,使多個區合成為一個大的分區。默認WP7、RP7為讀寫密碼。寫密碼7(WP7)還作為傳密碼(SC)。另外,如果需要修改讀寫密碼時,也必須核對同一套密碼集的寫碼。:傳輸密碼。初始值由ATMEL定認,發到每個卡廠都不同。可以修改,

25、在個人前一直使用SC,個人化后其它密碼才會被用到。:為分區密碼錯誤計數器。初始值為8。志(FUSE)志位于設置區的$80地址,存儲結構:(地址以16進制表示)7 位6 位5 位4 位3 位2 位1 位0 地址:FAB、CMA、FAB為AT88SC1608的EEPROM的三級熔絲保護標志,“0”表示已。在熔絲標志全為“1”時,所有的存儲空間都可讀。每一步熔斷操作都不返回。為ATMEL的芯片出廠時的熔斷標志。為卡廠的卡片出廠時的熔斷標志。為應用系統啟動前個人化時的熔斷標志。把 AT88SC1608卡交付使用之前,卡內信息應已作完以下的操作: 寫完廠商信息(除卡商代碼)、傳輸密碼(SC),把其余的存

26、儲空間都寫成1”,做FAB熔斷操作,使FAB=0。廠寫入自已的卡商代碼后,做CMA熔斷操作,使CMA=0。商對卡做初始化,或卡在發行之前由系統做初始化,然后做PER熔斷操作,CMA=0。權限后的訪問權限表:訪問 FAB=0 CMA=0 Per=0(除卡商代碼) 讀 可以 可以 可以禁止 禁止 禁止商代碼 讀 可以 可以 可以傳輸密碼(SC) 禁止 禁止權限 讀 可以 可以 可以傳輸密碼(SC) 傳輸密碼(SC) 禁止證區 讀 可以 可以 可以傳輸密碼(SC) 傳輸密碼(SC) 禁止鑰 讀 傳輸密碼(SC) 傳輸密碼(SC) 禁止頁碼,8/36Untitled Document傳輸密碼(SC)

27、傳輸密碼(SC) 禁止區 讀 可以 可以 可以可以 可以 可以碼 讀 傳輸密碼(SC) 傳輸密碼(SC) 寫密碼(WP)傳輸密碼(SC) 傳輸密碼(SC) 寫密碼(WP)計數器) 讀 可以 可以 可以傳輸密碼(SC) 傳輸密碼(SC) 寫密碼(WP)區 讀 訪問權限(AR) 訪問權限(AR) 訪問權限(AR)訪問權限(AR) 訪問權限(AR) 訪問權限(AR)權限AR0-AR7的存儲結構:(使能為“0”,默認為“1”)7 位6 位5 位4 位3 位2 位1 位0:為寫密碼使能標志。值為0時,對應用分區進行寫操作時,必須通過寫密。在個人化后,核對寫密碼,也決定著是否能改變讀密碼和寫密碼。 :為讀

28、密碼使能標志。值為0時,通過讀密碼或寫密碼,才能讀某應用分。如果密碼核對錯誤將返回熔絲狀態位。:認證使能標志。為0時,認證必須通過才能操作當前應用分區。,PW1,PW0:這3位指定當前應用分區使用哪一套密碼集。每個分區可以分向唯一的密碼集,也可以指向同一套密碼集,這樣就可以只核對一套密碼進入多個分區,使多個分區合成為一個大的分區。:為禁止修改操作標志。值為0時,當前應用分區被寫保護,被寫保護區的容必須在個人化之前寫入。:只寫標志。如果為0,當前應用分區的每一位只能從“1”寫成“0”,而能從“0”改回為“1”。證協議出隨機數Nc(往往當作卡號)和Ci,計算出Gc=F1(Ks,Nc),把Nc、Ci

29、、Gc寫入Nc Gc Ci 認證協議 讀寫器 Ks Q0(隨機數)別碼: Nc Ci Ci+1=F2(Gc,Ci,Q0); if(Ci+1=Q1) Ci+2=F2(Gc,C1+1);修改Ci 認證正確; else Ci=Ci; 認證錯誤; Ci (使用讀命令) 初始化認證命令) (校驗認證命令) (讀命令) Gc=F1(Ks,Nc); Q0 Q1=F2認證正確; else 認證錯誤; 算法:64BIT 用戶自定義算法。算法:卡內64BIT 算法(Des 算法的變種,提供C語言和51匯編語言程序) 包括卡和讀寫器CPU的互相認證(ELVA專利),而且認證數據加密傳送,以防止通訊數據被竊取。偽碼程

30、序在AT88SC1608卡完成初始化操作和在一應用區ADDR地址開始寫個字節,并讀出校對。繼續 ELSE 非法卡寫成功 ELSE 寫失敗頁碼,9/36Untitled Document頁碼,10/36偽碼程序判斷AT88SC1608卡是否是本系統支持的卡和對一應用區ADDR地開始的LEN個字節完成某種操作。繼續 ELSE 非法卡一些其它操作繼續 ELSE 非法卡寫成功 ELSE 寫失敗AT88SC153加密卡是ATMEL繼AT88SC1068之后新推出的一種卡型,它繼承了AT88SC1608全部優點,只是存儲容量及分區數有所改變,基本上可以理解為小容量的。加密卡時鐘頻率為1MHz,支持頁寫方式

31、(8字節/頁),如果以頁寫方式的話,訪問時間為10ms(最大)/頁;工作電壓為2.7V5.5V;寫/擦除次數10萬次;數據保持100年;工作溫度為070;通訊協議符合ISO/IEC 7816-同步協議。AT88SC1608一樣,AT88SC153加密卡的高保密性能十分突出,除了帶加密邏,還具有高保密認證及反截取跟蹤技術,64位相互認證及認證錯誤計數器,錯數8次。具有1個64字節設置區和3個64字節應用分區,3個區可以自由合并,受讀密碼、寫密碼(4套密碼、各3個字節)控制,錯誤計數4/8次。共有2048位(256字節)存儲空間,其中前1536位(192字節)為應用,后512位(64字節)為設置區

32、。(字節地址以16進制表示)分區 $0 $1 $2 $3 $4 $5 $6 $7 地址分區0(User0) 64字節 $00分區1(User1) 64字節 $40分區2(User2) 64字節 $8064字節 $C0設置區存儲結構:(字節地址以16進制表示)地址復位應答(ATR) 歷史代碼(HC) $00(FZ) 卡商碼(CMC) AR0 AR1 AR2 MTZ $08別區 發布號(IC) $10識別碼(Nc) $18密文(Ci) $20鑰 密鑰(Gc) $28碼區 PAC 寫密碼0(WP0) PAC 讀密碼0(RP0) $30寫密碼1(WP1/SC) PAC 讀密碼1(RP1) $38:哪個

33、區用哪套密碼或是否要認證要由訪問權限AR0-AR2 來決定。采用校驗和認證方式時,地址$20也可以用作校驗和認證寄存器(CAR)。Untitled Document頁碼,11/36:復位應答,由ATMEL定義,不可改。:歷史代碼,由ATMEL定義,不可改。:廠商代碼,由ATMEL定義,不可改。:卡商代碼,由卡廠定義,不可改。:訪問權限。個人化前定義。(詳細用法參見訪問權限):用于測試卡的讀寫性能。任意條件下均可測試。:發布號。個人化前定義。:設備設置寄存器。:識別碼,通常用作卡的唯一標識-卡號。個人化前定義。:密文,個人化前可寫一隨機數,認證卡時使用,每次認證會被自動改寫。:密鑰,64位的保密

34、種子,由Nc通過F1公式推算出來,在個人化前,寫入卡。個人化后不可訪問,認證時作為該卡的F2公式的參數。(詳細用法參見認協議):為認證錯誤計數器。初始值為8,但每次校驗出錯減2,所以共有4次連續驗出錯的機會,可擴展為8次(見DCR的設置方法)。也用作Ci的一部分,注如果修改了AAC,會影響下一次認證的Ci值。:校驗和認證寄存器。只有認證完成時才有用,每次寫操作都會激活校驗和式,并把寫或連續寫的校驗和自動寫入CAR,此時可以讀出校驗和,以確定寫是否完成。任何讀操作都會結束校驗和方式。:2套讀寫密碼集, 每個分區可以分別指向唯一的密碼集,也以指向同一套密碼集,這樣就可以只核對一套密碼而進入多個分區

35、,使多個區合成為一個大的分區。默認WP1、RP1為讀寫密碼。寫密碼1(WP1)還作為傳密碼(SC)。另外,如果需要修改讀寫密碼時,也必須核對同一套密碼集的寫碼。:傳輸密碼。初始值由ATMEL定認,發到每個卡廠都不同。可以修改,在個人前一直使用SC,個人化后其它密碼才會被用到。:為分區密碼錯誤計數器。初始值為8,但每次校驗出錯減2,所以共有4次續校驗出錯的機會。可擴展為8次。(見DCR的設置方法)志(FUSE)志位于設置區的$40地址,存儲結構:(地址以16進制表示)7 位6 位5 位4 位3 位2 位1 位0 地址:FAB、CMA、FAB為AT88SC153的EEPROM的三級熔絲保護標志,“

36、0”表示已熔。在熔絲標志全為“1”時,所有的存儲空間都可讀。每一步熔斷操作都不能。為ATMEL的芯片出廠時的熔斷標志。為卡廠的卡片出廠時的熔斷標志。為應用系統啟動前個人化時的熔斷標志。把 AT88SC153卡交付使用之前,卡內信息應已作完以下的操作:寫完廠商信息(除卡商代碼、訪問權限和測試區)、傳輸密碼(SC),把其余空間都寫成“1”,做FAB熔斷操作,使FAB=0。廠寫入自已的卡商代碼后,做CMA熔斷操作,使CMA=0。商對卡做初始化,或卡在發行之前由系統做初始化,然后做PER熔斷操作,CMA=0。權限后的訪問權限表:訪問 FAB=0 CMA=0 Per=0(除CMC,AR,MTZ) 讀 可

37、以 可以 可以Untitled Document禁止 禁止 禁止商代碼 讀 可以 可以 可以傳輸密碼(SC) 禁止 禁止權限 讀 可以 可以 可以傳輸密碼(SC) 傳輸密碼(SC) 禁止區 讀 可以 可以 可以可以 可以 可以別區 讀 可以 可以 可以傳輸密碼(SC) 傳輸密碼(SC) 禁止鑰 讀 傳輸密碼(SC) 傳輸密碼(SC) 禁止傳輸密碼(SC) 傳輸密碼(SC) 禁止碼 讀 傳輸密碼(SC) 傳輸密碼(SC) 寫密碼(WP)傳輸密碼(SC) 傳輸密碼(SC) 寫密碼(WP)計數器) 讀 可以 可以 可以傳輸密碼(SC) 傳輸密碼(SC) 寫密碼(WP)區 讀 訪問權限(AR) 訪問權

38、限(AR) 訪問權限(AR)訪問權限(AR) 訪問權限(AR) 訪問權限(AR) 頁碼,12/36權限AR0-AR2的存儲結構:(使能為“0” ,默認為“1”)7 位6 位5 位4 位3 位2 位1 位0:為寫密碼使能標志。值為0時,對應用分區進行寫操作時,必須通過寫密。在個人化后,核對寫密碼,也決定著是否能改變讀密碼和寫密碼。 :為讀密碼使能標志。值為0時,通過讀密碼或寫密碼,才能讀某應用分。如果密碼核對錯誤將返回熔絲狀態位。:認證使能標志。為0時,認證必須通過才能操作當前應用分區。:只有寫時才需要認證標志。只有寫操作時才需要進行認證,讀不需要進行證操作,如果ATE=0,則AOW被忽略。:指

39、定當前應用分區使用哪一套密碼集。每個分區可以分別指向唯一的密碼,也可以指向同一套密碼集,這樣就可以只核對一套密碼而進入多個分區,多個分區合成為一個大的分區。:寫鎖模式使能。每個區的8個字節為一頁。如果WLM=0,使每頁的第一個字byte0)的每一位分別為該頁8個字節的寫鎖標志,0為寫鎖(即只能從1”寫成“0”,而不能從“0”改回為“1”),1為解鎖。:為禁止修改操作標志。值為0時,當前應用分區被寫保護,被寫保護區的容必須在個人化之前寫入。:只寫標志。如果為0,當前應用分區的每一位只能從“1”寫成“0”,而能從“0”改回為“1”。備設置寄存器(DCR)備設置寄存器位于設置區的$18地址,存儲結構

40、:(使能為“0”,默認為1”)7 位6 位5 位4 位3 位2 位1 位0:可編程片選。ATMEL出廠時寫為$B(即1011)。它為訪問卡的所有命字的高4位。:8次計數使能。ETA=0,可以使AAC和PAC的計數次數為8,否則為4。 :使認證錯誤計數無校標志。UAT=0,AAC無校,否則AAC有校。:不限制讀校驗和次數標志。UCR=1時,每次認證只能讀校驗和方式一次默認),UCR=0時,沒有次數限制。Untitled Document頁碼,13/36:超級管理方式。SME=0時,通過1WP校驗,就可以讀寫全部的讀寫密碼及密數器。證協議出隨機數Nc(往往當作卡號)和Ci,計算出Gc=F1(Ks,

41、Nc),把Nc、Ci、Gc寫入Nc Gc Ci 認證協議 讀寫器 Ks Q0(隨機數)別碼: Nc Ci Ci+1=F2(Gc,Ci,Q0); if(Ci+1=Q1) Ci+2=F2(Gc,C1+1);修改Ci 認證正確; else Ci=Ci; 認證錯誤; Ci (使用讀命令)初始化認證命令) (校驗認證命令) (讀命令) Gc=F1(Ks,Nc); Q0 Q1=F2認證正確; else 認證錯誤;算法:64BIT 用戶自定義算法。算法:卡內64BIT 算法(Des 算法的變種,提供C語言和51匯編語言程序)包括卡和讀寫器CPU的互相認證(ELVA專利),而且認證數據加密傳送,以防止通訊數據

42、被竊取。偽碼程序在AT88SC153卡完成初始化操作和在一應用區ADDR地址開始寫個字節,并讀出校對。繼續 ELSE 非法卡寫發布號寫成功 ELSE 寫失敗偽碼程序判斷AT88SC153卡是否是本系統支持的卡和對一應用區ADDR地址始的LEN個字節完成某種操作。讀出發布號發布號 THEN 繼續 ELSE 非法卡繼續 ELSE 非法卡一些其它操作繼續 ELSE 非法卡寫成功 ELSE 寫失敗AT45D041種型號的IC卡為ATMEL存儲卡,是一種不具備加密功能大容量的FLASH 存儲容量為4M位,主存儲區有2048頁(每頁容量為264字節),同時還提供Untitled Document獨立雙向的

43、數據緩存區(每個數據緩存區容量為264字節),頁寫方式為字節,頁寫入時間為7ms。存儲結構簡單,主要用于存放一些保密性要求不、數據量極大的數據,如聲音、圖像或數據。的工作頻率為10MHz(最大);工作電壓為5V10%;工作電流讀為,寫為50mA;數據保持100年;工作溫度為070,根據要求可超過指定頁碼,14/36溫度;通訊協議為SPI串行接口方式0和方式3。存區1、緩存區2和主存儲區的讀寫方式如上圖所示,分別為:直接從主存儲區的某頁讀數據;把主存儲區的某頁數據寫入緩存區1或緩存區2;把主存儲區的某頁數據和緩存區1或緩存區2的數據進行比較;把緩存區1或緩存區2的數據寫入主存儲區的某頁(帶內建式

44、擦除);把緩存區1或緩存區2的數據寫入主存儲區的某頁(不6. 帶內建式擦除);把數據寫入主存儲區的某頁;自動頁回寫;讀緩存區1、緩存區2;寫緩存區1、緩存區2;讀狀態位。位結構:7 位6 位5 位4 位3 位2 位1 位0比較 0 1 1 x x x:位7為0表示忙;為1表示閑,可以接收下一條指令。6為0表示主存儲區數據與緩存區比較匹配,否則為不匹配。5、位4、位3對于AT45D041為“011”(二進制)。偽碼程序通過AT45D041卡的緩存1更新主存儲區的頁1的某些數據:偽碼程序通過AT45D041卡的緩存1頁寫主存儲區的頁1:Untitled Document:本章內容可為用戶在接觸式I

45、C卡選型時參考。 頁碼,15/36接觸式IC卡的接口函數卡軟件應用系統的開發是在讀寫器提供的接口函數基礎上進行軟件開發的。個系統公司的接口函數雖有不同,但大同小異。下面以德誠系統有限公司的接觸式IC卡通用讀寫器提供的FoxPro for DOS的PLB接口函數為例,用戶可基本上對接觸式IC卡接口函數有所了解。FoxPro程序執行開始前,先執行語句SET LIBRARY TO ICFOX.PBL。FoxPro將自動登錄庫ICFOX.PLB中的IC卡函數,您可以象使用FoxPro的內部函數一樣的。編譯成EXE文件時,將ICFOX.PLB鏈入。、 函數列表(函數名2? , 簡單說明) 通用函數初始化

46、指定的串口并連接讀寫設備退出串口連接返回錯誤信息獲取設備的版本號測試讀寫器內是否插卡打開對某種型號卡的操作從卡上指定地址讀取指定長度的字符串向卡內指定地址寫入指定長度的字符串從卡上指定地址讀取一個雙精度數向卡內指定地址寫入一個雙精度數關閉卡操作加密卡專用函數讀廠商代碼讀卡商代碼讀代碼保護區寫代碼保護區讀測試區寫測試區選擇應用區比較密碼(或區密碼)更新密碼(或區密碼)讀密碼(或區密碼)校驗錯誤計數比較區擦除密碼Untitled Document頁碼,16/36更新區擦除密碼讀區擦除密碼校驗錯誤計數從卡內指定位置起擦除指定長度字節燒斷卡上熔絲及AT88SC153加密卡專用函數讀廠商代碼讀卡商代碼讀

47、發布號(AT88SC153專用)寫發布號(AT88SC153專用)讀設備設置寄存器(AT88SC153專用)寫設備設置寄存器(AT88SC153專用)讀測試區寫測試區初始化認證狀態認證校驗讀認證錯誤計數比較傳輸密碼更新傳輸密碼讀傳輸密碼校驗錯誤計數選擇應用區讀應用區的訪問權限設置應用區的訪問權限比較寫密碼更新寫密碼讀寫密碼校驗錯誤計數比較讀密碼更新寫密碼讀讀密碼校驗錯誤計數讀取卡內熔絲狀態燒斷卡上熔絲存儲卡專用函數選擇主存儲區的當前頁選擇緩沖區讀取主存儲區頁內的字符讀取緩沖區1/緩沖區2內的字符寫字符到主存儲區頁寫字符到緩沖區1/緩沖區2比較主存儲區頁與緩沖區1/緩沖區2的內容從主存儲區頁提取

48、數據到緩沖區1/緩沖區2從緩沖區1/緩沖區2寫數據到主存儲區頁讀狀態字(忙閑)自動回寫、 函數說明初始化指定的串口并連接讀寫設備。Untitled Document頁碼,17/36數:Port-串口標號,整數0,1分別代表串口1,串口2。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = InitComm(0) 初始化串口1。退出串口連接。數:無。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = ExitComm() 退出串口。返回錯誤信息。數:錯誤號。值: 錯誤信息。例:Msg = ErrorMsg(0) 返回“成功”。獲取設備的版本號。數:無。值: 設備的版本號。例:Vn

49、o = GetInfo()。讀寫器內是否插卡。數:無。值: =0,正確。,讀寫器內沒有插卡。返回值代表錯誤號。例:Ret = TestCard()打開對某種型號卡的操作數:CardType-IC卡類型。具體值參見附錄一。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = OpenCard(AT24C01A) 選擇卡型為AT24C01A。從卡上指定地址讀取指定長度的字符串。數:Addr-讀操作的卡內起始地址。字符串長度。值:從卡上讀取的字符串。操作出錯。返回。例:cData = ReadChr(0, 10) 從卡上應用區地址0讀取10個字符。將指定長度的字符串寫入到卡片的指定起始地址上。

50、數:Addr-寫操作的卡內起始地址。字符串長度。要向卡片寫入的字符串。Untitled Document頁碼,18/36值: =0,正確。,寫操作出錯。返回值代表錯誤號。例:Ret = WriteChr(0, 14, Testing MCS-C!) 將字符串寫入卡地址0處。從卡上指定的起始地址讀取一個雙精度數。數:Addr-讀操作的卡內起始地址。值:從卡上讀取的雙精度數。例:iData = ReadInt(0) 從卡上應用區地址0讀取雙精度數。將一個雙精度數寫入到卡內指定起始地址處。數:Addr-寫操作的卡內起始地址。要向卡內寫入的雙精度數。值: =0,正確。,寫操作出錯。返回值代表錯誤號。例

51、:Ret = WriteInt(0, 12345.6789) 將12345.6789寫入到卡內地址0處。關閉卡操作數:無。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = CloseCard()讀廠商代碼。數:無。值:從卡上讀取廠商代碼(16進制字符串)。操作出錯。返回。例:FZ = ReadFZ()讀卡商代碼。數:無。值:從卡上讀取卡商代碼(16進制字符串)。操作出錯。返回。例:IZ = ReadIZ()讀代碼保護區。數:無。值:從卡上讀取代碼保護區(16進制字符串)。操作出錯。返回。例:CPZ = ReadCPZ()寫代碼保護區。數:長度為為16個字節的字符串(16進制字符串)。

52、值: =0,正確。,出錯。返回值代表錯誤號。Untitled Document頁碼,19/36例:Ret = WriteCPZ(0123456789ABCDEF)讀測試區。數:無。值:從卡上讀取代碼保護區(16進制字符串)。操作出錯。返回。例:MTZ = ReadMTZ()寫測試區。數:字符串(16進制字符串)。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = WriteMTZ(ABCDEF)選擇應用區。數:Zone-要選擇的應用區號。0-n代表應用區0至應用區n。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = SetZone(1)比較密碼(或區密碼)。數:字符串(16進

53、制字符串)。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = CheckSC(FFFF)更新密碼(或區密碼)。數:字符串(16進制字符串)。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = UpdateSC(9999)讀密碼(或區密碼)校驗錯誤計數。數:無。值:密碼校驗錯誤計數值。例:SCAC = ReadSCAC()比較擦除密碼(或區擦除密碼)。數:字符串(16進制字符串)。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = CheckEZ(FFFF)Untitled Document頁碼,20/36更新擦除密碼(或區擦除密碼)。數:字符串(16進制字符串)。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = UpdateEZ(9999)讀擦除密碼(或區擦除密碼)校驗錯誤計數。數:無。值:密碼校驗錯誤計數值。例:EZAC = ReadEZAC()從指定位置起擦除指定長度的字節。數:Addr-要擦除的起始地址。要擦除的長度。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = Erase(0, 10)燒斷卡上熔絲。數:無。值: =0,正確。,出錯。返回值代表錯誤號。例:Ret = Fuse()讀發布號(AT88SC153專用)。數:無

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論