Study Record

[암호] GPG CMD 본문

암호

[암호] GPG CMD

초코초코초코 2021. 12. 13. 14:53
728x90

1. GPG CMD 의 간단한 사용법

※ GPG 자세한 사용법 - https://devhints.io/gnupg

 

1-1. key 생성과 관리

 

☞ key 생성 : ~/.gnupg 

gpg --gen-key
gpg --full-gen-key /* 모든 옵션을 위한 dialogs 가지고 새로운 키 생성 */

 

 key 목록 확인

gpg -k         # public Key
gpg -K         # private key
gpg --list-key

 

원격 서버에 key upload

public key 를 key를 보관하는 원격 서버에 등록한다.

gpg --send-keys <KEY ID> --keyserver <서버URL>

 

 원격 서버에서 key 검색

gpg --keyserver <서버URL> --search-keys "<SEARCH SHTRING>"

 

 원격 서버에서 key import

gpg --recv-keys <KEY ID> --keyserver <서버URL>
gpg --recv-keys <KEY ID>

gpg --import <key파일>
gpg --armor --import <key 파일>
gpg --import test.gpg
gpg --armor --import test2.gpg
// --batch --yes : 모든 대답을 y로 한다.
gpg --batch --yes --import $pubKey >/dev/null 2>&1

 

[ keyserver ]

vks://keys.openpgp.org

hkps://hkps.pool.sks-keyservers.net

hkps://pgp.mit.edu

cryptonomicon.mit.edu

 

<SEARCH SHTRING> 으로 사용할 수 있는 값

Key ID : 4AB8A56E

이름 : Kim, YunHee

내용 : This is a test.

이메일 : lauwedifigy@daum.net

ex) gpg --keyserver cryptonomicon.mit.edu --search-keys lauwedifigy@daum.net

     gpg --keyserver cryptonomicon.mit.edu --search-keys 4AB8A56E

 

☞ gpg key  exporting

gpg -o key.gpg --export <KEY ID>
gpg -o key.asc --armor --export <KEY ID>  /* ASCII 키로 내보내기 */

 

☞ gpg key 삭제

gpg --delete-key [key-ID | email ..]     	# public keyring 삭제 
gpg --delete-secret-keys [key-ID | email ..]	# secret keyring 삭제

 

해지 인증서 생성(revocation certificate)

암호를 잊어 버렸거나, 개인 키가 손상되거나, 분실 된 경우 해지 인증서가 공개 키를 더 이상 사용해서는 안됨을 다른 사람들에게 알리기 위해 게시 될수 있다.  revocation certificate(해지 인증서)는 안전한 장소에 보관해야 한다.

gpg -o <해지인증서 파일이름> --gen-revoke <Search String>

# Search String : 이름, 이메일, keyID, 내용이 사용될 수 있다.
gpg -o revoke.asc --gen-revoke 'name, namename'
gpg -o revoke.asc --gen-revoke 'D6C4055D'
gpg -o revoke.asc --gen-revoke 'lauwefifd@hanmail.net'
gpg -o revoke.asc --gen-revoke 'GPG Test'

 

1-2. 암호화/복호화

sub 의 key ID 인 C476B268 로 암호화한다.

ssb 의 key ID 인 C476B268 로 복호화한다.

 

공개키로 암호화

gpg -e -o <암호화된 파일 이름> -r <Recipient> <암호화할 파일>

# Recipient : [Key ID | "이름" | 이메일]
gpg -e -r <KEY ID> secret.txt
gpg -e -r "이름" secret.txt
gpg -e -r "jang4sc@hanmail.net" secret.txt
gpg -e -r <Recipient> -r <Another recipient> secret.txt
// --trust-model always : 항상 puclic key 를 신뢰한다.
gpg -e -r "jang4sc@hanmail.net" --trust-model always -o file.txt.gpg txt.gpg

 

개인키로 복호화

gpg -o <복호화된 파일 이름> --default-key <Search String> -d <복호화할 파일> 
gpg -o secret.txt --default-key "SEARCH SHTRING" -d secret.txt.gpg

 

블록암호를 이용한 암호화

gpg -c secret.txt

 

블록암호를 이용한 복호화

// -o 옵션이 빠지면 stdout 출력
gpg -d -o secret.txt secret.txt.gpg

// --passphrase-fd 0 : 패스워드를 앞 명령어인 soldesk1. 으로 설정한다.
// --batch --yes : 모든 대답을 y로 한다.
echo soldesk1. | gpg --batch --yes --passphrase-fd 0 -d -o install.sh install.sh.gpg

 

 

1-3. 서명/검증

pub 의 4AB8A56E 로 서명한다.

sec 의 4AB8A56E 로 검증한다.

 

☞ Signing

gpg -o <서명값이 저장될 파일> -s <서명할 파일> --default-key <Recipient>
gpg -o signed-file.txt.gpg -s file.txt
gpg -o signed-file.txt.gpg -s file.txt --default-key 711AED

# encryption + sign
gpg -s -o secret.txt.gpg -r <Recipient> secret.txt

 

☞ Verifying a signature

gpg --verify file.txt.gpg

 

☞ 사인된 파일 내용 보기

gpg -d signed-file.txt.gpg

 

2. gpg 실습해보기

 

2-1. key 생성과 확인

 

key 생성

# gpg --gen-key

key ID 가 71195EEC 인 key를 생성했다.

 

㉯ 생성한 key 목록 확인해본다.

# gpg -K

# gpg -k

key ID 가 71195EEC 로 생성한 key가 잘 보인다.

 

2-2. key를 원격 서버에 등록하기 - Key ID : 4AB8A56E

 

㉮ key ID 를 이용해서 원격 키 서버(cryptonomicon.mit.edu) 에 등록해본다.

# gpg --keyserver cryptonomicon.mit.edu --send-keys 4AB8A56E

 

㉯ 원격 키 서버에 가서 키가 등록됐는지 확인해본다. 

# gpg --keyserver cryptonomicon.mit.edu --search-keys lauwedifigy@daum.net

등록된 키가 잘 확인된다.

 

+ 홈페이지에 직접 방문해서 확인하는 방법

원격 키서버에서 키 검색

 

2-3. key import / export 와 delete

Linux200 : 192.168.10.200 - key export

KaliLinux : 192.168.10.60 - Linux200에서 export한 키를 import 해본다. 

 

[Linux200] - key ID : 4AB8A56E

㉮ key를 export 해본다. binary 파일로 생성한다.

# gpg -o key.gpg --export 4AB8A56E

binary 파일로 되어있기 때문에 cat 명령어로 읽을 수는 없다.

 

㉯ key를 export 하는데 --armor 옵션을 붙여 해본다. ASCII 파일로 생성된다.

# gpg -o key_armor.gpg --export 4AB8A56E --armor

cat 명령어로도 읽을 수 있다.

 

[KaliLinux]

㉰ Linux200 서버에서 만든 key.gpg 와 key_armor.gpg 를 가져온다. 

# scp 192.168.10.200:/home/user01/test/* .

 

㉱ key.gpg 파일을 import 해본다.

# gpg --import key.gpg

 

㉲ import 한 key를 삭제해보자

# gpg --delete-keys kim

 

㉱ ascii 형식의 key 파일을 imort 해보자

# gpg --armor --import key_armor.gpg

 

 

728x90