Repository 32bit  Forum
Repository 64bit  Wiki

scoprire la chiave di cifratura

Postate qui per tutte le discussioni legate alla sicurezza di Linux/Slackware

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

scoprire la chiave di cifratura

Messaggioda ZeroUno » gio mar 03, 2011 15:27

Salve.

Se ho un testo cifrato in des e lo stesso testo non cifrato, posso scoprire la chiave di cifratura?


Grazie,
Matteo
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4412
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: scoprire la chiave di cifratura

Messaggioda ocman » gio mar 03, 2011 16:31

si è possibile con complessità lineare. se non puoi accedere al link e proprio ti serve ti posso pass. il pdf
http://www.springerlink.com/content/f4dqc393dl778ydn/
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: scoprire la chiave di cifratura

Messaggioda ZeroUno » gio mar 03, 2011 17:05

Quindi è comunque un brute force mi sembra di aver capito; si può diminuire il numero di combinazioni conoscendo uno o più testi in chiaro e l'equivalente cifrato, ma comunque serve un brute force.
Ho capito bene?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4412
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: scoprire la chiave di cifratura

Messaggioda ocman » gio mar 03, 2011 17:43

bruteforce=applicare l'algoritmo tot volte con tot chiavi diverse per ottenere il plaintext. il tuo scopo è diverso
complessità lineare = sui computer di oggi è quasi immediata.
c'è da considerare che la funzione des oggi non è quasi mai applicata singolarmente ma per esempio per strighe maggiori di 64bit si usa spesso il CBC.
se ci pensi comunque la corrispondenza è univoca. esisterà solo una chiave che dato un testo cifrato mi porta al testo in chiaro con l'algoritmo di decifratura.
il problema nel tuo caso è: data una stringa 1 a 64 bit ( testo in chiaro ) e una stringa 2 ( 64bit cifrata ) quale stringa da 56 bit ( la chiave ) applicata al DES porta da 1 a 2 ?
il limite minimo di combinazioni è la lunghezza della chiave. 2^56. studiando la funzione DES però è possibile scendere di molto.
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: scoprire la chiave di cifratura

Messaggioda ZeroUno » sab mar 05, 2011 16:33

Non ho capito una cosa.
ok, non ho bisogno di bruteforce perchè conosco sia testo in chiaro che relativo criptato.
I dettagli di quale variante di algoritmo des (né della lunghezza della chiave) utilizzi non lo so.

Quello che non ho capito, in pratica, se e dove posso trovare un programma che lo fa?
Il tutto non vorrei che rimanga pura teoria.

Ah, ho un altro dettaglio.
Per la precisione non ho il testo in chiaro e l'equivalente criptato, ma ho il programma che lo cripta e me lo restituisce in base64. Purtroppo il programma è un po' lento ad elaborare (è in java) e vuole il testo come parametro su commandline e non da file.
Questo significa che posso produrre testo criptato arbitrario.
Codice: Seleziona tutto
$ java DesEncrypt "ciao a tutti"
Orginal  string: ciao a tutti
Crypted string:xxxxxxxxxxxxxx==


Io voglio scoprire la chiave
Ultima modifica di ZeroUno il lun mar 07, 2011 17:07, modificato 1 volta in totale.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4412
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: scoprire la chiave di cifratura

Messaggioda targzeta » sab mar 05, 2011 17:27

Ma dai sorgenti del programma Java non riesci a capire che chiave usa? Inoltre è un po' bizzarro voler sapere la chiave quando sai già il testo in chiaro :).

Detto questo, ho trovato questo link in cui viene spiegato come utilizzare e configurare Crack. Forse può esserti utile, e forse no :). Dacci un'occhiata.

Emanuele

P.S. Ma se tu gli passi il testo cifrato, lui ti tira fuori il testo in chiaro?
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6186
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: scoprire la chiave di cifratura

Messaggioda ZeroUno » sab mar 05, 2011 23:38

spina ha scritto:Ma dai sorgenti del programma Java non riesci a capire che chiave usa? Inoltre è un po' bizzarro voler sapere la chiave quando sai già il testo in chiaro :).


Se avevo i sorgenti non stavo quì a scrivere.
Io ho questo criptatore al quale gli passo un testo e lui me lo cripta; per questo dico che ho testo in chiaro e testo criptato, per la precisione testo in chiaro arbitrario. Ma ho anche del testo cifrato di cui voglio scoprire il testo in chiaro, e per fare questo ho bisogno della chiave.

john, crack, e tutti gli altri, sono programmi che data una password cifrata tentano di scoprire l'equivalente in chiaro. Mi sembra di capire che vadano più o meno in brute force (tra l'altro le password shadow non sono criptate con algoritmi reversibili)

Io invece non voglio andare di brute force. Una volta scoperta la chiave posso decriptare al volo qualsiasi testo. Possedendo sia del testo in chiaro sia del testo criptato, in teoria la chiave dovrebbe essere svelabile. Come non ne ho idea.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4412
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: scoprire la chiave di cifratura

Messaggioda ocman » dom mar 06, 2011 10:40

ciao
1.
spina ha detto bene. se è veramente un oggetto standalone java che si appoggia al massimo sulla jdk per qualche libreria allora puoi sempre ottenere il sorgente.
http://java.sun.com/developer/Books/jav ... npack.html
molto probabilmente al suo interno non farà altro che passare la chiave e il parametro in input alle funzioni descritte qui sotto
http://download.oracle.com/javase/6/doc ... tml#Cipher

2.
se vuoi analizzare il comportamento di quell'utlity dall'esterno in un testing di tipo blackbox per costruire un algoritmo che analizzi un certo numero di coppie di testi in chiaro, testi cifrati per ottenerne la relativa chiave simmetrica devi creare una tabella con:
-un numero elevato di testi in chiaro in codifica base64
-tutti i relativi testi cifrati in codifica base64
Dopo aver fatto questo puoi lanciare in parallelo su più righe un algoritmo di cifratura DES che dovrà corrispondere in modo esatto a quello del tuo tool.
Potesti lanciare questo http://www.tonycrypt.com/Crittografia/d3des.zip. Dovrai mettere quella funzione in WHILE e passare in input tutte le chiavi possibili di 56bit che genererai casualmente. Al primo match su qualsiasi riga della tabella avrai trovato la chiave di cifratura.

variabili che rendono il punto numero 1 più agibile: non sai esattamente se quel tuo tool usa CBC, un DES puro, o uno fra i tanti altri metodi di applicare DES a stringhe più lunghe di 64bit; non sai se per creare la chiave viene messo un vettore di inizializzazione generato dal tool stesso in modo random o che è uguale tutte le volte.

3.
vuoi il programma già fatto customizzato per quel DesEncrypt?
http://www.google.com

4.
Des per la parte di decifratura utilizza lo stesso algoritmo di cifratura con piccolissime modifiche ma la chiave deve essere passata in input alla funzione in modo diverso (invertita). quindi no, dando in input il testo cifrato ottieni una cifratura in output che è diversa dal testo originale.

5.
in ogni caso quando avrai trovato la chiave di quel tuo tool dovrai costruire a mano un tool per la decifratura che funzionerà solo per QUEL tool.

6.
come dice spina se quel tool lo usi solo tu avrai per le mani testi cifrati che tu hai generato. altrimenti se è qualcosa di dominio pubblico era meglio dirlo prima magari google ci aiutava.
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: scoprire la chiave di cifratura

Messaggioda 414N » dom mar 06, 2011 10:51

ocman ha scritto:ciao
1.
spina ha detto bene. se è veramente un oggetto standalone java che si appoggia al massimo sulla jdk per qualche libreria allora puoi sempre ottenere il sorgente.
http://java.sun.com/developer/Books/jav ... npack.html
molto probabilmente al suo interno non farà altro che passare la chiave e il parametro in input alle funzioni descritte qui sotto
http://download.oracle.com/javase/6/doc ... tml#Cipher

Non è così facile, dato che il jar conterrà (molto probabilmente) file .class di bytecode.
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2882
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: scoprire la chiave di cifratura

Messaggioda ocman » dom mar 06, 2011 11:15

senz'altro, ma non andrei a discutere oltre su qusto primo punto per due motivi:
- se non ha un minimo di esperienza nella crittografia il secondo punto gli sarà sicuramente più difficile da implementare che andare a 'scavare' nel sorgente java.
- noi 3 di questo tool per ora sappiamo solo i nome, non sappiamo chi e per quale scopo si stato creato e se non esista già una corrispondente parte di decifratura.
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: scoprire la chiave di cifratura

Messaggioda targzeta » dom mar 06, 2011 13:10

In effetti qui c'è un problema che forse 01 non ha considerato. E' vero che può criptare quello che gli pare, però se il programma non ha un gemello per il decriptaggio come facciamo ad essere sicuri che usa sempre la stessa chiave? Non potrebbe ogni volta generare una chiave random?

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6186
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: scoprire la chiave di cifratura

Messaggioda m0rdr3d » dom mar 06, 2011 20:35

Generalmente da un .class si riesce a decompilare il bytecode senza sforzo (i.e. con gli strumenti ufficiali della jdk) con risultati piuttosto interessanti.
Secondo me vale la pena provare.
Avatar utente
m0rdr3d
Linux 2.4
Linux 2.4
 
Messaggi: 404
Iscritto il: dom dic 24, 2006 13:40
Slackware: Slackware64-current
Kernel: 3.4.*
Desktop: KDE 4.8.2

Re: scoprire la chiave di cifratura

Messaggioda targzeta » dom mar 06, 2011 21:21

ZeroUno, mi faresti la codifica della stringa "Emanuele"? Proprio come ci hai fatto vedere con "ciao a tutti".

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6186
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: scoprire la chiave di cifratura

Messaggioda ZeroUno » lun mar 07, 2011 1:09

Emanuele -> "xxxxxxxxxxxxxxxxxxx=="

Dopo vi dò gli aggiornamenti sui progressi fatti.


Ciao
01
Ultima modifica di ZeroUno il lun mar 07, 2011 17:07, modificato 1 volta in totale.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4412
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: scoprire la chiave di cifratura

Messaggioda ZeroUno » lun mar 07, 2011 11:39

Ho disassemblato il .class ed è venuto fuori questo

Codice: Seleziona tutto
class Encrypt
{
  Cipher ecipher;
  byte[] salt = { 1, 2, 3, 4, 5, 6, 7, 8 }; // 8 numeri
  int iterationCount = 10; // un numero
  public Encrypt() {
    try {
      String temp = "una_stringa";
      KeySpec keySpec = new PBEKeySpec(temp.toCharArray(), this.salt, this.iterationCount);
      SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
      this.ecipher = Cipher.getInstance(key.getAlgorithm());
      AlgorithmParameterSpec paramSpec = new PBEParameterSpec(this.salt, this.iterationCount);
      this.ecipher.init(1, key, paramSpec);
    } catch (Exception e) { }
  }
  public String encrypt(String aString) {
    try {
      byte[] utf8 = aString.getBytes("UTF8");
      byte[] enc = this.ecipher.doFinal(utf8);
      return new BASE64Encoder().encode(enc);
    } catch (Exception e) { }
    return null;
  }
}

ok, ho anche la classe per decriptare ma volevo rimediare la chiave e l'algoritmo da passare a openssl.

con questi parametri (che non sono gli originali), Emanuele viene criptato "8Mw36Qwue5+PB3HyoBzFNw=="

Per ora mi voglio fermare ad usare openssl per ottenere la stessa criptazione di questo algoritmo.

Con un po' di debug:


Orginal string: pippo
Cipher.getIV() in base64 : aM+DbnjAprE=
Cipher.getIV() in string : <una stringa non stampabile>
Cipher.getIV() original (byte[]) : 104 -49 -125 110 120 -64 -90 -79
Cipher.getBlockSize() : 8
Cipher.getAlgorithm(): PBEWithMD5AndDES
Crypted string: vC96tnI05Vw=


Sto cercando quali parametri di openssl usare, ma per chiave, posso usare l'output di getIV() ?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4412
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Prossimo

Torna a Sicurezza

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti