Newsgroup: it.comp.os.linux.iniziare
Titolo: decriptazione brute force

Mi veniva un pensiero.
Supponiamo di avere un testo criptato che so, con chiave a 56 bit.
Se voglio decriptarlo ho bisogno di questa chiave.
Un attacco brute force suppongo che tenti di rintracciare questa
chiave a tentativi, scegliendo tutte le possibili combinazioni di
chiavi.
Diciamo che se provo tutte le combinazioni credo che sia matematico
che prima o poi trovo quella giusta; magari ci metto anni, o secoli se
la chiave è a 1024bit, o era geologica se è ancora di più, ma ci
riesco.
La domanda che mi viene però è come faccio a sapere che la chiave che
ho trovato è quella giusta.
Diciamo che io ho il testo
"ciao a tutti da matteo"
che criptato con chiave '1234' mi diventa
"okak r jjfuu ee ngroew"
il mio algoritmo di brute force genererà tutte le chiavi possibili.
Tra queste genererà anche '1234' con la quale otterrò il testo
originale, ma l'algoritmo genererà anche '1111' la quale usata per
decriptare mi darà
"oiui s eewwr aw jfeeoa"
come fa l'algoritmo a dire che la decodifica giusta è quella con 1234
e non quella con 1111? Come fa a sapere che per noi "oiui s eewwr aw
jfeeoa" è una frase senza senso e quindi non è quella la chiave?
Certo, so che la criptazione/decriptazione è un processo molto più
complesso, e che quello che ho scritto quì è una grande
semplificazione, ma spero di essere riuscito a dare il senso al
problema.
Ciao
Matteo

 Matteo
Luca

ti dico come la penso io
tu vieni a contatto con una password cifrata
mettiamo per esempio che riesci a "sniffare" la mia password di root su 
/etc/shadow
(l'hanno messa a 640 proprio per evitare "brute force")
questa e' la mia.
root:$1$.7JJgnPA$TPUTgA5f0XuaB6lUL6BKE/:14540:0:99999:7:::
che te ne fai?
non puoi mica inserirla al login...
al  login devi trovare la sequenza di caratteri corrispondente
e allora che fai?
sapendo la codifica usata, provi tutte le combinazioni finche' non trovi 
quella uguale a quella che hai "sniffato"
si chiama "brute force" per questo
un programmino che faccia questo tipo di test e' facilissimo da scrivere
P.S.
se trovi la mia ti offro una super-cena nel risotrante piu' lussoso ai 
Caraibi :)

 quella uguale a quella che hai "sniffato"
scusa... mi son spiegato male:
volevo dire:
sapendo la codifica usata, provi tutte le combinazioni finche' non trovi
quella che ti ritorna una stringa uguale a quella che hai "sniffato"

 Caraibi :)
Senza limiti di tempo?
-- 
 ************** (.)_(.) *******************
 Un amico � uno che sa tutto di te e,
 nonostante questo, gli piaci
(E. Hobbard) 

 "okak r jjfuu ee ngroew"
a leggere sembra un esempio reale... o te lo sei inventato "credibile"?

> Senza limiti di tempo?
sicuro!
ti do anche un aiutino... per non farti perdere troppo tempo inutilmente
e' formata solo da caratteri minuscoli e numeri
liberamente distribuiti in una stringa di media lunghezza
:)
buon divertimento

aspetta... m'e' venuto un dubbio... non saro' stato troppo incosciente?
vediamo...
mettiamo che la mia stringa sia di 5 caratteri
i caratteri sono 24 (lettere) + 10 (numeri) 34
cominci con 1 carattere
34 combinazioni
poi, per ogni carattere tutti i 34 del secondo (34 * 34) 1156
poi, per ogni combinazione a due caratteri, tutti i caratteri del terzo 
(1156 * 34) 39304
in pratica 32^1 + 32^2 + 32^3 + 32^4 + 32^5 = 34.636.832
acc... in effetti usare password brevi non e' una buona idea
spero per me che la mia sia piu' lunga.
(e che nameci non mi abbia preso in parola... :))

ah... ovviamente per chi non lo sapesse, e si stesse mettendo paranoie 
riguardo i conti in banca o cose cosi'... le password "serie" non 
funzionano cosi'... sono a "doppia chiave"
sniffare non basta, in quesi casi.

 ho trovato è quella giusta.
Di solito, per evitare che un messaggio criptato sia "manipolato",
oltre al messaggio stesso viene incluso un "codice di controllo" che
e' calcolato sul contenuto del messaggio. Tale codice ti dice se il
messaggio e' stato decriptato correttamente oppure no.
Davide

 in pratica 32^1 + 32^2 + 32^3 + 32^4 + 32^5 = 34.636.832
non � che dovresti continuare fino a 34?
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
www.robyt.eu

 ha scritto nel messaggio 
news:4afd29e7$0$818$4faf...@reader5.news.tin.it...

L'ho dato in pasto a john. Fin'ora non mi ha mai tradito ed al massimo ho 
impegato 72 ore.
Ti faro' sapere.
Ciao


> L'ho dato in pasto a john. Fin'ora non mi ha mai tradito ed al massimo 
ah! ti fai aiutare!!!

 ah! ti fai aiutare!!!
Non si reinventa l'acqua calda :-)


 (e che nameci non mi abbia preso in parola... :))
Beh, gli hai detto che gli offri una cena ai caraibi, non che gli
offri pure il viaggo... quindi prima di pagargli la cena lui deve
andarci per conto suo :D

 andarci per conto suo :D
piccoli vantaggi di passare le giornate a controllare i bug nel codice
:)


tasti premuti a casaccio.
Matteo


Quindi diciamo che se l'unica cosa che so del file è l'algoritmo di
codifica, non sapendo quindi se è un testo, uno zip un datafile
generico ecc, non posso fare niente!
Matteo


Quindi oltre al file criptato dovrei avere questo codice (tipo
md5,hash o similari?), e senza questo mi arrangio.
Matteo


  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
                             Preamble
giochino un po' idiota... ma sempre buono per imparar qualcosa
ciao


equivalente ma più veloce:
$ head GPL |rot13|tee GPL_crptata.txt
                    TAH TRARENY CHOYVP YVPRAFR
                       Irefvba 2, Whar 1991
 Pbclevtug (P) 1989, 1991 Serr Fbsgjner Sbhaqngvba, Vap.
     51 Senaxyva Fgerrg, Svsgu Sybbe, Obfgba, ZN 02110-1301  HFN
 Rirelbar vf crezvggrq gb pbcl naq qvfgevohgr ireongvz pbcvrf
 bs guvf yvprafr qbphzrag, ohg punatvat vg vf abg nyybjrq.
                            Cernzoyr
$ cat GPL_crptata.txt|rot13
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
                            Preamble
Matteo


Senza sapere cosa hai sotto mano, il file potrebbe anche non essere
affatto codificato.
Se sai che è codificato e come, potresti anche riuscire a decodificarlo
e non accorgerti di esserci riuscito.
Insomma, hai bisogno, prima di partire a decodificare, di definire la
condizione di "file decodificato", altrimenti la "decodifica" diventa
solo un'operazione di transcodifica dove da alcuni dati approdi ad altri
dati, assolutamente inutili.
PSK

Antonio Macchi wrote:

Ah, per fortuna che ci sei tu a darci queste informazioni, altrimenti 
chissa' come faremmo.
PS: "slds1685" non e' granche' come password (eufemismo).
$ openssl passwd -1 -salt .7JJgnPA slds1685
$1$.7JJgnPA$TPUTgA5f0XuaB6lUL6BKE/

 $1$.7JJgnPA$TPUTgA5f0XuaB6lUL6BKE/
e bravo il nostro john.
digli che gli devo una cena ai caraibi, quando vuole!

 $1$.7JJgnPA$TPUTgA5f0XuaB6lUL6BKE/
Bruteforce o qualcos'altro?

 in pratica 32^1 + 32^2 + 32^3 + 32^4 + 32^5 = 34.636.832
in realtï¿œ ci sono solo n^l combinazioni dove:
n = numero caratteri possibili
l = lunghezza della stringa
il calcolo che hai fatto tu vale solo se l non ï¿œ fisso ma variabile
tra 1 e 5
tornando all'esempio che hai fatto le combinazioni sono in realtï¿œ
36^5 = 60.466.176
se si utilizzano anche le maiuscole la situazione migliora un po':
62^5 = 916.132.832
ma con le maiuscole e 8 caratteri si comincia a ragionare:
62^8 = 218.340.105.584.896
-- 
bye
main(){printf("%u\n",!(!1|1));}

 sai contare?
MI STAI CHIEDENDO SE SO CONTARE?
e credi che io doop una domanda di una simile idiozia dovrei continuare 
a legegre ï¿œe minchiate che scrivi?
ma vaffanculo tu e la sta cazzo di lista
siete una mandria di stronzi
anzi, fate a gara!
la gara del piu' stronzo!
e non la vinci tu, tranquillo

 a legegre ï¿œe minchiate che scrivi?
Beh, almeno farti venire il dubbio che le lettere siano 26 e non 24
poteva venirti, dopo che ti aveva postato la lista delle lettere, e
separate di cinque in cinque per facilitarti le cose.
Hai una reputazione da difendere, fatti valere.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 62^8 = 218.340.105.584.896
Poi bisognerebbe considerare che i caratteri utilizzabili probabilmente sono
ben superiori ai 24 + 10, diciamo che sono almeno 100 (i primi 127 del set 
ascii esclusi i caratteri di controllo, particolari, ecc.).

 PS: "slds1685" non e' granche' come password (eufemismo).
Argh!!! Ho gia' comprato i biglietto aereo per i Caraibi :-(


 siete una mandria di stronzi
Antonio che e' successo? Hai lanciato una sfida e l'abbiamo raccolta. Non te 
la sarai mica presa per questo, no?
Ciao
-- 
 ************** (.)_(.) *******************
 Un amico ï¿œ uno che sa tutto di te e,


 siete una mandria di stronzi
forse sarebbe stato opportuno aggiungere un'emoticon alla mia domanda, comunque abbiamo capito che a sQuola non ti hanno insegnato nï¿œ l'alfabeto, nï¿œ a contare e tanto meno le buone maniere :-D


 ascii esclusi i caratteri di controllo, particolari, ecc.).
I caratteri dell'alfabeto inglese sono 26 !
quelli dell'alfabeto italiano sarebbero teoricamente 21 (o almeno lo erano ai miei tempi) in quanto mancano jkwxy, ma in pratica ormai si usa l'alfabeto inglese e non solo in campo informatico
riguardo le password non so se queste siano limitate ai caratteri ascii stampabili o ammettano tutti i caratteri stampabili utf-8
nel primo caso tutti i caratteri che seguono blank space (0x20 o 32 in decimale) fino al 0x7f o 127 sono stampabili, sono 128 caratteri cui devi sottrarre i primi 33 (anche al valore 0x00 corrisponde un carattere) ovvero 95 caratteri
nel secondo caso dovrebbero esserci alcune decine di migliaia di caratteri differenti...
ma anche in tal caso un ipotetico hacker nel tentare di indovinare una password con la brute force credo che restringerebbe le combinazioni secondo la nazionalitï¿œ della vittima
AFAIK la maggior parte dei caratteri ascii precedenti il blank space sono ereditï¿œ dei tempi in cui si usavano le telescriventi e servivano appunto per il controllo delle stesse, nel campo dei PC, ovviamente per quanto riguarda il testo, ormai si usa solo tab, nuova linea e/o ritorno carrello (la cosa cambia tra testi unix, dos-windows e mac) e qualche volta il carattere 'bell' piï¿œ che altro nella scrittura di programmi da riga di comando
