본문 바로가기

인공지능

Mini Diarium: 인터넷 연결 없는 로컬 암호화 저널 애플리케이션의 구조와 보안 설계

728x90
반응형
728x170

이 글은 로컬 환경에서 동작하며 강력한 암호화를 기반으로 개인 일기를 보호하는 오픈소스 애플리케이션 Mini Diarium을 소개합니다. 단순한 일기 앱을 넘어, AES-256-GCM 암호화와 키 파일 기반 인증(X25519)을 적용해 데이터 유출 가능성을 구조적으로 차단한 설계를 중심으로 살펴봅니다. 또한 아키텍처 구성, 인증 방식, 데이터 저장 구조, 설치 및 사용 방법까지 체계적으로 정리해 Mini Diarium이 왜 ‘진짜 로컬 퍼스트(Local-First)’ 앱인지 이해할 수 있도록 설명합니다.

반응형

Mini Diarium 개요

Mini Diarium은 인터넷에 전혀 연결되지 않는 로컬 기반 저널 애플리케이션입니다. 모든 데이터는 사용자 PC 내부에만 저장되며, 네트워크 통신이 존재하지 않습니다.

핵심 특징 요약

  • 모든 일기 데이터 AES-256-GCM 암호화
  • 랜덤 마스터 키 기반 구조
  • 비밀번호 + X25519 키 파일 인증 지원
  • SQLite 로컬 저장
  • Tauri 2 + SolidJS + Rust 기반 경량 아키텍처
  • 텔레메트리, 분석, 자동 업데이트 체크 없음
  • Windows / macOS / Linux 지원

즉, 데이터가 외부 서버로 전송될 가능성이 설계 단계에서 차단되어 있습니다.


개발 배경

Mini Diarium은 기존 Mini Diary의 철학을 계승한 프로젝트입니다. 기존 앱이 오랜 기간 유지보수되지 않으면서 종속성 노후화 문제가 발생했고, 이를 단순 포크하는 대신 완전히 새롭게 재구성했습니다.

재구현 과정에서 다음 철학은 유지되었습니다.

  • 로컬 전용
  • 최소한의 기능
  • 강력한 암호화
  • 사용자 프라이버시 최우선

그 결과 더 가볍고 빠르며, 암호화 설계가 강화된 애플리케이션으로 재탄생했습니다.


보안 아키텍처 설계

Mini Diarium의 핵심은 Wrapped Master Key 구조입니다.

1. 마스터 키 구조

  • 256비트 랜덤 마스터 키가 최초 생성됨
  • 모든 일기 항목은 이 마스터 키로 AES-256-GCM 암호화
  • 마스터 키는 평문으로 저장되지 않음

2. 인증 방식과 키 래핑 구조

각 인증 방법은 마스터 키의 암호화된 복사본을 보관합니다.

이 구조의 장점은 다음과 같습니다.

  • 인증 방법 추가/삭제 시 기존 일기 재암호화 불필요 (O(1))
  • 마스터 키는 항상 암호화된 상태로만 저장

인증 방식 상세 설명

Mini Diarium은 두 가지 인증 방식을 제공합니다.

1. 비밀번호 기반 잠금 해제

  • Argon2 키 파생 함수 사용
  • AES-GCM으로 마스터 키 언래핑

비밀번호는 단순 비교가 아니라 Argon2를 통해 키로 파생되며, 이를 통해 브루트포스 공격 저항성을 확보합니다.


2. 키 파일 기반 인증 (X25519)

일반적인 저널 앱은 비밀번호만 제공합니다. 하지만 Mini Diarium은 SSH 키처럼 동작하는 .key 파일 기반 인증을 지원합니다.

작동 방식

  1. 256비트 마스터 키 최초 생성
  2. Preferences에서 X25519 키 쌍 생성
  3. 개인 키는 .key 파일로 저장 (64자 hex 문자열)
  4. 공개 키는 데이터베이스에 저장
  5. 공개 키를 사용해 ECIES 방식으로 마스터 키 암호화
    • Ephemeral DH
    • HKDF-SHA256
    • AES-256-GCM

보안 특성

  • 개인 키는 DB에 저장되지 않음
  • 공개 키만으로는 잠금 해제 불가
  • 변조된 키 파일은 AES-GCM 인증 단계에서 거부됨
  • 비밀번호 없이 키 파일만으로도 잠금 가능

왜 키 파일을 사용할까?

  • 비밀번호 입력 없이 USB 기반 인증 가능
  • 오프라인 환경에서 보안 분리 가능
  • 인증 수단 다중 등록 가능

단, 비밀번호와 모든 키 파일을 잃으면 복구 경로는 존재하지 않습니다.


데이터 저장 구조

Mini Diarium은 SQLite를 로컬에서 직접 사용합니다.

저장 흐름

일기 저장 시:

  1. 마스터 키로 콘텐츠 암호화
  2. 암호화된 데이터가 entries 테이블에 저장

구성 요소:

  • UI → Tauri invoke() → Rust Backend
  • Backend → SQLite 파일
  • HTTP 클라이언트 없음
  • 백그라운드 동기화 없음
  • 텔레메트리 없음

모든 처리가 로컬 머신 내부에서만 실행됩니다.


주요 기능 정리

기본 기능

  • 리치 텍스트 에디터
  • 캘린더 기반 날짜 탐색
  • 자동 저장
  • 통계 기능
  • 테마 지원
  • 자동 백업 (잠금 해제 시 회전 백업)

데이터 입출력

Import 지원:

  • Mini Diary JSON
  • Day One JSON/TXT
  • jrnl JSON (충돌 병합 지원)

Export 지원:

  • JSON
  • Markdown

환경 설정

  • 주 시작 요일 설정
  • 미래 날짜 작성 허용 여부
  • 제목 표시 설정
  • 맞춤법 검사
  • 인증 방법 관리

설치 방법

Windows

  • .msi 또는 .exe (관리자 권한 불필요)
  • SmartScreen 경고 발생 가능
    • "More info" → "Run anyway"

macOS

초기 실행 시 Gatekeeper 차단 가능

터미널에서 실행:

xattr -cr "/Applications/Mini Diarium.app"

1회 실행 후 정상 사용 가능

Linux

  • AppImage 또는 .deb
  • SHA256 체크섬 검증 권장

Quick Start 사용 예시

  1. 앱 실행
  2. 비밀번호 생성 (복구 불가)
  3. 첫 번째 일기 작성 (자동 저장)
  4. Ctrl + Left / Right 로 날짜 이동
  5. 작업 종료 후 잠금

키 파일 설정 방법 예시

  1. Preferences → Authentication Methods
  2. Generate Key File 클릭
  3. .key 파일을 USB 또는 안전한 저장소에 저장
  4. 현재 비밀번호 입력해 등록 승인
  5. 슬롯 이름 지정

이후 로그인 화면에서 Key File 모드 선택 후 .key 파일을 불러오면 잠금 해제 가능합니다.


레이어드 아키텍처 설계

Mini Diarium은 계층형 구조를 따릅니다.

  • UI (SolidJS)
  • Tauri 인터페이스
  • Rust 백엔드
  • SQLite 로컬 DB

네트워크 계층 자체가 존재하지 않는 구조입니다.


Mini Diarium의 기술적 강점 정리

  1. 네트워크 단절 설계
  2. 마스터 키 래핑 구조
  3. 인증 방법 독립 관리
  4. 강력한 암호화 스택 (Argon2, X25519, HKDF, AES-256-GCM)
  5. 오픈소스 및 재현 가능한 빌드
  6. 경량 크로스 플랫폼 앱 (Tauri 기반)

728x90

Mini Diarium은 단순한 일기 앱이 아닙니다.
이 앱은 "데이터는 절대 인터넷으로 나가지 않는다"는 원칙을 코드 레벨에서 구현한 로컬 퍼스트 애플리케이션입니다.

강력한 암호화와 키 파일 기반 인증은 사용자의 프라이버시를 기술적으로 보호합니다. 인증 수단을 추가하거나 제거해도 기존 데이터를 재암호화할 필요가 없는 설계는 매우 효율적이며, 장기적으로도 유지보수에 유리합니다.

특히 다음과 같은 사용자에게 적합합니다.

  • 클라우드 저장을 원하지 않는 사용자
  • 오프라인 환경에서 작업하는 사용자
  • 보안 중심 워크플로를 원하는 사용자
  • SSH 키 기반 인증 개념에 익숙한 개발자

Mini Diarium은 최소한의 기능과 최대한의 프라이버시를 결합한 설계 사례입니다. 로컬 퍼스트 아키텍처와 암호화 설계를 이해하는 데에도 좋은 참고 모델이 될 수 있습니다.

프라이버시를 기술적으로 보장하는 애플리케이션이 어떤 구조로 설계되어야 하는지 보여주는 하나의 구현 사례라고 볼 수 있습니다.

300x250

https://github.com/fjrevoredo/mini-diarium

 

GitHub - fjrevoredo/mini-diarium: A local-first journal with serious encryption. Free, open source, and never touches the intern

A local-first journal with serious encryption. Free, open source, and never touches the internet. - fjrevoredo/mini-diarium

github.com

728x90
반응형
그리드형