1. 대칭키 암호화와 비대칭키 암호화
대칭키 암호화:
- 개념: 송신자와 수신자가 동일한 키를 사용해 데이터를 암호화하고 복호화하는 방식입니다. 같은 키를 사용하기 때문에 암호화와 복호화 속도가 빠릅니다.
- 장점:
- 빠른 속도: 대칭키 암호화는 비대칭키보다 암호화, 복호화가 빠르기 때문에 대용량 데이터를 처리할 때 유리합니다.
- 낮은 계산 복잡도: 대칭키 방식은 비대칭키 방식보다 계산 과정이 단순해 리소스가 적게 사용됩니다.
- 단점:
- 키 관리의 어려움: 키를 송신자와 수신자가 공유해야 하므로, 키가 외부로 노출되면 보안에 취약해질 수 있습니다. 특히, 여러 사람과 통신해야 하는 경우, 각각의 사람에게 키를 안전하게 전달하고 관리하는 데 어려움이 있습니다.
- 예시: AES, DES, 3DES 등
- 상황 설명: A는 B에게 비밀 파일을 전송하려고 합니다. 이 파일에는 민간함 정보가 포암되어 있어 외부로 노출되면 안 됩니다.
- A와 B는 사전에 동일한 대칭키 (ex: 123456)을 공유합니다.
- A는 이 대칭키를 사용해 파일을 AES 알고리즘으로 암호화합니다. 암호화된 결과는 읽을 수 없는 문자열(ex: E2Fh...)로 변환됩니다.
- A는 암호화된 파일을 B에게 전송합니다.
- B는 A와 공유한 동일한 대칭키(123456)를 사용해 이 파일을 복호화하고, 원래의 정보를 읽을 수 있게 됩니다.
- 리스크: 만약 누군가 A와 B가 공유한 대칭키를 알게 된다면, 해당 키로 암호화된 파일을 쉽게 복호화할 수 있어 보안에 문제가 생길 수 있습니다.
비대칭키 암호화:
- 개념: 서로 다른 키 쌍(공개키, 개인키)을 사용해 암호화와 보호화를 수행합니다. 공개키로 암호화한 데이터는 해당하는 개인키로만 복호화할 수 있으며, 개인키로 암호화한 데이터는 공개키로 만 복호화할 수 있습니다.
- 장점:
- 키 교환의 안전성: 대칭키와 달리 공개키는 누구에게나 공개할 수 있으므로, 키를 안전하게 교환할 수 있습니다.
- 데이터 무결성 보장: 비대칭키를 이용하면 디지털 서명과 같은 기능을 통해 데이터가 위조 되지 않았음을 보장할 수 있습니다.
- 단점:
- 느린 속도: 암호화와 복호화 과정이 복잡하여 속도가 느리며, 계산 비용이 많이 듭니다. 대용량 데이터 전송에는 적합하지 않습니다.
- 예시: RSA, ECC 등
- 상황 설명: C는 D에게 민감한 메시지를 전송하려고 합니다. C는 D와 안전하게 메시지를 공유하고 싶지만, C와 D는 서로 처음 만났으며 사전에 키를 공유하지 않습니다.
- 과정:
- D는 자신의 공개키(ex: D_pub)를 웹사이트에 공개합니다.
- C와 D의 공개키(D_pub)를 사용해 "비밀 메시지"라는 내용을 암호화합니다. 암호화된 결과는 E1Gm...와 같은 암호화된 문자열입니다.
- C는 이 암호화된 메시지를 D에게 전송합니다.
- D는 자신의 개인키(ex: D_pri)를 사용해 C로부터 받은 암호화된 메시지(E1Gm...)를 복호화하여 "비밀 메시지"를 읽을 수 있습니다.
- 리스크: 비대칭키의 공개키는 누구에게나 공개되지만, 개인키는 반드시 D만이 가지고 있어야 합니다. 만약 D의 개인키가 노출된다면, 누구나 D에게 전달된 암호화된 메시지를 복호화할 수 있어 보안 문제가 발생할 수 있습니다.
2. 대칭키와 비대칭키의 혼합 사용
- 혼합 사용의 필요성: 대칭키와 비대칭키는 각기 다른 장점과 단점이 있기 때문에 ,이를 조합해서 사용하면 보안성과 성능을 모두 확보할 수 있습니다.
- 대칭키는 속도가 빠르고 대용량 데이터를 처리하는 데 적합하지만, 키를 안전하게 전달하는 것이 문제입니다.
- 비대칭키는 키 교환의 안전성이 높아 신뢰할 수 있는 키 전달이 가능하지만, 속도가 느려 대용량 데이터 처리에 비효율적입니다.
- 사용 방식: 주로 비대칭키를 사용해 대칭키를 안전하게 교환한 후, 교환된 대칭키를 이용해 실제 데이터를 암호화합니다. 이렇게 하면 대칭키의 보안성과 대칭키의 속도를 동시에 활용할 수 있습니다.
- 상황 예시: E와 F가 대용량 파일을 안전하게 주고받으려 할 때, E는 F의 공개키로 대칭키를 암호화해 전송합니다. F는 자신의 개인키로 이 대칭키를 복호화합니다. 이후, E와 F는 이 대칭키를 사용해 암호화하고 빠르게 전송할 수 있습니다. 이를 통해 키 교환 과정의 보안을 유지하면서도 데이터의 전송의 속도를 높일 수 있습니다.
- 아직 설명이해가 잘 안되므로 상황 설명을 하겠습니다.
- 상황 설명: E와 F는 대용량의 비밀 파일을 안전하게 공유하고 싶습니다. 대칭키 방식은 빠르지만 키를 안전하게 공유하는 것이 문제고, 비대칭키 방식은 키 교환이 안전하지만 속도가 느려 대용량 파일 전송에 부적합합니다.
- 과정:
- F는 자신의 공개키(ex: F_pub)를 E에게 전달합니다.
- E는 대칭키(ex: XYZ123)를 생성하고, 이 대칭키를 F의 공개키(F_pub)로 암호화하여 F에게 전송합니다.
- F는 자신의 개인키(ex: F_pri)를 사용해 E로부터 받은 암호화된 대칭키(XYZ123)를 복호화하여 대칭키를 얻습니다.
- 이제 E와 F는 같은 대칭키(XYZ123)를 공유하게 되며, 이 대칭키를 사용해 파일을 암호화하고 복호화하여 빠르게 파일을 전송할 수 있습니다.
- E는 대칭키로 파일을 암호화한 후 F에게 전송하고, F는 이 대칭키로 파일을 복호화하여 원본 파일을 읽을 수 있게 됩니다.
- 장점: 비대칭키를 사용해 대칭키를 안전하게 공유하면서도, 대칭키의 빠른 처리 속도로 대용량 파일을 효율적으로 전송할 수 있습니다.
3. HTTPS
- HTTPS란?
- 개념: HTTPS는 HTTP와 SSL/TLS를 결합한 보안 프로토콜로, 웹 브라우저와 웹 서버 간의 통신을 암호화하여 중간에 정보가 도청되거나 변조되는 것을 방지합니다.
- HTTPS의 암호화 방식: HTTPS는 대칭키와 비대칭키를 혼합하여 사용합니다. 초기 키 교환단계에서 비대칭키를 사용해 대칭키를 안전하게 전달한 후, 실제 데이터 전송에서는 대칭키로 암호화된 통신을 진행합니다.
- HTTPS 작동 방식:
- SSL/TLS Handshake:
- 클라이언트(브라우저)가 서버에 HTTPS 연결을 요청합니다.
- 서버는 SSL 인증서를 브라우저에 전송하고, 이 인증서에는 서버의 공개키가 포함되어 있습니다.
- 브라우저는 서버의 인증서를 신뢰할 수 있는 인증기관(CA)을 통해 검증합니다.
- 브라우저는 세션 키(대칭키)를 생성하고, 서버의 공개키를 사용해 이를 암호화하여 서버에 전송합니다.
- 세선 키를 이용한 데이터 전송
- 서버는 자신의 개인키를 사용해 세션 키를 복호화하여 대칭키를 얻습니다.
- 이후 클라이언트와 서버는 이 세션 키를 이용해 데이터를 암호화하여 빠르게 통신합니다.
- 이 과정에서 데이터가 암호화되므로, 중간에 도청하거나 변조하려 해도 원본 데이터를 알 수 없습니다.
- 장점:
- 보안성: HTTPS는 SSL/TLS를 통해 데이터가 암호화되어 전송되므로, 제3자가 중간에서 데이터를 가로채거나 변조할 수 없습니다.
- 서버 인증: 사용자는 서버의 신원을 검증할 수 있으므로, 피싱 사이트나 신뢰할 수 없는 서버로부터 보호받을 수 있습니다.
- 데이터 무결성: 데이터를 전송하는 동안 변조되지 않음을 보장합니다.
- 상황 예시: 사용자가 은행 웹사이트에 로그인할 때, HTTPS는 사용자의 로그인 정보(ex: 아이디, 비밀번호)가 안전하게 서버로 전송되도록 보장합니다. 브라우저와 서버 간의 통신이 SSL/TLS를 통해 암호화되기 떄문에, 공격자가 중간에서 이 정보를 가로채도 내용을 해독할 수 없습니다.
- 예시 좀더 다시 자세하게
- 상황 설명: 사용자가 웹 브라우저를 통해 은행 웹사이트에 로그인하려고 합니다. 로그인 정보는 민감한 데이터이기 때문에 중간에서 도청되면 안 됩니다.
- 과정:
- SSL/TLS Handshake:
- 사용자가 은행 웹사이트에 접속할 때, 웹사이트는 SSL 인증서를 사용자 브라우저에 전송합니다. 이 인증서에는 웹사이트의 공개키가 포함되어 있습니다.
- 브라우저는 인증서를 신뢰할 수 있는 인증기관(CA)을 통해 검증하여, 웹사이트가 신뢰할 수 있는 사이트임을 확인합니다.
- 세션 키 생성:
- 브라우저는 세션 키(대칭키, ex: ABC123)을 생성하고, 웹사이트의 공개키로 이 세션 키를 암호화하여 웹사이트에 전송합니다.
- 웹사이트는 자신의 개인키를 사용해 이 암호화된 세션 키를 복호화하여 세션 키를 얻습니다.
- 데이터 암호화 전송:
- 이후, 브라우저와 웹사이트는 이 세션 키(ABC123)을 사용해 데이터를 암호화하여 주고 받습니다. 사용자의 로그인 정보(아이디, 비밀번호)도 이 세션 키를 통해 암호화된 상태로 서버에 전송됩니다.
- 중간에서 해커가 데이터를 가로채더라도, 암호화된 상태로 전달되기 때문에 해독할 수 없습니다.
- SSL/TLS Handshake:
- 장점: SSL/TLS를 통해 데이터 전송이 암호화되므로 도청과 데이터 변조의 위험이 줄어들며, 사용자는 웹사이트의 신원을 인증서로 검증할 수 있어 신뢰성을 확보할 수 있습니다.
- SSL/TLS Handshake:
'TIL' 카테고리의 다른 글
게임 프로그래밍과 삼각함수는 무슨연관이 있을까? (4) | 2024.10.30 |
---|---|
Load Balancing에 대하여 (1) | 2024.10.21 |
전송 계층 프로토콜에 대하여 (0) | 2024.10.16 |
메모리란? (0) | 2024.10.11 |
CPU란? (기초) (0) | 2024.10.10 |