1. 토큰 기반 인증이란?
사용자가 자신의 신원을 검증하여 대가로 본인을 나타내는 고유 Access Token을 받는 프로토콜이다.
2. 인증 토큰 유형의 분류
인증 토큰은 전부 접근을 허용하나 다음의 세 가지의 유형 별로 다르게 작동한다.
1) Connected :
키, 디스크, 드라이브 등의 물리적 장치가 액세스를 위해 시스템에 연결
2) Contactless :
장치가 서버와 통신이 가능할 정도로 가까이 있으나 연결은 되어있지는 않은 상태
3) Disconnected :
장치가 다른 장치와 접촉이 없더라도 장거리 통신을 통하여 서버와 통신하여 작동
3. JWT (Json Web Token)
사용자가 웹/앱을 통하여 시스템에 액세스를 하는 수가 늘어나면서 플랫폼에 대한 안전한 인증 방법에 대한 필요성이 대두되었고 이에 따라 개발된 것이 JWT(Json Web Token)이다.
JWT는 Json 형식을 기반으로 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준 형식이다.
토큰은 공개/비공개 비밀키를 사용하여 서명되며 다음 3가지 파트로 구조를 나누어서 볼 수 있다.
1) 헤더(Header) : 서명 생성을 위해 사용할 알고리즘 식별
{
"alg" : "HS256",
"typ" : "JWT"
}
Detail : 해당 토큰이 HMAC-SHA256 알고리즘을 사용하여 서명된다.
2) 페이로드(Payload) : 토큰 발급자(사용자)와 토큰 만료 등을 정의
{
"loggedInAs" : "admin",
"iat" : 1234567890
}
3) 서명 (Signature) : 서명은 Base64 url Encoding 기반으로 헤더와 페이로드를 인코딩하고 이 둘을 점(.) 구분자로 연결시킴으로 계산되며 토큰을 안전하게 확인한다.
HMAC-SHA256(
secret,
base64urlEncoding(header) + '.' +
base64urlEncoding(payload)
)
위 헤더와 페이로드를 secret-key를 사용하여 Base64url로 Encoding을 한다.
Example :
ewogICAgImFsZyIgOiAiSFMyNTYiLAogICAgInR5cCIgOiAiSldUIgp9LnsKICAgICJsb2dnZWRJbkFzIiA6ICJhZG1pbiIsCiAgICAiaWF0IiA6IDEyMzQ1Njc4OTAKfQ==
4. JWT의 장단점
1) 장점
- 크기 : 토큰의 크기는 크지 않으며 두 엔터티 간에 매우 빠르게 전달이 가능
- 용이성 : 토큰은 거의 모든 곳에서 생성가능하며 서버에서 확인이 불필요
- 제어 : 다른 사람이 액세스할 수 있는 항목, 권한이 지속되는 동안 수행할 수 있는 작업을 지정이 가능
2) 단점
- 단일 키 : JWT는 단일 키에 의존하며 해당 키가 손상되거나 유출되었을 때 전체 시스템에 위험을 발생
- 복잡성 : 암호화 서명 알고리즘을 이해하려면 많은 지식이 필요하며 지식의 부재 시 실수로 인한 시스템의 위험을 유발
- 제한 사항 : 모든 클라이언트에게 메시지를 보낼 수 없으며 서버 측에서 클라이언트 관리가 어려움
반응형
'Computer-Sience > Security' 카테고리의 다른 글
[Security] 제로 트러스트(Zero-Trust) (0) | 2024.05.18 |
---|