
암호 기반 네트워킹 스택으로, LoRa, 패킷 라디오, WiFi 및 그 사이의 모든 것을 사용하여 중단 불가능한 네트워크를 구축합니다.
Reticulum 네트워크 스택 <img align="right" src="https://static.pepy.tech/personalized-badge/rns?period=month&units=international_system&left_color=grey&right_color=blue&left_text=Installs/month" style="padding-left:10px"/><a href="https://github.com/markqvist/Reticulum/actions/workflows/build.yml"><img align="right" src="https://github.com/markqvist/Reticulum/actions/workflows/build.yml/badge.svg"/></a> ========== > [!WARNING] > 현재 상당수의 성급하게 출시된, 부정확하고, 의심스럽고, 직접적으로 유해하며, 대부분의 경우 전적으로 LLM이 생성한 Reticulum 구현체, "문서", "가이드" 및 사용자 대상 애플리케이션의 가짜들이 세련되었지만 궁극적으로 오해를 불러일으키거나 완전히 기만적인 주장으로 마케팅되고 있습니다. > > 더 자세한 정보는 매뉴얼의 [Brandolini's Reference](https://reticulum.network/manual/brandolinis.html) 장의 관련 섹션을 참조하십시오. 알려진 좋은 커뮤니티 구현체는 이 readme의 [Community Implementations](#community-implementations) 섹션에 나열되어 있습니다. Reticulum 커뮤니티가 인정한 소프트웨어와 프로젝트는 매뉴얼의 [Programs Using Reticulum](https://reticulum.network/manual/software.html) 장을 참조하십시오. > > RNS 소스 코드나 문서에서 파생된 기계 생성 콘텐츠(예: "구현체", 판매용 "가이드" 등)는 여러 잘 문서화된 사례에서 복사 및 배포 권한을 부여한 오픈 소스 라이선스를 위반하고 있습니다. > > 그러한 프로젝트가 주장하는 저작권 주장이나 라이선스 부여(Apache, GPL 등)는 [무효 부여](https://reticulum.network/manual/brandolinis.html#void-grants-legal-foundations-of-machine-generated-code)입니다. 위반자 자신과 침해 파생물을 사용하는 모든 다운스트림 프로젝트는 법적 결과에 대해 **직접적**으로 그리고 개인적으로 책임을 집니다. > > 이러한 "프로젝트"를 **사용하지 마십시오**. 이는 우리가 지난 10년 동안 신중하게 구축해 온 전체 생태계에 대한 위험입니다. <p align="center"><img width="200" src="https://assets.kitploit.com/production/public/readmes/10927/035f499a1619cfb6d2da2ca99539e9e9d122bb18addf2ab83d3413592e7662f9.png"></p> *이 저장소는 [공개 미러](https://github.com/markqvist/reticulum/blob/master/MIRROR.md)입니다. 모든 개발은 다른 곳에서 이루어집니다.* 이 시스템의 근본적인 철학과 목표를 이해하려면 [Zen of Reticulum](https://github.com/markqvist/reticulum/blob/master/Zen%20of%20Reticulum.md)을 읽어보십시오. Reticulum은 쉽게 구할 수 있는 하드웨어로 근거리 및 광역 네트워크를 구축하기 위한 암호화 기반 네트워킹 스택입니다. 매우 높은 지연 시간과 극히 낮은 대역폭에서도 작동할 수 있습니다. Reticulum을 사용하면 기성 도구로 광역 네트워크를 구축할 수 있으며, 종단 간 암호화 및 연결성, 개시자 익명성, 자동 구성되는 암호화 기반 다중 홉 전송, 효율적인 주소 지정, 위조 불가능한 전달 확인 등을 제공합니다. Reticulum의 비전은 누구나 자신의 네트워크 운영자가 될 수 있도록 하고, 수많은 독립적이고 상호 연결 가능하며 자율적인 네트워크로 광대한 영역을 저렴하고 쉽게 커버할 수 있도록 하는 것입니다. Reticulum은 *하나의* 네트워크가 **아닙니다**. *수천 개의 네트워크*를 구축하기 위한 **도구**입니다. 킬 스위치, 감시, 검열 및 통제가 없는 네트워크. 자유롭게 상호 운용하고, 서로 연합하고 분리할 수 있으며, 중앙 감독이 필요 없는 네트워크. 인간을 위한 네트워크. *사람들을 위한 네트워크*. Reticulum은 완전한 네트워킹 스택이며 IP나 상위 계층에 의존하지 않지만, Reticulum의 기반 전송 매체로 IP를 사용하는 것도 가능합니다. 따라서 Reticulum을 인터넷이나 사설 IP 네트워크를 통해 터널링하는 것은 간단합니다. 전통적인 네트워킹 스택에 대한 의존성이 없기 때문에, 암호화 원칙에 직접 기반하여 구축된 네트워킹 스택을 구현하는 데 사용되어 온 오버헤드를 줄일 수 있으며, 개방적이고 신뢰가 필요 없는 네트워크에서도 복원력과 안정적인 기능을 제공합니다. 커널 모듈이나 드라이버가 필요하지 않습니다. Reticulum은 완전히 사용자 영역에서 실행되며, Python 3가 실행되는 거의 모든 시스템에서 실행될 수 있습니다. ## 매뉴얼 읽기 Reticulum의 전체 문서는 [markqvist.github.io/Reticulum/manual/](https://markqvist.github.io/Reticulum/manual/)에서 확인할 수 있습니다. [Reticulum 매뉴얼을 PDF로](https://github.com/markqvist/Reticulum/releases/latest/download/Reticulum.Manual.pdf) 또는 [EPUB 형식의 전자책으로](https://github.com/markqvist/Reticulum/releases/latest/download/Reticulum.Manual.epub) 다운로드할 수도 있습니다. 더 많은 정보는 [reticulum.network](https://reticulum.network/)와 [위키의 FAQ 섹션](https://github.com/markqvist/Reticulum/wiki/Frequently-Asked-Questions)을 참조하십시오. ## 주요 기능 - 조정이 필요 없는 전역적으로 고유한 주소 지정 및 식별 - 이기종 전송 매체를 통한 완전 자동 구성 다중 홉 라우팅 - 이기종 토폴로지에 대한 유연한 확장성 - Reticulum은 모든 물리적 매체와 토폴로지의 혼합을 통해 데이터를 전송할 수 있습니다 - 저대역폭 네트워크가 대규모 고대역폭 네트워크와 공존하고 상호 운용할 수 있습니다 - 개시자 익명성, 자신의 신원을 드러내지 않고 통신 - Reticulum은 어떤 패킷에도 출발지 주소를 포함하지 않습니다 - 모든 통신의 기반으로서 비대칭 X25519 암호화 및 Ed25519 서명 - 기초적인 Reticulum Identity Keys는 512비트 타원 곡선 키셋입니다 - 단일 패킷과 링크 모두에 대해 모든 통신 유형에서 순방향 비밀성(Forward Secrecy) 사용 가능 - Reticulum은 암호화된 토큰에 대해 다음 형식을 사용합니다: - Curve25519의 ECDH 키 교환에서 파생된 패킷별 및 링크별 임시 키 - PKCS7 패딩을 사용하는 CBC 모드의 AES-256 - 인증을 위한 SHA256을 사용하는 HMAC - IV는 os.urandom()을 통해 생성됩니다 - 위조 불가능한 패킷 전달 확인 - 유연하고 확장 가능한 인터페이스 시스템 - Reticulum은 다양한 내장 인터페이스 유형을 포함합니다 - 사용자 또는 커뮤니티가 제공하는 사용자 정의 인터페이스 유형을 로드하고 활용하는 기능 - 무엇이든 통해 통신하기 위한 자신만의 사용자 정의 인터페이스를 쉽게 생성 - 모든 지원 인터페이스 유형에서의 인증 및 가상 네트워크 분할 - 직관적이고 사용하기 쉬운 API - 소켓 API보다 더 간단하고 사용하기 쉽지만 더 강력합니다 - 분산 및 탈중앙화 애플리케이션 구축을 훨씬 간단하게 만듭니다 - 임의의 양의 데이터를 안정적이고 효율적으로 전송 - Reticulum은 몇 바이트의 데이터나 수 기가바이트의 파일을 처리할 수 있습니다 - 시퀀싱, 압축, 전송 조정 및 체크섬이 자동으로 이루어집니다 - API는 사용하기 매우 쉽고 전송 진행 상황을 제공합니다 - 경량이고 유연하며 확장 가능한 요청/응답 메커니즘 - 효율적인 링크 설정 - 암호화되고 검증된 링크를 설정하는 총 비용은 단 3개의 패킷, 총 297바이트입니다 - 링크를 열어 두는 비용은 초당 0.44비트에 불과합니다 - Channel 및 Buffer 메커니즘을 통한 안정적인 순차 전달 ## 커뮤니티 리소스 여기에 나열된 참조는 Reticulum 프로젝트나 그 유지관리자가 운영, 관리 또는 중재하지 않습니다. 이는 Reticulum에 대해 더 알고자 하는 모든 사람의 이익을 위해 커뮤니티의 헌신적이고 독립적인 자원봉사자들이 제공하는 것입니다. - [Reticulum Community Wiki](https://reticulum.miraheze.org/wiki) - [RNS Recipes](https://rns.recipes/) - [RNS Moscow](https://rns.moscow/) - [RMAP.world](https://rmap.world/) 더 이상 정확하지 않거나, 부정확하거나, 단순히 최신 상태가 아닌 것을 발견하더라도 이러한 리소스의 유지관리자에게 요구하거나 불평하지 마십시오. 대신 위의 창작자들이 스스로 했던 것처럼, 여러분이 보고 싶어 하는 기여를 직접 작업하고 제공함으로써 도움을 주고 개선하는 임무를 스스로 맡으십시오. ## 참조 구현 이 저장소의 Python 코드는 Reticulum의 참조 구현입니다. Reticulum 프로토콜은 이 참조 구현과 그에 관련된 매뉴얼에 의해 전적으로 그리고 권위 있게 정의됩니다. 이는 Reticulum Identity `<bc7291552be7a58f361522990465165c>`로 식별되는 Mark Qvist가 유지관리합니다. 2차 프로토콜 사양 파생물은 현재 존재하지 않으며 앞으로도 결코 존재하지 않을 것입니다. 실행 가능하고, 기능적이며, 테스트 가능하고, 배포되어 전 세계에서 24시간 연중무휴로 운영되는 사양보다 더 나은 사양은 얻을 수 없습니다. Reticulum을 위한 별도의 파생된 "공식 사양", "RFC" 또는 이와 유사한 것은 존재하지 않으며 앞으로도 결코 존재하지 않을 것입니다: **참조 구현이 *곧* 최종적이고 권위 있는 사양입니다.** Reticulum 프로토콜과의 호환성은 이 참조 구현과의 완전한 상호 운용성과 충분한 기능적 동등성을 갖는 것으로 정의됩니다. 이를 달성하는 특정 프로토콜 구현은 Reticulum입니다. 그렇지 않은 것은 Reticulum이 아닙니다. 참조 구현은 Reticulum License에 따라 라이선스가 부여됩니다. Reticulum 프로토콜은 2016년에 퍼블릭 도메인으로 헌정되었습니다. ## 커뮤니티 구현체 여기에 나열된 구현체들은 와이어 호환성, 충분한 기능 동등성, 합리적인 보안 및 개발 관행, 장기적인 헌신과 구현 품질에 대한 관심을 입증했습니다. 또한 최소 18개월의 활발한 개발 실적을 보유하고 있습니다. 가장 중요한 것은, 그들의 개발자와 유지관리자가 실제로 자신이 무엇을 하는지 알고 있으며 전체 Reticulum 생태계를 개선하려는 헌신을 가지고 있다고 커뮤니티가 인정한다는 것입니다. - [Chad Atterman](https://github.com/attermann)의 [microReticulum](https://github.com/attermann/microReticulum/)은 32비트 마이크로컨트롤러를 대상으로 하는 C++ 구현입니다. - [Quad4](https://quad4.io/)의 [Reticulum-Go](https://reticulum-go.quad4.io/)는 데스크톱, 모바일 및 임베디드 시스템을 모두 대상으로 하는 Go 구현입니다. *위에 나열되지 않은 구현체의 유지관리자이며, 동일한 엄격함과 헌신의 기준을 따라 포함될 가치가 있다고 생각한다면, 여러분의 제안을 환영합니다.* --- **경고!** 현재 상당수의 성급하게 출시된, 부정확하고, 의심스럽고, 직접적으로 유해하며, 대부분의 경우 전적으로 LLM이 생성한 Reticulum 구현체(및 사용자 대상 애플리케이션)의 가짜들이 세련되었지만 궁극적으로 오해를 불러일으키거나 완전히 기만적인 주장으로 마케팅되고 밀려나고 있습니다. 이들 대부분은 빠른 관심이나 금전적 이득을 노린 것이거나, 완전히 검토되지 않았거나, 호환되지 않거나, 유지관리나 인간의 감독이 없거나, 커뮤니티를 분열시키려고 적극적으로 시도하는 것이거나, 이들의 조합입니다. --- 이 주제에 대한 더 광범위한 정보는 매뉴얼의 [Brandolini's Reference](https://reticulum.network/manual/brandolinis.html) 장을 읽어보십시오(법적 기초에 대해서는 특히 [Void Grants](https://reticulum.network/manual/brandolinis.html#void-grants-legal-foundations-of-machine-generated-code)를 참조하십시오). 이 장은 매우 길고 매우 상세하며, 이러한 문제에 대한 진화하는 섹션별 참조 자료로 의도된 정중하고 신중한 분석입니다. 만약 여러분이 전체 현상의 특정 발현 중 하나에 대한 대응을 예시로 사용한, 짧고 여과되지 않으며 상당히 분노한 버전을 선호한다면, [Yes, I am Angry](https://github.com/markqvist/reticulum/blob/master/docs/history/2026_09_18_Yes_I_am_Angry.md)를 읽을 수 있습니다. 그러한 소통 방식을 감당할 수 있다면, 매우 다른 언어로 같은 요점을 전달합니다. 핵심 Reticulum 유지관리자와 개발자들은 **이러한 "구현체"를 사용하지 말 것을 강력히 권고합니다**. 악의적이거나, 관심을 끌려 하거나, 무능한 소수의 개인들의 [기만적이고 자기 이익을 위한 행동](https://reticulum.network/manual/brandolinis.html#a-persistent-but-fragile-triad)은 개발자, 노드 운영자, 사용자, 그리고 커뮤니티와 Reticulum 프로젝트 전반에 상당한 [손해와 시간 및 자원의 낭비](https://reticulum.network/manual/brandolinis.html#intent-consequence)를 초래했습니다. 우리는 모든 사용자에게 위에 나열되지 않은 구현체의 잠재적 사용을 [평가](https://reticulum.network/manual/brandolinis.html#evaluating-a-reticulum-implementation)할 때 주의, 상식, 건강한 회의주의를 발휘할 것을 친절하지만 긴급하게 요청합니다. 그리고 **그럼에도 불구하고 그렇게 하기로 선택하는 것은 무책임하거나 악의적인 개인으로부터 발생할 수 있는 잠재적 피해에 대한 책임을 자신에게로 전가하는 것임을 받아들이십시오**. ## Reticulum 애플리케이션의 예 Reticulum이 무엇을 할 수 있는지 빠르게 파악하고 싶다면, 매뉴얼의 [Programs Using Reticulum](https://reticulum.network/manual/software.html) 섹션이나 다음 리소스를 살펴보십시오: - [LXMF](https://github.com/markqvist/lxmf)는 Reticulum 위에 구축된 분산형, 지연 및 중단 허용 메시지 전송 프로토콜입니다 - [LXST](https://github.com/markqvist/lxst) 프로토콜 및 프레임워크는 Reticulum을 통한 실시간 오디오 및 신호 전송을 제공합니다. 여기에는 하드웨어 전화기를 구축하는 데 사용할 수 있는 `rnphone` 프로그램과 같은 음성 기반 애플리케이션 및 하드웨어 장치를 구축하기 위한 기본 요소와 유틸리티가 포함됩니다. - 오프그리드, 암호화 및 복원력 있는 메시 통신 플랫폼은 [Nomad Network](https://github.com/markqvist/NomadNet)를 참조하십시오 - Android, Linux, macOS 및 Windows 앱 [Sideband](https://github.com/markqvist/Sideband)는 그래픽 인터페이스와 파일 전송, 이미지 및 음성 메시지, 실시간 음성 통화, 분산 원격 측정 시스템, 매핑 기능 및 완전한 플러그인 확장성과 같은 많은 고급 기능을 갖추고 있습니다. - [MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)는 많은 내장 도구와 기능을 갖춘 완전한 기능의 LXMF 클라이언트로, 이미지 및 음성 메시지, 파일 전송 및 음성 통화도 지원합니다. 또한 Nomad Network 노드를 탐색하기 위한 내장 페이지 브라우저를 포함합니다. - 포함된 [rnsh](https://reticulum.network/manual/using.html#the-rnsh-utility) 프로그램을 사용하여 Reticulum을 통해 원격 셸 세션을 설정할 수 있습니다. - 포함된 [rngit](https://reticulum.network/manual/git.html) 시스템은 Reticulum을 통해 Git 저장소를 관리, 호스팅, 협업 및 상호 작용하기 위한 완전한 솔루션을 제공합니다. ## Reticulum은 어디에 사용할 수 있나요? 최소 반이중 채널을 지원하고 처리량이 초당 5비트 이상이며 MTU가 500바이트인 거의 모든 매체에서 사용할 수 있습니다. 데이터 라디오, 모뎀, LoRa 라디오, 직렬 회선, AX.25 TNC, 아마추어 라디오 디지털 모드, WiFi 및 이더넷 장치, 자유 공간 광 링크 및 유사한 시스템은 모두 Reticulum이 사용할 수 있는 물리적 장치 유형의 예입니다. [RNode](https://markqvist.github.io/Reticulum/manual/hardware.html#rnode)라는 오픈 소스 LoRa 기반 인터페이스가 Reticulum과 함께 사용하도록 특별히 설계되었습니다. 직접 제작할 수 있으며, 호스트에 USB, WiFi 또는 Bluetooth 연결만 필요로 하는 완전한 트랜시버로 구매할 수도 있습니다. Reticulum은 기존 IP 네트워크를 통해 캡슐화할 수도 있으므로, 유선 이더넷, 로컬 WiFi 네트워크 또는 인터넷을 통해 사용하는 것을 막을 수 있는 것은 없으며, 그곳에서도 똑같이 잘 작동합니다. 실제로 Reticulum의 강점 중 하나는 사용 가능한 인프라의 혼합을 사용하여 서로 다른 매체를 자동 구성되고 복원력 있으며 암호화된 메시로 얼마나 쉽게 연결할 수 있는지입니다. 예를 들어, LoRa 라디오, 패킷 라디오 TNC 및 WiFi 네트워크에 모두 연결된 Raspberry Pi를 설정할 수 있습니다. 인터페이스가 구성되면 Reticulum이 나머지를 처리하며, WiFi 네트워크의 모든 장치는 네트워크의 LoRa 및 패킷 라디오 측 노드와 통신할 수 있고 그 반대도 가능합니다. ## 어떻게 시작하나요? Reticulum 네트워크 스택을 시작하는 가장 좋은 방법은 무엇을 하고 싶은지에 따라 다릅니다. 전체 세부 정보와 예제는 [Reticulum 매뉴얼](https://markqvist.github.io/Reticulum/manual/)의 [Getting Started Fast](https://markqvist.github.io/Reticulum/manual/gettingstartedfast.html) 섹션을 살펴보십시오. 시스템에 Reticulum 및 관련 유틸리티를 간단히 설치하는 가장 쉬운 방법은 `pip`를 사용하는 것입니다. 그런 다음 Reticulum을 사용하는 모든 프로그램을 시작하거나 [rnsd 유틸리티](https://markqvist.github.io/Reticulum/manual/using.html#the-rnsd-utility)로 Reticulum을 시스템 서비스로 시작할 수 있습니다.```bash pip install rns ``` `pip`를 통한 일반 사용자 패키지 설치를 차단하는 운영 체제를 사용하는 경우, `~/.config/pip/pip.conf` 파일을 편집하고 `[global]` 섹션에 다음 지시문을 추가하여 `pip`를 정상 동작으로 되돌릴 수 있습니다:```text [global] break-system-packages = true ``` 또는 `pipx` 도구를 사용하여 격리된 환경에서 Reticulum을 설치할 수 있습니다:```bash pipx install rns ``` 처음 시작할 때 Reticulum은 기본 구성 파일을 생성하여 로컬에서 연결 가능한 다른 Reticulum 피어에 대한 기본 연결을 제공합니다. 기본 구성 파일에는 몇 가지 예시와 더 복잡한 구성을 만들기 위한 참조가 포함되어 있습니다. 시스템에 구버전 `pip`가 설치되어 있다면, 먼저 `pip install pip --upgrade`로 업그레이드해야 할 수 있습니다. `pip`가 아직 설치되어 있지 않다면, 시스템의 패키지 관리자를 사용하여 `sudo apt install python3-pip` 또는 이와 유사한 명령으로 설치할 수 있습니다. 패킷 라디오나 LoRa, 시리얼 포트, 또는 UDP 및 TCP 인터페이스를 사용하는 고속 IP 링크와 인터넷 등 여러 매체를 통해 통신을 확장하는 방법에 대한 더 자세한 예시는 [Reticulum 매뉴얼](https://markqvist.github.io/Reticulum/manual/)의 [지원 인터페이스](https://markqvist.github.io/Reticulum/manual/interfaces.html) 섹션을 참고하십시오. ## 포함된 유틸리티 Reticulum에는 네트워크 관리, 상태 및 정보 확인, 기타 작업을 위한 다양한 유용한 유틸리티가 포함되어 있습니다. 이러한 프로그램에 대한 자세한 내용은 [Reticulum 매뉴얼](https://markqvist.github.io/Reticulum/manual/)의 [포함된 유틸리티 프로그램](https://markqvist.github.io/Reticulum/manual/using.html#included-utility-programs) 섹션에서 확인할 수 있습니다. - Reticulum을 항상 사용 가능한 서비스로 실행하기 위한 시스템 데몬 `rnsd` - 인터페이스에 대한 정보를 표시하는 인터페이스 상태 유틸리티 `rnstatus` - 경로 테이블을 보고 수정할 수 있는 경로 조회 및 관리 도구 `rnpath` - 목적지에 대한 연결을 확인하기 위한 진단 도구 `rnprobe` - 시스템 간 파일 전송을 쉽게 해주는 간단한 파일 전송 프로그램 `rncp` - ID를 관리하고 파일을 암호화/복호화할 수 있는 ID 관리 및 암호화 유틸리티 `rnid` - 원격 시스템과 완전한 대화형 셸 세션을 설정할 수 있는 `rnsh` 프로그램 - 원격 시스템에서 간단한 명령과 프로그램을 실행하고 출력을 가져올 수 있는 원격 명령 실행 프로그램 `rnx` - Reticulum을 통해 저장소를 제공하기 위한 완전한 다중 저장소 Git 노드를 제공하는 `rngit` 프로그램 - Reticulum을 통해 Git 저장소와 상호 작용할 수 있게 해주는 포함된 `git-remote-rns` 헬퍼 `rnx`와 `rncp`를 포함한 모든 도구는 LoRa나 패킷 라디오와 같은 매우 낮은 대역폭 링크에서도 안정적이고 잘 작동합니다. Reticulum을 통한 완전한 기능의 원격 셸에 대해서는 [rnsh](https://github.com/acehoss/rnsh) 프로그램도 살펴보십시오. ## 지원되는 인터페이스 유형 및 장치 Reticulum은 Reticulum이 실행될 수 있는 대부분의 통신 하드웨어를 포괄하는 다양한 일반화된 인터페이스 유형을 구현합니다. 하드웨어가 지원되지 않는 경우, [사용자 정의 인터페이스 모듈을 구현하는 것은 간단합니다](https://markqvist.github.io/Reticulum/manual/interfaces.html#custom-interfaces). 사용자 정의 인터페이스의 기여는 일반적으로 유용하고 실제 사용 환경에서 잘 테스트된 경우 감사히 받아들입니다. 현재 다음과 같은 내장 인터페이스가 지원됩니다: - 모든 이더넷 장치 - [RNode](https://unsigned.io/rnode/)를 사용하는 LoRa - 패킷 라디오 TNC (AX.25 사용 여부와 무관) - KISS 호환 하드웨어 및 소프트웨어 모뎀 - 시리얼 포트가 있는 모든 장치 - IP 네트워크를 통한 TCP - IP 네트워크를 통한 UDP - stdio 또는 파이프를 통한 외부 프로그램 - stdio 또는 파이프를 통한 사용자 정의 하드웨어 ## 성능 *여기의 모든 성능 수치는 `rnsd`가 완전히 인터프리트되는 Python 모드에서 단일 CPU 코어로 제한되어 실행되는 것을 가정합니다.* Reticulum은 *매우* 넓은 사용 가능 성능 범위를 목표로 하지만, 낮은 대역폭 매체에서의 기능성과 성능을 우선시합니다. 목표는 초당 100비트에서 일반 하드웨어에서 초당 10기가비트에 이르는 동적 성능 범위를 제공하는 것입니다. 현재 네트워크상에서 사용 가능한 성능 범위는 적당한 하드웨어에서 대략 초당 150비트에서 초당 1기가비트입니다. 실제 성능은 시스템 속도, 암호화 하드웨어 가속의 가용성 및 기타 요인에 따라 크게 달라집니다. Raspberry Pi 5에서 호스팅되는 전송 노드의 원시 라우팅 처리량은 대략 초당 5기가비트입니다. 최신 암호화 하드웨어 가속을 갖춘 시스템은 초당 15기가비트 이상의 전송 처리량을 달성할 수 있습니다. 참조 구현은 여러 CPU 코어와 벡터화된 전송을 활용하여 100+ Gbps에 도달하는 것이 완벽하게 가능하지만, RNS가 거의 모든 실제 상황에서 사용 가능한 물리적 매체 대역폭을 이미 포화시킬 수 있기 때문에 현재 수준을 넘어서는 성능은 높은 우선순위가 아닙니다. RNS의 주요 목표는 *신뢰성*, *정확성*, *보안*, *적절한 트래픽 관리* 및 *실제로 실용적인 성능*이며, 실제 사용성과 거의 또는 전혀 관련이 없는 공허한 종이 위의 "벤치마크"가 아닙니다. 모든 대체 구현 유지 관리자는 유사한 접근 방식을 채택하고, 특히 경험적으로 의심스럽거나 사실적으로 잘못된 성능 주장을 게시하기 전에 자신의 구현이 제대로 안정적으로 작동하도록 하는 데 집중할 것을 *강력히* 권장합니다. ## 현재 상태 모든 핵심 프로토콜 기능이 구현되어 작동하지만, 실제 사용이 탐구되고 이해됨에 따라 추가 사항이 발생할 가능성이 있습니다. API와 와이어 포맷은 안정적인 것으로 간주할 수 있습니다. ## 종속성 기본 `rns` 패키지의 설치는 아래 나열된 두 개의 외부 종속성만 필요로 합니다. 거의 모든 시스템과 배포판에는 이러한 종속성에 대해 즉시 사용 가능한 패키지가 있으며, `rns` 패키지를 `pip`로 설치하면 함께 다운로드되어 설치됩니다. - [PyCA/cryptography](https://github.com/pyca/cryptography) - [pyserial](https://github.com/pyserial/pyserial) 더 특이한 시스템과 일부 드문 경우에는 위 모듈 중 하나 이상을 설치하거나 컴파일하는 것이 불가능할 수 있습니다. 이러한 상황에서는 설치에 외부 종속성이 필요 없는 `rnspure` 패키지를 대신 사용할 수 있습니다. `rns`와 `rnspure` 패키지의 내용은 *동일*합니다. 유일한 차이점은 `rnspure` 패키지가 설치에 필요한 종속성을 나열하지 않는다는 것입니다. Reticulum이 어떻게 설치되고 시작되든, 외부 종속성은 *필요*하고 *사용 가능*한 경우에만 로드됩니다. 예를 들어 [pyserial](https://github.com/pyserial/pyserial)을 지원할 수 없는 시스템에서 Reticulum을 사용하려는 경우, `rnspure` 패키지를 사용하여 완벽하게 사용할 수 있지만, Reticulum은 시리얼 기반 인터페이스를 사용할 수 없습니다. 다른 모든 사용 가능한 모듈은 필요할 때 여전히 로드됩니다. **참고하십시오!** [PyCA/cryptography](https://github.com/pyca/cryptography)를 지원하지 않는 시스템에서 Reticulum을 실행하기 위해 `rnspure` 패키지를 사용하는 경우, 이 문서의 [암호화 기본 요소](#cryptographic-primitives) 섹션을 읽고 이해하는 것이 중요합니다. ## 연결 부트스트래핑 Reticulum은 구독하는 서비스가 아니며, "가입"하는 단일 글로벌 네트워크도 아닙니다. Reticulum은 네트워크 자체를 통해 사용 가능한 공용 인터페이스를 발견하는 기능을 제공하며, 더 넓은 커뮤니티는 연결을 부트스트랩하기 위한 다양한 공개 진입점 디렉터리를 제공했습니다. Reticulum을 통해 초기 연결을 설정하는 방법을 배우려면, 매뉴얼의 [연결 부트스트래핑](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) 섹션을 읽어보십시오. 이것이 어떻게 작동하는지에 대한 일반적인 아이디어가 이미 있다면, [directory.rns.recipes](https://directory.rns.recipes/) 및 [rmap.world](https://rmap.world)와 같은 커뮤니티 운영 사이트를 사용하여 글로벌 분산 Reticulum 백본에 대한 초기 연결을 위한 인터페이스 정의를 찾을 수 있습니다. ## 공용 테스트넷 ***중요!** 역사적으로 Reticulum 프로젝트 자체에서 개발자 대상 테스트넷을 제공했습니다. 글로벌 Reticulum 노드와 진입점의 수가 상당한 양으로 증가함에 따라, Amsterdam Testnet 진입점을 포함한 이 공용 테스트넷은 이제 폐기되었습니다. 연결을 위해 이 진입점에 의존했던 인스턴스가 여전히 있다면, 대신 분산 백본을 사용하도록 전환하십시오. Reticulum은 이제 완전한 온네트워크 인터페이스 발견 및 연결 부트스트래핑 시스템을 포함합니다. 안내는 매뉴얼의 [연결 부트스트래핑](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) 섹션을 읽어보십시오.* ## Reticulum 지원 이것이 가능하려면 여러분의 도움이 필요합니다. 다음 채널 중 하나를 통해 기부하여 개방적이고 자유롭고 사적인 통신 시스템의 지속적인 개발을 지원해 주십시오: - Monero: ``` 84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w ``` - 비트코인 ``` bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6 ``` - 이더리움 ``` 0x91C421DdfB8a30a49A71d63447ddb54cEBe3465E ``` - Liberapay: https://liberapay.com/Reticulum/ - Ko-Fi: https://ko-fi.com/markqvist ## 암호화 기본 요소 Reticulum은 효율적이고 강력하며 잘 테스트된 암호화 기본 요소의 간단한 모음을 사용하며, 범용 CPU와 마이크로컨트롤러 모두에서 사용할 수 있는 널리 이용 가능한 구현을 갖추고 있습니다. 이 특정 기본 요소 세트를 선택한 주된 고려 사항 중 하나는 실제로 모든 현대 컴퓨팅 플랫폼에서 비교적 적은 함정으로 *안전하게* 구현될 수 있다는 점입니다. 여기에 나열된 기본 요소는 **권위 있는 것**입니다. Reticulum이라고 주장하지만 이 정확한 기본 요소를 사용하지 않는 것은 **Reticulum이 아니며**, 의도적으로 손상되거나 약화된 클론일 가능성이 있습니다. 사용되는 기본 요소는 다음과 같습니다: - Reticulum Identity Keys는 512비트 Curve25519 키셋입니다 - 서명을 위한 256비트 Ed25519 키 - ECDH 키 교환을 위한 256비트 X22519 키 - 키 유도를 위한 HKDF - 암호화된 토큰은 [Fernet 사양](https://github.com/fernet/spec/)을 기반으로 합니다 - Curve25519에서 ECDH 키 교환으로 파생된 임시 키 - 메시지 인증을 위한 SHA256을 사용한 HMAC - IV는 `os.urandom()` 또는 그 이상으로 생성되어야 합니다 - PKCS7 패딩을 사용한 CBC 모드의 AES-256 - Fernet 버전 및 타임스탬프 메타데이터 필드 없음 - SHA-256 - SHA-512 기본 설치 구성에서 `X25519`, `Ed25519`, `AES-256-CBC` 기본 요소는 [OpenSSL](https://www.openssl.org/)에서 제공합니다([PyCA/cryptography](https://github.com/pyca/cryptography) 패키지를 통해). 해시 함수 `SHA-256`과 `SHA-512`는 표준 Python [hashlib](https://docs.python.org/3/library/hashlib.html)에서 제공합니다. `HKDF`, `HMAC`, `Token` 기본 요소와 `PKCS7` 패딩 함수는 항상 다음 내부 구현에서 제공합니다: - [HKDF.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/HKDF.py) - [HMAC.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/HMAC.py) - [Token.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/Token.py) - [PKCS7.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/PKCS7.py) Reticulum은 또한 필요한 모든 기본 요소의 완전한 순수 Python 구현을 포함합니다. Reticulum이 시작될 때 시스템에서 OpenSSL과 PyCA를 사용할 수 없는 경우, Reticulum은 대신 내부 순수 Python 기본 요소를 사용합니다. 이로 인한 사소한 결과는 성능으로, OpenSSL 백엔드가 *훨씬* 빠릅니다. 그러나 가장 중요한 결과는 OpenSSL의 기본 요소만큼 많은 검증, 테스트 및 리뷰를 거치지 않은 기본 요소를 사용함으로써 발생할 수 있는 잠재적인 보안 손실입니다. 기본적으로 Reticulum을 설치하면 OpenSSL과 PyCA가 아직 설치되지 않은 경우 자동으로 설치하는 것이 **필요**합니다. 사용자가 이 요구 사항을 구체적으로 재정의한 경우에만 순수 Python 기본 요소를 사용할 수 있습니다. 예를 들어 일반 `rns` 패키지 대신 `rnspure` 패키지를 설치하거나 로컬 소스 코드에서 직접 실행하는 경우입니다. --- [Read more](https://github.com/markqvist/reticulum)