Web/보안

    Access Token의 취약점과 Refresh Token을 어떻게 써야하는지

    Access Token의 취약점 Access Token은 암호화 보다는 서명에 초점을 맞춘 토큰이므로 탈취 당할 위험성이 있다. 보통 Access Token에는 중요한 정보를 담지 않아서 탈취당하더라도 별 문제가 없다. 그러나 서비스 이용자에게 권한을 부여하는 경우에는 문제가 될 수 있다. Access Token은 발급된 이후 서버에 저장되지 않고 토큰 자체로 검증을 하여 사용자 권한을 인증하므로, 기한이 만료되기 전 까지 토큰을 탈취한 사람은 권한 접근이 가능해진다. Access Token은 발급한 후 삭제가 불가능하므로 토큰 유효기간을 짧게 설정하는 것이 해결책이 될 수 있지만, 그만큼 사용성이 떨어지는 단점이 있다(새로 Token을 발급받기 위해 로그인을 자주 해야함). ⇒ Access Token의..

    비밀번호 암호화 함수로 Bcrypt를 사용하는 이유

    비밀번호 암호화를 할 시 bcrypt를 추천하는 글들이 많았다. 스프링에서도 BCryptPasswordEncoder 사용을 권장하는데, 왜 그런지 궁금해서 찾아보았다. 해시 함수의 취약점 SHA, MD5 등의 해시 함수는 메시지 송수신시 무결성 검사를 위해 개발되었으며 이로 인해 빠른 처리속도로 보안에 취약하다(GPU를 사용하면 레인보우 테이블을 매우 빠르게 만들 수 있다). 따라서 패스워드 암호화에는 적합하지 않다. 해시 함수의 문제점을 보완해서 나온 암호화 함수에는 pbkfd2와 bcrypt 등이 있다. 이 둘은 salt와 같은 랜덤 문자열을 섞고 반복적인 해싱작업으로 해시를 강하게 한다. (함수 반복 횟수를 늘리면 연산속도를 늦출 수 있으므로 brute-forece 공격에 대비할 수 있기 때문) b..