키스트림
Keystream암호학에서 키스트림은 암호화된 메시지(암호 문자)를 생성하기 위해 일반 텍스트 메시지와 결합한 임의 문자 또는 유사 문자의 스트림이다.
키스트림의 "charactor"는 사용 사례에 따라 비트, 바이트, 숫자 또는 A-Z와 같은 실제 문자일 수 있다.
일반적으로 키스트림의 각 문자는 모듈식 산술을 사용하여 암호문을 생성하기 위해 일반 텍스트의 문자로 추가, 감산 또는 XOR로 지정된다.
키스트림은 일회용 패드 암호와 대부분의 스트림 암호에 사용된다. 블록 암호는 또한 키스트림을 생산하는 데 사용될 수 있다. 예를 들어 CTR 모드는 블록 암호로 키스트림을 생성하여 블록 암호를 스트림 암호로 변환하게 하는 블록 모드다.
예
이 간단한 예에서 우리는 a-z에서 26자로 된 영문자를 사용한다. 따라서 우리는 숫자, 쉼표, 공백 및 기타 기호를 암호화할 수 없다. 그러면 키스트림의 무작위 숫자는 적어도 0에서 25 사이여야 한다.
암호화를 위해 키스트림 번호를 일반 텍스트에 추가한다. 그리고 암호를 해독하기 위해 암호문으로부터 동일한 키스트림 번호를 빼서 일반 텍스트를 얻는다.
만약 암호문 숫자가 25보다 커지면, 우리는 그것을 0에서 25 사이의 값으로 포장한다. 이리하여 26은 0이 되고 27은 1 등이 된다.(이러한 포장을 모듈식 산술이라고 한다.)
여기서 "새벽에 공격"이라는 일반 텍스트 메시지를 키스트림 "kjcngmlhyyu"와 결합하여 암호 텍스트 "kcvniwlabluh"를 생성한다.
일반 텍스트 | a | t | t | a | c | k | a | t | d | a | w | n |
---|---|---|---|---|---|---|---|---|---|---|---|---|
숫자로 된 일반 텍스트 | 0 | 19 | 19 | 0 | 2 | 10 | 0 | 19 | 3 | 0 | 22 | 13 |
키스트림 | k | j | c | n | g | m | l | h | y | l | y | u |
키스트림(숫자) | 10 | 9 | 2 | 13 | 6 | 12 | 11 | 7 | 24 | 11 | 24 | 20 |
숫자로 암호문 | 10 | 28 | 21 | 13 | 8 | 22 | 11 | 26 | 27 | 11 | 46 | 33 |
숫자로 암호문 0-25로 포장된 | 10 | 2 | 21 | 13 | 8 | 22 | 11 | 0 | 1 | 11 | 20 | 7 |
텍스트로 암호문 | k | c | v | n | i | w | l | a | b | l | u | h |
참조