Domanda:
I sistemi operativi mobili forniscono casualità di qualità crittografica?
D.W.
2011-02-15 02:57:05 UTC
view on stackexchange narkive permalink

Quali sistemi operativi mobili forniscono una primitiva per generare casualità di qualità crittografica che le applicazioni possono utilizzare?

Sui sistemi desktop, queste funzionalità sono pervasive. Unix fornisce / dev / urandom. Windows fornisce CryptGenRandom. I sistemi operativi mobili forniscono qualcosa di simile? Forniscono supporto in modo che gli sviluppatori non debbano scrivere il proprio codice per raccogliere l'entropia da più fonti e combinarla per ottenere un seme? (Questo è qualcosa che è soggetto a errori e non banale per gli sviluppatori, quindi sto cercando supporto dalla piattaforma, che si tratti del sistema operativo, delle librerie o di qualcos'altro.)

Gradirei risposte che specificano un sistema operativo mobile, se fornisce o meno questo supporto e, in caso affermativo, qual è l'interfaccia da utilizzare per gli sviluppatori.

Cinque risposte:
Rory Alsop
2011-02-15 03:15:21 UTC
view on stackexchange narkive permalink

iOS su iPhone fornisce l'entropia da tutti gli ingressi standard come accelerometri, bussola, banda base radio, nonché da alcune parti del circuito che rileva le interferenze a tutti i livelli. I bit casuali sono disponibili per gli sviluppatori di app tramite la funzione SecRandomCopyBytes () .

Non ho informazioni su altre piattaforme.

Questa volta ottieni il "cosa avrei detto" +1.
@Graham - mi ha aiutato ho appena cenato con 2 addetti alla sicurezza Apple e il ragazzo che era responsabile dello sviluppo dell'hardware per iPhone domenica ed era una delle domande che ho posto loro :-)
@Rory, grazie per il commento. Devo confessare di aver trovato la tua risposta un po 'ambigua. IOS espone allo sviluppatore un'interfaccia facile da usare per ottenere numeri casuali di qualità crittografica? (ad esempio, raccogliendo tutta questa entropia, combinandola per ottenere un buon seme, eseguendola attraverso un PRNG di qualità crittografica, ecc.) O stai dicendo che tutte queste fonti di entropia sono presenti su iOS e uno sviluppatore potrebbe scrivere il suo / il suo codice per fare tutto questo? Se iOS lo fornisce, sai quale interfaccia possono utilizzare gli sviluppatori per ottenere numeri casuali di qualità crittografica?
@D.W. Non conosco i dettagli ma andrò a chiedere e ad aggiornare il mio post quando lo saprò.
In iOS, l'API Certificate, Key e Trust Services fornisce servizi di crittografia, ma non primitive crittografiche di basso livello come numeri forti casuali. L'API CDSA completa disponibile in OSX sì, ma su iPhone dovrai fare il fai-da-te o rendere felice Thomas Ptacek e non implementare Crypto.
Su iOS si utilizza la funzione SecRandomCopyBytes () per ottenere numeri casuali crittografati da / dev / random. Non puoi accedere direttamente a / dev / random.
Sì, sembra anche che alcuni degli input siano smussati nel circuito prima di essere inseriti in / dev / random, quindi c'è un po 'meno casualità di quanto ci si potrebbe aspettare.
@RoryAlsop Ho cercato di trovare una fonte definitiva (leggi: Apple) che dica per certo che accelerometri, bussola, banda base radio, ecc. Contribuiscono all'entropia. La documentazione di "SecRandomCopyBytes ()" non menziona nulla di simile. Puoi dirmi dove l'hai letto?
Non l'ho letto. Come ho detto nel mio primo commento sopra, era direttamente dagli sviluppatori hardware di Apple.
Thomas Pornin
2011-02-15 03:32:31 UTC
view on stackexchange narkive permalink

Android fornisce java.util.SecureRandom nella sua API basata su Java, che dovrebbe essere un PRNG crittograficamente sicuro, alimentato da qualsiasi cosa la piattaforma di base fornisca come sorgente di robusta alea. Android è basato su un kernel Linux, quindi è probabile che ci sia un / dev / urandom di qualche tipo.

Allo stesso modo, Maemo di Nokia e il suo il successore MeeGo, essendo basato su Linux, offre un / dev / urandom .

/ dev / urandom sembra essere lì su Android, ma stranamente java / org / apache / harmony / security / provider / crypto / SHA1_Data.javasays: "/ dev / random sembra essere vuoto su Android". Suggerisco alcuni veri test. Ed ecco il documento per: [SecureRandom | Sviluppatori Android] (http://developer.android.com/reference/java/security/SecureRandom.html)
SecureRandom di Android risulta non essere così sicuro. http://www.theguardian.com/technology/2013/aug/15/google-android-bitcoin-securerandom-vulnerability
Questa sostituzione drop-in dovrebbe essere utilizzata per correggere SecureRandom in qualsiasi applicazione che si basi su un RNG appropriato: http://android-developers.blogspot.de/2013/08/some-securerandom- Thoughts.html
Questo è super vecchio, ma Android fornisce l'accesso sia a `/ dev / random` che a` / dev / urandom`.
user185
2011-02-15 18:05:07 UTC
view on stackexchange narkive permalink

Il sistema operativo Blackberry fornisce net.rim.device.api.crypto.RandomSource alle app firmate. Raccoglie casualità da varie fonti sul dispositivo, proprio come iOS RNG. Nota che il pacchetto crypto contiene anche varie classi PRNG, che non sono crittograficamente casuali.

L'inizializzazione del dispositivo richiede che l'utente sbatta il pugno contro la tastiera in modo casuale per un po '.
user185
2011-02-16 22:00:47 UTC
view on stackexchange narkive permalink

Per completare il quadro: Silverlight e XNA offrono entrambi il consueto .NET System.Security.Cryptography, che include RNGCryptoServiceProvider. Pertanto quella classe può essere utilizzata su Windows Phone 7. La documentazione dice che questo offre una forte casualità crittograficamente, ma non spiega come ciò sia garantito.

D.W.
2011-02-17 00:42:21 UTC
view on stackexchange narkive permalink

Symbian Mobile OS fornisce anche un RNG di qualità crittografica, come descritto qui.

Grazie a John Kemp, che ha fornito queste informazioni.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...