專利名稱:一種存儲(chǔ)卡和讀卡器相互認(rèn)證的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)卡和讀卡器設(shè)計(jì)技術(shù),特別涉及一種存儲(chǔ)卡和讀卡器之間實(shí)現(xiàn)相互認(rèn)^正的方法。
背景技術(shù):
目前的存儲(chǔ)卡,例如SD (Secure Digital安全數(shù)字)卡、匿(MultiMediCard多媒體卡)只具備存儲(chǔ)功能,存儲(chǔ)卡的一切行為都是由主機(jī)(HOST)來(lái)控制,存儲(chǔ)卡不能區(qū)分讀卡器的不同,更不能拒絕HOST下發(fā)的控制指令,在一些需要存儲(chǔ)卡區(qū)別什么任務(wù)可以完成,什么任務(wù)拒絕完成的情況下,這種普通的存儲(chǔ)卡就不能勝任了 。傳統(tǒng)的存儲(chǔ)卡及讀卡器存在以下缺點(diǎn)
1. 存儲(chǔ)卡被動(dòng)地接受命令,被動(dòng)地執(zhí)行任何符合相應(yīng)存儲(chǔ)卡協(xié)議的命令,對(duì)主機(jī)發(fā)出的命令只執(zhí)行不進(jìn)行任何判斷;
2. 讀卡器只需要符合相應(yīng)存儲(chǔ)卡通信協(xié)議,例如SD/固C通信協(xié)議,只傳輸數(shù)據(jù)不進(jìn)行任何判斷;
3. 存儲(chǔ)卡可以在任意一款讀卡器上使用,無(wú)法保證需要執(zhí)行的特殊功能的真實(shí)性、可靠性、安全性和唯一性;
4. 讀卡器雖然具有兼容性這一優(yōu)點(diǎn),但無(wú)法控制存儲(chǔ)卡實(shí)現(xiàn)某些特殊功能,例如讀卡器識(shí)別固定ID的存儲(chǔ)卡,在識(shí)別通過(guò)的存儲(chǔ)卡上進(jìn)行文件加密操作,而其他沒(méi)有通過(guò)識(shí)別的存儲(chǔ)卡則不能進(jìn)行文件加密操作;
5. 存儲(chǔ)卡遵循相應(yīng)的協(xié)議,不能兼容其它協(xié)議從而限制了功能的擴(kuò)展??梢?jiàn),存儲(chǔ)卡和相應(yīng)讀卡器的上述缺點(diǎn)無(wú)法完成那些對(duì)安全性需求較高的
功能,本發(fā)明正是為了解決這一問(wèn)題而提出的。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于針對(duì)目前存儲(chǔ)卡只遵循一種標(biāo)準(zhǔn)協(xié)議,不能隨意擴(kuò)展標(biāo)準(zhǔn)協(xié)議來(lái)實(shí)現(xiàn)特殊功能的缺點(diǎn),提供一種存儲(chǔ)卡和讀卡器相互認(rèn)證的
4方法,從而保證一些基于存儲(chǔ)卡實(shí)現(xiàn)特殊功能的可靠性、真實(shí)性、安全性和唯一性。
本發(fā)明的技術(shù)方案如下 一種存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,包括如下步驟
(1) 上電初始,存儲(chǔ)卡進(jìn)行第一處理,并把第一處理后的信息傳送給讀卡器;
(2) 讀卡器對(duì)第一處理后的信息數(shù)據(jù)進(jìn)行第二處理,產(chǎn)生第二處理的
結(jié)果;
(3) 讀卡器根據(jù)第二處理的結(jié)果選擇進(jìn)行第三處理或產(chǎn)生認(rèn)證失敗信息,并把第三處理后的信息或認(rèn)證失敗信息傳送給存儲(chǔ)卡;
(4) 若存儲(chǔ)卡接收到認(rèn)證失敗信息,則轉(zhuǎn)到步驟(5);否則,存儲(chǔ)卡對(duì)第三處理后的信息進(jìn)行第四處理,產(chǎn)生第四處理的結(jié)果,并根據(jù)第四處理的結(jié)果產(chǎn)生認(rèn)證成功或認(rèn)證失敗的信息;
(5) 存儲(chǔ)卡保存認(rèn)證成功或認(rèn)證失敗的信息。
如上所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其中,步驟(l)中所進(jìn)行的第一處理是指存儲(chǔ)卡把其自身具有的ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第一組校驗(yàn)碼,存儲(chǔ)卡ID和第一組校驗(yàn)碼即為第一處理后的信息。
如上所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其中,步驟(2)中所進(jìn)行的第二處理是指讀卡器把接收到的第一處理后的信息中的存儲(chǔ)卡ID通過(guò)校
驗(yàn)算法進(jìn)行計(jì)算,得到第二組校驗(yàn)碼,并將第二組校驗(yàn)碼與第一組校驗(yàn)碼進(jìn)行比較;且第二處理與第一處理所使用的校驗(yàn)算法相同。
進(jìn)一步,在上述存儲(chǔ)卡和讀卡器相互認(rèn)證的方法中,步驟(2)中讀卡器所進(jìn)行的第二處理產(chǎn)生兩種結(jié)果1.第一組和第二組校驗(yàn)碼一致,2.第一組和第二組校驗(yàn)碼不一致;步驟(3)中讀卡器根據(jù)所述結(jié)果1,選擇進(jìn)行第三處理,讀卡器根據(jù)所述結(jié)果2,產(chǎn)生認(rèn)證失敗信息表示讀卡器對(duì)存儲(chǔ)卡認(rèn)證失敗。
如上所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其中,步驟(3)中所進(jìn)行的第三處理是指讀卡器把讀卡器ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第三組校驗(yàn)碼,讀卡器ID和第三組校驗(yàn)碼即為第三處理后的信息。
如上所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其中,步驟(4)中所進(jìn)行的第四處理是指存儲(chǔ)卡把接收到的第三處理后的信息中的讀卡器ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第四組校驗(yàn)碼,并將第四組校驗(yàn)碼與第三組校驗(yàn)碼進(jìn)
行比較;且第四處理與第三處理中的校驗(yàn)算法相同。
進(jìn)一步,在上述存儲(chǔ)卡和讀卡器相互認(rèn)證的方法中,步驟(4)中存儲(chǔ)卡所進(jìn)行的第四處理產(chǎn)生兩種結(jié)果1.第三組和第四組校驗(yàn)碼一致,2.第三組和第四組校驗(yàn)碼不一致;存儲(chǔ)卡根據(jù)所述結(jié)果1,產(chǎn)生認(rèn)證成功信息表示存儲(chǔ)卡和讀卡器的相互認(rèn)證成功,存儲(chǔ)卡根據(jù)所述結(jié)果2,產(chǎn)生認(rèn)證失敗信息表示存儲(chǔ)卡和讀卡器的相互認(rèn)證失敗。
如上所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其中,根據(jù)所述認(rèn)證失敗的信息,基于認(rèn)證成功才能進(jìn)行的所有功能不能執(zhí)行。
采用本發(fā)明提供的存儲(chǔ)卡和讀卡器之間相互認(rèn)證的方法,實(shí)現(xiàn)了以下效果
1. 存儲(chǔ)卡不僅符合相應(yīng)存儲(chǔ)卡協(xié)議規(guī)范,還能夠符合ISO/IEC7816協(xié)議規(guī)范;通過(guò)ISO/IEC 7816協(xié)議,打開(kāi)了存儲(chǔ)卡與讀卡器間進(jìn)行相互認(rèn)證的通道。
2. 存儲(chǔ)卡與讀卡器通過(guò)ISO/IEC7816協(xié)議接口進(jìn)行數(shù)據(jù)交互,可以實(shí)現(xiàn)認(rèn)證數(shù)據(jù)的傳送和判斷。
圖1為APDU指令結(jié)構(gòu)示意圖。
圖2為應(yīng)答APDU命令結(jié)構(gòu)示意圖。
圖3為SD/匿C卡與讀卡器相互認(rèn)證過(guò)程的流程圖。
圖4為讀卡器發(fā)送的status命令示意圖。
圖5為讀卡器發(fā)送的Fetch命令示意圖。
圖6為讀卡器向SD/固C卡發(fā)送的Terminal Response命令示意圖。
具體實(shí)施例方式
存儲(chǔ)卡和讀卡器分別具有唯一的一個(gè)ID ( Identification,標(biāo)識(shí)符),存儲(chǔ)卡同讀卡器通過(guò)IS0/IEC7816協(xié)議實(shí)現(xiàn)認(rèn)證數(shù)據(jù)的交互。當(dāng)然,為了使遵循相應(yīng)存儲(chǔ)卡協(xié)議的存儲(chǔ)卡和讀卡器可以通過(guò)ISO/IEC7816協(xié)議實(shí)現(xiàn)認(rèn)證數(shù)據(jù)的交互,存儲(chǔ)卡需要具有單獨(dú)或者復(fù)用的ISO/IEC7816接口,并具有相應(yīng)的功能。下面結(jié)合附圖,以SD或MMC為例對(duì)本發(fā)明進(jìn)行詳細(xì)的描述。
SD/畫(huà)C卡與讀卡器進(jìn)行相互認(rèn)證數(shù)據(jù)的傳輸過(guò)程符合IS0/IEC 7816標(biāo)準(zhǔn),存儲(chǔ)卡與讀卡器之間的數(shù)據(jù)傳送使用應(yīng)用協(xié)議數(shù)據(jù)單元(APDU )命令結(jié)構(gòu),APDU的命令結(jié)構(gòu)如圖1所示,
CLA:命令類別,取值為"AO"
INS:指令代碼;
Pl, P2:指令附加參數(shù);
P3:由INS的編碼而定,或是表示命令中送給卡的數(shù)據(jù)長(zhǎng)度,或是表示等待從卡響應(yīng)的數(shù)據(jù)最大長(zhǎng)度。.
存儲(chǔ)卡回應(yīng)讀卡器的命令為應(yīng)答APDU命令,命令結(jié)構(gòu)如圖2所示,SW1和SW2指示命令執(zhí)行的結(jié)果正確與否。
在本實(shí)施例中使用主動(dòng)交互式命令。
SD/MMC卡與讀卡器相互iU正過(guò)程如圖3所示,步驟如下
1、 在SD/畫(huà)C卡上電后,首先發(fā)送復(fù)位應(yīng)答信息,讀卡器接收到SD/應(yīng)C卡發(fā)送的復(fù)位應(yīng)答信息后,發(fā)送Status命令,讀卡器發(fā)送的status命令如圖4所示。
2、 SD/薩C卡應(yīng)答status命令命令應(yīng)答狀態(tài)字SW1SW2: 91 xx,表示命令正常結(jié)束,并通知讀卡器有主動(dòng)命令作為附加信息,'xx,為響應(yīng)數(shù)據(jù)的長(zhǎng)度。
3、 讀卡器發(fā)送的Fetch命令如圖5所示。
4、 SD/畫(huà)C卡應(yīng)答,發(fā)送Get Input命令
該命令屬于主動(dòng)式SIM卡命令,命令格式符合GSMll. 14中的定義,命令中的文本字符串部分包括定義的指令類型、存儲(chǔ)卡ID和SD/,C卡利用存儲(chǔ)卡ID進(jìn)行CRC (Cyclic Redundancy Check循環(huán)冗余才交一驗(yàn))?!?yàn)得到的才交'瞼碼,其中指令類型包括校驗(yàn)指令,表示存儲(chǔ)卡與讀卡器的認(rèn)證。
CRC校驗(yàn)技術(shù)為一種公知技術(shù),在數(shù)據(jù)通信和數(shù)據(jù)存儲(chǔ)領(lǐng)域,CRC校驗(yàn)無(wú)處不在,其基本思想是利用線性編碼理論,在發(fā)送端或者數(shù)據(jù)存儲(chǔ)時(shí)才艮據(jù)k位二進(jìn)制信息碼序列,以一定的規(guī)則產(chǎn)生一個(gè)校驗(yàn)用的CRC碼r位,并附在信息碼后邊,構(gòu)成一個(gè)新的二進(jìn)制碼序列數(shù)共(k+r)位。在接收端或數(shù)據(jù)存儲(chǔ)后,則根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進(jìn)行檢驗(yàn),以確定傳送中或者數(shù)據(jù)存儲(chǔ)中是否出錯(cuò)。例如存儲(chǔ)卡ID為0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x390x30,即十進(jìn)制1234567890,進(jìn)行CRC才交-驗(yàn)的初始值為0xFF, 0xFF, 0xFF, OxFF,進(jìn)行CRC校驗(yàn)后得到的校驗(yàn)碼為0x32 0x18。
5、 讀卡器收到步驟4的SD/醒C卡發(fā)送的Get Input命令后,將根據(jù)命令的文本字符串中攜帶的指令類型數(shù)據(jù)判斷是否是校驗(yàn)指令,如果不是校驗(yàn)指令,則按照相應(yīng)的非校驗(yàn)指令執(zhí)行或退出此過(guò)程;如果是校驗(yàn)指令,則接著取出命令的文本字符串中攜帶的存儲(chǔ)卡ID進(jìn)行CRC校驗(yàn),計(jì)算出校驗(yàn)碼,并將該校驗(yàn)碼與讀卡器接收到的CRC校驗(yàn)碼進(jìn)行比較,若一致則說(shuō)明讀卡器對(duì)存儲(chǔ)卡的認(rèn)證成功,不一致則說(shuō)明讀卡器對(duì)存儲(chǔ)卡的認(rèn)證失敗。其中讀卡器利用存儲(chǔ)卡ID進(jìn)行CRC校驗(yàn)的算法與上述步驟4中存儲(chǔ)卡利用存儲(chǔ)卡ID進(jìn)行CRC校驗(yàn)的算法相同。
然后,讀卡器向SD/畫(huà)C卡發(fā)送Terminal Response命令,如圖6所示,該命令用于對(duì)上一次使用FETCH命令取回的SD/醒C卡主動(dòng)命令Get Input的響應(yīng)。
1) 當(dāng)前述讀卡器判斷CRC校驗(yàn)碼一致,讀卡器對(duì)SD/羅C存儲(chǔ)卡的認(rèn)證成功時(shí),讀卡器向SD/畫(huà)C發(fā)送的Terminal Response中的DATA部分包括讀卡器對(duì)SD/畫(huà)C卡認(rèn)證成功的標(biāo)志,定義的指令類型、讀卡器ID和讀卡器利用讀卡器ID計(jì)算得到的校驗(yàn)碼。其中指令類型包括校驗(yàn)指令的響應(yīng)指令,表示存儲(chǔ)卡與讀卡器的認(rèn)證。
2) 當(dāng)前述讀卡器判斷CRC校驗(yàn)碼不一致,讀卡器對(duì)SD/MMC存儲(chǔ)卡的認(rèn)證失敗時(shí),讀卡器向SD/MMC發(fā)送的Terminal Response中的DATA部分包括讀卡器對(duì)SD/MMC卡認(rèn)證失敗的標(biāo)志。
6、 SD/畫(huà)C卡收到讀卡器發(fā)送的Terminal Response命令后,根據(jù)命令中定義的指令類型判斷是否是校驗(yàn)指令的響應(yīng)指令,如果不是,則按照相應(yīng)非校驗(yàn)指令的響應(yīng)指令執(zhí)行或退出此過(guò)程,如果是則根據(jù)命令中的認(rèn)證成功/失敗標(biāo)志判斷讀卡器對(duì)SD/畫(huà)C卡認(rèn)證是否成功,如果認(rèn)證失敗,則不置位SD/MMC卡內(nèi)部認(rèn)證通過(guò)標(biāo)志位;如果認(rèn)證成功,則取出命令中攜帶的讀卡器ID進(jìn)行CRC校驗(yàn),計(jì)算出校驗(yàn)碼,與讀卡器發(fā)送的CRC校驗(yàn)碼進(jìn)行比較,若一致則通過(guò)SD/MMC卡與讀卡器的相互認(rèn)證,并置位SD/固C卡內(nèi)部認(rèn)i正通過(guò)標(biāo)志位,若不一致則SD/醒C卡對(duì)讀卡器的iU正失敗,不置位SD/畫(huà)C卡內(nèi)部iU正通過(guò)標(biāo)志位。其中SD/薩C卡利用讀卡器ID進(jìn)行CRC校驗(yàn)的算法與上述步驟5中讀卡器利用讀卡器
8ID進(jìn)行CRC校驗(yàn)的算法相同。SD/,C卡的特殊功能需在SD/固C卡內(nèi)部的認(rèn)證通過(guò)標(biāo)志位置位后才能正常進(jìn)行。
7、 SD/薩C卡應(yīng)答命令,其中命令應(yīng)答狀態(tài)字SW1SW2: 90 00,通知讀卡器命令正常結(jié)束。
考慮到在此公開(kāi)的對(duì)本發(fā)明的描述和特殊的實(shí)施例,本發(fā)明的其他實(shí)施例對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。這些說(shuō)明和實(shí)施例僅作為例子來(lái)考慮,它們都屬于由所附權(quán)利要求所指示的本發(fā)明的保護(hù)范圍和精神之內(nèi)。
權(quán)利要求
1.一種存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,包括如下步驟(1)上電初始,存儲(chǔ)卡進(jìn)行第一處理,并把第一處理后的信息傳送給讀卡器;(2)讀卡器對(duì)第一處理后的信息數(shù)據(jù)進(jìn)行第二處理,產(chǎn)生第二處理的結(jié)果;(3)讀卡器根據(jù)第二處理的結(jié)果選擇進(jìn)行第三處理或產(chǎn)生認(rèn)證失敗信息,并把第三處理后的信息或認(rèn)證失敗信息傳送給存儲(chǔ)卡;(4)若存儲(chǔ)卡接收到認(rèn)證失敗信息,則轉(zhuǎn)到步驟(5);否則,存儲(chǔ)卡對(duì)第三處理后的信息進(jìn)行第四處理,產(chǎn)生第四處理的結(jié)果,并根據(jù)第四處理的結(jié)果產(chǎn)生認(rèn)證成功或認(rèn)證失敗的信息;(5)存儲(chǔ)卡保存認(rèn)證成功或認(rèn)證失敗的信息。
2. 如權(quán)利要求1所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于步驟(1)中所進(jìn)行的第一處理是指存儲(chǔ)卡把其自身具有的ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第一組校驗(yàn)碼,存儲(chǔ)卡ID和第一組校驗(yàn)碼即為第一處理后的信息。
3. 如權(quán)利要求2所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于步驟(2)中所進(jìn)行的第二處理是指讀卡器把接收到的第一處理后的信息中的存儲(chǔ)卡ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第二組校驗(yàn)碼,并將第二組校驗(yàn)碼與第 一組校驗(yàn)碼進(jìn)行比較。
4. 如權(quán)利要求3所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于第二處理與第一處理所使用的校驗(yàn)算法相同。
5. 如權(quán)利要求3所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于步驟(2)中讀卡器所進(jìn)行的第二處理產(chǎn)生兩種結(jié)果1.第一組和第二組校驗(yàn)碼一致,2.第一組和第二組校驗(yàn)碼不一致;步驟(3)中讀卡器根據(jù)所述結(jié)果l,選擇進(jìn)行第三處理,讀卡器根據(jù)所述結(jié)果2,產(chǎn)生認(rèn)證失敗信息表示讀卡器對(duì)存儲(chǔ)卡認(rèn)證失敗。
6. 如權(quán)利要求1所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于步驟(3)中所進(jìn)行的第三處理是指讀卡器把讀卡器ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第三組校驗(yàn)碼,讀卡器ID和第三組校驗(yàn)碼即為第三處理后的信息。
7. 如權(quán)利要求6所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于步驟(4 )中所進(jìn)行的第四處理是指存儲(chǔ)卡把接收到的第三處理后的信息中的讀卡器ID通過(guò)校驗(yàn)算法進(jìn)行計(jì)算,得到第四組校驗(yàn)碼,并將第四組校驗(yàn)碼與第三組校驗(yàn)碼進(jìn)行比較。
8. 如權(quán)利要求7所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于第四處理與第三處理中的校驗(yàn)算法相同。
9. 如權(quán)利要求7所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于步驟(4)中存儲(chǔ)卡所進(jìn)行的第四處理產(chǎn)生兩種結(jié)果1.第三組和第四組校驗(yàn)碼一致,2.第三組和第四組校驗(yàn)碼不一致;存儲(chǔ)卡根據(jù)所述結(jié)果l,產(chǎn)生認(rèn)證成功信息表示存儲(chǔ)卡和讀卡器的相互認(rèn)證成功,存儲(chǔ)卡根據(jù)所述結(jié)果2,產(chǎn)生認(rèn)證失敗信息表示存儲(chǔ)卡和讀卡器的相互認(rèn)證失敗。
10. 如權(quán)利要求1所述的存儲(chǔ)卡和讀卡器相互認(rèn)證的方法,其特征在于根據(jù)所述認(rèn)證失敗的信息,基于認(rèn)證成功才能進(jìn)行的所有功能不能執(zhí)行。
全文摘要
本發(fā)明涉及存儲(chǔ)卡和讀卡器設(shè)計(jì)技術(shù),特別涉及一種存儲(chǔ)卡和讀卡器之間實(shí)現(xiàn)相互認(rèn)證的方法。該方法在上電初始,存儲(chǔ)卡進(jìn)行第一處理,并把第一處理后的信息傳送給讀卡器;讀卡器對(duì)第一處理后的信息數(shù)據(jù)進(jìn)行第二處理,產(chǎn)生第二處理的結(jié)果;讀卡器根據(jù)第二處理的結(jié)果選擇進(jìn)行第三處理或產(chǎn)生認(rèn)證失敗信息,并把第三處理后的信息或認(rèn)證失敗信息傳送給存儲(chǔ)卡;存儲(chǔ)卡對(duì)第三處理后的信息進(jìn)行第四處理,產(chǎn)生第四處理的結(jié)果,并根據(jù)第四處理的結(jié)果產(chǎn)生認(rèn)證成功或認(rèn)證失敗的信息;存儲(chǔ)卡保存認(rèn)證成功或認(rèn)證失敗的信息。本發(fā)明保證了一些基于存儲(chǔ)卡實(shí)現(xiàn)特殊功能的可靠性、真實(shí)性、安全性和唯一性。
文檔編號(hào)G06K7/00GK101561860SQ20081010420
公開(kāi)日2009年10月21日 申請(qǐng)日期2008年4月17日 優(yōu)先權(quán)日2008年4月17日
發(fā)明者璐 徐, 軍 支, 華 閆 申請(qǐng)人:鳳凰微電子(中國(guó))有限公司