1. 서명은 언제 필요할까?
서명은 서버가 "이 요청을 보낸 사람이 진짜 맞는지 확인"해야 할 때 사용된다.
서버가 "진짜 너야?"라고 물어봤을 때, 단순히 "응, 나야"라고 말하는 것만으로는 믿을 수 없다.
이때 요청을 보낸 사람은 "이걸 증명할 서명을 만들어서 보여줄게"라고 말해야 한다.
이 과정을 서명(Signing)이라고 한다.
2. 서명이란?
서명은 디지털 도장과 비슷하다.
- 데이터를 보내는 사람은 자신만 가진 비밀키(개인 키)를 사용해 데이터를 서명한다.
- 서버는 이 서명을 공개 키를 사용해 확인하고, 도장이 진짜인지 검증한다.
- 서명은 "이 데이터를 진짜 내가 보낸 거야"라고 증명하는 역할을 한다.
3. 서명을 만드는 방법
Identity Provider를 사용하는 방식
Cognito 같은 인증 시스템에서 서명을 대신 만들어준다.
이 시스템은 신분증 역할을 하는 JWT(토큰)를 발급한다.
JWT에는 "이 사람은 진짜야"라는 정보가 담겨 있고, 서명된 상태로 제공된다.
서버는 Cognito의 공개 키를 사용해 JWT가 유효한지 확인할 수 있다.
로컬에서 직접 서명하는 방식
사용자가 직접 개인 키를 사용해 데이터를 서명한다.
서버는 요청을 받은 후, 사용자의 공개 키를 사용해 서명을 검증한다.
이 방식은 외부 시스템에 의존하지 않지만, 키를 공유하고 관리해야 하는 부담이 있다.
KMS를 사용하는 방식
KMS는 안전하게 서명을 도와주는 키 관리 서비스다.
로컬 서명과 비슷하지만, KMS를 통해 서명을 생성하면 키를 직접 관리하지 않아도 된다.
KMS가 대신 비밀키를 보관하고, 안전한 환경에서 서명을 만들어준다.
서버는 KMS에서 생성된 서명을 검증해 데이터를 신뢰할 수 있다.
4. Cognito, 로컬 서명, KMS의 차이
방법 | Cognito | Local | KMS |
서명 생성 방식 | JWT를 발급받아 서명 포함 | 직접 개인 키로 서명 | KMS에서 서명을 대행 |
키 관리 | Cognito에서 관리 | 사용자가 직접 관리 | AWS KMS에서 관리 |
검증 방식 | Cognito의 공개 키로 검증 | 사용자의 공개 키로 검증 | KMS의 공개 키로 검증 |
안전성 | 안전하고 간단 | 안전하지만 관리가 복잡 | 매우 안전하고 관리 부담 적음 |
5. 정리
Cognito는 신분증 같은 JWT를 발급받아 사용하는 방식이다.
로컬 서명은 사용자가 직접 서명을 만들어 서버에 보내는 방식이다.
KMS는 키 관리와 서명을 AWS가 대신 처리해주는 방식이다.
각각의 방식은 상황에 따라 적합한 용도가 있다.
예를 들어, 외부 인증이 필요하면 Cognito를, 독립적인 서명이 필요하면 로컬 서명을, 보안성과 편리함이 모두 중요하면 KMS를 선택하면 된다.
2024.12.12 - [BE 공부/AWS] - Cognito와 KMS(2)
Cognito와 KMS(2)
2024.12.12 - [BE 공부/AWS] - Cognito와 KMS(1) Cognito와 KMS(1)1. 서명은 언제 필요할까?서명은 서버가 "이 요청을 보낸 사람이 진짜 맞는지 확인"해야 할 때 사용된다.서버가 "진짜 너야?"라고 물어봤을 때,
comeintoflower.tistory.com
'BE 공부 > AWS' 카테고리의 다른 글
AWS Secrets Manager: 쉽게 이해하는 보안 정보 관리의 시작 (0) | 2025.01.02 |
---|---|
Amazon Simple Queue Service(SQS) (0) | 2024.12.30 |
AWS Credential과 Cognito (2) | 2024.12.12 |
Cognito와 KMS(2) (0) | 2024.12.12 |
[DynamoDB] 다이나모 디비란?(1) (3) | 2024.09.12 |
댓글