Il problema con ciò che chiedi riguarda la condivisione della tastiera con il sistema operativo. Quando una tastiera è collegata a una macchina, il sistema operativo su quella macchina viene informato di ogni evento relativo alla stampa di tasti e di rilascio chiave e il sistema operativo mantiene la conoscenza di quale tasto viene premuto in qualsiasi momento. Per lo scenario di immissione del PIN, non solo è necessario che i tasti premuti vengano inviati alla smart card, ma si desidera anche che lo stesso tasto preme non per essere inviato al sistema operativo.
La tastiera, da sola, non sarà in grado di indovinare se stai per digitare un codice PIN. Si potrebbe immaginare un comando specifico inviato dal computer, che dice alla tastiera: "ora, le pressioni dei tasti devono essere inviate alla smart card, non a me". Ma non ci si fida del computer host (questo è il punto della discussione), quindi non ci si può fidare per l'invio effettivo di questo comando. Pertanto, la tastiera speciale, se presente, dovrebbe avere un interruttore manuale o almeno un LED indicatore che il sistema operativo non può escludere (ad esempio il LED diventa verde quando i tasti vengono inviati alla smart card).
Non saresti alla fine delle tue preoccupazioni, però. Perché quando si utilizza la smart card per eseguire un pagamento, la carta "autentica" l'ordine di pagamento (con alcune operazioni che la banca accetterà come valida, questo potrebbe essere un MAC
oppure una firma digitale ). Devi quindi essere sicuro che ciò che la carta vede e firma è effettivamente l'ordine di pagamento in cui credi. Dato che non ti fidi del computer host, hai bisogno di un display aggiuntivo.
Quando si parla di "host computer potenzialmente ostile", normalmente si finisce per pensare che il lettore di smart card debba avere la propria tastiera e , in modo che possa mostrare tu che cosa stai per firmare, e assicurati che il tuo codice PIN venga assegnato solo alla carta. Idealmente, il lettore dovrebbe eseguire direttamente l'applicazione bancaria (per assemblare l'ordine nel formato corretto). A quel punto, hai un terminale di pagamento , che è un piccolo computer antimanomissione con la propria CPU, RAM, Flash, display, tastiera e lettore di smart card. Il punto importante è che, a parte un terminale di pagamento con funzionalità complete, non otterrai una protezione sostanziale contro un computer host ostile.
Il modo più semplice è affidarsi al computer host, in modo da poter riutilizzare i componenti che il computer host offre già: CPU, RAM, archiviazione, display, tastiera ...