智能卡安全機制比較系列(六)TimeCOS
文章出處:http://www.fang1.net 作者:佚名 人氣: 發(fā)表時間:2012年02月26日
TimeCOS是握奇公司推出的智能卡操作系統(tǒng),也可以說是國內(nèi)早期自己開發(fā)的為數(shù)不多的幾款COS之一。當然隨著后來國內(nèi)公司對于CPU卡開發(fā)的投入,其他公司的COS產(chǎn)品也紛紛推出。
其實從握奇的TimeCOS來看,早期的1.0版本和目前流行的TimeCOS版本之間在安全機制方面存在很大的差別。TimeCOS1.0采用的是按位比較的狀態(tài)機機制,也就是說TimeCOS1.0在內(nèi)存中維護一個安全狀態(tài)字節(jié),這個字節(jié)的每個位分別對應一種安全狀態(tài),在初始情況下這個狀態(tài)字節(jié)為00,只有通過外部認證或者是通過PIN的驗證之后這個字節(jié)的某個位才能從0轉(zhuǎn)變?yōu)?。而某個文件或者應用的安全狀態(tài)一般都需要這個安全狀態(tài)字節(jié)的某些位必須被置1之后才能被訪問或者操作。這種模式簡單易行,基本可以滿足各種基本的應用需求。
但是在隨后的TimeCOS版本中,握奇借鑒了StarCOS的安全機制模式,也采用前后順序狀態(tài),以及狀態(tài)數(shù)值之間的大小比較來確定安全狀態(tài)是否被滿足。
在握奇各種細分的COS版本中,基本上都采用了這種類StarCOS的安全機制,其中包括:PBOC產(chǎn)品、PKI產(chǎn)品、PSAM產(chǎn)品等。
具體的實施方法是:卡片的內(nèi)存中同樣會有一個安全狀態(tài)字節(jié),不過這個字節(jié)的變化不是按位改變,而是由認證密鑰(或者PIN)中預設的“后續(xù)狀態(tài)”來直接指定,對于卡片中存儲的任何一個密鑰(含PIN)都有一個所謂的“后續(xù)狀態(tài)”。
這個字節(jié)被劃分為前后兩個半字節(jié),分別用來指出MF和當前DF的狀態(tài)。
卡片各種操作的權(quán)限的獲得就是通過這個狀態(tài)的轉(zhuǎn)變來實現(xiàn),該狀態(tài)的取值范圍是0到15,操作的權(quán)限用一個字節(jié)表示,分為左右兩個半字節(jié),其中左半字節(jié)和右半字節(jié)的取值均為0-15(0x0-0xF),可以表示為0xXY,如果當前DF的安全狀態(tài)值V滿足Y<=V<=X的條件,那么就獲得了操作權(quán)限。
比如一個文件的讀權(quán)限是0x52,而寫權(quán)限是0x84;密鑰1的后續(xù)狀態(tài)是0x03,而密鑰2的后續(xù)狀態(tài)是0x05。那么認證密鑰1之后可以文件滿足讀權(quán)限,但是不可寫;認證密鑰2后可以滿足文件的寫權(quán)限,但是不可讀。
如果要把某個權(quán)限設定為可以自由操作,無需認證密鑰,那么可以設為0xF0,這種情況下無論安全狀態(tài)字節(jié)的值V是什么都滿足0<=V<=15的條件。當然如果要把某個權(quán)限設定為禁止,即無論認證多少密鑰都不能滿足權(quán)限,那么可以設定為0x1F,在這種情況下無論S為任何值V都不能滿足小于等于1并且大于等于15的條件。
特別地如果操作權(quán)限為0x0Y(即0xXY中的X=0),則表示需要比較MF下的安全狀態(tài)大于Y。
如果仔細分析了StarCOS的安全機制,可以發(fā)現(xiàn)握奇采用的機制是在StarCOS的基礎上進行的一個改進版本,因為StarCOS可以定義比較模式,也就是StarCOS可以更靈活地定義比較安全狀態(tài)究竟是采用大于、小于還是等于或者不等于的模式。
國內(nèi)另外一些廠商推出的COS多數(shù)借鑒握奇的TimeCOS安全機制,比如明華的所謂SmartCOS,以及復旦的FMCOS。
而航天金卡的PowerCOS則是完全照搬了StarCOS的安全機制。
國內(nèi)的一些應用開發(fā)商和某些行業(yè)標準制定者,在進行系統(tǒng)開發(fā)和行業(yè)標準規(guī)劃的過程中根本沒有去認真閱讀ISO7816的相關(guān)標準,僅把某家廠商的用戶手冊作為唯一的參考,甚至錯誤地認為全世界所有的COS都應該是這樣的,實在讓人無語!