2015-05-07 58 views
0

我正在研究一個Java Card應用程序,其中我們的要求是在卡中保留一些靜態數據和餘額。Java Card中的兩個OwnerPIN對象

爲了安全起見,我想讓OwnerPIN的2個對象。一個目的是用於終端認證(即,終端需要發送8個字節的數據來認證自己),另一個對象是用於用戶認證(即用戶需要輸入4位數的PIN來認證他們自己)

只有在兩個認證都是成功的,我們可以讀取數據或更新餘額。

或者是否有任何其他建議如何實施卡上的安全以避免被盜?

在applet開發過程中,是否還有選擇專有類和指令字節的指導原則?

+0

在applet開發過程中選擇專有的類和指令字節時是否有任何指導原則 - 我不明白...你能用其他的語言解釋嗎? – vojta

+0

我的意思是,我可以爲類/ INS BYTE選擇任何值,如0xa0或0xc0或0x44,等等.... ????? – Arjun

+0

PIN用於基於知識的身份驗證。我不會推薦它用於終端認證,因爲簡單的線路嗅探器可能會造成嚴重問題。請使用爲此目的設計的質詢 - 響應測試。 – guidot

回答

3

對於用戶認證,OwnerPIN當然是一種好的途徑(有可選的課程,但OwnerPIN提供了安全特性(例如撕裂保護),否則您必須手動實施)。

對於終端身份驗證,沒有什麼能阻止您使用基於OwnerPIN實例的方法。但是,根據您的安全要求,您可能希望選擇某種形式的相互身份驗證,而不是簡單的PIN碼。如果終端只是發送一個PIN碼(特別是以純文本形式),攻擊者可以簡單地截獲該PIN碼(在發送到卡上時),然後使用發現的PIN碼創建他們自己的(惡意)終端。

關於類和指令字節(特別是關於PIN碼驗證等標準操作),我建議你堅持標準。 ISO/IEC 7816-4爲這些標準操作定義了許多指令。

+0

其實我需要在單獨的命令{一個存儲PAN命令,存儲名稱的另一個命令)中存儲PAN,NAME等數據。我可以在這裏選擇0x12,0x14或0x16作爲INS嗎?爲我的目的選擇任何INS字節是否有任何問題? – Arjun

+0

對於INS,您可以選擇幾乎任何您想要的值。但是,正如我上面已經寫過的那樣,我強烈建議您閱讀ISO/IEC 7816-4,以便了解哪些標準格式已經存在。通常不需要重新發明輪子。 –

+4

由於ISO 7816-3中的規範,INS代碼6x和9x無效;他們*可能*工作,但絕對不推薦實際部署。 – guidot