신경망과 암호화 알고리즘이 놀라울 정도로 비슷한 이유
언뜻 보기에 전혀 다른 분야인 인공신경망과 대칭키 암호화 알고리즘이, 기저에 깔린 구조와 작동 방식이 매우 유사하다는 흥미로운 분석입니다. 두 분야 모두 순차적 및 병렬적 시퀀스 처리 방식, 선형과 비선형 레이어의 교차 반복, 그리고 행과 열을 교차 혼합(Mixing)하여 성능을 극대화하는 구조를 공유합니다. 이는 두 분야가 서로 아이디어를 베낀 것이 아니라, 약한 정확성 요구사항과 하드웨어 최적화라는 동일한 근본적 문제 해결 과정에서 자연스럽게 수렴 진화했기 때문입니다.
왜 신경망과 암호문은 그토록 비슷할까요? 언뜻 보기에 언어 모델을 훈련시키는 것과 데이터를 암호화하는 것은 완전히 다른 문제처럼 보입니다. 하나는 패턴을 학습해 텍스트를 생성하고, 다른 하나는 정보를 숨기기 위해 섞는 작업이니까요. 그러나 두 분야의 기저에 있는 알고리즘은 흥미로울 정도로 유사하며, 이는 단순히 한쪽이 아이디어를 따 온 것이 아닙니다.
시퀀스 처리: 순차적(Sequential) 방식 전통적인 순환 신경망(RNN)을 살펴봅시다. 텍스트 토큰을 순환 상태에 토큰 단위로 주입한 후 출력 텍스트를 생성합니다. (인코더-디코더 구조) 이는 SHA-3의 스펀지(Sponge) 구조와 구조적으로 완벽히 동일합니다. 상태에 바이트를 흡수(Absorbing)한 후 해시값을 짜내는(Squeezing) 방식이죠. 가변 길이 입력을 고정 크기 상태로 처리하려면 순차적으로 흡수하는 것이 자연스러운 선택이기에 이 유사성은 그리 놀랍지 않을 수 있습니다.
시퀀스 처리: 병렬(Parallel) 방식 현대 하드웨어는 병렬 처리에 최적화되어 있어 순차적 흡수 방식은 성능을 낭비합니다. 두 분야 모두 동일한 해결책을 찾았습니다. 순차적으로 실행하는 대신 비용이 많이 드는 함수 f를 모든 청크에 병렬로 실행한 뒤 단순한 덧셈으로 결합하는 것입니다. 단순한 덧셈만으로는 순서 정보가 사라지기 때문에, 두 접근 방식 모두 각 청크에 '위치 인코딩(Positional Encoding)'을 추가하여 순서를 복원합니다. 신경망에서 이 구조는 순차적 RNN을 개선한 트랜스포머(Transformer) 아키텍처를 구동합니다. 암호학에서는 가장 빠른 메시지 인증 코드(MAC)를 구동합니다.
기본 원시 구조: 동일하게 반복되는 선형 및 비선형 레이어의 교차 가변 길이 처리를 제거해 봅시다. 핵심 함수 내부에는 무엇이 있을까요? 두 분야 모두 동일한 패턴을 보입니다. '선형 변환 - 비선형 변환 - 반복'입니다. 선형 변환은 서로 다른 벡터 위치 사이에서 '혼합(Mixing)'을 제공하여 많은 벡터 요소가 다른 많은 요소에 영향을 미치게 합니다. 비선형 변환은 복잡성을 제공합니다. 비선형 변환이 없다면 레이어 스택 전체가 단일 선형 변환으로 퇴화해 버릴 것입니다. 두 분야 모두 맞춤형 구조를 만드는 대신 이 '동일한 레이어'를 여러 번 반복합니다. 이를 통해 연구 및 엔지니어링 노력을 집중시킬 수 있습니다. 즉, 분석하고 소프트웨어나 실리콘(하드웨어)에 최적화해야 할 레이어 유형이 단 하나뿐이게 됩니다.
효율적인 혼합: 행과 열의 교차 더 자세히 들여다봅시다. 두 분야 모두 상태를 그리드(Grid)로 구성하고 행(Row)을 혼합하는 것과 열(Column)을 혼합하는 것을 번갈아 가며 수행합니다. 신경망에서는 어텐션(Attention)이 시퀀스 위치(행) 전체를 혼합하고, 피드포워드(Feed-forward) 레이어가 각 위치(열) 내부를 혼합합니다. AES 암호에서는 ShiftRows가 열 전체에 걸쳐 순열을 수행하고 MixColumns가 그 내부를 결합합니다. ChaCha20 암호는 행 단위와 대각선 혼합을 번갈아 수행합니다. 이러한 분해된(Factored) 접근 방식은 전체 상태를 한 번에 혼합하는 것보다 종종 더 나은 성능을 보여줍니다. 혼합 단계가 선형보다 느릴 경우 점근적으로 더 빠른 경우가 많습니다. 예를 들어, 이차(Quadratic) 혼합 하에서 크기가 m인 n개의 행을 혼합하는 비용은 전체 행렬을 처리할 때의 O(n²m²)에 비해 O(nm²)입니다. 더 중요한 점은 각 행이 독립적으로 처리되고 작업 세트(Working set) 크기가 작아 더 많은 병렬성을 제공하고 캐시 및 레지스터에 더 잘 맞는다는 것입니다.
이러한 유사성을 만들어낸 원인은 무엇일까요? 이러한 유사성은 피상적인 아이디어 복사로 보이지 않습니다. 두 분야의 연구 논문과 역사를 살펴보면 분야 간에 아이디어를 복사한 흔적이 많지 않습니다. 오히려 문제 정의 자체에 근본적인 유사성이 존재하기 때문입니다. 신경망과 대칭키 암호학을 다른 알고리즘 설계 분야와 구분 짓는 것은 다음과 같은 세 가지 속성입니다.
- 알고리즘에 요구되는 '정확성(Correctness) 속성'이 놀랍도록 약합니다. 대부분의 알고리즘은 강력한 정확성 요구 사항에 직면합니다. 컴파일러는 프로그램의 의미를 보존해야 하고, 데이터베이스는 저장된 내용을 정확히 반환해야 하며, 네트워크 라우터는 패킷을 전달해야 합니다. 이에 비해 암호학은 정보 손실을 피하기 위한 '가역성(Invertibility)'만 필요로 합니다. 신경망 역시 (중략)