1
|
<?plantuml 1.2026.1?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="DESCRIPTION" height="655px" preserveAspectRatio="none" style="width:1402px;height:655px;background:#FFFFFF;" version="1.1" viewBox="0 0 1402 655" width="1402px" zoomAndPan="magnify"><defs/><g><g class="header" data-source-line="8"><text fill="#888888" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="496.7601" x="891.6096" y="14.9659">Threat Model - Integrity verification of download artifacts with key list!</text><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="251.4598" x="1136.9099" y="29.7579">using independent GnuPG signatures and public keys</text><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="224.7398" x="1163.6299" y="43.3779">as well as a key list with authorised signing keys</text><text fill="#888888" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="143.9194" x="1244.4503" y="61.2738">2026-02-23 08:08 UTC</text></g><!--cluster Maintainer--><g class="cluster" data-qualified-name="Maintainer" data-source-line="33" id="ent0004"><rect fill="#F9F9F9" height="205" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:1;" width="398.91" x="7" y="252.3758"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="77.2377" x="167.8361" y="269.3417">Maintainer</text></g><!--cluster Verification environment\n(Server)--><g class="cluster" data-qualified-name="Verification environment.n.Server." data-source-line="41" id="ent0009"><rect fill="#F9F9F9" height="151" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:1;" width="617.35" x="255.78" y="73.3758"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="175.7973" x="476.5563" y="90.3417">Verification environment</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="54.4318" x="537.2391" y="109.4097">(Server)</text></g><!--entity PrivKey--><g class="entity" data-qualified-name="Maintainer.PrivKey" data-source-line="34" id="ent0005"><rect fill="#F9F9F9" height="58.1358" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:0.5;" width="153.7835" x="23" y="383.3058"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="71.9317" x="33" y="408.2717">Private key</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133.7835" x="33" y="427.3397">(on hardware token)</text></g><!--entity Artifact--><g class="entity" data-qualified-name="Maintainer.Artifact" data-source-line="35" id="ent0006"><rect fill="#F9F9F9" height="58.1358" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:0.5;" width="120.9536" x="39.41" y="290.3058"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100.9536" x="49.41" y="315.2717">Release artifact</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="50.0498" x="49.41" y="334.3397">(binary)</text></g><!--entity Sig--><g class="entity" data-qualified-name="Maintainer.Sig" data-source-line="36" id="ent0007"><rect fill="#F9F9F9" height="58.1358" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:0.5;" width="83.7978" x="306.11" y="314.3058"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="63.7978" x="316.11" y="339.2717">Signature</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="33.4319" x="316.11" y="358.3397">(.asc)</text></g><!--entity PubKey--><g class="entity" data-qualified-name="Verification environment.n.Server..PubKey" data-source-line="42" id="ent0010"><rect fill="#F9F9F9" height="77.2038" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:0.5;" width="152.4535" x="271.78" y="130.7758"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65.8277" x="281.78" y="155.7417">Public key</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99.4836" x="281.78" y="174.8097">from keyserver</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="132.4535" x="281.78" y="193.8776">(fingerprint verified)</text></g><!--entity GPG--><g class="entity" data-qualified-name="Verification environment.n.Server..GPG" data-source-line="43" id="ent0011"><rect fill="#F9F9F9" height="39.0679" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:0.5;" width="131.2296" x="725.9" y="168.8458"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="111.2296" x="735.9" y="193.8117">gpg --verify *.asc</text></g><!--entity User--><g class="entity" data-qualified-name="User" data-source-line="26" id="ent0002"><ellipse cx="1355.0848" cy="222.8058" fill="#008000" rx="8" ry="8" style="stroke:#181818;stroke-width:0.5;"/><path d="M1355.0848,230.8058 L1355.0848,257.8058 M1342.0848,238.8058 L1368.0848,238.8058 M1355.0848,257.8058 L1342.0848,272.8058 M1355.0848,257.8058 L1368.0848,272.8058" fill="none" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80.5697" x="1314.8" y="289.2717">Downloader</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="56.1958" x="1314.8" y="308.3397">(Verifier)</text></g><!--entity Attacker--><g class="entity" data-qualified-name="Attacker" data-source-line="27" id="ent0003"><ellipse cx="348.0098" cy="486.8058" fill="#FF0000" rx="8" ry="8" style="stroke:#181818;stroke-width:0.5;"/><path d="M348.0098,494.8058 L348.0098,521.8058 M335.0098,502.8058 L361.0098,502.8058 M348.0098,521.8058 L335.0098,536.8058 M348.0098,521.8058 L361.0098,536.8058" fill="none" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54.7818" x="297.54" y="553.2717">Attacker</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100.9396" x="297.54" y="572.3397">(MITM / Mirror)</text></g><!--entity Channel--><g class="entity" data-qualified-name="Channel" data-source-line="39" id="ent0008"><rect fill="#FFA500" height="58.1358" rx="2.5" ry="2.5" style="stroke:#333333;stroke-width:0.5;" width="418.5645" x="582.24" y="314.3058"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181.2573" x="592.24" y="339.2717">Website with signed key list</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="398.5645" x="592.24" y="358.3397">and information about signature authorisation of the key list</text></g><!--link PrivKey to Sig--><g class="link" data-entity-1="ent0005" data-entity-2="ent0007" data-link-type="dependency" data-source-line="46" id="lnk12"><path d="M177.08,391.0158 C219.57,379.1058 265.0526,366.3549 300.0926,356.5349" fill="none" id="PrivKey-to-Sig" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="305.87,354.9158,296.1245,353.4929,301.0555,356.2651,298.2833,361.1961,305.87,354.9158" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="31.837" x="207.78" y="369.6428">signs</text></g><!--link Artifact to Sig--><g class="link" data-entity-1="ent0006" data-entity-2="ent0007" data-link-type="dependency" data-source-line="47" id="lnk13"><path d="M160.78,325.2158 C205.75,329.6058 260.1782,334.9144 299.8282,338.7744" fill="none" id="Artifact-to-Sig" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="305.8,339.3558,297.2299,334.5026,300.8235,338.8713,296.4548,342.4649,305.8,339.3558" style="stroke:#181818;stroke-width:1;"/></g><!--link Sig to Channel--><g class="link" data-entity-1="ent0007" data-entity-2="ent0008" data-link-type="dependency" data-source-line="49" id="lnk14"><path d="M390.15,343.3758 C434.68,343.3758 503.1,343.3758 575.78,343.3758" fill="none" id="Sig-to-Channel" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="581.78,343.3758,572.78,339.3758,576.78,343.3758,572.78,347.3758,581.78,343.3758" style="stroke:#181818;stroke-width:1;"/></g><!--link Artifact to Channel--><g class="link" data-entity-1="ent0006" data-entity-2="ent0008" data-link-type="dependency" data-source-line="50" id="lnk15"><path d="M151.79,348.7758 C160.27,354.0858 168.88,359.7358 176.78,365.3758 C190.91,375.4558 190.46,384.4658 206.78,390.3758 C373.72,450.8158 578.7679,408.6087 695.9079,374.5987" fill="none" id="Artifact-to-Channel" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="701.67,372.9258,691.9116,371.5938,696.8683,374.3199,694.1422,379.2766,701.67,372.9258" style="stroke:#181818;stroke-width:1;"/></g><!--link Channel to User--><g class="link" data-entity-1="ent0008" data-entity-2="ent0002" data-link-type="dependency" data-source-line="52" id="lnk16"><path d="M1000.03,313.8158 C1115.79,297.3258 1243.4699,279.1318 1308.4899,269.8718" fill="none" id="Channel-to-User" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="1314.43,269.0258,1304.9559,266.3347,1309.4799,269.7308,1306.0839,274.2548,1314.43,269.0258" style="stroke:#181818;stroke-width:1;"/></g><!--link Channel to User--><g class="link" data-entity-1="ent0008" data-entity-2="ent0002" data-link-type="dependency" data-source-line="58" id="lnk18"><path d="M972.68,372.9258 C1069.08,380.8658 1187.61,377.6658 1284.8,335.3758 C1296.73,330.1858 1303.3208,326.0411 1312.7508,316.8611" fill="none" id="Channel-to-User-1" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="1317.05,312.6758,1307.811,316.0875,1313.4673,316.1635,1313.3913,321.8199,1317.05,312.6758" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="252.3952" x="1031.8" y="331.2728">retrieves key list and verifies its signature</text></g><!--link Attacker to Channel--><g class="link" data-entity-1="ent0003" data-entity-2="ent0008" data-link-type="dependency" data-source-line="54" id="lnk17"><path d="M398.86,516.5858 C440.63,506.7858 501.39,490.7758 552.24,470.3758 C620.98,442.7958 690.4752,403.9563 737.5652,375.9063" fill="none" id="Attacker-to-Channel" style="stroke:#FF0000;stroke-width:1;"/><polygon fill="#FF0000" points="742.72,372.8358,732.9408,374.0051,738.4243,375.3946,737.0349,380.8781,742.72,372.8358" style="stroke:#FF0000;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="96.4341" x="455.24" y="466.2728">replaces key list</text></g><!--link User to GPG--><g class="link" data-entity-1="ent0002" data-entity-2="ent0011" data-link-type="dependency" data-source-line="59" id="lnk19"><path d="M1314.33,227.3458 C1305.21,220.9158 1295.13,215.0958 1284.8,211.3758 C1139.28,159.0358 959.805,168.4988 863.365,178.9588" fill="none" id="User-to-GPG" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="857.4,179.6058,866.7788,182.612,862.3708,179.0667,865.9162,174.6587,857.4,179.6058" style="stroke:#181818;stroke-width:1;"/></g><!--link GPG to User--><g class="link" data-entity-1="ent0011" data-entity-2="ent0002" data-link-type="dependency" data-source-line="64" id="lnk23"><path d="M857.6,204.4158 C905.27,215.5758 971.7,229.9258 1030.8,238.3758 C1132.36,252.8958 1247.1752,259.1659 1308.3452,261.7159" fill="none" id="GPG-to-User" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="1314.34,261.9658,1305.5144,257.5944,1309.3443,261.7576,1305.1812,265.5875,1314.34,261.9658" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="56.0691" x="1129.8" y="234.2728">OK / FAIL</text></g><!--link PubKey to GPG--><g class="link" data-entity-1="ent0010" data-entity-2="ent0011" data-link-type="dependency" data-source-line="60" id="lnk20"><path d="M424.66,172.6358 C509.43,176.2858 639.4456,181.8777 719.5856,185.3277" fill="none" id="PubKey-to-GPG" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="725.58,185.5858,716.7604,181.2024,720.5846,185.3708,716.4163,189.195,725.58,185.5858" style="stroke:#181818;stroke-width:1;"/></g><!--link Artifact to GPG--><g class="link" data-entity-1="ent0006" data-entity-2="ent0011" data-link-type="dependency" data-source-line="61" id="lnk21"><path d="M160.59,308.0358 C289.34,283.5758 586.3754,227.1557 719.7054,201.8257" fill="none" id="Artifact-to-GPG" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="725.6,200.7058,716.0116,198.4559,720.6879,201.639,717.5047,206.3153,725.6,200.7058" style="stroke:#181818;stroke-width:1;"/></g><!--link Sig to GPG--><g class="link" data-entity-1="ent0007" data-entity-2="ent0011" data-link-type="dependency" data-source-line="62" id="lnk22"><path d="M390.15,331.5158 C431.39,319.4158 496.59,299.7258 552.24,280.3758 C618.42,257.3758 688.1057,229.9604 736.0257,210.6304" fill="none" id="Sig-to-GPG" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="741.59,208.3858,731.7471,208.0431,736.953,210.2563,734.7398,215.4622,741.59,208.3858" style="stroke:#181818;stroke-width:1;"/></g><g class="footer" data-source-line="15"><ellipse cx="844.1853" cy="585.9596" fill="#888888" rx="2.5" ry="2.5"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="355.9296" x="850.6853" y="590.5297">Maintainer publishes signed artifacts, public GnuPG keys and signed key list</text><ellipse cx="897.3153" cy="599.5796" fill="#888888" rx="2.5" ry="2.5"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="249.6697" x="903.8153" y="604.1496">The key list or its signature is the central trust anchor</text><ellipse cx="941.0752" cy="613.1996" fill="#888888" rx="2.5" ry="2.5"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="162.1499" x="947.5752" y="617.7696">Both are located in a central place!</text><ellipse cx="662.4306" cy="626.8196" fill="#888888" rx="2.5" ry="2.5"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="719.4391" x="668.9306" y="631.3896">If the key list and the information about signature authorisation of the key list are replaced, manipulated artifacts with valid signatures can be distributed</text><ellipse cx="846.5202" cy="640.4396" fill="#888888" rx="2.5" ry="2.5"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="351.2598" x="853.0202" y="645.0096">The security objective authenticity of the artifacts can therefore be violated</text></g><?plantuml-src jLHBJzj04BxlhnWILGL4sWEd8b49g8WGZOeWa4FfOMsFussStMXs7HHL_U-TMJy3wgLI7SN9pdxp-kPHOXuWE22pB09aXZ0DnbdbLyPkDEarY4JRPOdmIm5SwdIr95VPxCgLZc1y_Ka-SkCeGsgafwUdwhTIgZPReEOhTGxpWb07cBaCIvZ0ZGsu91Dsi4KokKcr-0QNG-PUREbq1fg2oNKQFBoOKC0ATr0Q7mvKvOrTWh4PRf1VDi3KLdTJy6PfTQW8FMYRmQPAIfEAdbUQZM1P0l_gpb9jLrUXS6GyPj60c8ugvm3lCXtmSBJZPpARJR8CYkAiA4P7y3Y_KkoxoQx9DNSkyEaOPjhOm5-aEWXVS4XY70TPdRG1ri6BpnXsWsk3P7Fp0lkOcM8JV9yh60-10IdpGBg4G1MZj4qvATQzT98Ymqh75BDTOvc15hmfTOe73Bl9ev7EYmGY0cDpH-kwDZfnLHWuRedhAhTlWH64qK5s0cjjpQOgOmIlwhhLfSc6jKkrXGIv8NqWarIiqd3WCQrYoxZaf_Jgjew1Sp5f5DSXzFR54ai8EGaKcrlZOWnIkwPQyZ2OQHrzQJeFwTaUFiMsH3eQITCyUgxbU4g8jaLVXC034R6pc_aCFiBC4Bb6eRs5yJsxUm-DqYrN6ObRFeAw4_I81IRU1AovUTKBprRgyiyr6O4uNImMCFv6FDSekVSpFkhRTXG7Vd1rHsRBn8afpfTD5vgo5wbnS2kqTSu2ufJsDU-nHEtxgh1wOgocNSDJ8zvNUcWJOlG7xTCQorBPB0FSVoMBFLuLsbhULnrV0zzFmxs5Tcl8sJNt8eVy48jwz9R5RYCzsvpSEWvznB9Ipfi7QKDSWsOdOjRmMYLlQ5rkbZ2PHDmEZeMZ29tUJOMYfXAC-2oimLdCsgkMxVP2ARcLGvFfFg8LgfO74SeeSBjs3JxvBYt-euUpjpWGEYBKtu5dxOBm_RPJRBeVYzQV87aPu9QXmxN-EguXRc-NDOJw_TsfubYBil1MqzmTzvWGGKkL_5VywhnomjzkUVwlBsw-_W40?></g></svg>
|