# 더블 셔플링 (Double Shuffling)

**더블 셔플링(이중 셔플)**은 셔플 알고리즘을 두 번 수행하는 방법입니다. 이중 셔플은 결과 테이블의 내용으로부터 그 테이블을 구성할 때 사용된 순서가 드러나지 않게 합니다. 어떤 의미에서 이중 셔플은 키로 선택된 순열을 생성하고 선택을 만든 셔플 순서를 숨기는 일종의 단방향 정보 밸브입니다.

## 암호에서 셔플이 쓰이는 곳

일부 암호 설계는 치환 테이블(S-박스 등)을 키에 따라 만들기 위해, 처음에 정해진 순서로 놓인 테이블을 키로 초기화한 난수 생성기(RNG)의 출력으로 섞습니다. 피셔–예이츠(Fisher–Yates) 셔플 같은 표준 알고리즘은 각 단계에서 난수 하나로 교환할 위치를 고릅니다. 이렇게 만든 테이블은 암호의 비밀 상태가 됩니다.

## 단일 셔플의 문제

테이블의 처음 순서는 공개된 정보이므로, 숨겨야 할 것은 원래 순서가 아니라 셔플에 쓰인 **난수 수열**입니다. 셔플을 한 번만 하면, 공격자가 어떤 방법으로든 완성된 테이블의 내용을 알아냈을 때 알고리즘을 거꾸로 따라가 각 단계에서 어떤 위치가 선택되었는지, 즉 난수 생성기가 낸 값을 상당 부분 복원할 수 있습니다. 난수 생성기가 선형 피드백 시프트 레지스터(LFSR)처럼 구조가 단순하면, 이렇게 얻은 값으로 생성기의 내부 상태와 이후의 키 수열까지 계산할 수 있습니다.

## 이중 셔플이 숨기는 방식

- 같은 테이블을 난수 수열로 한 번 섞습니다.
- 이어서 그 결과를 다음 난수 수열로 다시 섞습니다.
- 최종 테이블은 셀 수 없이 많은 서로 다른 “첫 번째 셔플 + 두 번째 셔플” 조합으로 만들어질 수 있습니다. 중간 상태가 어떤 순열이었는지 알 수 없으므로, 최종 테이블을 알아도 어느 난수 수열이 쓰였는지 특정할 수 없습니다.

이렇게 정보는 키에서 테이블 쪽으로만 흐르고, 테이블에서 키 생성기 쪽으로는 거슬러 올라가기 어렵습니다. 이것이 “단방향 정보 밸브”라는 표현의 뜻입니다.

## 장점과 한계

- **키 생성기 보호:** 테이블이 노출되더라도 난수 생성기의 출력과 내부 상태를 복원하기 어렵게 만들어, 생성기의 구조적 약점이 바로 드러나지 않게 합니다.
- **계산 오버헤드:** 셔플을 두 번 하므로 테이블 초기화에 드는 난수와 연산이 두 배로 늘어납니다. 다만 대개 키 설정 때 한 번만 하는 작업입니다.
- **강력한 암호화의 대체재가 아님:** 이중 셔플은 암호 설계의 한 구성 요소일 뿐이며, 무작위성의 품질은 사용하는 난수 생성기에 달려 있습니다. 전체 암호의 안전성은 별도로 분석해야 합니다.

**간단히 말해서,** 이중 셔플은 키로 정해진 순열을 만들면서, 그 순열을 만든 난수 수열은 결과에서 읽어 낼 수 없도록 숨기는 방법입니다.

---
출처: https://achivx.kr/glossary/double-shuffling-%EB%8D%94%EB%B8%94-%EC%85%94%ED%94%8C%EB%A7%81/ · ACHIVX 용어 사전 · 수정일 2026-10-20
