Toqen.app Mobile이 이제 오픈 소스입니다
Source: Dev.to
Toqen이란
Toqen은 보안 · 실시간 권한 부여를 위해 설계된 접근 우선 인증 인프라입니다. 각 접근 요청은 다음과 같이 처리됩니다.
- 실시간으로 생성됨
- 사용자가 명시적으로 승인함
- 디바이스가 암호학적으로 서명함
- 백엔드가 검증함
모바일 앱은 이러한 결정을 수행하는 보안 실행 레이어 역할을 합니다.
오픈소스 모바일 앱이 실제로 하는 일
모바일 클라이언트는 매우 좁고 명확한 책임만을 가집니다.
- 접근 요청을 스캔하거나 수신
- 백엔드에서 요청 컨텍스트를 가져옴
- 사용자에게 요청 내용을 표시
- 명시적인 승인 또는 거부를 수집
- 디바이스 키로 단시간 챌린지를 서명
- 서명된 결과를 검증을 위해 백엔드에 전송
앱은 스스로 접근을 허용하지 않으며, 최종 결정은 모두 서버에서 검증됩니다.
앱이 수집하는 데이터
핵심 포인트—코드에서 직접 확인할 수 있습니다. 모바일 앱은 암호화된 권한 부여를 수행하는 데 꼭 필요한 데이터만 저장합니다.
device_private_key(디바이스에서 생성, 절대 외부로 유출되지 않음)device_idapp_instance_id
이것이 저장되는 전체 민감 데이터이며, 다음과 같은 항목은 전혀 저장되지 않습니다.
- 비밀번호
- 세션 토큰
- 리프레시 토큰
- 재사용 가능한 인증 정보
- 백엔드 비밀
민감 데이터는 OS 수준의 보안 저장소(Keychain / Keystore)를 이용해 보관됩니다.
시스템에 포함되지 않은 것
Toqen은 데이터 최소화 원칙에 따라 설계되었습니다.
- QR 코드에 비밀 정보가 들어 있지 않음
- 권한 요청은 단시간에 만료되고 1회 사용만 가능
- 흐름 내에 재사용 가능한 토큰이 존재하지 않음
QR 코드가 가로채지더라도 접근을 얻을 수 없습니다. 권한 부여는 항상 다음을 필요로 합니다.
- 사용자 확인
- 디바이스 서명
- 백엔드 검증
권한 부여 실제 동작 방식
모든 흐름은 동일한 패턴을 따릅니다.
request → context → user decision → signature → verification → result
이를 통해 보장되는 점:
- 무음 승인 없음
- 암묵적 신뢰 없음
- 백그라운드 권한 부여 없음
모든 접근은 의도적이며 검증 가능합니다.
보안 모델 (요약)
시스템은 적대적인 환경을 가정합니다.
- 네트워크는 신뢰할 수 없음
- QR 코드는 가로채질 수 있음
- 요청은 재전송될 수 있음
보안은 다음을 통해 달성됩니다.
- 디바이스에 묶인 암호화 키
- 챌린지‑응답 방식 권한 부여
- 단시간 요청
- 서버‑사이드 검증
개인 키는 절대 디바이스를 떠나지 않으며, 백엔드도 해당 키에 접근할 수 없습니다.
모바일 앱만 오픈소스인 이유
모바일 클라이언트는 신뢰 검증 측면에서 가장 중요한 부분입니다. 오픈소스로 공개함으로써 다음을 가능하게 합니다.
- 독립적인 보안 리뷰
- 데이터 처리 검증
- 암호 흐름 검사
- 수집 여부 확인
백엔드는 비공개이지만, 그 동작은 다음을 통해 완전히 정의됩니다.
- API 계약
- 문서화된 흐름
- 보안 모델
- 위협 모델
이렇게 하면 운영 인프라를 노출하지 않으면서도 시스템을 검증 가능하게 유지합니다.
빌드 투명성
빌드 및 릴리스 과정도 문서화되어 있습니다. 각 빌드에는 다음 정보가 포함됩니다.
- 버전
- 커밋 해시
- 태그
- CI 레퍼런스
이를 통해 누구든지 배포된 앱이 어떻게 생성되었는지 추적할 수 있습니다.
이것이 의미하는 바
이제 주장만 믿을 필요가 없습니다. 할 수 있는 일:
- 코드를 직접 검토
- 저장 동작을 확인
- 암호화 작업을 리뷰
- 데이터 처리 방식을 확인
모바일 앱은 설계 단계부터 완전한 투명성을 갖추고 있습니다.