제 4 장블록암호모드
4.0 주요내용 블록암호의모드 (Mode) 에대해설명하도록한다 임의의길이의평문을하기위해서는평문을일정한길이를갖는블록으로나누고각블록에블록암호를반복적용하여를할필요가있다. 블록암호를반복하는방법을블록암호의 모드 라고한다. 블록암호의주요모드인 ECB, CBC, CFB, OFB, CTR 에대해서차례대로설명하도록한다.
4.1 블록암호모드 평문의길이가블록암호의블록크기보다클경우에는어떻게블록암호를적용할것인가? 이런문제점을해결하고다양한응용환경하에적절한도구로사용할수있는여러유형의효율적인운영방식들을제시하고있다. 이러한방식들을블록암호모드라고한다.
4.1.1 블록암호와스트림암호 블록암호 (block cipher) 어느특정비트수의 집합 을한번에처리하는암호알고리즘 이 집합 을블록 (block) 이라고한다. 블록의비트수를블록길이 (block length) 라고한다. 스트림암호 (stream cipher) 데이터의흐름 ( 스트림 ) 을순차적으로처리해가는암호알고리즘 스트림암호에서는 1 비트, 8 비트, 혹은 32 비트등의단위로와복호화가이루어진다.
4.1.2 모드란 긴평문을하기위해서는블록암호알고리즘을반복해서사용하여긴평문전부를할필요가있다. 이와같이반복하는방법을블록암호의모드 (mode) 라고부른다.
블록암호의주요모드 ECB 모드 : Electric CodeBook mode( 전자부호표모드 ) CBC 모드 : Cipher Block Chaining mode( 암호블록연쇄모드 ) CFB 모드 : Cipher-FeedBack mode( 암호피드백모드 ) OFB 모드 : Output-FeedBack mode( 출력피드백모드 ) CTR 모드 : CounTeR mode( 카운터모드 )
4.1.3 평문블록과암호문블록 평문블록 블록암호알고리즘에서의대상이되는평문을말한다. 평문블록의길이는블록암호알고리즘의블록길이와같다. 암호문블록 블록암호알고리즘을써서평문블록을한암호문을말한다.
평문블록과암호문블록
4.2 ECB 모드 평문블록을그대로하는것이 ECB 모드이다. 간단하지만약점이있어서별로사용되지않는다.
ECB 모드와다른모드의차이
4.2.1 ECB 모드란 ECB 모드에서는평문블록을한것이그대로암호문블록이된다 동일한내용을갖는평문블록은이에대응되는동일한암호문블록으로변환된다
ECB 모드의특징 가장간단한것이다 가장기밀성이낮은모드이다. ECB 모드에서는평문블록과암호문블록이일대일의관계를유지하게된다. 암호문을살펴보는것만으로도평문속에패턴의반복이있다는것을알게되며, 이것을실마리로암호해독을할수있게된다. 이모드는안전하지않다.
ECB 모드 ( 전자부호표모드 )
ECB 모드 ( 전자부호표모드 )
ECB 모드에대한공격 ECB 모드에서는모든평문블록이각각개별적으로되고, 복호화때에는개별적으로복호화된다. 적극적공격자인맬로리가악의를가지고암호문블록을서로바꾸었다면, 수신자가그암호문을복호화하면바뀐암호문블록에대응하는평문블록도바뀌게된다
4.3 CBC 모드 블록암호의모드로서다음에소개하는것은 CBC 모드이다. CBC 모드에서는 1 개앞의암호문블록과평문블록의내용을뒤섞은다음를수행한다. 이것으로 ECB 모드의약점을회피할수있다.
4.3.1 CBC 모드란 CBC 모드는 Cipher Block Chaining 모드 ( 암호블록연쇄모드 ) 의약자이다. 암호문블록을마치체인처럼연결시키기때문에붙여진이름이다. CBC 모드에서는 1 단계앞에서수행되어결과로출력된암호문블록에평문블록을 XOR 하고나서를수행한다 따라서생성되는각각의암호문블록은단지현재평문블록뿐만아니라그이전의평문블록들의영향도받게된다.
초기화벡터 최초의평문블록을할때는 1 단계앞의암호문블록 이존재하지않으므로 1 단계앞의암호문블록 을대신할비트열인한개의블록을준비할필요가있다. 이비트열을초기화벡터 (initialization vector) 또는앞글자를따서 IV 라고부른다. 초기화벡터는비밀키와마찬가지로송신자와수신자간에미리약속되어있어야하지만공개된값을사용해도무방하다. 또한초기화벡터는때마다다른랜덤비트열을이용하는것이보통이다.
패딩 실제 CBC 모드를적용할경우에될평문의길이는가변적이기때문에마지막블록이블록의길이와항상딱맞아떨어지지않게된다. 이경우에는부족한길이만큼을 0 으로채우거나임의의비트들로채워넣는다.
마지막블록채우기
CBC 모드 ( 암호블록연쇄모드 ) 평문 평문블록 1 평문블록 2 평문블록 3 평문블록 4 평문블록 1 평문블록 2 평문블록 3 평문블록 4 IV 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 암호문 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4
CBC 모드 ( 암호블록연쇄모드 ) 암호문 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 복호화 복호화복호화복호화 IV 평문블록 1 평문블록 2 평문블록 3 평문블록 4 평문 평문블록 1 평문블록 2 평문블록 3 평문블록 4
ECB 모드와 CBC 모드의비교 ECB 모드 CBC 모드 평문블록 1 평문블록 한단계앞의암호문블록 암호문블록 1 암호문블록
CBC 모드의특징 평문블록은반드시 1 단계앞의암호문블록 과 XOR 을취하고나서된다. 따라서만약평문블록 1 과 2 의값이같은경우라도암호문블록 1 과 2 의값이같아진다고는할수없다. 따라서 ECB 모드가갖고있는결점이 CBC 모드에는없다. CBC 모드에서는도중의평문블록만을뽑아내서할수는없다. 암호문블록 3 을만들고싶다면적어도평문블록의 1, 2, 3 까지가갖추어져있어야만한다. CBC 모드의암호문블록이 1 개파손되었다면, 이때암호문블록의길이가바뀌지않는다면복호화했을때에평문블록에미치는영향은 2 블록에머문다
CBC 모드에서암호문블록이파손되면 2 개의평문블록에영향을미친 다 암호문블록이파손된암호문을복호화한경우 (CBC 모드 ) 깨진암호문 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 복호화 복호화복호화복호화 IV 평문블록 4 평문블록 3 평문블록 2 평문블록 1 영향을받는평문
CBC 모드에대한공격 적극적공격자맬로리가암호문을고쳐써서수신자가암호문을복호화했을때의평문을조작하고싶어한다고해보자. 만약맬로리가초기화벡터의임의의비트를반전 (1 이라면 0, 0 이라면 1 로 ) 시킬수있다면, 암호블록 1 에대응하는평문블록 1( 복호화되어얻어지는평문블록 ) 의비트를반전시킬수있다.
CBC 모드에서암호문블록에서비트누락이생기면그이후 의평문블록전체에영향을미친다 비트가누락된암호문 영향을받는암호문 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 복호화 복호화복호화복호화 IV 평문블록 1 평문블록 2 평문블록 3 평문블록 4 영향을받는평문
CBC 모드에대한공격 ( 초기화벡터 의비트반전 ) 초기화벡터의비트를반전시켜평문블록의비트를반전시키는공격 (CBC 모드 ) 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 복호화 복호화복호화복호화 IV 평문블록 1 평문블록 2 평문블록 3 평문블록 4 해당비트가반전된다
CBC 모드에서초기벡터의비트반전 에대한영향 초기벡터 IV 에비트반전이없을경우 초기벡터 IV 에비트반전이없을경우 10011001 10011001 초기벡터 IV 복호화 초기벡터 IV 복호화 10101110 10001111 비트반전 00110111 00010110 영향을받아반전된비트
CBC 모드활용의예 IPsec 에는통신의기밀성을지키기위해 CBC 모드를사용하고있다. 예를들면트리플 DES 를 CBC 모드로사용한 3DES- CBC 나, AES 를 CBC 모드로사용한 AES-CBC 등이여기에해당된다. 인증을수행하는대칭암호시스템의하나인 Kerberos version 5 에서도사용하고있다.
앨리스가만든 CBC 모드비슷한것 앨리스가생각해낸 CBC 모드비슷한것은어떤성질을가지고있는가? 평문블록 1 평문블록 2 평문블록 3 평문블록 4 IV 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4
4.4 CFB 모드 절대로해독할수없는암호인일회용패드라는암호를 XOR 의연습을겸해서소개하도록한다
4.4.1 CFB 모드란 CFB 모드는 Cipher FeedBack 모드 ( 암호피드백모드 ) 의약자이다. CFB 모드에서는 1 단계앞의암호문블록을암호알고리즘의입력으로사용한다. 피드백이라는것은, 여기서는의입력으로사용한다는것을의미한다
CFB 모드 ( 암호피드백모드 ) CFB 모드에의한 IV 평문블록 1 평문블록 2 평문블록 3 평문블록 4 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4
CFB 모드 ( 암호피드백모드 ) CFB 모드에의한복호화 IV 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 평문블록 1 평문블록 2 평문블록 3 평문블록 4 초기벡터를복호화하는것이아니라라는점에유의하기바란다.
CBC 모드와 CFB 모드의비교 CBC 모드 CFB 모드 평문블록 평문블록 한단계앞의암호문블록 한단계앞의암호문블록 키스트림 암호문블록 암호문블록
초기화벡터 최초의암호문블록을만들어낼때는 1 단계앞의출력이존재하지않으므로대신에초기화벡터 (IV) 를사용한다 이것은 CBC 모드때와같다 초기화벡터는보통때마다다른랜덤비트열을사용한다
CFB 모드와스트림암호 CFB 모드의구조는일회용패드와비슷하다. 일회용패드에서는 평문 과 랜덤한비트열 을 XOR 해서 암호문 을만들어냈다. CFB 모드에서는 평문블록 과 암호알고리즘의출력 을 XOR 해서 암호문블록 을만든다. XOR 에의해하는것이비슷하다.
CFB 모드와스트림암호 CFB 모드와일회용패드를비교해서살펴보면일회용패드의 랜덤한비트열 에대응되는것을 CFB 모드에서찾는다면그것은 암호알고리즘의출력 이다. 암호알고리즘의출력은계산으로만들어내고있는것이므로실제난수는아니다 그러므로 CFB 모드가일회용패드처럼이론적으로해독불가능한것은아니다.
CFB 모드의복호화 CFB 모드에서복호화를수행할경우, 블록암호알고리즘자체는를수행하고있다는것에주의하라. 키스트림은에의해생성되는것이다.
CFB 모드에대한공격 CFB 모드에대해서는재전송공격 (replay attack) 이가능하다.
CFB 모드에대한재전송공격
4.5 OFB 모드
4.5.1 OFB 모드란 OFB 모드는 Output-FeedBack 모드 ( 출력피드백모드 ) 의약자이다. OFB 모드에서는암호알고리즘의출력을암호알고리즘의입력으로피드백한다. OFB 모드에서는평문블록은암호알고리즘에의해직접되고있는것은아니다. 평문블록과암호알고리즘의출력을 XOR 해서암호문블록을만들어내고있다. OFB 모드는이점에서 CFB 모드와비슷하다.
초기화벡터 OFB 모드에서도 CBC 모드나 CFB 모드와마찬가지로초기화벡터 (IV) 를사용한다. 초기화벡터는때마다다른랜덤비트열을이용하는것이보통이다.
OFB 모드 ( 출력피드백모드 ) OFB 모드에의한 IV 평문블록 1 평문블록 2 평문블록 3 평문블록 4 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4
OFB 모드 ( 출력피드백모드 ) OFB 모드에의한복호화 IV 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 평문블록 1 평문블록 2 평문블록 3 평문블록 4
CFB 모드와 OFB 모드의비교 OFB 모드와 CFB 모드에서는암호알고리즘으로의입력만이다르다. CFB 모드에서는 1 개앞의암호문블록이암호알고리즘으로의입력이었다. 암호문 ( 사이퍼 ) 블록을암호알고리즘으로피드백한것이다. 그렇기때문에 사이퍼피드백모드 라는이름을붙인것이다. 한편 OFB 모드에서는암호알고리즘의입력으로사용되는것은암호알고리즘의한단계앞의출력이다. 출력 ( 아웃풋 ) 을암호알고리즘으로피드백한것이다. 이것때문에 아웃풋피드백모드 라는이름이붙어있다.
CFB 모드와 OFB 모드의비교 CFB 모드 OFB 모드 한단계앞의암호문블록 다음단계의암호문블록 한단계앞의출력 다음단계의암호문블록 평문블록 평문블록 키스트림 키스트림 암호문블록 암호문블록
4.6 CTR 모드 CTR 모드는 CounTeR 모드의약자입니다. CTR 모드는 1 씩증가해가는카운터를해서키스트림을만들어내는스트림암호이다. CTR 모드에서는블록을할때마다 1 씩증가해가는카운터를해서키스트림을만든다. 즉, 카운터를한비트열과, 평문블록과의 XOR 을취한결과가암호문블록이된다.
4.6.1 카운터만드는법 카운터의초기값은때마다다른값 (nonce, 비표 ) 을기초로해서만든다. 블록길이가 128 비트 (16 바이트 ) 인경우카운터의초기값은예를들면, 66 1F 98 CD 37 A3 8B 4B 00 00 00 00 00 00 00 01 비표 블록번호 와같은값을사용할수있을것이다.
CTR 모드 ( 카운터모드 ) CTR 모드에의한 CTR CTR+1 CTR+2 CTR+3 평문블록 1 평문블록 2 평문블록 3 평문블록 4 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4
CTR 모드 ( 카운터모드 ) CTR 모드에의한복호화 CTR CTR+1 CTR+2 CTR+3 암호문블록 1 암호문블록 2 암호문블록 3 암호문블록 4 평문블록 1 평문블록 2 평문블록 3 평문블록 4
카운터만드는법 앞부분의 8 바이트는비표로때마다다른값으로하지않으면안된다. 후반 8 바이트는블록번호로이부분을카운트해서하나씩증가시켜가면된다. 가진행됨에따라카운터의값은다음과같이변환한다.
카운터값 66 1F 98 CD 37 A3 8B 4B 00 00 00 00 00 00 00 01 평문블록1용의카운터 ( 초기값 ) 66 1F 98 CD 37 A3 8B 4B 00 00 00 00 00 00 00 02 평문블록2용의카운터 66 1F 98 CD 37 A3 8B 4B 00 00 00 00 00 00 00 03 평문블록3용의카운터 66 1F 98 CD 37 A3 8B 4B 00 00 00 00 00 00 00 04 평문블록4용의카운터
4.6.2 OFB 모드와 CTR 모드의비교 CTR 모드는 OFB 모드와같은스트림암호의일종이다. 1 개의블록의하는부분만을추출해서 OFB 모드와 CTR 모드를비교하면차이를잘알수있을것이다 OFB 모드에서는의출력을입력으로피드백하고있지만, CTR 모드에서는카운터의값이의입력이된다.
OFB 모드와 CTR 모드의비교 한단계앞의출력 CTR 평문블록 평문블록 키스트림 키스트림 암호문블록 암호문블록
4.6.3 CTR 모드의특징 CTR 모드의와복호화는완전히같은구조이므로, 프로그램으로구현하는것이매우간단하다. 이것은 OFB 모드와같은스트림암호의특징이다. 또한 CTR 모드에서는블록을임의의순서로 복화화할수있다. 복호화때에사용하는 카운터 는비표와블록번호로부터금방구할수있기때문이다. 이것은 OFB 모드에는없었던성질이다.
4.6.4 오류와기밀성 CTR 모드는통신오류와기밀성에관해서 OFB 모드와거의같은성질을가지고있다. CTR 모드의암호문블록에서 1 비트의반전이발생했다고하자. 복호화를수행하면, 반전된비트에대응하는평문블록의 1 비트만이반전되고, 오류는확대되지않는다.
오류와기밀성 CTR 모드에는 OFB 모드보다도뛰어난성질이하나있다. OFB 모드에서는키스트림의 1 블록을한결과가, 전의결과와우연히같아졌다고하면그이후키스트림은완전히같은값의반복이된다. 그러나 CTR 모드에서는그런걱정은없다.
4.6.5 모드선택 E C B 모드 이름장점단점비고 Electri c CodeBoo k 전자부호표모드 간단 고속 병렬처리가능 ( 복호화양쪽 ) 평문속의반복이암호문에반영된다. 암호문블록의삭제나교체에의한평문의조작이가능 비트단위의에러가있는암호문을복호화하면, 대응하는블록이에러가된다. 재생공격이가능 사용해서는안된다
모드선택 C B C 모드 이름장점단점 Cipher Block Chainin g 암호블록연쇄모드 평문의반복은암호문에반영되지않는다. 병렬처리가능 ( 복호화만 ) 임의의암호문블록을복호화할수있다. 비트단위의에러가있는암호문을복호화하면, 1 블록전체와다음블록의대응하는비트가에러가된다. 에서는병렬처리를할수없다. 비고 권장
모드선택 이름장점단점비고 C F B 모드 Cipher- FeedBac k 암호피드백모드 패딩이필요없다. 병렬처리가능 ( 복호화만 ) 임의의암호문블록을복호화할수있다. 에서는병렬처리를할수없다. 비트단위의에러가있는암호문을복호화하면, 1 블록전체와다음블록의대응하는비트가에러가된다. 재생공격이가능 현재는사용안함. CTR 모드를사용하는편이나음.
모드선택 O F B 모드 이름장점단점비고 Output- FeedBac k 출력피드백모드 패딩이필요없다. 복호화의사전준비를할수있다. 와복호화가같은구조를하고있다. 비트단위의에러가있는암호문을복호화하면, 평문의대응하는비트만에러가된다. 병렬처리를할수없다. 능동적공격자가암호문블록을비트반전시키면, 대응하는평문블록이비트반전한다. CTR 모드를사용하는편이나음.
모드선택 C T R 모드 이름장점단점 CounT er 카운터모드 패딩이필요없다. 복호화의사전준비를할수있다. 와복호화가같은구조를하고있다. 비트단위의에러가있는암호문을복호화하면, 평문의대응하는비트만에러가된다. 병렬처리가능 ( 복호화양쪽 ) 능동적공격자가암호문블록을비트반전시키면, 대응하는평문블록이비트반전한다. 비고 권장