[SPRING:이론] 13 : 암호화

김승수·2024년 6월 7일
0

SPRING

목록 보기
13/27

⏰ 2024. 06. 07 금

✔ 스프링 이론 강의를 듣고 정리하면서 작성했습니다.

💡 목차

  1. 암호화의 필요성
  2. 양방향 ↔ 단방향 암호화
  3. Password Matching

⚡ 패스워드 암호화 의무

  • 회원 정보 등록 시, 정보통신망법, 개인정보보호법 에 의해 비밀번호 암호화가 의무이기 때문에 비밀번호는 사용자가 입력한 문자 그대로 DB에 등록하면 안된다.

암호화의 필요성

  • 암호화하지 않은 비밀번호를 평문으로 DB에 저장했을 때 회원정보가 탈취 당하면 회원정보에 바로 접근할 수 있는 상태가 된다.
  • 비밀번호가 갈취를 당하지 않더라도 비밀번호의 보안도에 따라 DB를 조회할 수 있는 관리자가 해당 비밀번호를 보면 바로 기억할 수도 있다.
  • 이를 예방하기 위해서 암호화된 상태의 비밀번호 저장이 필요하다.
  • 평문 → (암호화 알고리즘) → 암호문

양방향 ↔ 단방향 암호화

  • 양방향 알고리즘

    • 암호화 : 평문 → (암호화 알고리즘) → 암호문
    • 복호화 : 암호문 → (암호화 알고리즘) → 평문
  • 단방향 알고리즘

    • 암호화 : 평문 → (암호화 알고리즘) → 암호화
    • 복호화 : 불가 (암호문 → (암호화 알고리즘) → 평문)

⚡ 그럼 사용자가 로그인할 때 암호화된 패스워드를 기억해야 할까?!

  • 서버에서 Password 확인절차
  1. 사용자가 로그인을 위해 "아이디, 패스워드(평문)" 입력 → 서버에 로그인 요청
    • 서버에서 요청으로 들어온 패스워드(평문) 을 암호화 [ 평문 → (암호화 알고리즘) → 암호문 ]
  2. DB 에 저장된 "아이디, 패스워드 (암호문)"와 일치 여부 확인

Password Matching

  • Spring Security 프레임워크는 암호화된 패스워드에 대해 입력된 비밀번호화 일치여부를 확인해는 기능이 있다.

  • 예시)

 	// 비밀번호 확인
 	if(!passwordEncoder.matches("사용자가 입력한 비밀번호(평문)", "저장된 비밀번호(암호문)")) {
  	   throw new IllegalAccessError("비밀번호가 일치하지 않습니다.");
   }
  • matches(rewPassword, encodedPassword) 메서드
    • rawPassword : 사용자가 입력한 비밀번호(평문)
    • encodedPassword : 암호화되어 DB에 저장된 비밀번호(암호문)
boolean matches(CharSequence rewPassword, String encodedPassword)
profile
개발하는 미어캣

0개의 댓글