Base64 는 누구나 디코딩할 수 있는 인코딩입니다. "암호화됐다"는 보고서에 Base64 인코딩만 적용한 코드가 올라오면 반드시 되돌려 보내야 합니다.
GCM 에서 IV 재사용은 키 전체를 위험에 빠뜨립니다. IV 는 반드시 SecureRandom 으로 암호화할 때마다 새로 생성합니다.
비밀번호는 필요할 때 복호화해서 비교하는 대상이 아니라 해시로 검증하는 대상입니다. PBKDF2·bcrypt 같은 일방향 해시를 씁니다.
LIKE 나 = 로 직접 검색한다암호문은 매번 달라지므로 직접 검색이 불가능합니다. 검색이 필요하면 HMAC 해시 컬럼을 별도로 둡니다.
Git 저장소에 키가 커밋되면 이력 삭제도 어렵습니다. 환경 변수, 권한 600 파일, KMS 중 하나로 분리합니다.
DB 는 암호화됐어도 화면 캡처나 로그 유출로 노출될 수 있습니다. 화면·로그는 마스킹, DB 저장만 암호화라는 역할 분담을 지킵니다.
키 버전 접두어가 없으면 전체 데이터를 한 번에 재암호화해야 해 부담이 큽니다. 처음부터 버전 접두어를 두면 점진적 키 교체가 가능합니다.
new Random() 으로 키나 IV 를 생성한다Random 은 시드가 알려지면 예측 가능해 암호학적으로 안전하지 않습니다. 키·IV·토큰 생성에는 항상 SecureRandom 을 씁니다.