Home

오늘의 기억

[보안] 블록 암호 (Block Cipher)


블록 암호 (Block Cipher)

블록 암호란 데이터를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템이다. 만약 암호화 대상 데이터가 블록의 길이보다 길 경우 특정한 운용 모드가 사용된다. (ex. ECB, CBC, OFB, CFB, CTR 등..) 또한 블록 암호는 키의 크기에 따라 64 ~ 256 비트 블록 크기로 연산을 수행한다.


종류

블록 암호는 암호화 하는 알고리즘 방식에 따라 페스탈 블록 구조와, SPN 블록 구조로 구분된다.

페스탈 블록 (Feistel Block)

입력되는 평문 블록을 좌우 두 개 블록으로 분할하고, 좌측 블록을 페스탈 함수라 불리는 라운드 함수를 적용하여 출력된 결과를 우측 블록에 적용하는 과정을 반복적으로 수행한다.
또한 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap) 단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다.
대표적인 암호로는 DES가 있으며 Single DES는 안정성 문제로 현재 사용하고 있지 않다.

SPN 블록

평문 블록을 분할하지 않고 전체 블록을 적용하는 방식으로 라운드 함수의 역함수를 구해야 하는 어려움이 있는 구조지만 컴퓨팅 속도의 발전으로 어려움을 극복할 수 있게 되었고, 중간에 비트의 이동 없이 한 번에 암복호화가 가능하기 떄문에 페스탈 구조에 비해 효율적으로 설계할 수 있다.
대표적인 암호로는 AES가 있으면 AES는 현재 널리 상용되고 있다.


DES

56비트라는 작은 암호화키로도 암호화를 깰 수가 있다. 이를 보완하여 3DES가 나왔지만, 기본 알고리즘은 DES와 동일하다.

AES

DES를 대체하기 위해 나왔으며, 키의 크기는 128, 192, 256 비트를 지원하고, 암호 블록 크기는 128비트이다. 아직까지는 해독 된 사례가 없어서 안정성이 보장 된 알고리즘이라 할 수 있다.


같이 보기

20190522 Charyum.Park