post by WHITEHATS
정보보안기사 필기 정리 - 4과목 정보보안 일반
(1) 인증기술
1) 사용자 인증기술
- 사용자 인증 : 통신하고 있는 상대가 내가 원하는 상대인지 확인할 수 있도록 해주는 기술
-- A와 B가 통신할 때, A가 B에게 자신이 A임을 증명할 수 있는 것
-- 개별식별 : 사용자 인증에서 더 발전해서, A와 C가 통신할 때 B가 C에게 A인척 못하게 하는 것
- 사용자 인증 유형별 방법
-- What you know(지식기반 인증방식) : ID/PW, I-PIN, 사전에 등록된 질문과 답
--- 사람의 지식에 따른 내용으로 인증 / 관리가 편하고 용이 / 습관에 따라 패스워드 설정하기에 유추쉽고 보안성 낮음
-- What you have(소유기반 인증방식): OTP, HSM, 보안카드, 스마트카드, 공인인증서
--- 소지한 별도 매체의 고유정보를 직접 제시 / 매체에 대한 분실 우려
-- What you are(생체기반 인식기술) : 지문, 홍채, 음성, DNA, 서명, 망막
--- 인증자의 신체적인 특성이나 행동학적 특성을 이용해 인증
- Chalenge-Response방식(이걸 어따 넣어야될지 모르겠네 / OTP에서도 쓰임)
-- 사용자가 서버에 암호화 키 자체를 직접적으로 전송하지 않으면서 해당 비밀키나 개인키를 소유하고 있는 정당한 사용자임을 증명
-- 매번 새로운 세션의 차별성을 위해 타임스탬프 / 세션 랜던 값 / 순서번호 를 이용할 수 있음
-- 대칭키를 이용한 방법
--- 사전에 사용자와 서버간의 대칭키를 공유하는 방식
--- 사용자가 서버로 접속해 서버로 부터 난수 값을 받아서 그걸 대칭키로 암호화해서 보내는 것
-- 공개키를 이용한 방법
--- 사용자가 서버로 접속해 서버로 부타 난수 값을 받아서 그걸 개인키르 암호화해서 보내는 것
- 사용자 인증의 보안 요구사항 : 식별 / 인증 / 인가 / 책임추적성
2) 메시지출처 인증기술
- 메시지 또는 자료의 출처가 알려진 출처가 맞는지 확인하는 기술
- 메시지출처를 인증하는 기술은 크게 "메시지를 암호화 하는 방법 / 메시지 인증코드 / 해시함수" 로 나뉨
- 메시지를 암호화 하는 방법
-- Case 1) 대칭키를 이용해 암호화 → 기밀성 + 부분적인 인증(송신부인방지)
-- Case 2) 비대칭키를 이용한 암호화
--- i) 수신자의 공개키로 암호화 → 기밀성
--- ii) 송신자의 사설키로 암호화 → 인증과 서명
--- iii) 송신자의 사설키로 암호화하고 수신자의 공개키로 암호화 → 기밀성 + 인증과 서명
- 메시지 인증코드(MAC ; Message Authentication Code)
-- 메시지와 대칭키를 입력으로해 인증값으로 쓰기 위해 만들어진 코드
-- 사전에 송신자와 수신자 간의 대칭키의 공유가 필요함
-- 수신자는 수신한 메시지와 대칭키를 가지고 직접 MAC을 만들어, 수신한 MAC과 비교해 인증을 수행
- 해시함수
-- 데이터를 정해진 크기의 Message Digest로 만드는 일방향함수(One-Way Function)
-- MAC과 달리 대칭키를 사용하지 않기에 키교환이 필요 없음
-- 해시함수의 결과값 자체는 기밀성이 없어서 암호화와 섞어서 사용함
3) 디바이스 인증기술
- 유비쿼터스 시대 네트워크에 들어서면서 디바이스와 디바이스 끼리의인증을 해야되는 일이 많아짐
- 디바이스와 사람간의 인증체계, 이기종 디바이스 간의 인증체계, 인증체계와 콘텐츠 보호와의 연동의 필요성이 생김
- ID/PW기반 디바이스 인증
-- 일반적으로 사용되는 이증방식
-- SSID방식 / WEP 인증방식 / RFID와 리더기 간의 인증방식 등
- MAC주소기반 디바이스 인증
-- 접속 하는 단말기의 MAC주소값을 인증서버 또는 AP에 등록해서 인증받는 방식
-- AP에서 사용됨
- 암호 프로토콜을 이용한 디바이스 인증
-- AP를 통한 정보자산의 불법적인 접근 또는 키나 세션을 훔쳐 정보를 유출하는 시도를 차단
-- 802.1x 인증 : 유무선 네트워크에서 인증된 네트워크를 접속하는 IEEE 표준
--- 사용자 ID 인증, 동적 키 관리 및 계정 지원
--- PAP / CHAP / RADIUS / PEAP / WEP 프로토콜
-- 802.11i 인증 : RC4 기반의 WEP 기술에 대한 취약점 해결하기 위해 제정
-- WPA(Wi-Fi Protected Access) : WEP에 비해 정교한 데이터 암호화와 완전한 사용자 인증기능 제공
--- TKIP과 802.1x 인증 방식을 사용
-- EAP(Extensible Authentication Protocol) : 인증을 위해 최적화된 전송 프로토콜
--- EAP-MD5 / EAP-TLS / EAP-TTLS / EAP-PEAP / EAP-Fast / LEAP
- Challenge-Response 인증
-- OTP에서의 Challenge-Response와 유사하게, 일회성 해시값을 생성해 사용자를 인증하는 방법
-- 인증서버가 난수를 만들어 클라이언트로 전송하면, 클라이언트는 패스워드 해쉬 알고리즘을 적용해 반환 함
4) Kerberos 프로토콜
- MIT에서 개발한, 분산 환경하에서 개체 인증서비스를 제공하는 네트워크 인증시스템 / 현재 네트워크상에서 가장 많이 사용 됨
- 사용자가 서버의 인증을 받기 위해 티켓이라는 인증값을 사용
- 비대칭키 암호방식을 전혀 사용하지 않고, 대칭키 암호방식만 사용하여 신뢰된 티켓 발급서버를 이용해서 인증
- 구성요소 : 클라이언트(다수) / 인증서버(AS) / 티켓발급서버(TGS) / 서버(다수)
-- 클라이언트가 패스워드로 인증서버에게 인증을 받음
-- 인증서버는 티켓발급서버가 인증된 클라이언트로 티켓을 발급하는 것을 허락함
-- 티켓발급서버가 클라이언트로 티켓을 발급함
-- 티켓을 받은 클라이언트는, 티켓을 이용해 서버에 인증을 받고 서비스를 받음
- Realm(영역) : 하나의 Kerberos 시스템에 속해 있는 클라이언트와 서버의 범위
-- 영역 안의 클라이언트들은 영역 안의 각 서버에대한 권한이 다름 / 권한에 따라 접속할 수 있는 기간도 다름
- 신임장(Credential) : 티켓발급서버가 클라이언트에게 발급하는 것으로 티켓(Ticket)과 인증자(Authenticator)로 구성
-- 인증자 : 티켓이 유효하다는 것을 증명하기 위해 사용되는 값으로 부가정보를 포함
-- 티켓의 포함 내용 : 클라이언트 ID와 네트워크주소 / 티켓의 유효기간 / 접속하기원하는 서버의 ID / 서비스기간동안 공유하는 세션키
http://www.zeroshell.org/kerberos/Kerberos-operation/
- 장점 : 통신내용을 암호화키와 암호프로세스를 이용하여 보호하기에 데이터의 기밀성과 무결성이 보장됨
- 단점
-- 모든 클라이언트와 암호화 키에 대한 정보가 KDC에 있기에, KDC 단일 오류 지점이 될수 있음
-- 비밀키와 세션키가 사용자 시스템에 저장되기에 유출과 침입에 취약
-- 패스워드 추측 공격에 취약하며, 사용자가 패스워드를 바꾸면 대칭키 또한 변경해야되는 번거로움
-- 티켓의 유효기간 때문에, 모든 클라이언트와 서버간의 시간의 동기화가 필요함
-- 가장 큰 문제점으로, 재전송 공격에 약함
- Kerberos 4
-- 암호화 시스템에 대해 의존함, DES 알고리즘 사용
-- 인증의 발송과 영역간의 인증은 불가능
- Kerberos 5
-- CBC 모드 사용(암호화 하는 방법임), 알고리즘 선택이 가능
-- 티켓의 유효시간에 시작기간과 끝 시간을 표시함
-- 인증의 발송과과 영역간의 인증이 가능
(2) 접근통제정책
1) 접근통제정책 구성요소
- 접근통제는 인증 성공 이후에, 각 시스템 자원에 대한 사용자의 요청을 허용할것인가? 말것인가?하는 문제
- 접근통제 시스템은 기능적으로 접근통제 정책 / 접근통제 매카니즘 / 접근통제 관련 보안 모델로 나뉨
-- 접근통제 정책
--- 신분 기반 정책 : 주체의 신분에 근거한 접근통제 정책
---- 임의적 접근통제(DAC)에 적용
--- 규칙 기반 정책 : 주체에 허용된 접근 수준과 객체에 부여된 허용등급 에 따른 접근통제 정책
---- 강제적 접근통제(MAC)와 동일한 개념
---- 라우터나 방화벽 등의 접근통제에 쓰임
--- 역할 기반 정책 : 객체에 대한 접근이 주체의 역할에 의해 결정되는 접근통제 정책
---- 역할기반 접근통제(RBAC)와 동일한 개념
-- 접근통제 메카니즘 : 접근요청을 접근통제 정책에 대응시켜 불법적인 접근을 방어함
--- ACL(Access Control List) : 신분 기반 정책을 지원
--- CL(Capability List) : 신분 기반 정책을 지원 / 주체에게 티켓을 부여(접근 객체와 범위가 지정됨)
--- SL(Security Lable) : 규칙 기반 정책을 지원
--- 더 많긴한데 모르겠다.. 필요하면 추가함
-- 접근통제 관련 보안 모델(다양한데 잘나오는 3가지만)
--- Bell-LaPadula(BLP)
---- 데이터의 기밀성유지를 주목적(미국방부에서만듬) / 정보의 불법적 유출을 방어하기 위한 최초의 수학적 모델
---- 단순보안속성(Simpe Security Property) : 주체는 자신의 보안등급보다 높은 등급의 객체에 접근불가 ; No Read Up
---- 성형속성(The ★-Property) : 주체는 자신의 보안등급보다 낮은 등급의 데이터를 수정할수 없음 ; No Wirte Down
--- Biba
---- 데이터의 무결성유지를 주목적으로 함(비 군사적 조직) / Bell-LaPadula 모델의 단점인 무결성을 보장할 수 있도록 보완
---- 단순무결성원리(Simple Integrity Axiom) : 주체집단에게 주어진 무결성등급보다 낮은 객체는 못 읽음 ; No Read Down
---- 성형무결성원리(The ★-Integrity Axiom) : 주체에게 주어진 무결성등급보다 높은 등급의 객체는 수정 못함 ; No Write Up
--- Clark-Wilson
---- Biba 이후에 나왔으며, Biba의 무결성 보호를 조금 다른 관점에서 접근함
---- 주체가 객체에 직접접근은 할 수 X / 오직 프로그램을 통해 간접적으로 접근
2) 임의적 접근통제(DAC ; Discretionary Access Control)
- 신분 기반 정책을 적용했다고 보면될려나??
- 어떤 사용자든 임의적으로 객체에 대한 다른 사용자들의 접근을 허용할 수 있는 기법
-- 데이터 소유자가, 사용자나 사용자 그룹에 따라 접근을 제어
-- 예를 들자면, Windows에서 Everyone같이 그룹단위로 접근제어 하는거 생각해봐
--- DAC는 대부분 운영체제에서 지원됨
- 모든 주체와 객체에 대해 일정하며, 하나의 주체와 하나의 객체 단위로 접근 제어는 불가능
- 구현을 위해 일반적으로 ACL(Access Control List)을 활용 / 중앙집중적으로 통제되는 환경에서 부적합
- 결론적으로, 사용자가 누구고 어떤 그룹에 속해있는지에 따라 접근통제가 이루어져
3) 강제적 접근통제(MAC ; Mandatory Access Control)
- 규칙 기반 정책을 적용 했다고보자...(이게 맞는 건지는 모르겠으나 다들 그렇게 연결 짓던데?)
- 관리자가 주체들에겐 허가등급을, 각각의 객체에는 비밀등급을 부여해서 주체의 허가등급과 객체의 비밀등급을 따져 접근을 제어함
-- 주체들과 객체들의 등급을 따로 보안레이블에 저장해둠
-- 운영체제(관리자) / 주체(프로세스 들) / 객체(시스템 리소스) 이렇게도 쓰여
- 최상의 허가등급을 가진 사용자라도 모든 객체를 열람 할 수는 X
- 통제가 용이하고 보안관리자 주도하에 중앙 집중적 관리가 가능하다는 장점
- 기밀성이 매우 높은 조직에서 사용됨
4) 역할기반 접근통제(RBAC ; Role Based Access Control)
- 역할 기반 정책의 적용 / 임의적 접근통제와 강제적 접근통제의 단점을 보완한 기법(비 임의적 접근통제라고도함)
- 역할들을 생성해서 역할마다 권한을 준다음, 사용자들에게 각 역할을 부여함. 즉, 사용자의 역할에 따라 접근을 제어 함
- 규모가 큰 회사에 알맞은 시스템(인사이동 등이 잦아도 그냥 사용자의 역할만 변경하면 됨)
5) 접근통제행렬과 AC
- 접근통제행렬 : 주체를 열에, 객체를 행에 표시해서 각각에 권한을 부여하는 방법
- AC(Access Control ; 접근통제) : 몇몇 접근통제 모델은, 해당 모델이 가지고 있는 접근통제 메카니즘을 보안모델로 발전시킴
-- 접근통제 메카니즘과 보안모델은 1)에서 설명
(3) 키 분배 프로토콜
1) KDC 기반 키 분배
- KDC(Key Distribution Center)
-- 암호통신을 원하는 두 가입자 사이에, 공통의 암호키를 소유할 수 있고 키 분배 과정을 수행하는 신뢰된 기관
-- 간단히 말해, 비밀키를 만들어서 대칭키 암호화 통신을 원하는 사람들에게 키를 나누어 주는 역할
-- 키를 나누어 준 뒤, KDC에서 키를 삭제하는것도 좋지만 분실에 대비하는것도 좋음(이런 의미에서 키 복구센터라고도함)
-- 인원이 많아지면, 관리하는 키의 수가 기하급수적으로 증가해 현실적으로 관리가 불가능
- 키 분배 방식
-- 키의 사전분배(Key Predistribution) 방식 : 한 가입자가 키를 만들어, 상대 가입자 혹은 양측 가입자에게 전달하는 방식
--- Blom 방식 / 중앙집중식 키 분배(Kerberos에서 사용) / 공개키 분배(KDC가 공개키 분배)
-- 키 공유방식(Key Agreement) 방식 : 키를 설정하는데 공동으로 참여
--- Diffie-Hellman 키 교환 방식 등등
2) Needham-Schroeder 프로토콜
- Roger Needham과 Micheal Schroedor이 1978년 대칭키와 trent 개념을 사용해 제안
- 인증서버 S / 통신주체 A / 통신주체 B 가있다고 가정하고 설명(K는 키값 / N은 난수값)
-- 1) A → S : A / B / N_A
--- (A가 S에게 B와 통신하고 싶다고 알림 ; A와 B의 ID와 A가 생성한 난수값보냄
-- 2) S → A : N_A / K_ab / B / [ [ K_ab, A ]K_bs ]K_as
--- (S가 A에게, B와 통신할 때 쓸 키 K_ab를 주고, B에게도 알려주라고 K_ab를 K_bs로 암호화 해서 줌
-- 3) A → B : [ K_ab, A ]K_bs
--- 아까 S가 B주라고 줬던걸, B한테 보내줘
-- 4) B → A : [ N_b ]K_ab
--- A로부터 키 값 K_ab를 받은 B는 응답신호로써 자신이 생성한 난수값 N_b를 암호화 해서 보냄
-- 5) A → B : [ N-b - 1 ]K_ab
--- B로부터 받은 난수값에서 1빼고 암호화 해서 보내
- 재전송 공격의 취약점이 있음(MITM에 취약) 그래서 타임스탬프를 사용함
-- 타임스탬프사용해서 하는건 위의 1)에서 타임스탬프를 주거니 받거니함(걍 생략)
3) Diffie-Hellman 프로토콜
- 1976년 Diffie와 Hellman이 발표한 것으로 이산대수 계산의 어려움을 이용함 / 공개키 암호의 시초
- 네트워크상에서 A와 B가 알고리즘에 사용하는 비밀키를 서로 만나지않고 공유할 수 있는 방법
- Alice와 Bob이 키교환하고자함!
-- 1) Alice와 Bob은 소수 p와 p미만의 임의의 정수 g를 선택해 공유함
-- 2) Alice와 Bob은 서로 비밀키 a와 b를 만듬
-- 3-1) Alice는 A = g^a (mod p)를 계산해 공개키 A를 Bob에게 보냄
-- 3-2) Bob은 B = g^b (mod p)를 계산해 공개키 B를 Alice에게 보냄
-- 4-1) Alice는 B^a (mod p)를 계산하고, Bob은 A^b를 계산해서 A^b = B^a = g^ab (mod p)라는 결과를 만들어냄
-- 5) g^ab (mod p)를 둘 만의 비밀키로 사용
- 세션키 같은거 필요없고 단순하고 효율적으로 키 교환이 가능
- 재전송 공격(MITM)에 취약함
4) RSA 이용 키 분배 방법(RSA 암호 알고리즘을 말하는게 아냐)
- RSA는 소인수 분해의 어려움을 이용하는 암호 알고리즘임
- 일단, 여기선 RSA를 이용한 키 분배 방법이기에 키 생성가은건 집어치우고 시작
-- 1) Alice와 Bob이 각각 공개키 쌍과 사설키 쌍을 만듬
-- 2) Alice가 공개키 쌍과 자신의 ID값을 Bob에게 보냄(ID값은 뭐..그냥 자기라고 인증할만한 값?인듯)
-- 3) Bob이 공유할 대칭키를 생성해서 Alice의 공개키로 암호화해서 Alice에게 보냄
-- 4) Alice는 받은 대칭키로 데이터를 암호화해서 보냄(여기부터 통신시작)
(4) 전자서명과 공개키 기반구조(PKI)
1) 전자인증서 구조
- 사용자 공개키와 사용자 ID정보를 결합해 인증기관이 서명한 문서 / 공개키의 인증성을 제공
- 쉽게말해, 사용자의 공개키 + 사용자의 공개키에 대한 인증기관의 전자서명 = 사용자의 전자인증서
- X.509 인증서 표준 : ITU에서 제안한 인증서에 대한 기본 형식을 정의한 규격
-- 인증서를 이용한 공개키의 효율적인 분배 방법을 정의
-- X.509 v1(1988)
-- X.509 v2(1993)
--- 인증서 취소목록(CRL ; Certificate Revocation List)을 도입
--- 인증기관 고유 ID(Unique Identifier) 도입 : 한 주체가 둘 이상의 인증기관으로 부터 인증서가 발급됬을 경우 구분하기 위해
--- 주체 고유 식별자 : 주체를 식별하는 값(동명이인일 경우 구분하기 위해)
-- X.509 v3(1996)
--- 인증기관 키 식별자
--- 주체키 식별자
--- 키 용도 : 암호용인지 서명용인지 구분
--- v3부터는 확장자의 개념이 도입됨
---- 키 및 정책 확장자
---- 주체와 발급자에 대한 속성 정보
---- 인증서 경로 및 규제 정보
---- CRL을 위한 확장자
- 전자인증서 구조
-- 버전(Version) : X.509의 몇 번째 버전이냐??
-- 일련번호(Serial Number) : 발행하는 CA 내부에서의 유일한 정수값
-- 알고리즘 식별자(Algorithm Identifier) : 인증서를 생성하는데 어떤 알고리즘 썻는지
-- 발행자(Issuer) : 인증서를 발행하고 표시하는 CA
-- 유효기간(Period of Validity) : 인증서가 유효한 시작과 끝기간
-- 주체(Subject) : 인증서가 가르키는 사람
-- 공개키 정보(Public-key Information) : 주체의 공개키와, 이 키가 사용될 알고리즘 식별자
-- 서명(Signature) : CA의 개인 서명키로 서명한 서명문
2) 전자서명 보안 서비스
- 전자서명(DIgital Signature) : 내가 받은 메시지를 어떤 사람이 만들었는지를 확인하는 인증
- 전자서명의 기능 : 사용자인증(송신 부인방지) / 메시지 인증(무결성의 보장의 개념)
- 전자서명의 특징 : 위조불가 / 서명자 인증 / 부인 불가(서명사실에 대해) / 변경불가(변조불가) / 재사용 불가
- 전자서명 방식에 따른 분류
-- 직접 서명(Direct Digital Signature) 방식 : 혼자서 서명알고리즘 수행하고 서명하는 방식
--- 키가 유출되면, 송신 부인방지가 안되며 기타 다른 요구사항이 충족 안됨
-- 중재 서명(Arbitrated Digital Signature) 방식 : 서명자가 서명해서, 중재자에게 보내면 중재자가 한 번더 서명하는 방식
-- ※ 전자서명 알고리즘의 분류
--- 메시지 복구가능 전자서명 알고리즘(DSS ; Digital Signature Scheme) : 서명값으로 부터 메시지 추출해서 검증가능
--- 원메시지 필요 전자서명 알고리즘(DSS with appendix) : 검증을 위해 따로 원메시지가 필요
- 전자서명 방법
-- 메시지에 직접하는 방법
-- 메시지의 해쉬값에 서명하는 방법 : 좀더 효율적
3) PKI 구성방식(계층, 네트워크)
- PKI(Public Key Infrastructure ; 공개키 기반 구조) : 공개키 인증서의 인증성(무결성)을 제공하기 위한 신뢰구조
- PKI 구성요소(컴포넌트 ; Component)
-- 공개키 인증서(Public Key Certificate) : 해당 키가 누구 것인지 알려줌(공개키 정보와 주인의 정보)
--- 구성 : 공개키 인증서/ 인증서 정책 / 인증서 경로 / 인증서 철회 리스트(CRL ; Certificate Revocation List)
-- 인증기관(CA ; Certification Authority)
--- 인증서의 발급 / 상태관리 / 문제 발생 시 CRL의 발급
--- 지금까지 발행한 인증서와 모든 CRL을 저장
-- 등록기관(RA ; Registration Authority) : 인증서 신청시, CA대신 신분, 소속을 확인해주는 기관
-- 저장소, 디렉터리(Repository) : 공개키를 저장하고 있는 기관
--- CA로부터 인증서와 CRL을 받아 저장하고, 이를 요구하는 사용자에게 나눠줌
-- 사용자(User)
- PKI 구성 방식
-- 순수 계층 방식(트리구조)
--- 최상위 인증기관인 Root CA에 대한 신뢰를 바탕으로, 하부 CA간의 상호인증은 원칙으로 배제하는 방식
--- Root CA간의 상호 인증으로 국제적으로 구성이 가능
-- 네트워크 구조 방식
--- 여러 Root CA를 두어 운영함 / 복잡함
4) CRL 구조 및 기능
- CRL(Certificate Revocation List) : 인증서 취소 목록
- 취소 이유
-- 인증서 발행 조직에서 탈퇴 / 비밀키의 손상 / 비밀키 유출 의심
-- 인증서 소유자나 소유자의 대리인의 취소 요구
- 인증서 취소 메카니즘 : X.509에서 정의된 CRL을 이용해 관리
- CRL은 네트워크를 통해 공개되고 Repository에 저장됨
-- 주기적으로 CRL을 생성하는 방법과 실시간으로 생성하는 방법이 있음(하이브리드 하는게 좋음)
5) OCSP 동작절차
- OCPS(Online Certificate Status Protocol) : 실시간으로 인증서가 유효한지 검증하는 프로토콜
-- CRL과 마찬가지로 유효성을 검증할 수 있는 프로토콜(업데이트 주기나, 비요 등에서 차이가 있어)
- OCSP 방식은 CA와 Repository와는 별도로 OCSP 서버를 하나 두고, 사용자의 검증 요구에 대한 결과를 제공하는 방식
-- OCSP Server는 특정 CA기관과 사용계약을 맺어야하고 사용량에 따라 추가 비용 지불
-- OCSP Server가 CA기관과 계약을 맺으면 OCSP Server에 Server 인증서와 개인키가 발급됨
-- OCSP Server 인증서는 1년마다 교체해야됨
- OCSP 동작 절차
-- 1) CA 내부에 OCSP Responder가 존재
-- 2) OCSP Server가 CA내부의 OCSP Responder로 OCSP Request 전송
-- 3) 인증서의 폐기 여부를 검증함
-- 4) CA에서 OCSP Server로 OCSP Response 전송
- OCSP와 CRL의 비교
-- CRL같은경우는 실시간이 아니라 일정한 주기마다(6시간~24시간) 폐기목록을 생성
-- CRL이 갱신되어야 폐기로 판단
-- 따로 비용이 들지는 않음
6) 전자서명 관련법규
- 이건 나중에 법규할 때 다루자
2. 암호학(12문제~13문제/20문제)
(1) 암호 알고리즘
1) 암호 관련용어
- 평문(Plaintext) / 암호문(Ciphertext)
- 암호화(Encryption) / 복호화(Decryption)
- 전자서명(Digital Signature)
- 기밀성 / 무결성 / 가용성 / 부인방지
2) 암호 공격방식
- 수동적 공격(소극적 공격)
-- 도청 / 트래픽 분석
- 능동적 공격(적극적 공격)
-- 변조 / 삽입 / 삭제 / 재생
- 암호 메시지에 대한 공격(해독하려는 시도)
-- 암호문 단독 공격(Ciphertext Only Attack/COA)
-- 알려진 평문 공격(Known Plaintext Attack/KPA)
-- 선택 평문 공격(Chosen Plaintext Attack/CPA)
-- 선택 암호문 공격(Chosen Ciphertext Attack/CCA)
3) 대칭키, 공개키 암호시스템 특징 / 4) 대칭키, 공개키 암호시스템 활용
- 대칭키 암호시스템(비밀키/관용키 암호시스템)
-- 암호화키와 복호화키가 동일함
-- 암호화와 복호화가 빨라서 효율적임
-- 치환가 전치의 조합으로 간단한 구조로 개발 쉬움(Feistel 구조를 기반으로 해서 그런듯)
-- 많은 사람과의 정보교환시 키 관리의 어려움이 있음(N명의 경우 N(N-1)/2의 비밀키가 필요
-- 암호화에 적용되는 평문에 따라 Stream Cipher / Block Cipher
-- Steam Cipher : RC4
-- Block CIpher : DES(3DES) / IDEA / RC5 / RC6 / AES / SEED / Blowfish /ARIA
http://www.slideshare.net/skccsocial/security-framework220
- 공개키 암호시스템(비 대칭키 암호시스템)
-- 암호화키와 복호화키가 다름
-- 다른 유저와 키를 공유안해도 암호화 통신이 가능
-- 수학적인 난제을 기반으로해서 암/복호화가 복잡
--- 이산대수를 이용 : Diffie-Hellman / El Gamal / DSA / KCDSA / Schnorr
--- 소인수분해를 이용 : RSA / Rabin
--- 기타 : ECC(타원곡선) / Knapsack
5) 스트림 암호
- 대칭키 암호시스템 구조 중 하나로, 한번에 한 바이트씩 암호화되는 형식(가장 처음에 초기값(IV ; Initial Vector)가 필요)
- 가장 중요한 건 키 스트림을 생성하는 것(동기적 / 비 동기적)
-- 동기식 스트림 암호 : 키 스트림을 대칭키와 이전상태로부터 뽑아냄(예를 들어, N키스트림과 N+10 키 스트림이 동일)
--- 대표적으로 RC4가 있음
-- 비동기식 스트림 암호 : 키 스트림을 대칭키와 평문으로 부터 뽑아냄
- 키 스트림의 무작위성이 암호의 강도가 됨
6) 블록 암호
- 대칭키 암호시스템 구조 중 하나로, 고정된 크기의 블록을 고정된 크기의 암호화 블록으로 암호화하는 방식
- Feistel 구조와 SPN구조를 다루고 싶지만...
- 블록암호 운영모드 : 평문의 길이가 블록의 크기보다 클 경우에 대한 문제점을 해결하기 위해 제시된 암호화 모드
-- ECB(Electronic Code Book) : 평문을 블록단위로 잘라서, 각 블록마다 암호화
--- C[i] = Ek( M[i] )
--- 블록 크기보다 작으면 적용 불가능
--- 이전 블록 값의 오류가, 이후에 영향을 안줘(소규모 암호화에 적합)
---- 오류 전파가 안된다는 특징
---- 동일한 평문엔 동일한암호문이 나와 → 암호문 단독공격에 약해
-- CBC(Cipher Block Chaining) : 출력되는 암호문이 다음 평문 블록에 영향을 줘
--- C[i] = Ek( C[i-1] × M[i] )
--- 암호화 과정에서, 평문 블록 M[i]에서 1bit가 오류 → 암호문 블록 C[i]부터 끝까지 영향
---- ECB가 암호문 단독공격에 취약한걸 해결
---- 이런 특징 때문에, 메시지 인증코드에 사용되기도 해(무결성이 유지되기에)
--- 복호화 과정에서, 암호문 블록 C[i]에서 1bit가 오류 → 평문 블록 M[i], M[i+1]에만 영향
-- CFB(Cipher Feed Back) : 암호문이 암호기의 입력으로 사용되
--- C[i] = Ek( C[i-1] ) × M[i]
--- 암호화 과정에서, 평문 블록 M[i]에서 1bit가 오류 → 암호문 블록 C[i]부터 끝까지 영향
---- ECB가 암호문 단독공격에 취약한걸 해결
--- 복호화 과정에서, 암호문 블록 C[i]에서 1bit가 오류 → 평문 블록 M[i], M[i+1]에만 영향
-- OFB(Output Feed Back) : 암호 알고리즘의 출력이 다시 암호 알고리즘의 입력이 됨
--- C[i] = Ek( Z[i-1] ) × M[i]
--- ECB가 암호문 단독공격에 취약한걸 해결
--- CBC와 CFB의 오류전파를 제거함
--- 블록암호상에서 스트림암호를 운영할 수 있음
-- CTR(CounTeR) : IV값을 Counter로 1씩 계속 증가시킨걸, 암호화해 키 스트림을 만들어 내는 스트림 암호화
--- 블록암호상에서 스트림암호를 운영할 수 있음
7) 블록 암호공격
- 차분 공격(Differential Cryptanalysis) : 평문공격법 / 두 개의 평문블록과 이에 대응되는 암호문 블록들의 비트들의 차이를 이용해 키를 찾음
- 선형공격(Linear Cryptanalysis) : 평문공격법 / 알고리즘 내부의 비선형 구조를 선형화해서 키를 찾음
- 전수공격(Exhaustive Key Search) : 암호화할 때의 모든 경우에 대하여 조사하는 방법 / 일반적으론 불가능(경우의 수가적을 때만 가능)
- 통계적 분석(Statistical Analysis) : 많이 사용되는 단어의 빈도의 통계적 수치를 가지고 해독
- 수학적 분석(Mathematical Analysis) : 통계적 방법을 포함해, 수학적 이론을 이용해 해독
8) 인수분해 기반 공개키 암호방식
- 소인수 분해의 어려움을 이용(엄청나고 엄청난 수를, 엄청나게 큰 두 소수로 분해하는게 어려움)
- RSA(Rivest Adleman Shamir)
-- Key 생성
--- 1. 큰 소수인 p, q를 선택
--- 2. N = p x q를 계산 해, N을 구함
--- 3. φ( N ) = ( p-1 ) x ( q-1 )
--- 4. gcd( Ke, φ( N ) ) = 1이 성립하는 Ke를 구함
--- 5. Ke x Kd ≡ 1 ( mod φ( N ) )이 성립하는 Kd를 구함
--- 공개키 쌍은 ( Ke, N ), 개인키 쌍은( Kd, N )
-- 암호화 과정
--- 1. 수신자의 공개키 쌍을 가져옴( Keb, Nb )
--- 2. C ≡ M^( Keb ) ( mod Nb )로 암호문을 만들어냄
-- 복호화 과정
--- 1. 수신받은 암호문 C에 자신의 개인키로 복호화 함
--- 2. C^( Kdb ) ≡ M^( Keb x Kdb ) ≡ M^(1) ≡ M ( mod Nb )
- Rabin
-- RSA 암호방식보다 훨씬 빠름(암호화 과정이 더 단순)
-- RSA와는 다르게 공개키가 N이고, 개인키가 p, q가 됨
-- Key 생성
--- 1. 큰 소수 p, q를 선택
--- 2. N = p x q를 계산해, N을 구함
--- 공개키는 N, 개인키는 p, q
-- 암호화 과정
--- C ≡ M^( 2 ) ( mod N )
-- 복호화 과정
--- M ≡ C^( 1/2 ) (mod N )
9) 이산로그 기반 공개키 암호방식
- El Gamal
-- RSA와는 다르게, 같은 평문에서도 다른 암호문이 생성 / But, 암호문 길이가 두 배로 증가한다는 단점
-- Y = g^ ( X ) ( mod p )에서 g와 y, p를 알아도 x는 구하는건 겁나 어렵다
--- 여기서 Y와 g, p가 공개키고 X가 개인키
-- 키 생성
--- 1. (공통) 임의의 큰 소수 p와, p의 기약잉여계의 임의의 원시근 g를 선택(위수가 φ(p)인게 원시근)
--- 2. 1부터 p-1까지의 정수 하나를 개인키 X로 정함
--- 3. Y = g^( X ) (mod p )를 계산해, Y를 정함
--- 공개키는 Y, p, g, 개인키는 X
-- 암호화
--- 1. 수신자의 공개키를 가져옴(Yb, g, p)
--- 2. p의 완전잉여계에 속하는 임의의 정수 r을 하나 정함
--- 3. K ≡ Y^( r ) ( mod p )를 계산해 K를 계산
--- 4. 다음과 같은 C1과 C2를 보냄
i) C1 ≡ g^( r ) ( mod p)
ii) C2 ≡ K x M ( mod p)
-- 복호화
--- 1. 수신받은 C1과 C2를 개인키 Xb를 이용해 복호화
--- 2. C1에서 K를 구해냄
C1^( Xb ) ≡ ( g^( r ) )^( Xb ) ≡ ( g^( Xb ) )^( r ) ≡ Yb^( r ) ≡ K ( mod p )
--- 3. C2에서 평문 M을 구해냄
C2 / K ≡ M ( mod p )
- Diffie-Hellman
-- 직접 서로의 비밀키를 전달할 수 있는 대표적 방법 중 하나
-- 키 교환 및 인증에 사용됨
- ECC(Elliptic Curve Cryptography ; 타원곡선 암호)
-- 아..이건 모르겠다ㅋㅋㅋ
(2) 해쉬함수와 응용
1) 해쉬 함수 일반
- 임의의 입력 비트열에 대해, 일정한 길이의 출력 비트열을 내는 것
- 해쉬 함수의 요구 사항
-- 압축 : 일정한 크기의 이진 문자열로 변환
-- 계산 용이성 : x가 주어지면 H(x)의 계산이 쉬워야 함
-- 일 방향성(One-wayness) : 해시값 y만 주어 졌을 때, y = H(x)에서 x를 찾는게 어려워야 함
-- 약한 충돌회피성 : x가 주어졌을 때, H(x) = H(x')를 만족하는 x'를 찾는게 어려워야 함(거의 불가능이 되어야 지)
-- 강한 충돌회피성 : H(x) = H(x')를 만족하는 x와 x'를 찾는건 어려워야 함
2) 전용 해쉬함수별 특징
- MD5 / SHA
-- MD5와 SHA-0 / SHA-1 / SHA-2만 알면 될듯(일단 다 긁어왔어)
http://en.wikipedia.org/wiki/Secure_Hash_Algorithm
3) 메시지 인증 코드(MAC)
- MAC(Message Authentication Code)
-- 저 위에서 메시지 인증방식으로 언급하긴함
- MAC Algorithm으로 DES나 해쉬함수를 씀
http://en.wikipedia.org/wiki/Message_authentication_code
4) 전자서명
- 전자서명(Digital Signature) : 메시지 인증 + 사용자 인증
-- 위에서 이미 다룸
5) 은닉서명
- 은닉서명(Blind Signature) : 사용자 A가, 서명자 B에게로 부터 자신의 메시지를 보여주지 않고 서명을 얻는 방법
-- 그니까, 서명을 받긴 받았는데 그게 누구 서명인지 알수는 없다는 거지
-- 어떤 특정 난수값을 메시지에 곱해서 보내기에 못 보는거지
- 메시지의 비밀성을 지키면서, 타인의 인증을 받고자 하는 경우에 주로 사용
-- 주로 전자투표?
- 하는 알고리즘은 생략
6) 이중서명
- 이중서명(Dual Signature) : SET에서 도입된 기술로 이전에 언급했음
아래는 고객이 상점으로 보내는 것
상점에서는 이중서명 / OI / PIMD / 고객의 공개키만 사용
아래는 상점이 고개으로 부터 메시지 받고 처리하는 과정
이중서명 / OI / PIMD / 고객의 공개키를 가지고 인증을하고
나머지는 Payment Gateway로 보냄(어차피 못뜯어봐 ; 금융기관의 공개키로 암호화 했기에)
티스토리 툴바
하얀모자의 whitehat
'▶ 자격증 > 정보보안기사' 카테고리의 다른 글
정보보안기사 필기 정리 - 5과목 정보보안 관리 및 법규 Part2 (0) | 2016.02.07 |
---|---|
정보보안기사 필기 정리 - 5과목 정보보안 관리 및 법규 Part1 (0) | 2016.02.07 |
정보보안기사 필기 정리 - 3과목 어플리케이션보안 (0) | 2016.02.06 |
정보처리기사 필기 정리 - 2과목 네트워크보안 (0) | 2016.02.06 |
정보보안기사 필기 정리 - 1과목 시스템 보안 (0) | 2016.02.06 |