본문 바로가기
Computer Security

암호에 대한 이해 - 대칭키 암호 알고리즘

by Doromi 2017. 12. 8.
728x90
반응형

암호는 평문(plaintext)를 키를 이용해 암호화(Encryption)시키면 암호문(ciphertext)가 되고 또 키를 이용해서 복호화(Decryption)시키면 평문이 됩니다.

 

정보 은닉이란 말로 스테가노그래피가 있습니다. 이는 실제로 전달하고자 하는 정보 자체를 숨기는 것입니다.

'덮다'는 뜻의 그리스어 '스테가노스'와 '쓰다'라는 뜻의 '그라페인'이 합쳐진 말입니다.

 

전치법은 단순히 메시지에 있는 문자의 위치를 바꾸는 방법으로 일정 굵기의 봉에 종이를 두르고 여기에 전달하고자 하는 문장을 쓴 뒤 종이를 풀어 전달 후, 이때 봉의 굵기를 함께 알려 줍니다. 종이를 받은 사람은 이를 같은 굵기의 봉에 두른 후 암호문 해석을 합니다. 암호화 알고리즘은 종이를 봉에 두르는 것이고 키는 봉의 굵기가 되죠.

 

대체법은 해당 글자를 다른 글자로 대체하는 겁니다. 시저의 암호화 방법으로 알파벳 26글자를 3글자 오른쪽으로 이동해서 대체합니다. 암호화 알고리즘은 3칸씩 뛰고 매핑하는 것이고 키는 3이라는 수가 되죠.

모노알파베틱은 단일 치환 기법으로 알파벳 26글자를 각각 다른 알파벳에 대응합니다. 규칙 없이 임의의 문자에 말입니다.

 

하지만 단일 치환 기법은 빈도수 분석법으로 복호화가 가능합니다. 빈도 분석법이란 알파벳 26글자가 문장에서 통계적으로 비슷한 빈도수를 가진다는 점으로 착안을 했는데요. 평문에 등장하는 문자의 빈도와 암호문에 나오는 문자의 빈도가 일치합니다.

 

● 현대암호

데이터의 기밀성

사용자 인증

데이터 무결성 인증

 

● 대칭 암호화 방식

암호학적 강도(안전성)는 혼돈과 확산의 정도로 측정합니다.

혼돈이란 암호문의 통계적 성질과 평문의 통계적 성질의 관계를 난해하게 만드는 성질(얼마나 독립적인가)

확산이란 각각의 평문 비트와 키 비트가 암호문의 모든 비트에 영향을 주는 성질(2진코드로 1bit차이나는 글이

암호문에선 16bit 다 차이나는 것)

 

☞DES(Data Encryption Standard)

  16개의 회전(또는 라운드)을 갖는 페이스텔 암호

                                     페이스텔 암호란? 블록 암호 설계의 한 형태

                                                  블록 암호란? 평문을 블록으로 쪼개서 이전 블록의 암호문과 키를 이용해

다음 블록 암호문 생성(1번째 암호문이 2번째 암호할 때 input값으로 들어가게 됩니다.-> 매번 새로 다른 암호문을 생성.

 

  64비트의 블록 암호화 알고리즘

  56비트 크기의 암호화 키 사용

 

DES 암호화 과정입니다. DES 복호화 과정입니다.

 

S-box를 이용해서 혼돈과 확산을 만들고 총 16회 반복합니다.

 

 

S-box에서는 48bit를 6bit씩 8개의 블록으로 나눈 후에 Substitute(대체) 후 4bit의 정보만을 가져와서 32bit를 내보냅니다.

P-box에서는 permutation(순서바꾸기)가 이루어집니다.

S,P box는 어떻게 이루어지는지 밝혀져도 상관이 없습니다.

단지 평문과 암호문의 통계적 성질을 줄이기 위해서 혼돈과 확산을 할 뿐입니다. key는 XOR입니다.

암호의 목적은 데이터 기밀성을 하는 것이 가장 큰 목적입니다. 기밀성이란 데이터를 감추는 것이죠. DES에서 내용을 감추는 역할을 하는 건 XOR입니다.

 

DES는 마음만 먹으면  56bit가 가질 수 있는 모든 경우를 다 대입해서  56시간 만에 복호화가 가능합니다.

 

☞Triple DES

DES의 복호화가 가능해짐에 따라 AES가 나오기 전까지 임시로 사용한 암호 알고리즘

2개의 암호화 키를 사용(112bit key, k1 56bit + k2 56bit)

ciphertext = E(D(E(P,k1),k2),k1)

plaintext = D(E(D(C,k1),k2),k1)

 

왜 2개 키로 암호화-복호화-암호화(EDE)하는가?

키를 112비트로 늘리면 키가 가질 수 있는 경우의 수가

가지가 되므로 안정성을 보장해 주지 않을까

 

왜 Double-DES는 없는가?

Double-DES는 plaintext를 k1으로 암호화 하면 ciphertext-1을 만듭니다. k1이 56bit이기 때문에 어떤 plaintext에서 ciphertext-1이 만들어 질 수 있는 경우의 수는 가지 입니다. c-1을 찾은 후에 그 값에서 k2를 사용해서 ciphertext를 만듭니다.

 

 

 

공격자는 몇번 시도를 하면 double DES를 깰 수 있을까?

어떤 평문에서 c-1에 이룰 수 있는 가지를 try한 것이고 어떤 암호문 c에서 부터 다시 만큼의 try를 해서 앞에 꺼와 같은 c-1을 찾아냈기 때문에 총 수행한 경우의 수는 +입니다. 56bit짜리 키를 2개를 사용했음에도 불구하고 기대하는 경우의 수는 경우의 수인데 공격자가 만 try하면 깰 수 있다는 얘기입니다. doubleDES가 안되는 이유가 결과적으로 중간에 c-1이라는 지점에서 같은 값을 가졌기 때문에 찾아낼 수가 있다는 것입니다. c-1에서 한번 더 암호화를 하면  또 가지의 경우의 수가 생겨나서  c-1 지점을 찾아낼 수가 없기 때문에 tripleDES는 안전하다는 얘기입니다.

 

대칭키 암호 알고리즘의 장점

☞ 굉장히 빠릅니다. shift,XOR 이 연산이 다입니다. 구현이 간단합니다.

 

대칭키 암호 알고리즘의 단점

☞ 암호화 키와 복호화 키가 같기 때문에 어떤 사람과 통신할 때 둘만의 키를 만들어야 하고 다른 사람과 통신하려면 또 키를 만들어야 합니다. 사용자 수가 늘어나면 늘어날수록 비밀키의 갯수가 증가하게 되고 어떻게 안전하게 보낼것이냐(키의 분배)가 굉장히 어렵습니다. 키를 비밀로 유지해야하는 것도 어렵죠...키관리가 매우 힘듭니다.

 

이 키관리를 좀 더 효과적으로 할 수 없을까해서 나온 것이 비대칭 암호 시스템입니다.

이건 다음 글에서 공부해 보겠습니다~

728x90
반응형