LOKI97 암호화 및 복호화
호주 블록 암호 - 128비트 블록과 가변 키 길이를 가진 AES 후보
보안 알림
LOKI97은 AES 후보였지만 표준으로 선택되지 않았습니다. 강력한 보안이 필요한 새로운 애플리케이션에는 AES(Rijndael)가 권장됩니다.
LOKI97 소개
LOKI97은 호주 LOKI 암호 패밀리의 3세대 알고리즘으로, Lawrie Brown(호주국방군사관학교)과 Josef Pieprzyk(맥쿼리대학교)이 설계했습니다. LOKI89(1990년, 64비트 블록)에서 시작해 Biham과 Shamir의 차분 암호 분석 공격 후 LOKI91로 S-box를 개선했으며, 1998년 AES 후보로 완전히 재설계된 LOKI97이 128비트 블록과 128/192/256비트 키로 제출되었습니다.
LOKI97의 가장 특징적인 구조 요소는 GF(2¹³)의 기약 다항식 평가로 생성되는 S-box입니다 — DES의 수동 설계 S-box나 AES의 GF(2⁸) SubBytes보다 대수적으로 더 복잡한 구조입니다. 키 스케줄은 LOKI97 라운드 함수 자체를 마스터 키에 재귀적으로 적용하여 모든 라운드 서브키를 도출합니다.
주요 특징
- 128비트 블록 크기 — LOKI89의 64비트 블록에서 업그레이드, 생일 경계 취약점 제거
- 세 가지 키 크기: 128, 192, 256비트 — AES의 전체 키 길이 범위에 해당
- GF(2¹³)에서 생성된 S-box를 가진 16라운드 Feistel 네트워크
- 자기 참조 키 스케줄 — LOKI97 라운드 함수를 재귀 적용하여 서브키 도출
- 호주 기원: ADFA와 맥쿼리대에서 설계한 유일한 순수 남반구 학술 계통 AES 후보
LOKI 제품군 역사
- LOKI89: 1989년에 설계된 원본 암호로 64비트 블록과 64비트 키 사용.
- LOKI91: LOKI89에서 발견된 약점을 해결한 개선 버전.
- LOKI97: 128비트 블록을 가진 최종 진화 버전으로 AES 경쟁에 제출.
암호화 모드
- CBC: 암호 블록 체이닝 — 각 128비트 LOKI97 블록이 16라운드 GF(2¹³) S-box Feistel 시퀀스 전에 이전 암호문과 XOR됩니다. 128비트 블록으로 인해 충돌 확률이 약 2⁶⁴ 블록(~148 EB)까지 무시할 수 있어 Sweet32는 실용적 문제가 아닙니다.
- ECB: 전자 코드북 — 각 128비트 LOKI97 블록이 16라운드 전체를 독립 처리. 동일한 블록은 항상 동일한 암호문을 생성. 단일 블록 토큰/키 래핑에만 허용.
- CFB: 암호 피드백 — LOKI97 128비트 블록 함수가 이전 암호문 블록을 암호화하고 상위 n비트가 n개 평문 비트와 XOR됩니다. Feistel 분산으로 공격 저항성 보장.
- OFB: 출력 피드백 — LOKI97 블록 함수가 평문과 독립적으로 상태를 반복 암호화하여 결정론적 키스트림 생성. 128비트 내부 상태로 키스트림 주기 ≥ 2⁶⁴ 보장.
- RAW: 원시 블록 - 체이닝 모드 없이 직접 단일 블록 암호화. IV 불필요. 단일 128비트 블록 전용.
알고리즘 구조
LOKI97은 16라운드 Feistel 네트워크 구조를 사용합니다. 각 라운드는 128비트 블록을 두 개의 64비트 반쪽(L과 R)으로 나누어 처리합니다.
키 스케줄
256비트 마스터 키는 f 함수와 상수 DELTA(황금비에서 유도됨)를 사용하여 48개의 서브키(SK[0]에서 SK[47])로 확장됩니다. 128비트 또는 192비트 키의 경우, 확장 전에 키 자료가 복제되어 256비트 키 레지스터를 채웁니다.
라운드 함수
각 라운드는 다음을 적용합니다: L' = R + SK[3i], R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2]). 덧셈은 2^64 모듈로입니다.
f 함수
핵심 f 함수 f(A, B)는 네 개의 레이어로 구성됩니다:
- KP (키 제어 순열): B의 제어 비트를 기반으로 A에서 비트 선택
- Sa (S-박스 레이어 a): 두 가지 유형의 8개 병렬 S-박스 조회 (S1: 13→8비트, S2: 11→8비트)
- P (순열): 8×8 비트 인터리빙 패턴을 사용한 64비트 순열
- Sb (S-박스 레이어 b): B의 추가 키 자료를 사용한 두 번째 8개 S-박스 조회
S-박스
S1은 8192개 항목(13비트 입력 → 8비트 출력), S2는 2048개 항목(11비트 입력 → 8비트 출력)을 가집니다. 둘 다 각각 GF(2^13)과 GF(2^11)에서 세제곱 연산을 사용하여 계산되며, 강력한 비선형성을 위한 특정 생성 다항식을 사용합니다.
복호화
복호화는 동일한 구조를 사용하지만 서브키를 역순(SK[47]에서 SK[0])으로 적용하고 덧셈 대신 뺄셈을 사용합니다.
알고리즘 비교
| 알고리즘 | 키 길이 | 블록 크기 | 보안 | 속도 |
|---|---|---|---|---|
| LOKI97 | 128/192/256 bits | 128 bits | 양호 | 중간 |
| AES | 128/192/256 bits | 128 bits | 우수 | 빠름 |
| Serpent | 128/192/256 bits | 128 bits | 우수 | 중간 |
| DES | 56 bits | 64 bits | 약함 | 빠름 |
보안 고려사항
- LOKI97의 완전 16라운드에 대한 실용적 공격은 알려진 바 없습니다. GF(2¹³) S-box 설계는 LOKI89에서 노출된 차분/선형 암호 분석 취약점을 극복하기 위해 특별히 설계되었습니다.
- 128비트 블록이 64비트 LOKI89/91의 Sweet32 생일 공격을 제거합니다. LOKI97에서 충돌은 ≈ 2⁶⁴ 블록(~148 EB)이 필요 — 실용적으로 불가능합니다.
- AES 평가에서 LOKI97 탈락은 효율성 판단이지 보안 판단이 아닙니다. AES 위원회는 Rijndael과 Twofish 대비 낮은 소프트웨어 성능을 이유로 지목했으며 암호학적 약점은 발견되지 않았습니다.
- 새로운 시스템에는 AES-128-GCM 또는 AES-256-GCM을 사용하세요. LOKI97은 기존 LOKI97 암호화 데이터 복호화 및 학술 연구에 적합합니다.
사용 사례
- 학술 암호 분석 연구: GF(2¹³) S-box 구조와 자기 참조 키 스케줄은 대수적 암호 설계 연구의 독특한 대상을 제공
- 호주 정부/국방 레거시 호환성: 1990년대 호주 정부나 국방 시스템에서 LOKI97으로 암호화된 데이터 읽기 또는 이전
- AES 후보 비교 연구: Serpent, Twofish, RC6, MARS와 함께 NIST AES 1라운드 후보 설계 트레이드오프 연구
- 비-AES 규정 준수: 문서화된 암호 분석이 있는 비-AES 암호화를 요구하는 조직 및 규제 환경