* Crypto(암호체계)
- 평문을 암호화 하는데 사용하는 것
- 키와 알고리즘으로 나눠져 있다.
- 암호체계(알고리즘)은 공격자 및 일반 사람 모두에게 공개 되있다.
- 키는 암호체계에서 암호를 Unique하게 해주는 비밀 값이다.
- 키를 통해서 평문을 암호문으로 만들거나 암호문을 평문으로 만들 수 있다.
- Kerckhoffs Priniple
> 암호 알고리즘은 비밀이 아니다.
> 현재까지 경험상, 암호 알고리즘은 언젠가는 밝혀진다.
> 암호 알고리즘의 변경은 힘들지만, 키의 변경은 간단하다.
> 키가 변경되면 암호체계가 변경되고, 새로운 암호가 된다.
* 고전적 암호 알고리즘
ⓐ 단순 치환
- 알고리즘 : 알파벳의 순서를 Key값 만큼 Shift하여 위치를 변경하여 작성한다.
- Key값 : 얼마만큼 알파벳의 순서를 변경 할 것인가?
ex) 평 문 A B C D E F .... Z (Key : 5)
암호문 V W X Y Z A .... U
- 이 경우는 알파벳의 숫자인 26개의 경우의 수에 대해 대입해보면, 암호가 풀리게 된다.
※ 암호를 푸는 확실한 방법(1)
- Exhaustive key search : 경우의 수에 대해서 모두 대입해본다. (즉, 경우의 수(키)가 많아지면, 찾기가 힘들다.)
ⓑ 단순 치환의 Upgrade
- 알고리즘 : 알파벳의 순서와 무관하게 대칭시켜 작성한다.
- Key값 : 어떤 형식으로 대칭 되어있는가?
ex) 평 문 A B C D E F .... Z
암호문(Key) K I M N O S .... Y
- 이 경우에는 나올수 있는 알파벳 쌍의 개수인 26!의 키가 생성되게 된다.
- 이 치환 알고리즘은 실제로 26!에 대한 모든 경우의 수를 할 필요가 없다.
※ 암호를 푸는 방법(2)
- 암호를 풀 수 있는 힌트를 찾아본다.
- 대칭 암호문의 경우에는 알파벳의 빈도수를 통해 예측해볼 수 있다.
ⓒ 이중전위(Double Transposition)
- 알고리즘
1) 2차원 배열에 문장을 늘어 놓는다.
2) 행을 임의로 교환한다.
3) 열을 임의로 교환한다.
- Key값 : 문장을 넣은 행렬의 크기, 바꾼 행과 열의 순서쌍
ⓓ 일회성 암호
- 알고리즘
1) Key값을 random하게 생성하여 평문과 key값을 XOR한 결과값을 보낸다.
- Key값 : 생성된 임의의 Key stream
※ Q. 이 경우 Key값도 상대방에게 함께 보내줘야한다. Key값을 안전하게 보낼 수 있다면, 암호화가 필요할까?
ⓔ 코드북(CodeBook)
- 난수표라고도 불린다.
- 문자열의 순열 치환과 다르게 워드로 맵핑한다.
- 문자열을 특정 숫자나열과 맵핑한다.
- 치환알고리즘과 다르게 빈도수로도 유추가 불가능 하기 때문에 코드북이 복화하기 찾기가 힘들다.
* 암호체계의 안전성 평가
- 암호를 해석하기 위해 최선의 공격방법이 모든 키를 다 시도해보는 것(Exhaustive key search)일 때 암호 체계는 안전하다.
- 암호를 해석하는데 지름길(위의 예에선 통계/빈도수 파악)이 있다면 불안전하다고한다.
* 실세계의 암호 사용 예
ⓐ Project VENONA(일회성 암호)
- 소련 스파이가 미국에 일회성 암호를 반입하여, 핵 무기에 대한 첩자행위를 한 것
- 일회성 암호를 중복/반복해서 사용하여 암호 해석이 가능하게 되여 뒤를 잡히게 되었다.
- 1944년에 잡히게 된다.
ⓑ Zimmerman Telegram(Codebook)
- 세계 1차 대전때에 독일이 멕시코를 자신의 편에 끌어 들이기 위해서 코드북을 사용해 암호화된 문서를 보냈다.
- 러시아가 습득(?)한 코드북을 이용하여 부분적으로 해독하여 영국에 넘기면서 알려지게 되었다.
ⓒ Spartan Scytale(전위 암호)
- 종이를 한 줄을 적을 수 있게 길게 자른다.
- 긴 종이를 특정 지름을 가진 원통에 둘둘 말고, 일상에서 글쓰듯이 옆으로 써 나아갔다.
- 원통의 지름을 모르면 해석하기 힘들었다.
ⓓ Caesar's cipher (치환 암호)
- 위에서 나온 간단한 치환 암호 방식을 시저가 사용했었다.
ⓔ 미국의 1876년 선거때 코드북을 이용하여 암호화하여 사람을 매수하려고 했었었다.
- 부분적인 단어를 코드북을 이용하여 다른 말로 변화하였고, 어순을 바꾸었다.
- 코드북 + 전위 암호
ⓕ 세계 2차대전때에 암호학을 위한 기계등이 나오면서 전문가 시스템들이 발견되면서, 암호학의 황금기를 맞는다.
* Claude shannon
- Claude shannon : 정보이론의 창시자로, 혼돈과 확산이라는 단어를 이용하여 여러가지 사상을 전파하였다.
> 암호는 혼돈 또는 확산을 가지고 있다.
> 혼돈(confusion) : 평문과 암호문과의 관계를 감추는 것(1회성 암호)
> 확산(Diffusion) : 평문의 순서를 변화해서 암호문을 만드는 것(이중 전위)
* 암호해석 방법
- 암호문 공격(알고리즘과 암호문 만 주어질 경우) : 풀기 가장 힘든 암호문이다.
- 알려진 평문 공격(평문에 대응하는 암호문을 약간 알 수 있는 경우) : 암호문 공격보다 쉽다.
> Header등과 같이 항상 사용되는 형식도 암호화가 같이 되기 때문에 이를 이용하여 해독을 시도한다.
> Header의 구성 및 단어를 이미 잘 알고 있으므로, 이에 대응하는 암호문을 보고 유추
- 선택된 평문 공격(자신이 아는 평문을 암호화하여 우추한다) : 쉬운 편이다.
> 암호화에 사용되는 것을 모르지만, 암호화 하는 기계가 있을때, 자신이 잘 아는 단어, 문장을 그 기계에 적는다.
> 이때 나온 암호문을 수집, 비교하여 암호화 과정을 유추해 나간다.
- 적응적 선택된 평문
- 상관 있는 키 공격
- 순방향 탐색
- 기타 등등...