본문 바로가기

정보보안기사/암호학

[암호학] 스트림암호 - 동기식vs비동기식

스트림 암호는 대칭 키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 데이터와 결합하는 구조를 가진다. 일반적인 스트림 암호는 유사난수를 1비트 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR하여 1비트의 암호화된 자료를 얻는다.

사진출처 : http://www.ddanzi.com/ddanziNews/3230042

 

* 대칭 키(공통 키) : 데이터를 주고 받는 모든 사람이 암호키와 복호화키를 가지고 있다.

 

스트림 암호의 안전성은 키 스트림이 어떻게 생성되는지에 따라 전적으로 결정된다.

 

안전성과 연계하여 생각해볼때 스트림 암호는 두 가지 종류로 나눠진다.

1. 동기식 스트림 암호

2. 비동기식(자기동기) 스트림 암호

 

스트림 암호를 이해하려고 할때 용어에 대해 내 머리속에 와닿지 않아 고민이 많았다.

한국은 한가지를 표현할때 여러 단어가 존재하고 그 단어들도 평소에 잘 쓰지 않는 단어들이다 보니 오히려 해당 지식을 얻는데 방해가 되는 큰요소이다.

동기식? 비동기식? 자기동기?

 

어떤 용어를 중점으로 이해를 하고 나머지는 그와 반대인 개념으로 용어를 집고 넘어간다면 다음에 까먹거나 다시 혼동이 오는 일은 덜할 것이다.

 

중요 포인트 용어 : 키 스트림(key Stream)

 

synchronous(동기식)라는 단어는 동시적인, 동시 발생적인 등의 뜻으로 해석이 되는 단어이며, 주로 어떤 상황들이 동시에 발생할때를 표현하는 단어로써, 동기식 스트림 암호는 키 스트림이 어떤한 것에 영향받지 않고 계속 생성하여 암호화에 사용된다라는 것이다.

반대로 비동기식 스트림 암호는 키 스트림이 암호문(복호화하려는 데이터)에 영향을 받아 복호화에 필요한 키 스트림을 생성하여 복호화가 이뤄진다.(키스트림을 생성할 때 암호화 키와 함께 이전에 암호화된 문자열 일부를 사용한다.)

* 글로써 이해하려면 어려우니 아래 사진을 보고 곰곰히 생각한 후 다시 위의 글을 읽어보자

 

사진출처 : http://blog.naver.com/PostView.nhn?blogId=bycho211&logNo=220980962315&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=true&from=search

 

 

LFSR(Liner feedback shift register) : 비동기식 스트림 암호의 대표적인 예로써, 레지스터에 입력되는 값이 이전 상태의 값들의 선형함수로 계산되는 구조이다. 시험대비 특징만 기억하자

1. 4비트 단위 상태 값 사용

2. 초기 값을 seed라 한다.

3. 선형 함수는 XOR(배타적 논리합)

4. 레지스터가 가질 수 있는 값은 유한적이며, 특정 주기에 의해 반복된다.

 

 

 * 자기동기 = 비동기 ( 시험에서는 여러용어를 혼합해서 사용하니 이점 주의해서 익힐필요가 있다.)

 

질문

1. 암호문이 전송도중 변경이 되어도 동기화가 가능? : 동기식, 비동기식에 관한 사항

=> 동기, 비동기 둘다 동기화가 가능하다. 

이유 : 여기서 동기화란 암호화나 복호화 시 키 스트림의 생성을 이야기 한다.

동기식 스트림 암호는 독립적으로 1비트 단위의 연속성 키 스트림을 생성하므로 앞에서 혹은 뒤에서 변조된 데이터의 값에 영향을 받지 않는다. 

비동기식 스트림 암호 역시 데이터가 변조되었다고 해서 키 스트림생성에는 영향을 안받는다. 즉, 변조되었다고 해도 그 변조된 암호문을 가지고 키 스트림을 생성(동기화)는 가능하다. 대신 복호화 할때 잘못된 값이 나오겠제.(여기서 말하는 질문의 요지는 변조된 값으로 인해 키 스트림 생성 자체가 불가하냐 가능하냐이므로)

 

2. 암호화와 복호화에서 상호 동기화가 필수? : 동기식에 관한 사항

=> 동기식 스트림 암호의 경우, 독립적으로 키 스트림을 생성하기때문에 지속적으로 양쪽에서 동기화(키 스트림 생성)가 이루어져야 한다. 즉, 암호화할때나 복호화할때 키 스트림 생성 구조에 대해 서로 입을 맞춰놔야 하기 때문이다. 

반면. 비동기식 스트림 암호의 경우, 암 · 복호화 시 이전 암호문을 가지고 키 스트림 생성이 이뤄지기 때문에, 상호 동기화가 무의미하다. 즉, 서로 입을 맞출필요 없이 이전 암호문을 기준으로 키 스트림이 생성되기 때문이다.

 

3. 변조된 암호문으로 인한 파급이 복호화에서 오류 파급력이 제한적?(복호화 시) : 비동기식에 관한 사항

=> 동기식 스트림 암호의 경우, 전송도중 변조되어도 후속 암호문에 오류의 영향이 파급되지는 않는다.

비동기식 스트림 암호의 경우, 변조된 암호문이 후속 암호문 복호화에 사용되지 않지만(즉, 복호화 시에는 후속 암호문이 복호화 모듈 내 키스트림생성에 기여하지 않으며 현재 복호화하려는 문장을 가지고 키스트림 생성을 한다.), 전체적인 데이터의 값 복원에는 오류가 발생할 수 있으므로 제한적인 답변이 어울리겠다.

 

4. 의도적인 변조가 복호화 단계에서 검출되지 않는가?: 검출 가능 - 비동기식, 검출 불가능 - 동기식

=> 동기식 스트림 암호는 받는쪽에서 처음 보낼때의 값을 모르는 것과 복호화 시 키 스트림은 이전의 암호화 값에 영향을 받지 않기 때문에 원래 이 값인지 변조된 값인지 알수 가 없다.

비동기식 스트림 암호는 복호화 시 키 스트림은 이전의 암호화 값을 가지고 생성하기에 복호화 시 어디에서 오류가 발생했는지 알아볼 수 있다.

쉽게 생각해서 당연히 전체 문자열을 복호화 해놓고 보면 오류가 발생했는지는 알수 있겠지만, 한문자 한문자에 대해서 복호화 시 컴퓨터는 비트 단위 논리적인 계산법을 이용하다 보니 인식할 수 없는 문자가 출력될 시 오류를 인식한다는 것이다. 

 

5. 전송 도중 변조되어도 후속 암호문에 오류의 영향이 파급 되지 않는가?(암호화 시) : 동기식에 관한 사항

=> 동기식 스트림 암호화는 오류의 영향이 파급되지 않음.

 

* 기타용어 : (내부)상태란 데이터의 연산작업과정에서 특정길이의 비트 값을 말한다. 

'정보보안기사 > 암호학' 카테고리의 다른 글

전자서명  (0) 2020.05.24
대칭키 - 블록암호 알고리즘  (0) 2019.03.03
대칭키와 공개키 비교  (0) 2019.02.20