JWT의 비밀키 생성에 왜 base64 방식이 사용 되나 ? 

 

JWT(Json Web Token)는 비밀 키를 사용하여 서명(signature)을 생성합니다. 이 서명은 JWT의 무결성을 보장하고 JWT가 변경되지 않았음을 검증하는 데 사용됩니다. 비밀 키는 이 서명을 생성하고 검증하는 데 사용되는 중요한 보안 요소입니다.

일반적으로 비밀 키는 base64로 인코딩됩니다. 그 이유는 다음과 같습니다:

  1. Binary Data Representation: 비밀 키는 바이너리 데이터로서, 문자열로 직접 표현할 수 없습니다. 따라서 바이너리 데이터를 텍스트로 표현할 수 있는 base64 인코딩을 사용하여 키를 문자열로 변환합니다.
  2. ASCII 문자 사용: base64는 ASCII 문자 집합을 사용하여 데이터를 표현하므로, 키를 표현하는 데 사용하기 적합합니다.
  3. 문자열 처리 편의성: base64로 인코딩된 문자열은 일반적인 문자열 처리 도구를 사용하여 쉽게 다룰 수 있습니다.
  4. 안정성과 이식성: base64는 데이터를 안전하게 전송하고 저장하는 데 사용되는 표준 방법입니다. 이식성이 뛰어나며, 다양한 시스템과 프로그래밍 언어에서 사용할 수 있습니다.

따라서 JWT를 구현할 때 비밀 키를 base64로 인코딩하여 사용하는 것은 일반적인 관행입니다. 이는 안전한 보안 키를 문자열로 표현하고 사용하기 위한 표준적인 방법입니다.

 

base64 란? 

 

base64는 이진 데이터를 텍스트로 인코딩하기 위한 인코딩 방식 중 하나입니다. 이진 데이터는 일반적으로 바이너리 형태로 저장되어 있는데, 이를 텍스트 형태로 전환할 때 사용됩니다. 이 방식은 이진 데이터를 ASCII 문자 집합에 속하는 문자들로만 이루어진 텍스트 형태로 변환하여 텍스트 기반 시스템에서도 사용할 수 있도록 해줍니다.

base64 인코딩은 다음과 같은 특징을 갖습니다:

  1. 문자 집합: base64 인코딩은 64개의 문자로 이루어진 집합을 사용합니다. 이 문자 집합에는 대문자(A-Z), 소문자(a-z), 숫자(0-9), 그리고 두 개의 추가 문자(+와 /)가 포함되어 있습니다. 이렇게 총 64개의 문자로 이루어진 집합을 사용하기 때문에 base64라고 불립니다.
  2. 3바이트 묶음: base64 인코딩은 입력 데이터를 3바이트씩 묶어서 처리합니다. 각각의 3바이트는 총 24비트를 나타내는데, 이 비트들을 6비트씩 나누어서 base64 문자 집합에 매핑됩니다.
  3. 패딩: 입력 데이터의 바이트 수가 3의 배수가 아닌 경우, 패딩 문자인 '='가 추가됩니다. 이는 base64 인코딩된 데이터의 길이가 항상 4의 배수가 되도록 보장합니다.
  4. 텍스트로의 변환: base64 인코딩은 이진 데이터를 텍스트 형태로 변환합니다. 이진 데이터는 주로 바이너리 파일이나 이미지 파일과 같은 형태로 저장되어 있으며, 이를 텍스트 형태로 변환하여 전송하거나 저장할 수 있게 합니다.

base64는 이진 데이터를 텍스트로 변환할 때 주로 사용되며, 이메일과 웹에서 이미지 파일이나 바이너리 파일을 전송하거나 저장할 때 자주 활용됩니다. 또한 암호학에서는 주로 인증 정보나 디지털 서명과 같은 데이터를 안전하게 전송하거나 저장할 때 base64 인코딩을 사용합니다.

+ Recent posts