
Hush Relay는 브라우저에서 메시지를 암호화하고 PHP 파일 하나로 중계 서버를 운영하는 자체 호스팅 메신저다. 계정이나 전화번호 없이 사용할 수 있지만, 아직 실험 단계이며 외부 보안 감사를 받지 않았다.
구조와 보안
Hush Relay는 HTML과 자바스크립트로 만든 웹 앱과, 암호화된 메시지를 수신자가 가져갈 때까지 보관하는 PHP 중계 서버로 구성된다. 암호화는 앱에서 이뤄지며 중계 서버는 메시지 내용과 발신자를 볼 수 없다고 프로젝트는 설명한다. 중계 서버 운영자는 IP 주소, 전송 시각, 대략적인 메시지 크기, 메시지를 받는 우편함 등 메타데이터는 볼 수 있다.
프로젝트는 WebCrypto를 이용한 Signal 방식의 Double Ratchet과 순방향 보안을 적용했다고 밝힌다. 메시지는 정해진 크기 단위로 패딩되며, 앱이 열려 있으면 1초 안에 전달되고 오프라인 상태에서는 중계 서버에 최대 14일 동안 보관된다. 연락처는 QR 코드나 초대 링크로 추가하고, 안전 번호를 대조해 중간자 공격 여부를 확인할 수 있다.
보안 설계는 외부 암호학자의 검토를 받지 않았으며, 내부 적대적 검토도 두 차례만 진행됐다. 프로젝트는 일상적인 개인정보 보호와 학습·실험 용도로 사용하라고 안내한다. 메시지 보안에 생명이나 안전이 달린 활동가, 언론인, 취재원, 적대적인 정부에 맞서는 사람에게는 Signal이나 SimpleX를 권한다. 자세한 내용은 보안 안내와 검토 기록에서 확인할 수 있다.
시작과 배포
로컬에서 실행하려면 PHP 7.4 이상이 필요하다. 저장소를 내려받고 내장 서버를 실행한다.
git clone https://github.com/altrudev/Hush-Relay.git hush-relay
cd hush-relay
./scripts/serve.sh
그다음 http://localhost:8080을 서로 다른 브라우저 두 곳에서 열어 각각 계정을 만들고, 한쪽의 설정에서 초대 링크를 복사해 다른 쪽에 붙여 넣으면 대화를 시작할 수 있다.
인터넷에 공개하려면 암호화 기능을 위해 HTTPS가 필요하다. 프로젝트는 안드로이드 휴대전화의 Termux와 Cloudflare Tunnel, Debian/Ubuntu 기반 VPS와 Caddy, PHP를 지원하는 공유 호스팅을 배포 방법으로 안내한다. 앱은 IPFS에 게시하고 중계 서버는 다른 곳에서 운영할 수도 있다.
| 배포 방식 | 난이도 | 참고 |
|---|---|---|
| 여분의 안드로이드 휴대전화(Termux + Cloudflare Tunnel) | 보통 | 무료이며 전원이 연결돼 있으면 계속 운영 가능. 안내 |
| VPS(Debian/Ubuntu + Caddy) | 보통 | 가장 안정적이며 월 약 5달러. 안내 |
| 공유 호스팅(cPanel, Apache, PHP) | 쉬움 | web/ 폴더를 업로드. 안내 |
| 앱은 IPFS, 중계 서버는 위 방법 중 하나로 운영 | 고급 | 누구나 앱을 미러링할 수 있음. 안내 |
중계 서버 주소는 초대 링크에 포함되므로 안정적으로 유지해야 한다. 재시작할 때마다 바뀌는 터널 주소를 쓰면 연락처의 링크가 작동하지 않을 수 있다.
계정 이동과 한계
계정은 기기에서 생성한 키를 신원으로 사용한다. 복구 단어 여섯 개로 중계 서버에 암호화된 백업을 보관할 수 있으며, 다른 기기에서 복구할 때 필요한 정보는 이 단어뿐이라고 프로젝트는 설명한다. 새 기기로 계정을 옮기려면 기존 기기에서 만든 일회용 QR 코드를 스캔하고, 양쪽에 표시된 12자리 코드가 일치하는지 확인한 뒤 승인한다. 계정은 새 기기로 이동하며 이전 기기에서는 로그아웃된다.
계정당 활성 기기는 하나뿐이고, 메시지 기록은 받은 기기에 남는다. 푸시 알림은 지원하지 않아 앱이 열려 있을 때만 실시간으로 메시지를 받을 수 있다. 앱 파일을 제공하는 쪽이 수정된 코드를 전달할 수 있는 웹 배포의 위험도 있다. 프로젝트는 이 점이 중요하다면 IPFS CID를 고정하거나 앱을 직접 호스팅하라고 안내한다.
코드와 문서는 GNU Affero General Public License v3.0 이상으로 제공된다. 수정한 버전을 호스팅하면 AGPL 13조에 따라 네트워크 사용자에게 해당 소스 코드를 제공해야 할 수 있다. 저장소, 프로토콜 및 위협 가정, 배포 안내, 라이선스 안내를 참고할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요