공공부하자개발 · 영어 학습 노트
자바
실무 확장Excel · 파일 업로드 · DB 연동0/22 완료
  • 01Excel(XLSX) 구조와 순수 JDK로 읽기/쓰기
  • 02Apache POI로 Excel 업로드/다운로드
  • 03파일 업로드/다운로드 서버 (HttpServer)
  • 04JDBC 기초와 트랜잭션 (H2)
  • 05MyBatis 어노테이션 매퍼로 쿼리 연동
  • 06MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot
  • 07REST API 서버와 JSON
  • 08Vue 3 SPA 와 Java 서버 연동
  • 09@Scheduled 운영
  • 10로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그
  • 11외부 API 연동
  • 12테스트 실무
  • 13암호화·개인정보 보호
  • 14인코딩·한글 실무
  • 15@Transactional 심화
  • 16긴 작업 비동기 처리와 진행률
  • 17SFTP·FTP 파일 연계
  • 18로컬 캐시와 @Cacheable
  • 19메일·알림 발송
  • 20웹 보안 체크리스트
  • 21빌드 도구와 폐쇄망 의존성 반입
  • 22성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 실무 확장 › 13 / 22

암호화·개인정보 보호

AES-GCM, 키 관리·교체, 검색용 HMAC, 컬럼 암호화, 마스킹
섹션 7진행 0 / 22
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

5. 자주 하는 실수 (Tip)

실수 1: Base64 인코딩을 암호화라고 부른다

Base64 는 누구나 디코딩할 수 있는 인코딩입니다. "암호화됐다"는 보고서에 Base64 인코딩만 적용한 코드가 올라오면 반드시 되돌려 보내야 합니다.

실수 2: IV 를 고정값이나 0 으로 둔다

GCM 에서 IV 재사용은 키 전체를 위험에 빠뜨립니다. IV 는 반드시 SecureRandom 으로 암호화할 때마다 새로 생성합니다.

실수 3: 비밀번호를 암호화(복호화 가능)로 저장한다

비밀번호는 필요할 때 복호화해서 비교하는 대상이 아니라 해시로 검증하는 대상입니다. PBKDF2·bcrypt 같은 일방향 해시를 씁니다.

실수 4: 암호화 컬럼을 LIKE 나 = 로 직접 검색한다

암호문은 매번 달라지므로 직접 검색이 불가능합니다. 검색이 필요하면 HMAC 해시 컬럼을 별도로 둡니다.

실수 5: 키를 코드나 설정 파일에 하드코딩한다

Git 저장소에 키가 커밋되면 이력 삭제도 어렵습니다. 환경 변수, 권한 600 파일, KMS 중 하나로 분리합니다.

실수 6: 화면·로그에 복호화된 개인정보를 그대로 출력한다

DB 는 암호화됐어도 화면 캡처나 로그 유출로 노출될 수 있습니다. 화면·로그는 마스킹, DB 저장만 암호화라는 역할 분담을 지킵니다.

실수 7: 키 교체 없이 유출 의심 상황에서도 같은 키를 계속 쓴다

키 버전 접두어가 없으면 전체 데이터를 한 번에 재암호화해야 해 부담이 큽니다. 처음부터 버전 접두어를 두면 점진적 키 교체가 가능합니다.

실수 8: new Random() 으로 키나 IV 를 생성한다

Random 은 시드가 알려지면 예측 가능해 암호학적으로 안전하지 않습니다. 키·IV·토큰 생성에는 항상 SecureRandom 을 씁니다.

자주 하는 실수 (Tip)
  • 실수 1: Base64 인코딩을 암호화라고 부른다
  • 실수 2: IV 를 고정값이나 0 으로 둔다
  • 실수 3: 비밀번호를 암호화(복호화 가능)로 저장한다
  • 실수 4: 암호화 컬럼을 LIKE 나 = 로 직접 검색한다
  • 실수 5: 키를 코드나 설정 파일에 하드코딩한다
  • 실수 6: 화면·로그에 복호화된 개인정보를 그대로 출력한다
  • 실수 7: 키 교체 없이 유출 의심 상황에서도 같은 키를 계속 쓴다
  • 실수 8: new Random() 으로 키나 IV 를 생성한다
이전 섹션4 응용 변형 예제5 / 7다음 섹션6 연습 문제