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