我想寫我的小程序,使其APDU命令和狀態字在我的卡和我的閱讀器之間的傳輸通道中不明確。我的意思是我不希望發送APDU命令和響應以便爲第三方使用純文本。Java卡小程序,安全數據傳輸和安全通道
我想我有兩個選項:
- 選擇我的小程序中的卡上,所有其他的命令後,執行對數據部分APDU的命令加密功能和解密他們的卡上之後分析它們。請注意,我無法使用此方法對整個命令進行加密,因爲結果可能與另一個
SELECT
APDU命令發生衝突,並且卡的SD錯誤地將其識別爲SELECT
命令。是對的嗎?
其框圖:
- 使用SD安全通道:據我所知的安全通道裝置:的整個APDU命令和響應以加密形式(即它們在源(安全域/讀卡器)中加密並在目的地(Secutity域/讀卡器)中解密)是正確的嗎?據我所知SD執行cr yptography方法在這個機制中的作用和我的小應用程序和SD之間的通信是平淡無奇的(下圖),對吧?
- 我必須實現它自己! :)
- 我們不能隱藏命令和來自第三方的響應的所有部分。(我們可以隱藏數據只)
把卡在
SECURED
狀態。由於用戶無法在此狀態下使用純文本APDU命令與卡進行通信(對嗎?),因此他必須使用安全通道將命令發送到我的小程序。對?如果它不正確,有什麼方法可以強制SD僅與Secure Channel協同工作?請任何生命週期,這是(例如OP_READY)的卡,而是在任何APDU命令的接收,檢查CLA部分,看看它是否是安全的發送或不! (可能嗎?安全通道中的
CLA
部分APDU命令和其他命令之間是否有區別?是嗎?)
其框圖:
有沒有其他辦法?
看來,第一個解決方案是不夠的,因爲:
我說得對不對?
現在,假設我想確保我的小程序只適用於使用安全通道傳輸的APDU命令。我想我有兩個選擇了:
有沒有其他辦法?
最後的主要問題:
如何使用SD來與我的小應用程序的安全通信?正如我以爲我必須使用GlobalPlatform類(是嗎?),我看看它的API。我在名爲org.globalplatform.GPSystem
的軟件包中找到名爲getSecureChannel
的方法。我的方式是否正確?我必須使用這種方法嗎?
我知道這可能太長而無法回答,但我確信它不僅爲我澄清了很多問題,而且也爲其他未來的觀衆闡明瞭許多問題。
我很欣賞任何身體在這個問題上爲我闡明任何光。
而一個示例小程序更明顯。
1.這是太多的問題。 2.有些問題不屬於SO 3.這些問題是標準問題,已經解決了很多次4.爲什麼你不試圖解決你的問題,而不是問問所有問題? – 2015-04-06 10:25:11
@PaulBastian 1-你是對的,但我認爲所有這些問題都是針對**一個**問題的。 2-那些與我的SO問題有關。 3-我可以請你把這些問題和答案轉給我嗎? 4-當然,我試圖自己解決它們,但是我做不到。而且,我認爲這個問題也能幫助未來的觀衆,不是嗎? – Abraham 2015-04-06 11:04:07
@Abraham你知道我可以如何將org.globalplatform導入到我的項目中嗎?我認爲它沒有安裝在我的系統上。從哪裏我可以找到並下載它? – MJay 2016-01-06 11:55:57