[인터넷보안]암호이론
류명운
·2014. 10. 7. 15:51
암호화 기본 기법
- 대칭키 암호화 기법
- 공개키 암호화 기법
- 전자서명 기법
- 해쉬기법
-> 암호화 기법을 사용하여 보안 서비스를 제공하는 보안 시스템을 구현할 수 있다.
대칭키 암호화 기법 (= 관용 암호화 기법 = 단일키 암호화 기법)
대칭키 암호화 기법의 구성요소 |
|
송신자와 수신자 사이에 공유된 단일키를 통해서 데이터를 암호화 및 복호화 하는 기법
동일한 키가 암복호화를 위해 사용되기 때문에 대칭키라고도 함
공개키 알고리즘에 비해 상당히 빠르고 대용량의 데이터를 처리하기에 적합함
P:평문 / C:암호화문 / K:비밀키
암호화 -> C=E(K,P)
복호화 -> P=D(K,C)
대칭키 알고리즘은 대부분 한번에 한 블록씩 암호화를 하는 블록 암호화 방식을 사용함(반면 한번에 한 비트씩 암호화 하는 방식을 스트림 암호화 방식이라 함)
블록 암호화 방식(예:RC2,DES,3DES,Rijndael 등)은 n 바이트의 입력 블록을 암호화된 블록으로 변환함
닷넷 프레임워크에서는 (닷넷 클래스 라이브러리와 CAPICOM) 블록 암호화 방식만을 지원하며 특히 네 가지 블록 암호화 모드 중에서 cipher block chaining(CBC) 모드만을 지원함
* ECB(electronic codebook mode), CFB(cipher feedback mode), OFB(output feedback mode)
CBC 모드를 사용하기 위해 비밀키와 초기화 벡터(initialization vector(IV))가 필요함
ECB Mode |
암호화 키처럼 짧은 자료에 적합한 모드로 단순하고(누구나 구현가능) 병렬암호화가 가능함 암호문과 평문이 1:1로 대응되기 때문에 알려진 평문공격에 취약 특히, 긴 자료의 경우, 동일한 내용의 블록이 반복될 가능성이 큼 -> 평문의 패턴을 유추할 수 있음 암호화: C = E(K, P) 복호화: P = D(K, C) |
CBC Mode |
암호문 블록을 마치 체인처럼 연결시켜서 사용한다. 암호화: C = E(K, P || C -1) 복호화: P = D(K, C) || C -1 |
CTR Mode |
1씩 증가해 가는 카운터를 암호화해서 키 스트림을 만들어 내는 스트림 암호이다. 암호화: C = P || E(K, CTR) where CTR = CTR-1 +1 복호화: P = C + E(K, CTR) |
대칭키 암호화 기법: 키 길이와 암호화 강도
-
전사공격 (가능한 숫자 문자 다 대입해보는거)
->암호화 알고리즘이 유일하게 허용하는 공격
->키 길이와 전사공격 비용은 비례함(n 비트 > O(2^n))
-
암호화 알고리즘의 목표는 전사공격의 비용이 크도록 하는 것
->DES의 경우 56비트의 제한된 키 길이로 인해 안전하지 않다고 알려짐 (표준:128비트로 바뀜)
AES -> RIJNDEAL 이 최종적으로 채택됨
국산 암호화 알고리즘 : SEED(정보보호진흥원), ARIA(국보연&국정원)
대칭키 암호화 기법에서 송신자와 수신자는
1)사전에 비밀키와 초기화 벡터를 알아야 한다.
2)비밀키를 안전하게 보호해야 한다.
->키분배와 확장성 문제가 발생한다.
키분배 문제 |
닭이 먼저냐 계란이 먼저냐의 문제 생성한 비밀키를 어떻게 안전하게 공유할것인가에 대한.. ->제 3자를 이용하는 방법이 제안됨 ->키 분배센터를 이용하자 |
확장성 문제 |
n명의 사용자가 서로 안전한 통신을 하기 위해서 n(n-1)/2키가 필요함 |
공개키 암호화 기법(비대칭키 암호화 기법)
-중간자공격에 취약함(공개키인증을 통하여 중간자공격을 방어할 수 있다)
-데이터의 암복호화를 위해 공개키와 개인키을 사용함
- 개인키: 공캐키쌍의 소유자만이 사용할 수 있는 키
- 공개키: 모두에게 공개되어 누구나 사용할 수 있는 키
- 공개키는 전사공격에 덜 취약함 / 상당히느림 / 대용량에부적합
일반적인 통신 |
A, B A->B:공개키를 요청 B->A:Pub / A에게 공개키를 반환 A->B:C=E(Pub, M) / 메시지 M을 B의 공개키로 암호화한 C를 B에게 전송 B:M=D(PRb, C) / A에게 받은 C를 자신의 개인키로 복호화하여 메시지 M을 획득 |
중간자 공격(X 맨이 중간이 껴들음) |
A->B:공개키를 요청 B->X:Pub X->A:PUx A->X:C1=E(PUx, M) X:M=D(PRx, C1) X:C2=E(PUb, M') B:M'=D(PRb, C2) |
하이브리드 과정 |
A,B Kab: A와 B의 세션키 A:임의의 Kab를 생성 A:C=E(Kab, M) / 메시지 M을 Kab로 암호화 A:EKab=E(PUb, Kab) / 세션키 Kab를 B의 공개키로 암호화 A->B:C, EKab / B에게 C와 EKab를 전송 B:Kab=D(PRb, EKab) B:M=D(Kab,C) |
인증
대칭키 암호화 인증과정(키를 두사람이 공유하기때문에 둘다 만들수 있어서 부인공세가 안됨)
(1)A가 B에게 메시지 M을 서명하는 과정
(2)A:C=E(Kab,M)
(3)A->B:M,C
(4)서명검증
(5)B:M=D(Kab, C)
(6)B:Check if M=M
공개키만이 전자상거래를 지원할 수 있다. 인증과정에서 부인봉쇄가 되기때문에
디피헬먼의 키교환 |
Alice:개인키(x), 공개키(Sx = q^x mod p) Alice->Bob: Sx, q, p Bob의 공개키:Sy=q^y mod p /앨리스와 밥은 서로 공개키를 갖고있음 /Kab를 만들자-> Sy^x mod p = Sx^y mod p = q^yx mod p Kab=(Sy)^x mod p = (q^y mod p)^x mod p = q^yx mod p Kab=(Sx)^y mod p = (q^x mod p)^y mod p = q^xy mod p Bob:개인키(y), 공개키(Sy) |
무결성, 데이터인증, 부인공세를 제공하는 기술
해쉬
해쉬함수는 임의의 데이터를 고정된 길이의 바이트열로 변환함
해쉬값은 통계적으로 유일함(어떤데이터가 들어오던 아웃풋이 같음)
해쉬함수는 일방향 함수(x로 y를 만들었는데 y로 x를 추적할 수 없음)
D=H(M) / 메시지 M을 해쉬함수로 돌렸더니 결과값 D가나옴 |
무결성을 입증하는 순서 |
A->B : M, D=H(M) B : Check if D=?H(M) |
Kab : A와 B의 비밀키 A->B : M, E(PRa, H(M)) B : check if H(M) =? D(PUa, E(PRa,H(M))) |
전자서명
전자서명은 메시지의 송신자를 인증하고 메시지의 무결성을 보호함
공개키 암호화 기법이 전자서명을 계산하는데 주로 사용됨
- 개인키를 통해 전자서명을 생성 / 공개키를 통해 전자서명을 검증
전자서명은 원본 메시지의 해쉬값을 개인키로 암호화한 결과값
전자서명의 검증은 전자서명을 송신자의 공개키로 복호화하고 그 결과값을 원본메시지의 해쉬값과 비교함
A : S=H(M) A : E(PUa,M) / 전자서명 A->B : M, E(PUa,M) B : J=H(M) B : check if J =? D(PRa, (E(PUa,M))) |
해쉬와 전자서명
A : S=E(PRa, H(M)) / 전자서명 A : Kab생성 A->B : E(Kab,M||S)||E(PUb,Kab) B : Kab= D(PRb,(E(PUb, Kab))) B : M||S = D(Kab, (E(Kab,M||S))) B : Check if H(M) =? D(PUa, S) |
메시지인증
MAC = 전자서명과 달이 부인봉쇄 불가(양쪽다 만들수 있기 때문에)
- 암호 소프트웨어는 속도가 매우 느리다.
- 암호 장비의 값을 무시하지 못한다.
- 암호 장비는 대용량 자료처리에 적합하도록 제작된다.
- 암호 알고리즘은 특허권에 의해 보호된다.
- 암호 알고리즘은 수출에 제약이 있다
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[데이터베이스]중간고사 시험 정리 (0) | 2014.10.14 |
---|---|
[세계문명과 성경2]중간고사 시험 정리 (0) | 2014.10.12 |
[인터넷보안]공개키 기반 환경 (0) | 2014.10.07 |
[알고리즘]깊이 우선탐색과 너비 우선탐색(1/2) (0) | 2014.10.07 |
인터넷보안 중간고사 정리((1장) (0) | 2014.10.07 |