Skip to content

Commit 6ed03d2

Browse files
committed
adds a description of the DH and SSM Agent implementations to the respective READMEs
1 parent 6335521 commit 6ed03d2

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ git submodule update --init --recursive -- ar-go-tools ssm-agent
2929
Whenever we refer to the SSM Agent, we mean the fork of the SSM Agent codebase that implements the protocol for establishing encrypted interactive shell sessions.
3030

3131
- `ssm-agent/model` contains the Tamarin model of the protocol used by the SSM Agent to establish interactive shell sessions
32-
- `ssm-agent/implementation` contains the entire SSM Agent codebase.
32+
- `ssm-agent/implementation` contains the entire SSM Agent codebase and the corresponding [README](https://github.com/ArquintL/amazon-ssm-agent/tree/update-diodon?tab=readme-ov-file#secure-sessions-overview) provides an overview.
3333
- `ssm-agent/implementation/agent/session/datachannel` contains the Go package representing the CORE.
3434
- `ssm-agent/argot-proofs` contains the scripts used to verify the SSM Agent with Argot.
3535

3636

3737
### Diffie-Hellman (DH) Implementation
3838
- `dh/model` contains the Tamarin model of the protocol used by the DH implementation to perform a DH key exchange
39-
- `dh/implementation` contains the entire DH codebase.
39+
- `dh/implementation` contains the entire DH codebase and the corresponding [README](dh/implementation/README.md) provides an overview over the codebase.
4040
- `dh/implementation/library` and `dh/implementation/initiator` contain the Go packages representing the CORE.
4141
- `dh/argot-proofs` contains the scripts used to verify the DH implementation with Argot.
4242

dh/implementation/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Go Diffie-Hellman Implementation
22

3+
## Implementation Overview
4+
`main.go` represents the App that performs all I/O.
5+
The Core is implemented in `initiator/initiator.go`.
6+
More specifically, the `Initiator` struct stores all state related to a protocol session.
7+
In addition, this file provides methods with the `Initiator` struct being the receiver to produce outgoing and consume incoming messages.
8+
We prove (using Gobra) that producing and consuming these messages correspond to steps in the protocol model.
9+
This allows us to treat outgoing messages as being untainted from a taint analysis point of view, such that the corresponding I/O operation in the App satisfies I/O independence.
10+
For this purpose, `library/io.go` provides a function `PerformVirtualOutputOperation` that enforces (via its specification) that a caller gives up an I/O permission for sending a message.
11+
Thus, we configure the taint analysis (in `../argot-proofs/argot-config-dh.yaml`) to treat this function as a sanitizer, i.e., that this returns untainted data.
12+
13+
314
## Building & Running the Initiator Role
415
Build:
516
```

ssm-agent/implementation

0 commit comments

Comments
 (0)