.

정보보안기사 필기 정리 - 4과목 정보보안 일반

by 담배맛구마

2015/03/03 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 준비

2015/03/07 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 1과목 시스템 보안

2015/03/09 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 2과목 네트워크보안

2015/03/14 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 3과목 어플리케이션보안

2015/03/17 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 4과목 정보보안 일반

2015/03/17 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 5과목 정보보안 관리 및 법규 Part1

2015/03/21 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 5과목 정보보안 관리 및 법규 Part2

2015/03/27 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 후기(2015년 5회차)



1. 보안요소 기술(10문제+-/20문제)

(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로 보냄(어차피 못뜯어봐 ; 금융기관의 공개키로 암호화 했기에)


반응형

블로그의 정보

정윤상이다.

담배맛구마

활동하기