파이스텔 네트워크 시뮬레이터
DES 등 여러 블록 암호의 뼈대인 구조를 시뮬레이션합니다. 라운드 함수가 되돌릴 수 없어도 구조 자체는 항상 원문으로 되돌아간다는 것을 보여줍니다.
암호화 — 라운드별 (L, R)
| 초기 | L=5 | R=3 |
| 라운드1 | L=3 | R=13 |
| 라운드2 | L=13 | R=83 |
| 라운드3 | L=83 | R=255 |
| 라운드4 | L=255 | R=140 |
최종 암호문 (L, R)(255, 140)
복호화 결과(5, 3) — 원문과 일치
라운드 함수는 데모용(라운드키와 XOR한 뒤 3비트 좌회전)입니다. 이 함수를 알아도 상관없습니다 — 파이스텔 구조의 핵심은 라운드 함수가 무엇이든(심지어 정보를 버리는 함수여도) 같은 라운드키로 반대 순서를 돌리면 항상 원문으로 돌아온다는 점입니다.
사용 방법
- 1좌우 절반(L, R) 초기값과 라운드키 목록을 입력합니다.
- 2라운드마다 L, R이 어떻게 갱신되는지 확인합니다.
- 3같은 라운드키로 복호화하면 정확히 원문으로 돌아오는지 확인합니다.
자주 묻는 질문
평문을 좌우 절반(L, R)으로 나눠 라운드마다 L' = R, R' = L XOR F(R, 라운드키)로 갱신합니다. 복호화는 라운드를 반대 순서로 돌리면서 같은 식을 적용하면 정확히 원래 L, R로 돌아옵니다.
F는 XOR로만 쓰이고, XOR은 같은 값을 두 번 XOR하면 원래대로 돌아오는 성질(A XOR B XOR B = A)이 있습니다. F 자신을 거꾸로 계산할 필요가 없이, 그냥 같은 F(같은 입력)를 한 번 더 계산해서 XOR하기만 하면 됩니다. 그래서 F가 정보를 마구 버리는 함수(예: 상수 함수)여도 전체 구조는 항상 되돌릴 수 있습니다.
F가 되돌릴 필요가 없다는 것은 F를 마음껏 복잡하고 비선형적으로(암호 분석을 어렵게) 설계해도 전체 암호의 복호화 가능성에는 영향이 없다는 뜻입니다. 그래서 설계자는 "안전한 F를 만드는 것"에만 집중할 수 있습니다.
알아두면 좋은 점
- L0=5, R0=3, 키=[2,7], F(r,k)=r XOR k인 예제를 손으로 계산해(최종 (L,R)=(4,0)) 대조 검증했습니다.
- 정보를 완전히 버리는 극단적인 라운드 함수(상수 함수, 최하위 비트만 반환, 덧셈처럼 XOR이 아닌 연산)로도 무작위 입력 수십 개에서 암호화 후 복호화가 항상 정확히 원문으로 돌아오는지 확인했습니다 — 구조 자체의 수학적 성질이라 외부 자료 대조가 필요 없었습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.