Gae Ko's Blog

[암호] 블록암호(Block cipher) 본문

암호

[암호] 블록암호(Block cipher)

Gae Ko 2018. 1. 10. 02:55

※ 블록암호(block cipher)

   

블록암호는 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭.

각각 블록형태로 묶여서 암호화가 되는데 

만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용모드가 사용되는데 ECB, CBC, OFB, CFB, CTR 등이 존재. (운용모드에 관해서 '블록암호의 운용모드'에 정리)


블록암호 구조에는 페스탈(Feistel)구조와 SPN구조가 있다.

페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap)단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야한다는 단점이 있다. 대표적인 암호로 DES가 있고 Single DES는 안전성 문제로 현재 사용하고 있지 않다.

(한국에서는 개발된 암호 중에서는 페스탈 구조기반으로 설계된 *SEED가 있음)


SPN구조는 암복호화 과정에서 역함수가 필요하도록 설계되어야한다는 단점이 있지만 중간에 비트의 이동없이 한 번에 암볻호화가 가능하기 때문에 페스탈 구조에 비해 효율적으로 설계할 수 있다. 대표적인 암호로는 AES가 있으며 AES는 현재 널리 상용되고 있다.


블록암호는 어떤 방식으로 암호화 될까?


앞서 블록 형태로 묶여서 암호화가 된다고 하였는데

평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용하여 암호화함.

일반적으로 블록의 크기는 8비트(ASCII) 또는 16비트(Unicode)에 비례.


블록암호 방식을 사용하는 암호 알고리즘은 DES, 3DES, AES(Rijdael) 등이 있음.



※ 스트림암호


스트림암호는 OPT(One-Time Pad)를 실용적으로 구현할 목적으로 만들어짐.

데이터의 흐름(스트림)을 순차적으로 처리해가는 암호 알고리즘의 총칭.

암호화 방식은 평문과 키 스트림을 XOR하여 생성.

그니까 평문을 이진수로 바꾼 결과와 이진수로 되어있는 키값을 XOR하여 암호문을 만든다.


비트단위로 암호화 하기 때문에 블록암호화 방식보다는 매우 빠르지만 

암호화 강도는 약하다.


'암호' 카테고리의 다른 글

[암호] AES  (0) 2018.01.15
[암호] 블록암호의 운용모드  (0) 2018.01.15
[암호] XOR 블록암호 구현하기  (0) 2018.01.11
[암호] DES  (0) 2018.01.10
현대암호에 대해서 공부하게 됨!  (0) 2018.01.10