<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Diagrams on tplat</title>
		<link>/docs/threat-modelling/model/diagrams/</link>
		<description>Recent content in Diagrams on tplat</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="/docs/threat-modelling/model/diagrams/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Data Flow Diagrams</title>
				<link>/docs/threat-modelling/model/diagrams/data-flow-diagrams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/data-flow-diagrams/</guid>
				<description>&lt;h1 id=&#34;data-flow-diagrams&#34;&gt;Data Flow Diagrams&lt;a class=&#34;anchor&#34; href=&#34;#data-flow-diagrams&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Data flow models are often the most effective way to perform threat modeling because security issues tend to follow &lt;strong&gt;data flow&lt;/strong&gt;, not control flow. They can be applied to both networked systems and standalone software.&lt;/p&gt;&#xA;&lt;p&gt;A Data Flow Diagram (DFD) is a structured representation of how data moves through a system. DFDs model:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Processes&lt;/strong&gt; (running code)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data stores&lt;/strong&gt; (where data is held)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data flows&lt;/strong&gt; (communication paths)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;External entities&lt;/strong&gt; (outside the system boundary)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;    webClients[&amp;#34;Web Clients&amp;#34;]&#xA;    sqlClients[&amp;#34;SQL Clients&amp;#34;]&#xA;    dba[&amp;#34;DBA (Human)&amp;#34;]&#xA;    dbUsers[&amp;#34;DB Users (Human)&amp;#34;]&#xA;    logAnalysis[&amp;#34;Log Analysis&amp;#34;]&#xA;&#xA;    subgraph dbCluster[&amp;#34;DB Cluster&amp;#34;]&#xA;        subgraph sqlAccount[&amp;#34;Original SQL Account&amp;#34;]&#xA;            frontend([&amp;#34;Acme Front End(s)&amp;#34;])&#xA;            database([&amp;#34;Database&amp;#34;])&#xA;            dbAdmin([&amp;#34;DB Admin&amp;#34;])&#xA;        end&#xA;        data[(&amp;#34;Data&amp;#34;)]&#xA;        management[(&amp;#34;Management&amp;#34;)]&#xA;        logs[(&amp;#34;Logs&amp;#34;)]&#xA;    end&#xA;&#xA;    webClients &amp;lt;--&amp;gt; frontend&#xA;    sqlClients &amp;lt;--&amp;gt; frontend&#xA;    frontend &amp;lt;--&amp;gt; database&#xA;    database &amp;lt;--&amp;gt; dbAdmin&#xA;    dba &amp;lt;--&amp;gt; database&#xA;    dba &amp;lt;--&amp;gt; dbAdmin&#xA;    dbUsers &amp;lt;--&amp;gt; logAnalysis&#xA;    database &amp;lt;--&amp;gt; data&#xA;    database &amp;lt;--&amp;gt; management&#xA;    database &amp;lt;--&amp;gt; logs&#xA;    logs --&amp;gt; logAnalysis&#xA;    dba &amp;lt;--&amp;gt; logAnalysis&#xA;&#xA;style dbCluster stroke-dasharray: 5 5&#xA;style sqlAccount stroke-dasharray: 5 5&lt;/pre&gt;&lt;p&gt;They are especially effective because they:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Unified Modeling Language</title>
				<link>/docs/threat-modelling/model/diagrams/unified-modeling-language/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/unified-modeling-language/</guid>
				<description>&lt;h1 id=&#34;unified-modeling-language&#34;&gt;Unified Modeling Language&lt;a class=&#34;anchor&#34; href=&#34;#unified-modeling-language&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Unified Modeling Language (UML)&lt;/strong&gt; diagrams can be adapted for threat modeling, especially if they are already part of the development workflow. In this case, you need only &lt;strong&gt;add trust boundaries&lt;/strong&gt; to highlight security-relevant separations between components.&lt;/p&gt;&#xA;&lt;h2 id=&#34;advantages&#34;&gt;Advantages&lt;a class=&#34;anchor&#34; href=&#34;#advantages&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Leverages existing artifacts (presuming you are already using UML in your project)&lt;/strong&gt;: No need to redraw system models&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Expressive and detailed&lt;/strong&gt;: UML supports a wide range of diagram types:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Structure diagrams&lt;/li&gt;&#xA;&lt;li&gt;Behavior diagrams&lt;/li&gt;&#xA;&lt;li&gt;Interaction diagrams&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;limitations&#34;&gt;Limitations&lt;a class=&#34;anchor&#34; href=&#34;#limitations&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;High complexity&lt;/strong&gt;: UML includes many symbol conventions, requiring strong familiarity to interpet correctly&lt;/p&gt;</description>
			</item>
			<item>
				<title>Swim Lane Diagrams</title>
				<link>/docs/threat-modelling/model/diagrams/swim-lane-diagrams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/swim-lane-diagrams/</guid>
				<description>&lt;h1 id=&#34;swim-lane-diagrams&#34;&gt;Swim Lane Diagrams&lt;a class=&#34;anchor&#34; href=&#34;#swim-lane-diagrams&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Swim lane diagrams are a visual method for modeling &lt;strong&gt;interactions between participants&lt;/strong&gt; in a system or protocol. They are particularly useful for understanding &lt;strong&gt;message flows over time&lt;/strong&gt;, or when modelling human + system interaction.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Each &lt;strong&gt;participant&lt;/strong&gt; (e.g., client, server) is represented by a vertical “lane”&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Time flows downward&lt;/strong&gt; along each lane&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Messages&lt;/strong&gt; are shown as horizontal arrows between participants&lt;/li&gt;&#xA;&lt;li&gt;Each lane is &lt;strong&gt;labeled&lt;/strong&gt; to identify the participant&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This layout resembles swimming lanes, hence the name.&lt;/p&gt;</description>
			</item>
			<item>
				<title>State Diagrams</title>
				<link>/docs/threat-modelling/model/diagrams/state-diagrams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/state-diagrams/</guid>
				<description>&lt;h1 id=&#34;state-diagrams&#34;&gt;State Diagrams&lt;a class=&#34;anchor&#34; href=&#34;#state-diagrams&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;State diagrams model a system as a set of &lt;strong&gt;states&lt;/strong&gt; and &lt;strong&gt;transitions&lt;/strong&gt; between those states. They are useful for analysing how a system behaves in response to inputs and how it enforces rules over time.&lt;/p&gt;&#xA;&lt;p&gt;A system is represented as a &lt;strong&gt;state machine&lt;/strong&gt; with:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;States&lt;/strong&gt; (current condition of the system)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Transitions&lt;/strong&gt; (movement between states)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inputs/messages&lt;/strong&gt; that trigger transitions&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Internal data/memory&lt;/strong&gt; influencing behavior&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;stateDiagram-v2&#xA;    [*] --&amp;gt; Closed&#xA;&#xA;    Closed --&amp;gt; Opened: open&#xA;    Opened --&amp;gt; Closed: close&#xA;&#xA;    Closed --&amp;gt; Locked: lock&#xA;    Locked --&amp;gt; Closed: unlock&lt;/pre&gt;&lt;p&gt;From a threat modelling perspective, state diagrams can help to evaluate whether &lt;strong&gt;each transition enforces proper validation and security checks&lt;/strong&gt;, and to identify:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Trust Boundaries</title>
				<link>/docs/threat-modelling/model/diagrams/trust-boundaries/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/trust-boundaries/</guid>
				<description>&lt;h1 id=&#34;trust-boundaries&#34;&gt;Trust Boundaries&lt;a class=&#34;anchor&#34; href=&#34;#trust-boundaries&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A &lt;strong&gt;trust boundary&lt;/strong&gt; is any point where entities with different privileges or trust levels interact.&lt;/p&gt;&#xA;&lt;p&gt;Every system has at least one trust boundary because all computation occurs in some context.&lt;/p&gt;&#xA;&lt;p&gt;If no boundaries are visible:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Either everything is incorrectly assumed to have equal privilege&lt;/li&gt;&#xA;&lt;li&gt;Or the model is missing structure&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In the extreme case where everything truly shares the same trust level, draw one boundary around the entire system and move on.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
