GPG 시작 설명서(암호화/서명)

배경 설명
암호화의 간단하면서도 실용적인 작업은 암호화된 전자메일을 보내는 것이다.여러 해 동안 이메일을 암호화하는 기준은 PGP(Pretty Good Privacy)였다.프로그래머 Phil Zimmermann이 이메일의 기밀 유지를 위해 특별히 작성한 PGP입니다.
이 소프트웨어는 매우 유용하고 신속하게 전해져 많은 프로그래머들의 필수 도구가 되었다.그러나 그것은 상업 소프트웨어이기 때문에 자유롭게 사용할 수 없다.
PGP를 대체하기 위해 현재 오픈소스 코드와 유사한 제품을 사용할 수 있다.GPG(Gnu Privacy Guard)는 특허 알고리즘을 포함하지 않고 상업 응용에 무제한으로 사용할 수 있다.
윈도우즈에 gpg4win 설치 - 3.1.11exe는 명령행을 사용하여 조작할 수 있습니다
설치하다.
본인은 맥컴퓨터를 사용하기 때문에 brew에 설치된 것으로 간단합니다. 터미널을 열고 입력brew install gpg하면 됩니다. 다른 플랫폼은 스스로 검색할 수 있습니다.
 
bogon:~ XXXX$ brew install gpg
==> Downloading https://homebrew.bintray.com/bottles/gnupg-1.4.20.el_capitan.bot
######################################################################## 100.0%
==> Pouring gnupg-1.4.20.el_capitan.bottle.tar.gz
  /usr/local/Cellar/gnupg/1.4.20: 53 files, 5.4M

설치가 완료되면 명령gpg --help을 입력합니다.
 
bogon:~ XXXX$ gpg --help
gpg (GnuPG) 1.4.20
Copyright (C) 2015 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
     :
  :RSA, RSA-E, RSA-S, ELG-E, DSA
    :IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
               TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
  :MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
  :   , ZIP, ZLIB, BZIP2

  :gpg [  ] [   ]
  、  、     
            

  :
 
 -s, --sign [   ]              
     --clearsign [   ]           
 -b, --detach-sign                      
 -e, --encrypt                     
 -c, --symmetric                      
 -d, --decrypt                     (  )
     --verify                      
     --list-keys                   
     --list-sigs                      
     --check-sigs                       
     --fingerprint                    
 -K, --list-secret-keys            
     --gen-key                          
     --delete-keys                        
     --delete-secret-keys                 
     --sign-key                         
     --lsign-key                          
     --edit-key                             
     --gen-revoke                      
     --export                      
     --send-keys                             
     --recv-keys                          
     --search-keys                        
     --refresh-keys                           
     --import                    /    
     --card-status                    
     --card-edit                        
     --change-pin                     PIN
     --update-trustdb                  
     --print-md    [  ]   
                                               

  :
 
 -a, --armor                       ASCII   
 -r, --recipient               “  ”  
 -u, --local-user                            
 -z N                                  N (0      )
     --textmode                         
 -o, --output                        
 -v, --verbose                     
 -n, --dry-run                       
 -i, --interactive                   
     --openpgp                        OpenPGP   
     --pgp2                        PGP 2.x      

(                      )

  :

 -se -r Bob [   ]            Bob           
 --clearsign [   ]               
 --detach-sign [   ]              
 --list-keys [  ]               
 --fingerprint [  ]             

   

이러한 도움말 정보는 매우 유용하며, 아래에서 보여준 많은 기능도 위쪽의 이 매개 변수를 바탕으로 한다.이곳에서 그들을 열거하면 사용할 때 조회하기 편리하다.
위의 정보를 표시할 수 있는 경우 GPG 설치가 성공했습니다.
키 생성
위의 도움말--gen-key 에서 키를 생성할 수 있습니다.설치에 성공하면gen-ken 매개 변수를 사용하여 키를 생성합니다.터미널에서 다음을 입력합니다.
 
gpg --gen-key

차로 돌아가면 다음과 같습니다.
 
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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.

gpg:      ‘/Users/machao/.gnupg’
gpg:       ‘/Users/machao/.gnupg/gpg.conf’   
gpg:   : ‘/Users/machao/.gnupg/gpg.conf’               
gpg:    ‘/Users/machao/.gnupg/secring.gpg’   
gpg:    ‘/Users/machao/.gnupg/pubring.gpg’   
            :
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (     )
   (4) RSA (     )
    ?

첫 번째 단락은 판권 성명이고 사용자 스스로 암호화 알고리즘을 선택하도록 한다.기본적으로 첫 번째 옵션을 선택하면 암호화와 서명에 RSA 알고리즘이 사용됩니다.우리는 1를 입력한 후에 차로 돌아간다
 
RSA        1024    4096    。
           ?

이 단계에서 키 길이를 입력하십시오. 길이가 길수록 안전합니다. 기본값은 2048입니다.우리는 2048를 입력하여 차로 돌아간다
 
           2048                
            。
         0 =       
        =     n     
      w =     n     
      m =     n     
      y =     n     
        ?(0)

만약 키가 개인적으로만 사용되고 개인 키를 효과적으로 보관할 수 있다는 것이 확실하다면, 첫 번째 옵션을 선택하십시오. 즉, 기한을 넘기지 않는 것입니다.2년 후 만료를 설정하려면 2y를 입력한 뒤 차로 돌아가 세 가지 질문에 답한 후 시스템이 확인해 달라고 한다.
 
      10/ 8 11:20:32 2017 CST   
     ?(y/n)y

여기에서 생성할 키에 대한 설정이 완료되었습니다. 그리고 표시가 필요합니다.
 
                ;         、           
     ,    :
    “Heinrich Heine (Der Dichter) 

요구에 따라 한 명씩 입력하면 돼요.
 
    :
      :
  :

여기서 입력한 정보는 다음과 같습니다.
 
    :Zhang San
      :[email protected]

캐리지 리턴 후:
 
          :
    “Zhang San ”

    (N)、  (C)、      (E)   (O)/  (Q)?

우리는 o를 입력하고 차로 돌아간 후
 

그리고 비밀번호를 입력하고 다시 비밀번호를 확인한 후,
 
             。            (      、  
  、       ),                       。
.+++++
...+++++
             。            (      、  
  、       ),                       。
....................+++++
...........+++++
gpg: /Users/XXXX/.gnupg/trustdb.gpg:         
gpg:    74A64469         
             。

gpg:           
gpg:    3        1      ,PGP     
gpg:   :0    :  1    :  0    :0-,0q,0n,0m,0f,1u
gpg:              2017-10-08   
pub   2048R/74A64469 2016-10-08 [   :2017-10-08]
     = 2187 78CA 2E78 83C2 039C  E47B D94A 622A 74A6 5569
uid                  Zhang San 
sub   2048R/490E5BC8 2016-10-08 [   :2017-10-08]

위의 문자열 "74A64469"에 주의하십시오. 이것은 "사용자 ID"의 Hash 문자열로 "사용자 ID"를 대체할 수 있습니다.지금까지 공개 키와 개인 키를 만드는 작업을 마쳤습니다. 파일은 /Users/XXXX/.gnupg/pubring.gpg 에 있습니다.
나중에 키가 폐기될 때 외부 키 서버에 키를 취소할 수 있도록 '취소 인증서' 를 생성하는 것이 좋습니다.
 
gpg --gen-revoke 74A64469

그다음에 다음 순서대로 하면 돼요.
 
sec  2048R/74A64469 2016-10-08 Zhang San 

               ?(y/N)y
        :                                    
  0 =      
  1 =      
  2 =      
  3 =       
  Q =   
(            1)
       ?0
     (  );      :
>  
    :     
(     )
     ? (y/N)y
                         
       ,           :“Zhang San ”
2048    RSA   ,    74A64469,    2016-10-08

      ASCII       。
       。

                   (   ) ;         
     ,                。           
             ,               。    
  :                               
          !
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
Comment: A revocation certificate should follow

iQEfBCABAgAJBQJX+GqQAh0AAAoJENlKYip0plVp0q8H/jDfnm8ElhgN+5dgn7uu
wrbgDMBrtFzuxqGPPlTTJLHprUQUuQBG3uMPjQCCh52fMY8DUAjlcsAcynpMYLll
2mdHPdWC7SDK/qPhZ2AGO+iJ333I3Ir4vYfjEdNetyD6ZfBpk7m1rqz3BYtBey5N
6FSrLXyaNu88ftwozqxBqRZE2b09boafX5y/UrgHpco13a8DdredSN49D0d3EwxZ
e78reDEpE4kwh4E0xAEXnX4ILDCSnTz4S8wGFV8uddB4Snyh8m+HiuDlp7h9kYw+
c5BMSgSG/DxFAdIpetfdMMVtsAMTTy+nfMvIXWNFjARSEErW5Fz0TqkFhyT3Ntxu
glE=
=ee65
-----END PGP PUBLIC KEY BLOCK-----

키 목록 보기
list-keys 매개 변수 시스템에 있는 키 보이기
 
gpg --list-keys

캐리지 리턴 후:
 
/Users/XXXX/.gnupg/pubring.gpg
--------------------------------
pub   2048R/74A64469 2016-10-08 [   :2017-10-08]
uid                  Zhang San 
sub   2048R/490E5BC8 2016-10-08 [   :2017-10-08]

첫 번째 줄은 공공 키 파일 이름(pubring.gpg), 두 번째 줄은 공공 키 특징(4096비트,Hash 문자열과 생성 시간), 세 번째 줄은'사용자 ID', 네 번째 줄은 개인 키 특징을 나타낸다.
키 목록에서 키를 삭제하려면 delete-key 파라미터를 사용하십시오.
 
gpg --delete-key [  ID]

출력 키
공개 키 파일(.gnupg/pubring.gpg)은 바이너리로 저장되며, armor 매개 변수는 ASCII 코드로 변환하여 표시할 수 있습니다.
 
gpg --armor --output public-key.txt --export [  ID]

'사용자 ID' 는 어떤 사용자의 공개 키를 지정하고, output 파라미터는 출력 파일 이름 (public-key.txt) 을 지정합니다.
이와 유사하게 export-secret-keys 매개 변수는 개인 키를 변환할 수 있습니다.
 
gpg --armor --output private-key.txt --export-secret-keys
public-key.txtprivate-key.txt를 열면 공개 키와 개인 키를 볼 수 있습니다.
공개 키 업로드
공개 키 서버는 네트워크에서 사용자의 공개 키를 전문적으로 저장하는 서버다.send-keys 매개 변수는 공개 키를 서버에 업로드할 수 있습니다
 
gpg --send-keys [  ID] --keyserver hkp://subkeys.pgp.net

위의 명령을 사용하면 공개 키가 서버subkeys로 전송됩니다.pgp.net, 그리고 교환 메커니즘을 통해 모든 키 서버가 최종적으로 당신의 키를 포함할 것입니다.
공개 키 서버는 검사 메커니즘이 없기 때문에 누구나 당신의 이름으로 공개 키를 업로드할 수 있기 때문에 서버의 공개 키의 신뢰성을 보장할 수 없습니다.일반적으로, 다운로드한 키가 진짜인지 아닌지를 다른 사람이 확인할 수 있도록 사이트에 공개 키 지문을 공개할 수 있다.fingerprint 파라미터가 공개 키 지문을 생성합니다.
 
gpg --fingerprint [  ID]

키 입력
자신의 키를 만드는 것 외에 다른 사람의 키나 다른 키를 시스템에 입력해야 합니다.이 때 import 파라미터를 사용할 수 있습니다.
 
gpg --import [    ]

다른 사람의 공개 키를 얻기 위해서는 상대방이 직접 보내거나 공개 키 서버에서 찾을 수 있습니다.
 
gpg --keyserver hkp://subkeys.pgp.net --search-keys [  ID]

앞에서 언급한 바와 같이, 우리는 서버의 공공 키가 믿을 만한지 보장할 수 없으며, 다운로드 후에는 다른 메커니즘으로 검증해야 한다.
암호화 및 복호화
우리는 암호화와 복호화 과정을 보여 주었는데, 이 과정은 파일에 대한 것이다.만약 우리가 test.txt 서류를 가지고 있다면.이 파일의 내용은 다음과 같습니다.
 
  ,   ,    ?

     ,     。
     ,     。

encrypt 매개 변수는 암호화에 사용됩니다.우리는 다음 명령을 사용하여 이 파일을 암호화합니다.
 
gpg --recipient 74A64469 --output test_en.txt --encrypt test.txt

그리고 우리는 test.txt의 같은 목록에서 test_en.txt를 얻었다.암호화된 데이터는 다음과 같습니다.
 
8501 0c03 50c4 def5 490e 5bc8 0107 f901
58c7 1221 33ee cc6c 4b43 8d5d a1f5 1a14
a5ac d406 7f24 a6bf 342c 3ba1 6f95 6d1b
8aae c45a 9a25 dece 7973 f5e0 44a0 7d43
7701 bd7b 02cc 3287 b65e 5915 3a67 2046
2d96 42c0 98fa d468 3187 f340 674a 772c
a280 7ab9 73d1 5feb 28c7 bc64 f102 e978
0ca5 ff7e ff1f a0f8 ba6a ea43 cc68 cf15
acff dfe9 fba3 7576 5c78 fc4a 8ed6 232b
6313 8246 ee38 70c2 1b0c 46fb 2064 662e
2977 79a7 64d8 81dd e55f 5b77 edb8 0a0c
caa0 9df0 4db2 a1e5 fe5f e16f 7be5 03b4
f741 d1a9 e429 d909 b94b a539 b0cc cc08
70b7 8d1f 4212 ba89 00ed fce4 ba97 6b51
8546 8bfa 1129 9862 d779 0382 bab0 ae0f
4855 bf75 82bf 743d 6b9e 4072 b47f 551d
143a 9355 67b9 dc7a 1511 4d0d 79bc d8d2
b001 f69c af7c 5cd2 6f2c 7d68 8ebc 80d8
07fb d120 fd2b 4a76 774c 8b82 e5e3 3414
de28 f947 16ff be94 ee01 ae40 8deb 6786
bf4f c602 5efb 8ae0 55f6 6cc2 55dc a6de
a8e0 0239 7de4 43b5 3344 f5fb 5e8d 9e26
0961 ddae 4f57 be79 6a1b b7fd 1f0b d510
e7ad 9c0c cc7e c75f 06d1 4da7 2ae5 a7d2
02b6 d93c 729b bf94 31dd a627 1423 1f08
db2b e6a3 a9f2 8165 bc16 8641 3430 dbaf
0885 4df6 e5cc f542 d3e6 60e2 91ae c0e7
69d7 8507 9d54 c25d 3a3d 4e63 79dd 8eaf
84

하하, 이 물건을 한 꿰미 주면 누가 알아볼 수 있겠어?이것이 바로 다른 소프트웨어의 파일을 컴파일할 때 이 내용을 표시하는 이유다. 모두 암호화된 파일이고 복호화를 해야만 데이터를 읽을 수 있다.
recipient 파라미터는 수신자의 공개 키를 지정하고 output 파라미터는 암호화된 파일 이름을 지정하며, encrypt 파라미터는 원본 파일을 지정합니다.위의 명령을 실행하면 test_en.txt 암호화된 파일로 상대방에게 보낼 수 있습니다.
아래 명령을 사용하여 복호화
 
gpg test_en.txt

다음 명령을 순서대로 완료합니다.
 
bogon:Desktop XXXX$ gpg test_en.txt

       ,           :“Zhang San ”
2048    RSA   ,    490E5BC8,    2016-10-08 (     74A64469)

gpg:   2048    RSA     ,     490E5BC8、    2016-10-08
      “Zhang San ”
gpg: test_en.txt:      
         [test.txt]: test2.txt

그리고 test2.txt에서 복호화된 데이터를 보았다.
서명하다.
때때로 우리는 파일을 암호화할 필요가 없고 파일에 서명만 하면 이 파일이 확실히 내가 보낸 것임을 나타낼 수 있다.sign 매개 변수는 서명에 사용됩니다.
 
gpg --sign test.txt

그리고 test.txt.gpg 파일을 생성했습니다. 이 파일을 열고 보니 이것도 이진 데이터입니다. 이것은 암호화된 데이터가 아니라 위의 이진 데이터와 다릅니다.ASCII 코드의 서명 파일을 만들려면clearsign 파라미터를 사용하십시오
 
gpg --clearsign test.txt

그런 다음 test.txt.asc 파일이 생성되어 다음과 같이 표시됩니다.
 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


  ,   ,    ?

     ,     。
     ,     。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJX+Jl5AAoJENlKYip0plVpDIMIAJscuAXq/+g+kBVqSAhL59jr
Lbu04uBdyYYbdqokjzSzuQm0ybw5fURQZs7HC5X2A2SgwP5vs/ekWOnS7G2SxBI4
vnrHef3+cFiEbkj4OAySNbUeY3ftbg333JFkAbyA5bD7DHlEHrUvWRWVzLEWGCJ7
FgfbpqtiyFbLbkimXgVP4GhMA+TaP3XCDa1GgI2sJY9+q0GpX7mz6CBbTz7C/ORk
GgoUFVx5tyVO8E7PHqGOcLTwwpJtsq0geGMn4QaG5qUY9j851zkVOXSVeUo3y7nY
AqRaLqHBBN7xOKs0IQLAJz/5vCEvBEjqAR59NtwA1h9JAUx20VkVO2eu+YaepjU=
=vkVW
-----END PGP SIGNATURE-----

단독 서명 파일을 생성하고 파일 내용과 분리해서 저장하려면detach-sign 인자를 사용할 수 있습니다.
 
gpg --detach-sign test.txt

이진 데이터입니다. ASCII 코드 형식을 사용하려면armor 파라미터를 추가해야 합니다.
 
gpg --armor --detach-sign test.txt

서명 + 암호화
이전 절의 매개 변수는 모두 서명만 하고 암호화되지 않습니다.서명과 암호화를 동시에 하려면 아래 명령을 사용하십시오.
 
gpg --local-user [   ID] --recipient [   ID] --armor --sign --encrypt test.txt

local-user 매개 변수는 발신자의 개인 키 서명을 지정하고,recipient 매개 변수는 수신자의 공공 키로 암호화하며,armor 매개 변수는 ASCII 코드로 표시하고,sign 매개 변수는 서명이 필요함을 표시하며,encrypt 매개 변수는 지정한 원본 파일을 표시합니다.
서명 확인
우리는 다른 사람이 서명한 파일을 받았을 때, 상대방의 공개 키로 서명이 사실인지 확인해야 한다.verify 매개 변수는 검증에 사용됩니다
 
gpg --verify test.txt.asc test.txt

저자: 늙은 말의 봄 링크:https://www.jianshu.com/p/268064e67719출처: 약서 저작권은 작가에게 귀속된다.상업 전재는 작가에게 연락하여 권한을 부여받고, 비상업 전재는 출처를 밝혀 주십시오.

좋은 웹페이지 즐겨찾기