Che tipo di matematica è possibile in una SmartCard?

3

Sono interessato a programmare numeri Prime in un campo elemento su una SmartCard.

Dove posso conoscere gli "input" e gli "output" di una smart card, così posso chiamarla da un'applicazione personalizzata?

La matematica che devo fare è:

 ( (BigInteger * BigIntegerA)/BigInteger) + BigIntegerB

Devo mantenere segreto BigInteger A e B e residente sul dispositivo.

    
posta TLDR 18.02.2017 - 23:32
fonte

1 risposta

2

Una smart card è un dispositivo informatico generale che è Turing completo ; fondamentalmente è un system-on-a-chip (SoC) con una quantità limitata di input / output. Quindi in linea di principio puoi calcolare qualsiasi cosa con una smart card.

L'algoritmo

BigInteger (bignum) tuttavia è complesso su processori così piccoli. Molte smart card sono dispositivi di calcolo a 16 o anche a 8 bit (anche se ARM a 32 bit sta facendo qualche incursione anche lì). Questo è problematico per i calcoli di grandi numeri come la moltiplicazione e la divisione. L'aggiunta può essere facilmente implementata su qualsiasi CPU, ovviamente - è molto semplice estendere le aggiunte a 8 o 16 bit a un'aggiunta N bit per qualsiasi N grande.

Per questo motivo, molte smart card contengono un coprocessore che contiene un moltiplicatore Montgomery, che viene utilizzato principalmente per eseguire la crittografia asimmetrica come i calcoli RSA ed ECC (curva ellittica). La disponibilità di questo coprocessore per calcoli generici dipende dal sistema operativo. Java Card per esempio contiene un'interfaccia bignum opzionale, ma questa interfaccia non è spesso implementata.

Con questo tipo di calcoli è probabile che sia necessario un accesso di basso livello al coprocessore. Se vuoi mantenere segreto A e B, devi anche tenere a mente l'analisi dei canali laterali (DPA e squali con laser: LFI), quindi se vuoi eseguire i calcoli tu sei in pericolo.

Gli ingressi e le uscite possono essere eseguiti utilizzando la normale interfaccia APDU, che è l'impostazione predefinita per quasi tutte le smart card. Potrebbe essere necessario un APDU di lunghezza estesa o concatenato, se i valori di input o output sono sufficientemente grandi (255 byte è l'input massimo predefinito, 256 byte l'output massimo predefinito).

La modalità di programmazione della smart card dipende dal sistema operativo sulla smart card. Java Card + Global Platform è l'impostazione predefinita per la maggior parte delle applicazioni indipendenti dal produttore , ma ha un'API di livello relativamente elevato (spesso estesa con API proprietarie).

    
risposta data 19.02.2017 - 22:28
fonte

Leggi altre domande sui tag