SSL(TLS) 인증을 위한 기본개념
SSL(TLS)을 이용하여 HTTPS를 적용하고 싶었다.
SSL(TLS)이란?
SSL : Secure Socket Layer (보안 소켓 레이어)
TLS : Transport Layer Security (전송 계층 보안)
SSL 프로토콜은 처음에 Netscape사에서 웹서버와 브라우저 사이의 보안을 위해 만들었다. SSL은 Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 그리고 SSL을 표준화하면서 바뀐 이름이 TLS이다.
SSL을 사용하는 이유
1. 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청, 간섭, 위조를 방지하기 위해서 설계되었다.
2. 암호화를 해서 최종단의 인증, 통신 기밀성을 유지시켜준다.
3. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
4. 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
5. 통신 내용의 악의적인 변경을 방지할 수 있다.
SSL의 핵심은 암호화이고 보안과 성능상의 이유로 두가지 암호화 기법(대칭키, 공개키)을 혼용해서 사용한다. 먼저, 대칭키 방식과 공개키 방식에 대해 알아보자.
대칭키 방식
대칭키 방식은 이름에서 알 수 있듯이 키가 대칭이다. 이 말은 전송하는 쪽과 받는 쪽이 같은 키(대칭키)를 소유하고 있다는 뜻이고, 그 대칭키를 이용하여 암호화와 복호화에 사용한다. 하지만 이 방식은 전송단에서 암호화할 때 사용했던 키를 수신단에서 복호화할 때 사용해야하므로 키를 수신단에 전달해야하는 문제가 있다.
대칭키 방식을 자물쇠 달린 택배에 비유하면 좋을 것 같다. 자물쇠 비밀번호를 설정하고 택배를 주면 택배를 받은 사람이 설정한 비밀번호를 입력하면 자물쇠가 열린다. 하지만 택배를 받는 사람이 택배를 준 사람으로 부터 비밀번호도 받아야하는 문제가 발생한다. 이것이 대칭키 방식의 문제점이라 할 수 있다.
공개키방식
공개키 방식은 대칭키 방식의 문제점을 해결하기 위해 만들어진 더 좋은 암호화 기법이다.
대칭키 방식은 키가 1개 이지만 공개키 방식은 2개의 키를 이용하는 것이 가장 큰 차이점이다. 대칭키 방식에서 2개의 키중 하나는 비공개키(private key=비밀키=개인키)로 하고, 나머지를 공개키(public key)로 지정한다. 암호화와 복호화에 한 가지 규칙은 '암호화할 때 공개키로 하면 복호화는 비공개키로 해야하고, 반대로 암호화를 비공개키로 하면 복호화는 공개키로 해야한다'이다
공개키를 가진 클라이언트가 암호화하여 서버에 전달하고, 서버는 비밀키로 복호화하게 된다. 반대로, 비밀키를 가진 서버가 암호화하여 클라이언트에게 전달하고, 클라이언트는 공개키로 복호화한다. 그런데, 클라이언트가 가진 공개키는 말그대로 누구에게나~ 공개된 키이고 누구나~ 복호화가 가능해서 암호화 기능은 없다. 하지만 인증 기능을 할 수 있다.
갑자기 인증이라니?
만약 클라이언트가 공개키로 데이터를 복호화하는 데 성공했다면 다음이 성립한다. 데이터를 암호화한 키는 비밀키이다. 따라서 전송받은 데이터는 서버가 전송한 것이다.(비밀키는 서버만! 가지고 있기 때문에). 말을 조금 바꿔보면 서버가 전송했다는 것을 '인증'하게 되는 것이다. (데이터를 제공한 사람의 신원을 보장해준다는 의미에서 전자서명의 개념을 조금 맛봤다) 그리고 공개키의 암호화 기법과 인증 기능을 복합적으로 사용하여 나타난 것이 SSL이다.
SSL을 이해하는 데 웹툰으로 잘 설명한 아래 링크를 참고하면 좋을 듯하다.
미닉스 김인성님의 블로그 - SSL이란 무엇인가?
SSL(TLS)이란?
SSL : Secure Socket Layer (보안 소켓 레이어)
TLS : Transport Layer Security (전송 계층 보안)
SSL 프로토콜은 처음에 Netscape사에서 웹서버와 브라우저 사이의 보안을 위해 만들었다. SSL은 Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 그리고 SSL을 표준화하면서 바뀐 이름이 TLS이다.
SSL을 사용하는 이유
1. 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청, 간섭, 위조를 방지하기 위해서 설계되었다.
2. 암호화를 해서 최종단의 인증, 통신 기밀성을 유지시켜준다.
3. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
4. 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
5. 통신 내용의 악의적인 변경을 방지할 수 있다.
SSL의 핵심은 암호화이고 보안과 성능상의 이유로 두가지 암호화 기법(대칭키, 공개키)을 혼용해서 사용한다. 먼저, 대칭키 방식과 공개키 방식에 대해 알아보자.
대칭키 방식
대칭키 방식은 이름에서 알 수 있듯이 키가 대칭이다. 이 말은 전송하는 쪽과 받는 쪽이 같은 키(대칭키)를 소유하고 있다는 뜻이고, 그 대칭키를 이용하여 암호화와 복호화에 사용한다. 하지만 이 방식은 전송단에서 암호화할 때 사용했던 키를 수신단에서 복호화할 때 사용해야하므로 키를 수신단에 전달해야하는 문제가 있다.
대칭키 방식을 자물쇠 달린 택배에 비유하면 좋을 것 같다. 자물쇠 비밀번호를 설정하고 택배를 주면 택배를 받은 사람이 설정한 비밀번호를 입력하면 자물쇠가 열린다. 하지만 택배를 받는 사람이 택배를 준 사람으로 부터 비밀번호도 받아야하는 문제가 발생한다. 이것이 대칭키 방식의 문제점이라 할 수 있다.
공개키방식
공개키 방식은 대칭키 방식의 문제점을 해결하기 위해 만들어진 더 좋은 암호화 기법이다.
대칭키 방식은 키가 1개 이지만 공개키 방식은 2개의 키를 이용하는 것이 가장 큰 차이점이다. 대칭키 방식에서 2개의 키중 하나는 비공개키(private key=비밀키=개인키)로 하고, 나머지를 공개키(public key)로 지정한다. 암호화와 복호화에 한 가지 규칙은 '암호화할 때 공개키로 하면 복호화는 비공개키로 해야하고, 반대로 암호화를 비공개키로 하면 복호화는 공개키로 해야한다'이다
공개키를 가진 클라이언트가 암호화하여 서버에 전달하고, 서버는 비밀키로 복호화하게 된다. 반대로, 비밀키를 가진 서버가 암호화하여 클라이언트에게 전달하고, 클라이언트는 공개키로 복호화한다. 그런데, 클라이언트가 가진 공개키는 말그대로 누구에게나~ 공개된 키이고 누구나~ 복호화가 가능해서 암호화 기능은 없다. 하지만 인증 기능을 할 수 있다.
갑자기 인증이라니?
만약 클라이언트가 공개키로 데이터를 복호화하는 데 성공했다면 다음이 성립한다. 데이터를 암호화한 키는 비밀키이다. 따라서 전송받은 데이터는 서버가 전송한 것이다.(비밀키는 서버만! 가지고 있기 때문에). 말을 조금 바꿔보면 서버가 전송했다는 것을 '인증'하게 되는 것이다. (데이터를 제공한 사람의 신원을 보장해준다는 의미에서 전자서명의 개념을 조금 맛봤다) 그리고 공개키의 암호화 기법과 인증 기능을 복합적으로 사용하여 나타난 것이 SSL이다.
SSL을 이해하는 데 웹툰으로 잘 설명한 아래 링크를 참고하면 좋을 듯하다.
미닉스 김인성님의 블로그 - SSL이란 무엇인가?
댓글
댓글 쓰기