보안 Password Manager 구축

발행: (2026년 1월 4일 오전 03:36 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

개요

이 프로젝트는 Python과 Tkinter를 사용해 만든 보안 데스크톱 비밀번호 관리자입니다. 강력한 암호화와 안전한 UX 패턴을 통해 자격 증명을 로컬에 저장·관리합니다. 설계는 실제 비밀번호 관리자와 유사한 보안‑우선 원칙을 따르면서도 이해하기 쉽고 감사 가능하도록 구성되었습니다.

핵심 설계

고수준 흐름

  • 마스터 비밀번호
  • PBKDF2 키 파생
  • AES‑256‑GCM 암호화
  • 암호화된 금고 파일 (vault.enc)

적용되는 주요 규칙

  • 마스터 비밀번호는 절대 저장되지 않습니다.
  • 비밀번호는 평문으로 디스크에 기록되지 않습니다.
  • 금고는 메모리 내에서만 복호화됩니다.
  • 비밀번호는 자동으로 화면에 표시되지 않습니다.

암호화 구현

키 파생

  • 무작위로 생성된 솔트를 사용한 PBKDF2 (SHA‑256).
  • 무차별 대입 공격을 늦추기 위한 높은 반복 횟수.
  • 암호화에 사용할 256‑비트 키를 생성합니다.

암호화

  • 인증된 암호화를 제공하는 AES‑256‑GCM 사용, 기밀성과 무결성을 보장합니다.
  • 금고 파일이 변조되면 복호화가 실패합니다.
  • 암호화된 금고는 vault.enc라는 단일 파일로 로컬에 저장됩니다.

금고 설계

  • 암호화된 JSON 형태로 저장됩니다.
  • 로그인 후 메모리 내에만 존재합니다.
  • 전체 금고가 하나의 단위로 암호화되며, 부분 저장이나 평문 저장이 없습니다.

사용자 인터페이스 (Tkinter)

화면

  • 로그인 화면 – 마스터 비밀번호 인증.
  • 금고 화면 – 사이트와 사용자 이름만 표시.
  • 비밀번호 추가 화면 – 토글이 있는 안전한 입력.

비밀번호 표시/숨기기 토글

  • 비밀번호는 기본적으로 마스킹됩니다.
  • 사용자는 새 비밀번호를 입력할 때 토글을 통해 가시성을 전환할 수 있으며, 이 토글은 입력 필드에만 영향을 주고 메인 금고 화면에 비밀번호를 노출하지 않습니다.

비밀번호 보기 (명시적 동작만)

비밀번호는 사용자가 다음 절차를 수행할 때만 표시됩니다:

  1. 항목을 선택한다.
  2. View Password 버튼을 클릭한다.

이렇게 하면 우발적인 노출을 방지하고 명확한 사용자 의도를 요구하게 되며, KeePass와 Bitwarden 같은 도구의 안전한 UX 동작을 그대로 반영합니다.

원클릭 복사 및 클립보드 자동 삭제

  • Copy Password 버튼을 눌러 비밀번호를 클립보드에 복사합니다.
  • 클립보드는 15초 후 자동으로 삭제되어 화면 노출을 줄이고 클립보드 유출 위험을 완화합니다.

보안 하이라이트

  • AES‑256‑GCM 암호화.
  • PBKDF2 키 파생.
  • 디스크에 평문 비밀번호가 없음.
  • 복호화는 메모리 내에서만 수행.
  • 비밀 정보 로그 기록 없음.
  • 클립보드 자동 삭제.
  • 명시적인 비밀번호 접근.

프로젝트 구조

PasswordManager/
├── password_manager.py   # Encryption and vault logic
├── ui.py                  # Tkinter UI
├── vault.enc              # Encrypted vault (auto‑created)
├── salt.bin               # Cryptographic salt
├── screenshots/           # Example UI screenshots
└── README.md

저장소

🔗 GitHub Repo

Back to Blog

관련 글

더 보기 »