하아안우
115
2021-10-23 18:37:50
6
543

안녕하세요! 서버 로그인 비밀번호 암호 관련 질문있습니다!


제가 이번에 로그인을 구현하려고 하는데 비밀번호를 암호화해서 디비에 저장하고싶습니다.

SHA256을 활용해서 저장하고 싶은데 구글에 치자마자 값이 다나와버려서... 솔트 값을 이용해서 저장하려고 합니다.

구글링을 하며 어떻게 구현을 할 지 생각 해 봤는데 이게 맞는지 알려주실 수 있나요...

1. 클라이언트에서 사용자가 계정을 만드는 요청을 받을 때 서버는 해쉬 알고리즘을 이용해 솔트를 생성하여 디비에 저장한다.

2. 클라이언트에서 로그인을 시도할 때 아이디와 함께 솔트 값 요청을 서버에게 보내고 서버는 디비에서 아이디와 대조하여 솔트 값을 반환한다(이 때 아이디 등록 여부 확인 가능).

3. 클라이언트는 이  솔트 값을 패스워드에 더하여 로그인 요청을 서버에게 보내고 서버는 디비에서 이 정보를 조회하여 로그인 성공 여부를 반환한다.

이렇게 구현할 생각인데 이게 맞는건지 좀 알려주세요ㅠㅠ

그리고 제가 백엔드 개발자가 될 생각으로 공부 중인데 암호학을 혹시 어디까지 배워야 할 지 알려주시면 정말정말로 감사하겠습니다!!

0
  • 댓글 6

  • Dierslair
    5k
    2021-10-23 19:45:39

    bcrypt 또는 argon2를 사용하세요.

  • 지붕뚫고높이차
    1k
    2021-10-24 07:12:25

    아이디를 솔트로 사용하세요.

  • 하아안우
    115
    2021-10-24 09:36:36

    ㄴ 오 그런방법이... 아이디를 솔트로 사용하면 보안성 관련 문제는 없는건가요?

  • 지붕뚫고높이차
    1k
    2021-10-24 14:27:01

    레인보우 테이블 공격을 방어하기 위한 방법입니다.


    bcrypt 내부 소스코드를 보면 아이디가 솔트로 사용됩니다.

  • 지붕뚫고높이차
    1k
    2021-10-24 14:29:29

    추가로. 암호화 관련한 제 블로그 글 보내드립니다.


    https://blog.naver.com/zeroshift01/222188913542

  • 하아안우
    115
    2021-10-24 19:57:40

    ㄴ 감사합니다 적용해봐야겠네요ㅎㅎ

  • 로그인을 하시면 댓글을 등록할 수 있습니다.