새로운 인증 전략 PASETO

반응형

PASETO는 쿠키, 세션, JWT와 같은 기존 인증 방식의 운영 보안 상 한계를 보완하기 위해 등장한 토큰 기반 인증 방식입니다.
특히 JWT의 알고리즘 선택 자유도가 오히려 취약점으로 작용해온 문제를 해결하기 위해, PASETO는 안전한 암호화 알고리즘만을 강제하는 설계를 채택했습니다. 이 글에서는 PASETO가 등장하게 된 배경과 기존 인증 방식들과의 구조적 차이를 정리합니다.

왜 등장했을까?

PASETO는 JWT의 암호학적 취약점 자체를 해결하기 위해 등장했다기보다는,
JWT가 가진 과도한 유연성과 그로 인한 오용 가능성을 줄이기 위해 등장한 토큰 인증 방식입니다.

JWT는 서버 상태를 최소화하고 확장성을 높인다는 장점이 있지만, 토큰이 서명만 되어 있을 뿐 암호화되지 않아(payload가 Base64로 노출됨) 외부에서 토큰 내용을 그대로 확인할 수 있다는 구조적 특성을 가집니다.

이를 보완하기 위해 실무에서는 access token과 refresh token을 분리하고, access token은 짧은 TTL과 최소한의 정보만 담는 방식으로 운영합니다. refresh token을 통해 토큰을 재발급함으로써 노출 리스크를 줄이려는 전략이지만,
토큰 내용이 외부에 노출된다는 근본적인 구조 자체는 바뀌지 않습니다.

PASETO는 이러한 문제를 해결하기 위해, 암호화된 토큰(local token)을 기본으로 제공하고
안전한 알고리즘 선택만을 강제하는 방향으로 설계되었습니다.

그래서 PASETO는 무엇인가요?

JWT는 쿠키나 세션 기반 인증에 비해 서버 상태를 최소화하고 다양한 환경에서 재사용할 수 있어
편리하고 유연한 인증 방식으로 널리 사용됩니다.

하지만 이러한 유연함은 곧 설계 선택지가 많다는 의미이기도 하며, 알고리즘 선택, claim 구성, 검증 옵션 설정 과정에서
잘못된 설계로 이어지기 쉽다는 단점이 있습니다.

PASETO는 이러한 문제를 해결하기 위해 안전하지 않은 선택 자체를 허용하지 않는 방향으로 설계되었습니다.
즉, 개발자가 암호화나 서명 방식에서 실수할 수 있는 여지를 구조적으로 제거한 토큰 인증 방식입니다.

이런 점에서 PASETO는 JWT가 제공하던 유연함 대신, '실수할 자유를 줄이는 선택'을 한 설계라고 볼 수 있습니다.

다만 PASETO가 토큰 탈취 문제까지 완전히 해결하는 것은 아닙니다. PASETO는 토큰 내용을 암호화함으로써 노출로 인한 정보 유출 위험은 줄였지만, 토큰이 탈취되어 유효한 상태라면 여전히 인증에 사용될 수 있습니다.
이는 PASETO의 한계라기보다는, 토큰 기반 인증 방식이 공통적으로 가지는 구조적 특성에 가깝습니다.

그렇다면 PASETO는 JWT와 무엇이 다른걸까?

PASETO와 JWT의 차이점은 여러 가지가 있지만, 그중에서도 핵심적인 차이는 크게 두 가지로 정리할 수 있습니다.

첫 번째는 암호 알고리즘 선택 방식입니다.
JWT는 토큰 서명 알고리즘을 개발자가 직접 선택할 수 있도록 설계되어 있어 유연성이 높습니다.
하지만 이 유연함은 곧 잘못된 알고리즘 선택이나 취약한 설정으로 이어질 가능성도 함께 내포하고 있습니다.

반면 PASETO는 강력하고 현대적인 암호 알고리즘만을 사용하도록 강제합니다.
버전별로 사용할 수 있는 알고리즘이 명확히 고정되어 있으며, 불안정하거나 구식 알고리즘을 선택할 여지가 없습니다.
이를 통해 암호화 설정 과정에서 발생할 수 있는 실수를 구조적으로 차단합니다.

두 번째는 토큰 내용 보호 방식입니다.
JWT는 기본적으로 토큰의 payload가 Base64로 인코딩되어 있을 뿐 암호화되어 있지는 않습니다.
따라서 토큰이 외부로 노출될 경우, 그 안의 내용을 누구나 확인할 수 있다는 구조적 특성을 가집니다.

PASETO는 이러한 문제를 해결하기 위해 토큰 내용을 암호화하는 모델(local token)을 공식적으로 제공합니다.
대칭 암호화 알고리즘을 사용해 payload를 보호하며, 공유된 비밀 키를 가진 당사자만 토큰의 내용을 복호화할 수 있습니다.
이는 인증 과정에서 민감한 정보를 외부로부터 숨겨야 하는 시나리오에 보다 적합한 설계입니다.

이러한 차이로 인해 PASETO는 JWT가 제공하던 유연함을 일부 포기하는 대신, 안전하지 않은 선택 자체를 허용하지 않는 방향의 설계를 채택했다고 볼 수 있습니다.

결론

기존에 비해 많은 내용을 담지 못하였습니다. 주로 새롭게 안 PASETO를 소개하는데 끝냈던거 같습니다. 
사실 원문의 내용은 PASETO에 대한 내용은 아닙니다. 인증과 인가, 그리고 인증을 할 수 있는 방식은 토큰만 있는것은 아닙니다. 쿠키와세션들도 있죠. 이들은 거의 한 세트로 생각해도 크게 무방합니다. 토큰 방식에 비해 서버의 부담이 가는 대신 중복 로그인 처리같은 부분이 간단해진다는 장점을 가지고 있습니다. 사실 어떤 인증방법을 선택하느냐에는 어떤 플랫폼을 개발하는가에 있다고 생각합니다. 

 

출처
https://blog.bytebytego.com/p/mastering-modern-authentication-cookies?utm_source=publication-search

댓글

Designed by JB FACTORY