@hm-soft/dec
v0.1.0
Published
HMSOFT 복합 복호화 SDK (읽기) — AES-256-GCM + ChaCha20-Poly1305 + 키 회전 + 비밀번호 검증
Maintainers
Readme
@hm-soft/dec
HMSOFT 복합 복호화 SDK — 읽기(조회) 쪽.
@hm-soft/enc가 만든 토큰을 복호화하고, 비밀번호를 검증합니다.
토큰 → ③ HMSOFT 셔플 역산 → ② ChaCha20-Poly1305 복호 → ① AES-256-GCM 복호 → 평문암호화 과정의 2겹 AEAD가 복호화 시 위변조를 자동 검증합니다.
설치
npm install @hm-soft/dec사용
import { hmsoftDecrypt, verifyPassword, loadKey } from "@hm-soft/dec";
const key = loadKey(); // 암호화 때와 동일한 마스터 키
const row = await db.users.findOne(...);
const ssn = hmsoftDecrypt(row.ssn, key); // 토큰 → 평문
const loginOk = verifyPassword(input, row.pwHash); // 로그인 검증키 회전 (선택)
import { hmsoftDecrypt, loadKeyring } from "@hm-soft/dec";
const ring = loadKeyring(); // v1, v2 등 여러 키 보유
const plain = hmsoftDecrypt(oldToken, ring); // 토큰의 keyId로 알맞은 키 자동 선택API
| 함수 | 설명 |
|------|------|
| hmsoftDecrypt(token, key \| keyring) | 토큰 복호화 → 평문 (변조 시 예외) |
| verifyPassword(password, stored) | scrypt 해시 검증 (상수 시간 비교) |
| loadKey(env?) | 단일 마스터 키(Buffer) 로드 |
| loadKeyring(env?) | 키 회전용 키링 로드 |
| tokenKeyId(token) | 토큰이 어떤 keyId로 암호화됐는지 조회 (마이그레이션용) |
보안 원칙
- 마스터 키가 없으면 복호화는 수학적으로 불가능합니다 (코드 공개돼도 안전).
- 틀린 키 / 변조된 토큰은 명확히 거부됩니다.
License
Apache-2.0
