scrypt 해시 생성기

무료 온라인 scrypt 해시 생성기 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.

General
Password Hashing / KDF
Specialized
Deprecated
bytes
출력

결과가 여기에 표시됩니다...

입력 해시 계산

Usage Guide

scrypt 소개

scrypt(RFC 7914)는 CPU 시간과 메모리를 모두 많이 소비하도록 설계된 메모리 하드 패스워드 기반 키 도출 함수입니다. PBKDF2와 bcrypt를 위협하는 GPU, FPGA, ASIC 브루트포스 공격에 저항하기 위해 만들어졌습니다. scrypt는 라이트코인(Litecoin) 작업 증명, 패스워드 관리자, 안전한 키 도출 등에 사용됩니다. 세 가지 비용 파라미터로 보안과 성능의 균형을 조정할 수 있습니다.

scrypt는 KDF이지 해시가 아닙니다. 패스워드와 솔트에서 키를 도출합니다 — 다른 파라미터를 사용한 출력값은 직접 비교할 수 없습니다. 나중에 검증하려면 반드시 전체 파라미터 문자열(n:r:p:salt:key)을 저장하세요.

사용 방법

scrypt는 단방향 키 도출 함수로 역산이 불가능합니다:

1. 패스워드 입력키를 도출할 패스워드를 입력 상자에 입력합니다
2. 파라미터 설정N(CPU/메모리 비용), r(블록 크기), p(병렬성)을 설정합니다. 기본값(N=16384, r=8, p=1)은 대화형 로그인에 적합합니다
3. 키 도출암호화를 클릭 — 출력 형식은 n:r:p:salt_base64:key_hex입니다
4. 패스워드 검증검증하려면 패스워드 뒤에 |로 구분하여 전체 출력 문자열을 붙여넣고(예: mypassword|16384:8:1:salt:keyhex) 복호화를 클릭합니다
개인 정보 보호: 모든 도출 연산은 WebAssembly를 통해 완전히 브라우저에서 실행됩니다. 패스워드는 절대 전송되지 않습니다.

출력 형식

scrypt는 나중에 검증할 때 필요한 전체 파라미터 문자열을 출력합니다:

형식n:r:p:salt_base64:key_hex (예: 16384:8:1:abc123...:d4e5f6...)
NCPU 및 메모리 비용 인수 — 2의 거듭제곱이어야 합니다 (예: 16384 = 2¹⁴)
r블록 크기 파라미터 — 메모리 대역폭 비용에 영향을 줍니다
p병렬화 인수 — 메모리와 독립적으로 CPU 비용을 증가시킵니다
솔트도출 시 자동 생성되는 16바이트 랜덤 솔트(Base64 인코딩)
32바이트 도출 키(16진수 인코딩)

scrypt 파라미터 선택

보안 요구사항과 허용 가능한 지연 시간에 따라 파라미터를 선택합니다:

대화형(로그인)N=16384, r=8, p=1 — 최신 하드웨어에서 약 100ms, 웹 인증에 적합
민감한 데이터(파일 암호화)N=1048576, r=8, p=1 — 최신 하드웨어에서 약 5초, 디스크 암호화 키에 적합
N은 반드시 2의 거듭제곱유효한 값: 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576
메모리 사용량약 128 × N × r 바이트 (예: N=16384, r=8 → 약 16 MB)
새 애플리케이션에는 Argon2id (Password Hashing Competition 우승자, NIST 및 OWASP 권장)를 고려해보세요. scrypt는 뛰어나고 널리 사용되지만 Argon2id는 더 단순한 파라미터 모델을 가지고 있습니다.

FAQ

Q: scrypt가 하드웨어 공격에 강한 이유는 무엇인가요?

A: scrypt는 메모리 하드입니다: 내부 ROMix 알고리즘이 큰 메모리 블록(128 × N × r 바이트)에 의사 난수 순서로 접근해야 합니다. 이 순차적 메모리 접근 패턴은 SHA-256처럼 병렬화할 수 없습니다 — N=16384, r=8에서는 약 16 MB의 랜덤 접근이 필요하여 SHA-256이나 PBKDF2 같은 순수 계산 해시보다 GPU/ASIC 하드웨어에서의 공격 비용이 수 배 더 높습니다.

Q: scrypt는 bcrypt 및 Argon2와 어떻게 다른가요?

A: 세 가지 모두 패스워드 해싱 알고리즘이지만 설계가 다릅니다: bcrypt(1999)는 시간 비용만 높고(고정 4 KB 메모리) GPU 공격에 점점 취약해지고 있습니다. scrypt(2009)는 메모리 하드로 GPU/ASIC에 강하지만 복잡한 파라미터 상호작용이 있습니다(큰 N은 p를 통해 CPU 비용도 증가시킴). Argon2id(2015, PHC 우승)는 메모리 하드, GPU 내성이 있으며 시간/메모리/병렬성 파라미터가 독립적입니다. OWASP와 NIST는 새 시스템에 Argon2id를 권장하며 scrypt는 강력한 2위 선택입니다.

Q: N이 2의 거듭제곱이어야 하는 이유는 무엇인가요?

A: scrypt의 ROMix 알고리즘은 내부적으로 N을 룩업 테이블 크기로 사용하고 효율적인 랜덤 접근을 위해 비트 마스킹(index & (N-1))에 의존합니다. 이 마스크 기법은 N이 2의 거듭제곱일 때만 올바르게 동작합니다. 일반적인 값: 대화형 사용에는 16384(2¹⁴), 파일 암호화에는 1048576(2²⁰).

Q: scrypt 출력을 암호화 키로 직접 사용할 수 있나요?

A: 예 — scrypt는 키 재료를 생성하기 위해 특별히 설계되었습니다. 32바이트(256비트) 출력은 AES-256 키 또는 ChaCha20-Poly1305 키로 적합합니다. 그러나 동일한 scrypt 도출을 여러 목적(예: 인증과 암호화 모두)에 사용하지 마세요 — 다른 솔트로 별도의 키를 도출하거나 HKDF와 같은 KDF를 사용하여 하나의 루트 키를 확장하세요.

Q: 검증 입력 형식은 무엇인가요?

A: 저장된 scrypt 해시에 대해 패스워드를 검증하려면 패스워드와 전체 scrypt 출력 문자열을 파이프 문자로 구분하여 입력합니다: password|16384:8:1:salt_base64:key_hex. 도구는 저장된 파라미터를 사용해 키를 재도출하고 저장된 키와 비교합니다. 일치하면 '✓ 패스워드 확인됨'을 반환합니다.

Q: scrypt는 데이터베이스 패스워드 저장에 적합한가요?

A: 예, 적절한 파라미터를 사용하면 됩니다. 사용자별로 전체 문자열(n:r:p:salt:key)을 저장합니다 — 미래 검증에 필요한 모든 것이 포함되어 있습니다. 대화형 로그인에는 최소 N=16384, r=8, p=1을 사용하고 보안이 더 중요한 애플리케이션에는 N을 늘리세요. 현재 권장 사항은 OWASP 패스워드 저장 치트시트 를 참조하세요.

Use Cases

권장: 패스워드 저장

scrypt는 데이터베이스에 저장하기 전 패스워드를 해싱하는 데 탁월한 선택입니다. 메모리 하드 특성 덕분에 오프라인 브루트포스 공격이 PBKDF2나 bcrypt보다 수 배 더 비쌉니다. 웹 애플리케이션에는 N≥16384를, 더 민감한 시스템에는 더 높은 값을 사용하세요.

Recommended Configuration:
  • ✅ 대화형 웹 로그인에는 scrypt N=16384, r=8, p=1
  • ✅ 전체 n:r:p:salt:key 문자열 저장 — 키만 저장하지 말 것
  • ✅ 사용자별 고유한 랜덤 솔트 사용(이 도구가 자동 생성)
  • ❌ N<1024인 scrypt 사용 금지 — 작업 인수 부족
  • 💡 새 프로젝트에는 Argon2id 고려 — 현재 OWASP 권장 사항
권장: 디스크 암호화 키 도출

scrypt는 디스크 또는 파일 암호화를 위해 패스프레이즈에서 암호화 키를 도출하는 데 매우 적합합니다. 도출이 마운트 시 한 번만 수행되고 추가적인 몇 초의 지연이 허용 가능하므로 높은 파라미터(N=1048576)가 적절합니다. 도출된 키는 AES-256-GCM으로 직접 사용할 수 있습니다.

Recommended Configuration:
  • ✅ 디스크/파일 암호화 키 도출에는 scrypt N=1048576(2²⁰)
  • ✅ 32바이트 출력을 AES-256-GCM 키로 직접 사용
  • ✅ scrypt 파라미터와 솔트를 암호화된 데이터와 함께 저장
  • ❌ 인증과 암호화 모두에 동일한 도출 키 사용 금지
권장: 암호화폐 애플리케이션

scrypt는 라이트코인(및 다른 암호화폐)의 작업 증명 알고리즘으로 채택되었습니다. 지갑 애플리케이션에서는 니모닉이나 패스프레이즈에서 개인 키를 도출하는 데 scrypt를 사용합니다. 메모리 하드 특성은 ASIC 채굴 이점에 저항하기 위해 특별히 선택되었습니다.

Recommended Configuration:
  • ✅ 사용자 패스프레이즈에서 지갑 키 도출에 scrypt
  • ✅ 패스프레이즈 보호 키 저장에 scrypt
  • ❌ PoW 채굴 애플리케이션에는 구현 특화 파라미터 사용
비권장: 인증이 필요 없는 상황

scrypt는 키를 도출합니다 — 그 자체로는 인증이나 무결성을 제공하지 않습니다. 메시지 인증 코드가 필요하다면 HMAC-SHA256 을 사용하세요. 빠른 데이터 체크섬이 필요하다면 SHA-256 을 사용하세요. scrypt의 계산 비용으로 인해 고용량 작업에는 부적합합니다.

Recommended Configuration:
  • ❌ 범용 해싱에 scrypt 사용 금지(SHA-256 사용)
  • ❌ HMAC 또는 메시지 인증에 scrypt 사용 금지
  • ❌ 고빈도 작업(API 요청 서명, 요청별 토큰)에 scrypt 사용 금지
  • ✅ 패스워드 보호 특성이 명시적으로 필요한 경우에만 scrypt 사용

모범 사례 요약

  • scrypt는 메모리 하드 KDF — 패스워드 해싱 및 패스프레이즈에서의 키 도출에 적합합니다.
  • 항상 전체 파라미터 문자열(n:r:p:salt:key)을 저장 — 키만 저장하지 말 것.
  • N은 2의 거듭제곱이어야 합니다. 기본값 N=16384, r=8, p=1은 대화형 로그인에 적합합니다.
  • 새 애플리케이션에는 OWASP가 Argon2id를 첫 번째 선택으로 권장하며 scrypt는 강력한 두 번째 선택입니다.
  • scrypt는 범용 해싱, MAC, 고빈도 작업에는 적합하지 않습니다 — 이런 경우 SHA-256이나 HMAC를 사용하세요.

토론 및 피드백

0개의 댓글