淺談基于IC卡數字簽名在卷煙物流送貨的應用
文章出處:http://5052h112.com 作者:卷煙物流配送中心 王晉冰 人氣: 發表時間:2011年12月03日
在如今這個以電子信息技術、計算機網絡技術為先導的信息時代,煙草行業作為一個特殊的行業應當在信息系統的使用上更為實際和廣泛。隨著IC技術和網絡技術的不斷完善和普及,IC芯片和相關產品的成本也逐年下降,使用IC卡與加密算法相結合來搭建數字簽名系統已經不再是一件復雜和不可思議的事情。
在卷煙物流過程中,時時刻刻都存在貨物交接手續的簽辦和管理,而目前大多在交接過程中都是使用傳統紙筆簽字確認方法造成紙張上的巨大成本浪費和操作的不便。本文中,我們將介紹一種基于IC卡和加密算法結合的數字簽名技術在卷煙物流配送過程中經營戶收貨后的確認應用系統。
目前貴陽市煙草專賣局(公司)卷煙物流配送中心在卷煙送貨與客戶進行貨款交接時仍然采用傳統的客戶簽字確認方式,需要在每次送貨的前一日打印當日所有訂貨客戶的《卷煙銷售單》,在交接過程中采用銷售單一式兩份的形式,由卷煙物流配送中心及卷煙零售經營戶兩方各持一份,并要求卷煙零售經營戶在《卷煙銷售單》和《客戶服務手冊》上分別簽字確認收貨,作為收貨送貨憑證。
在目前實際情況下使用這一傳統簽字確認方式將會出現如下問題:
1. 卷煙零售經營戶文化程度高低不同,部分卷煙零售經營戶不會寫字或擁有私人印章,同時由于不同原因該部分經營戶也不愿在《卷煙銷售單》上按手印以確認收貨,所以造成雙方在貨款交接過程中造成不便,降到可追溯性,同時也不能更順利的完成整個物流手續流程。
2. 《卷煙銷售單》采用紙質材料,并在交接中由送貨員粘貼在卷煙零售經營戶的《卷煙零售客戶服務手冊》上,由于各種原因有少許卷煙零售經營戶丟失《卷煙零售客戶服務手冊》或由于粘貼不牢、撕扯等造成《卷煙銷售單》的丟失,造成經營戶端歷史訂煙數據的丟失,并失去收貨確認的法律憑證。給卷煙市場的規范管理也造成一定困難。
3. 在打印《卷煙銷售單》過程中耗費大量紙材,增加物流成本費用,同時產生的大量的歷史數據帶來了存放得很大不便,使用紙張打印也將成為環境污染的原因之一,都是不利于當今和諧社會和可持續性發展戰略的。若按照貴陽市目前卷煙經營情況,平均每周送貨戶數約1萬7千戶戶,擬每戶按最小打印數量為一張送貨銷售單,一式兩份則一周將耗費打印銷售單的紙張達3萬余頁,再加上每戶經營戶每年將用于粘貼銷售單用的《卷煙零售客戶服務手冊》1萬余本,累計耗費紙張的數量是相當巨大。
4. 每次卷煙零售經營戶在完成卷煙交接過程中需要簽字2次以上,造成卷煙零售經營戶不理解以致厭煩情緒上升,客戶滿意度下降,同時也降低了送貨效率。不利于市場搶占和市場競爭力的提高。
煙草公司作為煙葉收購、卷煙銷售服務行業,首要任務就是不斷降低成本的同時不斷提高服務質量,抓住市場,理解客戶心理,采用新技術,提高生產力不斷提升內部素質增加競爭力戰斗力去面對即將到來的市場競爭和挑戰。
磁卡,IC卡以其方便攜帶,成本低廉,不存在二次投入和多次長期投入,具有良好的數據存儲性的特點,在銀行,公交,電信,電視,電力等部門用于存放客戶信息,計費信息,消費信息和消費憑證已被廣泛使用。是一種成熟而具有很大應用潛力的技術。
該文將介紹的基于IC卡和加密技術的數字簽名技術直接針對上面使用傳統簽字方法存在的問題隱患提出,在提高服務質量,提高競爭力,降低成本上也有較大幫助。
IC卡及相關技術
1. IC卡
IC卡 (Integrated Circuit Card,集成電路卡)是繼磁卡之后出現的又一種新型信息工具。IC卡在有些國家和地區也稱智能卡(smart card)、智慧卡(intelligent card)、微電路卡(microcircuit card)或微芯片卡等。它是將一個微電子芯片嵌入符合ISO7816標準的卡基中,做成卡片形式;其特點是功耗低,效率高,有一定存儲能力和信息高安全性,成本低廉,使用于面向大群體,低數據存儲,高安全性的應用。
IC卡讀寫器是IC卡與應用系統間的橋梁,在ISO國際標準中稱之為接口設備IFD(Interface Device)。IFD內的CPU通過一個接口電路與IC卡相連并進行通信。IC卡接口電路是IC卡讀寫器中至關重要的部分,根據實際應用系統的不同,可選擇并行通信、半雙工串行通信和I2C通信等不同的IC卡讀寫芯片。
1.1 IC卡讀寫卡原理簡介:
IC卡讀寫器要能讀寫符合ISO7816標準的IC卡。IC卡接口電路作為IC卡與IFD內的CPU進行通信的唯一通道,為保證通信和數據交換的安全與可靠,其產生的電信號必須滿足下面的特定要求以完成IC卡插入與退出的識別和對卡的讀寫操作
IC卡接口電路對IC卡插入與退出的識別,即卡的激活和釋放,有很嚴格的時序要求。如果不能滿足相應的要求,IC卡就不能正常進行操作;嚴重時將損壞IC卡或IC卡讀寫器。
①激活過程
為啟動對卡的操作,接口電路應按圖2.1所示順序激活電路:
RST處于L狀態;
根據所選擇卡的類型,對VCC加電A類或B類,
1. VPP上升為空閑狀態;
2. 接口電路的I/O應置于接收狀態;
圖2.1 觸點接通與冷復位時序
3. 向IC卡的CLK提供時鐘信號(A類卡1~5MHz,B類卡1~4MHz)。
在t’a時間對IC卡的CLK加時鐘信號。I/O線路應在時鐘信號加于CLK的200個時鐘周期(ta)內被置于高阻狀態Z(ta 時間在t’a之后)。時鐘加于CLK后,保持RST為狀態L至少400周期(tb)使卡復位(tb在t’a之后)。在時間tb,RST被置于狀態H。I/O上的應答應在RST上信號上升沿之后的400~40 000個時鐘周期(tc)內開始(tc在t’b之后)。
在RST處于狀態H的情況下,如果應答信號在40 000個時鐘周期內仍未開始,RST上的信號將返回到狀態L,且IC卡接口電路按照圖2.2所示對IC卡產生釋放。
圖2.2 觸點釋放時序
②釋放過程
當信息交換結束或失敗時(例如,無卡響應或卡被移出),接口電路應按圖2.2所示時序釋放電路:
RST應置為狀態L;
CLK應置為狀態L(除非時鐘已在狀態L上停止);
VPP應釋放(如果它已被激活);
I/O應置為狀態A(在td時間內沒有具體定義);
VCC應釋放。
1.2通過觸點向卡提供穩定的電源
IC卡接口電路應卡類型不同,電壓范圍分別為1.8~5.5V不等,向IC卡提供相應穩定的電流為ICC<10 mA。
1.3通過觸點向卡提供穩定的時鐘
IC卡接口電路向卡提供時鐘信號。時鐘信號的實際頻率范圍在復位應答期間,應在以下范圍內:A類卡,時鐘應在1~5MHz;B類卡,時鐘應在1~4MHz。
復位后,由收到的ATR(復位應答)信號中的F(時鐘頻率變換因子)和D(比特率調整因子)來確定。
時鐘信號的工作周期應為穩定操作期間周期的40%~60%。當頻率從一個值轉換到另一個值時,應注意保證沒有比短周期的40%更短的脈沖。
(注:IC卡在目前讀寫方式上可分為非接觸讀寫和接觸讀寫兩種類型,由于本文提到的IC卡只涉及使用接觸式IC卡,所以不對非接觸式卡進行解釋。)
1.4通過觸點對IC卡的讀寫
這里對基于CPU IC卡T=0的通信協議進行簡單描述,按照ISO7816標準,CPU IC卡在采用T=0模式下與讀寫器通信將采用半雙工異步模式傳輸,從T=0協議的功能出發,該協議的實現可以分為物理層、數據鏈路層、終端傳輸層和應用層。
1) 基于T=0傳輸協議的CPU IC的APDU指令流程
終端傳輸層根據卡片返回的過程字符和狀態字節執行相應的操作,使讀寫器對數據的處理過程明朗清晰。卡片返回的過程字節和狀態字節跟應用層發送給卡的APDU(Application Protocol Data Unit,應用協議數據單元)和VPP使用等有關。表2.1為VPP未用時的終端傳輸層中返回的過程字節。
表2.1 終端傳輸層中返回的過程字節
應用層即為由CLA、INS、P1、P2、P3作為命令頭組成的命令消息體的APDU響應和應答處理層。其中CLA為指令類別,INS為指令碼,P1、P2為參數,P3為根據APDU的不同格式為發送給卡的數據長度或期望響應的數據長度。APDU的幾種情況如表2.2所列。
表2.2 APDU的幾種情況
CPU卡對接口設備(即讀寫器)的應答APDU情況如表2.3所列。
表2.3 CPU卡對接口設備的應答
其中體中的數據字節數由命令APDU中的LE指出;SW1、SW2是必備的,可以指明命令APDU執行正確或執行出錯的錯誤類型。
2) 基于T=0傳輸協議的CPU IC的APDU指令流程
圖2.3 T = 0 的CPU卡APDU指令實現流程
根據目前CPU卡的常用T=0協議、自帶編程升壓電路的應用情況,以及本讀寫器接收IC卡數據報文直接發送PC機處理的特點,本讀寫器可行的APDU命令和響應的處理流程如圖2.3所示。
2.IC卡讀(寫)器設計簡要
讀寫器的硬件部分主要由IC接口管理芯片TDA8007、MCUAT89C52、外部數據存儲器W24257S、串口電平轉換芯片MAX3226、安全IC卡座(即SAM卡座)、應用IC卡座、鍵盤口供電的串口通信線及其它相關元器件組成。
圖2.4 IC卡讀寫器簡單框圖
圖2.4所示為通過PC機控制管理的外置于PC機的接觸式CPU IC卡讀寫器。通過定制的數據線,該讀寫器的5V直流電源可直接由鍵盤口提供,同時數據線還負責PC機與讀寫器的串行數據交換。在大部分IC卡讀寫應用中,都涉及到IC卡的認證和數據讀寫的國解密問題,所以本讀寫器除了提供一個供用戶使用的IC卡接口卡座外,還內置了一個SAM卡,即安全IC卡卡座,以方便安裝SAM卡,保證應用IC卡讀寫時的數據安全,保護用戶的利益。
硬件的其它組成部分,如處理器,目前采用Atmel的89C52。其4KB的Flash程序存儲器可以滿足讀寫器的程序空間需要。由于PC機與89C52、89C52與TDA8007的數據交換要求的暫存數據空間比較大,89C52提供的256字節不夠,需外加一片數據存儲器。本讀寫器中使用的是華邦的W24257S。其有32KB存儲容量,IC接口部分的主要芯片為Philips的TDA8007。
圖2.5 IC卡接口芯片TDA8007的原理框圖
TDA8007芯片能夠提供兩個能同時滿足ISO7816標準及EMV和GSM11-11標準的IC卡讀寫接口。在本讀寫器中,一個用于與應用IC通信,另一個用于與安全IC卡通信。與上文CPU卡的觸點圖相對應,CLKi、RSTi、VCCi、I/Oi、GNDCi、PRESi、C4i、C8i(其中i=1,2;C4i、C8i未用;PRESi可用于檢測IC卡是否插入。具體應用可參看TDA8007的技術文檔)都直接由TDA8007提供給IC卡接口相連,MCU只需通過其接口控制并行通信來管理TDA8007,便可實現對IC卡的上電、下電及讀寫數據處理。其中,微處理器既可以通過總線復用把TDA8007內部的所有寄存器作為外部存儲器,用MOVX尋址,也可以通過非總線復用方式訪問,此時TDA8007用AD0~AD3來區分內部各寄存器。另外,TDA8007的片選信號和外部中斷信號線可以方便讀寫器處理多個IC卡頭。TDA8007的特別硬件ESD處理、接口短路處理、電源出錯處理等也給IC卡和IC卡讀寫器提供了比較高的安全保護;同時,TDA8007內部集成的電源管理功能允許TDA8007的供電范圍可達2.7~6.0V,并且TDA8007通過電源管理可以給IC卡提供5.0V、3.0V及1.8V的電源,以適合不同工作電壓的IC卡應用。
本讀寫器是通過總線復用對TDA8007的寄存器進行控制的。其中MCU的P1.5為TDA8007的片選,P0口為與之通信的8位數據線,TDA8007的各寄存器預先被宏定義的成微處理器的一個外部數據單元(下面電程序處的定義),從而方便MCU訪問。下面結合TDA8007寄存器的定義和位分配,給出應用TDA8007接口芯片對IC卡進行上電激活和下電的程序。TDA8007的寄存器主要三類。第一類,通用寄存器:①卡槽選擇CSR;②硬件狀態HSR;③定時器TOR1、TOR2、TOR3。第二類,ISO7816串行處理寄存器:①串行狀態USR;②混合狀態MSR;③串行發送UTR;④串行接收URR;⑤隊列控制FCR。第三類,卡專屬寄存器:①可編程分頻PDR;②保護時間GTR;③串行控制UCR1、UCR2;④時鐘配置CCR;⑤上電控制PCR。注意:對于卡專屬的寄存器,即卡接口1、卡接口2分別對應的寄存器,邏輯上具有相同的名及訪問地址,因而,對不同的瞳操作,需要通過CSR選擇對應的卡槽來切換卡專卡屬寄存器的映射的物理空間。所以,接口設備每次從一個卡的上下電或讀寫轉向另一卡,都需要訪CSR設定對應的卡槽。對于每個寄存器的位定義不再多述,可參看TDA8007的相關技術文檔。
加密技術及數字簽名
1. 加密技術簡要
信息加密技術屬于信息安全技術,是在計算機科學技術不斷發展的過程中為保證計算機數據在傳輸和存儲過程中數據的安全、保密、真實、完整性發展起來的。傳統的加密系統是以密鑰為基礎的,是一種對稱加密技術,即加密者和解密者使用相同密鑰進行數據加密和解密。另一種是公鑰加密技術,采用一對非對稱密鑰進行消息的加密,加密者和解密者各自擁有不同的密鑰。同時還有其他諸如流密碼等加密算法。
1.1 數據加密原理
數據加密時防止未經授權的用戶訪問敏感信息的手段,是人們通常理解安全措施,也是其他安全方法的基礎。現代密碼學是經典密碼學的進一步發展和完善,由于加密和解密此消彼長的斗爭永遠不會停止,所以密碼學者們科學將繼續發展下去。
一般保密通道如圖3.1所示,在發送端,把明文P用加密算法E和密鑰K加密,變成秘文C,在接收端采用相反解密算法D使用密鑰K,將秘文C解密得到明文P。完成數據安全傳輸。即P = D{K,C}。
這里加解密函數E和D是公開的,而密鑰K是秘密的,只有收發端知道,在傳輸過程中第三方在不知道密鑰的情況下,是不可能得到明文的。
不論偷聽者截獲多少秘聞,但密文中沒有足夠的信息以得可以確定的對應的明文,則這個密碼體制叫做無條件的安全,或稱理論上不可破解。否則破解給定的密碼,取決于使用的計算資源。所以密碼學主要研究的核心問題就是設計出在給定計算費用的情況下,計算上安全的密碼體制。
1.2 經典加密及現代加密技術簡介
經典數據加密主要有以下3種加密方式:
1. 替換加密
2. 換位加密
3. 一次性填充
以上加密方法存在共同缺點就是明文和密文存在很明顯的數學對應關系,能通過文字出現的概率等數學方法很容易推算出明文和密文之間的對應關系,但作為早期密碼學的經典加密方法,對現代加密技術給出了很好的發展方向。現就對現代加密技術做以下簡紹:
現代密碼體制仍然使用替換和換位的基本方法,但采用了更加復雜的加密算法和簡單的密鑰。而且增加了對付主動攻擊的手段,例如加入了隨機的冗余信息,防止制造假消息;加入時間控制信息,防止消息重放攻擊等。
替換和換位可以采用硬件電路實現,將一連串加密盒通過不斷的調換順序和重復跌代實現復雜的乘積密碼,如DES加密,IDEA加密,基于橢圓算法的公鑰加密算法和基于大素數分解的RSA加密算法等。
比如RSA算法中,如果攻擊者要將分解n為當初生成密鑰使用的P,Q,得到Z,在使用Euclid算法,由e和z得到d,再分解200位的數,需要40億年,分解500位的數則需要1025年。
2. 數字簽名與加密技術
與人手寫簽字的作用一樣,數字簽字的目的同樣是為了確保該信息是由本人所發送或確認,不由他人改動,存在一定法律效應。數字簽字系統向通信雙方提供服務,使A向B發送的信息上留有A的簽名,以便得到:
B可以驗證消息P確實來源于A。
A以后不能否認發送信息P給B。
B不能編造或改變P。
數字簽字是基于密碼學發展而來,主要運用了對消息或消息摘要的加密方法完成。
1.1 基于對稱密鑰的數字簽字
這種系統如圖3.2所示,設BB是A和B共同信賴的仲裁者,KA和KB分別為A和B與BB之間的密鑰,而KBB是只有BB掌握的密鑰,P是A發給B的消息,t是時間戳。BB解決了A的報文{A,RA(B,RA,t,P)}以后產生了一個簽名的消息KBB(A,t,P),并裝配成發給B的保溫{KB(A,RA,t,P,KBB(A,t,P))}。B可以解密該報文,閱讀消息P,并保留證據KBB(A,t,P)。由于A和B之間的通信是通過中間人BB的,所以不必懷疑對方身份。又由于證據KBB(A,t,P)的存在,A不能否認發送消息P,B也不能改變得到的消息P,因為BB仲裁時可能會當場解密KBB(A,t,P),得到發送人,發送時間和原來的消息P。
1.2 基于公鑰體制的數字簽字
在某些場合為使簽字過程更加簡單,同時為保證簽字的有效性,利用公鑰加密算法也可以搭建數字簽字系統,如圖3.3所示,如果A否認了發送給B的消息,B可以拿出DA(P),并用A的公鑰EA解密得到P,從而正明P是A發送的。如果B把消息P竄改了,當A要求B出示原來的DA(P)是,B拿不出來。達到消息簽字的目的。
1.3 基于IC卡的數字簽名
正如上面所說的,IC卡將記錄A端個人信息(公鑰),只有在A同時持有IC卡(公鑰)連同A的本人記憶的密碼K(私鑰)同時正確時才能開啟上述數字簽字,做到了數字簽字合法意義。IC卡中將存放A本人公鑰密鑰和通過A私鑰加密的消息摘要,摘要中可以包含客戶的所有個人信息和訂貨情況,客戶自己記憶個人密鑰(私鑰K)以確定IC卡與A本人確實來自于同一個人,排除了IC卡丟失后仍然可以簽字,或者不使用IC卡進行簽字的冒簽現象的發生。給雙方帶來更高的安全性可信任性。
下面圖3.4介紹數字簽字系統的工作流程。
首先A將消息P與簽字時間拼接,形成新用于驗證發送消息的信息,在經過MD5雜湊算法計算出消息摘要,成為用于驗證消息時的消息指紋。同時A使用自己的密鑰K對該消息進行加密后連同原P消息一同發送給B。完成對消息簽字的過程。
如果A否認發送消息P,則B可以提供由A加密過的簽字數據,并用A公鑰匙(IC卡信息)進行解密,得到消息指紋,確定消息由A發送。如果B修改信息,則A可以要求B提供由A簽字過的信息,但由于B沒有A的密鑰K所以無法提供該信息,所以B是不能修改又A發送的消息的。同時由于第三人不可能同時得到IC卡和A的私鑰,所以第三方C是不可能偽造和盜取A,B間的交易數據,保證了雙方交易信息的安全。通過數字簽字技術實現很好的交易信息驗證、保存。
卷煙物流配送中實現IC卡數字簽名的途徑和方法
1. 卷煙物流配送中IC卡數字簽字系統
在卷煙物流配送過程中采用IC卡數字簽字系統,首先需要一次性為每位卷煙零售經營戶配備“卷煙銷售一卡通”IC卡,由客戶設定私鑰,并在IC卡中記錄用戶設定的初始密碼的MD5密碼指紋和客戶的公鑰數據,同時為每臺送貨車輛配備IC讀寫卡器(PDA),用于在卷煙交接時對經營戶的“卷煙銷售一卡通”IC卡進行讀寫操作,客戶通過輸入密碼完成收貨確認的操作。具體簽字系統工作流程如下:
卷煙物流配送中心在前一日將次日需要配送的卷煙零售經營戶的訂單信息通過無線方式存入每臺送貨車載IC讀寫卡器(PDA)內,同時按照原工作流程對卷煙進行分揀。
送貨當日,送貨組提取讀卡器(PDA)信息代替現《送貨銷售單》,對照信息完成卷煙的核對和裝車過程,實現數字化裝車和分揀送貨數字化一體對接。達到卷煙物流配送整體數字化提升,使用數字系統提高配送效率。
當卷煙送達卷煙零售經營戶手中后,卷煙零售經營戶通過將本人的“卷煙銷售一卡通”IC卡插入車載IC卡讀卡器(PDA),進行零售戶身份確定,并提取正確的卷煙送貨序號,方便送貨員將卷煙送到經營戶門面。同時讀卡器顯示客戶該次卷煙的訂單信息,方便經營戶對卷煙進行核對,在雙方完成貨物貨款的交接后,經營戶通過輸入本人密碼完成收貨確認。如果卷煙零售經營戶決定退貨,同樣可以在讀卡器上操作退貨。如果客戶關門或不在家,系統將自動定義關門退貨等操作,在得到部門管理員確認后自動完成退貨操作。收貨或退貨的確認信息將通過簽字技術存儲在“卷煙銷售一卡通”IC卡上,同時記錄在PDA上以存入數據庫備查。
送貨員完成送貨后將讀卡器(PDA)上數據通過無線傳輸方式將送貨情況數據和收款數據導入送貨部結算計算機,由系統自動完成當日送貨結算任務。
整套數字簽名系統將原來卷煙物流配送過程中需要手工重復操作,造成工作效率下降的主要過程全部改變為自動完成,同時通過加密方法提高信息安全性,在一些更高級操作中,還需要主管領導的密碼授權來完成,使用數字技術加強了卷煙送退貨管理,使管理更加透明化,直觀化,和高效化。
同時在整個卷煙物流配送過程中不再出現紙質記錄,全程數字化記錄,高效且節約成本,降低污染,也更容易與世界信息接軌,透過數據庫更便于對銷售情況的查找和管理,提高生產效率,準確及時的對市場進行了監控管理。
2. 卷煙物流配送IC卡簽字系統擴展應用
上述所述的卷煙物流配送中使用的IC卡數字簽字系統可以經過網絡系統擴展后實現營銷、稽查的綜合使用。
營銷客戶經理可以使用IC卡讀卡器(PDA)讀取卷煙零售客戶的“卷煙銷售一卡通”IC卡得知客戶的訂單信息和送貨情況,方便對客戶進行卷煙的引導銷售。不會由于經營戶丟失《卷煙銷售單》而失去客戶的訂貨送貨的歷史情況。
稽查同樣可以通過讀取經營戶的IC卡得知客戶訂貨情況,同時在系統擴展的情況下,可以在IC卡內存儲卷煙的噴碼信息,稽查人員直接可以得知卷煙的真偽,規范卷煙銷售市場,打擊不法卷煙銷售。
系統可將整個卷煙銷售、稽查、配送部門整合到一個信息系統下,更便于對全市經營戶卷煙銷售的統一管理。該系統可以在很大程度上提高卷煙市場的管理能力。是實現數字化煙草的一個必經之路。
在中國加入WTO的今天,中國卷煙市場將面臨著有史以來最大的一次挑戰,如何去面對這個挑戰,將它轉變成中國煙草再次騰飛的一個機會,使中國卷煙銷售更具競爭力,提供更好、更優質的服務,實施更便捷、更高效的管理,不斷使用新技術武裝中國卷煙銷售,使之不斷壯大是必然的趨勢。
使用數字化技術來管理卷煙銷售市場,使用數字化銷售系統,方便經營戶的同時降低成本的同時加強市場監管能力,是該系統的主要設計思想。
由于時間和能力所限,系統尚有多處不到之處,請各位高明指正,共同研究。