SCOS - Simple Card Operating System



Update: open-source system GCOS. Siehe Vortrag CCC '99.


---

Chipkarten-OS fuer den PIC16F84. Der Sourcecode ist grade in der Pruefphase bei Leuten wie Lutz Donnerhacke, Wau Holland, Andreas Bogk. Projektiert wurde dieses System, welches OS und Applikation momentan noch vereinheitlicht, fuer den Einsatz in TRONs Cryptofon. Es kann ein 128-Bit IDEA-Key gepeichert werden, welcher gegen unbefugten Zugriff durch eine 32-Bit PIN (8stellig dezimal) gesichert ist. Desweiteren stehen 6 Byte fuer "individual use" zur Verfuegung, der Rest ist momentan erstmal noch fuer eine Copyright-message verbraten. Als Kartenprotokoll kommt T=0 zum Einsatz, da ich durch TRONs abgespeckte Version des T=1 nicht ganz durchgestiegen bin (das "Wie" und "Warum" leuchtete mir nicht ganz ein). Ich verwende lieber ein "ordentlich" implementiertes T=0, als ein abgespecktes T=1, welches miitunter von jedem zweit-besten Chipkartenleser zurueckgewiesen wird. Aktuell ist im Moment die Version SCOS0.1 WHITE F84. Soll heissen: "SCOS Version 0.1 fuer PIC16F84 White-Cards". In Arbeit ist eine Version fuer die Galaxy-Cards zur Unterstuetzung des internen 16kBit EEPROM. Sowohl auch fuer die Karten mit herausgefuehrtem IIC-Bus.

technische Daten von SCOS0.1 WHITE F84:

- OS fuer den PIC16F84 standalone
- speichert einen 128-Bit Key
- ist durch eine 32-Bit (8stellig dezimal) PIN gesichert
- verfuegt ueber 6 byte zur freien Verwendung (ebenfalls gesichert)
- es existiert ein PIN-failcounter mit maximal 3 Versuchen
- der PIN-failcounter wird nach einer korrekten PIN zurueckgesetzt
- T=0 Protokoll, direkte Konvention (0x3B)
- default-PIN: 0x00,0x00,0x00,0x00 = 0000-0000
- ausser dem PIN_VERIFY-Kommando sind alle anderen Befehle im Grundzustand "abgeschaltet"

Kommandos:

PIN_VERIFY 00 20 00 00 04 PIN1 PIN2 PIN3 PIN4
FILE_SELECT 00 A4 00 00 00
GET_RESPONSE 00 C0 00 00 Le
CHANGE_PIN 00 24 00 00 04 PIN1 PIN2 PIN3 PIN4
READ_BINARY 00 B0 P1 00 Le
UPDATE_BINARY 00 D0 P1 00 Lc DATA

P1 = 100xxxxx - xxxxx = SFID (Short-File-ID)
SFID = 1 - 16 byte IDEA-Key
SFID = 2 - 6 byte "individual use" memory

08. Jan. 1999