Hmac / Aes 비밀키 정리

박의진·2025년 11월 27일

일단 용어에 대한 간단한 개념 정리!

단방향

복호화가 불가능한 해시/서명용 HMAC 키 생성 (예 : HMAC-SHA256)

양방향

암/복호화가 가능한 대칭키 (AES-GCM) 생성

✅ 키 설계와 길이 권장안 정리

용도알고리즘키 길이비고
단방향HMAC-SHA25632바이트 (256비트) 이상토큰 서명/검증, 비밀번호 해시의 “pepper” 등
양방향AES-256-GCM32바이트 (256비트)인증(무결성) 포함. Nonce/IV는 12바이트 권장

‼️윈도우 기준으로 정리 예정‼️

이렇게 생성한 단방향/양방향 비밀키들은 시스템 환경변수에 저장하여 OS 로부터 프로젝트에서 호출 받아 사용하면 더 높은 단계의 보안성을 가진 프로젝트를 구성할 수 있다.

Windows에서 키 생성(PowerShell)

  1. HMAC 키(32바이트) 생성 → Base64
  2. AES-256 키(32바이트), GCM Nonce(12바이트) 생성 → Base64
    1) GCM의 Nonce/IV는 매 암호화마다 새로 생성. 환경변수에 “기본값”을 둘 수도 있지만, 실제 데이터 암호화 시에는 중복되지 않도록 매번 새로 만들고 함께 저장(또는 전송)해야 안전

환경변수 설정 (Windows)

시스템(머신) 환경변수에 저장(관리자 권한 PowerShell)

YML에 정의하여 OS에 생성한 비밀키를 불러온다.

이때 yml에 정의한 비밀키 변수가 환경변수에 저장되지 않을 경우 서버 에러 발생

base64 decoding을 통해 키 객체 생성

  1. 스프링에서 base64를 통해 인코딩한 비밀키 값을 다시 decoding 을 진행 → 진짜 바이트 배열로 변환
  2. SecretKeySpec로 HMAC-SHA256용 키 객체 생성

✅ 두 메소드 차이 요약

항목HMAC 키AES 키
역할메시지 무결성 (단방향)데이터 암복호화 (양방향)
유효 길이자유지만 32바이트↑ 권장정확히 16/24/32 바이트만
알고리즘HmacSHA256AES

✅ 비유로 쉽게 설명
환경변수에 저장된 키 문자열 = 금고 열쇠 그림 파일
base64(...) = 그림을 진짜 금속 열쇠로 만드는 과정
SecretKeySpec(...) = 열쇠를 자물쇠 규격에 맞게 가공

profile
주니어 백엔드 개발자의 개발 log💻

0개의 댓글