비밀번호 관리 방식 변경 #60

Closed
opened 2018-01-28 23:40:35 +09:00 by Hide_D · 4 comments
Owner

기존 체섭은 md5를 쓰고 있으므로 무조건 변경 필요.

통신 채널은 https로 제공되고 있으므로 클라이언트에서 비밀번호를 직접 보내도 큰 문제는 없지만, 하는 김에 서버 운영자조차도 POST값을 이용해 비밀번호를 알지 못하도록 salt를 2중으로 사용하도록 함.

  • Server -> Salt1 (Global)
  • Client -> SHA512(Password | Salt1)
  • Server -> SHA512(HashedPassword | Salt2)

Salt1, Salt2 : 64bit int -> 소문자 hex(16byte)

기존 체섭은 md5를 쓰고 있으므로 **무조건** 변경 필요. 통신 채널은 https로 제공되고 있으므로 클라이언트에서 비밀번호를 직접 보내도 큰 문제는 없지만, 하는 김에 서버 운영자조차도 POST값을 이용해 비밀번호를 알지 못하도록 salt를 2중으로 사용하도록 함. * Server -> Salt1 (Global) * Client -> SHA512(Password | Salt1) * Server -> SHA512(HashedPassword | Salt2) Salt1, Salt2 : 64bit int -> 소문자 hex(16byte)
Member

근데 클라단에서 SHA+SALT를 쓰는거보다 JS단에서 RSA를 써서 넘겨버리는건?

근데 클라단에서 SHA+SALT를 쓰는거보다 JS단에서 RSA를 써서 넘겨버리는건?
Author
Owner

클라단에서 SHA+SALT를 쓰는건 "서버가 원래의 비밀번호가 뭐였는지" 알 수 없도록 하는게 목표라서 RSA를 쓰는건 바람직하지 않을듯!

클라단에서 SHA+SALT를 쓰는건 "서버가 원래의 비밀번호가 뭐였는지" 알 수 없도록 하는게 목표라서 RSA를 쓰는건 바람직하지 않을듯!
Member

그렇다면 패스워드 찾기는 엄밀히 따지면 찾기가 아니라 랜덤값으로 재설정인걸로?

그렇다면 패스워드 찾기는 엄밀히 따지면 찾기가 아니라 랜덤값으로 재설정인걸로?
Author
Owner

패스워드 찾기를 '랜덤값'으로 재설정하는 방식으로 구현 완료.

패스워드 찾기는 카카오톡의 '나에게 보내기'로 동작함.

실제 패스워드는 약간 바꾸어서

  • Server -> globalSalt
  • client -> sha512(globalSalt | password | globalSalt)
  • server -> sha512(userSalt | hashedPassword | userSalt)

로 수행함.

패스워드 찾기를 '랜덤값'으로 재설정하는 방식으로 구현 완료. 패스워드 찾기는 카카오톡의 '나에게 보내기'로 동작함. 실제 패스워드는 약간 바꾸어서 - Server -> globalSalt - client -> sha512(globalSalt | password | globalSalt) - server -> sha512(userSalt | hashedPassword | userSalt) 로 수행함.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: devsam/core#60