<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Bezpieczeństwo - Tag - Notes about stuff</title>
        <link>/tags/bezpiecze%C5%84stwo/</link>
        <description>Bezpieczeństwo - Tag - Notes about stuff</description>
        <generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 15 Apr 2025 10:39:22 &#43;0200</lastBuildDate><atom:link href="/tags/bezpiecze%C5%84stwo/" rel="self" type="application/rss+xml" /><item>
    <title>PGP i szyfrowanie</title>
    <link>/posts/2025-03-29_pgp_i_szyfrowanie/</link>
    <pubDate>Tue, 15 Apr 2025 10:39:22 &#43;0200</pubDate>
    <author>Kamila Chyla</author>
    <guid>/posts/2025-03-29_pgp_i_szyfrowanie/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/man.jpg" referrerpolicy="no-referrer">
            </div><p>Dzisiaj przygotowałam mały poradnik &#x1f4d6; dla tych, którzy dotychczas nie używali szyfrowania 🔐 wiadomości, nie posiadają swojego klucza 🔑 publicznego i nigdy nie podpisywali komunikacji elektronicznej 💻. Uwaga: tylko dla fanów terminala &#x1f604;.</p>
<h2 id="plan">Plan</h2>
<p>W pracy zawodowej już kilkukrotnie spotkałam się z sytuacją, w której ktoś nie do końca wiedział, czym różni się GPG od PGP. Skróty są dość podobne, używane są też w podobnych kontekstach, dlatego warto zacząć od definicji, która pozwoli odróżnić jedno od drugiego.</p>
<p>W kolejnym kroku wygenerujemy nasz klucz. W rzeczywistości tworzenie klucza przy użyciu gpg oznacza utworzenie <em>pary</em> kluczy: klucza prywatnego oraz klucza publicznego. Klucz publiczny można opublikować (np. na swojej stronie domowej b ądź na serwerze kluczy).</p>
<p>Sprawdzimy więc, jak wygenerować do tego celu tekst &ldquo;klucza publicznego&rdquo;.</p>
<h2 id="definicja">Definicja</h2>
<p><strong>GnuPG</strong> (Gnu Privacy Guard) jest pełną i wolną implementacją <strong>standardu OpenPGP</strong> (Pretty Good Privacy) zdefiniowanego przez <a href="https://www.ietf.org/rfc/rfc4880.txt" target="_blank" rel="noopener noreffer ">RFC4880</a> znanego pod nazwą <strong>PGP</strong>.</p>
<div class="details admonition note open">
    <div class="details-summary admonition-title">
        <i class="icon far fa-pen-to-square" aria-hidden="true"></i>Zapamiętaj<i class="details-icon fas fa-angle-right" aria-hidden="true"></i>
    </div>
    <div class="details-content">
        <div class="admonition-content"><ul>
<li><strong>PGP</strong> to nazwa standardu opisanego w dokumencie <a href="https://www.ietf.org/rfc/rfc4880.txt" target="_blank" rel="noopener noreffer ">RFC4880</a></li>
<li><strong>GnuPG</strong> to wolna implementacja tego standardu</li>
</ul>
</div>
    </div>
</div>
<h2 id="do-dzieła">Do dzieła!</h2>
<h3 id="generowanie-pary-kluczy">Generowanie pary kluczy</h3>
<p>Aby wygenerować parę kluczy (publiczny i prywatny), przejdź do wiersza poleceń w Twoim ulubionym terminalu i wprowadź polecenie:</p>
<p><code>gpg --full-generate-key</code> (lub - w zależności od wersji gpg - <code>gpg --gen-key</code>)</p>
<p><div class="details admonition tip open">
    <div class="details-summary admonition-title">
        <i class="icon far fa-lightbulb" aria-hidden="true"></i>Porada<i class="details-icon fas fa-angle-right" aria-hidden="true"></i>
    </div>
    <div class="details-content">
        <div class="admonition-content"><p>GPG jest domyślnie instalowany w większości dystrybucji Linuksa. Jeśli jednak <code>gpg</code> nie jest zainstalowany, na Ubuntu czy Debianie możesz wpisać:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">    sudo apt-get update
</span></span><span class="line"><span class="cl">    sudo apt-get install gnupg</span></span></code></pre></div></div></div>
    </div>
</div>
Wprowadź swoje dane, wybierz długość klucza (4096) i czas ważności klucza (np. 2 lata).</p>
<p>Pamiętaj o tym, aby ochronić swoje klucze mocnym hasłem (przeczytaj <a href="https://theintercept.com/2015/03/26/passphrases-can-memorize-attackers-cant-guess/" target="_blank" rel="noopener noreffer ">w tym artykule (ang.)</a>, dlaczego niektóre sprytne sztuczki z zapamiętywaniem haseł nie działają). Patrz <a href="#generowanie-has%c5%82a" rel="">Generowanie hasła</a> poniżej.</p>
<div class="details admonition danger open">
    <div class="details-summary admonition-title">
        <i class="icon fas fa-bolt" aria-hidden="true"></i>Uwaga<i class="details-icon fas fa-angle-right" aria-hidden="true"></i>
    </div>
    <div class="details-content">
        <div class="admonition-content"><strong>NIGDY nie podawaj nikomu swojego klucza prywatnego!</strong></div>
    </div>
</div>
<h3 id="przykładowa-sesja">Przykładowa sesja</h3>
<p>Zobacz, jak wygląda przykładowa sesja tworzenia klucza. Utworzyłam klucz dla pana <a href="https://www.youtube.com/watch?v=AfKZclMWS1U" target="_blank" rel="noopener noreffer ">Grzegorza</a>, który jest ważny 2 lata:</p>
<ul>
<li>zaakceptowałam domyślny rodzaj klucza (ECC do podpisów i szyfrowania)</li>
<li>wybrałam rodzaj <a href="https://pl.wikipedia.org/wiki/Krzywa_eliptyczna" target="_blank" rel="noopener noreffer ">krzywej eliptycznej</a> - patrz <a href="https://pl.wikipedia.org/wiki/Kryptografia_krzywych_eliptycznych" target="_blank" rel="noopener noreffer ">kryptografia krzywych eliptycznych</a></li>
<li>podałam komentarz</li>
<li>zdefiniowałam okres ważności  (2 lata)</li>
<li>wymyślłam hasło.</li>
</ul>
<p>Program <code>gpg</code> wygenerował przy okazji certyfikat unieważenienia, który przyda mi się podczas usuwania klucza. Patrz: <a href="#usuwanie-klucza" rel="">Usuwanie klucza</a> poniżej.</p>
<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">  $ gpg --full-generate-key
</span></span><span class="line"><span class="cl">gpg <span class="o">(</span>GnuPG<span class="o">)</span> 2.4.4<span class="p">;</span> Copyright <span class="o">(</span>C<span class="o">)</span> <span class="m">2024</span> g10 Code GmbH
</span></span><span class="line"><span class="cl">This is free software: you are free to change and redistribute it.
</span></span><span class="line"><span class="cl">There is NO WARRANTY, to the extent permitted by law.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Proszę wybrać rodzaj klucza:
</span></span><span class="line"><span class="cl">   <span class="o">(</span>1<span class="o">)</span> RSA and RSA
</span></span><span class="line"><span class="cl">   <span class="o">(</span>2<span class="o">)</span> DSA and Elgamal
</span></span><span class="line"><span class="cl">   <span class="o">(</span>3<span class="o">)</span> DSA <span class="o">(</span>sign only<span class="o">)</span>
</span></span><span class="line"><span class="cl">   <span class="o">(</span>4<span class="o">)</span> RSA <span class="o">(</span>sign only<span class="o">)</span>
</span></span><span class="line"><span class="cl">   <span class="o">(</span>9<span class="o">)</span> ECC <span class="o">(</span>sign and encrypt<span class="o">)</span> *default*
</span></span><span class="line"><span class="cl">  <span class="o">(</span>10<span class="o">)</span> ECC <span class="o">(</span>tylko <span class="k">do</span> podpisywania<span class="o">)</span>
</span></span><span class="line"><span class="cl">  <span class="o">(</span>14<span class="o">)</span> Existing key from card
</span></span><span class="line"><span class="cl">Twój wybór?
</span></span><span class="line"><span class="cl">Proszę wybrać rodzaj krzywej eliptycznej:
</span></span><span class="line"><span class="cl">   <span class="o">(</span>1<span class="o">)</span> Curve <span class="m">25519</span> *default*
</span></span><span class="line"><span class="cl">   <span class="o">(</span>4<span class="o">)</span> NIST P-384
</span></span><span class="line"><span class="cl">   <span class="o">(</span>6<span class="o">)</span> Brainpool P-256
</span></span><span class="line"><span class="cl">Twój wybór?
</span></span><span class="line"><span class="cl">Okres ważności klucza.
</span></span><span class="line"><span class="cl">         <span class="nv">0</span> <span class="o">=</span> klucz nie ma określonego terminu ważności
</span></span><span class="line"><span class="cl">      &lt;n&gt;  <span class="o">=</span> termin ważności klucza upływa za n dni
</span></span><span class="line"><span class="cl">      &lt;n&gt;w <span class="o">=</span> termin ważności klucza upływa za n tygodni
</span></span><span class="line"><span class="cl">      &lt;n&gt;m <span class="o">=</span> termin ważności klucza upływa za n miesięcy
</span></span><span class="line"><span class="cl">      &lt;n&gt;y <span class="o">=</span> termin ważności klucza upływa za n lat
</span></span><span class="line"><span class="cl">Okres ważności klucza? <span class="o">(</span>0<span class="o">)</span> 2y
</span></span><span class="line"><span class="cl">Klucz traci ważność sob, <span class="m">17</span> kwi 2027, 06:27:14 CEST
</span></span><span class="line"><span class="cl">Czy wszystko się zgadza <span class="o">(</span>t/N<span class="o">)</span>? t
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">GnuPG musi utworzyć identyfikator użytkownika <span class="k">do</span> identyfikacji klucza.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Imię i nazwisko: Grzegorz Brzęczyszczykiewicz
</span></span><span class="line"><span class="cl">Adres poczty elektronicznej: grzegorz.brzęczyszczykiewicz
</span></span><span class="line"><span class="cl">To nie jest poprawny adres poczty elektronicznej
</span></span><span class="line"><span class="cl">Adres poczty elektronicznej: grzegorz@brzęczyszczykiewicz.pl
</span></span><span class="line"><span class="cl">Komentarz: To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com
</span></span><span class="line"><span class="cl">Używany zestaw znaków: „utf-8”.
</span></span><span class="line"><span class="cl">Twój identyfikator użytkownika będzie wyglądał tak:
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;Grzegorz Brzęczyszczykiewicz (To jest klucz do usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com) &lt;grzegorz@brzęczyszczykiewicz.pl&gt;&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Zmienić <span class="o">(</span>I<span class="o">)</span>mię/nazwisko, <span class="o">(</span>K<span class="o">)</span>omentarz, adres <span class="o">(</span>E<span class="o">)</span>mail, przejść <span class="o">(</span>D<span class="o">)</span>alej,
</span></span><span class="line"><span class="cl">czy <span class="o">(</span>W<span class="o">)</span>yjść z programu? d
</span></span><span class="line"><span class="cl">Musimy wygenerować dużo losowych bajtów. Dobrym pomysłem aby pomóc komputerowi
</span></span><span class="line"><span class="cl">podczas generowania liczb pierwszych jest wykonywanie w tym czasie innych
</span></span><span class="line"><span class="cl">działań <span class="o">(</span>pisanie na klawiaturze, poruszanie myszką, odwołanie się <span class="k">do</span> dysków<span class="o">)</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości
</span></span><span class="line"><span class="cl">entropii.
</span></span><span class="line"><span class="cl">Musimy wygenerować dużo losowych bajtów. Dobrym pomysłem aby pomóc komputerowi
</span></span><span class="line"><span class="cl">podczas generowania liczb pierwszych jest wykonywanie w tym czasie innych
</span></span><span class="line"><span class="cl">działań <span class="o">(</span>pisanie na klawiaturze, poruszanie myszką, odwołanie się <span class="k">do</span> dysków<span class="o">)</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości
</span></span><span class="line"><span class="cl">entropii.
</span></span><span class="line"><span class="cl">gpg: certyfikat unieważnienia został zapisany jako „/home/karma/.gnupg/openpgp-revocs.d/96D59C4A95680BAFE2A9A993E0C044266F026A36.rev”
</span></span><span class="line"><span class="cl">klucz publiczny i prywatny <span class="o">(</span>tajny<span class="o">)</span> zostały utworzone i podpisane.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">pub   ed25519 2025-04-17 <span class="o">[</span>SC<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span>
</span></span><span class="line"><span class="cl">      96D59C4A95680BAFE2A9A993E0C044266F026A36
</span></span><span class="line"><span class="cl">uid                      Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">sub   cv25519 2025-04-17 <span class="o">[</span>E<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span></span></span></code></pre></div></div>
<h3 id="uzyskanie-id-klucza">Uzyskanie ID klucza</h3>
<p>Twój klucz posiada swój identyfikator, który będzie potrzebny podczas wykonywania różnych operacji związanych z szyfrowaniem czy podpisywaniem dokumentów. Aby sprawdzić swój indentyfikator, wykonaj operację
<code>gpg --list-key [twój@email]</code>. W ten sposób wyświetlisz informację o swoim kluczu publicznym (&ldquo;pub&rdquo;), w tym jego identyfikator będący napisem złożonym z liczb i znaków.</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --list-key grzegorz
</span></span><span class="line"><span class="cl">gpg: sprawdzanie bazy zaufania
</span></span><span class="line"><span class="cl">gpg: marginals needed: <span class="m">3</span>  completes needed: <span class="m">1</span>  trust model: pgp
</span></span><span class="line"><span class="cl">gpg: poziom: <span class="m">0</span> poprawnych:   <span class="m">3</span> podpisanych:   <span class="m">0</span> zaufanie: 0-,0q,0n,0m,0f,3u
</span></span><span class="line"><span class="cl">gpg: następne sprawdzanie bazy odbędzie się 2026-03-27
</span></span><span class="line"><span class="cl">pub   ed25519 2025-04-17 <span class="o">[</span>SC<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span>
</span></span><span class="line"><span class="cl">      96D59C4A95680BAFE2A9A993E0C044266F026A36
</span></span><span class="line"><span class="cl">uid    <span class="o">[</span>   absolutne   <span class="o">]</span> Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">sub   cv25519 2025-04-17 <span class="o">[</span>E<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span></span></span></code></pre></div></div>
<p>Klucz Grzegorza posiada identyfikator <em>96D59C4A95680BAFE2A9A993E0C044266F026A36</em>. Ten sam identyfikator, tylko podzielony na grupy po cztery cyfry szesnastkowe, otrzymamy wykonując polecenie <code>gpg --fingerprint &lt;email lub nazwa&gt; </code>:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --fingerprint Grzegorz
</span></span><span class="line"><span class="cl">pub   ed25519 2025-04-17 <span class="o">[</span>SC<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span>
</span></span><span class="line"><span class="cl">      96D5 9C4A <span class="m">9568</span> 0BAF E2A9  A993 E0C0 <span class="m">4426</span> 6F02 6A36
</span></span><span class="line"><span class="cl">uid    <span class="o">[</span>   absolutne   <span class="o">]</span> Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">sub   cv25519 2025-04-17 <span class="o">[</span>E<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span></span></span></code></pre></div></div>
<h3 id="jak-edytować-klucz">Jak edytować klucz</h3>
<p>Czasami potrzebujemy zmienić dane w naszym kluczu, na przykład chcemy zmienić datę wygaśnięcia klucza lub hasło; chcemy podpisać klucz lub dodać czy usunąć zwiazane z kluczem tożsamości (emaile) bądź zdjęcia.</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">gpg --edit-key &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">gpg&gt;</span></span></code></pre></div></div>
<p>Jeśli pan Grzegrz chciałby dodać nowy adres mailowy, może użyć polecenia <code>adduid</code>. Będzie mógł posługiwać się dwoma tożsamościami. Oto sesja, w której dodaję tożsamość związaną z innym adresem mailowym, grześ@onet.pl:</p>
<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --edit-key grzegorz@brzęczyszczykiewicz.pl
</span></span><span class="line"><span class="cl">gpg <span class="o">(</span>GnuPG<span class="o">)</span> 2.4.4<span class="p">;</span> Copyright <span class="o">(</span>C<span class="o">)</span> <span class="m">2024</span> g10 Code GmbH
</span></span><span class="line"><span class="cl">This is free software: you are free to change and redistribute it.
</span></span><span class="line"><span class="cl">There is NO WARRANTY, to the extent permitted by law.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Dostępny jest klucz tajny.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">sec  ed25519/E0C044266F026A36
</span></span><span class="line"><span class="cl">     utworzono: 2025-04-17  wygasa: 2027-04-17  użycie: SC
</span></span><span class="line"><span class="cl">     zaufanie: absolutne     poprawność: absolutne
</span></span><span class="line"><span class="cl">ssb  cv25519/A50DDD657F932D6D
</span></span><span class="line"><span class="cl">     utworzono: 2025-04-17  wygasa: 2027-04-17  użycie: E
</span></span><span class="line"><span class="cl"><span class="o">[</span>   absolutne   <span class="o">]</span> <span class="o">(</span>1<span class="o">)</span>. Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">gpg&gt; list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">sec  ed25519/E0C044266F026A36
</span></span><span class="line"><span class="cl">     utworzono: 2025-04-17  wygasa: 2027-04-17  użycie: SC
</span></span><span class="line"><span class="cl">     zaufanie: absolutne     poprawność: absolutne
</span></span><span class="line"><span class="cl">ssb  cv25519/A50DDD657F932D6D
</span></span><span class="line"><span class="cl">     utworzono: 2025-04-17  wygasa: 2027-04-17  użycie: E
</span></span><span class="line"><span class="cl"><span class="o">[</span>   absolutne   <span class="o">]</span> <span class="o">(</span>1<span class="o">)</span>. Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">gpg&gt; adduid
</span></span><span class="line"><span class="cl">Imię i nazwisko: Grzegorz Brzęczyszczykiewicz
</span></span><span class="line"><span class="cl">Adres poczty elektronicznej: grześ@onet.pl
</span></span><span class="line"><span class="cl">Komentarz: Test
</span></span><span class="line"><span class="cl">Używany zestaw znaków: „utf-8”.
</span></span><span class="line"><span class="cl">Twój identyfikator użytkownika będzie wyglądał tak:
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;Grzegorz Brzęczyszczykiewicz (Test) &lt;grześ@onet.pl&gt;&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Zmienić <span class="o">(</span>I<span class="o">)</span>mię/nazwisko, <span class="o">(</span>K<span class="o">)</span>omentarz, adres <span class="o">(</span>E<span class="o">)</span>mail, przejść <span class="o">(</span>D<span class="o">)</span>alej,
</span></span><span class="line"><span class="cl">czy <span class="o">(</span>W<span class="o">)</span>yjść z programu? K
</span></span><span class="line"><span class="cl">Komentarz: Testowy komentarz
</span></span><span class="line"><span class="cl">Używany zestaw znaków: „utf-8”.
</span></span><span class="line"><span class="cl">Twój identyfikator użytkownika będzie wyglądał tak:
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;Grzegorz Brzęczyszczykiewicz (Testowy komentarz) &lt;grześ@onet.pl&gt;&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Zmienić <span class="o">(</span>I<span class="o">)</span>mię/nazwisko, <span class="o">(</span>K<span class="o">)</span>omentarz, adres <span class="o">(</span>E<span class="o">)</span>mail, przejść <span class="o">(</span>D<span class="o">)</span>alej,
</span></span><span class="line"><span class="cl">czy <span class="o">(</span>W<span class="o">)</span>yjść z programu? D
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">sec  ed25519/E0C044266F026A36
</span></span><span class="line"><span class="cl">     utworzono: 2025-04-17  wygasa: 2027-04-17  użycie: SC
</span></span><span class="line"><span class="cl">     zaufanie: absolutne     poprawność: absolutne
</span></span><span class="line"><span class="cl">ssb  cv25519/A50DDD657F932D6D
</span></span><span class="line"><span class="cl">     utworzono: 2025-04-17  wygasa: 2027-04-17  użycie: E
</span></span><span class="line"><span class="cl"><span class="o">[</span>   absolutne   <span class="o">]</span> <span class="o">(</span>1<span class="o">)</span>  Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl"><span class="o">[</span>    nieznane   <span class="o">]</span> <span class="o">(</span>2<span class="o">)</span>. Grzegorz Brzęczyszczykiewicz <span class="o">(</span>Testowy komentarz<span class="o">)</span> &lt;grześ@onet.pl&gt;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">gpg&gt; quit
</span></span><span class="line"><span class="cl">Zapisać zmiany? <span class="o">(</span>t/N<span class="o">)</span> t</span></span></code></pre></div></div>
<p>Po zapisaniu zmian można sprawdzić, ze teraz istnieją dwie tożsamości:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> $ gpg --list-key grzegorz
</span></span><span class="line"><span class="cl">pub   ed25519 2025-04-17 <span class="o">[</span>SC<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span>
</span></span><span class="line"><span class="cl">      96D59C4A95680BAFE2A9A993E0C044266F026A36
</span></span><span class="line"><span class="cl">uid    <span class="o">[</span>   absolutne   <span class="o">]</span> Grzegorz Brzęczyszczykiewicz <span class="o">(</span>Testowy komentarz<span class="o">)</span> &lt;grześ@onet.pl&gt;
</span></span><span class="line"><span class="cl">uid    <span class="o">[</span>   absolutne   <span class="o">]</span> Grzegorz Brzęczyszczykiewicz <span class="o">(</span>To jest klucz <span class="k">do</span> usunięcia, wykorzystany jedynie dla celów edukacyjnych na blogu kamilachyla.com<span class="o">)</span> &lt;grzegorz@brzęczyszczykiewicz.pl&gt;
</span></span><span class="line"><span class="cl">sub   cv25519 2025-04-17 <span class="o">[</span>E<span class="o">]</span> <span class="o">[</span>wygasa: 2027-04-17<span class="o">]</span></span></span></code></pre></div></div>
<h3 id="jak-wyeksportować-klucz-publiczny">Jak wyeksportować klucz publiczny</h3>
<p>Aby wyeksportować swój klucz publiczny do pliku, użyj opcji <code>--export</code> i podaj id klucza (lub jego fragment). Pan Grzegorz mógłby zrobić to na dwa sposoby:</p>
<ul>
<li><code>gpg --output grzegorz.gpg --export grześ@onet.pl</code> - utworzyłby plik binarny grzegorz.gpg zawierający klucz publiczny</li>
<li><code>gpg --armor --export grzegorz</code> - zobaczyłby wypisany na wyjście standardowe klucz publiczny w formacie ASCII (który można przekierować do pliku, np. <code>gpg --armor --export grześ &gt; grzegorz.gpg</code>)</li>
</ul>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --armor --export grześ
</span></span><span class="line"><span class="cl">-----BEGIN PGP PUBLIC KEY BLOCK-----
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">mDMEaACDjBYJKwYBBAHaRw8BAQdAIi2VephBbmBJrtPAZVLoWnXngNPHg1ufYE8D
</span></span><span class="line"><span class="cl"><span class="o">[</span>...<span class="o">]</span>
</span></span><span class="line"><span class="cl">aAuv4qmpk+DARCZvAmo2BQJoAIOMAhsMBQkDwmcAAAoJEODARCZvAmo2wzIBAIA9
</span></span><span class="line"><span class="cl">FuaMUiwDMkCzUHo7vzx6aK0tvJHXzkRueGI2vyiBAQDGlP1Wa+S9L0e2iYLtNVbB
</span></span><span class="line"><span class="cl"><span class="nv">zM9unfpXKPHAl0MHkVsUBQ</span><span class="o">==</span>
</span></span><span class="line"><span class="cl"><span class="o">=</span>6XfT
</span></span><span class="line"><span class="cl">-----END PGP PUBLIC KEY BLOCK-----</span></span></code></pre></div></div>
<h2 id="keyring-i-importowanie">Keyring i importowanie</h2>
<h3 id="co-to-jest-keyring">Co to jest keyring</h3>
<p>gpg przechowuje klucze w &ldquo;pęku kluczy&rdquo; (ang. <em>keyring</em>). Jest to baza kluczy, do której dodawane są generowane klucze (publiczny i prywatny) oraz klucze publiczne zaimportowane z zewnątrz.</p>
<p>Dlatego wiele operacji na kluczu (edycja, wypisanie skrótu etc.) wymaga podania identyfikatora użytkownika (lub jego fragmentu) - możemy bowiem dokonywać operacji na dowolnym z nich.</p>
<h3 id="jak-zaimportować-klucz-publiczny">Jak zaimportować klucz publiczny</h3>
<p>Do zaimportowania klucza, który od kogoś otrzymaliśmy, należy użyć polecenia <code>gpg --import plik.gpg</code>. Zaimportowany klucz należy sprawdzić: zweryfikować w wiarygodny sposób, że zgadza się odcisk/skrót klucza (operacja <strong>fpr</strong>), a jeśli się zgadza, można klucz podpisać (operacja <strong>sign</strong>).</p>
<h2 id="szyfrowanie">Szyfrowanie</h2>
<h3 id="jak-zaszyfrować-plik-dla-kogoś">Jak zaszyfrować plik dla kogoś</h3>
<p>Grzegorz może teraz zaszyfrować dokument. Załóżmy, że zaimportował do swojego <em>keyringa</em> mój klucz publiczny i chce wysłać do mnie zaszyfrowany plik o nazwie <em>tajne.txt</em>:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg output tajne.txt.gpg --encrypt --recipient kamila.chyla@gmail.com tajne.txt
</span></span><span class="line"><span class="cl">$ ls tajne*
</span></span><span class="line"><span class="cl">tajne.txt  tajne.txt.gpg</span></span></code></pre></div></div>
<p>Jeśli otrzymam <em>tajne.txt.gpg</em> w mailu i zaimportowałam klucz Grzegorza do mojego <em>keyringa</em>, wówczas mogę odszyfrować plik poleceniem:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --output od_grzesia.txt --decrypt tajne.txt.gpg
</span></span><span class="line"><span class="cl">$ /bin/cat od_grzesia.txt
</span></span><span class="line"><span class="cl">Przyznaję, rozpętałem tę wojnę</span></span></code></pre></div></div>
<h3 id="jak-zaszyfrować-plik-dla-siebie">Jak zaszyfrować plik dla siebie</h3>
<p>Jeśli nie zamierzamy się nikim dzielić plikiem i chcemy go zaszyfrować hasłem, możemy użyć szyfrowania symetrycznego. Wówczas do zaszyfrowania zostanie użyty klucz pochodzący z hasła, którym zabezpieczymy szyfrowanie (i nie powinno to być to samo hasło, którym zabezpieczyliśmy klucz prywatny).</p>
<p>Na przykład, szyfruję mój plik zawierający pamiętnik:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --output pam.gpg --symmetric pamiętnik.txt
</span></span><span class="line"><span class="cl">$ ls pam*
</span></span><span class="line"><span class="cl">pam.gpg  pamiętnik.txt</span></span></code></pre></div></div>
<p>&hellip; i odszyfrowuję:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">gpg --output pamiętnik_odszyfrowany.txt --decrypt pam.gpg</span></span></code></pre></div></div>
<h2 id="jak-wygenerować-hasło">Jak wygenerować hasło</h2>
<p>Aby klucz prywatny był porządnie chroniony, należy wymyślić porządne hasło. A sprawa nie jest wcale prosta. Aby wygenerować hasło, możesz:</p>
<ul>
<li>użyć programu <a href="https://man7.org/linux/man-pages/man1/passwd.1.html" target="_blank" rel="noopener noreffer ">passwd</a> - ale ciężko te hasła zapamiętać</li>
<li>skorzystać z łatwiejszego do zapamiętania <a href="https://kwestiabezpieczenstwa.pl/diceware/" target="_blank" rel="noopener noreffer ">diceware</a> (patrz <a href="https://xkcd.com/936/" target="_blank" rel="noopener noreffer ">xkcd</a>), na przykład:
<ul>
<li>klasycznie, rzucając kostką, lub</li>
<li>możesz użyć tego prostego programu w Go (używającego <a href="https://github.com/sethvargo/go-diceware" target="_blank" rel="noopener noreffer ">go-diceware</a> ):</li>
</ul>
</li>
</ul>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-go">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">package</span><span class="w"> </span><span class="nx">main</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="s">&#34;log&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="s">&#34;strings&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="s">&#34;github.com/sethvargo/go-diceware/diceware&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">func</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="c1">// Generate 6 words using the diceware algorithm.</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">diceware</span><span class="p">.</span><span class="nf">Generate</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">nil</span><span class="w">  </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nx">log</span><span class="p">.</span><span class="nf">Fatal</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nx">log</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="nx">strings</span><span class="p">.</span><span class="nf">Join</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;-&#34;</span><span class="p">))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<h2 id="usuwanie-klucza">Usuwanie klucza</h2>
<p>Po usunięciu klucza prywatnego nie jest możliwe odwołanie (ang. <em>revocation</em>) klucza. Oznacza to, że w przypadku &ldquo;wycieku&rdquo; klucza prywatnego ktoś będzie mógł się nim posłyżyć do niecnych celów. Aby temu zapobiec, właściciel klucza prywatnego ma możliwość wygenerowania i użycia <em>certyfikatu unieważnienia</em> klucza (czyli zaimportowania tego certyfikatu).</p>
<p>Po ponownym opublikowaniu swojego unieważnionego klucza na serwerze kluczy pozostałe osoby będą mogły odświeżyć klucze z serwera i przekonać się, że klucz został unieważniony.</p>
<p>W przypadku Grzegorza, jego klucz unieważniający został wygenerowany automatycznie, więc Grzegorz może unieważnić swój klucz (importując certyfikat unieważnienia).</p>
<p>Wcześniej jednak Grzegorz musi usunąć dwukropek z wiersza certyfikatu zawierającego tekst &ldquo;BEGIN PGP PUBLIC KEY BLOCK&rdquo;:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --list-keys
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ cat ~/.gnupg/openpgp-revocs.d/96D59C4A95680BAFE2A9A993E0C044266F026A36.rev
</span></span><span class="line"><span class="cl"><span class="o">[</span>...<span class="o">]</span>
</span></span><span class="line"><span class="cl">:-----BEGIN PGP PUBLIC KEY BLOCK-----
</span></span><span class="line"><span class="cl">Comment: This is a revocation certificate
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">iHgEIBYKACAWIQSW1ZxKlWgLr+KpqZPgwEQmbwJqNgUCaACDmgIdAAAKCRDgwEQm
</span></span><span class="line"><span class="cl">bwJqNhH1AP91ZD1BuNizetJ5LBP+tJ4l5k+Zd8FEpAv8POzGiHu1wgD9H76ppGnR
</span></span><span class="line"><span class="cl">fY9f8/eTXK5Dvydf2U7UCD9vtkzqCCeOKQo<span class="o">=</span>
</span></span><span class="line"><span class="cl"><span class="o">=</span>c2zr
</span></span><span class="line"><span class="cl">-----END PGP PUBLIC KEY BLOCK-----
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ gpg -- import ~/.gnupg/openpgp-revocs.d/96D59C4A95680BAFE2A9A993E0C044266F026A36.rev</span></span></code></pre></div></div>
<p>Następnie należy usunąć klucz prywatny i klucz publiczny:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --delete-secret-key 96D59C4A95680BAFE2A9A993E0C044266F026A36
</span></span><span class="line"><span class="cl">$ gpg --delete-key 96D59C4A95680BAFE2A9A993E0C044266F026A36</span></span></code></pre></div></div>
<p>&hellip;sprawdzić, czy zostały usunięte z <em>keyringa</em>:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ gpg --list-keys
</span></span><span class="line"><span class="cl">$ gpg --list-secret-keys</span></span></code></pre></div></div>
<p>&hellip;oraz usunąć automatycznie utworzony certyfikat:</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ rm ~/.gnupg/openpgp-revocs.d/96D59C4A95680BAFE2A9A993E0C044266F026A36.rev</span></span></code></pre></div></div>
<h2 id="podsumowanie">Podsumowanie</h2>
<p>W artykule przedstawiłam podstawowe polecenia programu gpg służące do utworzenia pary kluczy, edycji danych klucza, sprawdzania zawartości &ldquo;pęku kluczy&rdquo; (<em>keyringa</em>), Pokazałam również, jak zaszyfrować wiadomość do osoby, której klucz publiczny znamy, oraz jak zaszyfrować dowolny plik hasłem. Na koniec opisałam, jak usunąć klucz, którego nie chcemy już używać.</p>
<p>Mam nadzieję, że artykuł zachęcił Cię nie tylko do wygenerowania klucza, ale też do tego, aby zainwestować trochę czasu w poszerzenie swojej wiedzy na ten temat.</p>
<p>Użycie GPG do szyfrowania poczty to tylko mały krok na drodze do wzmocnienia swojej prywatności w internecie, ale krok bardzo istotny. Mocno zachęcam Cię, abyś ten krok uczynił(a).</p>
<h2 id="zasoby">Zasoby</h2>
<ul>
<li><a href="/content/posts/2024-12-22-christmas/index.en.md" rel="">GnuPG</a></li>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages" target="_blank" rel="noopener noreffer ">Digital Ocean</a></li>
<li><a href="https://www.gnupg.org/gph/en/manual/x110.html" target="_blank" rel="noopener noreffer ">GPG manual</a></li>
<li><a href="https://emailselfdefense.fsf.org/en/" target="_blank" rel="noopener noreffer ">Email self-defence</a></li>
<li><a href="https://theintercept.com/2015/03/26/passphrases-can-memorize-attackers-cant-guess/" target="_blank" rel="noopener noreffer ">passphrease can memorize attackers can guess</a></li>
<li><a href="https://github.com/search?utf8=%3F&amp;q=diceware&amp;type=repositories" target="_blank" rel="noopener noreffer ">diceware repositories</a></li>
<li><a href="https://stackoverflow.com/questions/73293254/how-to-delete-gpg-keys-no-longer-needed" target="_blank" rel="noopener noreffer ">How to delete GPG keys no longer needed?</a></li>
<li><a href="https://www.cs.unibo.it/babaoglu/courses/security/resources/documents/intro-to-crypto.pdf" target="_blank" rel="noopener noreffer ">An Introduction to Cryptography</a></li>
<li><a href="https://www.gnupg.org/gph/en/manual/x56.html" target="_blank" rel="noopener noreffer ">GPG handbook</a></li>
</ul>]]></description>
</item>
</channel>
</rss>
