개요
- 대칭키 암호화 방식은 암호화 복호화에 사용하는 키가 동일한 암호화 방식
- 공개키 암호화 방식은 암호화 복호화에 사용하는 키가 서로 다른 방식
- 공개키 암호화 방식은 비대칭키 암호화라고도 부름
- 공개키 암호화 방식은 송수신자 모두 한쌍의 키(개인키, 공개키)를 가짐
- 개인키는 비밀키로 비공개키를 의미
대칭키
개요
- 하나의 비밀키를 Client와 Server 모두가 같이 사용
- 암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘
- Session Key, Secret Key, Shared Key, 단용키라고도 함
- 대표적인 알고리즘으로 공인 인증서 암호화 방식으로 유명한 SEED 알고리즘, DES, 3DES, 3AES, ARIA, 최근 주목받고 있는 암호화 알고리즘인 ChaCha20 등이 존재
- 암호화 하는 단위에 따라 스트림 암호와 블록암호로 구별
장점
- 암호화 속도가 빠름
- 대용량 Data 암호화에 적합
- 기밀성 제공
단점
- 키 배송 문제
- 키를 교환해야 하는 문제
- 탈취 관리 문제와 사용자가 증가할수록 키관리가 어려워지는 문제 모두 키 배송 문제 때문에 발생
- 키의 사전공유, 키 배포센터 이용, Diffie-Hellman 키교환, 공개키 암호에 의한 해결 등의 방식을 통해 문제 해결
- 탈취 관리 문제
- 키를 교환하는 과정에서 키가 탈취될 수 있는 문제 발생
- 비밀키 하나만 알아내면 암호화된 내용을 확인 가능하기 때문에 해커로 부터 안전하지 않음
- 사용자가 증가할 수록 키관리가 어려워짐
- 사용자가 증가할수록 전부 따로따로 키 교환을 해야하기 때문에 발생
- 통신을 n명이 한다면 nC2만큼의 작업이 필요
- 확장성이 떨어짐
- 무결성, 인증, 부인방지를 보장하지 않음
스트림 암호
- 연속적인 비트나 바이트를 계속해서 입력받아 그에 해당하는 암호화 비트나 바이트를 생성하는 방식
- 블록 암호에 비해 상대적으로 사용빈도가 낮음
- 블록 암호에 비해 가볍고 고속 동작이 용이해 무선 환경이나 스트리밍 서비스와 같은 환경에서 많이 사용
- 구현이 용이하고 수행속도가 빨라 수신되는 정보의 실시간 처리가 가능
- 계산 능력이 한정된 휴대폰이나 RFID 센서등에 이용
블록 암호
- 정해진 한 단위(블록)을 입력받아 그에 대응하는 암호화 블록을 생성하는 방식
- 적절한 운용모드를 조합하여 블록단위보다 큰 입력 처리 가능
공개키
개요
- 암호화와 복호화에 사용되는 키가 서로 다른 암호화 알고리즘
- 암호화에 공개키 사용
- 복호화에 비밀키(개인키) 사용
- 공개키 암호를 구성하는 알고리즘을 대칭키 암호 방식과 비교해 비대칭 암호라고 함
- 공개키는 누구나 알 수 있지만, 비밀키는 소유자만 알 수 있기 때문에 특정 비밀키를 가지는 사용자만이 내용을 열어볼 수 있음
- 속도가 느려 긴 문서의 암호화 보다는 대칭키 알고리즘의 키 값에 대한 암호화에 사용
- 대표적으로 Diffie-Hellman, RSA, DSA, ECC 알고리즘 존재
과정
- B가 공개키와 개인키 한쌍의 키 생성
- 공개키는 공개(등록), 개인키는 본인이 소유
- A가 B의 공개키를 받아옴
- B의 공개키를 이용해 메세지 암호화
- 암호화된 메세지 B에게 전송
- B는 개인키를 이용해 암호화된 메세지 복호화
장점
- 키 교환 문제 없음
- 기밀성, 인증, 부인방지 기능 제공
- 암호화된 메세지는 비밀키로만 복호화 할 수 있어 안전하게 메세지 전달 가능
단점
- 속도가 느림(대칭키의 약 1000배)
방식
암호모드
- 송신자 공개키로 암호화 후 송신자 사설키로 복호화
- 소량의 메세지 암호화에 사용
- 주로 키 교환의 용도로 사용
인증 모드
- 송신자 사설키로 암호화 후 송신자 공개키로 복호화
- 메세지를 인증(부인방지)하기 위해 사용
암호학적 해시함수(Cryptographic hash)
개요
- 공개키의 단점인 메세지의 크기가 크면 암호화 속도가 느린 점을 해결하기 위한 방식
- 메세지에 해시함수를 적용하면 메세지의 크기에 상관없이 해시함수에서 정의해놓은 일정한 크기의 데이터로 변경
- SHA256 방식 사용시 메세지가 256bits로 줄어듬
특징
일방향성
- 메세지 m에 해시함수를 적용해 h(m)을 만드는 계산은 빠르지만 h(m)으로 원본 메시지를 복구하는 건 불가능
충돌 방지
- 서로다른 메세지 m과 n에 해시함수를 적용시켜 h(m), h(n)을 만들때 동일한 m과 n의 쌍을 찾는것은 불가능
- 서로 다른 메세지의 해쉬값들은 서로 다를 수 밖에 없음
- h(m)의 경우의 수는 2^256개
SSL(Secure Socket Layer)
개요
- Netscape사에서 만든 계층 , 프로토콜
- 웹서버와 브라우저 사이의 보안 담당
- Certificate Authority(CA)라고 불리는 서드 파티로부터 서버와 클라이언트의 인증에 사용
SSL인증서
- 클라이언트와 서버 간의 통신을 제3자가 보증해주는 전자화된 문서
- 웹사이트가 믿을 만 한가에 대한 지표
- 인증서는 트리구조를 이룸
- 최상위 인증서는 Root CA라고 하며 인증서를 발행한 기관을 의미
SSL 통신과정
- 웹브라우저에서 웹서버로 SSL 통신 요청
- 웹서버는 인증서 전송(인증서에 개인키 포함)
- 웹브라우저는 웹서버에서 받은 인증서가 신뢰할 수 있는 지 확인
- 웹브라우저는 웹서버로부터 받은 개인키를 사용해 랜덤한 대칭키 및 http 데이터를 암호화해 웹서버로 전송
- 웹서버는 개인키를 이용해 랜덤 대칭키와 http데이터 복호화
- 웹서버는 요청받은 URL에 대한 응답을 웹브라우저로부터 전달받은 랜덤 대칭키를 이용해 데이터를 암호화해 웹브라우저로 전송
- 웹브라우저는 대칭키를 이용해 http데이터를 복호화해 화면에 정보 출력
대칭키 VS 공개키
※용어
기밀성(Confidentiality)
- 메세지에 대한 내용을 송신자와 수신자만 알수 있도록 하는 것
무결성(integrity)
- 메세지의 내용이 중간에 변조되지 않도록 하는 것
부인방지(non-repudiation)
- 메세지를 받았을 때 송신자가 딴소리 하지 못하도록
'CS > 네트워크' 카테고리의 다른 글
Blocking,Non-blocking & Synchronous,Asynchronous (0) | 2022.09.20 |
---|---|
TLS/SSL HandShake (0) | 2022.09.20 |
HTTP & HTTPS (0) | 2022.09.20 |
UDP (0) | 2022.09.20 |
TCP/IP, 흐름제어 혼잡제어 (0) | 2022.09.20 |