Security | 보안

보안

네트워크와 보안

네트워크상에서의 보안 위협

네트워크에서 발생할 수 있는 보안 위협으로는 정보 유출, 사용자 신분 사칭, 데이터 위변조와 같은 형태가 있다.

  1. 정보 유출 -> 통신중에 메일 내용을 탈취

  2. 신분 사칭 -> 같은 사용자 계정명, 패스워드 사용해서 접근

  3. 데이터 위변조 -> 메일 내용을 바꿔치기 해서 웹 사이트의 내용을 바꿔치기한다.

암호화로 데이터를 보호한다

정보 유출에 대한 방어책으로는 데이터 암호화가 있다.

암호화를 할 때에는 열쇠 역할을 하는 키가 있는데 키의 관리 방식에 따라 공유 키 암호화와 공개키 암호화 방식을 자주 사용한다.

전자 인증서와 전자 서명

신분 사칭을 막기 위한 방법으로는 전자 인증서가 있고 데이터의 위변조를 막기 위한 방법으로는 전자 서명이 있다.

  1. 전자 인증서 - 사용자가 본인이라는 것을 증명

  2. 전자 서명 - 데이터가 위변조되어 있지 않다는 것을 증명

공유 키와 공개 키

하나의 키로 암호화와 복호화를 하는 공유 키 암호화

암호화는 데이터를 이해하기 어렵게 만드는 과정을 의미한다.

암호화를 어렵게 만드는것으로 끝나는게 아니라 다시 원상태로 되돌릴 수 있어야 하는데 그 과정을 복호화라고 한다.

암호화와 복호화를 아무나 하지 못하도록 하기 위해 비밀번호를 같은 것을 사용하는데 이것을 키라고 한다.

공유 키 암호화방식에서는 하나의 키를 사용해서 암호화와 복호화를 한다.

공유 키 암호화의 제약 사항

공유 키 암호화 방식은 처리 방식이 간단하고 암호화와 복호화하는 속도가 빠르다는 장점이 있다.

하지만 키를 안전하게 공유하는 방식이 어렵다. 예를 들어 키를 이메일로 공유를 한다면 유출이 되면 누구나 간단하게 복호화할 수 있다.

그리고 암호화한 데이터를 공유할 모든 사람에게 같은 키를 나눠 줘야 하는 것이 관리 측면에서 부담이 될 수 있다.

서로 다른 키로 암호화와 복호화를 하는 공개 키 암호화

공개 키 암호화 방식은 암호화를 하는 키와 복호화를 하는 키를 각각 만들어 한 세트로 관리하는 방식이다.

한쪽 키로 암호화한 것은 다른 한 키로만 복호화를 할 수 있다.

두 개의 키 중 하나는 자신이 가지고 다른 하나는 통신 상태에게 나눠 주게 된다.

이 떄 자신이 가지는 키를 비밀키 또는 개인 키라고 하며 다른 사람에게 공개하는 키를 공개 키라고 한다.

공개 키 암호화로 데이터를 주고받는 절차

공개 키 암호로 데이터를 주고받을 경우, 먼저 상대에게 자신의 공개 키를 사전에 전달해 둔다.

이후 상대는 데이터를 보내고 싶을 떄 미리 받은 공개 키로 데이터를 암호화해서 보내는데

이 데이터를 받은 쪽은 자신의 개인 키로 데이터를 복호화할 수 있다.

전자 증명서와 전자 서명

전자 인증서는 신분 사칭을 막을 때 사용하고 전자 서명은 데이터 위변조를 막을떄 사용한다.

전자 인증서로 자기 자신이라는 것 증명하기

공개 키 암호화 방식을 사용하면 데이터 유출을 막을 수는 있지만 공개 키를 보낸 사람이 신분 사칭을 한다면 데이터를 넘겨줄 수 있는 잠재 위험이 있다.

전자 인증서와 인증 기관

신분 사칭이나 메일 내용의 위변조를 막는 방법으로는 인증 기관이 발행한 전자 인증서를 사용할 수 있다.

전자 인증서를 사용하여 신분 사칭 막기

전자 인증서는 인증 기관에 요청하야 받을 수 있는데 발급받은 전자 인증서 안에는 공개 키와 인증 기관의 전자 서명이 포함되어 있다.

이 전자 서명은 인증 기관이 이 공개 키는 이 소유자의 것이다라는 것을 보증하는 역할을 한다.

PKI

공개 키나 전자 인증서 등의 보안 인프라를 통틀어 공개 키 기반 구조(PKI, Public Key Infrastructure)라고 한다.

공개 키 기반 구조가 보안 취약점의 많은 부분을 해결해주나 피싱 사이트로 인한 금융 사기나 바이러스로 인한 보안 위협에 대응 가능한 영역이 아니다.

전자 서명의 동작 방식

전자 서명은 데이터 내용이 위변조되지 않았다는 것과 누가 보낸 것인지를 보증하는 역할을 한다.

전자 서명을 만드는 방법

전자 서명을 만들기 위해서는 원본 데이터의 해시 값을 구한 후 이 것을 공개 키가 아닌 개인 키로 암호화하면 된다.

전자 서명을 사용한 데이터 교환

개인 키로 암호화한 데이터는 공개 키로 복호화 할 수 있다.

전자 증명서에 포함되는 공개 키로 전자 서명을 복원한 후 메세지 다이제스트가 일치하는지 확인하여 위변조되지 않았다는 것을 증명할 수 있다.

이메일의 안전한 전달을 보장하는 S/MIME

이메일을 안전하게 주고받는 방법은 S/MIME(Secure/ Multipurpose Internet Mail Extensions) 이라는 규격으로 표준화되어 있다.

이메일을 주고받는 프로그램이 S/MIME을 지원하고 통신 쌍방이 전자 인증서를 가지고 있는 경우에 사용할 수 있다.

암호화한 메일을 송신하기

  1. 메일 본문을 공유 키를 사용해서 암호화한다.

  2. 공유 키를 상대방의 공개 키로 암호화한다.

  3. 암호화한 본문과 키를 첨부한 이메일을 보낸다.

암호화한 메일을 수신하기

  1. 공유 키를 자신의 개인 키로 복호화한다.

  2. 메일 본문을 공개키로 복호화한다.

SSL/TLS

SSL/TLS로 암호화 통신을 하는 방식

SSL(Secure Sockets Layer) 혹은 TLS(Transport Layer Security)는 서버와 클라이언트 사이의 통신 구간에 대해서 보안 수준을 높이기 위한 프로토콜이다.

인증 기관에서 발행된 서버 인증서를 사용해서 서버를 증명하고 통신 구간을 암호화하여 데이터의 위변조를 막는다.

  1. 클라이언트 - 접속 요청 ->

  2. <- 서버 - 전자인증서를 보낸다

  3. 클라이언트 - 서버의 신원을 확인

  4. 클라이언트 - 난수를 사용한 공유 키를 생성

  5. 클라이언트 - 공유 키를 서버 공개 키로 암호화한다. ->

  6. 서버 - 서버 개인 키로 복호화한다.

  7. 공유 키로 암호화 통신을 한다.

SSH

SSH로 원격지의 컴퓨터를 안전하게 제어하기

SSH(Secure Shell)는 원격지에 있는 서버를 제어하기 위해 만들어진 telnet을 대체하는 프로토콜이다.

SSL과 마찬가지로 공개 키와 공유 키를 조합한 방식으로 통신을 암호화한다.

전자 인증서는 사용하지 않는 대신 서버나 클라이언트가 만든 공개 키를 사용한다.

인증 방식으로는 패스워드 인증이나 공개 키 인증 등을 사용할 수 있다.

패스워드 인증 방식

  1. 클라이언트 - 접속 요청 ->

  2. <- 서버 - 공개 키를 보낸다

  3. 클라이언트 - 난수를 사용한 공유 키를 생성

  4. 클라이언트 - 공유 키를 공개 키로 암호화 ->

  5. 서버 - 서버의 개인키로 복호화한다

  6. 클라이언트 - 공유 키로 인증용 패스워드를 암호화한다 ->

  7. 서버 - 공유 키로 인증용 패스워드를 복호화한다.

  8. 사용자가 인증되면 원격 제어를 위한 명령어 등을 주고받는다.

SSH의 공개 키 인증 방식

공개 키 인증 방식에서는 클라이언트 측에서 공개 키를 만든 후에 그 키를 미리 접속한 서버에 등록해 두어 인증에 사용한다.

사전에 공개 키를 등록해야 하는 번거로움이 있지만 이후부터는 원격 접속을 할 때마다 패스워드를 입력하지 않아도 된다.

공개 키 인증 방식

  1. 클라이언트 - 공개 키와 개인 키를 준비한다.

  2. 서버 - 미리 공개 키를 서버에 등록한다.

  3. 클라이언트 - 접속 요청 ->

  4. 서버 - 난수를 사용하여 공유 키를 생성한다.

  5. <- 서버 - 공유 키를 클라이언트의 공개 키로 암호화한다.

  6. 클라이언트 - 클라이언트의 개인 키로 복호화한다.

  7. 사용자가 인증되면 원격 제어를 위한 명령어 등을 주고 받는다

방화벽

다양한 통신 접점에서 컴퓨터 보호하기

해킹과 같은 악의적인 접근을 차단할 때 사용하는 것이 방화벽이다.

방화벽은 허가된 통신 외에는 모두 차단하기 때문에 허용된 범위 내에서만 주의하고 관리하면 서버를 안전하게 지킬수 있다.

접속을 허가하고 차단하는 방법

방화벽은 접속을 허가하거나 차단하기 위해 패킷 내의 정보를 확인한다.

방화벽이 접근을 제어하는 방법은 패킷 정보를 점검하는 계층에 따라 달라진다.

  1. 패킷 필더 - IP 어드레스나 포트 번호를 보고 제어한다.

  2. 서킷 레벨 게이트웨이 - 통신 쌍방을 직접 연결하지 못하게 하고 중간에서 통신을 중계한다.

  3. 애플리케이션 게이트웨이 - 애플리케이션 계층에서 다루는 URL이나 텍스트 정보를 보고 판단한다.

무선 LAN의 보안

무선 LAN의 보안 프로토콜

무선 LAN은 전파로 통신하기 때문에 유선 LAN에 비해 상대적을 도청에 대한 위험이 더 크다.

그래서 IEEE 802.11에는 암호화같은 보안 기능에 대한 규격이 추가되어 있다.

스트림 암호화 방식과 블록 암호화 방식

무선 LAN 통신은 안전해야 하면서 동시에 고속으로 처리되어야 한다.

암복화를 할 때 연산 처리 부담이 큰 공개 키 방식을 사용하지 않고 대신 공유 키 방식을 사용한다.

  1. 스트림 암호화 방식 - 선두에서 차례차례 암호화 나간다.

  2. 블록 암호화 방식 - 64비트 길이의 블록에 분할

패스프레이즈와 취약성

무선 LAN의 보안 기능에서는 패스프레이즈(WEP에서는 WEP키)라고 부르는 사용자가 지정한 문자열과 초기화 벡터라고 부르는 조금씩 변하는 값을 조합하여 암호화를 위한 공유 키를 만든다.

초기화 벡타가 바뀌면서 공유 키도 따라 바뀌기 때문에 암호화는 간단하고 처리 속도가 빠른 반면 복호화는 어렵게 만들어져있다.

WEP - WEB 키 (40 ~ 104비트) + 초기화 벡터 (24비트)( 같은 키가 생성되지 않도록 초기화 벡터가 조금씩 변한다)

초기화 벡터가 변하기 때문에 통신할 때마다 서로 다른 공유 키가 생성된다.

단 초기화 벡터의 길이가 짧으면 일정 시간 간격으로 같은 공유 키가 만들어질수 있어서 암호 해독의 실마리를 줄 수 있다.

패스프레이즈와 초기화 벡터를 길게 만들기

패스프레이즈와 초기화 벡터 값이 짧으면 암호화한 통신 데이터에서 키를 유추할 수 있다.

따라서 새로 나오는 보안 기능일수록 패스프레이즈와 초기화 벡터 값을 길게 사용하고 있다.

WPA - 패스프레이즈 (128비트) + 초기화 벡터 (48비트) (패스프레이즈와 초기화 벡터가 더 길어졌다)

공유 키를 생성하는 처리 역시 복호화가 더욱 어렵게 개선되었다.

VPN

원격지 거점과 연결된 안전한 LAN 환경 만들기

특정 구간 내의 통신 전체를 안전하게 만드는 기술이 VPN(Virtual Private Network)이다.

인터넷 VPN과 클로즈드 VPN

인터넷 VPN - 인터넷 상에서 암복호화하여 통신한다.

클로즈드 VPN - 인터넷과 분리된 별개 회선을 사용한다.

VPN에 사용되는 기술

VPN에 사용되는 프로토콜에는 IPSec(Security Architecture for Internet Protocol)이나 PPTP(Point to Point Tunneling Protocol)등이 있다.

IPSec에 L2TP(Layer 2 Tunneling Protocol)를 조합한 L2TP/IPSec도 사용한다.

패킷을 IP 헤더까지 통쨰로 암호화를 한 다음 새로운 IP헤더를 덧붙여 송신합니다.

VPN에서 사용자 인증하기

가정에서 사용하는 컴퓨터나 스마트폰에서 VPN을 사용하는 경우 사용자 인증이 필요하다.

하지만 IPSec에는 사용자 인증하는 기능이 없으므로 L2TP를 조합해서 사용한다.