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

Μετατροπη απο bytes σε int32 (c#)


tsakitsan95

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

Μα για bf θες το κλειδι.

Δηλαδη παιρνεις το public key

Κρυπτογραφεις ενα μηνυμα με αυτο, πχ test

Και τελος με bf βαζεις ολα τα κλειδια συν το public για μα δεις με τι θα ξεκλειδωσει το test

 

Φυσικα θα καταλαβεις πως ολο αυτο δεν χει νοημα εφοσον το bf θα θελει κατι χρονια.

 

Γενικα θα ηταν πιο απλο να πας να βαλεις εναν keylogger στον σερβερ, παρα να σπασεις rsa.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

@παπι ας πούμε οτι ο server κανει expose δύο λειτουργίες

 

1)Request public key

2)Multiply numbers

Client                          Server

---->Request  public key ----->
<----Response public key <-----

(Encrypt message)

---->Deliver encrypted text ---> (Multiply)

Ουσιαστκά ο attacker έχοντας κάνει capture to public key και cipher text υλοποιεί ενα προγραμμα το οποιο δημιουργεί ciphertexts για όλους τους ακέραιους αριθμούς,χρησιμοποιώντας το public key, και τα συγκρίνει με το ciphertext που έκανε capture. Γρήγορο και αποτελεσματικό brute force εφόσον δεν δοκιμάζεις κλειδιά

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θελω να πιασω τα πακετα που μεταφερονται απο και προς το server , και να αντλησω οσο περισσοτερη πληροφορια μπορω ή τουλαχιστον να δοκιμασω. Δηλαδη πχ να καταφερω να βρω το κλειδι δοθεντων των plaintext και cyphertext.

Γενικως το bf δεν ειναι πλεον αποδοτικο , λογω της αυξησης μεγεθους των κλειδιων.

 

Στην συγκεκριμένη περίπτωση που ουσιαστικά θέλεις να κάνεις πράξεις αριθμών (ακέραιων μάλιστα) γνωρίζοντας το δημόσιο κλειδί πόσο χρόνος χρειάζεται για να φτιάξεις τα ciphers των αριθμων ? Δεν μιλάμε για κλειδιά και passphrases με μεγάλο μήκος μιλάμε για αριθμούς με κάποιο νόημα. Επομένως το να κάνεις ενα proof of concept με ενα μικρό προγραμμα απλά αποδυκνύεις σε πρακτικό επιπεδο το θεωρητικό κομμάτι.

 

Client                          Server

---->Request  public key ----->
<----Response public key <-----

(Encrypt message)

---->Deliver encrypted text ---> (Multiply)
Ουσιαστκά ο attacker έχοντας κάνει capture to public key και cipher text υλοποιεί ενα προγραμμα το οποιο δημιουργεί ciphertexts για όλους τους ακέραιους αριθμούς,χρησιμοποιώντας το public key, και τα συγκρίνει με το ciphertext που έκανε capture. Γρήγορο και αποτελεσματικό brute force εφόσον δεν δοκιμάζεις κλειδιά

 

 

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

  • Number of possible plaintexts μόνο 2^32
  • Ευνουχισμένο μήκος κλειδιού RSA
  • Μη βέλτιστη χρήση αλγορίθμων από την οπτική ενός πρακτικού συστήματος (συνήθως θα κρυπτογραφούσαμε τα πραγματικά δεδομένα με AES και θα στέλναμε με FHE το AES κλειδί και τα AES-encrypted δεδομένα)

 

Ποιό το πρακτικό νόημα του να επιτεθείς σε κάτι που δεν είναι πραγματικό σύστημα, και δεν είναι ούτε φτιαγμένο όπως θα έπρεπε για πραγματικό σύστημα;

 

 

Μα για να αποδείξεις ότι σπάει σε "εύλογο" διάστημα με απλό τρόπο  :)

 

Ναι το γνωριζω! Μα δε θα γινει το sniffing για να πιασω καποιο κλειδι. Θα πιασω τους αριθμους που στελνονται και στην συνεχει δεδομενου και του αποτελεσματος θα προσπαθησω να βρω το κλειδι( οχι με το χερι εννοειται) . Να προσπαθουσα να πιασω το κλειδι θα ηταν τελειως χαζο :P

 

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

 

Ποιός ο λόγος να μπλέξεις με packet sniffing και ιστορίες για αγρίους αντί να κάνεις απλά ένα πρόγραμμα που όλα αυτά τα κάνει εσωτερικά; Για να δεις αν δουλεύει σωστά το wireshark?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@παπι ας πούμε οτι ο server κανει expose δύο λειτουργίες

 

1)Request public key

2)Multiply numbers

Client                          Server

---->Request  public key ----->
<----Response public key <-----

(Encrypt message)

---->Deliver encrypted text ---> (Multiply)
Ουσιαστκά ο attacker έχοντας κάνει capture to public key και cipher text υλοποιεί ενα προγραμμα το οποιο δημιουργεί ciphertexts για όλους τους ακέραιους αριθμούς,χρησιμοποιώντας το public key, και τα συγκρίνει με το ciphertext που έκανε capture. Γρήγορο και αποτελεσματικό brute force εφόσον δεν δοκιμάζεις κλειδιά

 

O basic RSA δεν έχει random στοιχείο ...

Ίσως πω βλακεία αλλά υπάρχει πρακτικά εφαρμογή που χρησιμοποιεί public-key κρυπτογραφία αυτούσια για να κάνει encrypt τα δεδομένα ? Λόγω ασφάλειας, χρόνου κρυπτογράφησης, κτλ, όλες οι εφαρμογές δεν κρυπτογραφούν χρησιμοποιώντας κάποιον "συμβατικό" αλγόριθμο και ένα τυχαίο session key και μετά απλά κρυπτογραφούν αυτό το session key με RSA/ECDSA/whatever ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

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

  • Number of possible plaintexts μόνο 2^32
  • Ευνουχισμένο μήκος κλειδιού RSA
  • Μη βέλτιστη χρήση αλγορίθμων από την οπτική ενός πρακτικού συστήματος (συνήθως θα κρυπτογραφούσαμε τα πραγματικά δεδομένα με AES και θα στέλναμε με FHE το AES κλειδί και τα AES-encrypted δεδομένα)

 

Ποιό το πρακτικό νόημα του να επιτεθείς σε κάτι που δεν είναι πραγματικό σύστημα, και δεν είναι ούτε φτιαγμένο όπως θα έπρεπε για πραγματικό σύστημα;

 

 

 

 

 

H ομομορφική κρυπτογράφηση βρίσκεται σε ερευνητικό επίπεδο. Δεν νομίζω ότ αυτη τη στιγμή υπάρχει πραγματική εφαρμογή που να την αξιοποιεί. Ουσιαστικά δεν ξέρω αν έχει νόημα καν ο RSA αφού είναι μερικώς ομομορφικός καλύπτοντας μόνο τον πολλαπλασιασμό. Το ερώτημα απο ερευνητικής άποψης είναι πως θα ενισχύσεις την ασφάλεια "διατηρώντας" την ομομορφική ιδιότητα. Κάτι που αυτη την στιγμή ο basic RSA και ο secure padded RSA δεν το καλύπτουν. Και φυσικά η υλοποίηση ενος πληρως ομομορφικου (προσθεση,αφαιρεση,διαρεση,πολλαπλασιασμος) και ασφαλούς κρυπτοσυστήματος.

 

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

Ίσως πω βλακεία αλλά υπάρχει πρακτικά εφαρμογή που χρησιμοποιεί public-key κρυπτογραφία αυτούσια για να κάνει encrypt τα δεδομένα ? Λόγω ασφάλειας, χρόνου κρυπτογράφησης, κτλ, όλες οι εφαρμογές δεν κρυπτογραφούν χρησιμοποιώντας κάποιον "συμβατικό" αλγόριθμο και ένα τυχαίο session key και μετά απλά κρυπτογραφούν αυτό το session key με RSA/ECDSA/whatever ?

 

Αυτη την στιγμή η πρακτική είναι τα δεδομένα να γίνονται encrypt με καποιο συμμετρικό κρυπτοσύστημα (e.g. AES) και το κλειδί να μεταφέρεται με ασύμμετρο (e.g. RSA).

Επεξ/σία από Aztec
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγώ μετά από 3 σελίδες έχω τις εξής βασικές απορίες:

 

-TS έχεις ήδη το μαθηματικό υπάβρο (δηλαδή τουλάχιστον μετά το 3ο έτος σε μαθηματικό/πληροφορική/ΗΜΜΥ και σίγουρα έχοντας κάνει εισαγωγικό μάθημα κρυπτογραφίας) και μέσα από την παραπάνω υλοποίηση θες να μάθεις προγραμματισμό;

 

-Δεν έχεις το μαθηματικό υπόβαθρο, ούτε και προγραμματιστικές γνώσεις και ψάχνεις να υλοποιήσεις κάποιο tutorial που σου κέντρισε το ενδιαφέρον;

 

-Αφορά κάποια πτυχιακή εργασία που αυτό είναι το θέμα της και πρέπει οπωσδήποτε να αναπτύξεις το παραπάνω;

 

Στις 2 πρώτες η απάντηση είναι πως υπάρχουν πράγματα που θα σου διδάξουν πολύ περισσότερα από το να καταφέρεις να δώσεις μια χάλια υλοποίηση οποιουδήποτε αλγορίθμου κρυπτογράφησης. Στην 3η, που οπωσδήποτε πρέπει να ισχύει και η πρώτη, γιατί C# και γιατί custom υλοποιήσεις;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγώ μετά από 3 σελίδες έχω τις εξής βασικές απορίες:

 

-TS έχεις ήδη το μαθηματικό υπάβρο (δηλαδή τουλάχιστον μετά το 3ο έτος σε μαθηματικό/πληροφορική/ΗΜΜΥ και σίγουρα έχοντας κάνει εισαγωγικό μάθημα κρυπτογραφίας) και μέσα από την παραπάνω υλοποίηση θες να μάθεις προγραμματισμό;

 

-Δεν έχεις το μαθηματικό υπόβαθρο, ούτε και προγραμματιστικές γνώσεις και ψάχνεις να υλοποιήσεις κάποιο tutorial που σου κέντρισε το ενδιαφέρον;

 

-Αφορά κάποια πτυχιακή εργασία που αυτό είναι το θέμα της και πρέπει οπωσδήποτε να αναπτύξεις το παραπάνω;

 

Στις 2 πρώτες η απάντηση είναι πως υπάρχουν πράγματα που θα σου διδάξουν πολύ περισσότερα από το να καταφέρεις να δώσεις μια χάλια υλοποίηση οποιουδήποτε αλγορίθμου κρυπτογράφησης. Στην 3η, που οπωσδήποτε πρέπει να ισχύει και η πρώτη, γιατί C# και γιατί custom υλοποιήσεις;

Το πρωτο ισχυει.Ειναι project για την σχολη. Αποφασισαμε μια ομαδα να υλοποιησουμε το προγραμμα που εχω αναφερει. Το θεμα μας ειναι ομομορφικη κρυπτογραφιση. Τι αλλο θα μπορουσαμε να δημιουργησουμε πανω σε αυτο :P (εκτος απο καποιο e-vote).
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το πρωτο ισχυει.Ειναι project για την σχολη. Αποφασισαμε μια ομαδα να υλοποιησουμε το προγραμμα που εχω αναφερει. Το θεμα μας ειναι ομομορφικη κρυπτογραφιση. Τι αλλο θα μπορουσαμε να δημιουργησουμε πανω σε αυτο :P (εκτος απο καποιο e-vote).

 

Ωραία. Άρα είναι από τα κλασσικά χριστουγεννιάτικα projects πριν την εξεταστική του Γενάρη που όλοι είχαμε.

 

Δεν ξέρω πόσο έχετε ασχοληθεί με homomorphic encryption ούτε την εκφώνηση της άσκησής σας, πάντως δε θεωρώ πως το ζητούμενο είναι να δώσετε δικιά σας υλοποίηση ή και δικιά σας υλοποίηση να δώσετε το ζητούμενο δεν είναι να είναι flawed by design.

 

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

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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

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