2012-08-16 78 views
0

我有一個Android項目,需要我使用NFC標籤進行橢圓曲線算法的加密/簽名數據。NFC兼容標籤用於橢圓曲線加密

我需要該標籤能夠使用我在外部生成的密鑰對來執行密碼本身。私鑰存儲在標籤上,而不是轉移到Android來執行簽名,這一點很重要。

我還需要寫保護所有標籤,以便數據只有在我簽名時才能寫入。

我希望標籤的形狀因子是圓形的,儘可能小。

從我的研究到目前爲止,它看起來像我必須使用Java卡,但我不確定這一點。

任何人都可以確認我可以使用適當的設備嗎?

回答

3

您需要一些微控制器卡。我從來沒有見過除標準信用卡表格(ID-1)以外的任何其他表格。

Java Card卡當然是一種選擇,例如恩智浦JCOP或金雅拓TOP卡。他們可以在各個地方在線購買。要爲這種卡編寫小程序,需要您可以訪問該卡的SDK(通常僅在NDA下可用)。 Java Card編程與Java編程完全不同,而且它需要ISO 7816-4和(在你的情況下)加密等知識。

另一種可能性可能是ZeitControl BasicCard。這些卡可以從各種在線智能卡商店和ZeitControl本身獲得(並非所有卡都可以做ECC)。該SDK是免費的,可從ZeitControl website獲得。雖然卡的編程語言需要一些習慣,但是很多通信細節都是自動處理的。如果您需要幫助將BasicCard applet與Android應用程序連接起來,您可以從ZeitControl請求更多信息(當我聯繫他們時,這些信息非常有用)。不過,這並不太複雜。

+0

使用隨Java卡類型提供的SDK可能是開發applet並讓它在該卡上運行的最簡單方法,但我不會說這是一個困難的要求。如果你有一個標準的JDK,來自Sun/Oracle的免費Java Card開發包,一些導出文件和全球平臺密鑰,那麼有(命令行)工具可以完成工作。 – martijno 2012-08-16 14:34:50

+0

@martijno問題在於Oracle Java Card SDK不包含使用所有加密基元的模擬器。這意味着調試應用程序很困難。要進行適當的調試,您需要供應商特定的工具。這也有助於這些工具通常爲您設置環境(適用的API級別等)。 – 2012-08-17 15:33:11

+0

@owlstead,是的,關於調試和模擬器的好點。儘管如此,在一個套件中開發的編寫良好,經過測試的applet是否可以輕鬆安裝在不同供應商的卡上(如果它支持相同的加密原語集)?如果沒有,Java Card作爲標準有什麼意義? – martijno 2012-08-17 20:30:40