- 암호학 기반 네트워킹 스택으로, LoRa·패킷 라디오·WiFi 등 다양한 매체에서 작동하며 초저속·고지연 환경에서도 안정적 통신을 지원
- 종단 간 암호화, 발신자 익명성, 자동 구성 멀티홉 라우팅, 위조 불가능한 전달 확인 등 보안 중심 기능을 포함
- IP 스택에 의존하지 않으며, Python 3 환경에서 커널 모듈 없이 사용자 공간에서 실행 가능
- 저비용·자율적 네트워크 구축을 목표로, 중앙 통제나 검열 없이 수천 개의 독립 네트워크를 상호 연결 가능
- 분산형 통신 인프라 구축과 오프그리드 네트워킹을 위한 오픈소스 도구로서, 개발자와 연구자에게 높은 활용 가치
Reticulum 개요
- Reticulum은 암호학 기반 네트워킹 스택으로, 일반 하드웨어를 이용해 지역 및 광역 네트워크를 구축할 수 있음
- 고지연·저대역폭 환경에서도 작동
- 종단 간 암호화, 발신자 익명성, 자동 구성 멀티홉 전송, 효율적 주소 지정, 위조 불가능한 전달 확인 기능 제공
- 목표는 누구나 자신의 네트워크 운영자가 되어, 중앙 통제 없이 자율적·연결 가능한 네트워크를 구축하도록 하는 것
- Reticulum은 단일 네트워크가 아니라, 수천 개의 독립 네트워크를 구축하는 도구로 설계됨
- IP를 기반으로 동작할 수도 있어, 인터넷이나 사설망 위에서 터널링 가능
- Python 3 환경에서 실행, 커널 모듈이나 드라이버 불필요
주요 기능
-
글로벌 고유 주소 지정과 자동 구성 멀티홉 라우팅 지원
- 다양한 물리 매체와 토폴로지에서 데이터 전송 가능
- 발신자 익명성 보장: 패킷에 소스 주소 포함하지 않음
-
비대칭 X25519 암호화와 Ed25519 서명 기반 통신
- 512비트 Curve25519 키셋 사용
- Forward Secrecy 지원, AES-256-CBC 암호화 및 SHA256 HMAC 인증
- 확장 가능한 인터페이스 시스템으로 사용자 정의 인터페이스 추가 가능
- 간단한 API 제공으로 분산형 애플리케이션 개발 용이
- 대용량 데이터 전송 지원, 자동 압축·체크섬·전송 조정 기능 포함
- 경량 Request/Response 메커니즘과 효율적 링크 설정(3패킷, 297바이트)
참조 구현 및 프로토콜
- 이 저장소의 Python 코드가 공식 참조 구현이며, 프로토콜 정의의 기준
- Reticulum License로 배포, 프로토콜은 2016년 퍼블릭 도메인에 기증
- 호환성은 참조 구현과의 완전한 상호운용성으로 정의됨
활용 예시
- rnsh: Reticulum 기반 원격 셸 세션
- LXMF: 분산형 메시지 전송 프로토콜
- LXST: 실시간 오디오·신호 전송 프레임워크
- Nomad Network: 오프그리드 암호화 메시 통신 플랫폼
- Sideband: 파일 전송·음성통화·지도 기능을 갖춘 GUI 앱
- MeshChat: 웹 기반 LXMF 클라이언트, 이미지·음성·파일 전송 지원
지원 매체 및 장치
- 최소 5bps 이상의 반이중 채널과 500바이트 MTU를 지원하는 모든 매체에서 작동
- LoRa, 패킷 라디오, WiFi, 이더넷, 광통신 링크 등 사용 가능
- RNode는 Reticulum용 LoRa 인터페이스로, 직접 제작 또는 완제품 구매 가능
- Raspberry Pi 등에서 LoRa·패킷 라디오·WiFi를 혼합 구성 가능
지원 인터페이스
- 이더넷, LoRa(RNode), 패킷 라디오 TNC, KISS 모뎀, 시리얼 장치, TCP/UDP, stdio 파이프 등 지원
- 사용자 정의 인터페이스 모듈 추가 가능, 실사용 검증된 PR 환영
성능 및 상태
- 목표 성능 범위: 250bps~1Gbps, 현재 약 150bps~500Mbps
- 핵심 프로토콜 기능 완전 구현, API와 포맷 안정 상태
연결 부트스트래핑
- Reticulum은 가입형 서비스가 아닌 자율 네트워크
- 커뮤니티가 운영하는 공개 엔트리포인트 디렉터리를 통해 초기 연결 가능
- 예:
directory.rns.recipes,rmap.world
- 예:
암호학적 구성요소
- Curve25519 기반 512비트 키셋, Ed25519 서명, X25519 키 교환
- HKDF, AES-256-CBC, HMAC-SHA256, SHA-256/512 사용
- 기본적으로 OpenSSL과 PyCA/cryptography를 통해 제공
- 순수 Python 구현체도 포함되어 있으나, 보안 검증 수준이 낮음