암호학에서 블록 암호(영어: block cipher)는 기밀성 있는 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템이다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용된다. (예: ECB, CBC, OFB, CFB, CTR)

스트림 암호는 블록 암호와 달리 비트 단위로 암호화 하며 이 때 LFSR, NFSR과 같은 선형연산과 비선형 연산이 사용된다.

블록 암호에 대한 안전성 증명 방법으로는 선택평문공격인 차분 공격과 알려진 평문 공격인 선형 공격 등이 있다.

블록 암호 구조에는 파이스텔 구조와 SPN 구조가 있다.

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

한국에서는 개발된 암호 중에서는 파이스텔 암호 기반으로 설계된 SEED가 있다.

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

같이 보기 편집