본문 바로가기

Basic IT/Security

보안 - 암호

* 암호화 시스템의 주요요소
1) 알고리즘(수학적 함수): 공개 <- 공개되어야만 취약점 확인이 가능하며, 신뢰성이 검증됨.
2) 암호화 키: 절대 공개해서는 안됨 - 유일성을 갖게하는 요소
3) 키의 길이: 공개 가능
- 길수록 안전하며, 깨기 힘듦 - 암호화 강도와 정비례 관계 <- 암호키가 길수록 안전함.
- throughput과 반비례 관계
- 키의 길이가 길수록 무차별 공격으로 부터 안전.

* SSL(Secure Sockets Layer) - 안전한 소켓 껍질?
: Netscape 사에서 1994년 인터넷과 같은 개방 환경에서 client와 server 사이의 안전한 통신을 위해 개발 -> 웹 상에서의 거래 활동을 보호하기 위함.
- 브라우저와  웹 서버 사이의 통신을 위해 널리 사용되는 프로토콜
- 대칭키 암호화(트래픽을 암호)와 비대칭키 암호화(대칭키 암호)를 혼합 사용
- Server와 Client 사이의 인증, 기밀성, 무결성, 부인봉쇄 서비스 제공.
- 사용하는 응용프로그램에 독립적이며, TCP/IP 계층과 애플리케이션 계층(Http, Talnet, FTP 등)사이에 위치하여 데이터를 송/수신하는 두 컴퓨터 사이의 종단간 보안 서비스를 제공함.
☞ Note: 부인봉쇄(non-repudiation)
: 송신측이 자신의 정보를 정확하게 상대방에게 전송했음에도 불구하고 수신측이 이를 부인하거나, 수신측이 정확한 정보를 받았음에도 불구하고 송신칙이 자신이 보낸 정보가 아니라고 주장하는 것을 방지하는 기능.
즉, 수신자를 보호하기 위해 송신자의 발신 증거를 제공하거나, 송신자를 보호하기 위해 수신 증거를 제공하는 보안서비스의 형태.

* 제공되는 보안 서비스
1) 인증(Authentication): Client가 접속하는 서버가 신뢰할 수 있는 서버인지 또는 서버에 접속하는 client가 허가된 사용자인지를 확인, 전자 서명과 인증서의 검증. ->  RSA / DSA와 같은 전자 서명 알고리즘과 X.509 공개키 인증서를 사용.
2) 무결성(Integrity): 해쉬 함수를 사용하여 제공 <-MAC(Message Quthentication Code) 기법을 이용하여 데이터 변조 여부를 확인 가능.
3) 기밀성: 대칭키 암호화 시스템 사용 <- DES, RC4등과 같은 대칭키 암호화 알고리즘을 사용하여 제공되며, 이때 사용되는 비밀키는 Handshake protocol을 통해 생성.
4) 부인봉쇄: 부과적인 소프트웨여를 사용하여 응용 계층에서 메시지에 대한 전자 서명 사용.

* SSL 프로토콜 구조

1) SSL Handshake Protocol: 사용할 암호 알고리즘을 결정하고, 키 분배 작업을 수행.

 
1)  Hello Request: 이 메시지는 서버가 클라이언트에게 보낼 수 있는 메시지지만 HandShake Protocol이 이미 진행 중이면 클라이언트는 이 메시지를 무시해 버림.
2) Client Hello: 클라이언트는 서버에 처음으로 연결을 시도할 때, Client Hello 메시지를 통해 클라이언트 SSL 버전, 클라이언트에서 생성한 임의의 난수, 세션 식별자, Cipher Suit 리스트, 클라이언트가 지원하는 압축 방법 리스트 등의 정보를 서버에 전송한다.
3) Server Hello: 서버는 Client Hello 메시지를 처리한 후, Handshake failure Alert 메시지 또는 Server Hello 메시지를 전송. 이 단계에서 서버는 서버의 SSL 버전, 서버에서 생성한 임의의 난수, 세션 식별자, 클라이언트가 보낸 Cipher Suit 리스트에서 선택한 하나의 Cipher Suit, 클라이언트 압축 방법 리스트에서 선택한 압축 방법등의 정보를 클라이언트에게 전송.
4) Server Certificate or Server Key Exchange: 서버 인증을 위한 자신의 공개키 인증서를 가지고 있다면, Server Certificate 메시지를 즉시 클라이언트에 전송. 일반적으로 X.509 버전 3 인증서를 사용. 만일 인증서가 없는 경우, 인증서가 있더라도 서명용으로만 사용할 수 있는 경우, 또는 Fortezza.DMS  키 교환을 사용한다면, SErver KEy Exchange 메시지를 전송한다. 이 단계에서 사용되는 인증서의 종류 또는 키 교환에 사용되는 알고리즘은 Server Hello 메시지의 Cipher Suit에 정의된 것을 사용.
5) Certificate Request: 서버는 기본적으로 클라이언트에게 서버 자신을 인증할 수 있도록 한다. 이와 마찬가지로 서버는 클라이언트의 인증서를 요구하며 신뢰할 수 있는 클라이언트인지 확인할 수 있다.
6) Server Hello Done: 서버에서 보낼 메시지를 모두 보냈음을 의미. 즉, 이 메시지를 받은 클라이언트는 서버로부터 더 이상의 메시지 전송이 없음을 알 수 있게 된다.
7) Client Certificate: 서버로 부터 클라이언트의 인증서를 보내라고 요청이 있는 경우 클라이언트 자신의 인증서를 보내야 함. 만일 인증서를 가지고 있지 않다면, No Certificate Alert 메시지를 보냄.
8) Client Key Exchange: 이 단계에서 클라이언트는 세션키를 생성하는 데 이용되는 임의의 비밀 정보인 48바이트 pre_master_secret을 생성한다. 그런 뒤 선택된 공개 키 알고리즘에 따라 pre_master_secret 정보를 암호화하여 서버에 전송. 이때 RSA, Fortezza, Diffie-Hellman 중 하나를 이용하게 된다.
9) Certificate Verify: 서버의 요구에 의해 전송되는 클라이언트의 인증서를 서버가 쉽게 확인 할 수 있도록 클라이언트 핸드쉐이크 메시지를 전자서명하여 전송. 이 메시지를 통해 서버는 클라이언트의 인증서에 포함된 공개키가 유효한지 확인하여 클라이언트 인증을 마치게 됨.
10) Change Cipher Specs, Finished: Change Cipher Specs 메시지는 핸드 쉐이크 프로토콜에 포함되지 않지만 클라이언트는 마지막으로 Change Cipher Specs 메시지를 서버에 전송하여 이후에 전송되는 모든 메시지는 협상된 알고리즘과 키를 이요할 것임을 알리게 됨. 그런 후, 즉시 Finished 메시지를 생성하여 서버에 전송. 따라서 이 Finished 메시지에는 협상된 알고리즘 및 키가 처음으로 적용된다.
11) Finished, Change Cipher Specs: 서버는 클라이언트가 보낸 모든 메시지를 확인한 후 Change Cipher Specs 메시지를 클라이언트에게 보낸 후, 즉시 Finished 메시지를 생성하여 전송함으로써 SSL 핸드 쉐이크 프로토콜 단계를 종료하게 됨. 중요한 것은 클라이언트와 서버의 인증 작업은 공용키와 개인키의 짝에서 하나의 키만을 사용하여 암호화하고 다른 하나의 키만을 사용해서 해독한다는 점이다.

2) SSL Alert Protocol: 2byte로 구성되며, 첫 번째 바이트에는 1) warning, 2) fatal이 표현되고, 두 번째 바이트는 에러 코드를 표현.즉, handshake, change ciphper spec, record protocol 수행 중 발생되는 오류 메시지 표현.
3) SSL Record Protocol: 상위 계층에 기본적인 보안 서비스를 제공.
- SSL handshake protocol에서 결정된 블록 암호 알고리즘과 비밀키를 이용하여 데이터를 암호화(복호화)하고 압축하여 안전하게 전송하는 프로토콜로 (1) data를 보내기 좋게 자르거나 붙이고, (2) 선택적으로 압축하여 (3) MAC(Message Authentication Code)를 적용하여 (4) 암호화 하여 이를 TCP로 전달하는 기능 수행.
- 한 세션 동안 그 정보를 SSL 레코드 계층에서 계속적으로 이용.





=================================================================================================================
[Q1 - 2010] SSL(Secure Socket Layer)이 제공하는 기능을 바르게 설명한 것은? 4번

 

클라이언트와 서버간의 메시지 암호화

서버를 인증하기

클라이언트를 인증하기

1

X

O

X

2

X

O

O

3

O

X

O

4

O

O

O

(O: 제공, X: 제공하지 않음.)

[Q2 - 2007] SSL(Secure Socket Layer)과 관련된 설명 중 맞는 것은? 3)
1) 네트워크 계층과 전송 계층 사이에 위치하는 보안 프로토콜이다.
2) 중간자 공격(Man-in-the-middle Attack)에 대한 안정성 취약점이 존재한다.
3) SSL은 웹 브라우징 보안에 사용하기 위해 넷스케이프에 의해 개발되었다.
4) 새로운 HTTP 접속시 미다 새로운 SSL 세션이 요구된다.

'Basic IT > Security' 카테고리의 다른 글

보안 - 논리적 접근 통제.  (0) 2011.01.06
보안 - 정보 보호.  (0) 2010.12.29
보안 - 인터넷 위협  (0) 2010.12.29
보안 4 - 정보시스템 재해복구  (0) 2010.12.27