본문 바로가기

Lecture note in Ewha/Cyber Security

대칭키, 비대칭키(Kleopatra) 실습

Symmetric Key로는 대칭키 암호화, Kleopatra로는 비대칭키 암호화 실습을 하겠다.

 

1. Symmetric Key 암복호화 실습

로컬디스크 c 밑에 SymmetricKey 파일을 만든다.

"사이버보안개론실습\nHello, I'm Hanui Choi :)" 라는 내용의 plaintext.txt 를 만들어 SymmetricKey 파일에 저장한다.

다운로드 받은 java실행파일도 SymmetricKey 파일에 저장한 뒤, 실행파일을 더블클릭한다.

방금 만든 txt파일을 입력하고, Key는 SecretKey로 한다.

Encryption Decryption

 

이전에 배웠듯이 확장자가 실행파일이면 업로드가 안된다. 안 올라가니까 확장자를 다른 것으로 바꿔서 올리겠다.

따로 확장자만 .exe로 바꾸면 된다.

 

 

 

2. Kleopatra 실습

(1) Kleopatra가 무엇인가!

Kleopatra는 인증서(키 쌍) 관리하는 툴이다. GPG(키생성)에 대한 GUI(관리 UI)를 제공한다.

GPG는 각 사용자의 키 쌍을 생성해주며, 이렇게 생성된 키 쌍은 암호화와 전자서명 도구인 PGP와 호환된다.

 

GUI를 제공하는 것으로는 PGP와 OpenPGP가 있다.

 

먼저 PGP를 살펴보자.

PGP는 Pretty Good Privacy이다. 90년대 초에 만들어진 컴퓨터 분야에서 가장! 인기있는 암호화 소프트웨어다.

인터넷은 안전하지 못한데, 그런 환경에서 안전하게 데이터를 주고받는 방법이다.

PGP에서 데이터를 송수신하는 과정

위 사진은 A가 안전하게 B에게 M을 보내는 PGP과정이다.

약자 먼저 살펴보자. KU는 공개키, KR은 개인키, E/D는 암복호화, H는 해시, Zip은 집파일이다.

 

- 전자서명: M을 해싱하고 이걸 A의 개인키로 암호화한다. 그리고 해싱된 M에 전자서명을 concatenate해서 붙인다.

- 암호화: {해싱된 M+전자서명}을 압축한다. 데이터는 보통 대칭키 암호화니까, A가 임의로 대칭키를 만들어서 {해싱된 M+전자서명}을 암호화한다.

              근데 이 대칭키는 A가 만들었으니까 A만 안다. 남들은 못 보게 B한테 알려줘야 한다. 그렇기에 대칭키를 B의 공개키로 암호화한다.

- 최종 전달물: (빨강) {해싱된 M+전자서명}이 대칭키로 암호화된 부분 + (파랑) 암호화 과정에서 사용된 대칭키를 B의 공개키로 암호화한 부분

- 복호화: (파랑) 부분을 B의 개인키로 복호화해서 대칭키를 얻어낸다. 그리고 그 대칭키로 (빨강)을 복호화하면 압축파일이 튀어나온다.

- 서명검증: 압축을 풀면 압축하기 전의 {해싱된 M+전자서명}이 튀어나온다.

                 전자서명은 A의 개인키로 암호화되어있으니 A의 공개키로 풀어서 나온 부분과 해싱된 M값과 같으면 A가 보낸 것이 검증된다.

 

중요한 부분을 요약하자면,

- 해시함수를 거친 M을 암호화하는 것은 A의 개인키 → A의 공개키로 풀린다.

- 해시함수를 거친 M과 전자서명을 합친 zip파일을 암호화하는 것은 B의 공개키로 암호화된 공개키 → B의 개인키로 복호화한 개인키로 풀린다.

 

재밌는 얘기를 하나 하자면,

이 PGP을 미국에서만 하면 돈을 많이 못 버니까, 수출을 해야하는데 그당시 국가보안에 의해 소프트웨어를 국가외로 반출하는게 불법이었다.

그래서 법의 허점을 이용한다.

소프트웨어 추출은 안된다니까 하드카피하고 책으로 만들어서 수출했다. 외국에서 OCR을 다 읽고 다시 만들게끔 말이다.

그러다가 국가에서 안타까웠는지 결국 인정해줬다.

 

안타까운게, PGP는 무료는 아니다.

그래서 이걸 무료로 만든게 OpenPGP이다. PGP로부터 만들어졌는데 무료인 것이다. 그 중 하나가 Kleopatra이다.

 

 

(2) Klepatra 실습을 본격적으로 해보자.

내 개인키로 암호화하는 과정과, Bob의 공개키로 암호화하는 과정 2가지를 실습할 것이다.

 

<내 개인키로 암호화>

https://gpg4win.org/download.html 에서 Kleopatra를 다운받는다.

 

② Workspace를 생성한다.

로컬디스크 C에 Kleopatra 폴더를 만들고 DecryptedFiles, PublicKey 폴더를 만든다.

그리고 아까 맨 처음 만들었던 plaintext.txt를 Kleopatra 폴더 안에 넣는다.

 

③ Private, Public keys를 생성한다.

 

④ 평문 암호화

 

⑤ 암호문 복호화

 

 

 

<남(Bob)의 공개키로 암호화>

① Bob Sponge의 public key export 과정

개인키는 Kleopatra에서 키쌍이 관리되는 것이니까 절대 export않는다. 상대에게 주기 위해 공개키를 export하는 것이다.

내보내기는 Kleopatra 안에 저장되어있던 publickey만 뽑아서 복사한 것이다. 이걸 상대에게 보내야 의미있다.

 

② 내가 Bob의 public key import 과정

내가 상대방으로부터 받은 publickey는 내 Kleopatra에서 import 해와야 암호화를 할 수 있다.

 

Bob의 public key로 암호화

 

Bob의 컴퓨터에서 복호화

'Lecture note in Ewha > Cyber Security' 카테고리의 다른 글

악성코드의 종류  (1) 2025.01.10
블록체인  (0) 2025.01.09
해시 및 전자서명  (0) 2025.01.08
Spoofing  (0) 2025.01.07
시스템 보안  (0) 2025.01.07