2015-01-26 25 views
5

bemerkte ich einige sehr seltsame Verhalten auf meinem Smart Cards (NXP J2E145, J3A081, J3C145 mit einem Omnikey 5121 Leser): Ein Stromausfall direkt nach Javacard-Methode aufrufenJavacard - Stromausfall während der Garbage Collection

JCSystem.requestObjectDeletion() 

beschädigen die Karte: Nach etwa 10% solcher Stromausfälle ist der ATR-Befehl sehr langsam (1000 ms) und ich bekomme keine Antwort auf andere APDUs (Applet-Auswahl, Kartenmanager-Authentifizierung usw.).

Ich weiß, dass das Verhalten von requestObjectDeletion() auf der herstellerspezifischen Implementierung abhängt, so meine Frage ziemlich breit und offen ist ...

ist Müll „in der Regel“ in einer einzigen Transaktion verarbeitet sammeln?

Gibt es eine "offizielle" Empfehlung, requestObjectDeletion() im Falle eines möglichen Stromausfalls NICHT aufzurufen?

Haben Sie ähnliche Erfahrungen mit Karten von NXP?

EDIT:

  • JCSystem.isObjectDeletionSupported() == true auf allen meinen Smart Cards.
  • Wenn Sie mit dem Kartenmanager-Applet einer beschädigten Karte verbinden versucht, berichtet die JCOP Shell in Eclipse IDE dies:

    ATR: 3BFB9600008131FE454F4450204D41502053414D3E

    ATR: T = 1
    jcshell: Unbekannt Probleme mit Terminal. Letzter Terminalfehler: Die Anforderung konnte wegen eines E/A-Gerätefehlers nicht ausgeführt werden.

+0

haben Sie boolean JCSystem.isObjectDeletionSupported() überprüft? –

+0

Ich tat eigentlich nicht, aber der Müllsammler funktioniert normalerweise gut und es wirft keine Ausnahme. Die Karte macht etwas nach dem Aufruf von requestObjectDeletion (das Licht auf dem Lesegerät blinkt) für ungefähr 5 Sekunden und das EEPROM wird gereinigt (ich habe es überprüft). Das einzige Problem ist, wenn ich die Karte mitten in diesem Prozess aus dem Leser ziehe. Dann scheint die Karte manchmal kaputt zu sein. – vojta

+0

Siehe "Bearbeiten", bitte. – vojta

Antwort

4

Nun, ich denke, es könnte ein Implementierungsfehler sein. Im Allgemeinen wird die Speicherbereinigung normalerweise nie benötigt und nie auf Smartcards verwendet. Sie sollten es unter keinen Umständen durch gutes Applet-Design vermeiden. Auf diese Weise kommen Sie nie auf Speicherprobleme, die schlecht für eine Smartcard sind, die einmal in ihrer Lebensdauer installiert wird und für den Rest ihres Lebenszyklus verwendbar sein soll. Garbage Collection dauert sowieso zu lange und vielleicht hat der Programmierer des Kartensystems nicht erwartet, dass dies außerhalb einer sicheren Umgebung geschieht.

+0

Ich rufe Garbage Collector genau einmal während des gesamten Lebenszyklus meines Applets auf. Es ist nicht entscheidend für mich, ich könnte es leicht vermeiden. Auf der anderen Seite denke ich, dass alle bereitgestellten Funktionen sicher sein und funktionieren sollten. Smartcards werden vor allem als sichere Token verwendet. Wenn es einen solchen Fehler in NXP-Karten gibt, muss er mit riesigen roten Buchstaben auf der Titelseite seiner gesamten Dokumentation beschrieben werden. Niemand weiß, was mit dem EEPROM nach so einem erfolglosen Müllsammeln passiert ist! Ich habe NXP gefragt und werde ihre Antwort in dem Moment veröffentlichen, in dem ich sie habe. Danke für deine Antwort, Paul! – vojta

+0

@vojta Hat NXP dir geantwortet? Ich habe viele E-Mails geschickt, aber niemand hat geantwortet! –

+0

NXP kommuniziert perfekt. Sie haben immer geantwortet. Ich mache normalerweise ein paar Wochen, aber ich sehe keinen Grund sich zu beschweren. – vojta