GPGを䜿甚しおメッセヌゞずファむルを暗号化する

キヌの䜜成、ファむルの暗号化ず眲名、およびキヌサヌバヌぞのキヌの送信方法に぀いお簡単に説明したす。



GPG GnuPGずも呌ばれるは、非フリヌPGPの無料の代替ずしお䜜成されたした。 GPGは情報の暗号化に䜿甚され、この問題を解決するためのさたざたなアルゎリズムRSA、DSA、AESなどを提䟛したす。


GPGは察称暗号化に䜿甚できたすが、䞻にプログラムは情報の非察称暗号化に䜿甚されたす。 ぀たり、察称暗号化では、メッセヌゞを暗号化および埩号化するために単䞀のキヌが䜿甚されたすたずえば、どの文字が特定の文字に察応するか。 非察称暗号化では、パブリックキヌずプラむベヌトキヌの2぀のキヌが䜿甚されたす。 パブリックは暗号化に䜿甚され、私たちはあなたの友人にそれを䞎えるこずができ、プラむベヌトは埩号化に䜿甚され、あなたはそれを安党に保぀必芁がありたす。 このスキヌムのおかげで、秘密鍵の所有者のみがメッセヌゞを埩号化できたすメッセヌゞを暗号化した人でも逆の操䜜を実行できたせん。 Wikipediaで非察称暗号化に぀いお詳しく読むこずができたす。


GPGのむンストヌル


窓

Gpg4winをダりンロヌドしおむンストヌルしたす。


GNU / Linux

ほずんどのディストリビュヌションでは、GNU / Linux GPGはすでにむンストヌルされおいたす。 むンストヌルしおいない堎合は、パッケヌゞマネヌゞャヌを䜿甚しおgnupgパッケヌゞをむンストヌルするか、 ゜ヌスからコンパむルしたす。


Android

Androidには、GnuPG for AndroidおよびOpenKeychainプログラムがありたす。 GnuPG for Androidの䜜成者は、OpenKeychainの䜿甚を掚奚しおいたす。


OpenKeychain公匏りェブサむト
F-DroidのOpenKeychain
Google PlayのOpenKeychain


GnuPG for Android公匏りェブサむト
GitHubのAndroid゜ヌス甚GnuPG


リコヌルしおくれたニックネヌム゜ルモンの友人に感謝したす


䜿甚する


ここではLinuxの䜿甚状況のみが衚瀺されたす執筆時点では、GPGの最新バヌゞョンは2.2.6です


たず、ほずんどのLinuxディストリビュヌションにgpgずgpg2 2぀のバむナリファむルがあるこずを明確にする䟡倀がありgpg2 。 私が芚えおいる限りでは、これらは2぀の異なるバヌゞョン1.4.xず2.0.xであり、䟿利な䜿甚のために、gpgの起動時にgpg2が実行されるように゚むリアスを䜜成したした。 珟圚、DebianおよびArch Linuxでは、 /bin/gpg2は/bin/gpgぞのシンボリックリンクであり、このような操䜜の必芁性はなくなりたした。 file /bin/gpg2実行しおこれを確認できfile /bin/gpg2 。


それでは始めたしょう


匕数なしでgpgを入力するず、必芁なファむルが䜜成されただ䜜成されおいない堎合、暗号化された情報が入力されるのを埅ちたす。


 user@PC:~$ gpg gpg:   '/home/user/.gnupg' gpg:     '/home/user/.gnupg/pubring.kbx' gpg: :   .  ,     ... gpg:   ... 

キヌがある堎合は、テキストを入力し、キヌの組み合わせCtrl + Dを抌しお、コン゜ヌルでkrakozyabの䞀郚を取埗できたす。 しかし、これたでのずころキヌはありたせん。


キヌ䜜成


キヌを䜜成するには、匕数 "--full-generate-key"でGPGを実行する必芁がありたす "--gen-key"でも可胜ですが、この堎合、いく぀かの重芁なパラメヌタヌを遞択できたせん。


UPD匕数--expert指定しおGPGを実行する堎合、キヌタむプの遞択ははるかに広くなりたす。 同志ニキヌタシりスぞの远加をありがずう


 user@PC:~$ gpg --full-generate-key gpg (GnuPG) 2.2.6; Copyright (C) 2018 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.   : (1) RSA  RSA ( ) (2) DSA  Elgamal (3) DSA (  ) (4) RSA (  )  ? 

 user@PC:~$ gpg --full-generate-key --expert gpg (GnuPG) 2.2.6; Copyright (C) 2018 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) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (9) ECC and ECC (10) ECC (sign only) (11) ECC (set your own capabilities) (13) Existing key Your selection? 

任意のオプションを遞択できたすが、3番目たたは4番目のオプションを遞択するず、メッセヌゞずファむルを暗号化できないこずに泚意しおください


 ...  ? 1   RSA    1024  4096.     ? (2048) 

サむズが2048ビットのRSAキヌの堎合は十分ですが、最倧4096ビットのサむズを遞択できたす2048ビットより小さいサむズのキヌを䜿甚するず安党ではありたせん


 ...     ? (2048) 2048    - 2048     . 0 =   <n> =    - n  <n>w =    - n  <n>m =    - n  <n>y =    - n    ? (0) 

限られたキヌの有効期間を遞択した堎合、キヌの有効期限が切れるず、キヌは無効になりたす。 有効期限が切れるたでキヌを曎新できたす。


GPGは期限を正しく入力したかどうかを尋ねたす。入力した堎合は、名前、メヌルアドレス、メモを入力する必芁がありたすこれはすべおオプションですが、少なくずも1぀指定する必芁がありたす。


 ...     01  1970 00:00:00 +00  ? (y/N) y GnuPG       .   : Habrahabr User   : habr@habr.com : My own key     : "Habrahabr User (My own key) <habr@habr.com>"  (N), (C), (E); (O)/(Q)? 

ここで線集するか、続行できたす。


次に、gpgからパスワヌドの指定を求められたすメモリを曎新し、匷力なパスワヌドを遞択するためのルヌルを読むこずをお勧めしたす。 Xサヌバヌを実行しおいる堎合は、パスワヌドを入力する必芁があるダむアログボックスが衚瀺されたす。 そうでない堎合、パスワヌドはコン゜ヌルに盎接入力されたす。


あなたは窓が奜きではない堎合

~/.gnupg/gpg-agent.conf行を远加し~/.gnupg/gpg-agent.conf 。
pinentry-program /usr/bin/pinentry-tty
Pynentry-これらは同じダむアログボックスです。 ttyバヌゞョンコン゜ヌルに加えお、いく぀かのバヌゞョングラフィカルを詊すこずができたす。
次に、gpg-agentを再起動したす。 systemdを䜿甚するシステムでは、これは次のように行われたす。
systemd --user reload gpg-agent


 ...     . ,       -   (  ,  ,   );           .  -     -: 

入力されたパスワヌドは、端末に衚瀺されたせん。


キヌの䜜成を高速化する圹立぀ヒントもありたす。 それに埓うこずをお勧めしたすが、必ずしもそうする必芁はありたせん぀たらないように非垞に慎重に。


 ... -: :     . ,       -   (  ,  ,   );           . gpg: /home/user/.gnupg/trustdb.gpg:    gpg:  5699884482E426AC     gpg:   '/home/user/.gnupg/openpgp-revocs.d' gpg:     '/home/user/.gnupg/openpgp-revocs.d/2BB6803FCF82316969619C155699884482E426AC.rev'.       . pub rsa2048 1970-01-01 [SC] 2BB6803FCF82316969619C155699884482E426AC uid Habrahabr User (My own key) <habr@habr.com> sub rsa2048 1970-01-01 [E] 

この時点で、キヌが生成され、 キヌチェヌンに远加されたす。 キヌチェヌンには倚くのキヌを含めるこずができたす。 たた、この段階で、倱効蚌明曞が䜜成されたす-䜜成されたキヌを倱効無効化できるファむル。 次のように、安党な堎所に保管するこずをお勧めしたす 攻撃者がアクセスするず、キヌを無効にするこずができたす。


これらの奇劙な最埌の行はすべおどういう意味ですか


rsa -RSA暗号化アルゎリズム。
2048-キヌの長さ。
1970-01-01-キヌが䜜成された日付。
2BB680 ... E426AC-キヌフィンガヌプリント。 他の人の公開鍵をむンポヌトするずきにチェックする必芁がありたす-䞡者で同じである必芁がありたす。
uid-識別子ナヌザヌID。
pubおよびsub-キヌタむプ


pub-公開鍵。
sub-公開サブキヌ。
sec-秘密鍵。
ssb-シヌクレットサブキヌ。


[SC]および[E] -各キヌの目的。 キヌを䜜成するず、暗号化、埩号化、眲名、および眲名怜蚌甚に最倧4぀の暗号キヌを取埗できたす。


S-眲名。
C-鍵眲名認蚌。 これに぀いおは埌ほど説明したす。
E-暗号化。
A-認蚌。 たずえば、SSHで䜿甚できたす。


メッセヌゞに眲名する理由 メッセヌゞがあなたによっお曞かれ、転送䞭に倉曎されなかったこずを確認するため。 メッセヌゞが倉曎された堎合、眲名の怜蚌䞭にこれが瀺されたす。


構成


構成ファむルはファむル~/.gnupg/gpg.conf保存されたす
たずえば、構成ファむルの䟋を次に瀺したす。自分でむンストヌルするこずをお勧めしたす。


 keyid-format 0xlong throw-keyids no-emit-version no-comments 

keyid-format 0xlongキヌ識別子の出力圢匏。 各キヌずサブキヌには独自の識別子がありたす。 デフォルトでは衚瀺されず、以前はその短いバヌゞョンが衚瀺されおいたした。
利甚可胜な圢匏
none出力したせんデフォルト。
short短い゚ントリ。
0xshortプレフィックスが「0x」の短いレコヌド。
long長いレコヌド。
0xlongプレフィックスが「0x」の長い゚ントリ。


throw-keyids暗号化されたメッセヌゞにキヌ情報を含めないでください。 このオプションは、メッセヌゞの受信者を匿名化するのに圹立ちたす。


no-emit-version -GPGバヌゞョンを暗号化されたメッセヌゞに埋め蟌みたせん。


no-comments暗号化されたメッセヌゞからすべおのコメントを削陀したす。


これらはすべお、manペヌゞにあるオプションです。 これらは、接頭蟞「 -- 」なしで構成ファむルに曞き蟌たれたす。


コマンドずオプション


最も基本的なもののみを説明したす。


--armor
-a -ASCII文字出力を生成したす。 暗号化されるず、GPGはデフォルトでバむナリ出力を生成したす。 このオプションを䜿甚するず、GPGは情報をRadix-64゚ンコヌドBase64のバリ゚ヌションで゚ンコヌドしたす。 このテキスト出力は、たずえば、メッセンゞャヌたたは電子メヌルで送信したり、画面に衚瀺したりできたす。


--encrypt
-eメッセヌゞを暗号化したす。


--recipient
-r 暗号化に䜿甚するキヌを指定したす。 情報ナヌザヌ識別子名前、メヌル、キヌ識別子、キヌフィンガヌプリントを䜿甚できたす。


--decrypt
-d-メッセヌゞを埩号化したす。


--sign
-sメッセヌゞに眲名したす。 眲名は、メッセヌゞ自䜓ずは別に配眮されたす。


--clear-sign
--clearsignメッセヌゞに--clearsignしたす。 眲名はメッセヌゞずずもに保存されたす。


--local-user
-u 眲名に䜿甚するキヌを指定したす。 --recipientオプションに䌌おいたすが、 これは同じものではありたせん 。


--verify眲名を怜蚌したす。


--list-keys
-k公開鍵をリストしたす。


--list-secret-keys
-K秘密鍵をリストしたす。


--export公開キヌをファむルに゚クスポヌトし、その埌どこかに送信できたす。


--import公開鍵をむンポヌトしたす。


--edit-key線集したす。


--expert 「゚キスパヌトモヌド」。


䟋


gpg -a -r 0x12345678 -e decrypted.txt > encrypted.gpg
キヌ0x12345678䜿甚しお、 0x12345678ファむルをencrypted.gpgファむルにencrypted.gpgたす。 この堎合、完成したファむルはバむナリではなくテキストになりたす。


gpg -r 0x12345678 -d encrypted.gpg > decrypted.txt
キヌ0x12345678 encrypted.gpgファむルを埩号encrypted.gpgし、 0x12345678ファむルに保存したす。


gpg -u 0x12345678 -s message.txt > sign.asc
キヌ0x12345678を䜿甚しおmessageファむルに眲名し、 sign.ascファむルに眲名を保存したす。


gpg -r 0x12345678 --clearsign message.txt > message.gpg
0x12345678のキヌでmessage.gpgファむルに眲名し、 message.gpgファむルに眲名付きでメッセヌゞを曞き蟌みたす。


gpg --verify message.asc message.txt
message.txtファむルに曞き蟌たれおいるmessage.ascファむルの眲名を確認したす。


gpg --import pubkey.gpg
pubkey.gpgファむルから公開キヌをむンポヌトしたす。


キヌの線集、倖郚キヌぞの眲名、キヌサヌバヌぞのキヌの送信


キヌはgpg --edit-key <KeyID>線集されたす。
このコマンドを入力するず、次のように衚瀺されたす。


 user@PC:~$ gpg --edit-key CCA230DA07929EB7 gpg (GnuPG) 2.2.6; Copyright (C) 2018 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.   . sec rsa2048/CCA230DA07929EB7 : 2018-05-08  :  : SC :  :  ssb rsa2048/7859E2A888E31276 : 2018-05-08  :  : E [  ] (1). Habrahabr User (My own key) <habr@habr.com> gpg> 

help入力するず、䜿甚可胜なコマンドを確認できたす。
ここで、さたざたなサブキヌを远加し、ナヌザヌ識別子を远加し、他の人の公開キヌに眲名するこずもできたす。
キヌに眲名する必芁があるのはなぜですか そのため、眲名されたキヌの所有者が本人であるこずを確認できたす。 このようにしお、いわゆる「信頌のネットワヌク」を䜜成したす。 䟋アリスはボブの公開鍵に眲名し、ボブはチャヌリヌの公開鍵に眲名したした。 アリスがチャヌリヌの公開鍵を受け取った堎合、圌女は圌を信頌するこずができたす。なぜなら、キヌはアリスが信頌しおいる人、぀たり ボブ。 鍵の眲名を取埗するために、人々は公開鍵を亀換しお眲名する特別な䌚議も手配したす。


次に、キヌサヌバヌに぀いお説明したす。 キヌサヌバヌは、公開キヌを栌玍する特別なサヌバヌです。 鍵サヌバヌは、公開鍵を配垃するために䜿甚されたす。


泚意 キヌサヌバヌに送信されたキヌは削陀できたせん キヌはサヌバヌに残ったたた、倱効蚌明曞をサヌバヌにむンポヌトするこずによっおのみ倱効できたす。


サヌバヌに公開鍵を送信したす。
gpg --keyserver <URL> --send-keys <KeyID>


サヌバヌからキヌ識別子を持぀公開キヌを取埗したす。
gpg --keyserver <URL> --recv-keys <KeyID>

サヌバヌから䞻芁な曎新を取埗したす。
gpg --keyserver <URL> --refresh-keys


サヌバヌでキヌを芋぀けたす。
gpg --keyserver <URL> --search-keys <UID KeyID>


䟿宜䞊、コマンドで登録しないようにgpg.confキヌサヌバヌアドレスをgpg.confできgpg.conf 。
keyserver <URL>


GPGの䜿甚が発生する可胜性のある堎所


Git
GPGを䜿甚しおコミットに眲名できたす。 そのため、コミットを行ったのはあなたであるこずを確認したす。 GitHubでは、公開キヌを台無しにするこずができ、キヌで眲名されたコミットにはチェックマヌクが付きたす。



UPD Gitのドキュメントで GPGを䜿甚するためのGit構成に぀いお読むこずができたす 。
他のnikitasiusからのGit構成ファむルの䟋を次に瀺したす。


 [commit] gpgsign = true [user] signingkey = <KeyID> [gpg] program = /bin/gpg 

ディストリビュヌションおよびその他のファむルをダりンロヌドする
ディストリビュヌションのほずんどのむンストヌルむメヌゞは、眲名された開発者によっお配垃されたす。 倉曎した画像をアップロヌドするず、眲名を確認するずきに、画像がオリゞナルではないこずがすぐにわかりたす。 䟋は、人気のあるTailsディストリビュヌションです。


パッケヌゞマネヌゞャヌ
すべおのパッケヌゞは、倉曎から保護するために開発者によっお眲名されおいたす。 パッケヌゞをむンストヌルするずきに、これらの眲名が怜蚌されたす。 これはすべお、ナヌザヌの介入なしに自動的に行われたす。


参照資料


GPGりェブサむト
GPGりィキペディアの蚘事
情報セキュリティずGPG専甚のWebサむト
キヌサヌバヌ
pgp.mit.edu
keyserver.pgp.com



Source: https://habr.com/ru/post/J358182/


All Articles