본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 20. 01:27

Show HN: Ariadne – 비주기적 암호학 (aperiodic cryptography)의 Rust 구현체

요약

Ariadne Suite는 Labyrinth Construction(미로 구조)을 기반으로 설계된 비주기적(aperiodic) 암호화 프로토콜의 Rust 구현체입니다. 이 프로토콜은 데이터 블록마다 동적으로 경로를 재발견하는 Emergent Path 메커니즘을 통해 매번 다른 암호화 변환을 적용하여 보안성을 높이는 것을 목표로 합니다.

핵심 포인트

  • Labyrinth(미로)와 Thread(실)라는 두 가지 핵심 개념을 통해 비주기적 암호화 아키텍처를 구축함
  • Emergent Path 메커니즘을 사용하여 데이터 스트림 내에 오버헤드 없이 비밀 경로를 생성함
  • 매 블록마다 내부 상태를 업데이트하는 암호학적 래칫(cryptographic ratchet)을 통해 비주기성을 보장함
  • 현재 검증되지 않은 실험적 알파(alpha) 버전으로 연구 및 교육 목적으로만 사용 권장됨

Ariadne Suite

ariadne.ciphernomad.org

이 저장소는 Ariadne Protocol의 표준 Rust 구현체인 Ariadne Suite를 포함하고 있습니다. 이 프로토콜은 비주기적 (aperiodic), 즉 반복되지 않는 암호화 변환을 제공하기 위해 **Labyrinth Construction (미로 구조)**을 중심으로 설계된 새로운 암호학적 아키텍처입니다.

이 프로젝트의 미션은 디지털 주권을 위한 탄력적인 오픈 소스 도구를 만드는 것입니다.

이는 공공재로서 공개된 독립적인 연구입니다. 프로젝트의 지속, 개발 및 향후 보안 감사(security audits)는 커뮤니티의 지원을 통해 자금이 조달됩니다.

donate.ciphernomad.org 에서 기여해 주세요

⚠️ 보안 경고 및 면책 조항 ⚠️

본 소프트웨어는 검증되지 않은 실험적 알파(alpha) 버전이며, 오직 연구 및 교육 목적으로만 제공됩니다.

여기에 포함된 암호학적 설계는 새로운 방식입니다. 표준화되고 검증된 프리미티브 (BLAKE3, XChaCha20, X25519)를 기반으로 구축되었으나, 상위 개념인 Ariadne Protocol의 보안성은 제3자 감사를 통해 공식적으로 검증되지 않았습니다.

실제 운영 환경(production)이나 실무 애플리케이션에 사용하지 마십시오.

사용에 따른 책임은 전적으로 사용자에게 있습니다. 본 소프트웨어는 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다.

Ariadne Protocol의 핵심 개념

이 프로토콜은 우리가 개발한 두 가지 핵심 아이디어인 Labyrinth(미로)와 Thread(실)를 기반으로 구축되었습니다.

The Labyrinth (미로): 결정론적으로 생성된 암호학적 Rounds (라운드)의 거대한 이진 트리입니다. 이는 비밀이 아닌 공유된 공개 파라미터(public parameter)가 될 수 있습니다.
The Thread (실): 작업 중에 Labyrinth의 노드들을 통과하며 생성되는 비밀스럽고 비주기적인 경로입니다.

Emergent Path (발현적 경로) 메커니즘

이 프로토콜의 핵심 혁신은 Thread가 형성되는 방식에 있습니다. Thread는 저장되거나 전송되지 않습니다. 대신, 각 데이터 블록에 대해 경로를 동적으로 재발견합니다. 암호 가상 머신 (CVM, Cryptographic Virtual Machine)은 자신의 비밀 상태(secret state)와 공개된 암호문 청크(ciphertext chunk)의 키 기반 해시(keyed hash)를 계산함으로써 Labyrinth에서의 다음 회전(왼쪽 또는 오른쪽)을 결정합니다.

공개된 암호문(ciphertext)을 보더라도 비밀키(secret key)와 상태(state)가 없는 공격자는 이 해시를 계산할 수 없습니다. 경로는 데이터 스트림(data stream) 속에 오버헤드(overhead) 없이 엮여 있어 비밀로 유지됩니다.

설계 단계부터 비주기적 (Aperiodic by Design)

Ariadne 프로토콜은 모든 데이터 블록에 정확히 동일한 연산 시퀀스를 적용하는 기존의 주기적 암호(periodic ciphers)와 근본적으로 다릅니다.

우리의 설계에서는 매 블록마다 CVM의 내부 상태(internal state)가 업데이트되며, 이는 암호학적 래칫(cryptographic ratchet) 역할을 합니다. 이 새로운 상태는 다음 블록을 위한 키와 경로를 도출하는 데 사용됩니다. 상태 전이(state transition)는 안전한 의사 난수 함수(pseudo-random function)이므로, CVM의 상태는 결코 반복되지 않습니다.

이를 통해 암호학적 변환(cryptographic transformations) 시퀀스가 비주기적 (aperiodic) 임을 보장합니다. 즉, 동일한 메시지 내에서도 그 어떤 두 블록도 정확히 같은 방식으로 처리되지 않습니다. 각 단계는 해당 시점까지의 전체 연산 이력에 따른 고유한 함수입니다.

내재된 변조 저항성 (Inherent Tamper Resistance)

이러한 상태 유지형(stateful) 및 비주기적 설계는 내재적인 변조 흔적(tamper evidence)을 제공합니다. 만약 공격자가 암호문 스트림의 어떤 부분이라도 순서를 바꾸거나, 자르거나, 수정한다면, 실타래는 끊어지게 (snapped) 됩니다. CVM의 내부 상태는 정당한 경로로부터 돌이킬 수 없이 벗어나게 되며, 이후의 모든 데이터는 의미 없는 의사 난수 노이즈(pseudorandom noise)로 처리됩니다.

설계상의 한계 및 트레이드오프 (Design Limitations & Trade-offs)

유한한 경로 길이 (Finite Path Length): Labyrinth는 유한한 깊이를 가집니다. 이는 단일 메시지의 최대 크기에 제한을 두며, 그 크기는 Labyrinth Depth × Block Size의 곱으로 결정됩니다.

무작위 접근 불가 (No Random Access): 특정 블록의 올바른 경로와 상태를 결정하기 위해서는 이전의 모든 블록이 필요하므로, 복호화(decryption) 시 첫 번째 블록부터 순차적인 처리(sequential processing)가 필요합니다.

Ariadne Suite 생태계

이 워크스페이스는 명확성과 결합성(composability)을 위해 정리된 스위트(suite)의 핵심 구성 요소들을 포함하고 있습니다.

ariadne-core: 핵심 데이터 구조 및 스위트의 공유 언어.
ariadne-generator: 결정론적(deterministic) Labyrinth 팩토리.
ariadne-primitives

: 저수준 암호화 엔진 (CFB, MAC, KDF, Ratchet).
ariadne-etm

: 견고한 무상태 (stateless) AEAD. 무상태 사용 사례를 위한 권장 시작점입니다.
ariadne-transport-static

: 공유된 정적 (static) Labyrinth를 사용하는 순방향 비밀성 (forward-secret) 전송 프로토콜.
ariadne-transport-ephemeral

: 세션당 고유한 Labyrinth를 생성하는 순방향 비밀성 (forward-secret) 전송 프로토콜.

시작하기

이 스위트 (suite)를 사용하는 권장 방법은 상위 수준 (high-level) 크레이트 (crates)를 의존성으로 추가하는 것입니다. 안정성을 위해 의존성을 특정 릴리스 태그 (release tag)로 고정하십시오.

빠른 시작: Encrypt-then-MAC (EtM)

이 예제는 권장되는 ariadne-etm 무상태 (stateless) AEAD를 사용합니다.

1. Cargo.toml에 추가:

[dependencies]
ariadne-etm = { git = "https://github.com/ciphernomad-org/ariadne.git", tag = "v0.1.0" }
ariadne-generator = { git = "https://github.com/ciphernomad-org/ariadne.git", tag = "v0.1.0" }

2. 코드에서 사용:

use ariadne_etm::{open, seal};
use ariadne_generator::LabyrinthGenerator;
fn main() {
...

*더 자세한 예제는 각 크레이트 (crate)의 examples 디렉토리를 참조하십시오.

빌드 및 실행

# 저장소 복제 (Clone)
git clone https://github.com/ciphernomad-org/ariadne.git
cd ariadne
...

철학 및 기여

Ariadne 프로토콜은 모든 연산이 그 이력 (history)과 암호학적으로 연결되는 상태 유지형 (stateful), 비주기적 암호학 (aperiodic cryptography)에 대한 우리의 탐구입니다.

커뮤니티 참여는 기술적 가치 (technical merit)를 기준으로 평가됩니다. 버그 보고 또는 기능 제안은 새로운 이슈 (issue)를 생성해 주세요. 아키텍처 논의 또는 설계 제안은 토론 스레드 (discussion thread)를 생성해 주세요.

Copyright (c) 2025 CipherNomad contact@ciphernomad.org
SPDX-License-Identifier: CC0-1.0

AI 자동 생성 콘텐츠

본 콘텐츠는 HN Design Systems의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0