*

Τελευταία θέματα

Αποστολέας Θέμα: HOWTO: Εξυπνοι κωδικοί για sites  (Αναγνώστηκε 2978 φορές)

Αποσυνδεδεμένος talos

  • To be or not to be is true
  • Amazing Μint Guru
  • ********
  • Μηνύματα: 1923
  • Thanked: 92 times
  • Karma: 83
  • Church of the SubGenius
    • Προφίλ
HOWTO: Εξυπνοι κωδικοί για sites
« στις: Ιούνιος 10, 2015, 12:42:15 μμ »
Αν ένας δικτυακός τόπος παραβιαστεί, τότε οι κακοί μπορούν να αποκτήσουν τον κωδικό πρόσβασης μας. Οπότε αν χρησιμοποιούμε τον ίδιο κωδικό σε πολλά sites, τότε οι κακοί αυτόματα θα έχουν πρόσβαση σε όλους τους λογαριασμούς μας. Μια προφανής λύση για αυτό είναι να έχουμε διαφορετικό κωδικό για κάθε τόπο. Αλλά μετά θα πρέπει να θυμόμαστε 40-50 διαφορετικούς κωδικούς ή να χρησιμοποιούμε λύσεις για την αποθήκευση τους σε τρίτους, που δεν ξέρουμε αν είναι ή αν θα γίνουν ποτέ οι κακοί της υπόθεσης.

Μια βέλτιστη λύση θα ήταν να έχουμε ένα κωδικό μόνο που θα μας είναι εύκολο να τον θυμόμαστε [1] και από αυτόν να παράγουμε τους υπολοίπους κωδικούς. Και δεν θα χρειαστεί να κρατάμε αποθηκευμένα πουθενά τίποτα απολύτως. Ιδού ο τρόπος. Θα  φτιάξω μια καινούργια εντολή σαν μια  συνάρτηση μέσα στο .bashrc.
Ο κώδικας:
Κώδικας: [Επιλογή]
strongpw() {
    echo -n "Enter secret: "
    read -r
    echo '' # line break
    echo -n "$REPLY:$1" | sha256sum | perl -ne "s/([0-9a-f]{2})/print chr hex \$1/gie" | base64 | tr +/ Ea | cut -b 1-20
}
που θα πρεπει να μπορείς να τον βρεις από εδώ ή από εδώ: http://ss64.com/pass/command-line.html (θέλει κάποιες μικρές αλλαγές, άλλα η λογική είναι ίδια).

Χρήση:
Κώδικας: [Επιλογή]
strongpw linuxmint.gr
Enter secret:@rn@k1White+PX

Y4azMnd6ShEfjooob8wT
Και έχω τον πολύ ισχυρό κωδικό Y4azMnd6ShEfjooob8wT αποκλειστικά για το linuxmint.gr. Και ο κωδικός αυτός θα πρέπει να είναι ίδιος με αυτόν που θα δείτε στο δικό σας μηχάνημα.

Άλλος τρόπος:
Δείτε το http://ss64.com/pass/ για μια σελίδα που κάνει ακριβώς το ίδιο. Και θα μου δώσει ακριβώς τον ίδιο κωδικό.

Αν τώρα κάποιος  κακός μάθει τον κωδικό Y4azMnd6ShEfjooob8wT δεν θα μπορεί να βρει ποιος είναι ο κεντρικός κωδικός.
Και εγώ θα πρέπει απλά να θυμάμαι @rn@k1White+PX.




[1] Που όχι δεν θα είναι η ημερομηνία που έχετε γενέθλια/χωρίσατε την πρώην, ούτε ο αριθμός του αυτοκινήτου σας,  ούτε κάτι σαν 123456789 ούτε aekara.
Αλλά για παράδειγμα "αρνάκι άσπρο και παχύ"=>"arnakiWhite+PX"=>"@rn@k1White+PX". Εύκολο?
-- Λίστα ΟδηγώνΧρήσεων - Οδηγός Χρήσης του linuxmint.gr - Οδηγός Χρήσης ΒΒcode - Δημιουργία υπογραφής - IRC --
Έκλεψα κι έκρυψα σε ξύλο κουφωτό το σπόρο του πυρός, το δάσκαλο για πάσα τέχνη των θνητών, προίκα μεγάλη.
Για τέτοιο κρίμα πληρώνω μετέωρος στην ερημιά, καρφωμένος σε τούτο το βράχο.

(εν διαστάσει)
The following users thanked this post: Asterion, panpan

Αποσυνδεδεμένος talos

  • To be or not to be is true
  • Amazing Μint Guru
  • ********
  • Μηνύματα: 1923
  • Thanked: 92 times
  • Karma: 83
  • Church of the SubGenius
    • Προφίλ
Απ: HOWTO: Εξυπνοι κωδικοί για sites
« Απάντηση #1 στις: Ιούνιος 10, 2015, 06:55:08 μμ »
Ας το πούμε με μια ποιο φανταχτερή ορολογία.
Η τελευταία γραμμή (οι άλλες τρεις είναι UI) υλοποιεί μια κρυπτογραφική συνάρτηση pswd=F(site,salt). Η συνάρτηση παίρνει σαν είσοδο 2 παραμέτρους. Την παράμετρο site (με τιμή στο παράδειγμα site="linuxmint.gr") και την παράμετρο salt(με τιμή στο παράδειγμα salt="@rn@k1White+PX"). Η έξοδος ή αλλιώς η τιμή της συνάρτησης είναι ένας καλός κωδικός  (στο παράδειγμα η τιμή είναι pswd="Y4azMnd6ShEfjooob8wT").

Η συνάρτηση χρησιμοποιεί κρυπτογραφία, βασικά τον αλγόριθμο hashing sha256sum, στην έξοδο του οποίου κάνει κάποιους μετασχηματισμούς για να παράγει ένα κωδικό  με 20 γράμματα. Αν γνωρίζω την τιμή του pswd, και την τιμή του site δεν μπορώ να φτάσω σε κανένα συμπέρασμα [1] για την τιμή του salt.

Η υλοποίηση του αλγορίθμου μπορεί να γίνει σε οποιαδήποτε γλώσσα προγραμματισμού. Εδώ https://github.com/salsifis/ss64-password-generators υπάρχουν κάποιες έτοιμες  υλοποιήσεις. Αυτή που δείχνω είναι σε bash/zsh και υλοποιημένη σαν συνάρτηση [2]. Θα πρέπει να μπει σε ένα αρχείο εκκίνησης του κελύφους και πέραν αυτής της θέσης, υπάρχουν και άλλες. Η ποιο προφανή λύση είναι στο αρχείο του χρήστη $HOME/.bashrc (ή στο .zshrc για το zsh).

Είναι λοιπόν μια συνάρτηση που τυπώνει το αποτέλεσμα. Τίποτα παραπάνω τίποτα παρακάτω. Την τρέχεις δίνεις τις τιμές αντιγράφεις το αποτέλεσμα, και κάνεις μια επικόλληση (μαυρίζω κείμενο και κάνω επικόλληση με το μεσαίο πλήκτρο του ποντικιού. Αυτός είναι ο τρόπος στο unix. Αν είναι κόπος απλά πέρασε την έξοδο από το xclip).

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

Μια κομψή και απλή σε σημείο δακρύων λύση.


[1] Ο αλγόριθμος έχει το μεγάλο μειονέκτημα ότι είναι εξαιρετικά γρήγορος, κάτι που τον κάνει ακατάλληλο για τις σημερινές  απαιτήσεις (δηλ αν σας λένε ο Βαρουφάκη και επαγγέλλεστε τον υπουργό, τότε  δεν σας κάνει).  Μια προφανής λύση είναι να χρησιμοποιήσεις μέσα και/ή την αργή bcrypt, αλλά τότε δεν θα μπορείς να χρησιμοποιήσεις το εξωτερικό site. 
[2] Γιατί σαν συνάρτηση και όχι σαν εξωτερική εντολή; Γιατί έτσι.
-- Λίστα ΟδηγώνΧρήσεων - Οδηγός Χρήσης του linuxmint.gr - Οδηγός Χρήσης ΒΒcode - Δημιουργία υπογραφής - IRC --
Έκλεψα κι έκρυψα σε ξύλο κουφωτό το σπόρο του πυρός, το δάσκαλο για πάσα τέχνη των θνητών, προίκα μεγάλη.
Για τέτοιο κρίμα πληρώνω μετέωρος στην ερημιά, καρφωμένος σε τούτο το βράχο.

(εν διαστάσει)

Αποσυνδεδεμένος panpan

  • Great Mint Guru
  • ******
  • Μηνύματα: 858
  • Thanked: 60 times
  • Karma: 15
  • Παν μέτρον άριστον = Ισορροπία
    • Προφίλ
Απ: HOWTO: Εξυπνοι κωδικοί για sites
« Απάντηση #2 στις: Ιούνιος 11, 2015, 09:04:10 πμ »
Στην δεύτερη απάντηση talos έχεις πραγματικά απαντήσει ως πυρηνικός φυσικός, να σε διαβάσει ο νεοεισερχόμενος στο Linux Mint και να φύγει ως κατατρεχάμενος, μουρμουρώντας ρε τι είναι τούτοι θα παλαβώσω με δαύτους, άσε να μείνω στα Windows, με τα κλικ και κλακ πανάθεμα τους θα με παλαβώσουν.

και για την πολύ πολύτιμη πληροφορία που μας έδωσες Plus +1 από εμένα.

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

strongpw linuxmint.gr
Enter secret:@rn@k1White+PX

Y4azMnd6ShEfjooob8wT

Ενώ πάλι πχ για linuxmintmou
strongpw linuxmintmou
Enter secret: @rn@k1White+PX

46Hkpz2ts2VM0RFnQPTa

Αφού έχετε τον κωδικό μπαίνετε στο linuxmint.gr αλλάζετε τον ήδη υπάρχον κωδικό και βάζετε τον καινούργιο Y4azMnd6ShEfjooob8wT τον αποθηκεύετε και εάν ποτέ τον ξεχάσετε, από το τερματικό strongpw linuxmint.gr και @rn@k1White+PX για να τον ξαναβρείτε.
 
Σημαντικό για να μην έχετε ποτέ λάθος κωδικό για κάθε ιστοχώρο βάλτε την πλήρη ονομασία πχ paypal.com, στο παράδειγμα είναι το linuxmint.gr
 
Από το τερματικό στο ήδη υπάρχον αρχείο θα βάλετε τον κώδικα.
Κώδικας: [Επιλογή]
sudo gedit  /etc/bash.bashrc
Και στο τέλος του κειμένου κάνετε επικόλληση το παρακάτω.
Κώδικας: [Επιλογή]
strongpw() {
    echo -n "Enter secret: "
    read -r
    echo '' # line break
    echo -n "$REPLY:$1" | sha256sum | perl -ne "s/([0-9a-f]{2})/print chr hex \$1/gie" | base64 | tr +/ Ea | cut -b 1-20
}
Πριν το κλείσετε σώνετε το έγγραφο.

Τώρα ανοίγοντας το τερματικό με την εντολή strongpw και το όνομα του ιστοχώρου που σας ενδιαφέρει μαζί με τον μάστερ κωδικό σας θα δημιουργεί ένα δυνατό κωδικό που δύσκολα θα βρίσκεται. Απλά δημιουργήστε ένα μάστερ κωδικό αρκετά δυνατό αλλά που να τον θυμάστε και το όνομα των ιστοχώρων πλήρες για να μην τους ξεχνάτε πχ linuxmint.gr.
Πλεονέκτημα δεν χρειάζεται να γράφετε και να αποθηκεύετε κωδικούς, μειονέκτημα εάν ποτέ ξεχάσετε κάποιον κωδικό θα πρέπει να έχετε μαζί τον Linux υπολογιστή σας ή κάποιον άλλο Linux για να βάλετε πάλι τον κώδικα στο /etc/bash.bashrc.
« Τελευταία τροποποίηση: Ιούνιος 12, 2015, 04:28:42 μμ by panpan »
[Υπογραφή]
Lenovo G50-30 with Windows 8.1 pre install Kernel: 3.13.0-24-generic x86_64 Linux Mint 17.0.2 Xfce, Cinnamon, Mate
RAM 2 GB Dual core Intel Celeron CPU N2840
[/Υπογραφή]
Οδηγοί – Θέματα panpan - Για να βοηθηθείς καλύτερα από το Φόρουμ στον Οδηγό Χρήσης Linux Mint στην κεντρική σελίδα, σου λέει πως να φτιάξεις την υπογραφή.
Ο δείκτης ευτυχίας της ζωής μας, ορίζεται από την συνάρτηση, όχι του τι έχουμε, αλλά τι κάνουμε με αυτά που έχουμε.
blog panpan

Αποσυνδεδεμένος talos

  • To be or not to be is true
  • Amazing Μint Guru
  • ********
  • Μηνύματα: 1923
  • Thanked: 92 times
  • Karma: 83
  • Church of the SubGenius
    • Προφίλ
Απ: HOWTO: Εξυπνοι κωδικοί για sites
« Απάντηση #3 στις: Ιούνιος 11, 2015, 01:43:54 μμ »
Μερικές διευκρινήσεις:

* Εδώ https://github.com/salsifis/ss64-password-generators υπάρχουν υλοποιήσεις του αλγόριθμου σε powershell (δηλαδή windows) και σε javascript (δηλαδή παντού). Και είναι ζήτημα  ενός καφέ η υλοποίηση του αλγορίθμου σε οποιαδήποτε γλώσσα (αρκεί βέβαια να έχει καλές βιβλιοθήκες).
Άρα δεν απαιτεί να έχεις κάπου ένα σύστημα με Unix  για τους κωδικούς.
* Επίσης υπάρχει το http://ss64.com/pass/ που κάνει την δουλεία, άρα δεν είναι καν απαραίτητο να το περάσεις κάπου αλλού

Δεν ξέρω αν είναι πυρηνική επιστήμη η έννοια της συνάρτησης. Η "νέα παιδαγωγική" της δεκαετίας του 70, έχει περάσει την διδασκαλία της έννοιας στο δημοτικό, και, διορθώσεις δεκτές, από την προηγούμενη χιλιετία, τα παιδιά την μαθαίνουν από την τρίτη δημοτικού. Δεν είναι απαραίτητο βέβαια να καταλάβει κανείς τον μηχανισμό για να το δουλέψει, αλλά επιβάλετε να σηκώνουμε και το καπό της μηχανής καμιά φορά.
Ο τρόπος αυτός, δηλαδή το πέρασμα των αλατισμένων κωδικών μέσα από μια κρυπτογραφική συνάρτηση είναι ο συνήθης τρόπος αποθήκευσης κωδικών, τόσο στο Unix, όσο και για τα διάφορα web sites. (Συμβουλή: Αν κάποιο site σας στείλει τον κωδικό σας, μετά που πατήσετε το κουμπί "ξέχασα τον κωδικό μου", τότε γνωρίζει τον κωδικό σας, άρα τον κρατάει αποθηκευμένο ως έχει χωρίς τα παραπάνω αλατοπίπερα.  Αν συμβεί αυτό διαγραφτείτε αμέσως από το συγκεκριμένο τόπο.)

 
ΥΓ1: Εδώ μέσα δεν συνηθίζουμε να σβήνουμε δημοσιεύσεις.
-- Λίστα ΟδηγώνΧρήσεων - Οδηγός Χρήσης του linuxmint.gr - Οδηγός Χρήσης ΒΒcode - Δημιουργία υπογραφής - IRC --
Έκλεψα κι έκρυψα σε ξύλο κουφωτό το σπόρο του πυρός, το δάσκαλο για πάσα τέχνη των θνητών, προίκα μεγάλη.
Για τέτοιο κρίμα πληρώνω μετέωρος στην ερημιά, καρφωμένος σε τούτο το βράχο.

(εν διαστάσει)

Αποσυνδεδεμένος panpan

  • Great Mint Guru
  • ******
  • Μηνύματα: 858
  • Thanked: 60 times
  • Karma: 15
  • Παν μέτρον άριστον = Ισορροπία
    • Προφίλ
Απ: HOWTO: Εξυπνοι κωδικοί για sites
« Απάντηση #4 στις: Ιούνιος 12, 2015, 04:34:14 μμ »
Παράθεση
* Επίσης υπάρχει το http://ss64.com/pass/ που κάνει την δουλεία, άρα δεν είναι καν απαραίτητο να το περάσεις κάπου αλλού
Φίλε μου talos με τόσους  keyloggers που κυκλοφορούν στο διαδίκτυο καλύτερα να κάνει κάποιος τον κόπο  να εγκαταστήσει τον κώδικα στον υπολογιστή  παρά να πληκτρολογεί τους μάστερ κωδικούς του στο διαδίκτυο!!!
[Υπογραφή]
Lenovo G50-30 with Windows 8.1 pre install Kernel: 3.13.0-24-generic x86_64 Linux Mint 17.0.2 Xfce, Cinnamon, Mate
RAM 2 GB Dual core Intel Celeron CPU N2840
[/Υπογραφή]
Οδηγοί – Θέματα panpan - Για να βοηθηθείς καλύτερα από το Φόρουμ στον Οδηγό Χρήσης Linux Mint στην κεντρική σελίδα, σου λέει πως να φτιάξεις την υπογραφή.
Ο δείκτης ευτυχίας της ζωής μας, ορίζεται από την συνάρτηση, όχι του τι έχουμε, αλλά τι κάνουμε με αυτά που έχουμε.
blog panpan

Αποσυνδεδεμένος talos

  • To be or not to be is true
  • Amazing Μint Guru
  • ********
  • Μηνύματα: 1923
  • Thanked: 92 times
  • Karma: 83
  • Church of the SubGenius
    • Προφίλ
Απ: HOWTO: Εξυπνοι κωδικοί για sites
« Απάντηση #5 στις: Ιούνιος 12, 2015, 04:46:16 μμ »
Είναι προφανές ότι  η χρήση ενός τρίτου site απέχει πολύ από το να είναι ιδανική λύση. Η χρήση του όμως δεν περνάει κωδικούς από το καλώδιο, τουλάχιστον εάν του έχεις εμπιστοσύνη οτι δεν θα αλλάξει τον κώδικα. Αν δεν του έχεις, τότε τον κώδικα του τον έχεις και μπορείς να το βάλεις σε κάποιο σερβερ.

Αν όμως έχεις keylogger στο μηχάνημα  (sudo apt-get install logkeys) τότε δεν έχεις την παραμικρή προστασία, είτε το έχεις τοπικά, είτε το τρέχεις απομακρυσμένα.
-- Λίστα ΟδηγώνΧρήσεων - Οδηγός Χρήσης του linuxmint.gr - Οδηγός Χρήσης ΒΒcode - Δημιουργία υπογραφής - IRC --
Έκλεψα κι έκρυψα σε ξύλο κουφωτό το σπόρο του πυρός, το δάσκαλο για πάσα τέχνη των θνητών, προίκα μεγάλη.
Για τέτοιο κρίμα πληρώνω μετέωρος στην ερημιά, καρφωμένος σε τούτο το βράχο.

(εν διαστάσει)