암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘
동일한 키를 주고받기 때문에, 매우 빠르다는 장점이 있음
but, 대칭키 전달과정에서 해킹 위험에 노출
대칭키가 빠른 이유는 기본적인 연산으로 암복호화하기 때문에 암복호화가 빠름.
암호화와 복호화에 사용하는 암호키를 분리한 알고리즘
대칭키의 키 분배 문제를 해결하기 위해 고안됨.(대칭키일 때는 송수신자 간만 키를 알아야하기 때문에 분배가 복잡하고 어렵지만 공개키와 비밀키로 분리할 경우, 남들이 알아도 되는 공개키만 공개하면 되므로)
자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화할 수 있는 암호키(공개키)를 대중에 공개함
공개키(Public Key)와 비공개키(Private Key)는 암호화 기술에서 사용되는 두 개의 키(Key)입니다.
비공개키는 자신만이 가지고 있는 키로, 데이터를 암호화하거나 복호화할 때 사용됩니다. 이 키는 암호화된 데이터를 복호화하거나, 전자 서명을 생성할 때 사용됩니다. 비공개키는 보안상의 이유로 외부에 노출되지 않도록 주의해야 합니다.
공개키는 모두에게 공개되어 있으며, 데이터를 암호화할 때 사용됩니다. 이 키는 암호화된 데이터를 복호화할 수 없고, 전자 서명을 검증할 때 사용됩니다. 공개키는 비공개키와 쌍을 이루어 사용되며, 공개키로 암호화한 데이터는 비공개키로만 복호화할 수 있습니다.
공개키와 비공개키는 대칭키 암호화 방식에 비해 보안성이 높은 비대칭키 암호화 방식에서 사용됩니다. 비대칭키 암호화 방식은 공개키와 비공개키를 쌍으로 사용하여 데이터를 암호화하고 복호화하며, 대칭키 암호화 방식은 동일한 키를 사용하여 데이터를 암호화하고 복호화합니다. 대칭키 암호화 방식은 빠르게 암호화/복호화가 가능하지만, 키 관리가 어렵기 때문에, 비대칭키 암호화 방식이 주로 사용됩니다.
공개키와 비공개키는 대칭키 암호화 방식과는 다른 장단점을 가지고 있습니다. 공개키 암호화 방식은 키 관리가 용이하고, 보안성이 높은 반면, 암호화/복호화가 느리고, 대량의 데이터를 처리하는데에는 부적합합니다. 반면, 대칭키 암호화 방식은 암호화/복호화가 빠르고, 대량의 데이터를 처리하는데 효과적이지만, 키 관리가 어렵고, 보안성이 낮은 단점이 있습니다.
1) A가 웹 상에 공개된 'B의 공개키'를 이용해 평문을 암호화하여 B에게 보냄
2) B는 자신의 비밀키로 복호화한 평문을 확인, A의 공개키로 응답을 암호화하여 A에개 보냄
3) A는 자신의 비밀키로 암호화된 응답문을 복호화함
하지만 이 방식은 Confidentiallity만 보장해줄 뿐, Integrity나 Authenticity는 보장해주지 못함
-> 이는 MAC(Message Authentication Code)나 전자 서명(Digital Signature)으로 해결
(MAC은 공개키 방식이 아니라 대칭키 방식임을 유의! T=MAC(K,M) 형식)
대칭키에 비해 암호화 복호화가 매우 복잡함
(암호화하는 키가 복호화하는 키가 서로 다르기 때문)
!!!
공개키 암호화 방식은 기본적으로 Confidentiality를 보장합니다. 그러나 데이터의 Integrity나 Authenticity를 보장하지는 않습니다.
Integrity는 데이터가 변조되지 않았음을 보장하는 것을 의미합니다. Authenticity는 데이터가 신뢰할 수 있는 출처에서 왔음을 보장하는 것을 의미합니다.
공개키 암호화 방식은 데이터를 암호화할 뿐이기 때문에, 암호화된 데이터가 변조되지 않았는지를 보장하지는 않습니다. 이러한 문제는 MAC(Message Authentication Code) 또는 전자 서명(Digital Signature)으로 해결될 수 있습니다. MAC은 대칭키 암호화 방식을 사용하여 데이터의 무결성을 검증합니다. 전자 서명은 공개키 암호화 방식을 사용하여 데이터의 무결성과 출처를 보장합니다.
공개키 암호화 방식은 대칭키 암호화 방식에 비해 계산량이 많고, 암호화/복호화 속도가 느린 단점이 있습니다. 따라서, 대용량 데이터를 처리하는 데는 적합하지 않을 수 있습니다. 하지만, 공개키 암호화 방식은 대칭키 암호화 방식과 달리 키 관리가 용이하고, 안전하게 데이터를 전송할 수 있다는 장점이 있습니다. 그리고, 공개키 암호화 방식은 인터넷을 비롯한 여러 분야에서 보안 기술의 핵심 기술로 활용되고 있습니다.
SSL 탄생의 시초가 됨
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
2. B는 암호문을 받고, 자신의 비밀키로 복호화함
3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
4. A는 자신의 대칭키로 암호문을 복호화함
5. 앞으로 이 대칭키로 암호화를 통신함
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 계속 대칭키 암호화 방식으로 통신하는 것!
SSL
SSL(Secure Sockets Layer)은 웹 서버와 클라이언트 간의 통신을 보안하는 프로토콜입니다. SSL은 인터넷을 통해 전송되는 데이터를 암호화하여 보안성을 높입니다. SSL은 데이터의 기밀성, 무결성, 인증 등을 보호하며, 전자 상거래와 같은 안전한 인터넷 통신을 지원합니다.
SSL은 웹 사이트와 브라우저 간의 통신을 암호화하여 중간자 공격 및 도난, 변조, 위조 등의 보안 문제를 방지합니다. SSL은 웹 사이트와 브라우저 간의 통신에 사용되는 TCP/IP 프로토콜 위에 적용되며, HTTPS(HyperText Transfer Protocol Secure)라는 프로토콜을 통해 암호화된 통신을 제공합니다.
SSL을 사용하는 웹 사이트는 인증서(Certificate)를 발급받아야 합니다. 인증서는 SSL 통신을 하는 데 필요한 정보를 담고 있으며, 공개키 암호화 방식을 사용하여 웹 사이트의 공개키와 서명된 인증서를 브라우저에 전달합니다. 브라우저는 이를 검증하여, 웹 사이트의 신원을 확인하고 SSL 통신을 암호화하여 보안성을 제공합니다.
SSL은 최근에는 TLS(Transport Layer Security)라는 이름으로 바뀌었으며, 현재는 TLS 1.3까지 개발되어 있습니다. TLS는 SSL의 보안 문제를 보완하고, 성능을 개선하여 보안성과 안정성을 높인 프로토콜입니다. TLS는 SSL과 호환성을 가지고 있으며, 현재는 TLS가 대부분 사용되고 있습니다.
TLS
TLS(Transport Layer Security)는 웹 사이트와 브라우저 간의 통신을 보안하는 프로토콜로, SSL(Secure Sockets Layer)의 후속 버전입니다. TLS는 SSL의 취약점을 보완하고, 보안성과 안정성을 개선하여 데이터의 기밀성, 무결성, 인증 등을 보호합니다.
TLS는 웹 사이트와 브라우저 간의 통신에 사용되는 TCP/IP 프로토콜 위에 적용되며, HTTPS(HyperText Transfer Protocol Secure)라는 프로토콜을 통해 암호화된 통신을 제공합니다. TLS는 공개키 암호화 방식을 사용하여 웹 사이트의 공개키와 서명된 인증서를 브라우저에 전달하고, 브라우저는 이를 검증하여 웹 사이트의 신원을 확인합니다. 이후, TLS는 대칭키 암호화 방식을 사용하여 암호화된 통신을 제공합니다.
TLS는 SSL과 비교하여 보안성과 안정성을 개선하였으며, TLS 1.0부터 TLS 1.3까지 다양한 버전이 개발되어 있습니다. TLS 1.3은 최신 버전으로, 이전 버전과 비교하여 보안성과 성능이 개선되었습니다. TLS 1.3은 보안성을 높이기 위해 다양한 암호화 방식을 제공하며, 핸드쉐이크 과정이 간소화되어 성능을 개선하였습니다.
TLS는 인터넷에서 데이터의 기밀성, 무결성, 인증 등을 보호하는 핵심 기술로 사용되며, 전자 상거래, 은행, 금융 등의 보안이 중요한 분야에서 널리 활용됩니다.