본문 바로가기
Security

Encryption

by orioncsy 2023. 3. 6.

암호화

대칭키와 비대칭키

대칭키

  • 양측이 암복호화하는 데 필요한 키를 동일한 키로 가지는 것
  • 대표적인 알고리즘
    • DES, 3DES, AES, SEED, ARIA
  • 속도가 비대칭키보다 빠르다.
  • 대칭키의 단점은 키를 전달하는 과정에 있다.
    • 키를 전달하는 과정에서 탈취당하면 보안상 위험
  • 이것을 해결하기 위해 공개키를 사용해서 대칭키를 암호화할 수 있다.

비대칭키

  • 대칭키 단점을 극복하기 위해 모든 사람이 접근할 수 있는 공개키와 사용자가 가지는 개인키를 사용
  • 키를 분배할 필요가 없어 보안에 더욱 좋다.
  • 단점은 암복호화하는 속도가 상대적으로 느리다.

단방향 암호화

개념

  • 암호화만 가능하고 복호화가 불가능한 방식
  • 비밀번호를 암호화하여 DB에 저장하고 사용자에게 비밀번호를 받아 암호화하여 비교하는 방식
  • 유저가 비밀번호를 잃어버렸을 때 찾을 수 없다.
    • 메일이나, sms를 통해 인증하고 새 비밀번호 설정 가능

알고리즘

  • 주로 해시 알고리즘을 사용
  • SHA - 256
    • 임의의 메세지를 256 bits의 축약된 메시지로 변경하는 알고리즘
    • 경우의 수가 2^256이기 때문에 무차별 대입 공격에 안전하다.
    • 속도가 빨라 인증서, 블록체인에 주로 사용

단방향 해시의 단점

  • rainbow table
    • digest : 해시를 통해 암호화한 메세지
    • 레인보우 테이블은 해시 함수를 사용하여 변환 가능한 모든 해시값을 저장한 표
    • 많이 사용하는 password를 사용할 경우 레인보우 테이블에 대입하면 비밀번호가 유출될 수 있다.
    • salting이라는 기법 활용
      • 패스워드에 임의의 128bit 정도의 문자열을 추가하여 digest 생성
  • 무차별 대입 공격
    • 해시 함수의 목적은 빠르게 검색하기 위해 만들어진 것으로 이것을 이용해 빠르게 digest를 비교해 해킹할 수 있다.
    • key stretching 기법 활용
      • 해시를 여러 번 반복하여 시간을 늘려서 대응

Spring boot에서 구현

  • BCryptPasswordEncoder
    • BCrypt라는 해시 함수를 이용한 구현체
    • salt 값까지 활용할 수 있어서 보안상 더 안전
  • SHA보다 BCrypt를 사용하는 이유
    • BCrypt는 Blowfish를 사용하여 해시 반복 횟수를 변수로 지정하여 작업량을 조절할 수 있다.
    • 이를 통해 무차별 대입 공격을 예방할 수 있다.

Reference

https://velog.io/@ayoung0073/Security-비밀번호-단방향-암호화

https://liveyourit.tistory.com/183

'Security' 카테고리의 다른 글

SQL Injection  (0) 2023.03.08
XSS & CSRF  (0) 2023.03.07