Compare commits
2 Commits
52b967f78c
...
cb8d7f9d48
Author | SHA1 | Date | |
---|---|---|---|
cb8d7f9d48 | |||
b3a8b29556 |
@ -9,11 +9,24 @@ This current version is probably full of typos - will fix later. This is what ty
|
|||||||
|
|
||||||
## How did I get there?
|
## How did I get there?
|
||||||
|
|
||||||
I attended KubeCon + CloudNativeCon Europe 2025 in London.
|
I attended Cloud Native Rejekts and KubeCon + CloudNativeCon Europe 2025 in London.
|
||||||
|
|
||||||
Why? Because learning about all new things in the world of cloud is really important and war stories help to avoid mistakes that other's already made.
|
Why? Because learning about all new things in the world of cloud is really important and war stories help to avoid mistakes that other's already made.
|
||||||
And [last year's experience](https://kubecon24.nicolai-ort.com) was really good, so I wanted to go again.
|
And [last year's experience](https://kubecon24.nicolai-ort.com) was really good, so I wanted to go again.
|
||||||
|
|
||||||
|
Plus I actually presented a talk at Cloud Native Rejekts.
|
||||||
|
|
||||||
|
## And how does this website get it's content
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
Nicolai<-->|Watches|Talk
|
||||||
|
Nicolai-->|"Takes notes (and typos) + commits"|Repo
|
||||||
|
Repo-->|Triggers|Actions
|
||||||
|
Actions-->|Builds image and pushes to|Registry
|
||||||
|
Kubernetes-->|Pulls latest image|Registry
|
||||||
|
```
|
||||||
|
|
||||||
## Style Guide
|
## Style Guide
|
||||||
|
|
||||||
The basic structure is as follows: `day/event-or-session`.
|
The basic structure is as follows: `day/event-or-session`.
|
83
content/day-2/09_e2e-authenticity.md
Normal file
83
content/day-2/09_e2e-authenticity.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
---
|
||||||
|
title: End to End Message Authenticity in Cloud Native Systems
|
||||||
|
weight: 9
|
||||||
|
tags:
|
||||||
|
- rejekts
|
||||||
|
- security
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- {{% button href="https://youtu.be/rkteV6Mzjfs" style="warning" icon="video" %}}Watch talk on YouTube{{% /button %}} -->
|
||||||
|
|
||||||
|
## Why does e2e authenticity matter?
|
||||||
|
|
||||||
|
- Classic Setup: Micro-Services with TLS and auth via Bearer
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
User-->|TLS|Gateway
|
||||||
|
Gateway-->|mTLS|Server
|
||||||
|
Server-->|mTLS|Gateway
|
||||||
|
Gateway-->|TLS|User
|
||||||
|
```
|
||||||
|
- Intrusion: Hacked Gateway
|
||||||
|
- Can modify the request
|
||||||
|
- Could log auth tokens
|
||||||
|
- Could replay requests with different body or token
|
||||||
|
|
||||||
|
|
||||||
|
## Baseline OIDC
|
||||||
|
- Only IDP has private key for signing
|
||||||
|
- Anyone can fetch the private key and verify
|
||||||
|
- Usage: SSO, Trust Federation
|
||||||
|
- Problem: Symmetric Credential can be forwarded if leaked
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
### HTTP Message Signatures
|
||||||
|
|
||||||
|
- Idea:
|
||||||
|
- Client can sign the content and headers with a symmstric/asynmetric key
|
||||||
|
- Server can verify the signature
|
||||||
|
- Implementation: Basicly just an additional Signature Header and a Header that tells us what is included in the signature
|
||||||
|
```
|
||||||
|
HTTPS POST /test
|
||||||
|
Authorization: Bearer <token>
|
||||||
|
Signature-Input: "authorization" @body
|
||||||
|
Signature: ahsz7d9zahbsdoih
|
||||||
|
```
|
||||||
|
- Problem: Key distribution
|
||||||
|
- Real-World: AWS v4 Signature shares accesskey and secretkey out of band and signs header with accesskey (symmatric)
|
||||||
|
- Transitive Trust
|
||||||
|
|
||||||
|
### OIDC Key binding
|
||||||
|
|
||||||
|
TODO: Steal image from slides
|
||||||
|
|
||||||
|
### Proof of Posession
|
||||||
|
|
||||||
|
> Basicly adds a nonce that we have to sign and the idp now knows that we really posess it
|
||||||
|
|
||||||
|
TODO: Steal image from Slides
|
||||||
|
|
||||||
|
### OpenPubKey
|
||||||
|
|
||||||
|
> Assigns meaning to the nonce and can reconstruct the nonce for a reverse check
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
The demo uses GitHub as a PKI (since all public keys get exposed via github).
|
||||||
|
Pretty cool: They automated the demo via a go cli.
|
||||||
|
|
||||||
|
TODO: Link to demo code
|
||||||
|
TODO: Steal image from Slides
|
||||||
|
|
||||||
|
## Next steps
|
||||||
|
|
||||||
|
- SPIFFE is the de-facto standard for distributing identities to workloads
|
||||||
|
1. Workloads asks "Who am I"
|
||||||
|
2. Agent attests the workload
|
||||||
|
3. Agent provides OIDC or X.509 to Workloads
|
||||||
|
|
||||||
|
* WIMSE RFC: Basicly DPoP/OpenPub
|
||||||
|
1. Workload get's a private key
|
||||||
|
2. Issuer binds workload identity to the public key
|
||||||
|
3. Auth trusts SPIFFE, it can trust the key
|
Loading…
x
Reference in New Issue
Block a user