맨위로가기

초기화 벡터

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

초기화 벡터(IV)는 블록 암호 및 스트림 암호에서 사용되는 값으로, 암호화 과정의 시작점을 설정하여 보안을 강화한다. 블록 암호에서는 ECB 모드에서 IV를 사용하지 않거나, CBC 모드에서 이전 암호문 블록과의 XOR 연산에 사용되며, 스트림 암호에서는 암호화된 내부 상태에 로드되어 키 스트림을 생성하는 데 기여한다. IV는 고유성과 예측 불가능성을 가져야 하며, 그렇지 않을 경우 암호화 방식의 취약점을 유발할 수 있다. 예를 들어, WEP는 짧은 IV 길이로 인해, SSL 2.0은 이전 암호문 블록을 IV로 재사용하는 방식으로 인해 보안 취약성을 드러냈다.

더 읽어볼만한 페이지

  • 블록 암호 운용 방식 - CCM 모드
    CCM 모드는 기밀성과 인증을 위해 카운터 모드와 CBC-MAC을 결합한 인증 암호화 방식이며, 러스 하슬리, 더그 와이팅, 닐스 퍼거슨에 의해 설계되었고, IEEE 802.11i, IPsec 등 다양한 프로토콜에서 활용된다.
  • 블록 암호 운용 방식 - 갈루와/카운터 모드
    갈루아/카운터 모드(GCM)는 유한체 산술을 이용해 인증 태그를 생성하는 블록 암호 운용 모드로, 카운터 모드 기반 암호화 방식과 유한체 연산을 결합하여 데이터 기밀성과 변조 방지를 제공하며 GHASH 함수로 인증 태그를 생성하고 하드웨어 가속이 가능하지만, 특정 환경에서 성능 저하나 보안 취약점 문제가 발생할 수 있다.
  • 암호학 - 양자 컴퓨터
    양자 컴퓨터는 양자역학적 현상을 이용하여 정보를 처리하는 컴퓨터로, 큐비트를 통해 0과 1을 동시에 표현하여 특정 연산에서 기존 컴퓨터보다 빠른 속도를 보이며 암호 해독, 신약 개발 등 다양한 분야에 혁신을 가져올 것으로 기대된다.
  • 암호학 - 암호화
    암호화는 정보를 보호하기 위해 사용되는 기술로서, 단순한 문자 치환 방식에서 시작하여 현대에는 강력한 암호화 표준과 다양한 종류로 발전했으며, IT 시스템 전반에 적용되지만, 사이버 공격과 양자 컴퓨팅의 발전에 대한 대응이 필요한 기술이다.
초기화 벡터
개요
유형암호학적 프리미티브 입력
목적암호화, 복호화, 인증 등
속성무작위성, 예측 불가능성, 유일성
설명
초기화 벡터암호화에서 메시지를 암호화하는 시작점으로 사용되는 임의의 값.
사용 목적동일한 키로 여러 번 암호화할 때 각 메시지가 다른 암호문으로 암호화되도록 함.
CBC, CFB, OFB, CTR 모드와 같은 블록 암호 운용 방식에서 주로 사용됨.
중요성암호화의 보안성을 유지하는 데 중요한 역할.
예측 가능하거나 재사용된 초기화 벡터는 암호 공격에 취약하게 만들 수 있음.
보안 고려 사항
무작위성충분히 무작위적이어야 함.
예측 불가능성예측하기 어려워야 함.
유일성각 암호화 작업마다 고유해야 함 (일부 모드에서는 요구되지 않음).
다양한 암호 모드에서의 사용
CBC 모드각 블록의 암호화가 이전 블록의 결과에 의존하도록 함.
CTR 모드각 블록에 대해 고유한 키 스트림을 생성하는 데 사용됨.
주의 사항
재사용 금지동일한 키와 함께 초기화 벡터를 재사용하면 암호문이 손상될 수 있음.
안전한 생성안전한 난수 생성기를 사용하여 생성해야 함.
예시
AES 암호화AES 알고리즘과 함께 CBC 모드를 사용하는 경우, 128비트 초기화 벡터가 필요함.
참고 자료
관련 용어암호화 키
블록 암호
스트림 암호
암호학적 해시 함수
추가 정보
시간-메모리-데이터 상충시간-메모리-데이터 상충 공격에 대한 설명

2. 블록 암호

블록 암호는 특정한 길이의 블록 단위로 데이터를 암호화하는 방식이다. 암호 키는 평문과 암호문 사이의 관계를 정의하는 데 사용된다. 블록 암호 자체는 정해진 크기의 블록만을 처리할 수 있기 때문에, 임의 길이의 데이터를 암호화하기 위해서는 추가적인 방법이 필요하다.

임의 길이의 데이터를 암호화하는 간단한 방법은 데이터를 블록 크기에 맞게 나누어 각 블록을 동일한 키로 암호화하는 것이다. 그러나 이 방법은 동일한 평문 블록이 동일한 암호문 블록으로 변환되어 보안에 취약하다. 이러한 문제를 해결하기 위해 입력 데이터를 무작위화하는 과정이 필요하며, 이를 위해 초기화 벡터가 사용된다.

1980년 NIST는 연방 정보 처리 표준 (FIPS) PUB 81 문서를 통해 전자 코드북(ECB) 모드를 포함한 4가지 블록 암호 작동 모드를 발표했다. ECB 모드는 각 블록을 독립적으로 암호화하는 간단한 방식이지만, 보안 문제로 인해 다른 모드들이 개발되었다. 다른 블록 암호 운용 모드들은 암호화 과정에서 이전 단계의 암호문을 다음 단계에 활용하여 데이터의 패턴을 숨기는 방식으로 작동한다.

블록 암호의 데이터 처리는 일반적으로 운용 방식이라고 불리며, 암호화뿐만 아니라 인증을 위한 운용 방식도 존재한다. 또한, 인증 암호화 모드와 같이 암호화와 인증을 결합한 새로운 설계 방식도 있다.

블록 암호스트림 암호에서 초기화 벡터(IV)의 구현 방식은 서로 다르다. 특히, ECB 모드에서는 같은 평문을 같은 키로 암호화하면 같은 암호문이 생성되기 때문에, 초기화 벡터를 활용하여 평문에 변화를 주는 과정이 필요하다.

2. 1. 전자 코드북 (ECB) 모드

전자 코드북 모드 인코딩으로 인해 이미지 암호화가 안전하지 않음


블록 암호암호화에 자주 사용되는 기본적인 암호 기본 요소 중 하나이다. 그러나 블록 암호는 미리 정의된 크기의 데이터 블록만을 암호화할 수 있다. 예를 들어, AES 알고리즘은 128비트 평문 블록을 128비트 암호문 블록으로 변환한다. 이때 사용되는 암호 키는 평문과 암호문 간의 관계를 정의한다.

만약 임의의 길이의 데이터를 암호화해야 한다면, 데이터를 블록 크기에 맞게 분할하고, 각 블록을 동일한 키로 암호화하는 간단한 방법을 생각해 볼 수 있다. 하지만 이 방법은 동일한 평문 블록이 동일한 암호문 블록으로 변환되기 때문에 안전하지 않다. 즉, 암호화된 데이터의 패턴을 통해 내용을 유추할 수 있게 된다.

이러한 문제를 해결하기 위해 입력 데이터를 무작위화하는 방법이 필요하다. 1980년 NIST는 연방 정보 처리 표준 (FIPS) PUB 81 문서를 발표했는데, 여기에는 서로 다른 4가지 블록 암호 작동 모드가 정의되어 있다. 그중 첫 번째 모드가 바로 전자 코드북(ECB) 모드이며, 위에서 설명한 간단한 전략을 그대로 구현한 것이다.

전자 코드북(ECB) 모드는 각 블록을 독립적으로 암호화하기 때문에, 동일한 평문 블록은 항상 동일한 암호문 블록으로 변환된다. 따라서 보안에 취약하며, 특히 이미지와 같이 반복되는 패턴이 많은 데이터에는 적합하지 않다. 블록 암호스트림 암호에서 초기화 벡터(IV)의 구현은 다르며, 직접적인 블록 암호 또는 ECB 모드에서는 같은 평문을 같은 키로 암호화하면 같은 암호문이 나오기 때문에 보안에 매우 취약하다. 이러한 이유로, 초기화 벡터를 평문의 첫 블록에 더하거나 (배타적 논리합) 운용 모드에 따라 평문 앞에 초기화 벡터를 붙여 암호화한다.

2. 2. 암호 블록 체이닝 (CBC) 모드

암호 블록 체이닝(CBC) 모드는 각 평문 블록을 이전 암호문 블록과 배타적 논리합 연산한 후 암호화하는 방식이다. 첫 번째 블록은 초기화 벡터(IV)를 사용하여 XOR 연산을 수행한다. CBC 모드는 전자 코드북(ECB) 모드의 취약점을 보완하여 널리 사용된다.

1980년 NIST는 연방 정보 처리 표준 (FIPS) PUB 81로 지정된 국가 표준 문서를 발표했는데, 여기에는 입력 블록 세트를 암호화하는 다른 솔루션을 설명하는 4가지 블록 암호 작동 모드가 명시되어 있었다. CBC 모드는 이 중 하나로, 한 블록 암호화 단계의 암호문이 다음 암호화 단계의 데이터와 혼합되는 프로세스를 통해 암호화된 데이터의 패턴을 숨긴다.

CBC 모드에서 암호화의 첫 단계에서는 예측 불가능한 IV 값을 첫 평문 블록에 추가하여 배타적 논리합 연산을 수행한다. 이후, 첫 번째 암호화 단계에서 생성된 암호문은 두 번째 평문 블록에 더해지는 방식으로 진행된다. 이러한 과정을 통해 의미론적 보안을 제공하며, 공격자가 암호문에서 유의미한 정보를 얻는 것을 어렵게 한다.

2. 3. 초기화 벡터의 속성

초기화 벡터(IV)의 속성은 사용되는 암호화 방식에 따라 달라진다. 기본적인 요구 사항은 ''고유성''으로, 동일한 키 아래에서 IV를 재사용할 수 없다는 의미이다. 블록 암호에서 반복되는 IV 값은 암호화 방식을 전자 코드북 모드(ECB)로 되돌려, 동일한 IV와 평문이 동일한 암호문을 생성하게 한다. 스트림 암호 암호화에서는 고유성이 매우 중요한데, 그렇지 않으면 평문을 쉽게 복구할 수 있다.

:'''''예시:''''' 스트림 암호는 주어진 키와 IV로부터 키 스트림 ''K''를 유도하고 ''C'' = ''P'' xor ''K''로 ''C''를 계산하여 평문 ''P''를 암호문 ''C''로 암호화한다. 공격자가 동일한 키와 IV로 암호화된 두 메시지 ''C''1과 ''C''2를 관찰했다면, ''P''1 또는 ''P''2 중 하나를 알 경우 다른 평문도 알 수 있다.

::''C''1 xor ''C''2 = (''P''1 xor K) xor (''P''2 xor K) = ''P''1 xor ''P''2.

많은 방식에서 IV는 적에 의해 ''예측 불가능''해야 하며, 이는 IV를 난수 또는 의사 난수로 선택하여 수행된다.

블록 암호의 데이터 처리는 일반적으로 운용 방식이라고 한다. 운용 방식은 암호화뿐만 아니라 인증을 위해서도 정의되지만, 인증 암호화 모드에서는 두 보안 솔루션을 모두 결합하기도 한다. 암호화 및 인증 암호화 모드는 보통 암호의 블록 크기와 일치하는 IV를 사용하지만, 인증 모드는 결정적 알고리즘으로 구현되어 IV가 0 또는 다른 고정 값으로 설정되기도 한다.

블록 암호스트림 암호에서 IV의 구현은 다르다. ECB 모드에서는 같은 평문을 같은 키로 암호화하면 같은 암호문이 생성되어 보안에 취약하다. 따라서 IV를 평문의 첫 블록에 더하거나 (배타적 논리합) 운용 모드에 따라 평문 앞에 IV를 포함시켜 암호화한다.

스트림 암호에서 IV는 키 스트림의 초기값으로 암호기에 설정되어 첫 비트 출력 전 몇 번 암호기를 회전시킨다. 성능 향상을 위해 사전 회전 횟수는 적게 설계되지만, 최소 횟수를 구하기는 쉽지 않다. 엔트로피 손실, 암호 생성마다의 유일성, 관련 IV 공격 등 스트림 암호의 보안 문제를 고려해야 하므로, 스트림 암호의 IV는 중요하며 현재도 연구가 진행되고 있다.

2. 3. 1. 랜덤화된 방식

랜덤화된 방식에서 초기화 벡터는 난수 또는 의사 난수로 생성되어야 한다. 이러한 방식에서 중복 IV가 발생할 확률은 무시할 수 있을 정도이지만, 생일 문제의 영향을 고려해야 한다. 많은 방식에서 IV는 적에 의해 예측 불가능해야 한다.[6] 예측 가능한 IV는 (부분) 평문을 복구할 수 있게 할 수 있다는 점에서 고유성 요구 사항과 관련이 있다.[6]

암호화 방식의 IV가 난수여야 하는지 아니면 고유하기만 하면 되는지에 따라 해당 방식은 '랜덤화된' 또는 '상태 저장' 방식으로 불린다. 랜덤화된 방식은 항상 발신자가 선택한 IV를 수신자에게 전달해야 하는 반면, 상태 저장 방식은 발신자와 수신자가 공통 IV 상태를 공유하도록 허용하며, 이는 양쪽에서 미리 정의된 방식으로 업데이트된다.[6]

2. 3. 2. 상태 저장 방식

상태 저장 방식에서는 발신자와 수신자가 공통된 초기화 벡터 상태를 공유하며, 미리 정의된 방식에 따라 업데이트한다.[6]

3. 스트림 암호

스트림 암호는 데이터 스트림을 연속적으로 암호화하는 방식이다. 초기화 벡터(IV)는 키 스트림의 초기값으로 암호기에 설정되며, 첫 번째 비트를 출력하기 전에 여러 번 암호기를 회전시킨다.[1]

3. 1. 스트림 암호에서 초기화 벡터의 중요성

스트림 암호에서 초기화 벡터(IV)는 암호화된 내부 비밀 상태에 로드된 후, 첫 번째 출력 비트를 내보내기 전에 여러 라운드의 암호화가 실행된다. 성능상의 이유로, 스트림 암호 설계자들은 해당 라운드 수를 가능한 한 작게 유지하려 하지만, 스트림 암호에 대한 최소 안전 라운드 수를 결정하는 것은 쉬운 일이 아니다. 각 암호 구성에 고유한 엔트로피 손실과 같은 다른 문제들을 고려할 때, 관련된 IV와 기타 IV 관련 공격은 스트림 암호에 대한 알려진 보안 문제이며, 이는 스트림 암호에서 IV 로딩을 심각한 문제이자 지속적인 연구 대상으로 만든다.[1]

IV(초기화 벡터)는 키 스트림의 초기값으로 암호기에 설정되어, 첫 번째 비트를 출력하기 전에 몇 번 암호기를 회전시킨다. 성능을 향상시키기 위해, 이 사전 회전 횟수는 가능한 한 적게 설계한다. 그러나 그 최소 횟수를 구하는 것은 쉽지 않으며, 엔트로피 손실, 암호 생성마다의 유일성, 스트림 암호의 보안 문제인 관련 IV 공격과 IV 관련 공격 등을 고려해야 한다. 이 때문에 스트림 암호의 IV는 중요한 문제이며, 현재도 연구가 활발하게 진행되고 있다.[1]

4. WEP의 취약성

IEEE 802.11암호화 알고리즘인 WEP(유선 동등 프라이버시)는 24비트의 짧은 IV를 사용했기 때문에 보안에 취약했다.[7] 짧은 초기화 벡터는 동일한 키와 초기화 벡터가 재사용될 가능성을 높여 해킹에 취약하게 만들었다. 이러한 취약점으로 인해 WEP는 빠르게 사라졌다.[10]

4. 1. WEP 해킹 사례

802.11 암호화 알고리즘인 WEP (유선 동등 프라이버시)는 짧은 24비트 IV를 사용하여 동일한 키를 가진 IV가 재사용되어 쉽게 해킹될 수 있었다.[7] 패킷 주입을 통해 WEP는 몇 초 만에 해킹될 수 있었으며, 이는 궁극적으로 WEP의 사용 중단으로 이어졌다.[7] [10] WEP는 위장 패킷 주입을 통해 5분 이내에 해독할 수 있어 빠르게 사라졌다.[10]

5. SSL 2.0의 취약성

CBC 모드에서 이전 메시지의 마지막 암호문 블록을 다음 메시지의 초기화 벡터(IV)로 재사용하는 것은 안전하지 않다. 이 방법은 SSL 2.0에서 사용되었다.[9]

5. 1. BEAST 공격

CBC 모드에서 초기화 벡터(IV)는 기밀일 필요는 없지만 예측 불가능해야 한다. 특히 주어진 평문에 대해 암호화 시점에 IV 생성을 예측할 수 없어야 한다. 공격자가 다음 평문을 지정하기 전에 IV(또는 이전 암호문 블록)를 알고 있다면, 동일한 키로 암호화된 일부 블록의 평문에 대한 추측을 확인할 수 있다. 이는 BEAST 공격(TLS CBC IV 공격)으로 알려져 있다.[9]

참조

[1] 간행물 Information technology — Security techniques — Modes of operation for an n-bit block cipher ISO/IEC 2006
[2] 논문 Some Thoughts on Time-Memory-Data Tradeoffs http://eprint.iacr.o[...]
[3] 논문 Rediscovery of Time Memory Tradeoffs http://eprint.iacr.o[...]
[4] 학회 Selected Areas in Cryptography, 12th International Workshop, SAC 2005, Kingston, ON, Canada, August 11-12, 2005, Revised Selected Papers Springer
[5] 기술 보고서 Comments on the Rediscovery of Time/Memory/Data Trade-off Algorithm http://www.ecrypt.eu[...]
[6] 웹사이트 CWE-329: Not Using a Random IV with CBC Mode http://cwe.mitre.org[...]
[7] 웹사이트 Intercepting Mobile Communications: The Insecurity of 802.11 http://www.isaac.cs.[...] 2006-09-12
[8] citation NIST Recommendation for Block Cipher Modes of Operation; Chapters 6.2 and 6.4 https://nvlpubs.nist[...] 2001
[9] citation Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures http://www.openssl.o[...] 2004-05-20
[10] paper Intercepting Mobile Communications: The Insecurity of 802.11 http://www.isaac.cs.[...] 2006-09-12
[11] 간행물 Information technology — Security techniques — Modes of operation for an n-bit block cipher ISO/IEC 2006



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com