2009/06/27 11:40
블록 암호화에서의 운영 모드
이미지의 출처는 위키피디아 입니다. (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation)

1. ECB (Electronic Code Block) Mode
- 가장 단순한 모드로 블록단위로 순차적으로 암호화 하는 구조이다.
- 한개의 블록만 해독되면 나머지 블록도 해독이 되는 단점이 있다. (Brute-Force Arttack, Dictionary Attack)
- 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해서 Padding을 해야한다.


- error propagation : 각 블록이 독립적으로 동작하므로 한블록에서 에러가 난다고 해도 다른 블록에 영향을 주지 않는다. 해당 블록까지 에러 전파.


2. CBC(Cipher Block Chaining) Mode
- 블록 암호화 운영 모드 중 보안 성이 제일 높은 암호화 방법으로 가장 많이 사용된다.
- 평문의 각 블록은 XOR연산을 통해 이전 암호문과 연산되고 첫번째 암호문에 대해서는 IV(Initial Vector)가 암호문 대신 사용된다. 이 때, IV는 제 2의 키가 될수 있다.
- 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 얻기 위해서 Padding을 해야만 한다.
- 암호화가 병렬처리가 아닌 순차적으로 수행되어야 한다. (단점이죵~)


- error propagation : 깨진 암호문의 해당블록과 다음블록의 평문까지 영향을 미치게 됩니다. 두번째 복호화 그림을 보고 Ciphertext가 깨졌을 때를 생각해보시면 이해가 되실꺼에요~


3. CFB(Cipher FeedBack) Mode
- 블록 암호화를 스트림 암호화처럼 구성평문과 암호문의 길이가 같다(패딩이 필요 없다)
- 최초의 키생성 버퍼로 IV가 사용되며, 이때 IV는 제2의 키가 될수 있다.
- 스트림의 기본단위를 Bit단위로 설정할 수 있으며, Bit단위에 따라 CFB8~CFB128로 쓰인다.
- 암호화, 복호화 모두 암호화로만 처리할 수 있다.
- CBC모드와 마찬가지로 암호화는 순차적이고, 복호화는 병렬적으로 처리할 수 있다.


- error propagation : CBC모드와 마찬가지로 한 암호문블럭의 에러는 해당평문블록과 다음 평문블록, 이렇게 총 2개의 블록에 전파된다.


4. OFB(Output FeedBack) Mode
- 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다.(패딩이 필요없다)
- 암호화 함수는 키 생성에만 사용되며, 암호화 방법과 복호화 방법이 동일해 암호문을 한번 더 암호화하면 평문이 나온다. (복호화시에 암호화)
- 최초의 키생성 버퍼로 IV가 사용되며, 이 때 IV는 제2의 키가 될수 있다.
- 스트림의 기본 단위를 Bit단위로 설정할 수 있으며, Bit단위에 따라 OFB8~OFB128로 쓰인다.


- error propagation : 해당블록까지만~ 대응되는 한 블록에만 영향을 미치므로, 영상이나 음성과 같은 digitized analog신호에 많이 사용된다.


5. CTR (CounTeR) Mode
- 블록을 암호화할 때마다 1씩 증가해 가는 카운터를 암호화 해서 키스트림을 만든다. 즉 카운터를 암호화한 비트열과 평문블록과의 XOR를 취한 결과가 암호문 블록이 된다.
- CTR모드는 OFB와 같은 스트림 암호의 일종이다.
- CTR모드의 암복호화는 완전히 같은 구조가 되므로 구현이 간단하다.(OFB와 같은 스트림 암호의 특징)
- CTR모드에서는 블록의 순서를 임의로 암/복호화 할 수있다.(비표와 블록번호로부터 카운터를 구할 수 있기때문에)
- 블록을 임의의 순서로 처리 할 수 있다는 것은 처리를 병행 할 수 있다는 것을 의미한다.(병렬처리 가능)

- error propagation : 각 블록이 병렬처리 되므로 같은 블록내에서만 이루어짐.

표준 대칭키 알고리즘의 종류

알고리즘

특징

소유국가

DES

64bit block

56bit key

미국

Triple DES

64bit block

112~168bit key

미국

BlowFish

64bit block

128bit key

미국

RC2

64bit block

128bit key

미국

RC4

Stream Cipher

미국

AES

128bit block

128~256 bit key

벨기에

SEED

128bit block

128bit key

한국

ARIA

128bit block

128~256bit key

한국



*Stream Cipher : 키의 길이가 유동적이며, 키의 길이가 길수록 안전성이 뛰어남.




Posted by 개발자 용이~
2009/06/27 11:28
얼마전에 보안회사에 취직을 하게되었습니다; 앞으로 보안쪽으로 공부를 하면서 정리를 해보려 합니다.

인터넷이 해결해야할 문제


통신상대의 동일성 확인 : 통신상대는 이름 그대로 진정한 상대인가?
통신 메시지의 기밀성 보장 : 통신내용은 제 2자의 도청위험성이 없는가?
통신메시지의 무결성 확인 : 통신내용인 도중에 변조 또는 개조되지 않았는가?
송수신 부인 방지 : 중요한 정보에 대해 통신 당사자가 쌍방의 송수신 책임이 명확한가?

암호란 ?
어떤 내용(정보)을 남모르게 전달하려고 쓰는 신호나 부호.
- 인간 세계에서 정보의 보호와 탈취는 계속적으로 이루어 졌음.
- 정보의 양이 많아질수록 정보보호의 필요성이 절대적으로 증가됨.
- 이에 따른 정보보호 기술도 고도화 되고 있음.

해커 공격의 종류(크게 나누면~)
Passive Attack : 정보를 도청하여 듣거나 그 결과로 얻은 정보를 사용하려는 시도. 데이터에 영향을 끼치지 않음
Active Attack : 전송중인 데이터를 수정하거나 가짜 데이터를 만드는 행위.


대칭키 암호 시스템(Symmetric Cipher System)
- 암호화 할 때 사용하는 키와 복호화 할때 사용하는 키가 동일한 암호 시스템.
- 이때 사용하는 키를 비밀키(Secret Key)라고 함.
- 일반적인 메시지(또는 파일) 암호화에 주로 활용되며, 빠른 암호화 속도가 장점.


대칭키 암호화의 종류

- 블록 암호화(Block Cipher)
평문을 블록단위로 나누어서 암호화를 진행하는 방식.
예전에는 64Bit단위로 암호화를 진행했으나, 현재 컴퓨팅 능력으로 해독할 수 있어 지금은 128Bit 또는 256Bit로 암호화를 진행함.
만약 128Bit(16Byte) 블록암호화 알고리즘으로 암호화를 진행하면, 일반적으로 암호문의 길이는 블록의 배수가 됨.

- 스트림 암호화(Stream Cipher)
난수 발생기를 통해 생성된 키 스트림을 암호화 연산에 참여시켜 암호화 패턴에 변화를 주면서 1비트씩 암호화를 진행하는 방식.
주로 실시간 음성, 영상 통신 암호화에 많이 사용됨.

다음에 블록암호화에 대해 이어집니다.



Posted by 개발자 용이~