How does AWS request signing and verification work? Let's say I have created a signed request using this guide.
How does AWS service verify this signature? I see 2 options with their respective flaws (considering symmetrical encryption only)
- AWS stores encrypted access key, which is used by the end service to calculate signature and verify it. But this breaks the rule that you should store only password hashes if possible.
- AWS distributes the key = HMAC(service, access_key) to respective services. But if this key is somehow leaked, anyone can sign any request for given time window.
I believe the actual verification is more secure than my naive scenarios, but I could not find any specifics.