Προς το περιεχόμενο

Decrypt 81ecc514bf28bad219aa45d8f09826f8 someone?


Προτεινόμενες αναρτήσεις

Δημοσ.

Ένας τρόπος, εκτός των Rainbow Tables που θα έπρεπε να κάνεις χρήση, είναι μέσω BackTrack χρησιμοποιώντας το Crunch να φτιάξεις λεξικά, μέχρι 32 χαρακτήρες - (μπορεί να σου βγεί γύρω στο Terra), και μέσω Cain&Abel να κάνεις attack το MD5 με brute force. Θα σου πάρει καμια βδομάδα - αλλά που θα πάει ;-)

  • Απαντ. 43
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Συχνή συμμετοχή στο θέμα

Δημοσ.

Oύτε καν. Αν θυμάμαι καλά 1-8 χαρακτήρες βγαίνει ακριβώς 1GB. Από΄κει και πάνω θες ολόκληρο data center. Τι να κλάσει και το C&A.. Βάλε κάποιον GPU Cracker μπας και αλλά μάλλον δύσκολα

Δημοσ.

Ο όρος "αναξιόπιστος" που χρησιμοποίησα είναι όντως υπερβολικός για μας αλλά επιηκής :devil: για όρους κρυπτογράφησης...

 

Tο Md5 θα έπρεπε να θεωρείται αναξιόπιστο, ειδικά πλέον που μπορείς εύκολα να φτιάξεις διαφορετικό αρχείο με το ίδιο hash.

 

Νομίζω ότι το μόνο πράγμα στο οποίο διαφωνούμε είναι ο ορισμός του "εύκολα". Ας πούμε λοιπόν έυκολα για επαγγελματίες του είδους για να είμαστε όλοι ικανοποιημένοι. ;)

 

 

2. Ένα σημείο που θέλει προσοχή στο "SALTing" είναι η επιλογή των τυχαίων τιμών του (εδώ δεν καλύπτεσαι από τις τυπικές ρουτίνες ψευδοτυχαίων αριθμών των γλωσσών προγραμματισμού - αυτό βέβαια αν μιλάμε για κρυπτοσυστήματα υψηλού ρίσκου που δεν αφήνουμε τίποτα στην "τύχη").

 

Βεβαίως και καλύπτεσαι (πού βασίζεις το αντίθετο?). Ο "περιορισμός" για το IV σε σοβαρά κρυπτοσυστήματα είναι να μη χρησιμοποιηθεί το ίδιο δύο φορές. Απο κει και πέρα ακόμα και με χείριστου είδους PRNG να το παράγεις, εφόσον ο attacker δεν ξέρει το seed δεν υπάρχει κανένα πρόβλημα.

 

Για να το πω με άλλα λόγια, το IV δεν χρειάζεται να είναι cryptographically random -- απλά να είναι unpredictable.

 

Φυσικά και γω αν ήμουν FBI θα χρησιμοποιούσα τον καλύτερο crupto-strength RNG που θα είχα στη διάθεσή μου because why not, αλλά από μαθηματικής άποψης αυτό δεν είναι απαραίτητο.

Δημοσ.

και αν φτιάχναμε κάτι δικό μας, έναν αλγόριθμο που θα κρυπτογραφεί ένα κείμενο

 

πχ

>
void Encrypt(char myarr[])
{
for(int i=0; myarr[i]; i++)
    myarr[i] += 5*abs(sqrt(998446.0));
}

void Decrypt(char myarr[])
{
for(int i=0; myarr[i]; i++)
    myarr[i] -= 5*abs(sqrt(998446.0));
}

 

αυτό σε php (δεν έχω ασχοληθεί με php)

 

1ον: Μπορούν να δουν τον php κώδικα? απ'όσο ξέρω όχι

2ον: είναι πολύ μπακαλίστικο απλά έφερα ένα παράδειγμα πως θα μπορούσε να είναι...

 

Message: Hello There

After Encryption: ╠ώΏΏ≤ν╪Ήώ÷ώ

 

και αν το περνάγαμε αυτό από 3-4 στάδια, δηλαδή encrypt the encrypted.

επειδή μπορεί να υπάρχει θέμα με τη βάση όσων αφορά τους χαρακτήρες, στο τέλος αυτό το κάνουμε σε Hex.

Δημοσ.

και αν φτιάχναμε κάτι δικό μας, έναν αλγόριθμο που θα κρυπτογραφεί ένα κείμενο

...

1ον: Μπορούν να δουν τον php κώδικα? απ'όσο ξέρω όχι

 

Αυτό λέγεται Security through obscurity και είναι καταδικασμένο να αποτύχει. Η σοφότερη επιλογή είναι να επιλέξεις έναν αλγόριθμο κρυπτογράφησης του οποίου οι ιδιότητες είναι γνωστές και υπάρχει απόδειξη γιατί είναι ασφαλής. Αν υλοποιήσεις έναν δικό σου με το σκεπτικό ότι κανείς δεν ξέρει πως δουλεύει, υποθέτοντας πως δεν είσαι ειδικός στον τομέα, αργά ή γρήγορα κάποιος θα καταλάβει πως δουλεύει και θα το σπάσει.

Δημοσ.

Αυτό λέγεται Security through obscurity και είναι καταδικασμένο να αποτύχει. Η σοφότερη επιλογή είναι να επιλέξεις έναν αλγόριθμο κρυπτογράφησης του οποίου οι ιδιότητες είναι γνωστές και υπάρχει απόδειξη γιατί είναι ασφαλής. Αν υλοποιήσεις έναν δικό σου με το σκεπτικό ότι κανείς δεν ξέρει πως δουλεύει, υποθέτοντας πως δεν είσαι ειδικός στον τομέα, αργά ή γρήγορα κάποιος θα καταλάβει πως δουλεύει και θα το σπάσει.

 

το θέμα είναι να μην μπορεί να δει τις συναρτήσεις που το υλοποιούν αυτό, γιατί αλλιώς είναι σαν να "κουρεύεις το αυγό"

επίσης θα μπορούσες να το περάσεις από MD5 και το αποτέλεσμα αυτουνού να το περάσεις από το δικό σου...

Δημοσ.

και αν φτιάχναμε κάτι δικό μας, έναν αλγόριθμο που θα κρυπτογραφεί ένα κείμενο

 

1ον: Μπορούν να δουν τον php κώδικα? απ'όσο ξέρω όχι

2ον: είναι πολύ μπακαλίστικο απλά έφερα ένα παράδειγμα πως θα μπορούσε να είναι...

 

Message: Hello There

After Encryption: ╠ώΏΏ≤ν╪Ήώ÷ώ

 

και αν το περνάγαμε αυτό από 3-4 στάδια, δηλαδή encrypt the encrypted.

επειδή μπορεί να υπάρχει θέμα με τη βάση όσων αφορά τους χαρακτήρες, στο τέλος αυτό το κάνουμε σε Hex.

Συγχαρητήρια, μόλις ανακάλυψες τον Caesar cipher. Είναι ο πρώτος που αναφέρεται στην ιστορική αναδρομή σε όλα τα βιβλία κρυπτογραφίας. Η ασφάλειά του.... :-D :-D :-D sorry, πέθανα στα γέλια. "Ασφάλεια". :-D

 

Στο συγκεκριμένο αλγόριθμο ακόμα και ένα δισεκατομμύριο στάδια να βάλεις το αποτέλεσμα είναι ακριβώς το ίδιο με το να έχεις ένα μόνο στάδιο και απλά να αλλάξεις τα νούμερα που μπαίνουν μέσα στον τύπο (απλά μαθηματικά modulo).

 

Τον κώδικα PHP δε μπορούν να τον δουν υπο κανονικές συνθήκες πάντως.

 

Update: Μη το πάρεις στραβά αυτό που θα πω, αλλά πολλά απλούστερα πράγματα ήδη δεν υπάρχει περίπτωση να γίνουν σωστά με τη μέθοδο "κάνε πράγματα στην τύχη μέχρι να δεις κάτι που μοιάζει με καλό αποτέλεσμα". Πόσο μάλλον η κρυπτογραφία.

 

Αυτό λέγεται Security through obscurity και είναι καταδικασμένο να αποτύχει. Η σοφότερη επιλογή είναι να επιλέξεις έναν αλγόριθμο κρυπτογράφησης του οποίου οι ιδιότητες είναι γνωστές και υπάρχει απόδειξη γιατί είναι ασφαλής. Αν υλοποιήσεις έναν δικό σου με το σκεπτικό ότι κανείς δεν ξέρει πως δουλεύει, υποθέτοντας πως δεν είσαι ειδικός στον τομέα, αργά ή γρήγορα κάποιος θα καταλάβει πως δουλεύει και θα το σπάσει.

Αυτό.

 

Γενικά ο σχεδιασμός αλγορίθμων κρυπτογράφησης είναι κάτι στο οποίο αποτυγχάνουν ακόμα και άνθρωποι που κάνουν αυτό το πράγμα όλη τους τη ζωή και έχουν δώσει το όνομά τους σε ορόσημα του χώρου. Οπότε ας μη συνεχίσουμε όσον αφορά το σχεδιασμό ενός υποθετικού Insomnia cipher.

 

Για το χαβαλέ να πω μόνο και μόνο ότι το μεγαλύτερο μέρος του προγραμματιστικού πληθυσμού δεν είναι ικανό να φτιάξει ένα ασφαλές σύστημα χρησιμοποιώντας ευρέως αναγνωρισμένους αλγόριθμους (γιατί ασφαλές σύστημα != copy paste τον AES και το SHA1), πόσο μάλλον ένα τέτοιο σύστημα με homebrew κρυπτογράφηση.

Δημοσ.

Νομίζω ότι το μόνο πράγμα στο οποίο διαφωνούμε είναι ο ορισμός του "εύκολα". Ας πούμε λοιπόν έυκολα για επαγγελματίες του είδους για να είμαστε όλοι ικανοποιημένοι. ;)

 

 

 

 

Βεβαίως και καλύπτεσαι (πού βασίζεις το αντίθετο?). Ο "περιορισμός" για το IV σε σοβαρά κρυπτοσυστήματα είναι να μη χρησιμοποιηθεί το ίδιο δύο φορές. Απο κει και πέρα ακόμα και με χείριστου είδους PRNG να το παράγεις, εφόσον ο attacker δεν ξέρει το seed δεν υπάρχει κανένα πρόβλημα.

 

Για να το πω με άλλα λόγια, το IV δεν χρειάζεται να είναι cryptographically random -- απλά να είναι unpredictable.

 

Φυσικά και γω αν ήμουν FBI θα χρησιμοποιούσα τον καλύτερο crupto-strength RNG που θα είχα στη διάθεσή μου because why not, αλλά από μαθηματικής άποψης αυτό δεν είναι απαραίτητο.

 

Η χρήση ασφαλών RNG (με υψηλή εξασφάλιση εντροπίας) όταν μιλάμε για επαγγελματικό κώδικα (και συνεπώς για σοβαρά κρυπτοσυστήματα -το τονίζω αυτό) είναι στον συγκεκριμένο τομέα εκ των ουκ άνευ για αυτό και (σχεδόν) κάθε κρυπτογραφική βιβλιοθήκη παρέχει και μια υλοποίηση ασφαλούς RNG (πέραν εκείνης που παρέχει η ίδια η γλώσσα), οπότε δεν είναι μεγάλη φασαρία η χρήση της στο λογισμικό σου + έχεις και τα νώτα σου καλυμμένα αφού ποτέ δεν ξέρεις τι πληροφορίες θα κρυπτογραφηθούν με το λογισμικό σου και ποίος μπορεί να προσπαθήσει να τις ανακτήσει αργότερα (άρα ιερό καθήκον σου είναι να προσφέρεις όση περισσότερη ασφάλεια μπορείς).

Δημοσ.

@Directx:

 

Γενικά συμφωνούμε, όπως νομίζω είναι φανερό και από την τελευταία πρόταση περι FBI που έκανες quote.

 

Άλλο όμως αυτό και άλλο το αν καλύπτεσαι με κάτι λιγότερο hardcore -- τουλάχιστον σύμφωνα με το πως αντιλαμβάνομαι εγώ το καλύπτεσαι, δηλαδή: "καλύπτεσαι" == δεν έχεις εισάγει κάποια μαθηματική αδυναμία στο σύστημα και "δεν καλύπτεσαι" το αντίθετο.

 

Το γεγονός ότι υπερκαλύπτεις τις απαιτήσεις της εφαρμογής επειδή μπορείς δε σημαίνει ότι κάποιος που "απλά" τις ικανοποιεί κάνει κάτι λάθος, αυτή όμως είναι η εντύπωση που αφήνει (τουλάχιστον σε μένα) εκείνο το υστερόγραφο.

 

Θα μπορούσες να κάνεις τον παραλληλισμό με το salting των passwords μιας που εσύ πρώτος αναφέρθηκες και στους IV μ' αυτό τον όρο: κανείς δε σε εμποδίζει να εξάγεις salt μέσα από μια στοχαστική διεργασία που τροφοδοτείται από τη διάσπαση ραδιενεργών πυρήνων. Αυτό δε σημαίνει ότι το salt σου είναι καλύτερο ή πιο κατάλληλο ή τέλος πάντων συνεισφέρει περισσότερο απ' ότι ένα salt που παράγεται από έναν απλό linear congruential generator.

 

Τέλος επιστώ την προσοχή σου σ' αυτό που είπες εδώ, το οποίο είναι βασικά το ίδιο πράγμα που είχες πει νωρίτερα με άλλα λόγια:

 

Η χρήση ασφαλών RNG όταν μιλάμε για επαγγελματικό κώδικα είναι εκ των ουκ άνευ για αυτό και κάθε κρυπτογραφική βιβλιοθήκη παρέχει και μια υλοποίηση ασφαλούς RNG

Κάποιος που δε γνωρίζει θα μείνει με το συμπέρασμα ότι χρειάζεται CRNG "οπουδήποτε έχουμε να κάνουμε με τυχαίους αριθμούς στην κρυπτογραφία". Αυτό το συμπέρασμα είναι λάθος (συγκεκριμένα το "οπουδήποτε"). Το γεγονός ότι σε κάποιες περιπτώσεις απαιτείς random (με τον κρυπτογραφικό ορισμό) στοιχεία δε σημαίνει αυτομάτως ότι παντού πρέπει να βάζεις κάτι τέτοιο. Όπως είπα ήδη πολλές φορές, για salting δεν απαιτείται randomness αλλά unpredictability.

 

TL;DR: Μου αρέσει να είμαστε ακριβείς στις τοποθετήσεις μας.

Δημοσ.

@Directx:

 

Γενικά συμφωνούμε, όπως νομίζω είναι φανερό και από την τελευταία πρόταση περι FBI που έκανες quote.

 

Άλλο όμως αυτό και άλλο το αν καλύπτεσαι με κάτι λιγότερο hardcore -- τουλάχιστον σύμφωνα με το πως αντιλαμβάνομαι εγώ το καλύπτεσαι, δηλαδή: "καλύπτεσαι" == δεν έχεις εισάγει κάποια μαθηματική αδυναμία στο σύστημα και "δεν καλύπτεσαι" το αντίθετο.

 

Το γεγονός ότι υπερκαλύπτεις τις απαιτήσεις της εφαρμογής επειδή μπορείς δε σημαίνει ότι κάποιος που "απλά" τις ικανοποιεί κάνει κάτι λάθος, αυτή όμως είναι η εντύπωση που αφήνει (τουλάχιστον σε μένα) εκείνο το υστερόγραφο.

 

Θα μπορούσες να κάνεις τον παραλληλισμό με το salting των passwords μιας που εσύ πρώτος αναφέρθηκες και στους IV μ' αυτό τον όρο: κανείς δε σε εμποδίζει να εξάγεις salt μέσα από μια στοχαστική διεργασία που τροφοδοτείται από τη διάσπαση ραδιενεργών πυρήνων. Αυτό δε σημαίνει ότι το salt σου είναι καλύτερο ή πιο κατάλληλο ή τέλος πάντων συνεισφέρει περισσότερο απ' ότι ένα salt που παράγεται από έναν απλό linear congruential generator.

 

Τέλος επιστώ την προσοχή σου σ' αυτό που είπες εδώ, το οποίο είναι βασικά το ίδιο πράγμα που είχες πει νωρίτερα με άλλα λόγια:

 

 

Κάποιος που δε γνωρίζει θα μείνει με το συμπέρασμα ότι χρειάζεται CRNG "οπουδήποτε έχουμε να κάνουμε με τυχαίους αριθμούς στην κρυπτογραφία". Αυτό το συμπέρασμα είναι λάθος (συγκεκριμένα το "οπουδήποτε"). Το γεγονός ότι σε κάποιες περιπτώσεις απαιτείς random (με τον κρυπτογραφικό ορισμό) στοιχεία δε σημαίνει αυτομάτως ότι παντού πρέπει να βάζεις κάτι τέτοιο. Όπως είπα ήδη πολλές φορές, για salting δεν απαιτείται randomness αλλά unpredictability.

 

TL;DR: Μου αρέσει να είμαστε ακριβείς στις τοποθετήσεις μας.

Λοιπόν κοίταξε το πρόβλημα είναι το predictability των τυπικών RNG, τώρα να κάτσω να σε πείσω δεν υπάρχει περίπτωση, ρίξε μια ματιά εδώ (τυχαία σελίδα από το Google) για τα do & do nots σε αυτό το θέμα (είναι από αυτά που λέμε "ακανθώδες").

 

Στο λογισμικό σου κάνε ότι νομίζεις καλύτερο (το λέω φιλικά - μην παρεξηγηθώ).

 

Καλή συνέχεια.

:)

Δημοσ.

...

 

Για άλλη μια φορά δεν ξέρω πώς αλλιώς να το πω (είναι τόσο δύσκολο να συνεννοηθούμε?), οπότε θα κάνω και γω μια παράθεση και ας το αφήσουμε εκεί.

 

http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator

Many aspects of cryptography require random numbers, for example:

 

Key generation

Nonces

One-time pads

Salts in certain signature schemes, including ECDSA, RSASSA-PSS.

 

The "quality" of the randomness required for these applications varies. For example creating a nonce in some protocols needs only uniqueness. On the other hand, generation of a master key requires a higher quality, such as more entropy. And in the case of one-time pads, the information-theoretic guarantee of perfect secrecy only holds if the key material is obtained from a true random source with high entropy.

Αυτά.

Δημοσ.

@defacer

 

όντως δικέ μου, αλλά αν έχεις 100000 πιθανά αποτελέσματα, θα κάτσεις να τα κοιτάξεις ένα ένα για να αποκλείσεις τα κινέζικα και να βρεις αυτό που ταιριάζει?

 

Καλή φάση το Shifting, hehe :P i crack myself :P

 

sh1ft.png

Δημοσ.

όντως δικέ μου, αλλά αν έχεις 100000 πιθανά αποτελέσματα, θα κάτσεις να τα κοιτάξεις ένα ένα για να αποκλείσεις τα κινέζικα και να βρεις αυτό που ταιριάζει?

 

Όχι βέβαια, αλλά είναι πολύ εύκολο να βρεις αυτό που ταιριάζει αν ξέρεις π.χ. ότι αυτό που κρυπτογραφήθηκε ήταν κείμενο γραμμένο στην τάδε γλώσσα. Αυτό γίνεται με τη λεγόμενη frequency analysis (το παράδειγμα στη wikipedia είναι για στατιστική ανάλυση μονών γραμμάτων, στην πράξη θα βάλεις μέσα και ανάλυση digrams και trigrams και αυτό θα είναι αρκετό για να αναγνωρίσει το πρόγραμμα ότι το σωστό shift βρέθηκε επιτόπου).

 

Επιπλέον μπορείς να καταλάβεις ότι το κρυπτογράφημα αποτελεί κείμενο καί ότι κρυπτογραφήθηκε με απλό shift παρατηρώντας απλώς ότι η πλειοψηφία των bytes που τον αποτελούν βρίσκεται μέσα σε ένα διάστημα με μέγεθος < 30 -- με άλλα λόγια τι είναι αυτό που χρησιμοποιεί λιγότερους από 30 διαφορετικούς χαρακτήρες οι οποίοι βρίσκονται όλοι μαζεμένοι δίπλα δίπλα στο ASCII table σε όλη του την έκταση; Και τι κάνει νιαου νιαου στα κεραμίδια;

 

Ακόμα και αν η κρυπτογράφηση γινόταν όχι με shift αλλά με γενικότερο substitution (οπότε δε θα μπορούσες να ξέρεις ότι οι < 30 χαρακτήρες είναι γείτονες μεταξύ τους) και πάλι το γεγονός ότι είναι < 30 είναι dead giveaway.

 

Τα παραπάνω είναι φυσικά όχι η κορυφή του παγοβούνου αλλά το βερνίκι πάνω στη μπογία (τα ξέρω μέχρι και γω που είμαι χομπίστας στον κλάδο). Στην πράξη οι τεχνικές που έχουν αναπτυχθεί είναι πολύ πολύ ισχυρότερες.

 

Επίσης, αυτό που έκανες "χρησιμοποιεί" το γεγονός ότι οι πιθανές τιμές των char στη C είναι (στην περίπτωση αυτή τουλάχιστον) 256 και κάνουν "wrap around" (βασικά έχεις ένα monalphabetic substitution cipher με μέγεθος αλφαβήτου 256). Επομένως τα πιθανά αποτελέσματα που πρέπει να ελεγχθούν είναι 256 και όχι 100000.

Δημοσ.

@defacer

 

όντως δικέ μου, αλλά αν έχεις 100000 πιθανά αποτελέσματα, θα κάτσεις να τα κοιτάξεις ένα ένα για να αποκλείσεις τα κινέζικα και να βρεις αυτό που ταιριάζει?

 

Καλή φάση το Shifting, hehe :P i crack myself :P

 

sh1ft.png

Πάνε σχεδόν δυο δεκαετίες και συνεπώς δεν θυμάμαι ονομασία αλλά επί εποχής DOS υπήρχε μια συλλογή από προγραμματάκια (COM τα περισσότερα) που υποτίθεται ότι εφαρμόζοντας μια σειρά ελέγχων μπορούσαν να ξεκλειδώσουν διάφορες (απλές και ανασφαλείς -το τονίζω αυτό) μορφές κρυπτογράφησης, μεταξύ των οποίων και την συγκεκριμένη (όπως επίσης την XOR -πολύ της μόδας τότε σε διάφορα λογισμικά). Το πρόγραμμα σου (& κονσόλα), μου τα θύμισε :-D

 

Γενικά, σήμερα υπάρχει πληθώρα διαθέσιμων βιβλιοθηκών για εφαρμογή ισχυρής κρυπτογραφίας οπότε δεν υπάρχει λόγος για πειραματισμούς.

Δημοσ.

Πάνε σχεδόν δυο δεκαετίες και συνεπώς δεν θυμάμαι ονομασία αλλά επί εποχής DOS υπήρχε μια συλλογή από προγραμματάκια (COM τα περισσότερα) που υποτίθεται ότι εφαρμόζοντας μια σειρά ελέγχων μπορούσαν να ξεκλειδώσουν διάφορες (απλές και ανασφαλείς -το τονίζω αυτό) μορφές κρυπτογράφησης, μεταξύ των οποίων και την συγκεκριμένη (όπως επίσης την XOR -πολύ της μόδας τότε σε διάφορα λογισμικά). Το πρόγραμμα σου (& κονσόλα), μου τα θύμισε :-D

 

Γενικά, σήμερα υπάρχει πληθώρα διαθέσιμων βιβλιοθηκών για εφαρμογή ισχυρής κρυπτογραφίας οπότε δεν υπάρχει λόγος για πειραματισμούς.

 

Τί μου θύμισες... με πολλαπλά XOR "κρυπτογραφούσαν" τους loaders των original παιχνιδιών στα home computers της δεκαετίας του '80 (amstrad, spectrum).

B)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...