본문 바로가기
PM으로 성장하기/개발 공부

[컴과] 컴퓨터보안: 목적, 암호, 인증, 전자서명, 해시함수, 보안시스템, 분야별 보안

by 고양이 고씨 2023. 6. 7.

컴퓨터 보안의 목적

컴퓨터 보안이란, 컴퓨팅 환경에서의 정보를 보호하는 것을 말한다. 정보보호는 아래와 같은 목표를 갖는다.

- 기밀성: 허락되지 않은 사람은 정보의 내용을 알 수 없어야 한다

- 무결성: 허락되지 않은 사람은 정보를 임의로 수정할 수 없다 (수정이 된다면 누가 수정했는지 알 수 있어야 한다)

- 가용성: 허락된 사람은 정보에 접근할 수 있도록 보장한다

- 부인 방지: 정보를 보냈거나 받았을 경우 해당 사실을 부인하지 못하도록 한다

- 인증: 정보, 사용자 등의 실체가 실제로 맞는 실체인지를 확인할 수 있다

- 접근제어: 정보에 대해 허락된 부분만 접근할 수 있으며, 그 외에는 접근할 수 없다

 

암호

암호란 두 사람이 정보를 주고 받더라도 제 3자는 정보의 내용을 알 수 없도록 하는 기술을 의미한다. 원래의 메시지를 평문이라고 하며, 암호화된 메시지를 암호문이라 한다. 평문을 암호문으로 만드는 것을 암호화, 암호문을 평문으로 만드는 것을 복호화라고 한다. 암호화와 복호화를 하기 위해서는 키가 필요하다. 암호는 크게 대칭키 암호와 공개키 암호로 나뉜다.

 

1. 대칭키 암호(비밀키 암호)

암호화와 복호화 시 한 가지 키만 사용한다. 키를 하나만 사용하기 때문에 속도는 빠르나, 비밀키를 어떻게 상대방에게 안전하게 전해줄 수 있는지에 대한 취약점이 있다. 대표적인 대칭키 암호 알고리즘으로는 DES, TDEA, AES, IDEA 등이 있다.

대칭키암호는 블록암호, 스트림암호 방식이 있다. 블록암호는 평문을 여러 블록으로 나누고, 각 블록마다 암호화과정을 수행한다. 이 블록은 단순한 함수를 반복적으로 적용하여(라운드 함수를 적용하여) 암호학적으로 강한 함수를 만든다. 매 라운드마다 서로 다른 키를 사용하고, 이러한 키를 관리하는 키 스케줄로 구성한다. 라운드마다 적용하는 방식도 여러 가지가 있는데, 파이스텔 구조란 하나의 블록을 두 개로 나누어 라운드를 진행한다. SPN 구조는 하나의 블록을 여러 개의 블록으로 나누고 치환과 전치를 반복한다. 이러한 블록 암호를 어떤 방식으로 연산하고 사용하느냐에 따라서도 ECB 모드, CBC 모드, CFB 모드, OFB모드, 카운터 모드 등으로 나눈다. 스트림암호는 평문길이와 같은 길이의 스트림을 생성하여, 평문과 키를 XOR 연산을 통해 암호문을 얻는다. 키 스트림은 주로 의사 랜덤 수열을 생성하는데, 대표적으로 LFSR 방법을 사용한다.

대칭키 암호에서 비밀키를 공유하는 방법에는 DHKE(Diffie-Hellman Key Exchange) 프로토콜 방법이 있다. 이산대수 문제를 활용하여 비밀키를 교환하는 방식이 있으나, 중간자 공격(MITM, Man In The Middle Attack)으로 무력화될 수 있다.

 

2. 공개키 암호

암호화와 복호화에 각각 다른 키를 사용한다. A라는 사람이 B에게 평문을 전송한다고 했을 때, A는 B의 공개키로 암호화를 하고 B는 B의 개인키로 복호화를 한다. 따라서 대칭키에서 언급된 키 분배에 대한 문제를 해결할 수 있다. 대표적인 알고리즘으로는 RSA, EFF, ElGamal 등이 있다.

공개키는 수학적으로 어려운 문제, 즉 정방향 계산을 빠르나 역방향 계산은 어려운 문제에 기반한다. 대표적으로 소인수분해 문제, 이산대수 문제, 타원곡선 이산대수 문제가 있다. 

공개키 암호에서는 키를 관리하기 위해 공개적으로 선언하거나, 신뢰받는 센터를 활용한다. 신뢰받는 센터는 공개키를 분배할 때 센터의 서명을 붙인다. 혹은 인증기관(CA)을 활용하여 분배하기도 하는데, 가장 많이 이용하는 형태이다. 인증기관은 공개키에 인증기관의 서명을 붙이는데 공개키 기반 구조(PKI) 체계로 이루어져 있다. 공개키 기반 구조는 X.509라는 표준 인증서 형식에 기초하여 인증서를 생성, 분배, 인증, 폐지까지 관리한다. 만약 내가 받은 인증키가 모르는 기관으로부터 인증을 받았다면, 해당 기관을 알기 위해 인증경로를 활용하여 검증하는 형태로 신뢰가 구성되어 있다.

 

인증

인증이란 어떤 실체(메시지, 사용자)가 그 실체가 맞는지를 확인하는 것을 말한다.

 

1. 메시지 인증

메시지 인증은 수신된 메시지가 완전하게 수신되었는지, 무결성에 대해 확인하는 것을 말한다. 메시지를 인증하는 방법에는 메시지 인증 코드(MAC, Message Authentication Code)를 활용하는 방법이 있다. MAC 알고리즘을 활용하여 메시지로부터 인증코드를 얻는데, 이것이 MAC이다. 송신자는 메시지를 보낼 때 메시지에 MAC을 함께 전송하고, 수신자는 메시지의 변조 여부를 MAC을 통해 확인한다.

MAC 알고리즘에는 해시함수를 사용하는 HMAC과 블록암호(CBC 모드)를 사용하는 CMAC가 있다.

 

2. 사용자 인증

사용자 인증은 시스템에 접근하는 사용자에 대한 인증을 말한다. 인증하는 방식에는 사용자가 비밀번호를 입력하여 시스템에 저장된 비밀번호와 일치하는지를 확인하는 방법이 있다. 개인의 고유한 생체정보를 활용하는 생체인식 방법도 있고, 스마트카드나 휴대폰 번호 등 토큰을 활용하여 사용자가 소유하고 있는 정보를 활용하는 인증 방법이 있다. 혹은 사용자가 알고 있는 정보(비밀번호)와 보유하고 있는 정보(토큰), 고유한 속성(생체정보)을 결합하여 더 엄밀하게 사용자를 체크하는 MFA(Multi-Factor Authentication, 다중 요소 인증) 방식도 있다.

 

전자서명

전자서명이란, 메시지를 보낸 사람의 신원과 전달된 메시지가 변조되지 않았음을 보증하는 것을 말한다. 전자서명은 메시지에 의존되며, 서명자의 고유 정보이고, 생성과 검증이 쉬우며, 위조는 불가하고, 복사본을 쉽게 보관할 수 있어야 한다. 이는 해시함수와 공개키 암호 방식을 사용하여 구현할 수 있다.

전자서명은 메시지가 해시함수 및 서명자의 개인키 암호화를 거쳐 만들어지고, 메시지와 함께 보내게 되면 받은 사람은 메시지에 해시함수를 통과시켜 만들어진 값과 전자서명을 복호화하여 만든 값을 비교하여 서명의 유효성을 판별하게 된다.

이러한 전자서명의 기법으로 ElGamal, Schnorr, DDS(전자서명표준)이 있다. 가장 많이 활용되는 전자서명표준은 DSA, RSA, ECDSA 알고리즘을 기반으로 이루어져 있다.

 

해시함수

해시함수란 임의의 길이의 입력 데이터를 해시함수를 거쳐 고정된 길이의 해시 코드로 만들어내는 함수를 말한다. 컴퓨터 보안에서의 해시함수는 임의의 데이터에 대한 해시코드는 쉽게 생성될 수 있으나 해시코드에 대응되는 데이터를 거꾸로 찾는 것은 어려운 '일방향 함수'의 특징을 갖는다. 이를 구체적으로 설명하면 세 가지 특징을 갖는다.

- 약한 일방향성: 해시함수와 해시코드가 주어졌을 때 입력데이터를 구하는 것은 계산 불가하다

- 강한 일방향성: 해시함수와 입력데이터가 주어졌을 때 다른 입력 데이터를 구하는 것은 계산 불가하다

- 충돌 저항성: 해시함수가 주어졌을 때 상이한 두 입력 데이터를 구하는 것은 불가하다

이러한 해시함수를 사용한 알고리즘에는 MD4, MD5, SHA-1, SHA-2, SHA-3 가 있다.

 

보안 시스템

1. 침입차단 시스템(방화벽)

내부 컴퓨터를 외부로부터 보안하기 위해 내부 네트워크로 진입하지 못하도록 차단하는 것을 말한다. 외부 네트워크와 내부 네트워크 중간지점에 위치하여 트래픽의 종류와 양을 제어한다. TCP/IP 패킷을 필터링하는 패킷 필터링 방식은 스크리닝 라우터 장비를 통해 구축된다. 서킷 프록시 프로그램을 통해 5계층끼리 회로를 만들어 체크하는 서킷 게이트웨이 방식도 있다. 가장 일반적으로 사용하는 것은 7계층인 애플리케이션 계층에서 방화벽 기능을 수행하는 애플리케이션 게이트웨이이다. 애플리케이션 게이트웨이는 베스천 호스트, 듀얼홈 호스트 등의 방식으로 구축된다. 그 외 패킷 필터링과 애플리케이션 게이트웨이를 혼합하는 하이브리드 방식도 있으며, 스크린 호스트 게이트웨이, 스크린 서브넷 게이트웨이 등의 방식으로 구축된다.

 

2. 가설사설망(VPN)

공중망을 사설망처럼 운용하는 것을 말한다. 인트라넷 내에서 중요한 정보, 시스템, 자원에 대해 컨트롤할 수 있으며 기밀정보를 안전하게 전송할 수 있다. 방화벽 기반, 라우터 기반 혹은 전용 VPN 장비를 사용하거나 소프트웨어를 사용하여 구축할 수 있다.

 

3. 네트워크 접근제어 시스템(NAC, Network Access Control)

인증이 되지 않거나 부적합한 시스템이 네트워크에 접근하는 것을 통제한다. 해당 장치가 NAC에 등록되어있는지를 체크하고, 등록되어 있지 않다면 사용자 인증을 거친다. 만약 등록된 ㅈ아치라면 보안 패치, 백신 적용을 확인한 이후 접근을 허용한다.

 

4. 침입탐지 시스템(IDS, Intrusion Detection System)

허가받지 않은 접근, 공격 시도를 감지하여 관리자에게 통보한다. 방화벽이 막을 수 없는 경우, 내부망에서 공격을 시도하는 경우에도 탐지할 수 있다. 모니터링부에서는 센서를 통해 정보를 수집하고, 분석 및 조치부에서는 정보를 가공하여 분석한 이후 관리자에게 보고한다. IDS가 방대할 경우 관리부를 두어 통제 및 관리한다.

 

5. 침입방지 시스템(IPS, Intrusion Prevention System)

공격을 탐지하면 자동으로 대응하는 시스템을 말한다. 대응작업까지 수행하기 때문에, 침입탐지 시스템보다 능동적으로 동작한다고 할 수 있다.

 

분야별 보안

1. 서버 보안

서버를 공격하는 방법에는 여러 가지가 있다. 서버에 접속할 수 있도록 계정 ID와 패스워드를 알아내기 위해 자동 조합하여 크랙하거나, 사용할 가능성이 높은 단어들을 사전 파일로 만들고 대입하여 크랙할 수도 있다. IP주소, MAC 주소에 대한 정보를 속여 권한을 획득하는 스푸핑 공격, 네트워크 패킷으로 전달되는 정보를 도청하는 스니핑 공격, 대량의 패킷으로 마비시키는 DoS공격도 있다. 할당된 버퍼의 양을 초과하도록 데이터를 넣는 버퍼 오버플로 공격도 있는데, 스택 오버플로 공격, 힙 오버플로 공격 등이 이에 해당한다. 프로그램이 경쟁상태에 이르게 하는 레이스 컨디션 공격, 잘못된 설정 및 취약한 경로를 활용하는 공격도 있다.

웹 서비스 상에서도 다양한 공격이 존재한다. SQL injection이란 SQL문에 추가적인 SQL을 삽입하여 악의적인 행위를 가하는 것을 말한다. 크로스 사이트 스크립팅(XSS)이란 이메일이나 웹페이지에 악성 스크립트를 심어 사용자가 이메일이나 웹페이지를 열면 자동으로 악성 스크립트가 실행된다. 접근 제어가 완벽하지 못한 틈을 활용하여 공격하는 접근 제어 실패 공격이 있으며, 웹서버에서 제공하는 기능, 디렉터리 목록 등이 노출되어 공격을 당할 수도 있다.

이러한 공격을 막기 위해서는 계정과 패스워드를 보호하고, 정책을 수립한다. 시스템에 대한 접근도 제어하는 방법이 있는데, 각 객체와 사용자에게 등급을 매기거나 역할을 부여하여 접근을 제어할 수도 있다. 파일 시스템을 보호하기 위해 권한을 관리하거나, 운영체제의 취약점을 관리하기 위해 패치를 하고 불필요한 서비스를 중지하는 방법도 있다.

 

2. 네트워크 보안

수신된 데이터의 실체가 올바른 실체인지를 확인하기 위해, 통신 당사자간의 신분을 확인하는 대등개체 인증과 발신처를 확인하는 데이터 발신처 인증이 있다. 또한 허가되지 않은 사용자가 접근하는 것을 막기 위한 접근제어 방법이 있다. 정보의 내용이 노출되는 것을 방지하기 위해 접속 기밀성, 비접속 기밀성, 선택영역 기밀성, 트래픽 흐름 기밀성 등의 조치를 취한다. 데이터가 변경 또는 삭제되는 것을 방지하기 위해 복구기능을 갖는 접속 무결성, 복구기능이 없는 접속 무결성, 선택영역 접속 무결성, 비접속 무결성, 선택영역 비접속 무결성 등을 수행한다. 발신자와 수신자 모두 발신 및 수신 사실을 부인하지 못하도록 부인방지 서비스도 제공되어야 한다.

이러한 서비스를 제공하기 위해 네트워크 보안 매커니즘은 다음과 같다.

- 암호화: 패킷을 암호화하는데 데이터링크 단계에서 암호화를 하는 링크 암호화와 데이터 부분만 암호화하는 단대단 암호화가 있다.

- 전자서명: 데이터와 서명에 대해 검증하고 부인할 수 없도록 한다

- 접근제어: 사용자의 정보, 자격 등을 이용하여 사용자의 접근권한을 제어한다

- 데이터 무결성: 송신자가 MAC, MDC 등으로 무결성을 제공하면, 수신자는 무결성 정보를 생산하고 이를 비교하여 변경여부를 확인한다

- 인증교환: 타임스탬프, 동기 클록, 2방향 혹은 3-방향 핸드셰이크, 부인방지 등을 통해 인증한다

- 트래픽 패딩: 트래픽의 흐름 해석을 방지하기 위해 고의로 트래픽을 흘리는 등 다양한 수준의 보안을 제공한다

- 라우팅 제어: 패킷이 안전하게 흘러갈 수 있도록 서브 네트워크, 릴레이 시스템, 링크 등을 사용하여 전송경로를 선택한다

- 공증: 통신 중인 데이터의 무결성, 발신지, 목적지 등을 제3자가 공증한다

 

3. 이메일 보안

이메일의 도청과 변조를 해결하기 위해 다음과 같은 기술이 이용된다.

1) PGP

- 인증: 송신자는 해시 알고리즘을 적용하여 메시지를 해시코드로 변경한다. 이후 송신자의 개인키로 해시코드에 암호화 알고리즘을 적용하여 전자서명 해시코드를 만든다. 이를 기존 메시지와 덧붙여 압축을 하고 전송한다. 수신자는 이를 받아 메시지부분만 따로 떼어내어 해시코드를 만들고, 송신자의 공개키를 활용하여 암호화 알고리즘을 돌려 해시코드를 만든다. 이렇게 만든 해시코드 두 개를 비교하여 메시지의 변조 여부를 확인한다. 

- 기밀성: 송신자는 메시지를 압축하고 대칭키 알고리즘을 통해 암호화를 시킨 후, 비밀키를 안전하게 보호하기 위해 공개키 암호화 알고리즘을 활용하여 암호화된 비밀키를 확보한다. 이 둘을 합쳐서 보내면, 수신자는 개인키를 이용하여 복호화한 세션키를 얻고, 이를 바탕으로 대칭키 알고리즘으로 압축된 메시지를 얻은 후 압축을 풀어 메시지를 확보한다.

2) S/MIME

MIME에 보안기능을 더한 것으로, MIME 객체를 전송하는 프로토콜에 보안 서비스를 이용하도록 한다. MIME 메시지에 전자서명, 암호화 등의 기능을 추가하면 S/MIME이 되며, 이는 SMTP 프로토콜로 수신자에게 전송이 되고, 수신자는 보안기능을 해제하여 사용한다.


참고자료

방송통신대학교 컴퓨터과학과 강의자료

728x90

'PM으로 성장하기 > 개발 공부' 카테고리의 다른 글

콜백(callback)  (0) 2023.06.08
SASS, SCSS  (0) 2023.06.08
[컴과] HTML, CSS, Javascript  (1) 2023.05.28
APM 툴, Pinpoint  (0) 2023.05.23
시퀀스 다이어그램  (0) 2023.05.12

댓글