嚴 杰
(威睿電通(杭州)有限公司,杭州310053)
隨著3G 網(wǎng)絡的普及,無線上網(wǎng)已經(jīng)得到了很好的發(fā)展。人們借助無線上網(wǎng)卡就能使計算機隨時隨地接入網(wǎng)絡。USB接口的無線上網(wǎng)卡憑借其插拔方便、安裝簡單的特性,深受眾多用戶的青睞。但是,在無線網(wǎng)絡給人們帶來巨大方便的同時,網(wǎng)絡安全問題也一直是困擾用戶的難題。USB KEY 產(chǎn)品的出現(xiàn)對現(xiàn)行的網(wǎng)絡安全體系是一個極為有力的補充。本文設計的一種整合USB KEY的無線上網(wǎng)卡,不僅能提供3G 無線上網(wǎng)功能,而且集成普通USB KEY 的安全保障功能。
本設計以VIA-Telecom 公司的CBP7.1EVDO(以下簡稱CBP7.1)無線上網(wǎng)卡開發(fā)平臺為基礎,加入Synochip公司的AS508專用安全芯片作為輔助。系統(tǒng)的總體結構如圖1所示。
圖1中CBP7.1是一款通信基帶處理器,以ARM968為控制核心,輔以2 個DSP 核處理調制解調功能和音頻編解碼功能,支持CDMA2000 1xRTT 和EVDO 協(xié)議[1]。它作為主控芯片和射頻模塊一起,將完成無線上網(wǎng)卡的基本功能。AS508是針對普通USB KEY 產(chǎn)品領域推出的32 位處理器,采用Cordis5+RISC內核,并內嵌SM1加密算法、真隨機數(shù)發(fā)生器、DES/3DES加密引擎、AES加密引擎、公鑰算法引擎,可以很好地滿足USB KEY 的各種應用場合[2]。原始獨立的參考設計中,CBP7.1 和AS508 分別通過各自的USB接口與計算機進行數(shù)據(jù)傳輸。如果要進行將兩者合二為一的設計,最直觀的做法是增加USB HUB 控制芯片,但這樣無疑會增加產(chǎn)品的硬件成本。而本設計中只使用CBP7.1的USB接口與計算機相連,兼顧上網(wǎng)和USB KEY 相關數(shù)據(jù)傳輸?shù)墓δ埽⒃贑BP7.1 內部解析和剝離USB數(shù)據(jù)包,將與安全相關處理的命令和數(shù)據(jù)通過UART 接口與AS508進行交互,在AS508中進行處理并反饋結果。

圖1 系統(tǒng)結構框圖
基于CBP7.1的上網(wǎng)卡已是大批量生產(chǎn)的成熟產(chǎn)品,因此上網(wǎng)卡的設計實現(xiàn)部分將不在本文中贅述。接下來的部分將重點闡述CBP7.1與AS508配合實現(xiàn)USB KEY功能的設計。
USB設備唯一的取電方式來自于計算機通過USB總線提供的5V 輸入。鑒于芯片耐壓范圍和功耗效率的因素考慮,需要先用Buck DC-DC芯片將5V 電壓降至系統(tǒng)所需要的合理輸入值(如3.6 V),之后再提供給各個模塊。無線上網(wǎng)卡部分的供電需要配套的電源管理芯片(PMIC)來完成,它包含一個DC-DC和多個LDO,由其決定系統(tǒng)的上電時序和基帶、射頻子模塊電源電壓及開關控制邏輯。AS508的供電也可以直接取自于DC-DC降壓后的電源輸出,再由AS508內部自帶的LDO 完成其所需的3.3V 和1.8V 的電源轉換。
由于CDMA 通信系統(tǒng)對頻率穩(wěn)定度的要求,需要選用一款帶溫度補償?shù)膲嚎卣袷幤鳎╒C-TCXO),分別給基帶和射頻提供19.2 MHz的參考時鐘輸入。為避免基帶芯片中高速信號帶來的噪聲污染射頻部分,在參考時鐘信號進入CBP7.1之前增加一級緩沖器作為隔離。系統(tǒng)工作時基帶芯片還會根據(jù)AFC 算法對振蕩器頻率進行微調,以糾正頻率誤差,使它達到更精確的時鐘信號輸入。AS508自帶片上振蕩器,外部只需配一個12 MHz石英晶振和負載電容就能提供芯片的時鐘源,再經(jīng)內部PLL 倍頻后可以達到96 MHz的工作頻率。
CBP7.1通過EBIF總線搭配外部32 MB Flash和8 MB 的PSRAM 二合一MCP 存儲芯片,而AS508 內嵌10KB ROM,128 KB Flash 和12KB SRAM。針對本系統(tǒng)的需求,對存儲器的使用分配如下:首先,代碼區(qū)用于系統(tǒng)代碼的存儲和運行,將分別在各自的Flash 和SRAM 中完成;第二,兩個處理器都擁有自身的文件系統(tǒng),這部分也將包含在各自的Flash存儲空間中;第三,需要預留一個虛擬的CDROM 區(qū),存放上網(wǎng)卡所需要的客戶端驅動和應用程序,以及USB KEY 的CSP等上層庫文件和客戶端程序。由于AS508 內部Flash空間有限,需要外接一個SPI接口的NOR Flash來擴展存儲空間,用于存放相關內容。本設計中可以簡化存儲方案,將兩者的CD-ROM 區(qū)合并,統(tǒng)一存放在CBP7.1的外部Flash中,從而省去一個SPI NOR Flash,進一步降低了硬件成本和PCB面積。
CBP7.1包含了豐富的外圍接口資源。與計算機的數(shù)據(jù)傳輸使用USB 接口,支持2.0 全速標準,可以達到12 Mbps的數(shù)據(jù)率,擁有6個輸入和輸出端點。與PMIC 之間通過I2C總線接口通信,最高為400kHz時鐘頻率,支持76.5kbps~1.288 Mbps數(shù)據(jù)率。SPI接口用于基帶和射頻模塊間的控制信息傳輸,峰值數(shù)據(jù)率可達1.228 8~19.660 8Mbps。AS508和CBP7.1的數(shù)據(jù)交換則通過UART 接口完成,最高230.4kbps的波特率,兩者分別擁有4字節(jié)和64字節(jié)的輸入/輸出FIFO。
USB KEY 功能軟件設計的核心思想是在計算機端將無線上網(wǎng)卡識別成一個CD-ROM 設備,并且可以通過標準或自定義的SCSI命令與設備進行通信。整個系統(tǒng)劃分為兩個部分:
①基帶處理器軟件負責與計算機的USB通信,虛擬出一個CD-ROM 設備,接收并解析數(shù)據(jù)包,區(qū)分CD-ROM標準磁盤命令或是智能卡相關命令。若是CD-ROM 相關操作,則在本地處理完成并反饋狀態(tài)和數(shù)據(jù);若是智能卡命令,則通過UART 接口轉發(fā)至AS508的COS處理。
②COS(Chip Operating System,片上操作系統(tǒng))即安全芯片上運行的軟件,主要功能是控制USB KEY 和外界的信息交換,管理內部的存儲器并完成各種安全相關命令的處理。系統(tǒng)軟件整體架構如圖2所示,下文將分模塊具體介紹各部分設計的要點。
3.1.1 USB設備驅動
USB設備通信協(xié)議的實現(xiàn)是一個中斷處理的過程。驅動程序在USB控制器初始化之后,接收來自主機的各類中斷消息,包括控制傳輸、數(shù)據(jù)包發(fā)送、數(shù)據(jù)包接收、系統(tǒng)處理和異常處理等請求。控制傳輸請求中最重要的部分是在USB設備枚舉階段完成各種描述符向主機的上報。描述符包括設備描述符、配置描述符和接口描述符等。

圖2 軟件模塊劃分
3.1.2 BOT(Bulk_Only Transport)傳輸協(xié)議
主機根據(jù)描述符信息在枚舉過程中完成對設備的配置后,識別出為Bulk_Only的Mass Storage設備,然后即刻進入Bulk_Only傳輸方式[3]。
3.1.3 SCSI命令處理
CD-ROM 設備遵從SCSI接口標準,它是一種用于計算機和智能設備之間系統(tǒng)級接口的獨立處理器標準。SCSI命令用于通知設備進行某些物理操作(如讀/寫指定區(qū)塊),或者返回設備的某些信息(如類型、容量、廠商信息等),以字節(jié)流的形式通過總線發(fā)送到設備。這些由字節(jié)流組成的命令稱為CDB(Command Descriptor Blocks,命令描述塊)。為了滿足USB虛擬CD-ROM 使用的Bulk_Only傳輸規(guī)范,需要將SCSI命令封裝在CBW 中的CBWCB字段里。
本設計中SCSI命令分為標準命令和自定義命令兩類。標準命令用于計算機端虛擬出的CD-ROM 磁盤相關操作,如計算機端對存放在CD-ROM 中的設備驅動程序和應用軟件的讀取安裝。基帶處理器軟件中需要實現(xiàn)SCSI標準命令集的部分功能。常用的SCSI命令見表1。

表1 常用SCSI標準命令
自定義的SCSI命令用來處理智能卡安全相關的操作。USB KEY 用到的智能卡命令將封裝在CDB 中。軟件中可通過CDB中的第一個字節(jié)操作碼字段來區(qū)分標準命令或是自定義命令。當識別到操作碼為非標準命令(例如0x11)時,即改走自定義命令的處理流程。自定義命令包括主機發(fā)出的輸入和輸出的兩類命令請求,可以通過CDB中的第二個字節(jié)來區(qū)分。
3.1.4 UART通信
自定義的SCSI命令及其后主機下發(fā)的相關數(shù)據(jù)將由安全芯片來處理,因此基帶處理器軟件中需要將CDB 中的信息及之后的數(shù)據(jù)重新打包后通過UART 接口發(fā)送至安全芯片,并接收來自安全芯片處理后的響應和數(shù)據(jù)。UART收發(fā)雙方約定物理層數(shù)據(jù)幀采用1位起始位、8位數(shù)據(jù)位、1位奇校驗位和1位停止位的幀結構。多個數(shù)據(jù)幀組成的信息包,將按照如下格式進行傳輸。

?
其中,SYNC_CHAR是1字節(jié)信息包同步頭,內容為0xFE。LENGTH 字段標明了后續(xù)MSG_ID 字段與DATA 字段的字節(jié)數(shù)總和,即1+N 個字節(jié)。MSG_ID 字段區(qū)分之后的DATA 字段的內容是主機發(fā)送的輸入請求、輸出請求或是純數(shù)據(jù)。CHECKSUM 字段為信息包提供了校驗功能,除了SYNC_CHAR 字段之外的所有字節(jié)相加應為零。
綜上所述,基帶處理器軟件基于USB Bulk_Only傳輸協(xié)議處理CD-ROM 設備通信的流程圖如圖3所示。
安全芯片軟件主要由通信管理、命令管理、文件管理和安全管理4個模塊組成[4]。
通信管理模塊采用ISO7816-3標準定義的接觸式智能卡T=0(異步半雙工字符傳輸)協(xié)議。主機發(fā)送由CLA、INS、P1、P2、P3五個連續(xù)字段組成的命令頭和數(shù)據(jù)完成后,等待智能卡的應答。USB KEY接收到5個命令字節(jié)后,會向主機返回兩個字節(jié)的SW 狀態(tài)字節(jié)和相應的數(shù)據(jù)[5]。
命令管理模塊根據(jù)通信管理模塊數(shù)據(jù)包中解析出的智能卡命令進行處理。基本命令和應答狀態(tài)集在ISO7816-4標準中作了規(guī)定。基本命令集主要包括二進制文件讀寫、記錄文件讀寫、邏輯通道管理、內外部認證等[6]。實際應用中,USB KEY 可以根據(jù)需求對智能卡基本命令集進行適當?shù)臄U充。
文件管理是COS的基礎模塊,它在AS508芯片內嵌Flash的特定區(qū)塊中建立FAT 文件系統(tǒng),負責組織、管理、維護USB KEY 內存儲的所有數(shù)據(jù),包括對MF、DF和EF三級數(shù)據(jù)類型的操作。
安全管理模塊包含三個部分:安全狀態(tài)、安全屬性和安全機制。軟件中定義了無權限、外部認證、用戶登陸和管理員登陸4種安全狀態(tài)以及對文件的讀、寫、刪除和使用4個權限等級的安全屬性。安全機制可以認為是安全狀態(tài)實現(xiàn)轉移所采用的轉移方法和手段,包括:密碼校驗、密鑰認證、數(shù)據(jù)鑒別及數(shù)據(jù)加密等。
在AS508原始COS基礎上,本設計對通信管理的部分稍作修改,由USB接口通信改成UART 接口通信的方式。通過UART 接口接收來自基帶處理器重新組包后的智能卡操作相關的命令和數(shù)據(jù)。UART 數(shù)據(jù)幀和信息包的格式與上節(jié)描述的一致。根據(jù)MSG_ID 字段判斷接下來是否需要進行處理或是響應操作。若是主機輸出請求,則接收并解析命令與數(shù)據(jù),進入命令管理模塊進行處理。若是主機輸出請求,則調用命令管理模塊中得到的響應信息和數(shù)據(jù),通過UART 接口向基帶處理器發(fā)送。UART通信流程圖如圖4所示。

圖3 基于BOT的基帶處理器軟件流程圖

圖4 UART通信流程圖
本設計在CBP7.1EVDO 3G 無線上網(wǎng)卡的平臺基礎上,利用外部專用安全芯片擴展了USB KEY 的功能。產(chǎn)品結構簡單、功能完備,有效地降低硬件成本的同時提高了用戶使用的便捷性,具有一定的推廣價值。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]VIA-Telecom.CBP7.1_datasheet[EB/OL].[2012-09].http://www.via-telecom.com/products/products.jsp.
[2]Synochip.AS508_數(shù)據(jù)手冊_中文版[EB/OL].[2012-09].http://www.synochip.com/cn/DownloadShow.asp?id=187&ParentID=13.
[3]USB Implementers Forum.Universal Serial Bus Mass Storage Class Bulk-Only Transport,Revision 1.0,1999.
[4]劉紅明,周玉潔.無驅型USB Key COS的研究與設計[J].信息安全與通信保密,2009(9):90-91.
[5]ISO/IEC 7816-3.Identification cards-Integrated circuit cards-Part 3:Cards with contacts-Electrical interface and transmission protocols,2006.
[6]ISO/IEC 7816-4.Identification cards-Integrated circuit cards-Part 4:Interindustry command for interchange,2006.