스트림 암호(Stream Cipher)
일회용 패드
스트림 암호의 대표적인 예시로는 일회용 패드가 있다.
-암호화
평문 비트열 p와 키 비트열 k의 XOR 연산
c=p⊕k
-복호화
암호문 비트열 c와 키 비트열 k의 XOR 연산
p=c⊕k
스트림 암호
-암호화
평문 비트열과 키 비트(바이트)열의 XOR 연산
-복호화
암호문 비트열과 키 비트(바이트)열의 XOR 연산
이때 키 비트(바이트)열을 "키 스트림"이라고 부른다.
Pros | Cons |
암/복호화의 속도가 매우 빠르다 | 블록 암호에 비해서 연구가 덜 이루어졌다. (=안전성이 잘 검증되어 있지 않다.) |
하드웨어 구현에 적합하다 | 스트림 암호가 필요한 경우 블록 암호 모드 중 스트림 암호 형태를 지원하는 방식으로 사용하는 것이 좋다. |
제한된 자원을 가지는 기기에서 주로 사용된다. ( ex. IoT 기기) |
종류
-동기식 스트림 암호
-자기 동기식 스트림 암호 (비동기식 스트림 암호)
1) 스트림 암호 (Synchronous stream cipher)
키 스트림이 평문과 암호문에 독립적으로 생성
이전 내부 상태로부터 현재 내부 상태를 업데이트하는 방식이다. 내부 상태를 입력으로 키 스트림 생성 알고리즘으로부터 키 스트림을 생성한다.
Sender와 Receiver가 동기화 된 내부 상태 유지가 필요하다. (이것이 '동기식'이라고 부르는 이유임)
동기식 스트림 암호의 오류 전파
암호문을 전송할 때 네트워크 오류로 비트가 사라지거나 추가된 경우
-> 오류가 발생한 지점부터 끝까지 복호화 실패
ex) 비트 유실, 비트 추가
암호문을 전송할 때 네트워크 오류로 암호문 중간에 1비트가 오류 발생할 경우 (유실이나 추가인 경우x)
-> 해당 위치의 비트에만 오류 발생
ex) 비트 flip
Linear-Feedback Shift Register (LFSR)
의사난수 생성기 (Pseudorandom-number generator)
빠르게 의사난수를 생성하지만 선형적이라는 문제점이 있다.
여러 LSFR을 사용하여 그 결과값을 비선형적 방식(비선형적인 함수 F 사용)으로 결합하는 것을 통해 비선형성을 추가한다. 여기서 비선형적인 함수 F를 Non-linear Comvbiner라고 한다.
동기식 스트림 암호 예
A5/1
LFSR 기반의 스트림 암호이다.
GSM(2000년대 초반, 스마트폰이 나오기 이전의 옛날 통신 방식) 방식의 휴대폰 통신 암호화에 사용
기지평문공격(KPA)에 취약하다.
RC4
LFSR 기반이 아니다.
ChaCha(현재 가장 많이 쓰이는 스트림 암호) 이전에 가장 널리 쓰이던 s/w용 스트림 암호이다.
SSL, WEP(무선 통신 시 이용)에 쓰인다.
일회용 패드
블록암호 기본
OFB, CRT 모드 등
2) 자기 동기식(비동기식) 스트림 암호 (Self-synchronous stream cipher)
키 스트림을 생성할 때 키와 함께 암호문 또는 평문 일부를 사용한다.
내부 상태가 이전 내부 상태에 의존하지 않음
암호문의 일부를 키 스트림 생성에 활용
블록암호 기반 비동기식 스트림 암호: CFB 모드
자기 동기식(비동기식) 스트림 암호 오류 전파
암호문을 전송할 때 네트워크 오류로 블록이 사라지거나 추가된 경우에도 일부 부분에 대해서만 복호화 실패가 발생
'활동들.. > Incognito' 카테고리의 다른 글
기초대수학 문제풀이 (0) | 2022.11.19 |
---|---|
블록 암호 모드 (0) | 2022.11.11 |
AES (0) | 2022.10.22 |
rec&일회용 패드&블록암호 (0) | 2022.10.12 |
Feistal Network 3R 그리기 (0) | 2022.10.12 |