La generazione di numeri casuali utilizzando una fotocamera per smartphone è una buona idea?

39

Perdona la mia ignoranza sull'argomento, ma desidero sapere di più e porre domande (stupide) in un modo. Stavo leggendo link e questa idea mi è venuta in mente (prima del pezzo sulle lampade a lava, che potrebbe essere la stessa idea, forse no - ricorda, sono ignorante:)

Considerando quanto segue:

  • Cose come le proprietà atmosferiche e la vita "reale" in generale sono considerate casuali nel vero senso della parola, contano come TRNG.
  • I generatori di numeri pseudo casuali dei computer non sono casuali (da cui lo pseudo) e, a giudicare da tutte le rivelazioni NSA / GHCQ ultimamente, non sono attendibili.
  • Gli smartphone hanno fotocamere sempre più sensibili.
  • Le foto scattate con lo smartphone sono generalmente fatte a mano.

Fare una foto utilizzando uno smartphone e utilizzare i byte del file RAW conta come un buon modo per ottenere rapidamente un numero casuale di grandi dimensioni? La sensibilità e la posizione naturalmente diversa renderebbero anche diverse foto della stessa cosa abbastanza diverse, e le foto sono del mondo reale, rendendole casuali come le cose a cui puntano (prima della perdita introdotta dalla fotocamera).

Se è un buon modo per ottenere un numero casuale grande, ho potuto vedere che sarebbe stato un modo facile e accessibile per Joe medio di generare una chiave. Un ulteriore vantaggio sarebbe che potrebbe essere usato come una chiave, o un numero casuale per una chiave, che il detentore potrebbe riconoscere da vista, e tuttavia potrebbe anche negare fosse una chiave, in quanto è solo una foto.

Infine, dal momento che le forze del mercato e l'aumento della tecnologia significano che più telecamere sensibili diventeranno più diffuse, sarebbe questo un modo per proteggersi contro l'introduzione di difetti intenzionali? Immagino che la scarsa qualità della fotocamera venga notata rapidamente e possa essere facilmente testata (l'articolo collegato ha fornito un esempio di come gli esseri umani sono bravi a testare visivamente le cose) - e sarebbe una notizia che danneggerebbe l'adozione di un modello (successo a Mela almeno una volta, non sono sicuro se questo metta la gente fuori però). Quindi, le forze di mercato potrebbero lavorare contro l'introduzione di difetti.

Se questo è stupido, per favore dì perché (cerca di essere gentile :) e indicami una risorsa per approfondire la mia conoscenza. Se non lo è, scriverò un'app per farlo:)

Modifica:

Grazie a tutti quelli che hanno risposto o commentato, mi hanno fornito alcuni spunti e altre cose da considerare e esaminare.

    
posta Iain 14.09.2013 - 12:31
fonte

4 risposte

38

Utilizzare una videocamera come sorgente casuale è una buona idea (non nuova, ma comunque valida). Tuttavia, dovresti farlo correttamente: scatta la foto, poi cancellala con una funzione di hash crittografica , ad es SHA-256. Quindi utilizza l'output come seme per un PRNG crittograficamente sicuro per generare il numero di byte casuali necessario.

L'utilizzo del file size produrrà solo pochi bit di entropia dalla tua immagine: se un'immagine tipica si comprime in una dimensione intorno, ad esempio, a 2 MB, più o meno 128 kB in media, quindi otterrete al massimo 18 bit di entropia dalle dimensioni. Con una funzione hash, raccogli tutta l'entropia che c'è nella foto stessa, fino al limite interno della funzione hash (circa 255 bit per un output a 256-bit), che va ben oltre ciò che è necessario per tutti i realistici scopi.

Una singola foto dovrebbe contenere molta entropia, a meno che l'output della videocamera non sia coperto in qualche modo e l'immagine sia uniformemente nera. Una parola di avvertimento, però: se l'hash della foto è usato come un segreto (e questo è il caso se vuoi usarlo come seme per un PRNG per produrre le chiavi), allora quella foto deve rimanere confidenziali: cancellarlo, ma mai lasciarlo scrivere come file nella memoria Flash del telefono. La foto dovrebbe essere ottenuta solo in RAM, hash e quindi scartata. Non so quali API per le applicazioni di acquisizione foto hanno in un tipico telefono; sembra probabile che tu possa ottenere la foto senza colpire Flash in alcun modo, ma ti invito a controllare.

    
risposta data 14.09.2013 - 15:07
fonte
9

Scattare una foto utilizzando uno smartphone e utilizzare i byte del file RAW conta come un buon modo per ottenere rapidamente un numero casuale grande?

In and of itself, no. Digital cameras are designed to capture signal rather than noise, so both the dynamic range and palette compression are designed to fit optimal human vision; not uniform noise distribution. While a RAW file image is a good idea, it will need to bypass the camera's firmware as the firmware "helps" by doing a lot of this image optimisation on the chip - the data fed into the operating system might have already been optimised and cleansed according to various criteria.

But if you can directly use the CCD sensor and tune it for maximum noise (and minimum signal) within a lightless container - a decent noise source can be created.

Il detentore poteva riconoscere da vista, eppure poteva anche negare che fosse una chiave?

Sadly no, unless the key isn't the whole image but instead a steganographic data stream embedded within the image - as a random image will look, well, random. Which would raise questions in itself for a suspicious attacker.

Altre fotocamere sensibili ... sarebbe questo un modo per proteggersi contro l'introduzione di difetti intenzionali?

There are three different things to consider with "more sensitive" cameras and market forces:

  1. For customers this means more megapixels; which is an improvement in the bandwidth of the sensor but says nothing about its inherent entropy (or signal-to-noise ratio).
  2. For customers "more sensitive" can mean more responsive to varying light conditions. This means more image processing with the intent of reducing sensor noise and artefacts.
  3. People and hence market forces tend not to be aware of how good humans are at matching patterns and how bad humans are at detecting random noise.
    • I could manipulate the values of pixel integers in a way that would almost completely subvert their use as a cryptographic random number source without it being apparent to the user's eye. For example, consider a greyscale image of 10x10 pixels with range of 256 values. I could halve or worse (I don't recall the exact maths) the level of entropy by simply rounding each pixel value to the nearest even value. The human eye wouldn't be able to detect such minute differences.

Ulteriori pensieri

Il pubblico potrebbe certamente beneficiare di un'applicazione TRNG per un telefono cellulare. I telefoni cellulari hanno una vasta gamma di periferiche utili per la raccolta del rumore. La limitazione è se queste fonti sono accessibili a un basso livello di astrazione.

Dimostrare che una sorgente analogica è casuale è piuttosto difficile ; una sorgente analogica elaborata da un meccanismo intrinsecamente digitale ancora di più. Ogni chip della fotocamera potrebbe essere leggermente diverso (anche su una monocultura iPhone), quindi un'applicazione TRNG dovrebbe avere queste complesse metriche statistiche integrate in modo che possa "sintonizzarsi" per ogni telefono.

Esiste un comprensibile antagonismo verso il "rolling your own crypto" e la creazione di un RNG è simile; ma se non esiste una soluzione ben studiata pubblicata per il dominio del problema specifico, allora un'applicazione open-source è valida come un'altra per avviare il processo di revisione tra pari.

    
risposta data 14.09.2013 - 13:42
fonte
5

È vero casuale, ma ovviamente un po 'eccessivo. Dato che avviare la fotocamera e scattare una foto è un'operazione piuttosto lenta, e l'utente sarebbe stupito se scoprisse che la fotocamera si accende e si spegne costantemente.

Gli smartphone hanno molti altri sensori che puoi utilizzare, come l'accelerometro, sensore di luce ambientale, credo che questi siano molto più efficienti e, si spera, più efficienti dal punto di vista energetico. Penso di aver letto da qualche parte che la CPU usa il suo termistore per acquisire dati casuali veri, questa è una grande idea.

    
risposta data 14.09.2013 - 17:23
fonte
2

Oltre alla videocamera e al microfono, abbiamo un'altra fonte di entropia: l'utente o, più specificamente, le timestamp delle azioni dell'utente.

Quindi suggerisco di combinare l'immagine stessa, la data in cui è stata scattata e il tempo trascorso dall'avvio del sistema (che è disponibile sulla maggior parte dei sistemi).

    
risposta data 24.04.2014 - 10:55
fonte

Leggi altre domande sui tag