summaryrefslogtreecommitdiff
path: root/PlantUML-ModelingTrust/GnuPG-WoT-Download/200-ThreatModel-SLSA1-DownloadSig.puml
blob: 4371bf5edc470ead94b32ee0737e860e7ee405b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@startuml
left to right direction
skinparam rectangle {
  BackgroundColor #F9F9F9
  BorderColor #333
}


right header
= Threat Model - Integrity verification of download artifacts with key list!
using independent GnuPG signatures and public keys
as well as a key list with authorised signing keys
=  %date("yyyy-MM-dd hh:hh") UTC
endheader

right footer
* Maintainer publishes signed artifacts, public GnuPG keys and signed key list
* The key list or its signature is the central trust anchor
* Both are located in a central place!
* If the key list and the information about signature authorisation of the key list are replaced, manipulated artifacts with valid signatures can be distributed
* The security objective authenticity of the artifacts can therefore be violated
endfooter




actor "Downloader\n(Verifier)" as User #Green
actor "Attacker\n(MITM / Mirror)" as Attacker #Red
' actor "Keyserver" as Keyserver 
' actor "Website with signed key list\nand information about signature authorisation of the key list"  as WWW #Orange



rectangle "Maintainer" {
  rectangle "Private key\n(on hardware token)" as PrivKey
  rectangle "Release artifact\n(binary)" as Artifact
  rectangle "Signature\n(.asc)" as Sig
}

rectangle "Website with signed key list\nand information about signature authorisation of the key list" as Channel #Orange

rectangle "Verification environment\n(Server)" {
  rectangle "Public key\nfrom keyserver\n(fingerprint verified)" as PubKey
  rectangle "gpg --verify *.asc" as GPG
}

PrivKey --> Sig : signs
Artifact --> Sig

Sig --> Channel
Artifact --> Channel

Channel --> User
' Attacker -[#Red]-> Channel : MITM attack
Attacker -[#Red]-> Channel: replaces key list


' Keyserver --> User: retrieves public keys
Channel --> User: retrieves key list and verifies its signature
User --> GPG
PubKey --> GPG
Artifact --> GPG
Sig --> GPG

GPG --> User : OK / FAIL
@enduml