우주에서 O(x)Caml: 메모리 안전으로 최종 프론티어 보안
저궤도(LEO)로 소프트웨어를 배포하는 것은 극한 환경, 제한된 연결성, 그리고 실패 비용이 높은 등 독특한 도전 과제를 안겨줍니다. 버그가 궤도에 도달하면 서버에 SSH로 접속해 프로세스를 재시작할 수 없으며, 커널 패치를 적용하는 일은 복잡한 전달 문제가 되고, 시스템 전체가 다운되면 수백만 달러 규모의 자산을 잃게 됩니다.
최근 Borealis라는 코드명으로 진행된 프로젝트—CCSDS 프로토콜 스택을 순수 OCaml로 구현한 것—가 DPhi Space의 ClusterGate-2 페이로드 모듈 안에서 성공적으로 부팅되었습니다. 이 배포는 고수준 메모리 안전 언어가 우주 응용 분야에서 단지 가능할 뿐만 아니라 차세대 탑재 페이로드 위성을 보호하는 데 필수적임을 입증합니다.
Borealis의 아키텍처
Borealis는 지상국과 위성 간 통신을 관리하는 데몬으로 동작합니다. 텔레메트리와 명령을 위한 표준 클라이언트‑서버 인터페이스를 제공하지만, 그 기반 전송 계층은 CCSDS (Consultative Committee for Space Data Systems) 프로토콜군을 순수 OCaml로 구현한 것입니다.
지연 허용 네트워킹
위성은 지속적인 네트워크 연결이 없기 때문에, Borealis는 파일 시스템을 지연 허용 네트워크처럼 취급합니다. 모든 명령, 응답, 텔레메트리 샘플은 BPv7 (Bundle Protocol version 7) 번들로 직렬화되어 디스크에 기록됩니다. DPhi의 API가 다음 가용 패스 동안 이 불투명한 바이트들을 전송합니다.
보안 봉투
공유 하드웨어 위에서 테넌트로 실행될 때 보안은 최우선 과제입니다. Borealis는 BPSec을 사용해 각 번들을 암호화 및 인증 블록으로 감쌉니다. 이는 "Dirty Frag"나 "Copy Fail"과 같은 커널 수준 CVE가 실제 위협이 되는 상황에서도 호스트의 Linux 커널이 손상되더라도 라우팅 경로가 신뢰 경로 밖에 남도록 보장합니다. 위성 운영자는 불투명한 바이트만 볼 수 있어 내용을 읽거나, 수정하거나, 위조할 수 없습니다.
포스트-양자 준비
10~15년 장기 임무를 대비해 Borealis는 ML-DSA-65를 이용한 포스트-양자 서명 키를 위한 Over-The-Air Rekeying (OTAR)을 구현했습니다. 이는 NASA의 Space System Protection Standard (NASA-STD-1006A)의 핵심 요구사항입니다. OTAR을 구현함으로써 Parsimoni는 위성을 재플래시하지 않고도 키를 교체할 수 있게 되었으며, 이는 포스트-양자 OTAR의 최초 공개 궤도 시연 중 하나가 되었습니다.
성능과 OxCaml의 장점
OCaml 5는 안전한 멀티스레딩과 높은 성능을 제공하지만, 위성 디스패치의 "핫 경로"—모든 패킷을 디코딩하고 라우팅해야 하는 과정—는 최소한의 지터를 요구합니다. 여기서 OxCaml (Jane Street의 실험적 컴파일러 브랜치)이 변화를 가져옵니다.
GC 지터 제거
표준 OCaml에서는 패킷당 할당이 힙에 이루어져 작은 가비지 컬렉션(GC) 사이클을 트리거합니다. 고처리량 환경에서는 이러한 사이클이 지연 스파이크(지터)를 일으켜 엄격한 스케줄링 마감 시간을 위협합니다.
OxCaml의 모드 시스템과 exclave_ stack_ 어노테이션을 사용하면 개발자는 할당을 스택에 한정하도록 표시할 수 있습니다. 이렇게 하면 힙에 도달하지 않아 GC가 전혀 발생하지 않습니다. 결과는 눈에 띕니다:
- p99.9 지연: 패킷당 29 ns에서 9 ns로 감소.
- GC 압력: 2,500만 패킷 동안 394개의 마이너 GC가 0으로 감소.
커뮤니티 구성원들이 언급했듯이, 이는 기본적으로 GC 기반 언어의 편의성을 유지하면서 성능이 중요한 부분에만 수동 메모리 제어를 선택적으로 적용할 수 있게 해줍니다.
왜 우주에 OCaml인가?
전통적으로 우주 소프트웨어는 C와 C++가 장악해 왔지만, 이들 언어는 메모리 손상 취약점이라는 무거운 부담을 안고 있습니다. Microsoft와 Chromium 연구에 따르면 심각한 CVE의 약 70%가 메모리 안전 문제에서 비롯됩니다. 우주 분야에서도 NASA CryptoLib TC 프레임 파서에서 발견된 힙 버퍼 오버플로와 같은 버그가 이를 증명합니다.
OCaml은 설계 단계부터 이러한 전체 공격 표면을 제거합니다. 올바름을 더욱 보장하기 위해 Borealis는 다계층 방어를 적용합니다:
- 형식 검증:
libcrux와fiat-crypto를 사용한 암호 원시 구현. - 타입 스키마: 와이어 포맷 코덱을 타입 스키마에서 생성하고 Microsoft의 EverParse로 검증.
- 타입 기반 상태 머신: 프로토콜 상태를 GADT로 인코딩해 컴파일 시 잘못된 전이를 차단.
앞으로의 길: 함대 확장
Borealis는 궤도에 있는 단일 바이너리를 넘어, 새로운 우주 소프트웨어 구축 방식을 입증하는 개념 증명입니다. 이 프로젝트는 MirageOS 라이브러리를 활용해, 10년 전 클라우드 유니커널에 사용되던 도구 세트가 위성 페이로드에도 동일하게 강력함을 보여줍니다.
다음 과제는 규모입니다. 하드웨어가 일상이 되면서 초점은 소프트웨어 스택으로 이동합니다: 지상에서 Docker가 Linux 컨테이너를 관리하듯, 특수화된 페이로드 바이너리 함대를 동일한 편리함으로 관리하는 것이 목표입니다. 이를 위해서는 안전하고 서명된 업데이트 경로와 단일 위성 버스 내 다중 테넌트 간 강력한 격리가 필요합니다.
ML의 수학적 엄격함과 OxCaml의 성능 최적화를 결합함으로써, Parsimoni는 "최종 프론티어"가 안전하면서도 고성능일 수 있음을 입증하고 있습니다.
SUMMARY: Parsimoni는 저궤도에서 순수 OCaml CCSDS 프로토콜 스택을 성공적으로 배포했으며, OxCaml을 활용해 GC 지터를 제거하고 포스트-양자 보안을 확보했습니다.
TITLE: 우주에서 O(x)Caml: 메모리 안전으로 최종 프론티어 보안