피드로 돌아가기
Why I Use Argon2id Instead of bcrypt for PDF Encryption Keys
Dev.toDev.to
Security

GPU Brute Force 방어를 위한 Argon2id 기반 64MB Memory-hard 키 유도 설계

Why I Use Argon2id Instead of bcrypt for PDF Encryption Keys

hiyoyo2026년 4월 25일2intermediate

Context

PDF 암호화 키 생성을 위한 bcrypt의 60자 고정 출력 및 낮은 메모리 점유율로 인한 GPU 기반 Brute Force 취약점 발생. Key Derivation 전용 설계가 부재한 기존 Password Hashing 알고리즘의 한계 직면.

Technical Solution

  • Memory-hard 설계를 통한 GPU 연산 효율 저하 및 공격 비용 증대
  • 64MB Memory 할당과 3 Iterations 설정을 통한 연산 복잡도 확보
  • 32-byte Arbitrary-length Key 생성을 위한 Argon2id 알고리즘 채택
  • OsRng 기반의 유니크한 Salt 생성을 통한 Rainbow Table 공격 원천 차단
  • Salt를 Ciphertext와 병렬 저장하여 키 유도 과정의 무결성 유지
  • 1 Thread 제한 설정을 통한 리소스 예측 가능성 확보

1. 단순 비밀번호 저장과 암호화 키 생성(KDF) 목적을 구분하여 알고리즘 선택

2. GPU 가속 공격 방어를 위해 Memory-hard 특성이 있는 Argon2id 검토

3. Salt의 재사용을 금지하고 매 암호화마다 OsRng를 통한 고유값 생성 적용

4. 타겟 환경의 가용 메모리를 고려한 Memory 파라미터 최적화

원문 읽기