작성
·
460
0
HS256 암호화 방식은 클라이언트로부터 JWT(헤더+페이로드+서버의 비밀키로만든 signature)를 받으면, 서버가 "비밀키"를 가지고 있어서, 서버가 만든 JWT랑 비교해서 같은지 검증하는 방식이잖아요?
RSA 암호화 방식은 마찬가지로 클라이언트로부터 JWT(헤더+페이로드+서버의 비밀키로만든 signature) 받으면, 서버는 JWT의 signature를 "공개키"로 검증한다고 이해했습니다. 그래야만 "비대칭키" 방식이기 때문입니다.
여기서 질문입니다.
1. 서버는 비밀키도 있으면서 왜 굳이 공개키로 검증하는지 (비밀키만 있으면 HS256 방식을 사용하면 돼서)
2. 공개키로 검증하는게 맞다면 어떤 방식으로 검증하는지 (signature를 공개키로 복호화 하면 비밀키가 나오는 방식일까요?)
긴 글 읽어주셔서 감사합니다.
답변 1
0
이건 이렇게 이해하는게 좋아요!!
예를 들어 버스회사가 있어요. 버스 회사가 버스 토큰을 발행해요!!
손님은 토큰을 사요!!
손님이 버스를 탈 때, 토큰을 내겠죠?
그럼 버스회사는 토큰을 검증하죠?
토큰 발행과 검증을 버스회사에서만 하니까, 대칭키로 가능해요!!
하지만, 이런경우도 있어요!
국가가 버스 토큰을 발행해요!
손님은 버스 토큰을 구매해요.
손님은 버스를 탈 때, 토큰을 내요!
버스회사는 토큰을 검증못해요!! 대칭키여서!!
그래서 버스회사는 토큰이 정상적인지를 국가에 물어봐야 해요!!
국가는 토큰이 정상적이라고 알려줘요!! 이러면 서비스 하기 힘들겠죠?
이런 경우는 토큰 발행과 검증 주체가 달라요!
이럴경우에는 비대칭키(공개키기반) 방식을 사용하는게 편리해요!!
토큰을 발행하고 검증하는 주체가 다른 경우(서버가 여러개 있다던지)가 있을 수 있겠군요! 이해가 가네요. 감사합니다!!