3. SSL/TLS
(1) SSL/TLS의 개요
1) 개본개념
① SSL(Secure Socket Layer)/TLS(Transport Layer Security)는 세계에서 가장 많이 이용되고 있는 암호 통신의 방법이다.
② 인터넷의 온라인 상점에서 신용카드 번호를 송신할 때 우리들이 사용하고 있는 웹브라우저는 SSL/TLS를 이용해서 암호통신을 수행한다. SSL/TLS를 사용하면 통신상대를 인증하고 통신내용의 기밀성을 확보할 수 있다.
③ SSL/TLS에서는 대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사난수 생성기, 전자서명을 조합해서 안전한 통신을 수행한다. 또한 SSL/TLS는 암호 스위트를 변경해서 보다 강력한 알고리즘을 사용할 수 있다.
④ 즉 SSL/TLS는 특정 암호기술에 의존하지 않는다. 어느 대칭키 암호가 약하다고 판명되면 앞으로는 그 대칭키 암호를 사용하지 않는 암호 스위트를 선택하면 된다. 이것은 마치 기계의 부품이 고장 났을 때 고장난 부품만을 교환하는 것과 같다.
2) 클라이언트와 서버
① 웹 브라우저는 앨리스의 컴퓨터상에서 동작하는 프로그램이고, 웹 서버는 밥 서점에 있는 컴퓨터상에서 동작하는 프로그램이다.
② 이 양자가 HTTP(HyperText Transfer Protocol)라는 프로토콜을 이용해서 통신을 행하고 있다. 웹 브라우저를 HTTP 클라이언트, 웹 서버를 HTTP 서버라 부른다.
③ HTTP는 HTTP 클라이언트와 HTTP 서버 사이의 "요청과 응답 주고받기"에 대한 약속된 규칙이다.
3) SSL/TLS상의 HTTP
① 웹 브라우저로 신용카드 번호를 보낼 때 신용카드 번호라고 하는 데이터는 클라이언트의 요청으로 서버에게 보내진다. 만약 이 통신이 도청자 이브에 의해 도청되면 신용카드 번호는 이브의 손에 넘어가 버리게 된다.
② 통신내용을 암호화해주는 프로토콜로 SSL 혹은 TLS를 이용한다. 그리고 SSL/TLS 상에 HTTP를 올린다.
③ 이것은 프로토콜의 이중 구조이다. 이것에 의해 HTTP의 통신(요청과 응답)은 암호화되어 도청을 방지할 수 있다. SSL/TLS로 통신을 수행할 때의 URL은 http://가 아니고 https://로 시작된다.
④ SSL/TLS 상에는 HTTP뿐만 아니라 다른 프로토콜도 올릴 수 있다.
⑤ 예를 들면 메일을 전송하기 위한 SMTP나 메일을 수신하기 위한 POP3와 같은 프로토콜을 SSL/TLS상에 올릴 수 있다. 이 경우에 SSL/TLS는 송수신하는 메일을 지키고 있는 셈이다.
4) SSL 보안 서비스
① 기밀성 서비스 : DES, RC4와 같은 대칭키 암호화 알고리즘을 사용하여 제공되며, 이때 사용되는 비밀키는 Handshake Protocol을 통해 생성된다.
② 클라이언트와 서버 상호 인증 : 연결 설정 과정에서 서로 간에 신뢰할 수 있도록 인증을 사용하는데, 인증에는 RSA와 같은 비대칭키 암호 알고리즘, DSS와 같은 전자서명 알고리즘과 X.509 공개키 인증서가 사용된다.
③ 메시지 무결성 서비스 : 안전한 해시 알고리즘을 사용해서 메시지 인증코드를 만들어 메시지에 포함시키기 때문에 신뢰성 있는 통신이 가능하다.
5) 암호 스위트( cipher suite )
① SSL/TLS는 암호 기술의 틀 짜기를 제공하는 것이다. 즉, SSL/TLS에서 사용하는 대칭키 암호, 공개키 암호, 전자서명, 일방향 해시함수 등은 사용하고 있던 암호 기술에 결함이 발견되었을 때 부품과 같이 교환할 수 있다.
② 그러나 대화하는 클라이언트와 서버가 같은 암호 기술을 사용하시 않으면 통신을 할 수 없어 상호운영성을 확보하기 어려워지기 때문에 뭐든지 자유롭게 고를 수 있는 것은 아니다.
③ 암호 기술의 "추천 세트"로 SSL/TLS가 규정되어 있다. 이 추천 세트를 암호 스위트라고 한다.
(2) SSL 구조
1) 암호학적 매개변수 생성
① 메시지의 무결성과 기밀성을 얻기 위해, SSL은 6개의 암호학적 비밀인 4개의 키와 2개의 초기벡터(IV)를 필요로 한다. 클라이언트는 메시지 인증(HMAC) 키와 암호화 키 그리고 블록 암호화를 위한 초기벡터를 필요로 한다. 서버도 동일하다.
② SSL은 한쪽 방향을 위한 키와 다른 방향을 위한 키가 다르도록 요구한다. 만약 한쪽 방향에서 공격이 있더라도 다른 방향은 영향을 받지 않는다. 매개변수는 다음의 절차를 사용하여 생성된다.
1. 클라이언트와 서버는 2개의 난수를 교환한다. 하나는 클라이언트에 의해 생성되고, 다른 하나는 서버에 의해 생성된다.
2. 클라이언트와 서버는 이전에 논의된 키 교환 알고리즘 중 하나를 사용하여 하나의 사전-마스터 비밀을 교환한다.
3. 48바이트 마스터 비밀(master secret)은 사전-마스터 비밀(pre-master secret)에 SHA-1과 MD5 해시함수를 적용하여 생성된다.
4. 마스터 비밀은 서로 다른 상수를 이용한 사전교섭(prepending)과 적용중인 동일해시 함수의 합으로 가변길이 키 재료(key material)를 생성하는데 사용된다.
5. 6개의 서로 다른 키는 키 재료로부터 추출된다.
2) 세션과 연결
① 연결 : 연결이란 적절한 서비스를 제공하는 전송(OSI 계층 모델의 정의)을 말한다. SSL에 있어서 이런 연결은 대등-대-대등 관계이다. 연결은 일시적이다. 모든 연결은 한 개의 세션과 연관된다.
② 세션 : 한 SSL 세션이란 한 클라이언트와 한 서버 사이의 연관을 말한다, 세션을 시작하려면 핸드셰이크 프로토콜을 이용해야 한다. 세션은 다수의 연결이 공유하는 암호적 보안 매개변수를 정의한다.
(3) SSL 프로토콜
1) 개요
① SSL은 두 계층 사이에 4개의 프로토콜을 규정하였다. Record 프로토콜은 운반자이며, 응용 계층으로부터 오는 데이터뿐만 아니라 다른 3개의 프로토콜로부터 오는 메시지를 전송한다. Record 프로토콜에서 오는 메시지는 보통 TCP인 전송 계층의 페이로드이다.
② Handshake 프로토콜은 Record 프로토콜에 대한 보안 매개변수를 제공한다. 암호 집합을 설정하고 키와 보안 매개변수를 제공한다. 또한 필요하다면 클라이어트가 서버에 대해 그리고 서버가 클라이언트에 대해 인증된다.
③ ChangeCipherSpec 프로토콜은 암호학적 비밀을 신속하게 보내는데 사용된다. Alert 프로토콜은 비정상 조건을 알리는데 사용된다.
2) Handshake 프로토콜
(가) 개요
① SSL에서 가장 복잡한 부분이 핸드셰이크 프로토콜(Handshake Protocol)이다. 이 프로토콜을 이용해서 서버와 클라이언트가 서로 인증하고 암호화 MAC 알고리즘 그리고 SSL 레코드 안에 보낸 데이터를 보호하는 데 사용할 암호키를 협상할 수 있다.
② 핸드셰이크 프로토콜은 모든 응용 데이터를 전송하기 이전에 사용한다. 각 메시지는 다음과 같은 3개의 필드로 구성된다.
■ 유형(Type)(1바이트) : 10개의 메시지 중 하나를 나타낸다.
■ 길이(Length)(3바이트) : 메시지의 길이를 바이트로 나타낸다.
■ 내용(Content)(≥0바이트) : 이 메시지와 연관된 매개변수이다.
[ 표 6.3.6 SSL 핸드셰이크 프로토콜 메시지 유형 ]
③ 핸드셰이킹 프로토콜은 4단계로 되어있다.
[ 그림 6.3.23 핸드셰이크 프로토콜 동작 ]
(나) 단계 1 : 보안 기능 확립(설정)
①②③④
(다) 단계 2 : 서버 인증과 키 교환
①②③④⑤
(라) 단계 3 : 클라이언트 인증과 키 교환
①②③④
(마) 단계 4 : 종료
①②③④⑤
3) ChangeCipherSpec 프로토콜
①②③
4) Alert 프로토콜
①②
5) Record 프로토콜
① 레코드 프로토콜(record protocol)은 핸드셰이크 프로토콜 밑에 있으며, 대칭키 암호를 사용해서 메시지를 암호화하고 통신하는 부분이다.
② Record 프로토콜은 상위계층(Handshake 프로토콜, ChangeCipherSpec 프로토콜, Alert 프로토콜 또는 응용 계층)에서 오는 메시지를 전달한다. 메시지는 단편화되거나 선택적으로 압축된다.
③ MAC은 협의된 해시 알고리즘을 사용하여 압축된 메시지를 추가한다. 압축된 단편화와 MAC은 협의된 암호화 알고리즘을 사용하여 암호화된다. 최종적으로, SSL헤더가 암호화된 메시지에 추가된다.
④ 처리정차는 다음과 같다.
■ 메시지를 여러 개의 짧은 단편(fragment)으로 분할하고 단편 단위로 압축을 행한다. 압축에 사용하는 알고리즘은 상대와 합의한 것을 이용한다.
■ 압축한 단편에 메시지 인증코드를 부가한다. 이것은 무결성을 확보하고 데이터의 인증을 수행하기 위한 것이다. 메시지 인증코드의 MAC값을 부가하는 것으로 전송 도중에 조작된 것을 검출할 수 있다.
■ 재전송 공격을 막기 위해 단편에 붙여진 번호를 포함해서 메시지 인증코드를 계산한다. 일방향 해시함수 알고리즘과 메시지 인증코드에서 사용하는 키는 상대와 합의한 것을 이용한다.
■ 다음으로 압축한 단편과 메시지 인증코드를 합치고 그것을 대칭키 암호로 암호화한다. 암호화에는 CBC 모드를 이용한다.
■ CBC 모드의 초기화 벡터(IV)는 마스터 비밀로부터 생성하고 대칭키 암호 알고리즘과 공통키는 상대와 합의한 것을 이용한다.
■ 마지막으로 "데이터 타입, 버전 번호, 압축한 길이로 이루어진 헤더"를 부가한 것이 송신 데이터가 된다.
(4) 전송 계층 보안( TLS )
1) 개요
①②③
2) 버전번호
①②③④
4. 웹(Web) 보안위협 및 대응책
(1) 웹 서비스 공격의 개요
1) 기본 개념
①②③
2) OWASP TOP10( 2013년 )
[ 표 6.3.7 OWASP TOP10( 2013년 )
(2) 웹 보안위협 및 대응책
1) SQL Injection
(가) 개요
①②③④
(나) 취약점 판단 방법
①②
(다) 대응방법
①②③
2) 사이트 간 스크립팅( XSS, Cross Site Scription )
(가) 개요
①②
(나) 공격과정
[ 그림 6.3.42 XSS 공격과정 ]
(다) XSS 공격 유형
①②■■③■■
(라) 보안대책
①②
(마) 코드예제
①②
3) 사이트 간 요청 위조( CSRF, XSRF, Cross Site Request Forgery )
(가) 개요
①②
(나) 공격과정
①②
(다) 보안대책
①②
(라) 코드 예제
①②③
4) 직접 객체 참조
'전산.정보처리.정보보안 > 정보보호론' 카테고리의 다른 글
[ 어플리케이션 보안 ] 웹 보안( Web Security ) - 1,2 (0) | 2016.08.31 |
---|---|
[ 어플리케이션 보안 ] 이메일 보안 - 3, 4 (0) | 2016.08.25 |