2025년 10월 21일 화요일 (97일차)

Jeonghoon·2025년 10월 21일

jeonghoon's Study

목록 보기
100/128

🔐 암호화(Encryption) & 🍪 쿠키(Cookie) 정리


🔒 암호화(Encryption)

💡 개념 요약

  • 정의: 자료를 보호하기 위해 사람이 이해하기 어려운 형태로 변환하는 기술
  • 목적: 자료보호 🧱, 신뢰성 확보 ✅, 무결성 유지 🧬
  • 사용처: 계정 비밀번호, HTTPS 통신, 금융거래 등 💳

📚 주요 용어 정리

용어설명
평문(Plain Text)암호화되기 전의 원래 데이터
암호문(Cipher Text)암호화된 데이터
암호화(Encryption)평문을 암호문으로 변환하는 과정
복호화(Decryption)암호문을 다시 평문으로 변환하는 과정
단방향 암호화(One-way)복호화가 불가능한 암호화 (예: 해시함수 기반)
양방향 암호화(Two-way)암호화 후 복호화가 가능한 방식 (예: 대칭키 암호화)
해시함수(Hash Function)입력값을 고정된 길이로 변환하는 함수 (복호화 불가)
솔트(Salt)같은 평문이라도 다른 결과를 만들기 위한 랜덤값

🧮 주요 알고리즘

알고리즘유형특징사용처
BCrypt단방향해시 기반 암호화, 솔트 자동 포함비밀번호 저장
SHA-256단방향256비트 해시 알고리즘파일 무결성, 전자서명
TLS양방향통신 데이터 암호화HTTPS, 네트워크 통신

🧩 BCrypt 상세

⚙️ 특징

번호설명
1솔트를 사용해 같은 평문도 다른 암호문 생성
2반복 연산으로 검증 속도를 느리게 하여 보안 강화
3단방향 암호화 — 복호화 불가능
4평문 비교가 아닌 암호문 비교로 검증 수행

🔍 BCrypt 암호문 구조 예시

$2a$10$69bMrChodVYxOcvM/cUo7evsho3hw6YBJT9yepHudwBlIvi7KlV0.

구분내용설명
$2a버전 정보BCrypt 알고리즘 버전
$10반복 연산 수2의 제곱근(=1024번 반복)
69bMrChodVYxOcvM/cUo7e솔트 (22자)무작위 랜덤 문자열
vsho3hw6YBJT9yepHudwBlIvi7KlV0.해시값 (31자)암호화 결과

🧰 BCrypt 사용법 (주로 Service에서 사용)

단계코드 예시설명
1️⃣implementation 'org.springframework.security:spring-security-crypto:6.4.4'Gradle 의존성 추가
2️⃣private final BCryptPasswordEncoder bCrypt = new BCryptPasswordEncoder();BCrypt 객체 생성
3️⃣String encoded = bCrypt.encode(plain);평문 암호화
4️⃣boolean match = bCrypt.matches(plain, encoded);평문 vs 암호문 비교 (검증)

🍪 쿠키(Cookie)

💡 개념 요약

  • 클라이언트 브라우저의 임시 저장소
  • 주요 사용처:
    1️⃣ 로그인 상태 유지 (자동 로그인)
    2️⃣ 사용자 환경 설정 저장 (테마, 언어 등)
    3️⃣ 사용자 행동 통계 / 분석

🧾 세션 vs 쿠키 비교

구분저장 위치유효기간보안서버 과부하 가능성예시
세션(Session)서버서버 종료 시 삭제비교적 안전비교적 높음로그인 정보
쿠키(Cookie)클라이언트설정된 기간 동안 유지비교적 취약비교적 낮음장바구니, 자동로그인

⚠️ 유의사항

항목설명
민감한 정보 저장 금지비밀번호 등 개인 정보는 절대 저장하지 않음
보안 설정 필수쿠키는 클라이언트 저장이므로 공격 위험 존재

🔒 쿠키 보안 설정

설정 항목코드설명
JS 접근 차단.setHttpOnly(true)JavaScript에서 접근 불가
HTTPS 전용 전송.setSecure(true)HTTPS 환경에서만 쿠키 송수신
유효기간 설정.setMaxAge(초)쿠키의 만료 시간 지정
접근 경로 지정.setPath("/")특정 경로에서만 접근 가능

🧰 쿠키 사용법 (Controller 기준)

단계코드 예시설명
1️⃣Cookie cookie = new Cookie("쿠키명", 값);쿠키 객체 생성
2️⃣cookie.setHttpOnly(true);보안 설정 적용
3️⃣response.addCookie(cookie);쿠키를 클라이언트로 전송
4️⃣@CookieValue 또는 request.getCookies()쿠키 읽기
5️⃣cookie.setMaxAge(0); response.addCookie(cookie);쿠키 삭제

0개의 댓글