반응형
키를 이용한 암호화 통신은 크게 대칭키 암호화 방식과 공개키 암호화 방식으로 나뉜다.
1. 대칭키 암호화 방식 (symmetric-key algorithm)
대칭키 방식은 통신하는 주체들이 동일한 비밀키를 갖고, 그 키를 이용해 암복호화하며 통신하는 방식이다.
하나의 키로 암호화, 복호화가 가능하다.
그러나 대칭키 방식의 문제점이 있다..
- 키 교환 (처음에 대칭키를 어떻게 전달할거냐?) → 키 교환엔 비대칭키 방식을 사용하면 해결 가능
- 키 관리 (통신할 주체가 늘어나면 그 수만큼 대칭키가 늘어나게 됨)
- 키를 도난당한 경우 복호화 될 수 있음
※ 대표적인 대칭키 알고리즘으로는 DES, triple-DES, RC4, IDEA, AES 등의 외산 알고리즘과 SEED, ARIA 등의 국산 알고리즘이 있다. 우리나라 공인인증체계에서는 SEED를 주로 사용하며 제한적인 부분에서 DES, triple-DES, RC4를 사용하고 있다.
2. 공개키 암호화 방식 (Public Key Cryptography) = 비대칭키 암호화 방식
대칭키 암호화 방식의 문제점을 해결할 수 있는게 바로 비대칭키(공개키) 암호화 방식이다.
비대칭키는 {공개키, 개인키} 한 쌍의 키를 말하며, 각각 암호화, 복호화에 사용한다.
- 공개키로 암호화 하는 경우 : 개인키로 밖에 복호화 할 수 없으므로 '암호'의 성질을 지닌다.
- 개인키로 암호화 하는 경우 : 암호화는 개인키를 가진 본인만 가능하지만, 복호화는 공개키를 가지고 있다면 누구나 가능하므로 '서명'의 성질을 지닌다.
보통 대칭키 방식과 조합해서 사용한다.
간단히 설명하자면
A와 B가 있다고 치자
- B가 A에게 자신의 공개키(B)를 넘긴다.
- A는 B의 공개키(B)를 사용하여 대칭키를 암호화시킨 뒤 B에게 전달한다.
- B는 자신의 개인키(B)를 사용하여 A가 보내준 대칭키를 복호화한다.
- 이후 대칭키로 암복호화하며 통신한다. (비대칭키 방식은 오버헤드가 크기 때문에 통신 시에는 대칭키를 사용)
※ 대칭키는 데이터 한 번 보내고 버리기도 하고, 정책에 따라 더 쓸 수도 있기도 함 (10번, 하루 등)
이렇게 대칭키 방식의 문제점(대칭키를 어떻게 전달하는가)을 해결할 수 있다.
- 키 교환 → 상대에게 받은 공개키로 암호화하여 대칭키를 전달하므로 안전하게 키 교환이 가능해진다.
- 키 관리 → 통신 시마다 대칭키를 새로 생성해 쓰면 되므로, 통신주체마다 대칭키를 관리할 필요가 없다.
※ 키 교환 알고리즘으로는 우리나라 공인인증체계에서는 RSA 알고리즘을 주로 사용하며, 제한적인 환경에서 ECDSA와 KCDSA를 사용한다.
※ 이걸 표준화 한 게 TLS, SSL라고 하며, 이를 적용하여 웹브라우저와 웹서버간에 키 교환을 한 뒤 메시지를 암호화하여 통신하는 것을 HTTPS라 한다.
반응형
'개발_기타 > 미분류' 카테고리의 다른 글
SSH로 GCP 인스턴스 접속하기 (0) | 2022.03.24 |
---|---|
IntelliJ 단축키 (mac, Windows) (0) | 2021.08.08 |
비주얼 스튜디오 코드(Visual Studio Code) 단축키 (Mac, Windows) (0) | 2021.07.22 |
Visual Studio 자주쓰는 단축키 (0) | 2021.02.17 |
윈도우에서 리눅스 사용하기 (WSL2) (0) | 2021.01.28 |