CBC 블록 암호화 IV ( Initialization Vector ) 사용 전략

bsk·2020년 4월 13일
0

이 글을 이해하기 위해서는 블록 암호화 알고리즘에 대해 간단한 지식이 있어야 합니다.

블록암호화중 CBC 암호화에서 IV ( Initialization Vector ) 를 어떻게 사용하는것이 좋은지에 대한 고찰을 해보도록 하자.

아래 세가지지 경우의 케이스가 있을듯 하여 정리해 보았다.

  1. 고정으로 지정된 IV를 사용하는 경우
  2. 무작위로 IV 를 생성하는 경우

1. 고정으로 지정된 IV 를 사용하는 경우

장점 : 사용하기 간편하다. 직관적이다.
단점 : CBC 개념에 위반된다.
권장하지 않음

설명

CBC는 동일한 값을 암호화 하면 동일한 결과를 나오므로 복호화 키를 유추하기 쉽다는 문제 때문에 생겨난 복호화 방식 이다. 이때 값을 무작위로 변경시켜 주는게 바로 IV 이다. 근데 이 값을 고정시켜서 사용하게 된다면 결국 키가 항상 동일하므로 A 라는 값을 암호화시 항상 B가 된다. 유추가 가능하게 되므로 CBC 를 쓰는 의미가 없어진다. 고정으로 IV를 사용한다면, 아예 사용하지 않는 ECB 보다는 안전 하겠지만 스마트한 방법은 아니다.

2. 무작위로 IV 를 생성하는 경우

장점 : 고정으로 사용하는 IV 보다 좀더 보안이 좋다.
단점 : 데이터 사이즈의 크기가 증가한다.
권장 하는 방식

설명

암호화를 진행할 때 마다 랜덤으로 IV 를 생성하여 암호화를 진행한다. 단, 복호화 진행시 IV 를 알아야 복호화를 할 수 있기 때문에, 암호화시 데이터 앞부분에 IV를 추가하는 방식을 사용한다. 그러므로 모든 데이터는 IV 사이즈만큼 데이터 용량이 증가 되는것이 단점이다.

하지만 CBC 암호화는 중간자 공격 취약점이 있기 때문에 GCM 모드를 사용하는것을 권장한다.

profile
웹에 관련된 모든 주제를 다룹니다.

0개의 댓글