1. 암호화
- 의미를 알 수 없는 형식으로 정보를 변환하는 것
- Data를 보호하기 위해 내용을 은닉시킴 (기밀성을 위해)
- 해석 불가 - 코드화와의 차이점
2. 코드화
- 내용을 압축 또는 안전하게 전달하기 위해서
- 해석이 가능한 사람에게는 은닉X
3. 정보보호의 3요소
- 기밀성
- 무결성
- 가용성
4. 위치치환 - 시저암호
a) 최초의 암호 - 알고리즘을 가지고 있는
b) 단점
- 평문과 암호문이 노출
- key space가 짧다 (26번 만에 평문을 알 수 있음) - 암호의 강도를 결정짓는 요소
5. Key ( O ) - 현대
a) Key Space가 크고 Key Life Time이 짧을수록 암호로서의 강도가 높다
b) 대칭키와 비대칭키
* 대칭키 - 암호화와 복호화 하는데 사용되는 Key가 같다.
1) DES, 3DES, 시드(우리나라)
2) 비대칭에 비해 처리속도(암호화, 복호화)가 빠르다
- 통신분야 사용 - 속도중요!! (상대적으로 10~1000배정도 빠르다.)
3) Data의 Size 증가가 X
4) KEY 동기화 과정이 필요
- KEY 동기화 과정에서 공격자의 개입이 있을 시 보안상 문제 발생
5) 엔티티 한 명이 포함될 때마다 관리해야 할 KEY의 수가 증가 [ n(n-1)/2 씩 증가 ]
6) KEY Space를 늘려서 경우의 수를 증가하여 Brute Force공격에 대비
(범위가 한정되어 있기 때문에 Brute Force에 취약)
7) KEY Life time이 짧을수록 암호화의 강도가 높다
8) DES, AES(미국 산업 표준), SEED
* 비대칭키 암호화와 복호화 하는데 사용되는 Key가 다르다 (공개키, 개인키)
1) RSA
2) Public Key, Private Key
- 통신상에서 서로의 Public Key를 주고 받음 (Private Key는 각각의 개인들이 소유)
---> 노출 (x) 되면 안된다.
- Private Key로 암호화 된 것은 그 사람의 Public Key로만 복호화 할 수 있다.
---> 누구나 사용할수 있다. 공개 O
3) 장점 : 중간에서 잡아서 분석할수 없다.
4) Data의 Size의 증가 O
5) 대칭키 방식에 비하여 속도가 느리다
6) MITM 공격에 취약하다
- 각각 상대방의 Public Key라고 생각하는 공격자의 Public Key를 전송
- 공격자가 상대방의 Public Key를 획득하면 이 후에 오가는 Data를 볼 수도 있고
변조도 가능해진다.
(사이에서 공격자의 Private Key로 암호화하여 전송)
7) 인증이나 부인방지에 사용
8) 대칭키의 Key동기화 메커니즘을 보완
* Key 동기화
- Manual : 직접적으로 찾아가 알려주는 방식. 관리자가 허용한 엔티티들에게만
Key를 알려준다.
(AP의 WEP KEY 교환이 대표적)
- Key-Wrapping(Hybrid방식) : Key를 감싸서 보내주는 방식. 비대칭키 방식을
사용하여 동기화
1_ Key를 Private Key로 암호화 하여 상대방에게 전송
2_ 주고 받은 Public Key를 이용하여 복호화
3_ 이 후에는 Key를 이용한 대칭키 방식 사용
4_ 동기화 과정에서 공격자의 개입이 있을 시 문제 발생 (MITM 공격에 취약)
---> Public Key를 인증할 수 없으므로 이걸 해결하기 위해 공인인증서
사용 (X.509)
5_ SSH v1에서 사용
6_ 문제점
- MITM 공격
- A는 위와 마찬가지로 B에게 Public Key 를 요청한다.
- 가운데 있던 M 은 B가 전송하는 Public Key 를 가운데서 스니핑한다.
- 스니핑 뒤에 A 에게는 M's Public Key 를 전송해준다.
- A는 B'Public Key 인줄 알고 받은 M's Public Key 로 Session Key 를 암호화한다.
- 암호화 된 Session Key 를 B에게 전송하지만 M에 의해서 스니핑 된다.
- 이를 받은 M 은 자신이 가진 M's Private Key 로 복호화를 해서 Session 키를 획득한다.
- 이 상태에서 B는 자신이 보낸 B's Public Key 로 암호화 된 Session Key 를 기대하고 있으므로 M은처음에 스니핑 했던 B's Public Key로 Session Key 를 다시 암호화 한뒤 B에게 전송한다
- B는 자신이 기대했던 자신의 Public Key 로 암호화된 Session Key 가 왔으므로 자신의 Private Key 로 복호화를 하여 Session Key 를 획득한다.
- 이 후 부터는 A와 B 는 Session Key 를 가지고 있으므로 이를 가지고 암호화하여 통신을 하게되며, 가운데 있는 M은 Session Key 를 가지고 있으므로 데이터를 스니핑 한 뒤에 복호화해서 볼 수 있다.
- Diffie-Hellman
1_ 직접적인 Key교환이 이루어지지 않아도 Key를 공유할 수 있다
2_ SSH v2에서 사용
3_ 1<g<n 를 만족하고 소수인 g와 n 생성 (공개) - MITM 공격을 받더라도
경우의 수가 크면 Key를 알아내기가 어렵다
- Brute Force로 Session Key가 유출될 시점에는 다시 Key를 바꾸어서 사용
- 소수 : mod연산 시 0이 나오지 않게 하기 위하여
A와 B는 각각 x, y라는 난수 생성 (비공개)
Y <==> X x∙Y mod n = Key y∙X mod n = Key
A B
g∙x mod n = X g∙y mod n = Y
* Session Key
1) Client와 Server가 연결 시 연결된 Session에서만 생성된 Key를 사용하고
session이 종료되면 폐기 (일회성)
2) 만약 다시 연결 시 새로운 Session Key 생성
3) 보통 대칭키 사용
6. Key ( X ) - 과거
a) 암호화 알고리즘의 비밀성에 의존 (공개되면 암호로서의 가치 X => 코드화가 됨)
b) 시져 암호 : 위치치환 암호
- 평문과 암호문이 모두 노출. 암호문을 보고 평문 추측하거나 얻을 수 있음
- 26번 만에 평문이 나오게 됨 (Key Space : 26 => Key Space가 짧다)
(Key Space의 길이는 암호의 강도를 뜻한다)
c) 수레바퀴 암호
d) 이니그마 (Enigma) : 독일군이 사용한 암호화 기계
'Hacking > 암호학' 카테고리의 다른 글
MD5 is Dead (0) | 2009.11.08 |
---|---|
공인인증서 (0) | 2009.10.25 |