기능 목록으로 돌아가기
모바일 앱Chat5 min read

Android 암호화 P2P 채팅

네트워크상의 다른 PlainApp 기기로 텍스트와 파일을 직접 전송하세요. XChaCha20-Poly1305로 종단간 암호화되며, 중앙 서버가 없습니다.

Chat 화면은 PlainApp에 내장된 P2P 메신저입니다. 열면 네트워크상의 모든 다른 PlainApp 기기 목록(페어링된 피어, 페어링 대기 중인 피어, 그리고 참여했거나 생성한 채널(그룹 채팅))이 표시됩니다. 하나를 탭하면 메시지 버블, 파일 첨부 및 메시지별 암호화 표시기가 있는 대화 보기가 열립니다.

채팅은 전적으로 휴대폰에서 실행됩니다. 중앙 서버, 계정, 전화번호 조회가 없습니다. 메시지는 사용 가능한 최상의 전송 방식(Wi-Fi Aware(두 기기 모두 지원 시), 로컬 네트워크, Bluetooth Low Energy(검색용 대체 수단))을 통해 기기에서 피어 기기로 직접 전송됩니다. 모든 메시지는 종단간 암호화되며, 키는 이를 생성한 기기를 절대 떠나지 않습니다.

Screenshot: Chat
Chat

Screenshot: Chat
Chat

주요 기능

  • 직접 P2P 메시징 — 텍스트와 파일이 중계 없이 한 PlainApp 기기에서 다른 기기로 직접 전송됩니다.
  • 채널(그룹 채팅) — 채널을 만들고 페어링된 피어를 초대합니다. 채널 메시지는 각 멤버별로 개별적으로 암호화됩니다.
  • 파일 첨부 — Files 화면에서 사진, 문서 또는 모든 파일을 첨부합니다. 파일은 암호화되어 텍스트와 동일한 전송 방식으로 전송됩니다.
  • 메시지별 암호화 표시기 — 각 메시지는 암호화되어 피어가 확인하면 자물쇠 아이콘을 표시합니다.
  • 전송 대체 방식 — 메시지가 사용 가능한 최상의 전송 방식(LAN, Wi-Fi Aware 또는 BLE(검색용))을 자동으로 선택합니다.
  • 긴 메시지는 파일로 전송 — 2048자를 초과하는 메시지는 텍스트 버블 대신 암호화된 텍스트 파일로 자동 전송됩니다.

사용 방법

  1. 하단 내비게이션 바에서 Chat 탭을 엽니다. 목록에는 로컬 채팅(자신의 기기), 참여한 채널, 온라인 상태가 표시된 페어링된 피어가 표시됩니다.
  2. 페어링된 피어를 탭하여 대화를 엽니다. 페어링되지 않은 피어를 탭하면 페어링 플로우가 시작됩니다 — 피어의 QR 코드를 스캔하거나 페어링 요청을 수락합니다.
  3. 하단 입력 바에 메시지를 입력하고 보내기를 누릅니다. 메시지 옆의 자물쇠 아이콘이 암호화 상태를 표시하며, 피어가 수신을 확인하면 완료 상태가 표시됩니다.
  4. 파일을 첨부합니다 — 첨부 버튼을 탭하고 Files 화면에서 파일을 선택합니다. 파일이 암호화되어 활성 전송 방식으로 피어에게 업로드됩니다.
  5. 암호화 표시기를 확인합니다 — 보낸 메시지를 길게 눌러 전송 상태, 암호화 키 지문 및 사용된 전송 방식을 확인할 수 있습니다.
  6. 전송 방식을 전환합니다 — 피어가 LAN과 Wi-Fi Aware 모두를 통해 접근 가능한 경우, 대화가 자동으로 더 빠른 방식을 선택합니다. 당겨서 새로고침하여 강제로 재연결할 수 있습니다.

팁 & 요령

  • 두 기기를 한 번 페어링하면 계속 페어링 상태가 유지됩니다. 페어링된 피어는 동일한 네트워크에 있을 때 자동으로 다시 연결됩니다.
  • 채널을 만들어 여러 피어에게 한 번에 그룹 메시지를 보낼 수 있습니다. 각 멤버는 모든 메시지의 개별 암호화된 사본을 수신합니다.
  • 메시지 전송에 실패하면 탭하여 전송 상태 모달을 열고 다시 입력하지 않고 재시도할 수 있습니다.
  • 긴 메시지(2048자 초과)는 자동으로 암호화된 텍스트 파일로 전송됩니다 — 직접 분할할 필요가 없습니다.

개인정보 및 보안 정보

  • 메시지는 XChaCha20-Poly1305로 종단간 암호화됩니다. 키는 대화별로 파생되며 참여 기기를 절대 떠나지 않습니다.
  • 각 기기는 Ed25519 키로 메시지에 서명합니다. 피어는 페어링 시 교환된 발신자의 공개 키에 대해 서명을 확인합니다.
  • 페어링은 ECDH P-256 키 교환을 사용하여 공유 비밀을 설정합니다. 페어링 핸드셰이크는 QR 코드 스캔 또는 수명이 짧은 로컬 채널을 통해 이루어지며, 어떤 단계에서도 중앙 서버가 관여하지 않습니다.

관련 기능