최근에 보안 메신저의 필요성이 점점 더 강하게 느껴져서 좀 알아봤음. 필터링한 조건은 다음과 같음.


1. 회원가입의 절차가 없거나 어떤 종류의 개인정보도 요구하지 않을 것


스팸과 시빌 어택에 대응하기 위해서 서비스 이용에 어떠한 종류의 허들이 있어야 한다는 것은 동의하지만 그게 사용자의 개인정보를 수집하는 것보다는 더 나은 방법이 있을 거라고 본다. 절대 사용자의 정보를 팔지 않는다고 맹세를 하고 실제 정부의 요청에 거부했다는 증명서를 첨부하고 그러던데, 뭐 실제로도 그럴 수도 있겠지만 사실 그건 내가 확인할 수가 없는 부분이기 때문에 별 의미가 없는 주장이다.


2. 일대 일대화는 디폴트가 종단간 암호화가 되어야 한다.

당연한 조건. 디폴트 이전에 아예 암호화를 하지 않고 1:1 대화를 할 수 없게 만들어야 함. 


3. 다자간 암호화 방식도 지원해야 한다. 즉 비밀 대화방 기능이 있어야 함.

진짜 이정도 기능은 있어야 함.


4. 하나의 서버에 의지하는 구조가 아니어야 함.

이게 안되면 대화 내용이야 비밀로 유지할 수 있겠지만 밴당하면 끝. 서버가 사용자를 밴하지 않더라도 서비스 유지가 불가능할 수 있음(ex. 코인조인 코디네이터 서비스는 FBI가 전부 폐쇄함)



크게 빡빡한 조건은 아니라고 생각했는데 의외로 1번에서 많이들 걸러짐. 

마스토돈: 사용자 인증을 메일이나 도메인에 의존함

시그널: 전화번호를 수집함


마스토돈은 4번에도 문제가 있음. 분산화된 구조라고는 하는데, 서버 이주는 서버운영자들이 협력할 때만 가능함. 협조하지 않으면 불가능함.팔로우 목록이 사라진다든가. 라고 마스토돈을 싫어하는 사람이 그랬음. 확인해 보진 않음.



여튼 그렇고 거르고 보니 세션, matrix, simplex, nostr 정도 남는 거 같던데(이름 있는 것 중에선) 개중에서 제일 활발한 개발이 이루어지고 있는 것 같은 nostr 를 좀 알아봤는데 가장 큰 특징 두개만 뽑자면 아래와 같음



1. 기본적으로 특정 서버나 메신저 기술이 아니라 nostr 자체는 프로토콜이고 그것만 지키면 서로 다른 클라이언트 끼리도 통신할 수 있게 되어 있음. 내가 대충 슥 본 클라이언트 구현체가 열 개 이상이었고 릴레이 구현체도 그정도 되는 거 같아 보였음. 물론 릴레이도 아무나 돌릴 수 있음. matrix도 이런 방식인 걸로 알고 있고 나온지도 더 오래됐는데도 불구하고 구현체가 이렇게 다양하지 않는데 아마 nostr는 처음부터 작정하고 여러 곳에서 쓰일 수 있도록 프로토콜을 최대한 심플하게 만들어서 그런 것 같음. 특히나 릴레이 간단하게 만들려면 진짜 코드 몇 줄 안 되게 만들 수 있어 보임. 


2. 개인 식별을 타원곡선 공개키 암호화 방식의 공개키를 활용함. 회원가입이라는 절차가 없고 키 발급도 그쪽에서 해주는 게 아니라 내가 만들어서 등록할 수 있음. 그리고 누군가(혹은 자신이) 돌리고 있는 릴레이에 자기 메세지(노트)를 뿌리는 방식 모든 메세지는 사인됨.



그로부터 파생된 점은....


- 타원곡선 공개기 암호화 방식을 개인식별에 이용하기 때문에 해당 방식을 사용하는 코인과 네이티브하게 연결이 됨. 사실상 nostr 계정이 곧 코인 지갑주소의 다른 표현인 수준. 해당 방식을 사용하는 코인이라고 했지만, 개발이 활발하게 이루어지는 특히나 투자자한테 어필할 목적이 아니라 실생활에서 사용하기 위한 종류의 기술이 확발하게 이루어지는 코인은 사실상 비트코인 뿐이기 때문에 다른 코인들도 하려면 할 수 있겠지만 실제 개발이 된건 비트코인 뿐임. 라이트닝 네트워크와 접목해서 특정인에게 소액결제를 바로바로 쏴줄 수 있게 만들어져 있음. 


- 구현체가 너무 많고 서로간에 수준이 제각각이라 프로토콜의 최신 버전을 준수하지 않으면 통신이 되지 않음. 나는 아무 relay 하나 골라서 서버 띄우고 여러 클라이언트 붙여서 메세지를 날려봤는데 어떤 데서 쏜 건 어떤 데선 받아지고 어떤 데선 안 받아지고 뭐 지좆대로 라서 뭔가 했는데, 내가 사용한 relay가 최신 프로토콜을 지원하지 않는데 어떤 클라는 메세지 기본 포맷이 최신 프로토콜을 사용해서 보내기 때문이었음. 다만 이건 내가 좀 너무 특수하고 지원이 빠릿빠릿하지 않은 relay 구현체를 사용했기 때문이고 스타수 많고 많은 개발자들이 달라붙어서 개발하는 유명 relay, client 구현체들은 최신 프로토콜을 바로바로 따라잡기 때문에 큰 문제는 아님. 모바일 구현체 중에선 0xchat이 제일 쓸만함.


- 회원가입에 아무런 허들이 없기 때문에 바로 스팸공격이 어느 정도 발생하고 있음. reply guy라고 있는데 사람들의 덧글을 그대로 복사한 덧글을 무의미하게 달면서 저장공간이랑 네트워크 트래픽을 낭비하는 중. 차단했는데도 보이길래 공개키 확인해보니, 한놈이 아님. 봇이겠지. 사실 이런 거 때문에 여타의 보안 메신저들이 메일주소나 전번을 수집하는 건데, 사실 그런 걸 수집하지 않고서도 자체적으로 차단할 수 있는 방법이야 많긴 함. 비트코인 친화적인 설계이니 만큼 거기에서 사용되는 많은 개념이 도입되어 있고, 메세지를 발신할 때 작업증명을 제출할 수 있는데 relay 별로 일정 이상의 증명을 제출한 메세지에 대해서만 실어주거나, 애초에 relay에 최초 등록할 때 상당히 헤비한 증명을 제출한 공개키에 대해서만 저장을 받아준다거 하는 방식을 생각해 볼 수 있고 실제로 프로토콜 설계상에 그런 의도로 사용할 수 있다고 적어놓긴 했으나, 제대로 구현한 relay는 없는 느낌(혹은 구현은 해놨는데 실제 운영자들이 적당한 증명의 난이도를 몰라서 디폴트로 돌리고 있다거나). 다만 이것은 사용상 큰 문제는 아니고(특정 스레드의 덧글에 좀 깽판 쳐놓는 일이 가끔 가다 보이는 정도. 디씨 실베 덧글 도배 느낌) 충분히 극복가능한 문제라고 보여짐



- 탈중앙화된 앱이 다 그렇듯이 즉각적인 반응성면에서 좀 구림. 특정한 누군가가 발행한 메세지를 보기 위해서 사용자가 하나하나 그 누군가가 사용하는 릴레이들을 따로 등록할 필요는 없고, 팔로우를 하는 순간 그 누군가가 사용하는(즉 누군가가 과거에 발행한 메세지들이 저장된) 릴레이가 자동으로 내 릴레이 리스트에 등록이 되고 그 사람의 과거 행적을 싹 불러올 수 있게 된다라고 하고 그 사람이 사용하는 모든 릴레이에서 동시에 밴 당하거나 하는 그런 극단적인 예외사항을 가정하지 않는 한 릴레이로부터 차례차례 밴을 당하더라도 그 누군가가 자기를 밴하지 않는 다른 릴레이를 하나라도 붙잡고 있으면(정 그런 게 하나도 없을 정도로 범지구적인 차단을 당하는 사람이라면 양심적으로 자기가 릴레이 하나는 운영해라) 시간차는 있을 지언정 메세지는 수복된다고 하는데

실험해본 결과 사실이긴 함. 다만 하나의 서버가 책임지고 딜리버리 하는 일반적인 sns에 비해서 아무래도 빠릿빠릿함이 부족함. 특히나 리트윗된 처음본 사람 클릭해서 들어가면 트위터나 링크드인과는 달리 좀 스피너가 오래 돌다가 메세지들을 하나하나 뱉음. 그리고 그 스피너 돌아가는 시간이 클라이언트나 릴레이가 얼마나 제대로 구현했느냐에 따라 달라짐. 같은 계정으로 어떤 클라에서 보면 누군가의 최신 글이 두시간 전 트윗인데 어떤 클라에서는 10분 전임ㅋ. 단지 이건 제일 좋은 클라 하나 쓰면 다른 클라가 늦든 말든 큰 상관없긴 함. 이것도 공개 메세지(트윗) 같은 것 한정이지 일대일 대화는 거의 대부분 바로바로 응답이 옴


- 마지막으로 가장 치명적인 단점이 있는데 푸시알람이 제대로 동작하지 않음. 이게 탈중앙화 소셜 네트워크를 표방하고 나온 거고 트위터같은 sns, 텔레그램 같은 메신저가 직접적인 경쟁대상인데 전자의 케이스야 그렇다 쳐도 푸시 알람이 안 오는 것은 메신저로서는 정말 치명적인 단점임. 물론 앱 들어가서 보면 보이긴 하는데 메신저를 누가 그렇게 씀. 내가 모바일 쪽은 잘 몰라서 그런데 내가 알기로 푸시 알람이 일반적인 통신이 아니라 거의 구글과 애플에 의존하는 어떤 무언가로 알고 있는데 그래서 제대로 지원할 수가 없는 게 아닌가 싶음. 탈중앙화 범우주 통신 규약이라고 나왔는데 구글 FCM 이용하세요 애플 아이메세지 이용하세요 이럼 좀 이상하잖아.



결론: 사소한 찐빠가 있지만 지켜야 할 건 다 지키고 있고 개발이 활발하게 이루어지고 있고 사용자가 점점 더 늘고 있으니 검열저항 있는 소셜 네트워크 앱 하나 찾고 있으면 사용해봐도 좋을 듯. 메신저로 활용하긴 자기 친구들이 사용하지 않으면 아무리 좋아도 사실상 무용지물일 것이나(범죄자 아니면) 트위터 같은 느낌으로는 어느 정도 활용할 수 있을 만한 크기에 이르렀음. 물론 이런 것에 열광하는 사람들의 성향이란 게 대체로 비슷해서 비트맥시들, 오스트리아 학파 신봉자, 무정부주의자 등등이 있고 이런 사람들이랑 별로 상종하기 싫으면 크게 볼 만한 글은 없을 듯. 여기에서 관심가질만한 유명인은 에드워드 스노든 정도 본 거 같음.