본문 바로가기

TIL ( CODESTATES)

JWT 공부 중 지식 습득 : HMAC, SHA-256, BASE64

JWT

- Header

The header typically consists of two parts

: the type of the token, which is JWT,

and the signing algorithm being used, such as HMAC SHA256 or RSA.

 

For example:

{
  "alg" : "HS256",	//HS256은 이 토큰이 HMAC-SHA256을 사용하여 서명됨을 의미한다.
  "typ": "JWT"
}

Then, this JSON is Base64Url encoded to form the first part of the JWT.

 

출처 : jwt.io

음... 공부할 거 천지네.

 


HMAC

 

먼저 MAC (Message Authentication Code) 이란 메시지의 인증에 쓰이는 코드이다. 메시지의 무결성 및 신뢰성을 보장하는 용도로 사용한다고 한다.

 

HMAC (Hash-based Message Authentication Code) 은 인증을 위한 Secret Key와 임의의 길이를 가진 Message를 해시 함수를 사용해서 생성한다.

해시 함수로는 MD5, SHA-256과 같은 일반적인 해시 함수를 그대로 사용할 수 있으며 각 알고리즘에 따라 다른 고정길이의 MAC(Hash value)가 생성된다. (출처 : jongmin92.github.io/2019/12/23/Programming/hmac/)

 

HMAC는 메시지를 암호화하지 않는다. 그 대신, 메시지의 암호화 여부에 관계 없이 메시지는 HMAC 해시와 함께 송신되어야 한다. (출처 : wikipedia)

 

 

 

SHA-256

 

먼저 SHA-2 (Secure Hash Algorithm 2)는 미국 국가안보국에서 설계한 암호화 해시 함수들의 집합이다.

SHA-2 계열은 224, 256, 384, 512 비트로 된 해시값이 있는 6개의 해시 함수를 구성하고 있다.

 

SHA-256은 해시의 결과가 256bit인 해시함수로 대중적으로 널리 쓰이고 있다. 최근에는 비트쾬을 비롯한 많은 블록체인 시스템에서 SHA-256을 주로 활용한다. 

 

 

Base64

 

먼저 인코딩(encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 말한다. 

 

Base64란 Binary Data를 Text로 바꾸는 Encoding(binary-to-text encoding schemes)의 하나로써 Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 Encoding이다. (출처: 코딩하는 오징어)