GNUPG
Z wiki linux-user
(dopisanie strony) |
(Szyfrowanie i deszyfrowanie dokumentów za pomocą GnuPG) |
||
Linia 1: | Linia 1: | ||
[[Category:Bezpieczeństwo]] | [[Category:Bezpieczeństwo]] | ||
== GNUPG == | == GNUPG == | ||
− | + | '''GnuPG''' ang ''GNU Privacy Guard'', udostępniany na licencji GNU, jest programem umożliwiającym szyfrowanie danych poprzez parę kluczy. Do szyfrowania informacji jest używany klucz publiczny, każdy kto chce zaszyfrować wiadomość dla właściciela klucza prywatnego musi być w posiadaniu klucza publicznego, natomiast odszyfrować wiadomość można jedynie za pomocą klucza prywatnego, który powinien być w wyłącznym posiadaniu adresata. '''GnuPG''' domyślnie obsługuje się w konsoli, jednak dostępne są nakładki graficzne np GPA dla systemu Linux lub WinPT dla Windowsa. Istnieje również plugin dla klientów pocztowych o nazwie Enigmail, który można zainstalować np do użytku wspólnie z klientem [http://linux-user.eu/index.php/51-firefox-thunderbird-w-wersji-15 Mozilla Thunderbird]. | |
+ | === Pobieranie GnuPG === | ||
+ | Źródła programu '''GnuPG''' możemy pobrać za darmo ze strony [http://www.gnupg.org/ www.gnupg.org], jednak w większości systemów albo pakiet będzie już zainstalowany możemy to sprawdzić za pomocą np polecenia | ||
+ | rpm -qa gnupg | ||
+ | wynik powinien być podobny do | ||
+ | gnupg-1.4.12-1.fc17.x86_64 | ||
+ | jeśli jednak nie jesteśmy w posiadaniu zainstalowanego programu GnuPG to w zależności od posiadanej dystrybucji na 99% będziemy mogli je zainstalować przy użyciu repozytoriów<br /> | ||
+ | w systemach opartych o RH | ||
+ | yum install gnupg | ||
+ | w systemach opartych o system Debian | ||
+ | apt-get install gnupg | ||
+ | GnuPG działa na procesorach GNU/Linux with x86, alpha, mips, sparc64, m68k lub powerpc. Więcej odnośnie obsługiwanych systemów i architektur można przeczytać na stronie [http://www.gnupg.org/download/supported_systems.en.html www.gnupg.org/download/supported_systems.en.html]. | ||
+ | === Tworzenie kluczy === | ||
+ | Na początku musimy utworzyć parę kluczy publiczny oraz prywatny, będziemy ich używać za każdym razem, kiedy będziemy chcieli stworzyć nowe klucze GnuPG w systemie. Używając poniższej komendy pierwszy raz GnuPG stworzy w systemie odpowiednie foldery oraz pliki będzie to wyglądał mniej więcej tak | ||
+ | To create a new key-pair, use the following command: | ||
+ | # gpg --gen-key | ||
+ | gpg (GnuPG) 1.0.7; Copyright (C) 2000 Free Software Foundation, Inc. | ||
+ | This program comes with ABSOLUTELY NO WARRANTY. | ||
+ | This is free software, and you are welcome to redistribute it | ||
+ | under certain conditions. See the file COPYING for details. | ||
+ | gpg: /root/.gnupg: directory created | ||
+ | gpg: /root/.gnupg/options: new options file created | ||
+ | gpg: you have to start GnuPG again, so it can read the new options file | ||
+ | używając tej komendy po raz drugi przejdziemy już do tworzenia faktycznych kluczy (prywatnego i publicznego). | ||
+ | # gpg --gen-key | ||
+ | gpg (GnuPG) 1.4.12; Copyright (C) 2012 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) RSA and RSA (default) | ||
+ | (2) DSA and Elgamal | ||
+ | (3) DSA (sign only) | ||
+ | (4) RSA (sign only) | ||
+ | Your selection? '''1''' | ||
+ | RSA keys may be between 1024 and 4096 bits long. | ||
+ | What keysize do you want? (2048) '''Enter''' | ||
+ | Please specify how long the key should be valid. | ||
+ | 0 = key does not expire | ||
+ | <n> = key expires in n days | ||
+ | <n>w = key expires in n weeks | ||
+ | <n>m = key expires in n months | ||
+ | <n>y = key expires in n years | ||
+ | Key is valid for? (0) '''Enter''' | ||
+ | Key does not expire at all | ||
+ | Is this correct? (y/N) '''y''' | ||
+ | You need a user ID to identify your key; the software constructs the user ID | ||
+ | from the Real Name, Comment and Email Address in this form: | ||
+ | "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" | ||
+ | Real name: '''Jan''' | ||
+ | Email address: jan@test1234.pl | ||
+ | Comment: Moje klucze | ||
+ | You selected this USER-ID: | ||
+ | "jan (Moje klucze) <jan@test1234.pl>" | ||
+ | Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O | ||
+ | Enter passphrase: haslo1234567890 | ||
+ | Repeat passphrase: haslo1234567890 | ||
+ | We need to generate a lot of random bytes. It is a good idea to perform | ||
+ | some other action (type on the keyboard, move the mouse, utilize the | ||
+ | disks) during the prime generation; this gives the random number | ||
+ | generator a better chance to gain enough entropy.'''(naciskaj cokolwiek na klawiaturze, ruszaj myszką, wykonuj jakieś operacje na komputerze)''' | ||
+ | jgpg: /root/.gnupg/trustdb.gpg: trustdb created | ||
+ | gpg: key B7939437 marked as ultimately trusted | ||
+ | public and secret key created and signed. | ||
+ | gpg: checking the trustdb | ||
+ | gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model | ||
+ | gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u | ||
+ | pub 2048R/B7939437 2012-09-11 | ||
+ | Key fingerprint = 3AFD 3E8A 4B50 EBF9 88D5 6325 4A39 34B5 B793 9437 | ||
+ | uid jan (Moje klucze) <jan@test1234.pl> | ||
+ | sub 2048R/64360F15 2012-09-11 | ||
+ | Tworzenie kluczy publicznego i prywatnego zakończyło się sukcesem. Klucze znajdują się w katalogu ''/root/.gnupg'' '''pubring.gpg''' oraz '''secring.gpg''' | ||
+ | === Eksportowanie kluczy dla użytkowników === | ||
+ | Po poprawnym utworzeniu kluczy jako użytkownik [[root]], należy wyeksportować klucz publiczny dla użytkowników. Pamiętaj nigdy nie rób tego z kluczem prywatnym!<br /> | ||
+ | Aby udostępnić w wygodny sposób Twój klucz publiczny (do formy czytelnej) wydajemy polecenie | ||
+ | gpg --export -ao klucz_publiczny | ||
+ | po tej operacji w katalogu w którym obecnie się znajdujemy utworzy się plik o nazwie klucz_publiczny (może być użyta dowolna nazwa), który powinien wyglądać mniej więcej tak | ||
+ | vim klucz_publiczny | ||
+ | -----BEGIN PGP PUBLIC KEY BLOCK----- | ||
+ | Version: GnuPG v1.4.12 (GNU/Linux) | ||
+ | mQENBFBO6GsBCADA2m1h36METjhR1kqyUeh/VuhPFX46DRR+MDwqbQghz8Q0iDTR | ||
+ | UpZJtYuX3NcApvYkQ9AdYTfuAlqBAtqlNzWx8YZ05+BMrfKMjyd0LqxBpNcAhD/3 | ||
+ | FGIo4NJ+bNSiI8J0b4+/u03gbHltrqohni9GbvvkBz0gAxIK8uRMnBvBim5DQOue | ||
+ | ZOG4ZnjxkL3rh5AowPWeTQmGJzPVIp6OFNaqemGoLjhtwU8L+H6MpUNnCpLNApof | ||
+ | 5NAuCYDvYbzk1F678jSIiV1VCPYEK3bNm+NPVlsDi5A3ISHlC/TMuhloGtR9Y73c | ||
+ | /QYyChr9kjqTn9PXLaxyB+FaEutw03mddk4lABEBAAG0K3NsYXdlayAoTW9qZSBr | ||
+ | bHVjemUpIDxzbGF3ZWtAbGludXgtdXNlci5ldT6JATgEEwECACIFAlBO6GsCGwMG | ||
+ | CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEo5NLW3k5Q3fLAH/iHTtfMSi9lL | ||
+ | mdXamAPysaI5aAMGTj28OKjR2r3BzwlfW3jwa+PqP+8SbsIIUdmvugD4VsfXINKz | ||
+ | sNIhsNes8MH7TD/R8x2hw9psFelE4XJ2r6HyXz5/KBFPIpCCXzl6ZlHqkKh4Cnod | ||
+ | hFD7eaK5VwmCQjfGCNUkRC1k6rCndSJlGnbjzessCsm/Qg0HpjIWrCELGDfDNs5r | ||
+ | rrH9wfPEeYiKT2/b2A1Z7EvaM1ZupVIkuM0Nsmxvcvvd2w9rHF0h/GnRqsD3CEK/ | ||
+ | GPpdai3/IBt1m63X86tcj3tBP2CaSbkPAVc3JrUuiC5vK8FEOSO1DZZQtBPBcZvZ | ||
+ | o6IpgAiGDaq5AQ0EUE7oawEIALcz8Lsb/HpszRyQYZMRS8GG0PkL4efC9Ox8g7si | ||
+ | ACYFBQ+MwsN+8LDbSe7Mq5K5CSbjQU2iLNtqwfp8M7Eg90FtOaq7gplBbDDfpM5+ | ||
+ | GS1rwVKB2Rzl0l1Mvzfvr8XMMmuV1jtX/jhE+CgkFZcvvg2ntnxirI8a8iP8FDyz | ||
+ | ZSVlV2dPOgpyOEDOjx3u+tEshNh2CDPxbFHOok93qlwXKRF3Fgr9jBzSSQb82z/6 | ||
+ | fIuawngnnvPTk1oV0VB63aArl1/zp3bx7z4g2ikoZyPDnv5o59DMysZ5a8vKWAy2 | ||
+ | HDQVXGZ1iAypsylDhe2OlP72kIgY1VBhx3JNGYERiO9Nu5EAEQEAAYkBHwQYAQIA | ||
+ | CQUCUE7oawIbDAAKCRBKOTS1t5OUN90JB/sG69NHfret8bTuyRWpUyyXyCG1mCUu | ||
+ | bJ66GywgZCR4V75f9zyjqQTJBdFtyFqSK4kdfecXQUhWBuA4GV9Xse1ZL/7qeU8X | ||
+ | eFGG3keNhaTOvgGcQyNRpQXNaKwr5NIvCO1wjXTYKxLc41K1lJdeYSTR+ayCN+PN | ||
+ | BiDI7fsO284LLTnwUSv+X0nOJDJK2AJNLrWTLYAZ1hm0tq8XKiLztHTWxt8574XY | ||
+ | 58u+QaKchoJ83o+X7O0RUeAeWl5L+ksD78J2eF3b+u4v/MZKvQBOLj8gPPBVpAWn | ||
+ | S9MjeoEYRtcfPczR19sipMRLMQWfYH4fRoqFsrsmIybHjhvX/vJ/SkH5 | ||
+ | =hyOQ | ||
+ | -----END PGP PUBLIC KEY BLOCK----- | ||
+ | |||
+ | === Importowanie kluczy użytkowników === | ||
+ | Aby zaimportować klucz uzyskany od innego użytkownika należy pobrać klucz na maszynę, gdzie zainstalowane jest oprogramowanie GnuPG i wydać polecenie | ||
+ | # gpg --import nazwa_pliku_z_kluczem | ||
+ | gpg: key 3487965A: public key imported | ||
+ | gpg: /root/.gnupg/trustdb.gpg: trustdb created | ||
+ | gpg: Total number processed: 1 | ||
+ | gpg: | ||
+ | imported: 1 | ||
+ | Powyższa komenda doda nowy klucz ''nazwa_pliku_z_kluczem'' do bazy kluczy GnuPG. | ||
+ | |||
+ | === Podpisywanie kluczy użytkowników === | ||
+ | Jeśli już zaimportowaliśmy klucz użytkownika do naszej bazy kluczy i jesteśmy pewni, że dostarczony klucz jest faktycznie kluczem danego użytkownika to powinniśmy podpisać jego klucz.<br /> | ||
+ | Aby podpisać klucz dla nazwy NASZA_FIRMA wydajemy następujące polecenie | ||
+ | # gpg --sign-key NASZA_FIRMA | ||
+ | pub 1024D/3487965A created: 2001-07-02 expires: never | ||
+ | sub 1024g/0146F594 created: 2001-07-02 expires: never | ||
+ | (1). NASZA_FIRMA. <noc@openna.com> | ||
+ | pub | ||
+ | trust: -/q | ||
+ | 1024D/3487965A created: 2001-07-02 expires: never | ||
+ | trust: -/q | ||
+ | Fingerprint: 7A3D 6871 2DF1 9210 8ABE AF36 D460 86D5 3487 | ||
+ | 965A | ||
+ | NASZA_FIRMA. <noc@openna.com> | ||
+ | Are you really sure that you want to sign this key | ||
+ | with your key: "Gerhard Mourani <gmourani@openna.com>" | ||
+ | Really sign? '''y''' | ||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: "Gerhard Mourani <gmourani@openna.com>" | ||
+ | 1024-bit DSA key, ID 2E5378F7, created 2002-04-24 | ||
+ | Enter passphrase: | ||
+ | PAMIĘTAJ powinieneś podpisywać tylko te klucze co do których nie masz najmniejszej wątpliwości, że są prawdziwe. | ||
+ | |||
+ | === Sprawdzanie sygnatury GPG === | ||
+ | Jak sprawdzić czy dane zaszyfrowane są faktycznie przez Ciebie?? wydajemy poniższe polecenie na zaszyfrowanym pliku | ||
+ | gpg --verify zaszyfrowane_dane | ||
+ | |||
+ | === Szyfrowanie i deszyfrowanie danych === | ||
+ | Aby zaszyfrować jakiś plik z danymi należy wykonać komendę | ||
+ | gpg -sear MOJA_FIRMA zaszyfrowane_dane | ||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: "slawek (Moje klucze) <slawek@linux-user.eu>" | ||
+ | 2048-bit RSA key, ID B7939437, created 2012-09-11 | ||
+ | Enter passphrase: '''(to samo hasło, które używałeś do podpisywania kluczy)''' | ||
+ | |||
+ | w wyniku powyższej komendy powinien powstać zaszyfrowany plik zaszyfrowane_dane.asc | ||
+ | Aby odszyfrować tak powstały plik należy wydac polecenie | ||
+ | #gpg -d zaszyfronany_plik.asc | ||
+ | Enter passphrase: '''(to samo hasło, które używałeś do podpisywania kluczy)''' | ||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: "slawek (Moje klucze) <slawek@linux-user.eu>" | ||
+ | 2048-bit RSA key, ID 64360F15, created 2012-09-11 (main key ID B7939437) | ||
+ | gpg: encrypted with 2048-bit RSA key, ID 64360F15, created 2012-09-11 | ||
+ | "slawek (Moje klucze) <slawek@linux-user.eu>" | ||
+ | To jest plik z bardzo ważnymi danymi!!!!!!!!!!!!!!!!!!!! | ||
+ | gpg: Signature made Tue 11 Sep 2012 10:21:42 AM CEST using RSA key ID B7939437 | ||
+ | gpg: Good signature from "slawek (Moje klucze) <slawek@linux-user.eu>" | ||
+ | Dane zawarte w pliku to ''To jest plik z bardzo ważnymi danymi!!!!!!!!!!!!!!!!!!!!''. | ||
<br /><google1 style="4"></google1> | <br /><google1 style="4"></google1> |