Fattibilità computazionale della ricerca di "buoni collegamenti" del seguente formato

4

Recentemente mi sono imbattuto in questo e sto verificando qui per vedere se ciò che sto proponendo è effettivamente fattibile e può essere considerato una violazione della privacy.

Per ovvi motivi, non sto rivelando il sito web che presenta questa proprietà

Gli URL sono del formato:

https://xxxxxxxxyyyyyzzzz/xyz/<6 digit rand>_<17 digit rand>_<10 digit rand>_n.jpg

E la richiesta del link sopra ti restituirà un'immagine. Ora, come puoi vedere, l'entropia dei possibili URL è abbastanza grande. Ma nota che sono tutti interi (0-9).

Questo sito Web ospita contenuti di milioni di persone ;) e suppongo che almeno il 10% degli URL contenuti in questi numeri casuali funzionerà. Certo, è solo una supposizione.

La mia domanda è: è fattibile? La mia richiesta è vera? La mia presunzione qui è che questi numeri casuali possono essere un hash non crittografico di una stringa. Non c'è modo di confermare la frase di cui sopra. Per il gusto di questa domanda, supponiamo che lo faccia.

Il mio codice per generare questi link è così (solo uno snippet)

first = str(random.randint(100000,999999))
second=str(random.randint(10000,99999))+str(random.randint(10000,99999))+str(random.randint(10000,99999))+str(random.randint(10,99))
third= str(random.randint(10000,99999))+str(random.randint(10000,99999))

test='https://<URL>/'+first+'_'+second+'_'+third+'_n.jpg'
try:
        image=urllib2.urlopen(test)
        print (image.read()).__len__()
except:
        print "fail"

Non ho provato a eseguire questo per più di decine di richieste per il timore che il mio IP venga bloccato dal server per richieste eccessive. Non intendo neanche. Voglio solo chiarire se la mia comprensione è giusta.

P.S: Non sono uno sviluppatore Python, quindi ti prego di perdonare se il mio codice è brutto (i suggerimenti saranno felici di migliorare)

    
posta sudhacker 24.09.2012 - 03:32
fonte

1 risposta

5

No, penso che la tua matematica sia disattivata. Non penso che questa sia in realtà una vera vulnerabilità. Se la tua descrizione del formato è accurata e se i numeri vengono generati tramite una fonte veramente casuale, allora no, non penso che sia così facile imbattersi nelle immagini di altre persone.

Lavoriamo la matematica. Ci sono 33 cifre casuali nell'URL. Ciò significa che ci sono 10 33 possibili URL. Supponiamo che questo sito abbia un miliardo di utenti (10 9 ), e ogni utente pubblichi 1000 immagini (10 3 ). (Sono generoso qui.) Poi ci sarebbero 10 12 foto pubblicate in tutto. Ciò significa che l'accesso a un URL scelto a caso avrebbe un 10 12 / 10 33 = 1 su 10 21 .

In altre parole, dovrai provare circa mille miliardi di miliardi (10 21 ) volte prima di imbattersi in una singola foto da qualcun altro. Ci vorrebbe circa, oh, per sempre.

Oh, vuoi una stima più precisa? OK, OK, ecco qui. Supponiamo di poter fare 1000 richieste al secondo (probabilmente una stima generosa, ma corriamo con essa). Quindi impiegheresti 10 18 secondi prima di inciampare nella prima immagine, con solo ipotesi casuali. Ci sono circa pi volte 10 7 secondi in un anno, quindi ci vorranno circa 3 * 10 10 anni prima del tuo primo successo. È più lungo della vita conosciuta dell'universo. (Nel momento in cui inciampi nella tua prima foto, tutti quelli mostrati nella foto saranno morti da tempo e non gliene fregherà più.)

Quindi, no, questo attacco non è una minaccia. Finché i numeri casuali nell'URL sono veramente casuali e imprevedibili, questo schema è sicuro.

Il rischio maggiore si presenta se i numeri non sono realmente casualmente crittografici. Se i numeri vengono generati utilizzando un generatore di numeri pseudocasuali non crittografico, o tramite un'altra sequenza prevedibile, lo schema potrebbe essere vulnerabile.

Ironicamente, il tuo codice di esempio sarebbe un buon esempio di come non farlo. Hai usato il generatore integrato di random di Python. Questa non è una forza crittografica e quindi è probabile che la sua produzione sia prevedibile. La sicurezza è al massimo pari alla quantità di entropia nel seme per il generatore pseudocasuale. Ancora peggio, con molti di questi generatori di numeri pseudocasuali, se si osservano alcune uscite dal generatore, è possibile prevedere tutti i seguenti risultati, il che sarebbe letale per la sicurezza di un simile schema di hosting di immagini.

Il tuo sito web utilizza un generatore di numeri pseudocasuali vulnerabili? Se sanno cosa stanno facendo, spero di no. Tuttavia, probabilmente non hai un buon modo per saperlo da fuori.

Per ulteriori informazioni sull'argomento, vorrei fare riferimento a due risorse: in primo luogo, Assicurati di effettuare il seed casualmente numero di generatori con sufficiente entropia ; e secondo, questo cartone di Dilbert:

    
risposta data 24.09.2012 - 03:41
fonte

Leggi altre domande sui tag