• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

HS256 과 RS256 의 차이에 대해

22.09.28 15:38 작성 조회수 1.32k

0

인터넷을 아무리 뒤져봐도 명확한 답이 없어 또 질문을 드리게됐습니다,, ㅠㅠ

  1. HS256 암호화 방식은 JWT 생성 시 서명 부분에 서버만 알고있는 키를 포함해 암호화하는 방식이라고 설명을 해주셨는데, 찾아보니 HS256 은 대칭 키 암호화 방식이라고들 하더라구요. 대칭키는 송/수신자가 같은 키를 공유하는 것으로 알고있는데 이렇게 되면 서버만 알고있는 키가 아니지 않나..? 라는 생각을 했는데 맞는지 잘 모르겠습니다.

 

  1. RS256 암호화 방식은 JWT 생성 시 서명 부분에 키를 포함하지 않고, 헤더와 페이로드를 서버가 가지고있는 키로 암호화를 한다 ~ 라고 설명해주셨는데, 자바 켜서 확인을 해보니 인자 값에 시크릿 키를 넣어줘야하기도 하고 jwt.io 에서 RS256 으로 바꿔보니 begin secret ~ end secret 이라고 시크릿 키를 넣는 칸이 있더라구요. 이것도 어느게 맞는지 잘모르겠네요 🥲 정말정말 헷갈립니다 ㅠㅠ

답변 1

답변을 작성해보세요.

1

HS256은 대칭키가 맞습니다.

제가 설명을 잘못했나 봅니다. !!

HS256은 클라이언트와 서버 둘다 키를 동일하게 가지고 있어야 됩니다.

대칭키는 결국 키 교환에 문제가 있기 때문에, 안전하게 키를 교환할 수 있는 메커니즘이 필요하고

A서버와 B서버가 통신할 때 둘다 내가 만든 서버이면 HS256을 사용해도 무방하다고 생각합니다.

전병준님의 프로필

전병준

질문자

2022.09.29

그럼 클라이언트(웹 브라우저) 와 서버간 키 교환이 아니라 클라이언트(서버) 와 서버간 키 교환이 필요하다는게 맞을까요?

그것도 맞구요!!

 

우리가 JWT토큰을 스프링서버에서 만들자나요. 이때 HS256으로 만들어요.

그 토큰은 클라이언트(브라우저, 혹은 앱)이런 애들에게 header로 전달해주면

클라이언트는 그걸 그냥 가지고만 있다가,

인증이 필요한 자원 요청시에 header에 토큰을 담아서 요청하면

스프링서버는 HS256으로 검증하면 되니까

 

토큰의 생성과 검증을 스프링서버에서만 하면 되기 때문에 대칭키를 사용해도 되는거에요

전병준님의 프로필

전병준

질문자

2023.01.04

아하 인증 주체는 서버기 때문에 그렇군요 답변 감사합니다!!