Signal과 유사한 정말 안전한 메시징 앱을 만드는 방법은 무엇입니까?
게시 됨: 2021-10-05온라인 커뮤니케이션의 개인 정보 보호 및 보안은 요즘 뜨거운 주제이며 이유가 있습니다. 암호화된 앱을 만드는 방법을 알고 있으므로 이 문서에서 경험을 공유하고 팁을 제공하고자 합니다. 업계 현황, 암호화 방법 및 가능한 위험에 대해 이야기하겠습니다. 가격 견적을 보려면 기사 끝으로 스크롤하십시오.
무슨 일이에요?
2021년 초, 세계에서 가장 인기 있는 메신저 앱인 WhatsApp은 새로운 서비스 약관을 발표했습니다. 그들은 부분적으로 혼란으로 인해 상당한 소란을 일으켰습니다. 이후 페이스북(왓츠앱은 페이스북 소유)의 유명 비평가인 테슬라 CEO 일론 머스크는 자신의 트위터 팔로워 4250만 명이 잘 알려지지 않은 메신저인 시그널로 전환하자고 제안했다.
신호 사용
— 일론 머스크(@elonmusk) 2021년 1월 7일
이 트윗 이후, WhatsApp 자체에서 암호화 시스템을 사용하는 Signal의 사용자가 급증했습니다. 이 급증은 너무 커서 서버가 대처하기 어려웠습니다. Signal의 개발자는 상황을 처리할 수 있었지만 보안 메시징 시스템에 대한 수요가 증가하고 있음을 보여주었습니다. 이제 모든 사람들은 Signal과 같은 애플리케이션을 만드는 방법을 알고 싶어합니다. 이것은 우리를 이 기사로 안내합니다.
안전한 인스턴트 메신저가 있다는 것은 무엇을 의미합니까?
오늘날 대부분의 인스턴트 메시징 앱은 종단 간 암호화를 사용합니다. 그것은 무엇입니까? 다음은 채팅 애플리케이션 아키텍처의 다이어그램입니다.

간단히 말해서 일반적인 메신저에는 세 가지 주요 상호 연결된 부분이 있습니다.
발신자의 기기
서버
받는 사람의 기기
메시지는 보낸 사람이 서버를 통해 받는 사람에게 보냅니다. 암호화가 없으면 이 메시지는 일반 텍스트로 전송되므로 액세스 권한이 있는 사람이라면 누구나 읽을 수 있습니다. 암호화를 사용하면 메시지가 전송을 위해 일반 텍스트에서 암호문으로 변환 된 다음 쌍을 이루는 키 를 사용하여 수신자의 장치에서 다시 변환 (복호화)됩니다 .
종단 간 암호화 는 암호화 키가 서버가 아닌 사용자 장치의 끝 부분에 저장됨을 의미합니다. 이렇게 하면 보낸 사람과 받는 사람 외에는 아무도 메시지를 읽을 수 없습니다 . 서버를 소유한 서비스 제공자도 액세스할 수 없습니다. 이러한 메시지를 해킹하려면 해커가 사용자의 장치에 액세스해야 합니다. 서비스 제공자의 서버를 해킹하는 것은 거의 소용이 없기 때문입니다.
종단 간 암호화의 약점 은 소위 MITM( Man-in-the-Middle ) 공격에 대한 취약성입니다. 숙련된 MITM 해커는 서버에 저장된 공개 키를 해킹하고 해커를 정당한 수신자로 인식하도록 시스템을 구성하여 해커가 대화를 도청하고 의도한 수신자 대신 참여할 수도 있습니다.
MITM 공격 에 맞서기 위해 Signal 개발자는 Double Ratchet Algorithm으로 프로토콜의 종단 간 암호화를 더욱 업그레이드했습니다. 이 알고리즘은 사용자가 앱을 설치할 때 생성되는 공개 및 개인 키 외에 세션 키를 생성합니다. 세션 키는 전송된 각 메시지에 대해 생성되고 세션이 완료되면(즉, 메시지가 수신될 때) 자체 파괴되므로 해커가 한 세션에 대한 키를 얻을 수 있는 경우 모든 메시지를 해독하는 것은 불가능 합니다.
WhatsApp은 모든 메시지에 종단 간 암호화를 사용합니다. 실제로 Signal의 자체 암호화 프로토콜을 사용합니다. 그래서 지금 문제가 무엇입니까?
종단 간 암호화에 대한 다양한 접근 방식

WhatsApp이 메시지 내용을 스누핑할 수 없고 앱 내 호출을 들을 수 없는 것은 사실입니다. 그러나 WhatsApp에서 사용하는 Signal의 암호화 프로토콜 버전 은 메시지 내용 만 암호화합니다 . 즉, WhatsApp은 물론 Facebook과 정보를 공유하기로 결정한 모든 사람이 귀하가 누구와 언제 어디서 대화하는지 볼 수 있음을 의미합니다. 이 메타데이터는 대화의 모든 참가자에 대한 매우 개인적인 정보를 드러낼 수 있습니다 .
동시에 Signal 앱은 메타데이터도 인코딩하는 업데이트된 프로토콜을 사용하며 , 앱 소유자 를 포함한 누구도 사용자의 기기에 직접 액세스하지 않고는 디코딩할 수 없습니다 .
게다가 Signal의 개인정보 보호정책 에 따라 메타데이터는 서버에 영구적으로 저장되지 않습니다 . 그런 다음 사용자의 마지막 로그인 날짜를 제외한 모든 것이 삭제됩니다.
이 작업을 수행하는 유일한 다른 메신저 앱은 Telegram입니다. 그러나 Telegram에서 종단 간 암호화는 기본적으로 모든 채팅에 적용 되지 않고 비밀 모드에서만 적용됩니다 . 일반 메시지는 Telegram에서 잘 암호화되지 않습니다. 적어도 Telegram은 정부 또는 광고주와 같은 그 누구와도 그러한 정보를 공유하는 것을 거부합니다.
오늘날 메시징 앱 보안은 큰 주제입니다. 메신저가 사용자 정보를 정부와 공유할 수 없거나 공유하지 않으려면 종종 제한과 금지에 직면하게 됩니다. 예를 들어 텔레그램은 제작자의 고향인 러시아에서 금지되었습니다. 아랍에미리트(UAE)는 국가 소유가 아닌 모든 VoIP 서비스를 금지했습니다. 이에 대한 대응으로 전 세계의 사람들이 보다 안전한 통신 수단을 요구하고 있으며 안전한 모바일 메시징 앱 시장이 성장하고 있습니다.
그렇다면 보안 메신저를 만드는 방법은 무엇입니까?

대부분의 사람들은 적어도 하나의 메신저, 아마도 여러 개를 사용하며 메신저 앱의 기본 기능 세트는 거의 놀라지 않을 것입니다. 따라서 이 섹션에서 간략하게 설명하겠습니다. 다음은 보안 채팅 솔루션의 기능 표입니다 .
| 특징 | 설명 |
|---|---|
온보딩 | 앱을 간략하게 소개합니다. 짧을수록 좋지만 이해하기 쉽게 만드십시오. |
회원 가입 로그인 | 메신저 계정은 일반적으로 전화번호와 연결되어 있습니다. |
사용자 프로필 | 프로필은 사용자의 개인 정보와 연락처, 설정 및 FAQ와 같은 중요한 기능에 대한 링크를 저장합니다. |
설정 | 사용자가 편의를 위해 메신저를 조정할 수 있습니다. |
알림 | 메신저 앱에서는 즉각적인 알림을 위한 안정적인 시스템이 필수적입니다. |
문자 채팅 | 일대일 채팅과 그룹 채팅을 모두 지원하려면 최신 메시징 앱이 필요합니다. |
파일 전송 | 사용자는 문자 메시지를 교환하고 이미지와 문서를 공유할 수 있어야 합니다. |
음성 채팅/통화 ![]() | 오늘날 VoIP 기능은 문자 메시지만큼 중요합니다. 고품질의 사운드를 얻으려면 인터넷 속도가 느린 경우에도 안정적인 연결이 필요합니다. |
자기 파괴적인 메시지 | Signal 프로토콜을 사용하더라도 누군가 사용자의 전화를 만지면 사용자가 삭제하지 않는 한 이전 메시지를 모두 볼 수 있습니다. 사용자가 메시지 및/또는 미디어 파일을 파괴하도록 타이머를 설정하는 옵션을 추가할 수 있습니다. |
동조 | 대부분의 사람들은 통신 앱이 설치된 장치를 두 대 이상 가지고 있습니다. 사용자가 적절하다고 판단되는 장치 간에 원활하게 전환할 수 있도록 하려면 동기화 기능을 제공해야 합니다. |
2단계 인증 | 기기 도난 시 사용자 데이터를 더 잘 보호하려면 지문, 비밀번호, PIN 코드 또는 인증 코드나 링크를 통한 2단계 인증을 제공합니다. |
군중에서 눈에 띄는 P2P 메시징 앱을 구축하려면 다음 기능을 고려하십시오.
스티커 및 GIF. 오늘날 다른 모든 메신저는 인기 있는 GIF 서비스 Giphy를 인터페이스에 통합하여 이모티콘을 보완합니다. Telegram이 스티커를 무료로 제공하기 시작했을 때 스티커가 인기를 얻었습니다(예를 들어 일부 스티커만 무료인 Viber와 대조적으로).
비밀/비공개 채팅. 사용자의 메타데이터를 암호화하는지 여부에 관계없이 오늘날의 폭풍우가 치는 현실에서는 사라지거나 잠글 수 있는 채팅이 있는 것이 앱의 판매 포인트가 될 수 있습니다. 예를 들어 Telegram은 장치에서 Telegram에서 로그아웃하면 자동으로 사라지는 비밀 채팅을 제공합니다. 이러한 채팅은 Telegram의 클라우드 서버에 저장되지 않으므로 둘 이상의 장치에 로그인한 경우에도 백업하거나 동기화할 수 없습니다.
영상 채팅. 2020년에는 전염병으로 인해 많은 사람들이 원격으로 일해야 하는 상황에서 화상 회의 도구의 인기가 크게 높아졌습니다. 그리고 많은 사람들이 기존의 인기 있는 메신저에서 화상 통화(일대일 및 그룹 통화)가 부족하다고 한탄했습니다. 반드시 있어야 하는 기능은 아니지만 사용자들 사이에서 가장 인기가 있을 것입니다.
메시징 앱을 보호하는 방법
백 엔드는 메신저에서 마법이 일어나는 곳입니다. 백엔드 전문가는 메시지 암호화 방법을 알고 있기 때문에 채팅 앱의 보안과 안정성을 책임집니다.
종단 간 암호화를 구현 하고 통신 앱을 안전하게 만드는 방법에는 여러 가지가 있습니다 . 일반적으로 암호화된 메시지는 메신저의 서버에 저장됩니다. 클라우드 서버가 더 안전하므로 이러한 목적으로 권장됩니다. 암호 해독 키는 서버가 해킹된 경우 데이터 유출을 방지하기 위해 사용자의 장치에서만 사용할 수 있습니다.
메시지를 서버에 완전히 저장하지 않고 사용자의 장치에 저장할 수도 있습니다. 그러나 이는 사용자 가 로그인한 기기를 분실하거나 앱을 삭제한 경우 메시지 기록을 복원할 수 없음을 의미합니다 . 장치 간의 메시지 동기화도 불가능합니다.
Signal과 같은 보안 메시징 앱을 만들기 위해 실제로 Signal 자체에서 암호화된 메시징 API를 사용할 수 있습니다 . Signal의 오픈 소스 암호화 프로토콜은 지속적으로 동료 검토 및 감사를 받기 때문에 메신저를 구축하는 개발자들 사이에서 가장 인기가 있습니다. 작성 당시 다음 메신저는 Signal의 프로토콜을 사용하여 메시지 내용을 암호화합니다.
- 왓츠앱
- Facebook Messenger(비밀 채팅 전용)
- Skype(비공개 대화만 해당)
- Android용 Google 메시지(SMS)
Telegram은 비밀 채팅을 위해 MTProto라는 자체 256비트 대칭 AES 암호화 기반 알고리즘을 사용합니다. 그러나 이 알고리즘은 Telegram이 널리 비판을 받아온 비공개 소스입니다.
보안 메시징 앱을 만드는 데 드는 비용

모든 앱을 만드는 비용 은 개발에 필요한 시간 에 크게 좌우됩니다. 기능의 수에 관한 한 메신저는 너무 복잡해 보이지 않습니다. 그러나 잘 암호화된 메시징 앱의 백엔드만 빌드하는 데 약 520시간이 걸릴 수 있습니다 .
메신저 백엔드를 위한 일반적인 프로그래밍 언어 옵션은 Elixir 또는 Erlang입니다 . Ruby on Rails는 문자 메시지, 미디어, 음성/영상 통화 형태의 대용량 데이터에는 적합하지 않습니다. WhatsApp은 Erlang을 사용하고 Elixir는 Discord에서 사용합니다.
Mind Studios 에서 우리는 Elixir 기반 백엔드로 메신저 앱을 개발했습니다. 그러나 Elixir 자체는 일부 Ruby가 혼합된 Erlang을 기반으로 하므로 숙련된 Elixir 개발자도 Erlang으로 코드를 작성할 수 있습니다.
보안 메시징 응용 프로그램을 개발하는 데 필요한 시간 은 다음과 같습니다.
비즈니스 분석 및 사양 작성 — 96시간 이상
UI/UX 디자인 — 168시간 이상
iOS 클라이언트 측 모바일 앱 — 가장 필수적인 기능을 갖춘 MVP의 경우 450시간 이상
백엔드 개발 — 520시간 이상
iOS 앱 테스트 — ~ 240시간
Android 개발은 iOS 개발보다 시간이 약간 덜 걸리지만 장치의 다양성으로 인해 테스트 시간이 더 오래 걸립니다.
이 대략적인 예상 시간으로 인해 정말 안전한 채팅 응용 프로그램을 구축하는 비용은 $51,590에서 시작하고 추가 기능이 추가될 것입니다.
결론
보안 메신저는 매우 중요하며, 보안 메신저에 대한 수요는 현재도 높고 내일도 더 높을 것입니다. 하지만 경쟁도 마찬가지다. 모든 회사가 암호화된 메시징 앱을 만들 수 있는 것은 아닙니다. Signal과 같은 안전한 인스턴트 메시징 앱을 개발하려면 이 틈새 시장에 경험이 있는 개발자가 필요합니다 .
또한 디자인과 관련하여 업계 리더들과 보조를 맞춰야 합니다. Signal 앱은 단순하고 직관적으로 유명하지 않지만 종소리보다 개인 정보를 더 중요하게 생각하는 사용자의 마음을 사로잡습니다. 반면 WhatsApp과 Telegram은 보안이 뛰어나고 매우 직관적이며 멋지게 보입니다(보안 수준이 Signal과 동일하지는 않지만 여전히 인상적입니다). 따라서 이 틈새 시장에서 빛을 발하려면 맞춤형 앱이 안전하고 사용자 친화적이어야 합니다 . 이러한 요구 사항의 균형을 맞추는 것은 사소한 일이 아닙니다. 그러나 올바른 팀이 있으면 가능합니다.

