Παίζοντας με την κρυπτογράφηση και τον πηγαίο κώδικα

dsyrmalis | Κυρ, 05/26/2013 - 21:27 | 7' | 3

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

Τα άτομα αυτά επίσης έχουν τη συνήθεια να κρυπτογραφούν τα δεδομένα τους αλλά και την ηλεκτρονική τους αλληλογραφία.Για το σκοπό αυτό χρησιμοποιούν το GnuPG (GNU Privacy Guard). Ακόμα και έτσι όμως οι απαιτητικοί χρήστες δεν ικανοποιούνται, αφού θεωρούν δεσμευτικό το όριο των 4096 bit που έχει εξ ορισμού το κλειδί της εφαρμογής. Τι θα λέγατε να ξεπερνούσαμε και τα δύο αυτά προβλήματα; Να μεταγλωττίζαμε δηλαδή το πακέτο απο τον πηγαίο του κώδικα και να το τροποποιούσαμε αυξάνοντας ακόμα περισσότερο την ασφάλεια του;

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

Για αρχή θα κατεβάσουμε τον πηγαίο κώδικα. Υπάρχουν δύο κύριες επιλογές εδώ.Η σειρά 1x και 2x. Μπορούμε να επιλέξουμε άφοβα ότι θέλουμε ανάλογα με το γούστο μας αφού η σειρά 1x θα συνεχίσει να συντηρείται και η σειρά 2x να αναπτύσσεται. Το γιατί υπάρχουν δύο κύριες εκδόσεις έχει να κάνει με τις πολλές αλλαγές που έγιναν στη δεύτερη έκδοση οι οποίες δεν ικανοποιούν ή δεν καλύπτουν απαραίτητα κάθε πιθανή ανάγκη.

Να σημειώσουμε εδώ πως μάλλον ήδη έχουμε κάποια έκδοση του GnuPG εγκατεστημένη. Για να δούμε ποιά δίνουμε απλώς στο τερματικό την εντολή gpg --version και θα πάρουμε κάτι σαν:

gpg (GnuPG) 2.0.19
libgcrypt 1.5.0
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Εμάς όμως μας ενδιαφέρει ο πηγαίος κώδικας. Κατεβάζουμε το αρχείο μας απο το ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.gz
Πάμε τώρα στο φάκελο που αποθηκεύτηκε (πχ cd /home/Όνομαχρήστη/Downloads/ και ξεκινάμε αποσυμπιέζοντας το:

tar -xvzf gnupg-1.4.9.tar.gz

Μόλις δημιουργήθηκε ο φάκελος gnupg-1.4.9.

Μπαίνουμε εκεί και συνεχίζουμε στον υποφάκελο g10 ανοίγοντας με τον κειμενογράφο μας το αρχείο keygen.c. Με το Kwrite πάμε στο Edit και επιλέγουμε Find για το παρακάτω:

unsigned nbits,min,def=2048,max=4096;

Είναι στη γραμμή 1516 και όπως καταλαβαίνουμε το max=4096 είναι ο περιορισμός που θα πρέπει να αλλάξουμε. Ας βάλουμε μια μεγαλύτερη τιμή όπως 16328 και ας σώσουμε τις αλλαγές.

Βεβαιωνόμαστε πως έχουμε εγκατεστημένα τα πακέτα gcc και make και συνεχίζουμε με ./configure && make && make install αφού πρώτα αποκτήσουμε δικαιώματα Root.

Αν όλα πάνε καλά δίνοντας την εντολή gpg --version θα δούμε το παρακάτω:

gpg (GnuPG) 1.4.9
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB

Ας πάμε τώρα να φτιάξουμε το νέο μας κλειδί:
gpg --gen-key

Αν πάρετε κάποιο μήνυμα σφάλματος όπως gnupg/gpg.conf:4: invalid option και gpg: /home/dio/.gnupg/gpg.conf:5: invalid option τότε κάνετε comment τις γραμμές στο αντίστοιχο αρχείο ως εξής:
#debug-level basic
#log-file socket:///home/dio/.gnupg/log-socket

gpg --gen-key
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1

DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 16328 bits long.
What keysize do you want? (2048) 16000
Requested keysize is 16000 bits

Αυτό ήταν. Η δική μας βελτιωμένη έκδοση του GnuPG είναι έτοιμη χωρίς τον προηγούμενο ενοχλητικό περιορισμό των 4096 bits. Το κυριότερο όμως είναι πως πήραμε μια γεύση για την ελευθερία και την ευελιξία που μας παρέχει το Ανοικτό Λογισμικό.

*Η εγκατάσταση πακέτων απο τον πηγαίο τους κώδικα μπορεί να γίνει και με μάλλον καλύτερους τρόπους απο τα κλασσικά make και make install όμως εδώ καλύψαμε τη βασική περίπτωση.

Δώσε αστέρια!

MO: 5 (ψήφοι: 1)

Σχόλια

Σε όποιους αρέσει το ζήτημα και ασχολούνται με την ασφάλεια πιστεύω πως θα βρουν ενδιαφέρον τους δύο πιο κάτω συνδέσμους:

[url=http://www.hardmac.com/news/2010/03/08/rsa-1024-bits-key-encryption-cra… 1024-bits Key Encryption Cracked![/url]
[url=http://web.eecs.umich.edu/~valeria/research/publications/DATE10RSA.pdf](2) Ένα .pdf πιο αναλυτικό απο το Πανεπιστήμιο του Michigan[/url]