2차 세계대전 암호 해독, 자바스크립트(JavaScript)로 재현!

by DD
4개월 전
조회수 22

2차 세계 대전 당시 독일군의 암호 체계였던 에니그마 머신(Enigma Machine)의 작동 원리를 자바스크립트(JavaScript)로 시뮬레이션

플러그보드(Plugboard), 로터(Rotor), 반사판(Reflector) 등 에니그마 머신의 핵심 부품을 수학적 순열(Permutation) 개념으로 모델링

로터 회전(Rotor Stepping) 메커니즘 구현을 통해 복잡한 암호화 과정을 시뮬레이션하고, 총 1.58 x 10^20가지 경우의 수를 계산

자바스크립트(JavaScript)를 활용하여 에니그마 머신을 구현하는 과정은 암호학적 원리(Cryptographic Principles)에 대한 이해를 높이는 데 기여

에니그마 머신(Enigma Machine)의 수학적 모델링

에니그마 머신(Enigma Machine)은 수학적 순열(Permutation)을 기반으로 하는 복잡한 암호화 시스템이다. 특히, 플러그보드(Plugboard)는 최대 13개의 문자 쌍을 교환하는 2-사이클(2-cycles) 순열로, 반사판(Reflector)은 13개의 전치(Transpositions)로 구성된다. 이러한 구성 요소들은 자기 반전(Self-Inverse)의 특징을 가지며, 암호화 과정에서 핵심적인 역할을 수행한다.

자바스크립트(JavaScript)를 활용한 시뮬레이션 구현

자바스크립트(JavaScript)를 사용하여 에니그마 머신(Enigma Machine)을 시뮬레이션하는 과정은 각 구성 요소의 순열 매핑을 코드로 표현하는 것이다. 로터(Rotor)의 회전(Stepping) 메커니즘을 정확하게 구현하는 것이 핵심이며, 이는 암호화 알고리즘(Encryption Algorithm)의 복잡성을 이해하는 데 도움을 준다. 특히, 이중 회전(Double-Stepping)과 같은 예외 상황을 처리하는 로직 구현이 중요하다.

로터(Rotor) 회전(Stepping) 메커니즘의 중요성

에니그마 머신(Enigma Machine)의 진정한 복잡성은 로터(Rotor)의 회전(Stepping)에서 비롯된다. 각 키 입력 시 오른쪽 로터(Rotor)가 한 칸씩 회전하며, 특정 '전환 노치(Turnover Notch)'에 도달하면 왼쪽 로터가 회전한다. 이러한 오도미터(Odometer) 방식의 회전은 각 문자에 대해 다른 순열을 적용하여 다중 치환 암호(Polyalphabetic Cipher)를 생성한다. 따라서, 로터 회전의 정확한 구현은 시뮬레이션의 핵심이다.

코드 구현 및 성능 최적화

시뮬레이션 구현 시, 암호화 함수(Encryption Function) 내에서 플러그보드(Plugboard), 로터(Rotor), 반사판(Reflector)의 순열을 순차적으로 적용해야 한다. 특히, 로터(Rotor)의 전진 및 후진 과정을 정확하게 처리하는 것이 중요하다. 또한, 코드 가독성(Code Readability)을 높이고, 잠재적인 성능 병목(Performance Bottleneck)을 해결하기 위해 코드 구조를 개선하는 노력이 필요하다.

Enigma Machine Simulator