Forum: Mikrocontroller und Digitale Elektronik SmartCard - wer kennt sich aus?


von Zipzap (Gast)


Lesenswert?

Hallo an alle, ich möchte SmartCards benutzen, um Benutzer einer 
PC-Software zu identifizieren:

Karte drin - Benutzer ist identifiziert
keine Karte drin - kein Benutzer identifiziert.

Die normalen Nutzer dürfen also nicht in der Lage sein, so eine Karte zu 
"kopieren" / ich müßte also vor Ausgabe irgendetwas Eindeutiges 
verschlüsselt auf die karte schreiben bzw. brauche eine Karte die einen 
Algorithmus zum verschlüsseln und zurückgeben hat - na eben irgendwas um 
das o.g. Ziel zu erreichen.

Ein bischen habe ich gelesen und gesucht und bin z.B. auf dieses 
dev.-Kit gestoßen:

http://www.cardomatic.de/start.php?development-kits.php?gclid=CKy_puHv6KMCFdgv3wodeTgn3g

(ca. Mitte der Seite)

Vorher will ich aber erstmal verstehen, wie das Ganze funktioniert.. 
viel später soll dann statt PC und Lesegerät mal uC und Lesegerät 
zusammenarbeiten, und ich würde die Karte auch gerne verwenden, um mich 
damit am PC (Windows) anzumelden.

Meine Fragen:

1) Was für eine Sorte "SmartCard" brauche ich bzw. welche gehen auch 
nicht, damit man sie nicht einfach mit einem Lese/Schreibgerät kopieren 
kann?

2) Die PC-Software soll in VB.NET geschrieben werden. Brauche ich eine 
Windows-API, reicht das .Net-Framework oder wird der Kartenleser 
irgendwie "nativ" im Windows unterstützt, wie Tastatur oder Maus?

3) Welche Standards/Sorten von Karten/Kartenlesern sind günstig, weit 
verbreitet und einfach zu handhaben?

Vielleicht kommt ja ganz am Ende ein "SmartCard" Artikel hier in der 
Artikelsammlung raus.. danke vorab schonmal für Eure Hilfe!

von Tek (Gast)


Lesenswert?

Haben soche Karten nicht normal auch ne feste Kartennummer, dann 
könntest Du ja die Nummer mit nem Geheimen Schlüssel(nur deiner Software 
auf dem PC bekannt) verschlüsseln und das Ergebniss in den 
Nutzdatenbereich der Karte schreiben. So kann man die Karte nicht 
kopieren da der Wert im veränderbaren Bereich nur zu der festen 
Kartennummer passt.

von usuru (Gast)


Lesenswert?

Schau Dir die mal an, die kann nicht einfach kopieren:

http://www.reichelt.de/?;ARTICLE=37029
http://www.reichelt.de/?;ARTICLE=37030

von Zipzap (Gast)


Lesenswert?

Das weiß ich eben nicht.. aber im Prinzip würde das ausreichen!

von Zipzap (Gast)


Lesenswert?

@usuru

warum meinst Du, dass man die nicht einfach kopieren kann? Ich hab das 
Datenblatt nicht ganz verstanden.. aber es würde doch ausreichen, wenn 
ich eine zweite Karte genauso programmiere..? Eine eindeutige Nummer ist 
doch nicht drauf, oder?

von Zipzap (Gast)


Lesenswert?

Ach so, falls das jetzt komisch aussieht, die Antwort von 16:51 war für 
TEK gemeint.. :-)

von ---|||--- (Gast)


Lesenswert?

Hier gibts was fertiges:
http://webshop.scmmicro.com/CHIPDRIVE%25AE-MyKey_detail_18_185.html
die passenden Karten:
http://webshop.scmmicro.com/_detail_9_181.html

Die obigen Links von usuru sind reine Memory-Karten.
Hier mal Datenblätter dazu:
http://www.idcardmarket.com/download/sle5528.zip
http://www.idcardmarket.com/download/sle5542.zip
Die lassen sich zwar gegen Veränderung schützen, aber nicht gegen 
Auslesen.

Sicherer wären Prozessorkarten, z.B.: 
http://www.smartcardzone.com/acos3.asp

von Zipzap (Gast)


Lesenswert?

Das "Fertige" finde ich ein bischen unpraktisch, weil ich das gerät am 
PC lassen will, nur die Karte soll ausgetauscht werden (ist da bischen 
unhandlich), Anders gesagt, bei 10 potentiellen Nutzer vom Programm will 
ich nicht 10 Lesegeräte in Form von USB-Sticks mitkaufen müssen.

Also Frage 1 sieht im Moment so aus: Prozessorkarte geht, reine 
Memorykarte geht nicht. Geht noch etwas anderes / gibt es Karten ohne 
Prozessor, aber mit eindeutiger, auslesbarer, unveränderbarer 
Hersteller-Id?

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!

Was spricht gegen Transponder?

Gruss,
Micha

von drabador (Gast)


Lesenswert?

Gibts da im Moment überhaupt welche fertig und gut verfügbar, die noch 
nicht geknackt und damit duplizierbar sind?

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Hallo Zipzap,

ich behaupte mal einfach das ich mich mit der von dir angedeuteten Frage 
auseinandersetzen kann.... Ich entwickel seit mehreren Jahren SDK's für
Smartcards + Reader.

Zum einen must du zwischen den Kartensystemen unterscheiden....

1.) bei den Kartentypen SLE 44xx/55xx (wie von einigen vorgeschlagen) 
handelt es sich um EEPROM Speicherkarten mit PIN Authentifizierung.
Diese Karten verwenden ein 2WIRE/3WIRE Protokoll und können mit einer 
MCARD-API
programmiert werden. EEPROM Speicherkarten bieten eine ziemlich 
begrenzte
Logik, welche sich auf das PIN Management, den Fehlbedienungszähler und 
ggf. vorhandene Write Protection Eigenschaften beschränken.
Diesen Karten fehlt jeglicher Funktionsumfang einer Crypto Engine, da 
diese über keinen Prozessor verfügen.

2.) Die Masterkey Smartcard von SCM ist eine Prozessorkarte vom Typ: 
Payflex
Um diese zu programmieren must du ersteinmal das Security Management 
verstehen bzw. begreifen. Diese Smartcard wird in aller Regel blanko 
ausgeliefert. Das Dateisystem zu der Karte muß also von Dir aufgebracht 
werden. Ich schätze mal ohne grundlegendes Knowhow... brauchst du 
ungefähr 1 Jahr um die Karte mit allen Security Conditions und 
Einstellungen zu beherschen. Gleiches gilt auch für die ACOS Smartcard's

Anmerkung meinerseits:
Die meisten am Markt erhältlichen SDK's sind ziehmlich mager bestückt,
da diese wenig Informationen zur Smartcard und den Internas 
bereitstellen.
Besonders die Terminalansteuerung wird von den meisten SDK's ziemlich 
vernachläßigt... Problem hierbei... Wir haben den Standard PC/SC für 
Prozessorkarten, den CTAPI Standard für Synchrone + Asynchrone Karten, 
den CCID Standard der neueren Terminals...

Stichwort: Smartcard Kopierschutz
Alle EEPROM Speicherkarten können zu 100 % kopiert werden.
Ein READ Protection gibts bei denen nicht, daher kann z. B. jede SLE
vollständig ausgelesen werden und auf eine Blanko SLE kopiert werden.
Lediglich die PIN läßt sich nicht so ohne weiteres kopieren...
Wenn du bei den SLE Kartensystem per CTAPI programmierst, dann ist auch
das PIN Management unter bestimmten Voraussetzungen auslesbar. Defakto 
Sicherheit -> NULL :-)

Das aus meiner Erfahrung sicherste System stellt derzeit die ATMEL 
Smartcard: CRYPTO MEMORY dar. Diese Smartcard bietet eine MUTUAL 
AUTHENTICATION COMMAND, welches eine sichere Authentifizierung zwischen 
Terminal + Chipkarte ermöglicht, also eine Echheitsverifizierung der 
Smartcard durchführt, welche nicht auslesbar ist.

Aus programmatischer Sicht gesehen, stellt sich eigentlich zuerst die 
Frage, welche Karte du verwenden solltest. Aus meiner Sicht, solltest du 
eine Asynchrone Smartcard einsetzen... Damit bist du am flexibelsten in 
der Programmierung, da du direkt auf ein PC/SC aufsetzen kannst, ohne 
das du auf Fremdkomponenten zurückgreifen mußt.

Ich habe für einen Großkunden eine ActiveX/Smartcardsoftware auf Basis 
der CryptoMemory entwickelt welche eigentlich genau den Bereich abdeckt, 
den du zu lösen versuchst...

Wenn du hier Produktunterstützung benötigst, setz dich einfach mit mir 
in Verbindung, wir können das von dir umzusetzende Problem innerhalb von 
3-4 Tagen vollständig lösen !

MfG.
Mario Misic
ProScan Elektronische Systeme
www.smartcardtools.de
info@smartcardtools.de

von Hans (Gast)


Lesenswert?

@Zipzap
Schau mal Pollin Artikelnr: 100975 !

Normalerweise sind die Dies in Chipkarten verbaut und haben eine richtig
nette EAL3 Common Criteria Einstufung. Feine asym. Kryptoeinheit :-)
Für andere kommerzielle vergleichbare Angebote ist das 100-fache 
fällig...

Drin ist Philips (NXP) P8WE5032 und da sollte STARCOS drauf sein.

Wohl bestes Security/Preis Verhältnis, aber es wir das schon erwähnte 
Jahr fällig,
um im Umgang vertraut zu werden (der beste Einstiegslink ist
http://www.wrankl.de bzw. dessen Bücher).

VG,
Hans

von ... (Gast)


Lesenswert?

Zipzap schrieb:
> Das "Fertige" finde ich ein bischen unpraktisch, weil ich das gerät am
> PC lassen will, nur die Karte soll ausgetauscht werden (ist da bischen
> unhandlich), Anders gesagt, bei 10 potentiellen Nutzer vom Programm will
> ich nicht 10 Lesegeräte in Form von USB-Sticks mitkaufen müssen.

Mußt Du auch nicht. Die Karten gibts auch in "groß" und lassen sich auch 
mit anderen Kartenlesern benutzen.

> Also Frage 1 sieht im Moment so aus: Prozessorkarte geht, reine
> Memorykarte geht nicht. Geht noch etwas anderes / gibt es Karten ohne
> Prozessor, aber mit eindeutiger, auslesbarer, unveränderbarer
> Hersteller-Id?

Was sollen das dann für Karten sein?
Naja, die SLE-Karten haben zwar wohl eine eindeutige, auslesbare und 
unveränderbare Hersteller-ID, nur wird halt auch niemand daran gehindert 
genau diese ID auf eine andere Blanko-Karte zu kopieren.

von O. D. (odbs)


Lesenswert?

Letztendlich entscheided in deiner Software an irgendeiner Stelle ein 
Stückchen Maschinencode, ob in die eine Richtung (Benutzer 
identifiziert) oder andere Richtung (Benutzer nicht identifiziert) 
gesprungen wird. Und das lässt sich patchen.

Jeder Benutzer, der direkten Zugriff auf die Hardware des Rechners hat, 
kann dein tolles Karten-System also umgehen.

Also ist ein übertriebener Aufwand an der Stelle eher Fassade als 
wirkliche Sicherheit. Warum machst du das nicht einfach mit Benutzername 
und Passwort?

von frank (Gast)


Lesenswert?

Oliver Döring schrieb:
> Letztendlich entscheided in deiner Software an irgendeiner Stelle ein
> Stückchen Maschinencode, ob in die eine Richtung (Benutzer
> identifiziert) oder andere Richtung (Benutzer nicht identifiziert)
> gesprungen wird. Und das lässt sich patchen.

Das ist aber bei User + PW das selbe in Grün.

> ... Warum machst du das nicht einfach mit Benutzername
> und Passwort?

Z.B. weil eine Karte einschieben schneller geht, als Username + Passwort 
eintippen, die erwähnte spätere Anwendung mit µC garkeine Tastatur hat, 
die User ständig die PWs vergessen. Oder, oder... ;-)
frank

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Oliver Döring schrieb:
> Letztendlich entscheided in deiner Software an irgendeiner Stelle ein
> Stückchen Maschinencode, ob in die eine Richtung (Benutzer
> identifiziert) oder andere Richtung (Benutzer nicht identifiziert)
> gesprungen wird. Und das lässt sich patchen.
>
> Jeder Benutzer, der direkten Zugriff auf die Hardware des Rechners hat,
> kann dein tolles Karten-System also umgehen.
>
> Also ist ein übertriebener Aufwand an der Stelle eher Fassade als
> wirkliche Sicherheit. Warum machst du das nicht einfach mit Benutzername
> und Passwort?

Wie willst du denn einen Patch generieren, bei dem eine 
Authentifizierung
zwischen Terminal + Chipkarte stattfindet ? Das funktioniert absolut 
nicht,
weil der benutzer beim Muthual Authenticate KEINEN Stream erhält.
Der hierbei angestoßene Prozess findet ausschließlich zwischen beiden 
Hardware-Komponenten statt und wird nicht über den Anschluß (USB, 
Seriell, PS/2 usw.) ausgeführt. Der Vorgang ist vergleichbar zu der PIN 
Authentifizierung an Terminals mit Keypad... da kannst du die Eingabe am 
terminal auch nicht patchen -> Absolut nicht auslesebar, somit auch 
absolut sicher...

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Hans schrieb:
> @Zipzap
> Schau mal Pollin Artikelnr: 100975 !
>
> Normalerweise sind die Dies in Chipkarten verbaut und haben eine richtig
> nette EAL3 Common Criteria Einstufung. Feine asym. Kryptoeinheit :-)
> Für andere kommerzielle vergleichbare Angebote ist das 100-fache
> fällig...
>
> Drin ist Philips (NXP) P8WE5032 und da sollte STARCOS drauf sein.
>
> Wohl bestes Security/Preis Verhältnis, aber es wir das schon erwähnte
> Jahr fällig,
> um im Umgang vertraut zu werden (der beste Einstiegslink ist
> http://www.wrankl.de bzw. dessen Bücher).
>
> VG,
> Hans

Du hast vergessen zu erwähnen wo Zipzap den passenden Lötkolben kaufen 
kann um die kontakte zu verdrahten :-) Damit dürfte das Preis/Leistungs 
Gefälle wohl dahin sein.

Gruß
Mario

von O. D. (odbs)


Lesenswert?

> Der Vorgang ist vergleichbar zu der PIN
> Authentifizierung an Terminals mit Keypad... da kannst du die Eingabe am
> terminal auch nicht patchen -> Absolut nicht auslesebar, somit auch
> absolut sicher...

"Absolut sicher", jaja... Seriöse Entwickler machen eine solche Aussage 
niemals.

Der TO wollte doch Benutzer einer PC-Software identifizieren, die in 
VB.NET geschrieben werden soll. Und wie teilt das Karten-Terminal der 
Software mit, dass ein Benutzer absolut sicher identifiziert wurde und 
wie dieser heißt? An der Stelle kann man immer ansetzen, wenn die 
Software lokal ausgeführt wird.

von Zipzap (Gast)


Lesenswert?

wow.. jetzt hab ich erstmal zu lesen! :-)

Aber ehrlich mal: Ein Jahr Einarbeitung? Ich will doch - laienhaft 
ausgedrückt - nur folgendes:

Ich versehe die Karten mit einer laufenden Nummer (die man nicht direkt 
auslesen kann). Dann sende ich an die Karte einen String, den sie unter 
Einbeziehung dieser Nummer verschlüsseln soll und zurückgeben - wenn 
mein PC das Gleiche herausbekommt (oder in einer vorher ausgerechneten 
Tabelle stehen hat) - ist es ok, sonst eben nicht.

Vielleicht hab ich auch einen Denkfehler, aber ich hatte frühe mal 
Rockey-Dongles im Einsatz, die irgendwie so funktioniert haben...

oder ich hab nen Denkfehler, oder die Welt funktioniert einfach anders.. 
:-)

von O. D. (odbs)


Lesenswert?

Zipzap,

du kannst das so machen, brauchst dann allerdings eine Karte mit 
Prozessor.

Da aber sowohl der Algorithmus zum Verschlüsseln als auch die Tabelle 
mit den vorab berechneten Werten in deinem Programm stehen wird, kann 
jeder, der die ausführbare Datei deines Programmes lesen kann, den 
Schutz umgehen. Er könnte sich dann nämlich eine passende Karte 
nachbauen.

von Hans (Gast)


Lesenswert?

>Ich versehe die Karten mit einer laufenden Nummer (die man nicht direkt
>auslesen kann). Dann sende ich an die Karte einen String, den sie unter
>Einbeziehung dieser Nummer verschlüsseln soll und zurückgeben - wenn
>mein PC das Gleiche herausbekommt (oder in einer vorher ausgerechneten
>Tabelle stehen hat) - ist es ok, sonst eben nicht.

Es kommt immer darauf an, wieviel Sicherheit man haben moechte...
Im Smartcard Business herrschen "verschaerfte Anforderungen" ;-)

Echte "Freaks" koennen (ich uebertreibe mal hie und da..)
- aus dem Stromverbrauch den Schluessel auslesen
- aus dem differenziellen Stromverbrauch den Schluessel auslesen
- aus den Laufzeiten fuer Choosen-Plaintext Eingaben den Schluessel
  herausbekommen
- aus gezielten Stoerungen des Chips (mit "Amateur-Hausmitteln")
  Bits umkippen lassen und den Schluessel auslesen
- aus der Struktur des Chips den Schluessel auslesen
- den Chip schichtweise abtragen und den Schluessel (und
  "geheime" Kryptoalgos) auslesen

Als Gegenmassnahmen gibt es eine Reihe patentierter Tricks...

Quellen:
-CCC-Kongresse, dedected.org, google
-Power Analysis Attacks, Mangard, Oswald, Popp, Springer

>Vielleicht hab ich auch einen Denkfehler, aber ich hatte frühe mal
>Rockey-Dongles im Einsatz, die irgendwie so funktioniert haben...

Bist Du sicher, dass der Dongle sicher ist? Dafuer gibt es
die EAL Pruefungen, bei denen unabhaengige Labors die angepriesene
Sicherheit unabhaengig pruefen bzw. geprueft haben...

>oder ich hab nen Denkfehler, oder die Welt
>funktioniert einfach anders.. :-)

Naja, die Welt ist differenzierter.... und die Ansprueche
verglichen zu frueher hoeher und im Kundengeschaeft eine Tendenz
sich nach allen Richtungen hin von Anspruechen freizustellen,
aber minimal "state-of-art" zu verwenden :-) ;-)

VG,
Hans

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Hallo Oliver,
dir scheint der Background zur Smartcard Konfiguration vielleicht nicht 
ganz geläufig zu sein. Bei manchen Prozessorkarten... lassen sich 
Herstellerseits verschiedene Authentifizierungsmechanismen innerhalb der 
Kartenkonfiguration setzen. Ich rede jetzt nicht von den Kartenpin's...

So kann ich im Falle einer Crypto Memory Smartcard die Access Conditions 
so setzen, das beim Connecten der Smartcard automatisch das Muthual 
Authenticate auszuführen ist. Dazu bedarf es keiner einzigen Codezeile 
mehr im Frontend (z. B. VB.NET), welche du gerne manipulieren möchtest.

Du könntest zwar den Connect Befehl manipulieren, aber damit wäre auch 
der Zugriff auf die Smartcard hinfällig bzw. würde nicht ausgeführt.

Beispiel: Ich habe eine Smartcard mit 3 Zonen

Zone 0: Read/Write Only without PIN
Zone 1: Read/Write with PIN
Zone 2: Read/Write with PIN and Authentication (Mutual Auth.)

Beim Connecten der Smartcard auf Zone 0+1 findet keine relevante 
Echtheitsüberprüfung der Smartcard statt. Hingegen bei Selektierung der
Zone 2 muß die Smartcard (nicht der Anwender) sich gegenüber dem 
Terminal als Echte Karte authentifizieren. Bei den hier angestoßenen 
Prozess tauschen Smartcard + Terminal untereinander Informationen aus 
(Session- u. Authentication Keys). Dieser Vorgang findet ausschließlich 
zwischen diesen beiden Hardwarekomponenten statt und verläßt diese 
nicht, da ist also nix, was sich ggf. abhorchen ließe, bzw. nach außen 
dringt.

Sollte das Authentication zwischen beiden Komponenten scheitern, wird 
auch ein Zugriff auf die Smartcard bzw. die hiervon betroffene Zone 
nicht möglich sein. Daraus resultiert... Nicht erfolgreiche 
Selektierung, = fehlerhafte Smartcard, was eigentlich damit auch deine 
Frage beantwortet, wie das Kartenterminal der Anwendung mitteilt ob die 
Identifizierung
erfolgreich verlief oder nicht. Wenn das Authentication erfolgreich 
verläuft, wäre auch damit die Echtheit der Smartcard bestätigt und der 
Zugriff auf die hiervon betroffe Zone möglich.

Du könntest nun versuchen die Smartcard 1:1 zu kopieren und dennoch 
würde es nicht funktionieren, da dir weder die zur Laufzeit benötigten 
Session- noch die Authentication key's bekannt sind, welche unter anderm 
auch den LOT History Code der Karte abhängig sind (Serialisiere ID), 
welcher Herstellerseits kein zweites mal existiert.

Und daher kann ich als seriöser Entwickler, derzeit auch ohne weiteres 
schreiben, das diese Karte mit eine der sichersten ist, die offen am 
Markt erhältlich ist und nach jetzigem Stand der Technik mit den 
höchsten Sicherheitsstandard bietet.

Aber ich gebe dir natürlich recht, das man im Frontend durchaus sagen 
könnte, die Karte wäre echt, indem ich in der Einsprungadresse der 
hiervon betroffenen Abfrage einen Patch einbaue der mich umleitet. Wäre 
nur dann das Problem... das keine Daten da wären die man auswerten 
könnte....

MfG.
Mario

von O. D. (odbs)


Lesenswert?

> Aber ich gebe dir natürlich recht, das man im Frontend durchaus sagen
> könnte, die Karte wäre echt, indem ich in der Einsprungadresse der
> hiervon betroffenen Abfrage einen Patch einbaue der mich umleitet. Wäre
> nur dann das Problem... das keine Daten da wären die man auswerten
> könnte....

Hallo Mario, genau darum geht es doch.

Du kannst da noch so mit tollen Begriffen um dich werfen und dein System 
anpreisen... Das nützt alles nichts, weil es hier um eine simple 
Benutzer-Authentifizierung an einer PC-Software geht. Da gibt es keine 
Daten die man auswerten könnte, außer einer Benutzer-ID und der 
Information, ob eine gültige Authentifizierung vorgenommen wurde oder 
nicht.

Und die kommt auf einer physikalischen Schnittstelle rein, welche man 
immer emulieren kann, um der Software einen bestimmten Benutzer 
unterzuschieben.

Jetzt sag bitte nicht, man könnte die Kommunikation zwischen dem PC und 
dem Kartenterminal verschlüsseln...

Die einzige seriöse Aussage wäre, dass man für eine lokal ausgeführte 
PC-Software keine sichere Authentifizierung hinbekommt.

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Hallo Oliver...

Die Aufgabenstellung lautete:

Karte drin - Benutzer ist identifiziert
keine Karte drin - kein Benutzer identifiziert.

Die normalen Nutzer dürfen also nicht in der Lage sein, so eine Karte zu
"kopieren" / ich müßte also vor Ausgabe irgendetwas Eindeutiges
verschlüsselt auf die karte schreiben bzw. brauche eine Karte die einen
Algorithmus zum verschlüsseln und zurückgeben hat - na eben irgendwas um
das o.g. Ziel zu erreichen.


Die Frage von Zipzap bezieht sich eigentlich nicht auf mögliche Angriffe 
auf das Frontend, welche per Reverse Engineering und dessen was damit 
theoretisch gesehen möglich ist, sondern es geht um immer noch um o. a. 
Anforderung. Also um mögliche Vorschläge oder Empfehlungen !

Zum Thema Kopierschutz bietet sich halt das von mir beschriebene 
Verfahren bestens an. Ich kenne bis dato noch keine bessere Alternative 
als über das Muth Auth. die Authentität der Karte zu prüfen.

Vielleicht wird dein nächster Beitrag ein wenig produktiver... wir reden 
hier nicht über eine simple Eingabemaske für Benutzername und Password 
wie du's weiter oben vorgeschlagen hast... Höchst unprofessionel -> Da 
freut sich jeder Keylogger :-) und das auch ohne Patch

Gruß Mario

von Hans (Gast)


Lesenswert?

>Die einzige seriöse Aussage wäre, dass man für eine lokal ausgeführte
>PC-Software keine sichere Authentifizierung hinbekommt.

Wenn man mal davon absieht, dass viele Firmen dazu uebergegangen
sind, Appliances anstatt SW zu verticken um dort Manipulationen
(auch vertraglich) zu erschweren bzw. die Services/Server ins
eigene RZ zu stellen, gaebe es theoretische Methoden genau
zu kontrollieren, was auf dem Rechner laeuft und ob er manipuliert
wird:

Dazu muesste aber ab dem Stromeinschalten ein Sicherheitssystem
(z.B. TPM) laufen, was nur authorisierte (fehlerfreie) BS bootet, das BS
nur authoriserte (fehlerfreie) Programme ausfuehrt. Das ist bei
Spielekonsolen versucht worden... m.E. mit maessigem Erfolg.

Ein Sicherheitssystem ist nur so stark wie das schwaechste Glied...

Die Benutzerauthenisierung ist eines davon, unter anderem weil
ich annehme, dass es da auch um (Benutzer-)Lizenzzahlungen geht
und da ist ein gutes gerichtlich verwertbares Authentiserungskonzept
hinsichtlich der nachweisbaren Benutzer irgendwie fallentscheidend...

VG,
Hans

PS: Sorry wegen der Rechtschreibung, ich hab' leider nur eine englische
Tastatur ;-(
PPS: ich arbiete in einer Applianceloesung-orientierten Firma
und an die Leistungsfaehigkeit der HW ist die Hoehe der Lizenzzahlung
gekoppelt...je mehr Benutzer desto lahmer wird die Kiste, desto
schneller wird das groessere Modell ($$) genommen... das kommt
auch vielen Firmen entgegen, weil benutzerbasierte Lizenzierung
macht nur Stress ;-)

von O. D. (odbs)


Lesenswert?

Man sollte bei Sicherheitsfragen immer das System als ganzes sehen. Die 
Anforderung "Karte soll nicht kopiert werden können" ist sehr spezifisch 
und nützt wenig, wenn es einfache Umwege gibt, die mit der Karte nichts 
zu tun haben.

Dazu müsste Zipzap genauer beschreiben, was er mit seiner Maßnahme 
eigentlich schützen will und wie groß ein möglicher Schaden wäre.

Die vorgeschlagenen Chipkartentechnologie mit einem Jahr 
Einarbeitungszeit ist jedenfalls so, als würde man jemandem eine 
High-End-Tresortür als Haustür installieren, während nebenan im 
Erdgeschoss ein Fenster offensteht.

Wenn man sich die spektakulären Hacks der letzten 10, 20 Jahre anschaut, 
dann geht es ganz oft um diese Fenster nebenan...

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Ein solch offenes Fenster bieten manche Anbieter bereits von Hause aus 
in ihren Chipkarten an... (z. B. AT88SC1608), hat eine Backdoor 
Eigenschaft, mit dem sich die Sicherheitseinstellungen umgehen lassen...

Eine spezielle Serie der SLE4428 hat einen undokumentierten Fehler 
innerhalb der PIN Abfrage, welche auch bei falscher PIN einen 
Schreibzugriff ermöglicht...

Da gibts genug offene Fenster :-)

MfG.
Mario

von Zipzap (Gast)


Lesenswert?

Also gut, ich präzisiere mal die Anforderungen:

Stellen wir uns einen durchschnittlich begabten PC-Benutzer vor. Der 
will das Sicherheitssystem mit der Karte umgehen und einem Mitarbeiter 
"etwas anhängen".

Schritt 1) Karte vom Mitarbeiter "unbemerkt kurz ausleihen"
Schritt 2) Er besorgt sich im Internet Software für den Kartenleser (der 
ja auch schreiben kann) und kopiert damit die Daten auf der Karte -> mit 
der Kopie soll dann keine Autentifizierung möglich sein.

Natürlich kann man das (lokal ausgeführte) Programm analysieren, die 
Stelle suchen, wo das Lesegerät angesprochen wird etc., aber das traue 
ich dem "Normalbenutzern" eher nicht zu bzw. so sicher muß es nicht 
sein.

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Selbst der durchschnittlich begabte User hat eigentlich überhaupt keine 
Chance mit einer entwendeten Karte sich eine Kopie anzulegen.

Weil... Gute Prozessorkarten erkennst du daran, dass die zur Userzone
auch über eine Securityzone verfügen, in welcher die Konfiguration der
gesamten Karte abgebildet wird.

Dein Datendieb müßte also zuerst einmal die Security FUSES der Smartcard 
unlocken, was mit einer gewöhnlichen Software, wie man Sie im Internet 
findet überhaupt nicht funktioniert. Es gibt keine Anwendungen im Netz, 
die diesbezüglich Hilfestellung leisten.

Wenn der Aussteller der Karte seine Security Zone mit der werkseitigen 
Transportpin beibehält, hätte man einen minimalen Ansatz um die Access + 
Password Register auszulesen.

Verfügt die Karte über einen Supervisior Mode, könnte man theoretisch 
mit der Transportpin auch auf das PIN Management der Security Zone 
zugreifen,
sofern der Kartenausgeber diese nicht geändert hat. Damit hätte man 
zumindestens die PIN's für Read/Write Prozesse + Zugriff auf den 
Fehlbedienungszähler. In diesem Fall könnte man mit der Originalkarte 
durch die PIN's alle Zonen auslesen und für ein Duplikat protokollieren.

Ist die Smartcard durch das PER FUSES gelockt, ist ein Zugriff auf die 
Authentication + Session Keys nicht mehr möglich. Somit scheitert dein 
Kartendieb spätestens an dieser Stelle.

Werden die Auth+Session Keys mit der Uniqe-ID der Karte (LOT History) 
verknüpft, besteht eigentlich überhaupt keine Chance einer 1:1 Kopie !

Du könntest zudem auch eine 2 Faktoren Authentifizierung einbeziehen...

-> Read/Write with PIN and Authentication

Damit müßte dein Kartendieb auch noch die persönliche PIN des 
Karteninhabers kennen um einen halbwegs erfolgreichen Angriff 
durchzuführen...

Es gehört schön ein massives Backgroundwissen dazu eine Kartenkopie 
erfolgreich zu erzeugen und auch das funktioniert auch nur ggf. dann, 
wenn der Kartenausgeber die Securityzone aus Unwissenheit nicht 
vollständig absichert, bzw. das locken der Security FUSES ignoriert.

Fazit: Mit einer asynchronen Smartcard bist du eigentlich fast immer auf 
der sicheren Seite.

Gruß
Mario

von Zipzap (Gast)


Lesenswert?

Danke Mario, also ich lese heraus, ich brauche eine "asynchrone 
Smartcard"

welche der o.g. sind das bzw. wie erkenne ich sie, wenn ich welche 
kaufen will? Sind in dem o.g. dev.-Kit welche dabei?

Ja und dann brauche ich noch ein möglichst einfaches 
VB.NET-"Kochrezept", wie ich die Seriennummer unterbringe (sofern sie 
nicht schon bei der herstellung drauf ist) und wie ich auf die Karte 
zugreife.

Ich hoffe, in dem Dev.-Kit ist das alles drin / werde später da mal 
anrufen.

von Mario M. (Firma: ProScan Elektronische Systeme) (proscan)


Lesenswert?

Poll dir die technischen Informationen der einzelnen Smartcards
und schau dir die Security Features hierzu an.

Du kannst auf Kartensysteme zurückgreifen, welche ein
T=0 Protokoll bzw. T=1 Protokoll unterstützen. Das bezieht sich auf
asynchrone Karten.

Wird ausschließlich 2WIRE, 3WIRE angegeben, handelt es sich um eine rein 
synchrone Karte.

Wenn T0 u./o., T1 + 2WIRE angezeigt wird, handelt es sich um asynchrone 
Karten, bei denen im erstzugriff ein asynchrones Protokoll erwartet wird 
und dann eine interne umschaltung nach dem connecten auf das schnellere 
2Wire erfolgt. Das ist z.  B. bei der CryptoMemory der Fall.

Bei den einzelnen SDK's solltest du eigentlich Beispielprojekte 
vorfinden, welche die jeweiligen Fallbeispiele dokumentieren.

Das SDK sollte folgende Beispiele bereitstellen...

1.) Initialisierung des Terminals + Verbindungsaufbau zur Karte.
Dies kann z.b. per PC/SC o. CCID erfolgen.
Fallbeispiele, welche den Zugriff (Read, Write, Pin Auth) dokumentieren.

2.) Eine ausführliche Beschreibung der Command APDU zur Smartcard sollte 
vorhanden sein. Insbesondere zur Kartenkonfiguration. Hierzu ist es von 
Vorteil, wenn du dich mit der ISO-7816/4 befasst. Ebenfalls hilfreich 
ist die MTK Spezifikation, welche eigentlich den APDU's Aufbau mit allen 
möglichen Parametern für Terminal/Smartcard dokumentiert...

In der Regel wirst du dich egal für welches SDK du dich entscheidest mit 
eine engl. sprachigen techn. Beschreibung zur Smartcard herumschlagen 
müßen.

Wie gesagt, läßt du Dich darauf ein, steht dir ein umfangreiches Studium 
bevor, was je nach Aufwand sehr zeitintensiv sein kann.

Gruß
Mario

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.