기술나눔

[암호학] 스트림 암호의 기본 개념

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

스트림 암호를 소개하기 전에 먼저 기본 전제 지식 포인트-XOR 연산을 이해하겠습니다.

1. 배타적 OR 연산(XOR)

연산규칙 : 0과 같고 1과 다름

특징: 한 비트는 두 번 XOR되어 원래 비트로 복원될 수 있습니다.

일반 텍스트: 1100

키: 0101(암호화됨)

암호문: 1001

키: 0101(암호해독)

일반 텍스트: 1100

이점:이러한 가역성을 통해 암호화 및 암호 해독 변환 모두에 XOR 연산을 사용할 수 있습니다.

결점:공격자가 키를 추측하거나 캡처할 수 있으면 XOR을 통해 쉽게 암호를 해독할 수 있습니다.

XOR 연산을 암호화와 복호화에 동시에 사용할 수 있는 이유는 가역성에 있지만 보안이 전적으로 키 숨기기에 의존한다는 단점도 있습니다.

2. 일회용 패드 알고리즘(OTP)

(1) 정의

OTP(One-Time Pad)는 스트림 암호화 알고리즘으로, 구현이 몇 가지 주요 원칙을 엄격하게 따르는 경우 이론상 가장 안전한 암호화 방법 중 하나로 간주됩니다.

1.  키는 일반 텍스트만큼 길어야 합니다.: 이는 각 암호화가 암호화되는 메시지와 정확히 동일한 길이의 키를 사용함을 의미합니다.

2.  키는 실제로 무작위여야 합니다.: 키의 모든 비트는 패턴이나 예측 가능성 없이 무작위로 생성되어야 합니다.

3.  키는 한 번만 사용해야 합니다.: 여러 메시지를 암호화하는 데 동일한 키를 사용하면 안 됩니다. 그렇지 않으면 암호문 간의 상관 관계를 사용하여 메시지 내용을 추론할 수 있습니다.

4.  키는 비밀로 유지되어야 합니다: 키의 배포 및 보관은 제3자의 접근을 방지하기 위해 매우 안전해야 합니다.

(2) 장점과 단점

이점:

  • 키는 무작위로 생성되며 한 번만 사용됩니다.
  • 무조건 안전
  • 암호화 및 암호 해독은 더 효율적인 추가 작업입니다.

결점:

  • 키 길이는 최소한 일반 텍스트 길이만큼 길어서 키 공유가 어렵고 실용적이지 않습니다.

3. 스트림 암호의 정의

사람들은 일회용 패드 암호화 알고리즘을 연구할 때 키 관리 및 길이 문제를 해결하려고 합니다. 키의 작은 부분만 제공하여 일반 텍스트 암호화를 위한 모든 키를 생성할 수 있는 방법이 있다면, 스트림 암호는 이 아이디어를 기반으로 개발되었습니다.

(1) 스트림 암호의 기본 개념

         스트림 암호에서는 PRNG(의사 난수 생성기)를 통해 작은 키(종종 시드 또는 초기화 벡터라고 함)를 사용하여 일반 텍스트와 동일한 길이의 의사 난수 키 스트림을 생성합니다. 그런 다음 이 키스트림은 일반 텍스트와 XOR되어 암호문을 생성합니다. 마찬가지로, 암호 해독 프로세스는 동일한 키 스트림으로 암호문을 XOR하여 일반 텍스트를 복구하는 것입니다.

열쇠 케이키스트림 생성 z=z_0z_1z_2...일반 텍스트 문자열을 비교하려면 다음 규칙을 사용하세요. x=x_0x_1x_2...암호화하려면:
y=y_0y_1y_2...=Ez_0(x_0)Ez_1(x_1)Ez_2(x_2)...

선형 피드백 시프트 레지스터는 일반적으로 의사 난수 키를 생성하는 데 사용됩니다. 여기서는 그 원칙을 다루지 않겠습니다.

(2) 알고리즘 과정

암호화 및 복호화 과정은 다음과 같이 설명할 수 있습니다.

  • 키스트림 생성: 암호화 당사자와 암호 해독 당사자 모두 동일한 키와 초기화 벡터(IV)를 사용하여 의사 난수 생성기(PRNG)를 초기화합니다. PRNG는 내부 상태를 기반으로 일련의 의사 무작위 비트를 생성하여 키 스트림을 형성합니다.
  • 암호화 프로세스: 송신자는 생성된 키 스트림과 일반 텍스트에 대해 비트 배타적 OR(XOR) 연산을 수행하여 암호문을 얻습니다. XOR 연산의 특성으로 인해 동일한 연산이 다른 비트에서 되돌릴 수 있습니다.
  • 복호화 프로세스: 수신자는 동일한 키와 IV를 사용하여 PRNG를 다시 초기화하고 암호화할 때와 동일한 키 스트림을 생성합니다. 그러면 수신자는 암호문을 키 스트림과 XOR하여 원래의 일반 텍스트를 복구합니다.

(3) 스트림 암호 설계 원리

스트림 암호의 설계 원칙은 실제로 특정 보안 속성을 가진 키스트림을 생성할 수 있는 키스트림 생성기를 만드는 데 중점을 둡니다. 키 스트림 시퀀스에는 다음 속성이 있어야 합니다.

  1. 거대한 주기 : 키 스트림의 기간은 키 스트림의 동일한 세그먼트의 재사용을 방지할 수 있을 만큼 충분히 길어야 합니다. 이렇게 하면 암호화된 데이터의 패턴이 노출되고 암호 분석가가 서로 다른 메시지의 유사점과 차이점을 비교하여 공격을 수행할 수 있습니다. 이론적으로 n비트 키 공간의 경우 이상적인 주기 길이는 2n-1이어야 합니다. 실제로 기간이 길다는 것은 키 스트림이 덜 자주 반복된다는 것을 의미하므로 암호화 시스템의 보안이 향상됩니다.

  2. 좋은 통계적 특성 : 키스트림은 진정한 무작위 비트 시퀀스처럼 보여야 합니다. 즉, 0과 1의 균등 분포, 두 개 이상의 연속 비트 간의 독립성, 예측 패턴이나 주기성이 없는 등 다양한 통계 테스트를 충족해야 합니다. 좋은 통계 속성은 스트림 암호화 보안의 중요한 구성 요소인 키 스트림의 예측 불가능성을 보장하는 데 도움이 됩니다.

  3. 선형 분석에 대한 저항 : 스트림 암호는 암호 분석가가 키 스트림과 일반 텍스트 또는 암호 텍스트 간의 선형 상관 관계를 찾아 키 또는 일반 텍스트를 복구하려고 시도하는 선형 분석에 저항해야 합니다. 이를 위해서는 일반적으로 키스트림 생성기의 출력이 비선형이거나 최소한 단순한 선형 시스템 해결 방법이 키스트림이나 키 자체를 추론하지 못하도록 충분한 비선형 구성요소가 포함되어 있어야 합니다.