Infomation_Security

Introduction to Cryptograph and Security

부산대보금자리 2021. 7. 16. 12:37

정보보안의 시작은 위협을 파악하는 것이다. 

보안의 3대 요소는 이렇게 3가지로 분류가 된다.

1. 기밀성(=Confidentiality)

2. 무결성(=Integrity)

3. 인증(=Authentication)

이 외에도 부인방지, 접근제어, 가용성 등이 있다.

 

현대의 암호화 기술을 보기전에 고전적인 방법부터 살펴보자. 

크게 4가지 정도로 알아볼수가 있다.

 

첫째로 Shift Cipher이다. 

직역하여 해석해도 의미가 맞다. 이는 주어진 평문을 Shift 하여 암호화가 이루어진다. 

여기서는 3칸을 이동시킨것을 알 수가 있다.

이러한 암호화 기법을 수학적으로 표현한다면 x+k(mod 26) => y이다.

실제로 이러한 Shift Cipher를 시스템에 적용하고 싶다면 mod연산을 이용하면 될 것이다.

이러한 Shift Cipher의 경우 공격이 쉬울 것이다. 

단지 26번의 Shift를 해봄으로써 공격이 완성이 되기 때문이다. 

 

공격에 대해서 알아보자. 

공격의 유형에는 무엇이 있을까? 

1. 암호문만 가졌다. 

2. 알려져 있는 평문을 가지고 있다. 여기선 어떠한 평문과 암호문의 관계를 알고 있다는 것이다.

3. 평문을 선택. 고른 평문에 대한 암호문을 얻을 수 있다.

4. 암호문을 선택. 고른 암호문에 대한 평문을 얻을 수 있다.

 

두 번째는 치환이다. 

치환에 대한 규칙에 담긴 예제이다. 

위의 Encryption Key를 통해 평문을 암호화시킬 수가 있다. 

기존의 Shift의 경우 26번의 공격으로 완성이 되었다면 이 경우 26! 의 경우가 나온다. 

 

26! 이면 상당히 많은 경우의 수이고 안전하다고 생각할 수 있지만 절대 그렇지 않다.

왜냐하면 언어의 특성 때문이다.

 

만약 암호화된 암호문을 보고도 이것이 영어이다 라는 것을 안다면 상황이 달라진다. 

 통계에 따르면 가장 많이 사용되는 알파벳은 e이다.

그리고 내가 가진 암호문의 가장 많은 알파벳이 W라고 한다면 W는 e일 가능성이 높아진다.

즉 26! 의 경우의 수는 그만한 가치를 가지지 못한다. 

 

세 번째 방법은 Playfair이다. 

Play라는 걸 봐서 일종의 알파벳 놀이와 같다고 짐작을 했었다. 

우선은 키워드를 정한다. 이 단어에는 중복된 것이 없다.

그리고 Key matrix table을 만든다. 

이는 초록색 칸을 보면 알겠지만 keyword를 그대로 적고 그 후에는 키워드에서 나오지 않았던

알파벳을 순서대로 적는다.

그리고 이 Table을 활용해서 평문의 알파벳을 가지고 두 글자씩 판단한다.

만약 그 알파벳이 같은 행에 존재하면 오른쪽 걸로 대체된다.

같은 열에 있다면 밑에 걸로 대체된다. 

위의 두 경우가 아니라면 

이와 같은 과정으로 변환된다. 

이 경우에는 나올 수 있는 경우의 수가 26*26이다.

경우의 수가 더 적지만 앞의 두 Cipher보다는 안전하다.

 

네 번째로는 Vigenere Cipher이다.

이는 간단한데 Substitution 되는 경우가 Table로써 제시된다.

여기서 key마다 다른 Substitution이 일어나며 어떤 key를 쓰냐에 따라서 다른 암호문이 생기므로

기존의 Substitution을 보완한 방법이라고 볼 수 있다.

key는 keyword형태로 평문과 같은 길이로 반복하여 생성이 된다.

이번에는 Transposition Cipher에 대해 알아본다.

Transposition은 위치를 바꾸는 것이다. 

가장 쉬운 예를 알아보자.

이는 Rail Fence라는 암호화 방법인데 해당 평문을 홀수, 짝수 index에 따라 배치하여 암호화가 된다.

또 다른 예를 보자

이는 key값을 사용하고 평문은 해당 key값의 길이만큼 반복하여 위치한다.

위처럼 배열된 평문은 key의 순서에 따라 암호화가 되어 나타난다. 

이를 Row에 따른 Transposition이라고 한다.

 

이 외에도 하드웨어 적으로 구현된 Rotor Machine이 있다.

구조가 복잡해 보인다. 

처음에 a가 b로 간다. 왼쪽의 하나의 줄이 하나의 링이다. 

이 링이 Rotation이 된다. 

그러면 처음에 a가 24 -> 24 -> 24였는데 맨 왼쪽의 ring이 rotation이 되면서 두 번째 ring의 24는

6과 연결이 된다. 

따라서 Ring의 rotation에 따라 알파벳이 다르게 나온다. 일종의 Substitution이다.

다음번에는 이러한 방법들을 활용한 발전된 암호화 기법을 알아보겠다. 

'Infomation_Security' 카테고리의 다른 글

공개키 암호와 RSA  (0) 2021.08.19
AES  (0) 2021.08.07
Block Cipher mode  (0) 2021.07.17
Block Cipher(블록 암호화)  (0) 2021.07.17
Stream Cipher  (0) 2021.07.16