- 컴퓨터 보안[1]2023년 10월 25일 05시 37분 11초에 업로드 된 글입니다.작성자: do_hyuk
<chap 1. 컴퓨터보안의 개요>
[컴퓨터 보안이란?]
- 정보보호의 개념
- 정보를 여러 가지 위협으로부터 보호하기 위한 정책 및 기법
정보보호의 한 영역, 컴퓨팅 환경이 관여된 모든 상황에 대한 정보 보호를 의미
[정보보호의 목표]
- 기밀성 -> 허락되지 않은 자가 정보의 내용을 알 수 없도록 하는 것
- 허락되지 않은 자가 정보에 접근을 아예 못하게 함
- 정보에 접근하더라도 암호화된 정보만 보이도록 함 - 무결성 -> 허락되지 않은 자가 정보를 함부로 수정할 수 없도록 하는 것
- 만약에 허락되지 않은 자에 의한 수정이 발생했다면 이를 인지할 수 있는 것 - 가용성 -> 허락된 자가 정보에 접근하고자 할 때 이것이 방해받지 않도록 하는 것
- 정보에 접근권한이 있는 자가 필요할 때 언제든지 정보를 사용할 수 있어야 함
- 그 외의 목표
- 부인방지
- 정보의 관여한 자가 이를 부인하지 못하도록 하는 것
(1) 발신 부인방지 (2) 수신 부인방지 - 인증
- 어떤 실체가 정말 주장하는 실체가 맞는지 확인할 수 있고 신뢰할 수 있는 것
(1) 메시지 인증 (2) 사용자 인증 - 접근제어
- 허락받은 사람만 접근할 수 있음
(1) 객체에 대한 접근제어(물건) (2) 주체에 대한 접근 제어(사람)
<chap 2. 암호의 개념>
[암호의 정의]
- 암호 -> 두 사람이 안전하지 않은 채널을 통하여 정보를 주고받더라도 제 3자는 이 정보의 내용을 알 수 없도록 하는 것
- 평문 -> 원래의 메시지
- 암호문 -> 코드화된 메시지
- 암호화 -> 평문을 암호문으로 만드는 것
- 복호화 -> 암호문을 평문으로 만드는 것
- 키(key) -> 암호화와 복호화를 위한 가장 중요한 열쇠
- 키가 있어야 암호화와 복호화가 가능하다.
- 암호는 기밀성을 보장하기 위한 필수적인 기술
[암호의 역사]
- 처음에는 군사와 정치적으로 주로 사용
- 컴퓨터와 통신이 결합됨에 따라 데이터 위조 및 변조를 막기 위해 사용
- 인터넷 뱅킹, 보안 키패드, 소프트웨어의 시리얼 키는 점차 널리 사용
- 고대 암호
- 스테가노그래피
- 실제로 전달하고자 하는 정보 자체를 숨기는 것 (나무판에 조각한 후 밀랍을 발라 숨김)
- 엄밀히 구분하면 최초의 암호로 보기 힘듦
제 3자에게 암호 알고리즘을 알려주더라도 제 3자가 키를 모르면 암호를 풀 수 없는 것을 가정
- 전치법
- 평문에 있는 문자들의 순서를 바꿔서 암호화하는 기법 ex) 암호알고리즘 -> 호암고알즘리
- 가장 단순한 방식으로는 두 문자씩 앞 뒤로 섞는 방법
- 스파르타의 봉 암호 (봉에 종이를 감고 글씨를 쭉 써서 암호화 시킴) Key = 봉의 굵기
- 치환법
- 평문의 문자들을 다른 문자로 치환함으로써 암호화하는 기법 ex) 암호알고리즘 -> C+-가3Z
- 치환 규칙에 따라 암호화 및 복호화
- 시저 암호 : 각문자를 알파벳 순서로 세 번째 뒤 문자로 치환 ex) A -> D, B -> E
- 시프트 암호 : 각 문자를 알파벳 순서로 k번째 뒤 문자로 치환 (0 <= k <= 25)
- 근대 암호
- 비즈네로 암호
- 시프트 암호를 개선한 새로운 치환법 -> 기존 시프트 암호는 26번 반복하면 풀 수 있기 때문
- 여러 개의 정수 값을 키로 이용 ex) k = 3, 8, 0
- CAESAR -> 3번째, 8번째, 0번째 뒤를 사용하여 암호화 시킴
- 현대 암호
- 표준 암호 알고리즘
- 대칭키 암호 알고리즘 DES 공표 (대칭키 : 암호화와 복호화에 사용되는 키가 같음) - 공개키 암호 알고리즘
- 공개키 암호 알고리즘 RSA개발
[대칭키 암호란]
- 암호화와 복호화에 하나의 같은 키를 사용하는 암호 방식
- 장점 -> 암호화와 복호화 속도가 빠름
- DES, AES, IDEA 등이 있음
- 대칭키 암호의 분류
- 블록 암호
-> 평문을 고정된 크기의 블록으로 나누어 각 블록마다 암호화 과정을 수행하여 블록 단위로 암호문을 얻는 대칭키 암호 방식 - 스트림 암호
-> 평문과 같은 길이의 키 스트림을 생성하여 평문과 키를 비트 단위로 XOR 하여 암호문을 얻는 대칭키 암호 방식
- 블록 암호
[공개키 암호]
- 암호화와 복호화 두 개의 서로 다른 키를 사용하는 암호 방식
(암호화에 사용하는 키는 공개, 복호화에 사용하는 키는 개인키) - 장점 -> 키 관리가 쉬움, 키 분배 문제도 해결
- 단점 -> 대칭키 암호에 비해 속도가 느림 (대용량에 사용하기 힘듦)
- RSA, ECC(타원곡선 암호 알고리즘), ElGamal 등이 있음
<chap 3. 인증>
[인증의 개념]
- 어떤 실체가 장말 그 실체가 맞는지 확인하는 과정
- 실체 : 메시지, 사용자, 출처, 장치 등 (즉, 실체의 진실성을 확인하는 과정)
[메시지 인증]
- 수신된 메시지에 대한 인증
- 메시지의 내용이 전송 도중 불법적으로 변경되지 않고 정확하고 완전하게 수신되었는지 확인하는 것
- 메시지에 대한 무결성 확인
메시지 인증코드(MAC, Message Authentication Code)
- 메시지 인증을 위한 부가적인 정보 (메시지와 함께 인증코드를 함께 받음)
- 송신자가 메시지를 전송할 때 MAC을 함께 전송
- 수신자는 받은 메시지의 변경 여부를 MAC을 이용하여 확인- 메시지 인증 방법
- 송신자
메시지 + 비밀키 -> MAC알고리즘 -> MAC을 만들어냄 -> 메시지와 MAC을 전달 - 수신자
전달받은 메시지 + 비밀키 -> MAC알고리즘 -> 만들어진 MAC 하고 전달받은 MAC을 비교(무결성 여부 판별)
-> 비밀키는 송신자, 수신자 동일함 - 비밀키
- 제 3자가 메시지의 내용을 위변조 할 수 없도록 비밀키 이용
- 메시지에 덧붙여서 전송해야 하므로 메시지 크기와는 독립적이면서 작은 크기가 좋음
- 송신자
- HMAC
- 해시 함수의 기반을 둠
ex) 메시지와 키를 해시 함수에 넣어 코드를 만들어 냄(작은 크기의 MAC을 만듦) - 단순한 방법으로 키를 이용
- 해시 함수의 기반을 둠
- CMAC(Ciper - based MAC) 블록 암호
- 각각의 블록별로 암호화 알고리즘을 실행함
- 원래의 메시지가 아무리 크더라도 한 블록 크기의 CMAC이 나온다.
[사용자 인증]
- 시스템에 접근하려는 사용자가 정말 그 사용자가 맞는지 확인하는 것
시스템 -> 서버, PC, 스마트폰, 홈페이지, 건물의 전자식 잠금장치 등
- 비밀번호 방식
- 가장 일반적인 방식
- 사용자가 입력하는 비밀번호가 시스템에 저장된 정보와 일치하는지 여부로 인증
- 사용자 ID와 비밀번호를 함께 이용하는 경우
- 비밀번호 저장 방법 -> 유출되는 것을 대비하기 위해 해시코드로 시스템에 저장되어 있음
- 생체인식 방식
- 개개인의 고유한 정보인 특정 생체정보를 이용하는 사용자 인증
- 생체정보 -> 지문, 홍채, 음성, 손등의 혈관 등
- 토큰 방식
- 사용자가 실제로 소유하고 있는 특정한 정보를 이용하는 사용자 인증
- 토큰 -> USB토큰, 스마트키
- 2단계 인증
- 사용자가 알고 있는 정보 + 사용자가 소유하고 있는 정보를 모두 이용
- 알고 있는 정보 : 비밀번호 등
- 소유하고 있는 정보 : 토큰 등
- 좀 더 엄밀한 사용자 인증 기능
<chap 4. 사이버 공격>
[사이버 공격의 개요]
- 사이버 공격
- 인터넷을 통해 다른 컴퓨터에 불법 접속하여 상대방 국가나 기업, 개인에 손상을 입히려는 행동
- 과거에는 네트워크 혹은 로컬 호스트 상에서의 잘못된 설정을 이용해 관리자 권한을 업는 초보적 방식이 대다수
- 기술의 발전에 따라 사이버 공격 방식도 다양화
- 네트워크 상의 패킷을 조작하는 공격
- 상용 웹사이트의 취약점을 이용한 공격
- 스마트폰의 보급에 따른 무선 환경에서의 공격
- 다양한 사이버 공격
- 악성 코드
- 컴퓨터에 악영향을 끼칠 수 있는 모든 소프트웨어의 총칭
- 바이러스, 웜, 트로이 목마, 백도어, 스파이웨어, 랜섬웨어
- 시스템 손상, 전파, 정보 유출 등 다양한 목적
- 대부분 무분별한 인터넷 사용으로 인해 감염
- 예방 방법- 의심스러운 웹사이트 방문 자제, 수상한 이메일 확인하지 않기
- 메신저로 오는 인터넷 주소나 첨부파일을 함부로 열지 않기
- 보안등급 설정, 불법복제 금지
- 통합보안프로그램 설치 및 유지, 실시간 감시 기능 사용
- 바이러스
- 시스템이나 사용자의 파일에 자신을 복제하고 그 컴퓨터 시스템 내에서 증식하거나 시스템을 파괴하는 악성코드
- 일반적인 특성
- 자기 복제
- 저수준 언어 사용
- 다양한 변종
- 지능화 및 악성화
바이러스 동작 원리 - 웜
- 컴퓨터의 취약점을 찾아 네트워크를 통해 스스로 감염되는 악성 코드
- 네트워크를 경유하여 자기 복제 능력을 통한 빠른 전파력을 가지고 있고
감염된 시스템을 거점으로 피해 시스템이 기하급수적으로 증가 - 트로이 목마
- 정상적인 기능을 하는 프로그램으로 가장하여 프로그램 내에 숨어서 의도하지 않은 기능을 수행하는 악성코드
- 표면적으로 드러나는 기능과 함께 비인가된 기능 수행(개인정보 유출, 감염 대상 원격 조정 등)
- 백도어
- 공격자가 시스템에 침입한 후, 이후에 손쉽게 피해 시스템에 대한 접근권한을 획득하기 위한 용도로 설치한 악성 코드
- 꼭 악성코든인 것은 아니고 설계자나 관리자가 인증 절차를 줄이기 위해 남겨두는 경우도 있음(개발자 인증 셋업 시간 단축) - 스파이 웨어
- 다른 사람의 컴퓨터에 설치되어 개인정보를 빼가는 악성 코드
- 다른 소프트웨어를 설치할 때 몰래 같이 설치됨 - 랜섬 웨어
- 사용자의 중요한 정보를 인질로 삼아 금전을 요구하는 악성 코드
- 문서 파일, 그림 파일 등을 암호화
- 암호를 풀기 위해서는 비트코인 등으로 송금하도록 유도
- 현재로서는 해결하기 어려움 - 네트워크 공격
- 스캐닝(Scanning)
- 순수한 의미의 스캐닝은 그 자체로 공격으로 보기 어려우나 실제적인 공격을 위한 사전 정보 수집 활동의 용도로 악용
- 공격 대상 호스트들이나 네트워크에 대한 취약점을 발견해 내기 위한 도구로 사용됨
- 시스템 관리자의 경우 공격자가 취약점을 발견하기 이전에 미리 자신의 시스템 및 네트워크의 보안 취약점을 점검하여 발견된 취약점에 대한 조치를 취하여야 함
- 스푸핑(Spoofing)
- 공격자가 공격자의 제어 하에 있는 호스트를 피해 호스트가 신뢰하는 호스트로 가장함으로써
피해 호스트로부터 생성되는 정보를 수집하거나 가로채는 방식의 공격 - IP 스푸핑, DNS 스푸핑, web 스푸핑, ARP 스푸핑 등
- 공격자가 공격자의 제어 하에 있는 호스트를 피해 호스트가 신뢰하는 호스트로 가장함으로써
- 스니핑(Sniffing)
- 네트워크상의 데이터를 도청하는 행위
- Passive 스니핑
- 무차별 모드를 이용
- 패킷 내의 정보를 조작 없이 단순히 도청 - Active 스니핑
- ARP 스푸핑을 이용
- 공격 대상자들의 패킷 방향을 조작하여 내용을 훔쳐보거나 변조하는 방식
- 스캐닝(Scanning)
- 서비스 거부 공격(DoS)
- 특정 서비스나 자원의 가용성을 떨어뜨리는 결과를 초래하는 유형의 공격에 대한 통칭
- 대량의 데이터를 전송하거나 무수히 많은 네트워크 연결을 요청하는 등의 방법 이용 - 분산 서비스 거부 공격(DDoS)
- 여러 대의 공격자를 분산적으로 배치해 동시에 서비스 거부 공격을 하는 방법
- 스팸메일
- 불특정 다수를 대상으로 일방적 대량으로 전달되는 메일
- 광고, 홍보, 비방 등의 목적으로 이용
- DNS를 이용한 탐지 방법
- 통계 기법을 이용한 탐지 방법 - 피싱
- 유명한 금융기관이나 공신력 있는 업체의 이름을 사칭하여 메일을 보내 수신자들이 믿도록 하고, 수신자들로부터 개인 정보나
금융정보를 얻어내 범죄수단으로 악용하는 행위
<예방 방법> 이메일 내부에 하이퍼링크 불허가
<비슷한 공격> 파밍, 스미싱, 보이스피싱- 최근의 사이버 공격 방식
- APT(Advances Persitent Threat)- 지능형 지속 위협
- 특정 대상을 목표로 다양한 공격 기술을 이용해 은밀하게 지속적으로 공격하는 행위
- 특징 : 목적성, 지속성, 은밀함
- 최근의 사이버 공격 방식
- 스팸메일
<chap 5. 서버 보안>
[서버 보안의 개요]
서버 보안 : 일반적인 정보 시스템
서버 : 서비스를 제공하는 컴퓨터
클라이언트 : 서버에 접근하여 서비스를 제공받는 컴퓨터
응용프로그램 계층 : (유일하게 사람이 직접 하는 부분) 버그, 백도어의 취약점
- 운영체제 접근권한 획득한다
운영체계 계층 : 보안의 근본적인 레벨 / 실제 시스템의 접근에 대한 결정이 이루어진다.
- 운영체제는 컴퓨터의 모든 행위를 관장하기 때문
- 대부분 이 운영체제를 공격하는 목적은 운영체제의 제어권을 확보하기 위함.
네트워크 제어 : 시스템 in-outㄷ 트래픽 제어하여 유해한 네트워크 트래픽을 줄일 수 있다.
- 독립적인 장비로 수행, 운영체제 내에서 수행전송 data 제어 : data(인터넷상의 data)는 누구나 열람이 가능
- 전송자는 정보(data)를 암호화해서 전송한 뒤에 수신자가 복호화하는 것이 안전하다
- 암호화는 정보의 외부공격을 차단한다.
[서버 침입 및 정보 유출 단계]
[서버 공격 유형]
시스템 결함으로 생기는 보안 허점 활용
- 계정 크랙 공격
- 무차별 공격 : 시스템 또는 서비스의 ID, 패스워드를 자동 조합하여 크랙
- 사전 공격 : ID와 PW가 될 가능성이 있는 단어를 사전 파일로 만들어 놓고 대입하여 크랙 - 시스템 취약점을 이용한 공격
- 버퍼 오버플로 : 메모리에 할당된 버퍼의 양을 초과하는 데이터를 입력해 복귀주소를 조작하여 공격 코드 실행
(<버퍼> 프로그램 처리 과정에 필요한 데이터가 일시적으로 저장되는 공간)
- 스택 오버플로와 힙 오버플로가 존재- 스택 오버플로 공격
- 서브 루틴이 프로그램에 의해 호출될 때 함수 변수와 서브루틴의 복귀 주소 포인터를 스택에 저장
- 변수의 할당 공간에 저장될 데이터의 크기에 제한을 두지 않는다면 변수 공간을 넘치게 공격 - 힙 오버플로 공격(<힙> 프로그램이 실행하면서 메모리를 동적으로 할당해 사용)
- 오버플로 시켜서 특정 코드를 실행하여 공격
- 스택 오버플로 공격
- 레이스 컨디션 공격
- 두 프로세스가 동일한 자원을 사용하기 위해 경쟁
- 기본 설정 오류를 이용한 공격 -> 잘못된 설정에 대한 공격 ex) IIS 웹 서버 설정에서 쓰기 권한을 부여하는 경우 - 사회공학적인 공격
- 사람을 속이거나 내부자의 결탁으로 인한 정보 유출
[서버 보안 대책]
- 계정 관리 : 그룹별 접근권한 부여, 불필요한 사용자 계정 삭제
- 패스워드 관리 : 유추 가능한 단어를 패스워드로 사용 X, 조합하여 사용
(섀도 패스워드 사용 -> 일반 사용자의 접근, 패스워드 필드를 암호화하여 저장하고 루트만 읽을 수 있는 권한으로 설정)
- 파일 시스템 보호
- 파일 접근 권한 관리, 암호화, 시스템 백업 및 복구 - 시스템 파일 설정과 관리
- UNIX 계열 : mount 테이블을 이용한 파일 시스템 관리, 호스트 접근제어 관리, ssh 사용 등
- 윈도우 : NTFS에 대한 사용 권한 설정, 레지스트리 원격 액세스 권한 제한 및 레지스트리 백업 - 시스템 접근 제어 기술
- UNIX 계열의 접근 제어(특정 파일에 R/W 등 가능)
- 임의적 접근 제어(개별 소유자의 접근 권한)
- 강제적 접근 제어(개별 객체 : 비밀등급, 사용자 : 허가등급)
- 역할기반 접근제어(권한은 역할과 관계)
운영체제 설치 -> 작업용도에 따른 시스템 파티션 분리(mount 관리, 필요 X기능은 제거)
시스템 최적화 -> 자원관리의 최적화, 최소권한의 프로세스 수행(주로 루트 계정 사용, 셀 사용 권한 제거)- 시스템 로그 설정과 관리
- UNIX 계열, syslog를 통해 시스템 로그 설정
- 윈도우, 이벤트 뷰어를 통해 시스템 로그 설정
- 로그 파일 분석 - 서버 관리자의 의무
- 시스템의 시작과 종료
- 사용자 계정 관리 방법 이해
- 프로세스, 메모리, 디스크 등 자원 관리 방법 이해
- 네트워크 연결 관리 및 상태 관리 방법 이해
<chap 6. 네트워크 보안>
[네트워크 보안의 개요]
컴퓨터 네트워크
- 불특정 다수의 상호 접속 및 정보교환의 편리한 창구 역할네트워크 보안의 목적
- 모든 통신회선상의 정보는 항상 획득 가능- 통신회선상의 정보를 보호할 수 있는 방법 찾기
물리적 위협 : 직접적인 파괴나 손상을 입히는 행위 or 도난 -> 네트워크 시스템의 하드웨어 적인 것을 파괴하고 손상시킴
기술적 위협 : 수동적, 능동적인 공격이 존재
기술적 위협 수동적 능동적 설명 무단으로 정보 취득 변조, 위조를 통한 정보 취득 보안법 - 제 3자의 접속 시도를 방지
- 데이터를 암호화(기밀성)- 암호화
- 수신 측에서 무결성 확인[네트워크 보안의 목표]
목표 : 기밀성, 무결성, 가용성, 부인방지, 사용자의 신분확인 및 인증, 데이터 발신처 확인, 접근제어
가용성 : 성능을 안정적으로 유지, 이용 효율은 이상 X
[네트워크 보안 서비스]
- 인증
- 대등 실체 인증 : 신분확인과 자격 유무의 점검
- 데이터 발신처 인증 : 발신처를 통신 없이 정보를 제공하는 데이터 수정 등에 대한 보안은 제공 X - 접근제어
- 신분이 확인된 이후, 접근 권한을 갖고 있는지 결정 - 기밀성
- 접속 기밀성, 비접속 기밀성, 선택 영역 기밀성, 트래픽 흐름 기밀성 - 데이터 무결성
- 복구 기능 O 접속 무결성, 복구 기능 X 접속 무결성, 선택영역 접속 무결성, 비접속 무결성, 선택영역 비접속 무결성 - 부인 방지
- 발신자가 발신 사실을 부인하지 못하도록 방지
[네트워크 보안 메커니즘]
암호화, 전자서명, 접근 제어, 데이터 무결성, 인증교환, 트래픽 패딩, 라우팅 제어, 공증
- 암호화
- 제한적 접근을 제공하는 강력한 수단, 응용 시스템 간에 적용
- 링크 암호화, 단대단 암호화 - 전자 서명 : 데이터에 대한 서명(개인키)과 서명된 데이터에 대한 검증(공개키) 절차
- 접근제어 : 접근 권한을 결정하거나 고유성, 사용자에 대한 정보 또는 사용자의 자격을 이용
- 접근제어 정보, 인증정보, 소유, 기타의 부가적 표시, 보안 레이블, 접근 시도 시간, 경로 및 접근 지속시간 - 데이터 무결성 : 데이터의 정확성을 점검
- 송신자 : 메시지 인증 코드(MAC)와 조작 점검 코드(MDC) 이용
- 수신자 : 데이터의 변경 여부를 결정
- 데이터 재사용을 막기 위해 타임스탬프를 사용(계속 같은 데이터를 유지하는지 확인) - 인증교환 : 타임스탬프, 동기 클록, 2-방향 혹은 3-방향 핸드셰이크, 부인 방지 선택
- 트래픽 패딩 : 트래픽 흐름의 해석을 방지하기 위해 고의로 네트워크에 흘리는 방법
- 라우팅 제어 : 물리적 / 논리적 전송 경로를 선택하는 메커니즘
- 공증 : 통신 중인 데이터의 무결성, 전자서명, 암호화 및 데이터 무결성 등의 추적, 보안 복구
[LAN 보안]
개방형 구조 때문에 취약하며 정보의 내용 변경, 불법 유출, 순서변경, 바이러스 감영 등 위협
- 제공 서비스 : 데이터 발신처 인증, 기밀성, 비접속 무결성, 접근제어
- 분야 : SILS 모델, 안전한 데이터 교환, 키 관리 프로토콜, 시스템 보안 및 관리 프로토콜
[TCP/IP 보안]
IPSec : IP를 위한 보안 메커니즘 제시
- IP 인증헤더 : 데이터 송신자의 인증을 허용하는 IP헤더 / AH(A : 인증, H : 헤더)
- IP 캡슐화보안페이로드 : 송신자의 인증 및 데이터 암호화 지원
- AH 프로토콜 : 인증을 통해 IP 데이터그램의 헤더에 포함
- ESP 프로토콜 : 암호화를 통해 기밀성 보장( 송신자의 인증 및 데이터 암호화를 함께 지원하는 IP 캡슐화보안 payload)
SSL/TLS : 인터넷상 정보는 모두 TEXT 기반으로 전송됨으로
SSL : 애플리케이션 계층과 TCP 사이에 위치, 서버/클라이언트 인증, 기밀성 보장
TLS : SSL 3.0을 기반으로 한 업그레이드 프로토콜
OSI 7계층 TCP/IP 4계층 응용 계층 MHS보안, FTAM보안, 디렉토리 보안 응용 표현 계층 - message 암호에 기초한 데이터의 구문적 부호화 제공 세션 계층 보안 서비스 제공이 안됨 전송 계층 - segment sp4(security protocol 4) 트랜스포트 / 세션 네트워크 계층 - packet 보안서비스 규정, 다양한 프로토콜에 적용
가능한 실제적인 보안 서비스 규정. sp3인터넷 데이터링크 계층 - frame 보안길술 예정, LAN 보안으로 따로 규정 네트워크 액세스 물리 계층 - bit 댓글