MeldID: от единого аккаунта к системе управления цифровым доступом
제가 처음 MeldID를 접했을 때, 그것을 먼저 단일 디지털 신원 확인 서비스로 인식했습니다. 이제 프로젝트는 오프라인 인증기 TOTP, 기기 간 데이터 자동 복구, 연결된 서비스 로그인 확인 기능이 결합된 애플리케이션을 갖추게 되었습니다.
제가 처음 MeldID를 접했을 때, 그것을 먼저 단일 디지털 신원 확인 서비스로 인식했습니다. 사용자들은 하나의 계정을 생성하고 관리 가능한 프로필을 작성한 후, 이를 여러 애플리케이션에서 사용할 수 있습니다 — 반복 입력 없이 로그인 및 허가된 데이터 전송이 가능하게 됩니다.
나는 프로필과 연결된 서비스 쪽으로 더 발전하기를 기대했지만, 이 프로젝트는 빠르게 거의 눈에 띄지 않는 서버 인프라에서 일상적인 접근 관리 도구로 변모하기 시작했습니다.
다음 단계로 iPhone과 Android용 애플리케이션이 등장했고, 여기서 특히 흥미로운 것은 모바일 클라이언트의 등장 자체보다, 어떤 기능들이 하나로 통합됐는지에 있습니다.
일반 TOTP — 다른 목적을 위해
앱에는 일회용 코드 TOTP 생성기가 포함되어 있는데, 이는 2단계 인증에 사용하는 변화하는 숫자들입니다.
이 표준은 자체 발명품으로 선전되지 않습니다. 사용자들은 계정을 등록하고, 타사 서비스나 웹사이트에서 사용할 수 있는 코드를 받아 봅니다.
대부분 인증기들은 “6자리 코드를 어떻게 보여줄까?” 하는 질문에 답합니다. 여기서 해결하는 문제는 더 넓은데, 바로 TOTP 비밀키의 수명주기를 안전하게 관리하는 것 — 추가, 저장, 다른 기기로 복구, 삭제까지 모두 포함됩니다.
오프라인 모드가 전면 작동
처음에는 주된 이점이 로컬에서 코드 생성만 가능하다는 것처럼 보이지만, MeldID의 오프라인 모드에는 더 많은 기능이 있습니다.
이미 저장된 기록은 인터넷 없이도 계속 작동하며, 코드는 기기에서 직접 생성되므로 일시적인 연결 끊김이 이중 인증을 통과하는 데 영향을 미치지 않습니다.
새 TOTP 기록도 오프라인에서 추가할 수 있습니다. 로컬에 저장되고 즉시 코드 생성에 사용되며, 인터넷이 연결되면 자동으로 안전한 저장소에 전송되어 다른 기기와 동기화됩니다.
동기화된 기록은 서버에 연결해야 편집 및 삭제가 가능하며, 이를 통해 서로 다른 기기에 저장된 버전이 달라지는 것을 방지합니다.
이렇듯 네트워크 유무에 관계없이 주요 기능이 가능하며, 온라인으로 복귀했을 때 여러 기기에서 동일하게 적용할 변경 사항들이 처리됩니다.
새 휴대폰이 새 코드 세트를 의미하지 않는다
모든 인증기에서 가장 불편한 문제는 기기 분실, 고장 또는 교체 후 발생합니다. 보통은 백업 코드를 찾거나 수동으로 기록을 옮기거나, 각각의 서비스에 새 애플리케이션 연동을 다시 해야 합니다.
여기서 저장소는 특정 기기에 연결되지 않고, MeldID 계정과 연동됩니다. 새 기기에서 로그인 후, 보안 저장소를 초기화하면 기록이 자동 복구됩니다.
이전 기기에서 Android였고 새 기기에서 iPhone일 때도, 반대의 경우도 마찬가지로 적용됩니다. 별도의 이동 절차 없이 두 번째, 세 번째, 이후 기기를 연결할 수 있습니다.
예를 들어, 여행 중에 스마트폰이 예상치 못하게 고장난 경우를 상상해봅시다. 별도 접근 권한 복구 대신, 사용자는 새 기기에서 MeldID에 로그인하고 저장소를 초기화하면, 그 후 TOTP 기록이 앱에 복구됩니다.
한 기기에서 여러 개의 MeldID 계정을 사용할 수도 있으며, 각 계정의 저장소는 별도로 유지됩니다. 한 계정의 기록이 다른 계정에 섞이거나, 권한 없는 기기에 나타나지 않습니다.
서버에 저장되는 항목
자동 복구는 데이터가 어딘가에 저장되어야 함을 의미합니다. 하지만 TOTP 비밀키는 공개된 형태로 데이터베이스에 기록되지 않습니다.
기록 내용은 암호화된 컨테이너에 저장되며, 현재 아키텍처는 인증된 AES-256-GCM 암호화를 사용하고, 보호된 저장소 키는 데이터베이스와 분리되어 있습니다.
이로 인해 하나의 데이터베이스 누출이 바로 코드 생성용 비밀키 목록으로 이어지지 않으며, 공격자는 암호화된 블록을 얻지, 공개된 TOTP 비밀키를 얻지 못합니다.
중요한 점은, 완전한 보장을 할 수 없다는 것에 유의해야 합니다. 즉, 공개된 TOTP 비밀키는 데이터베이스에 저장되지 않으며, 하나의 데이터베이스 복사본만으로 이를 사용할 수 없다는 의미입니다.
로그인 승인(MeldID를 통한 입증)
애플리케이션의 또 다른 중요한 기능은 Login Approval, 즉 별도 인증 승인입니다.
만약 웹사이트나 애플리케이션이 MeldID를 지원한다면, 사용자는 계정을 통해 로그인하는 것을 한 번의 조작으로 시작할 수 있습니다. 보호 기능이 활성화된 경우, 성공적인 인증은 단순한 것 이상입니다: 신뢰하는 모바일 기기에서 최종 승인 없이는 로그인 처리가 완료되지 않습니다.
이 요청은 사용자가 실제로 로그인 시작했는지의 여부를 승인하거나, 예상치 못한 활동으로 여겨질 경우 거부할 수 있습니다.
일반 push 알림과 달리, Login Approval은 MeldID 구조에 내장되어 있으며, 이 ID 시스템에 연결된 모든 서비스에서 사용할 수 있습니다.
push 알림은 단지 새로운 작업에 대한 알림 역할을 하며, 인증에 사용할 비밀번호, TOTP 코드, 토큰 또는 기타 데이터는 포함되어 있지 않습니다.
TOTP와 Login Approval는 서로 보완한다
TOTP는 여전히 범용 표준으로, MeldID를 모르는 서비스에서도 작동합니다. 기록이 로드된 후, 코드는 로컬에서 생성됩니다.
Login Approval은 MeldID를 통해 직접 인증이 이뤄지는 곳에서 필요하며, 사용자에게 의식된 행동을 부여하고, 세션 생성 이전에 시도를 중단할 수 있게 합니다.
이로 인해, 이 애플리케이션은 외부 사이트의 일반 인증기와 함께, 연결된 시스템에 로그인하는 승인 수단으로 동시에 활용될 수 있습니다.
MeldID 자체에 어떤 변화가 있었나
프로젝트를 처음 접했을 때, 핵심 개념은 단일 계정 관리와 이동 가능한 프로필이었습니다. 그러나 점차 MeldID는 개인 맞춤형 디지털 접근 관리 센터로 변모하고 있음을 알게 됐습니다.
여기서 할 수 있는 것들은:
인터넷 없이 TOTP 코드 생성
오프라인에서 새 기록 추가
새 기기에서 자동 복구
여러 기기 활용
여러 계정 분리
새 로그인 승인 또는 거절
이 애플리케이션의 가치는 단순히 6자리 코드를 보여주는 것에 있지 않으며, 더 넓은 의미를 갖습니다. 기기 교체 시 접근권 확보, 네트워크 없는 상태에서 데이터 손실 방지, 그리고 새 세션 생성 전 최종 사용자의 의식적인 선택을 돕는 것이 핵심 과제입니다.
이 보안은 하나의 기법이 아니라, 여러 솔루션의 결합으로 이루어집니다: TOTP 비밀키는 공개되지 않으며, 접근권은 영구적으로 한 기기에 묶이지 않고, 여러 계정은 격리되며, 지원하는 서비스에 로그인할 때는 보호된 기기에서의 승인만으로 완료됩니다.