티스토리 뷰
공개키란?
공개키 암호 방식은 공개 키 (Public Key)와 비밀 키 (Private Key)가 존재하며, 암호화할 때와 복호화할 때의 키가 달라 비대칭키라고도 한다. 공개 키는 누구나 알 수 있으며 비밀 키는 Owner만이 알아야만 한다.
공개 키 방식은 크게 메세지 암호화와 서명 두가지 종류로 볼 수 있다.
메세지 암호화
메세지 암호를 위해 공개 키 방식을 주로 사용하는데, 주로 공개키로 암호화를 하고 비밀키로 복호화를 한다.
즉, 누구나 확인할 수 없고 비밀키를 가지고 있는 Owner만 메세지를 확인할 수 있다.
이런 특징 때문에 웹서버 통신 시 암호화에 많이 쓰였다.
서버로 메세지 전송 시 공개키로 암호화를 하여 보내면 메세지는 서버에서만 복호화하여 볼 수 있기 때문이다.
아래 그림은 초기 비대칭키 개념을 확립한 모델이라고 볼 수 있다.
메세지를 비트화 한 값에 특정 x 값을 제곱하여 암호화 해서 보내면, 그 역수인 1/x 를 제곱하여 복호화 하는 방식이다.
위 그림을 차례대로 이해해보자. 한 Client가 "A"라는 메세지를 서버로 전송하는 시나리오이다.
특정 키가 13이라고 공개 된 상태에서 아래와 같이 암호화, 복호화 과정이 이뤄진다.
※ 어떤 사이트를 통해 공개할 수도 있고, Client와의 초기 Connection중 받을수도 있고 루트는 다양하다
Encryption
1. "A"라는 메세지를 ASCII 코드인 65로 변경한다.
2. 이 코드 값에 공개키인 13을 제곱하여 서버로 전송한다.
Decryption
3. 전송받은 값을 비밀키인 1/31을 제곱한다.
4. 계산된 값인 ASCII 코드를 다시 메세지로 변경한다.
하지만, 위와 같은 방식은 두가지 단점이 있다.
첫째, 공개 키에서 비밀 키를 유추하기가 쉽다는 것이다.
둘째, 메세지가 길어질수록 제곱을 하기 때문에 통신 비용이 커진다는 것이다.
이 때문에 아래와 같이 mod를 이용한 연산을 통해 개선이 되어서 사용되고 있다.
방식은 동일하고, mod를 위한 값을 함께 공개하고 암호화 시 mod를 해서 보내준다.
암호화 된 값은 어떠한 과정을 통해 역산하여 mod를 할 경우 복호화 될 수 있는 Private Key 를 사용한다.
비밀 키를 쉽게 유추할 수 없고 mod를 함으로써 길이가 짧아지게 되므로 위 단점을 커버할 수 있다.
전자서명
온라인 상에서 계약을 하려면 아래 두가지가 확인 되어야 한다.
첫째, 계약자의 신원을 증명하기 위한 서명 (계약서의 도장)
둘째, 데이터의 위조가 없음을 증명 (계약서 원본)
전자 서명은 위 공개키 방식을 역발상 한 것으로 주로 서명과 검증을 위해 사용되며 아래 그림과 같다.
※ 이전 RSA에서 mod 방식은 계산이 복잡하므로 단순한 방식을 가지고 이해해본다
위 그림대로 어떤 "A"라는 계약이 있고 여기에 계약을 위한 서명을 한다.
이 때 자신만이 가지고 있는 비밀키를 통해서 암호화 한 값을 Digital Signature (전자서명) 라고 하며,
"A"라는 계약서에 서명 데이터를 첨부하여 전송한다.
그리고 추후에 이 계약의 서명 전 데이터와 동일한지 검증하려고 할 때 공개키를 통해 서명을 복호화 한 값과 "A" 계약서가 같은지 확인하면 된다.
Private Key는 도장과 같은 개념으로 항상 자신만 소유해야 하며 모바일이나 개인PC 등 개인적인 공간에서 관리되어야 한다.
'Architecture > Security' 카테고리의 다른 글
[블록체인] Proof of Stake (PoS) 란? (0) | 2021.06.23 |
---|---|
[암호화] Base64 (0) | 2020.03.19 |
[암호화] 양방향/단방향 암호화 (0) | 2019.12.02 |
OAUTH (0) | 2019.06.12 |
- Total
- Today
- Yesterday
- Java
- 사토시 나가모토
- 알고리즘
- Bitcoin
- Vue.js
- Nealford
- 카르다노
- excel parsing
- Redis
- leetcode
- gRPC
- vuejs
- Bruteforce
- architecture
- 스프링 시큐리티
- 동적계획법
- Blockchain
- 아키텍처
- 블록체인
- 백준
- white paper
- kubernetes
- k8s
- 비트코인
- CARDANO
- DP
- Spring
- 스프링
- 암호화폐
- SpringBoot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |