@hm-soft/enc
v0.1.0
Published
HMSOFT 복합 암호화 SDK (쓰기) — AES-256-GCM + ChaCha20-Poly1305 캐스케이드 + 키 회전
Maintainers
Readme
@hm-soft/enc
HMSOFT 복합 암호화 SDK — 쓰기(저장) 쪽. 표준 암호 위에 HMSOFT 고유 레이어를 얹은 다층(cascade) 구조로 민감 데이터를 암호화합니다.
평문
① AES-256-GCM ← 절대 방어선 (키 없으면 못 풂)
② ChaCha20-Poly1305 ← 2차 표준 암호 (캐스케이드)
③ HMSOFT 키 기반 셔플 ← HMSOFT 고유 변환 레이어
→ "HMSOFT:v1:<keyId>:<base64url>" 토큰복호화는 짝 패키지 @hm-soft/dec를 사용하세요.
설치
npm install @hm-soft/enc사용
import { hmsoftEncrypt, hashPassword, loadKey, generateKey } from "@hm-soft/enc";
// 1) 마스터 키 한 번 생성 → 환경변수 HMSOFT_ENC_KEY 에 보관
// node -e "import('@hm-soft/enc').then(m=>console.log(m.generateKey()))"
const key = loadKey(); // 환경변수에서 로드
await db.users.insert({
ssn: hmsoftEncrypt("901010-1234567", key), // 민감정보 → 암호화
pwHash: hashPassword(rawPassword), // 비밀번호 → 해싱(복호화 불가)
});키 회전 (선택)
HMSOFT_ENC_KEYS='{"v1":"<옛키 base64>","v2":"<새키 base64>"}'
HMSOFT_ENC_PRIMARY=v2import { hmsoftEncrypt, loadKeyring } from "@hm-soft/enc";
const ring = loadKeyring();
const enc = hmsoftEncrypt("민감정보", ring); // 항상 primary 키로 암호화API
| 함수 | 설명 |
|------|------|
| hmsoftEncrypt(text, key \| keyring) | 복합 암호화 → 토큰 문자열 |
| hashPassword(password) | scrypt 단방향 해싱 (복호화 불가) |
| loadKey(env?) | 단일 마스터 키(Buffer) 로드 |
| loadKeyring(env?) | 키 회전용 키링 로드 |
| generateKey() | 새 32바이트 키(base64) 생성 |
보안 원칙
- 안전성은 코드가 아니라 키에서 나옵니다. 소스가 공개돼도 키 없이는 못 풉니다.
- 마스터 키를 코드/깃/DB/로그에 절대 넣지 마세요.
- 비밀번호는 암호화가 아니라 반드시
hashPassword()로 해싱하세요.
License
Apache-2.0
