-
앨리스, 밥(착한 친구들) vs 트루디(나쁜 친구들)
CIA(Confidentiality / Integrity / Availability)
Confidentiality(기밀성 또는 비밀성)은 비인가된 사람이 정보를 읽는 행위를 방지하는 것이다.
Integrity(무결성)은 비인가된 사람이 정보를 변경하는 행위를 방지하는 것이다.
Availability(가용성)은 언제 어디서나 쉽게 사용할 수 있는 성질을 말한다.
암호의 기본 지식
- 평문 + 키 => 암호화(암호문 생성)
- 암호문 + 키 => 복호화(평문 복구)
- 암호화, 복호화할 때의 키가 동일 : 대칭키(symmetric key) / 키가 다름 : 공개키
(키가 같아야 풀 수 있는 대칭키는 상식적으로 이해가 가지만 공개키는 직관적으로 이해하기 힘들다)
- 트루디(암호를 풀려는 나쁜 사람)가 키 없이 암호문을 풀어 평문을 복구하면, 그 암호는 break되었다고 한다.
- 기본적으로 키만 비밀이고 평문과 암호문은 숨기지 않아도 되는 방식이다.
- 커크호프 원칙 : 알고리즘(암호체계)은 이미 뚫렸다 생각하고 복호화시 필요한 키를 잘 보호하는 원칙
- '암호가 안전하다' 라고 불릴 때 : 키를 모든 경우의 수로 노가다해서 풀 수 있을 때
- '암호가 안전하지 않다' 라고 불릴 때 : 키를 푸는 지름길, 힌트가 있을 때
- 요즘 암호는 안전한지, 안전하지 않은지 잘 모른다. 알고리즘을 만드는 사람이 봤을 때 안전하다고 생각하고 내지만 푸는 트루디가 있기 때문에 확신을 못하는 거지.
고전 암호
단순치환암호
평문의 각 알파벳을 단순하게 n번 밀어서 각 알파벳을 치환하는 방식과 각 알파벳에 무작위로 다른 알파벳을 부여하는 방식이 존재한다.
n번 미는 것보다 랜덤으로 부여하는 방식이 키를 찾기 더 어렵지만 영어 문장의 특성을 이용하면 경우의 수를 많이 줄일 수 있다.
영어는 모음이 더 많기 때문에 빈도 수가 높은 것은 모음이라고 추정할 수 있다.
그리고 특정 알파벳 뒤에 다른 알파벳이 주로 나온다는 규칙을 활용하는 것이다.
예를 들어 t 뒤에는 h가 많이 나오는 규칙도 있고, 그 외 많은 규칙들을 넣는 것이다.
이중전위암호
각 알파벳을 단순치환암호처럼 치환하지 않고, 행렬에 넣어 행과 열을 섞는 방식이다.
순서는 달라지겠지만 알파벳 사용빈도 통계가 바로 드러나는 단점이 있다.
일회성암호
평문의 알파벳을 이진화시키고 키도 이진화시킨다.
각 자리를 exclusiveOR 로 풀어 나오는 이진수를 문자로 다시 변환하면 평문이 되는 방식이다.
이 암호의 단점은 키의 크기가 평문의 크기와 같다는 점이다. 즉, 평문이 길수록 키도 길어진다.
가장 치명적인 단점은 키가 발각되면 안되는 점이다.
애초에 키를 안전하게 보낼 수 있으면 차라리 평문을 안전하게 보내면 되는 문제지..
코드북암호
일련의 숫자와 단어가 대응되는 문서를 가지고 암호문을 푸는 방식.
123 : 사람
6554 : 위치
984 : 4
이런 식으로 의미없는 숫자와 단어를 대응시키는 문서가 있어야 암호문을 풀 수 있는 방식이다.
이 방식의 장점이자 단점은 코드북이 있어야 암호문을 푸는 것이다.
코드북을 잘 숨기면 최고지만, 들키면 바로 끝장이다.
세계 1차대전에서 독일이 패망한 이유도 영국이 독일의 코드북을 알았던 것이다.
반면 독일은 모르고 계속 사용하고 있었고.
'전공 > 컴퓨터보안' 카테고리의 다른 글
합성 암호체계(hybrid cryptosystem) (0) 2020.06.05 공개키 암호 - 디피헬먼(DH) (0) 2020.06.04 공개키암호 - RSA (0) 2020.06.04 공개키암호 - 배낭암호 (0) 2020.06.04 혼돈과 확산, 대칭키 암호 (1) 2020.06.04