
Tinfoil Chat - 양파 라우팅, 엔드포인트 보안 메시징 시스템
Tinfoil Chat (TFC)는 FOSS+FHD 피어 투 피어 메시징 시스템으로, 높은 보증 수준의 하드웨어 아키텍처에 의존하여 사용자를 수동 수집, MITM 공격 그리고 가장 중요하게는 원격 키 유출로부터 보호합니다. TFC는 가장 복잡한 위협 모델 중 하나를 가진 사람들을 위해 설계되었습니다: 바로 엔드포인트를 해킹하여 기존의 보안 메시징 앱의 종단 간 암호화를 우회하는 조직 범죄 집단과 국가 지원 해커들입니다.
/rr 명령 사용을 중단하세요.TFC는 XChaCha20-Poly1305 종단 간 암호화와 부인 가능 인증을 사용하여 개별 수신자와 그룹에 전송되는 모든 메시지와 파일을 보호합니다. 대칭 키는 사전 공유되거나, X448을 사용하여 교환되며, 그 10진수 지문은 대역 외 채널을 통해 검증됩니다. TFC는 BLAKE2b 기반 해시 래칫을 통해 메시지별 전방 비밀성을 제공합니다. 모든 영구 사용자 데이터는 XChaCha20-Poly1305를 사용하여 로컬에서 암호화되며, 그 키는 Argon2id를 사용하여 비밀번호와 솔트로부터 파생되며, 그 파라미터는 모범 사례에 따라 자동으로 조정됩니다. TFC의 키 생성은 Linux 커널의 getrandom()에 의존하며, 이는 ChaCha20 기반 CSPRNG를 위한 시스템 콜입니다.
TFC는 모든 통신을 오직 Tor 익명 네트워크를 통해서만 라우팅합니다. 이는 (v3) Tor Onion Services를 사용하여 Tor 네트워크를 벗어나지 않는 P2P 통신을 가능하게 합니다. 이로 인해 사용자가 실수로 자신의 익명성을 해제하기 어려워집니다. 또한 (탈)중앙화된 메신저와 달리 누가 누구와 언제, 얼마나 대화하는지와 같은 사용자 메타데이터에 접근할 수 있는 제3자 서버가 존재하지 않습니다. 이러한 네트워크 아키텍처 덕분에 TFC는 오직 사용자의 기기에서만 실행됩니다. 광고나 추적이 없으며, 사용자에 관한 어떠한 데이터도 수집하지 않습니다. 모든 데이터는 항상 사용자가 제어하는 키로 암호화되며, 데이터베이스는 절대 사용자의 기기를 떠나지 않습니다.
Onion Services를 사용한다는 것은 계정 등록이 필요 없다는 뜻이기도 합니다. 최초 실행 시 TFC는 사용자를 위해 무작위 TFC 계정(Onion Service 주소)을 생성합니다. 예를 들어 4sci35xrhp2d45gbm3qpta7ogfedonuw2mucmc36jxemucd7fmgzj3ad와 같습니다. 이 TFC 계정을 아는 사람은 누구나 사용자에게 연락처 요청을 보내고 대화할 수 있지만, 사용자의 실제 신원, IP 주소, 지리적 위치를 알 수는 없습니다. 보호된 지리적 위치는 공격자가 기기가 지구상 어디에 있는지 알 수 없게 하므로 물리적 공격을 매우 어렵게 만듭니다. 동시에 이는 통신을 검열 저항적으로 만듭니다. TFC를 차단하려면 전국적으로 Tor를 전면 차단해야 합니다.
TFC에는 사용자의 네트워크 연결 기기가 해킹되더라도 통신의 유형, 양, 일정을 숨기는 트래픽 마스킹 모드도 있습니다. 해커로부터 메타데이터를 더욱 보호하기 위해, TFC의 인터넷 연결 부분은 사용자의 개인 파일이 전혀 포함되지 않아(엔드포인트가 누구의 것인지 추론하기 어렵게 함) 익명성 보장을 위한 추가 보호 계층을 제공하는 프라이버시 및 익명성 중심 운영체제인 Tails에서 실행할 수 있습니다.
TFC는 강력한 엔드포인트 보안을 제공하는 하드웨어 구성에서 사용되도록 설계되었습니다. 이 구성은 엔드포인트당 세 대의 컴퓨터를 사용합니다. 암호화 및 복호화 프로세스는 서로 분리되어 두 대의 격리된 컴퓨터, 즉 소스 컴퓨터(Source Computer)와 목적지 컴퓨터(Destination Computer)로 나뉩니다. 이 두 기기는 TFC 전용입니다. 이렇게 분리된 TCB는 사용자의 일상용 컴퓨터인 네트워크 컴퓨터(Networked Computer)를 통해 네트워크와 상호작용합니다.
TFC에서 데이터는 소스 컴퓨터에서 네트워크 컴퓨터로, 그리고 네트워크 컴퓨터에서 목적지 컴퓨터로 단방향으로 이동합니다. 데이터 흐름의 단방향성은 데이터가 기기당 하나의 USB 케이블로 세 대의 컴퓨터에 연결된 무료 하드웨어 설계인 데이터 다이오드를 통해서만 한 기기에서 다른 기기로 전달되도록 강제됩니다. 소스 및 목적지 컴퓨터는 인터넷이나 데이터 다이오드 이외의 어떤 기기에도 연결되지 않습니다.
데이터 다이오드의 광커플러 내부의 광 중계기는 물리학의 기본 법칙으로 데이터 전송 방향을 강제합니다. 이 보호는 너무나 강력하여, 인증된 데이터 다이오드 구현은 일반적으로 시스템 간에 데이터의 기밀 등급이 달라지는 중요 인프라 보호 및 정부 네트워크에서 발견됩니다. 예를 들어 데이터 다이오드는 원자력 발전소 안전 시스템 판독값에 대한 접근을 허용하면서 [1], 동시에 공격자가 이러한 중요 시스템을 악용하는 것을 방지할 수 있습니다. 또 다른 활용 사례는 보안이 덜한 시스템에서 유출로부터 보호되어야 하는 기밀 문서를 포함하는 시스템으로 데이터를 가져오도록 허용하는 것입니다 [2].
TFC에서 하드웨어 데이터 다이오드는 TCB 절반 중 어느 것도 양방향으로 접근할 수 없도록 보장합니다. 보호가 하드웨어 기능의 물리적 한계에 의존하기 때문에, 어떤 악성코드도, 심지어 제로데이 익스플로잇조차도 데이터 다이오드가 제공하는 보안을 우회할 수 없습니다.
하드웨어가 준비되면, 사용자가 할 일은 각 컴퓨터에서 장치별 TFC 프로그램을 실행하는 것뿐입니다.
위 그림에서 Alice는 자신의 Source Computer에서 실행 중인 Transmitter Program에 메시지와 명령을 입력합니다. Transmitter Program은 평문 데이터를 암호화하고 서명하며, 암호문을 데이터 다이오드를 통해 Source Computer에서 자신의 Networked Computer로 중계합니다.
Alice의 Networked Computer에 있는 Relay Program은 명령과 발신 메시지 사본을 데이터 다이오드를 통해 자신의 Destination Computer로 중계합니다. Alice의 Destination Computer에 있는 Receiver Program은 수신된 메시지/명령을 인증하고 복호화하며 처리합니다.
Alice의 Relay Program은 Tor Onion Service를 통해 Bob과 메시지 및 파일을 공유합니다. Bob의 Relay Program의 웹 클라이언트는 Alice의 Onion Service에서 암호문을 가져와 자신의 데이터 다이오드를 통해 자신의 Destination Computer로 전달합니다. 그런 다음 Bob의 Receiver Program이 수신된 메시지/파일을 인증하고 복호화하며 처리합니다.
Bob이 응답할 때, 그는 자신의 Source Computer에서 Transmitter Program에 메시지를 입력하고, 대칭적인 과정을 거친 후 Alice는 자신의 Destination Computer에서 Receiver Program으로부터 메시지를 읽습니다. 이 모든 것은 끊김 없이 자동으로 이루어집니다.
위에서 설명한 아키텍처는 두 사용자 간의 양방향 통신을 가능하게 하기 위해 고전적 데이터 다이오드 모델과 대안적 데이터 다이오드 모델 을 동시에 활용하며, 동시에 하드웨어로 강제되는 엔드포인트 보안을 제공합니다:
Destination Computer는 고전적 데이터 다이오드 모델을 사용합니다. 즉, 안전하지 않은 Networked Computer로부터 데이터를 수신할 수 있지만, Networked Computer로 데이터를 다시 보낼 수는 없습니다. Receiver Program은 이러한 제약 조건 아래에서 작동하도록 설계되었습니다. Receiver Program이 모든 수신 데이터를 인증하고 검증하더라도, 악성코드가 여전히 Destination Computer에 침투할 수 있다는 가능성을 배제할 수는 없습니다. 그런 일이 발생하더라도, 데이터 다이오드가 모든 아웃바운드 트래픽을 차단하므로 악성코드는 민감한 키나 평문을 Networked Computer로 다시 유출할 수 없을 것입니다.
소스 컴퓨터는 대체 데이터 다이오드 모델을 사용합니다. 이는 송신기 프로그램이 침해당할 걱정 없이 암호화된 데이터를 안전하지 않은 네트워크 컴퓨터로 출력할 수 있음을 의미합니다. 데이터 다이오드는 소스 컴퓨터로의 데이터 전송을 허용할 하드웨어가 없으므로, 소스 컴퓨터를 모든 원격 공격으로부터 보호합니다. 송신기 프로그램은 또한 데이터 다이오드가 도입하는 데이터 흐름 제약 조건 아래에서 작동하도록 설계되었습니다. 키 교환을 허용하기 위해 짧은 타원 곡선 공개 키는 사용자가 수동으로 입력합니다.