이 내용은 인프런에 있는 강의 널널한 개발자 님의 외워서 끝내는 SSL과 최소한의 암호기술를 정리한 것이며
자신이 보안 암호화 기술에 대한 개념이 "아주" 부족하다고 생각 되는 분은 꼭 수강하시는 것을 추천 드립니다!
대칭키와 비대칭 키는 인터넷을 통해 인증하게 되었을 때 많이 사용하는 방식중 하나 입니다.
그럼 이제 이러한 개념을 파악해보겠습니다.
일단 개념에 들어가기전 비트 연산중 XOR 연산에 대하여 숙지해야합니다.
비트 XOR 연산
비트 XOR 연산자는 비트 단위로 XOR라 불리는 배타적 OR 연산을 처리합니다. 배타적(Exclusive) OR 연산은 두 비트가 서로 다른 경우에만 1이 되고 그렇지 않으면 0이 되는 다소 특이한 연산자입니다. 연산자 기호로는 캐럿(^) 기호를 사용합니다.
😀 대칭키
- 키 하나로 암호화/복호화를 모두 수행하는 방식. -> 보안성을 부여할 수 있다는 뜻
- 비대칭키 방식에 비해 효율적이다. (키 생성에 많은 연산과 자원이 소모)
- 따라서 대칭키, 비대칭키를 둘다 사용해도 무방하다면 대칭키를 사용하는 것을 권장한다.(효율이 아주 좋다.)
- DES, 3DES, SEED-128, ARIA(우리나라에서 만들었음?), AES-128, AES-256 알고리즘이 유명 하다. (굵은 글자가 많이 사용된다.)
- 대칭키는 길이가 길어질 수록 보안이 향상된다.
- 대칭키를 노출하게 된다면 암호화 대상(원본 데이터)도 파악이 가능하므로 안전하게 보관 하는 것이 아주 중요하다.
- 아래의 예시는 대칭키를 하나만 사용했지만 여러 개의 대칭키를 이용해 암호화 할 수 있다.
- 사용 예시
- 데이터 전송 보호: 송신자와 수신자가 미리 공유한 대칭키를 사용하여 데이터를 암호화하고 복호화합니다.
- 파일 암호화: 파일을 보호하기 위해 대칭키로 암호화합니다. 복호화 시에도 동일한 키가 필요합니다.
😀 비대칭키
- 한 쌍의 키가 서로 상호작용하는 구조를 갖는다.
- public key 는 공개하는 키, private key 는 비공개하는 키
- 두 키 중 하나로 암호화 하면 쌍을 이루는 다른 키로 복호화 한다.
- 보통 Public key와 Private key로 구분하며 PKI(Public Key Infrastructure) 기술의 근간 을 이룬다.
- 여기에 Hash 를 더해서 사용한다.
- RSA-2048, ECC 알고리즘이 있다.
- 두 개의 키중 하나로 암호화를 진행하고 남은 하나의 키로 복호화 하는 작업을 진행한다.
- 속도는 대칭키에 비하여 느리다.
- 사용 예시
- 전자 메일 보안: 공개키로 이메일 내용을 암호화하고, 수신자는 개인키로 복호화합니다.
- 디지털 서명: 개인키로 문서에 서명하여 작성자를 증명하고, 수신자는 공개키로 서명을 검증합니다.
- SSL/TLS: 웹사이트와 브라우저 간 안전한 통신을 위해 비대칭키 암호화를 사용하여 세션 키를 교환한 후, 대칭키로 데이터를 암호화합니다.
😀 디지털 서명
말그대로 서명을 하는 것이다.
원본 문서를 해시로 계산을 한 후 Private Key 로 암호화를 한다.
다음 Public Key 로 푼다.
따라서 원본 문서를 제공할때 Public Key 를 같이 제공한다.
그럼 Public Key 로 원본 문서를 복호화하게 되었을 때 해시가 변조 되었는지 판다 할 수 있는 것이다.
Private key로 해시 결과를 암호화 하는 것이다.
따라서 원본 문서를 보낸 사람이 확실하게 Private Key 로 서명을 했다는 것을 증명하기 위한 방식이 디지털 서명이다.
😀 네트워크를 통한 PKI 시스템
😁 대칭키와 인터넷 환경 보안 문제
- 인터넷 상에서 대칭키만을 이용해 문서를 암호화를 진행하게 되었을때 보안상 문제가 될 수 있습니다.
그럼 어떤 방식으로 대칭키를 유출하지 않고 안전하게 주고 받을 수 있을까? 정답은? 없다 입니다. -> 인터넷 환경에서는 공개된 환경이기 때문입니다.
😄 비대칭키와 해결 방법
- 위의 대칭키 문제는 아래의 Private Key 를 이용해 해결 할 수 있습니다.
- 첫번째로 키를 각자의 Pc 에서 키를 생성합니다.
- 그 후 Public Key 를 교환합니다.
- 각자 데이터를 보내게 되었을 때, public key를 이용해 암호화를 진행합니다.
위와 같은 방법으로 문제를 해결 할 수 있지만,
각각의 키쌍을 생성하는 것에는 많은 비용(시간, 자원)이 들게 됩니다.
우리는 통신을 하게 되었을 때,
한곳이 아닌 여러 곳과 통신을 진행하기 때문에 성능적으로 문제가 될 수 있습니다.
추가로, public key를 노출하게 되었을 때 private key 를 유추할 수 있는 경우가 존재합니다.
결과적으로 비대칭키를 사용하게 되었을 때 대칭키에 비하여 key 의 길이가 자연스럽게 증가하게 되면서
key 의 길이가 비대해지게 됩니다.
😄 대칭키와 비대칭 키의 혼합 사용
아래와 같은 방식은 대칭키와 비대칭키를 혼합하여 사용하는 경우 입니다.
다음과 같은 방식으로 키를 주고 받습니다.
- Host 의 PC 에서 대칭키를 생성합니다.
- 서버는 가지고 있는 Public key 를 host 에 전달
- Host 에서 대칭키 서버에서 받은 Public Key 로 암호화
- 암호화된 대칭키 전달
- 암호화된 대칭키 서버의 Private Key 로 복호화
위와 같은 방식으로 키를 주고 받은 후, 데이터를 주고 받게 되었을 때 대칭키를 이용해 암호화를 진행하고
복호화를 진행합니다.
여기서, 대칭키는 세션키라고도 부를 수 있습니다.
결과적으로, 비대칭 키만을 이용하는 것이 아닌 대칭키와 혼용하게 되면서 성능이 향상됩니다.
뿐만 아니라, 각 PC 마다 대칭키를 따로 생성하고 가지게 되면서 보안의 성능도 올라가게 됩니다.
😄 혼합 사용의 보안상 문제점
- 하지만 Host 쪽에서는 이 Key 가 정말 서버에서 온것인가에 대한 확인(검증)이 꼭 필요합니다.
- 그 이유는 중간에 해커가 갈아치우기?바꿔치기(MITM 공격이라 합니다.)를 하면 파악을 할수 없기 때문입니다.
아래의 그림을 순서대로 파악하면 확인이 가능합니다.
😄 문제 해결을 위한 PKI 인증 체계와 (SSL 인증)
- CA(Certification Authority, 인증기관) : PCA의 하위 기관으로 인증서 발급과 취소 등의 실질적인 업무를 하는 기관이다. yessign(금융결제원), NCA(한국 전산원) 등이 이에 속하며, 상호 간 신뢰한다.
- RA(Registration Authority, 등록기관) : 사용자의 신분을 확인하고 CA 간 인터페이스를 제공하는 기관이다.
- 인증서 양식과 예시
'CS > 암호학' 카테고리의 다른 글
[암호학] 암호학의 기본 CheckSum 과 Hash (0) | 2024.07.01 |
---|