터널링
인터넷을 사적이며 안전한 네트워크의 일부로 사용하는 기술
내부 네트워크 : 데이터의 기밀성을 위한 전용 회선 필요
- 임대회선 사용 : 고비용
- 기존의 인터넷을 임대회선처럼 전용 회선으로 사용 : VPN -> PPTP, L2TF, IPSec, SSL등 암호화 프로토콜 사용
IPSec
3계층의 암호화 프로토콜
IPv6에서 필수 요소로 운영체제의 일부로 설정되어 있음
너무 과도하게 기술적이라는 단점이 있음
라우터, 개인 단말 컴퓨터, 침입 탐지 시스템 등에 설치될 수 있음
IP계층 헤더 + IPSec헤더 + 암호화된 IP 데이터 형태로 된다.
내부 네트워크 안에서는 그냥 전송됨
*IPSec헤더는 암호화에 필요한 정보
IPSec 주요 기능
- IKE (키 관리) : 상호 인증 및 대칭키 공유 설정, 두 컴퓨터 간의 보안 연결(SA) 설정
-> 보안 프로토콜콜 선택, 서비스에 필요한 알고리즘 결정, 암호 키 설정
두 가지 중 하나만 설정할 수 있음
AH(Authentication Header) : 인증
- 메시지 인증을 제공하는 확장 헤더
- 데이터의 무결성 검사 -> 암호화 없음
- 데이터를 스니핑한 뒤 해당 데이터를 다시 보내는 재생 공격 방지
ESP (Encapsulating Security Payload) : 기밀성
- 메시지의 암호화 및 인증(선택) 제공
- ESP에서 사용하는 암호화 알고리즘 -> DESCBC, 3DES, RC5, IDEA 등 대칭키
IKE
IKE 2 단계
- IKE 보안 연계 (SA) : 양단간 상호 인증 및 세션키(대칭키) 설정
- AH/ESP 보안 연계 (SA) : 보안 세션이 설정된 후 공유한 대칭키를 이용한 데이터 암호화 및 무결성 인증 기법 설정
IKE 보안 연계
세션키를 구현하기 위해 일회성 디피 - 헬만 키 교환을 사용
- a = 앨리스의 개인키 (비밀키)
- b = bob의 개인키 (비밀키)
- g = 생성자, p = 소수 (공개키)
IC : 요청자 쿠키
RC : 응답자 쿠키
CP : 제시된 암호 기법
CS : 선정된 암호 기법
K = h(IC, RC, \(g^{ab}\) mod p, Ra, Rb)
SKEYID = h(Ra, Rb, \(g^{ab}\) mod p)
proofA = Sig[h(SKEYID, \(g^a\), \(g^b\), IC, RC, CP, "앨리스")]
=> 전자 서명에 의한 상호 인증, 사용자의 익명성 보호
AH/ESP 보안 연계
AH
- 인증 헤더
- 무결성 제공
- IP 헤더 외의 모든 데이터와 헤더 일부를 보호 -> 변경하지 않는 부분에 대한 보호
ESP
- 캡슐화된 보안 페이로드
- 비밀성 제공
- IP 헤더 외의 모든 데이터 보호(헤더는 목적지 확인)
IPSec 프로토콜 모드
전송 모드
- 종단간 송수신 모드
- IP 패킷의 데이터(페이로드) 범위까지 보호 -> 상위 계층 프로토콜 보호
터널 모드
- 침입차단시스템 및 라우터 등의 보안 게이트웨이 간 송수신 모드
- IP 패킷 전부(헤더 + 데이터) 보호 가능
- 실제 종단간의 IP 주소를 포함하는 IP 헤더까지 암호화 -> 라우터의 IP로 변경
- 라우터 또는 침입차단시스템의 주소에 대한 새로운 IP 헤더 생성
- 라우터 간에는 내부 IP 정보를 전혀 알 수 없음
- 공격자가 실제 호스트를 알 수 없음
- AH는 의미가 없다
전송모드와 터널모드에 관한 그림이다
IPSec 패킷 처리
아웃바운드 패킷처리 & 인바운드 패킷 처리
침입탐지단에서 사용되는 경우
협정에 따라 안전한 패킷으로 패킷을 전달하거나 받아들인다
AH가 존재하는 이유?
IP 헤더는 암호화할 수 없음
- 라우터가 IP 헤더를 볼 수 있어야함
- IP 주소, TTL 등을 포함
- IP 헤더는 패킷을 전송하기 위해 존재
AH는 헤더에서 변하지 않는 항복에 대하여 보호를 제공한다.
ESP는 IP 헤더를 제외한 모든 것을 암호화 -> IP 헤더는 전혀 보호되지 않음 + TCP 헤더를 볼 수 없음
SSL(Secure Socket Layer)
HTTP (응용계층)과 TCP(전송계층)사이의 프로토콜
IPSec에 비해서 간단
주요 기능
- 서버 인증 : 서버의 인증서가 신뢰된 CA에서 발행된 것인지를 확인
- 클라이언트 인증 : 서버가 클라이언트의 인증서 확인
- 대칭키 암호 시스템 - 40~128bit
S = "사전 마스터 비밀"
K = h(S,Ra,Rb)
msgs = "모든 이전의 메세지"를 의미 : 이전의 메시지들이 제대로 송수신되었는지 확인
CLNT, SRVR = 문자열
Ra, Rb는 그냥 랜덤값으로 optional 하다
밥이 앨리스에게 제공하는 인증서는 CA에서 발행한 것으로 Bob 의 공개키를 가지고 있다
BoB의 공개키로 PKE(S, 공개키)로 전송한다
BoB은 받은 값으로 K를 구해내고 앨리스와 밥이 같은 값을 가지고 있는지 확인한다
BoB은 Alice에게 자신을 확인할 수 있는 데이터를 다시 보내준다.
문제 : 앨리스는 밥을 인증하지만 그 반대는 아님
상호 인증이 가능하다
- 밥이 2번 메세지에 인증서 요구를 전송 -> 클라이언트가 유효한 인증서를 소지해야함
- 클라이언트에 (암호화 or 해시된) 패스워드 요구 -> SSL과는 별도의 인증 프로토콜 필요
'Hacking > Cryptography' 카테고리의 다른 글
암호 프로토콜 활용 (1) | 2024.12.16 |
---|---|
Bitcoin (0) | 2024.12.16 |
[전자상거래] SET 프로토콜 (0) | 2024.12.15 |
공개키 기반 구조(PKI) (1) | 2024.12.15 |
전자서명 (1) | 2024.12.15 |