Compare commits
No commits in common. "main" and "ksenia-fix" have entirely different histories.
main
...
ksenia-fix
|
@ -1,10 +0,0 @@
|
|||
<h2>About Distrust</h2>
|
||||
|
||||
<p>The Distrust team has helped build and secure some of the highest-risk systems in the world. This includes vaulting infrastructure at BitGo, Unit410, and Turnkey, as well as security work with electrical grid operators, industrial control systems, and other mission-critical systems.</p>
|
||||
|
||||
<p>We've conducted deep security due diligence across most major custodians. Through our experience with organizations that operate under constant threat—where **every class of attack is viable**—we've developed a methodology and set of open source tools designed to defend against even the most sophisticated adversaries.</p>
|
||||
|
||||
<p>Today, we're taking the hard-earned lessons from that work and sharing them with the broader community. Our goal is to help others strengthen their security posture by making what we've learned—and the open source tools we've built—available to everyone.</p>
|
||||
|
||||
<p><b>Looking for help analyzing and mitigating security risks in your own organization? <a href="/contact.html">Talk to us.</a></b></p>
|
||||
|
|
@ -1,85 +1,18 @@
|
|||
<footer>
|
||||
<div class="footer container">
|
||||
<div class="footer-top">
|
||||
<div class="footer-logo">
|
||||
<a href="/">
|
||||
<img src="/assets/base/distrust-text-white.svg" alt="Distrust logo" />
|
||||
</a>
|
||||
</div>
|
||||
<p class="footer-description footer-description-desktop">
|
||||
Distrust is a research and consulting company securing mission-critical systems with verifiable open source infrastructure.
|
||||
</p>
|
||||
<p class="footer-description footer-description-mobile">
|
||||
Distrust secures mission-critical systems with verifiable open source infrastructure.
|
||||
</p>
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
{{ site.footer }}
|
||||
</div>
|
||||
<div class="footer-divider">
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<div class="footer-column">
|
||||
<a href="/services.html">Services</a>
|
||||
<a href="/software.html">Software</a>
|
||||
<a href="/threatmodel.html">Threat model</a>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<a href="/company.html">Company</a>
|
||||
<a href="/blog.html">Blog</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-bottom container">
|
||||
<div class="footer-footer"> {{site.footer}} </div>
|
||||
<div class="footer-social">
|
||||
<a href="/feed.xml" target="_blank" rel="noopener noreferrer" aria-label="RSS">
|
||||
<img src="/assets/base/rss-bw-tr.png" alt="RSS" />
|
||||
<div>
|
||||
<a class="footer-link" href="/services.html">Services</a>
|
||||
<a class="footer-link" href="/software.html">Software</a>
|
||||
<a class="footer-link" href="/company.html">Company</a>
|
||||
<a class="footer-link" href="/contact.html">Contact</a>
|
||||
<a class="footer-link" href="/feed.xml" style="vertical-align: middle;">
|
||||
<img style="filter: grayscale(100%); width: 22px; vertical-align: sub" src="/assets/base/rss.png" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="/assets/js/main.js"></script>
|
||||
</footer>
|
||||
|
||||
|
||||
<!-- ORIGINAL
|
||||
<footer>
|
||||
<div class="footer-logo container">
|
||||
<a href="/">
|
||||
<img src="/assets/base/distrust-text-white.svg" alt="Distrust logo" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="footer container">
|
||||
<div class="footer-top">
|
||||
<p class="footer-description">
|
||||
Distrust is a research and consulting company securing mission-critical systems with verifiable open source infrastructure.
|
||||
</p>
|
||||
</div>
|
||||
<div class="footer-divider">
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<div>
|
||||
<a href="/services.html">Services</a>
|
||||
<a href="/software.html">Software</a>
|
||||
<a href="/threatmodel.html">Threat model</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/company.html">Company</a>
|
||||
<a href="/blog.html">Blog</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-bottom container">
|
||||
<div class="footer-footer"> {{site.footer}} </div>
|
||||
<div class="footer-social">
|
||||
<a href="/feed.xml" target="_blank" rel="noopener noreferrer" aria-label="RSS">
|
||||
<img src="/assets/base/rss-bw-tr.png" alt="RSS" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
-->
|
|
@ -1,44 +1,44 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicons/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicons/favicon-16x16.png">
|
||||
<title>{{ page.title }}</title>
|
||||
<meta content="{{ site.title }}" property="og:site_name" />
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicons/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicons/favicon-16x16.png">
|
||||
<title>{{ page.title }}</title>
|
||||
<meta content="{{ site.title }}" property="og:site_name" />
|
||||
|
||||
{% if page.noindex %}
|
||||
{% if page.noindex %}
|
||||
<meta name="robots" content="noindex" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.title %}
|
||||
<meta content="{{ page.tagline }}" property="og:title" />
|
||||
<meta content="article" property="og:type" />
|
||||
{% else %}
|
||||
{% else %}
|
||||
<meta content="website" property="og:type" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.summary %}
|
||||
<meta content="{{ page.summary }}" property="og:description" />
|
||||
{% else %}
|
||||
{% else %}
|
||||
<meta content="{{ site.description }}" property="og:description" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url %}
|
||||
<meta content="{{ site.url }}{{ page.url }}" property="og:url" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.date %}
|
||||
<meta
|
||||
content="{{ page.date | date_to_xmlschema }}"
|
||||
property="article:published_time"
|
||||
/>
|
||||
/>
|
||||
<meta content="{{ site.url }}/about/" property="article:author" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.thumbnail %}
|
||||
<meta content="{{ site.url }}{{ page.thumbnail }}" property="og:image" />
|
||||
<meta content="{{ site.url }}{{ page.thumbnail }}" property="og:image" />
|
||||
{% else %}
|
||||
<meta content="{{ site.banner }}" property="og:image" />
|
||||
{% endif %}
|
||||
|
@ -55,45 +55,65 @@
|
|||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Twitter Cards -->
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<!--<meta name="twitter:site" content="@{{ site.share.twitter_username }}" />-->
|
||||
<!--<meta name="twitter:creator" content="@{{ site.share.twitter_username }}" />-->
|
||||
<!-- Twitter Cards -->
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<!--<meta name="twitter:site" content="@{{ site.share.twitter_username }}" />-->
|
||||
<!--<meta name="twitter:creator" content="@{{ site.share.twitter_username }}" />-->
|
||||
|
||||
{% if page.title %}
|
||||
{% if page.title %}
|
||||
<meta name="twitter:title" content="{{ page.title }}" />
|
||||
{% else %}
|
||||
{% else %}
|
||||
<meta name="twitter:title" content="{{ site.title }}" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url %}
|
||||
{% if page.url %}
|
||||
<meta name="twitter:url" content="{{ site.url }}{{ page.url }}" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.summary %}
|
||||
<meta name="twitter:description" content="{{ page.summary }}" />
|
||||
{% else %}
|
||||
{% else %}
|
||||
<meta name="twitter:description" content="{{ site.description }}" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header-img %}
|
||||
<meta
|
||||
name="twitter:image:src"
|
||||
content="{{ site.url }}{{ page.thumbnail }}"
|
||||
/>
|
||||
{% endif %}
|
||||
name="twitter:image:src"
|
||||
content="{{ site.url }}{{ page.thumbnail }}"
|
||||
/>
|
||||
{% endif %}
|
||||
|
||||
{% if page.robots %}
|
||||
{% if page.robots %}
|
||||
<meta name="robots" content="{{page.robots}}" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ "/assets/main.css" | relative_url }}">
|
||||
<link rel="stylesheet" type="text/css" href="{{ "/assets/main-dark.css" | relative_url }}">
|
||||
<link rel="stylesheet" type="text/css" href="{{ "/assets/main.css" | relative_url }}">
|
||||
<link rel="stylesheet" type="text/css" href="{{ "/assets/main-dark.css" | relative_url }}">
|
||||
|
||||
<!-- "Really, there is nothing interesting to see here. It is a static website. -->
|
||||
<!-- Here is the terraform code that deployed it, and here is the site source repo. -->
|
||||
<!-- If you find anything interesting or want to talk to us, reach out via our /contact page!" -->
|
||||
<!-- https://git.distrust.co/public/stack -->
|
||||
<!-- https://git.distrust.co/public/website -->
|
||||
<!-- mobile menu content -->
|
||||
<!-- "Really, there is nothing interesting to see here. It is a static website. -->
|
||||
<!-- Here is the terraform code that deployed it, and here is the site source repo. -->
|
||||
<!-- If you find anything interesting or want to talk to us, reach out via our /contact page!" -->
|
||||
<!-- https://git.distrust.co/public/stack -->
|
||||
<!-- https://git.distrust.co/public/website -->
|
||||
<!-- mobile menu content -->
|
||||
|
||||
<div class="menu-content" style="display: none">
|
||||
<div class="inner-menu-content">
|
||||
<div>
|
||||
<a href="/services.html">Services</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/software.html">Software</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/company.html">Company</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/blog.html">Blog</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/contact.html">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</head>
|
||||
|
|
|
@ -22,19 +22,12 @@
|
|||
</li>
|
||||
|
||||
</ul>
|
||||
<input type="checkbox" id="menu-toggle" />
|
||||
|
||||
<label for="menu-toggle" class="hamburger-menu">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</label>
|
||||
|
||||
<div class="menu-content">
|
||||
<div class="inner-menu-content">
|
||||
{% include nav-links.html %}
|
||||
</div>
|
||||
</div>
|
||||
<div id="hamburger-menu" class="hide menu-button-container" for="menu-toggle">
|
||||
<input id="menu-toggle" type="checkbox" />
|
||||
<label style="display: inline-block">
|
||||
<div class='menu-button'></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
@ -63,11 +56,10 @@
|
|||
const currentScrollPos = window.scrollY;
|
||||
|
||||
if (currentScrollPos > prevScrollPos) {
|
||||
document.getElementById('menu-toggle').checked = false;
|
||||
hamburgerMenu.style.display = 'none';
|
||||
}
|
||||
prevScrollPos = currentScrollPos;
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</header>
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
{%- for path in page_paths -%}
|
||||
{%- assign my_page = site.pages | where: "path", path | first -%}
|
||||
{%- if my_page.title -%}
|
||||
{%- if my_page.title != 'Home' -%}
|
||||
<div>
|
||||
<a href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
|
@ -4,11 +4,11 @@
|
|||
<p class="hero-p">Every day, we apply these guiding principles to how we think, build, and secure systems.</p>
|
||||
</div>
|
||||
<div class="flex-container-inner">
|
||||
<ol class="values-container">
|
||||
<ol dir="rtl" style="font-size: 30px; text-align: right">
|
||||
<li>eliminate centralized trust</li>
|
||||
<li>open source everything</li>
|
||||
<li>security beyond compliance</li>
|
||||
<li>move thoughtfully & improve things</li>
|
||||
<li>move thoughtfully and improve things</li>
|
||||
<li>impact over profit</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
{% endfor %}
|
||||
</p>
|
||||
</main>
|
||||
{%- include footer.html -%}
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
<p>Co-Founder</p>
|
||||
<p>Security Engineer</p>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://keyoxide.org/6B61ECD76088748C70590D55E90A401336C8AAA9">Keyoxide</a>
|
||||
<span>|</span>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://lance.dev/">Website</a>
|
||||
</div>
|
||||
<div class="flex-container-inner card">
|
||||
|
@ -49,7 +48,6 @@
|
|||
<p>Co-Founder</p>
|
||||
<p>Security Engineer</p>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://keyoxide.org/F4BF5C81EC78A5DD341C91EEDC4B7D1F52E0BA4D">Keyoxide</a>
|
||||
<span>|</span>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://antonlivaja.com">Website</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -58,14 +56,12 @@
|
|||
<h5>Ryan Heywood</h5>
|
||||
<p>Security Engineer</p>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://keyoxide.org/88823A75ECAA786B0FF38B148E401478A3FBEF72">Keyoxide</a>
|
||||
<span>|</span>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://ryansquared.pub">Website</a>
|
||||
</div>
|
||||
<div class="flex-container-inner card">
|
||||
<h5>Danny Grove</h5>
|
||||
<p>Security Engineer</p>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://keyoxide.org/C92FE5A3FBD58DD3EC5AA26BB10116B8193F2DBD">Keyoxide</a>
|
||||
<span>|</span>
|
||||
<a rel=”noopener noreferrer” target="_blank" href="https://dannygrove.com/">Website</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -85,7 +81,7 @@
|
|||
|
||||
{% include primary-cta.html %}
|
||||
</main>
|
||||
{%- include footer.html -%}
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -58,8 +58,8 @@
|
|||
{% include companies-carousel.html hide_title='true' %}
|
||||
</main>
|
||||
<br />
|
||||
{%- include footer.html -%}
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -4,15 +4,17 @@
|
|||
{%- include head.html -%}
|
||||
|
||||
<body>
|
||||
{%- include header.html -%}
|
||||
<div class="container">
|
||||
|
||||
{%- include header.html -%}
|
||||
|
||||
<main>
|
||||
{{ content }}
|
||||
</main>
|
||||
|
||||
{%- include footer.html -%}
|
||||
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
|
||||
{% include primary-cta.html %}
|
||||
</main>
|
||||
{%- include footer.html -%}
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -10,12 +10,11 @@
|
|||
<div class="blog-details-date">{{ page.date | date: "%b %e, %Y" }}</div>
|
||||
<div class="blog-details-read-time">{{ page.content | number_of_words | divided_by: 200 }} min read</div>
|
||||
</div>
|
||||
<h1 style="margin-bottom: 40px">{{page.title}}</h1>
|
||||
<h1>{{page.title}}</h1>
|
||||
|
||||
<div class="entry">
|
||||
{{ content }}
|
||||
</div>
|
||||
<hr>
|
||||
{% include blog-about-distrust.html %}
|
||||
|
||||
<p>
|
||||
{% for author in page.authors %}
|
||||
|
@ -24,8 +23,8 @@
|
|||
</p>
|
||||
</article>
|
||||
</main>
|
||||
{%- include footer.html -%}
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
|
@ -138,7 +138,6 @@
|
|||
</section>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -160,8 +160,10 @@
|
|||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
{%- include footer.html -%}
|
||||
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -1,101 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ page.lang | default: site.lang | default: en }}">
|
||||
{%- include head.html -%}
|
||||
<body>
|
||||
{%- include header.html -%}
|
||||
<div class="container blog">
|
||||
<main>
|
||||
<section class="flex-container">
|
||||
<div class="flex-container-inner">
|
||||
<h1>Distrust Threat Model</h1>
|
||||
<p>Unlike conventional frameworks (e.g., STRIDE, PASTA) that focus on identifying and mitigating specific risks, the Distrust Threat Model assumes that at some level <b>systems are already compromised</b>. This pessimistic, assumption-driven approach focuses on building systems that can remain secure even when up against the worst case adversary that have reason to target an organization.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="flex-container">
|
||||
<div class="flex-container-inner">
|
||||
<h2>Levels</h2>
|
||||
<p>While the end-goal is to adequately address the risks which stem from the <a href="#assumptions">assumptions</a>, organizations are at varying levels of maturity and often need a path towards mitigating threats in a phased approach. To this end, the threat model defines 4 levels, each corresponding to increasingly more sophisticated threat actors as the levels increase. Each threat actor is assumed to have access to specific methods of attack limited by factors such as cost to execute, sophistication, time required etc.</p>
|
||||
<p>It is a reasonable approach to apply different threat model levels to different parts of systems relative to the amount of value they protect.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="flex-container">
|
||||
<div class="flex-container-inner">
|
||||
<h3 id="level-1">Level 1</h3>
|
||||
<p>Defense against remote adversaries with limited resources.</p>
|
||||
<h5>Adversary</h5>
|
||||
<p>An unskilled or lightly skilled individual leveraging widely available tools and publicly known vulnerabilities. Their attacks are largely opportunistic and automated. We do however assume they can be very patient and willing to work across a long time horizon.</p>
|
||||
<h5>Capabilities</h5>
|
||||
<ul>
|
||||
<li>Scanning for and exploiting known vulnerabilities with public exploits.</li>
|
||||
<li>Phishing attempts using off-the-shelf kits.</li>
|
||||
<li>Basic malware deployment (e.g., ransomware-as-a-service).</li>
|
||||
<li>Making malicious changes to open source libraries</li>
|
||||
<li>Buying expired domain names</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="flex-container">
|
||||
<div class="flex-container-inner">
|
||||
<h3 id="level-2">Level 2</h3>
|
||||
<p>Defense against insiders.</p>
|
||||
<h5>Adversary</h5>
|
||||
<p>We assume the adversary is an individual or system that already has some level of privilege or trust inside the organization. This could be anything from a disgruntled employee to a compromised work station or server.</p>
|
||||
<h5>Capabilities</h5>
|
||||
<ul>
|
||||
<li>Can execute any code on at least one work station.</li>
|
||||
<li>Can exfiltrate any secrets exposed to system memory.</li>
|
||||
<li>Can use reputation to fast track change deployment.</li>
|
||||
<li>Administrative privileges (email, MDM, AWS etc.)</li>
|
||||
<li>Unencrypted traffic interception.</li>
|
||||
<li>Injection of malicious code into development pipelines.</li>
|
||||
<li>Physical access to all devices in the office.</li>
|
||||
<li>Ability to impersonate unsigned actions of other employees</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="flex-container">
|
||||
<div class="flex-container-inner">
|
||||
<h3 id="level-3">Level 3</h3>
|
||||
<p>Defense against well-funded organizations.</p>
|
||||
<h5>Adversary</h5>
|
||||
<p>An organized, well-funded group possessing diverse expertise across multiple domains (malware, supply chain, network exploitation, physical access, insider recruitment). Capable of sustained campaigns combining internal and external compromise.</p>
|
||||
<h5>Capabilities</h5>
|
||||
<ul>
|
||||
<li>Deployment of agents willing to commit physical violence.</li>
|
||||
<li>Compromised third party insiders (GitHub, AWS etc.)</li>
|
||||
<li>Ability to do extensive reconnaissance on all personnel.</li>
|
||||
<li>Access to large bot-nets or server farms.</li>
|
||||
<li>Ability to purchase 0-day exploits for any internet connected device.</li>
|
||||
<li>Coordinated, multi-stage attacks across digital and physical realms.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="flex-container">
|
||||
<div class="flex-container-inner">
|
||||
<h3 id="level-4">Level 4</h3>
|
||||
<p>Defense against nation state actors.
|
||||
<h5>Adversary</h5>
|
||||
<p>A state-backed or similarly resourced entity capable of executing the most advanced forms of cyber and physical attacks, including full-spectrum operations across the supply chain, hardware, firmware, and human factors..</p>
|
||||
<h5>Capabilities</h5>
|
||||
<ul>
|
||||
<li>Observe all displays and input devices in public areas.</li>
|
||||
<li>Ability to tamper with a major hardware/firmware supply chain.</li>
|
||||
<li>Access to any network-connected system.</li>
|
||||
<li>Advanced side-channel attacks (RF, power, magnetic etc.).</li>
|
||||
<li>Data extraction from insufficiently wiped systems.</li>
|
||||
<li>Sophisticated deception and counter-forensics to evade detection.</li>
|
||||
<li>Maximal access to computational resources.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
{%- include footer.html -%}
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -35,7 +35,7 @@ Traditional infrastructure has historically lacked mechanisms to distribute trus
|
|||
|
||||
## Root cause analysis and mitigation strategies
|
||||
|
||||
In our opinion, the primary causes of this incident stem from two key issues identified in the <a href="http://web.archive.org/web/20250328121908/https://www.sygnia.co/blog/sygnia-investigation-bybit-hack/" rel="noopener noreferrer" target="_blank">Sygnia report</a>.
|
||||
In our opinion, the primary causes of this incident stem from two key issues identified in the [Sygnia report](https://www.sygnia.co/blog/sygnia-investigation-bybit-hack/):
|
||||
|
||||
* > ... a developer’s Mac OS workstation was compromised, likely through social engineering.
|
||||
|
||||
|
@ -93,7 +93,7 @@ The idea centers on extracting the **signing** component from the application (w
|
|||
|
||||
However, simply making a component offline does not eliminate all single points of failure. To close off supply chain threats stemming from compiler, dependency or environment compromise requires that the application is reproduced on multiple diverse systems (using different chipsets and operating systems), using a fully bootstrapped compiler—a fully hermetic, deterministic and reproducible process.
|
||||
|
||||
We've developed open source tooling for this under <a href="https://codeberg.org/stagex/stagex" target="_blank" rel="noopener noreferrer">StageX</a>. To learn more about the importance of reproducible builds, check out <a href="https://antonlivaja.com/videos/2024-incyber-stagex-talk.mp4" target="_blank" rel="noopener noreferrer">this video</a>, where one of our co-founders explains how the SolarWinds incident unfolded—and how it could have been prevented.
|
||||
We've developed open source tooling for this under **[StageX](https://codeberg.org/stagex/stagex)**. To learn more about the importance of reproducible builds, check out [this video](https://antonlivaja.com/videos/2024-incyber-stagex-talk.mp4), where one of our co-founders explains how the SolarWinds incident unfolded—and how it could have been prevented.
|
||||
|
||||
##### Reference design
|
||||
|
||||
|
@ -111,13 +111,13 @@ This reference design was developed for the Safe{Wallet} team, but it can be app
|
|||
|
||||
* Signing operations are performed exclusively on the engineer's offline system
|
||||
|
||||
* Distrust has developed open source tooling to drastically simplify PGP key provisioning: <a href="https://trove.distrust.co/generated-documents/all-levels/pgp-key-provisioning.html" target="_blank" rel="noopener noreferrer">Trove</a>
|
||||
* Distrust has developed open source tooling to drastically simplify PGP key provisioning: **[Trove](https://trove.distrust.co/generated-documents/all-levels/pgp-key-provisioning.html)**
|
||||
|
||||
3. **Offline signing applications are deterministically compiled, verified, and signed by multiple engineers**
|
||||
|
||||
* Includes a full set of tools needed for secure offline key operations
|
||||
|
||||
* Distrust also created <a href="https://git.distrust.co/public/airgap" target="_blank" rel="noopener noreferrer">AirgapOS</a>, a custom Linux distribution designed specifically for offline secret management. It has been independently audited and is used in production by several major digitial asset organizations.
|
||||
* Distrust also created **[AirgapOS](https://git.distrust.co/public/airgap)**, a custom Linux distribution designed specifically for offline secret management. It has been independently audited and is used in production by several major digitial asset organizations.
|
||||
|
||||
4. **All sensitive operations are fully verified offline before any cryptographic action is taken**
|
||||
|
||||
|
@ -162,3 +162,14 @@ Implementing these strategies can be technically demanding. They represent two e
|
|||
|
||||
This high-level overview is meant to illustrate the kinds of problems we focus on at Distrust. Depending on the chosen strategy and organizational context, implementation can take anywhere from a few weeks to several years, especially as tooling continues to mature.
|
||||
|
||||
---
|
||||
|
||||
## About Distrust
|
||||
|
||||
The Distrust team has helped build and secure some of the highest-risk systems in the world. This includes vaulting infrastructure at BitGo, Unit410, and Turnkey, as well as security work with electrical grid operators, industrial control systems, and other mission-critical systems.
|
||||
|
||||
We've conducted deep security due diligence across most major custodians. Through our experience with organizations that operate under constant threat—where **every class of attack is viable**—we've developed a methodology and set of open source tools designed to defend against even the most sophisticated adversaries.
|
||||
|
||||
Today, we're taking the hard-earned lessons from that work and sharing them with the broader community. Our goal is to help others strengthen their security posture by making what we've learned—and the open source tools we've built—available to everyone.
|
||||
|
||||
**Looking for help analyzing and mitigating security risks in your own organization? [Talk to us](https://distrust.co/contact.html)**.
|
||||
|
|
425
_sass/base.scss
425
_sass/base.scss
|
@ -21,7 +21,6 @@ $container-max-width: 1280px !default;
|
|||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100%;
|
||||
background-color: var(--background-color);
|
||||
|
@ -32,13 +31,6 @@ body {
|
|||
color: var(--text-color);
|
||||
text-align: left;
|
||||
line-height: $base-line-height !important;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
body > div.container {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
@ -107,6 +99,7 @@ a {
|
|||
a:hover {
|
||||
text-decoration: none;
|
||||
color: var(--background-color);
|
||||
background: var(--base-color);
|
||||
transition: background-color 0.3s ease-in-out, color 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
|
@ -303,6 +296,10 @@ a:hover {
|
|||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
.roadmap a:hover {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.roadmap .text-well {
|
||||
margin: auto;
|
||||
}
|
||||
|
@ -370,6 +367,9 @@ a:hover {
|
|||
border-radius: 4px;
|
||||
margin-left: 0px;
|
||||
padding-left: 0px;
|
||||
/* TODO: for some reason, removing this makes it white. */
|
||||
/* Firefox shows no computed reason for it to be white. */
|
||||
background-color: var(--background-color);
|
||||
}
|
||||
|
||||
.arrow {
|
||||
|
@ -385,6 +385,10 @@ a:hover {
|
|||
color: white !important;
|
||||
}
|
||||
|
||||
.blog a:hover {
|
||||
background: unset;
|
||||
}
|
||||
|
||||
.arrow-link:hover .arrow {
|
||||
transform: translateX(5px);
|
||||
background: none !important;
|
||||
|
@ -438,6 +442,8 @@ a:hover {
|
|||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.powered-by .card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
@ -592,102 +598,28 @@ margin-bottom: 16px;
|
|||
|
||||
footer {
|
||||
color: var(--light-grey);
|
||||
background-color: color-mix(in srgb, var(--background-color), white 1.5%);
|
||||
border-top: 2px solid var(--purple);
|
||||
padding: 60px 0px 40px 0px;
|
||||
border-top: 1px solid var(--light-grey);
|
||||
padding: 40px 0px;
|
||||
text-align: right;
|
||||
margin-top: 80px;
|
||||
font-size: 1rem;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.footer {
|
||||
.footer-link {
|
||||
color: var(--light-grey);
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.footer-link:hover {
|
||||
background: transparent;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.footer-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.footer-description-mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-logo img {
|
||||
float: left;
|
||||
width: 270px;
|
||||
}
|
||||
|
||||
.footer-logo img:hover {
|
||||
filter: brightness(0.8)
|
||||
}
|
||||
|
||||
.footer-divider {
|
||||
width: 30rem;
|
||||
}
|
||||
|
||||
.footer-top {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.footer-logo {
|
||||
flex: 1 1 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start
|
||||
}
|
||||
|
||||
.footer-description {
|
||||
font-size: 1.3rem;
|
||||
line-height: 1.5;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
display: flex;
|
||||
gap: 6rem;
|
||||
margin-top: 0.5rem;
|
||||
line-height: 2.5rem !important;
|
||||
}
|
||||
|
||||
.footer-links div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
width: 9.5rem;
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
font-size: 1.5rem;
|
||||
text-align: left;
|
||||
transition: opacity 0.2s ease;
|
||||
}
|
||||
|
||||
.footer-links a:hover {
|
||||
color: var(--purple);
|
||||
}
|
||||
|
||||
.footer-bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 2rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.footer-social a {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.footer-social a img {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
margin-left: 0.5rem;
|
||||
filter: invert(1) grayscale(1) brightness(0.5);
|
||||
transition: filter 0.2s ease;
|
||||
vertical-align: sub;
|
||||
}
|
||||
|
||||
.footer-social a img:hover {
|
||||
filter: invert(1) grayscale(0) brightness(1);
|
||||
justify-content: space-between
|
||||
}
|
||||
|
||||
|
||||
|
@ -695,7 +627,6 @@ header {
|
|||
padding: 24px;
|
||||
margin-bottom: 24px;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.13);
|
||||
background-color: color-mix(in srgb, var(--background-color), white 1.5%);
|
||||
}
|
||||
|
||||
header p {
|
||||
|
@ -768,82 +699,78 @@ hr {
|
|||
align-items: center;
|
||||
}
|
||||
|
||||
.menu-button-container {
|
||||
display: none;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
cursor: pointer;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#menu-toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hamburger-wrapper {
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.hamburger-menu {
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
width: 30px;
|
||||
height: 22px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.hamburger-menu span {
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 4px;
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
border-radius: 2px;
|
||||
left: 0;
|
||||
transition: transform 0.4s, top 0.4s, opacity 0.4s;
|
||||
}
|
||||
|
||||
.hamburger-menu span:nth-child(1) { top: 0; }
|
||||
.hamburger-menu span:nth-child(2) { top: 9px; }
|
||||
.hamburger-menu span:nth-child(3) { top: 18px; }
|
||||
|
||||
#menu-toggle:checked + .hamburger-menu span:nth-child(1) {
|
||||
transform: rotate(45deg);
|
||||
top: 9px;
|
||||
}
|
||||
#menu-toggle:checked + .hamburger-menu span:nth-child(2) {
|
||||
opacity: 0;
|
||||
}
|
||||
#menu-toggle:checked + .hamburger-menu span:nth-child(3) {
|
||||
transform: rotate(-45deg);
|
||||
top: 9px;
|
||||
}
|
||||
|
||||
.menu-content {
|
||||
border-bottom: 1px solid var(--light-grey);
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: var(--background-color, #222);
|
||||
z-index: 50;
|
||||
padding: 20px 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#menu-toggle:checked ~ .menu-content {
|
||||
.menu-button,
|
||||
.menu-button::before,
|
||||
.menu-button::after {
|
||||
display: block;
|
||||
background-color: #fff;
|
||||
position: absolute;
|
||||
height: 4px;
|
||||
width: 30px;
|
||||
transition: transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.menu-button::before {
|
||||
content: '';
|
||||
margin-top: -8px;
|
||||
}
|
||||
|
||||
.menu-button::after {
|
||||
content: '';
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
#menu-toggle:checked+.menu-button-container .menu-button::before {
|
||||
margin-top: 0px;
|
||||
transform: rotate(405deg);
|
||||
}
|
||||
|
||||
#menu-toggle:checked+.menu-button-container .menu-button {
|
||||
background: rgba(255, 255, 255, 0);
|
||||
}
|
||||
|
||||
#menu-toggle:checked+.menu-button-container .menu-button::after {
|
||||
margin-top: 0px;
|
||||
transform: rotate(-405deg);
|
||||
}
|
||||
|
||||
.menu-content {
|
||||
position: absolute;
|
||||
display: none;
|
||||
background: var(--background-color);
|
||||
text-align: right;
|
||||
margin-top: 100px;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.inner-menu-content {
|
||||
margin: 20px 30px;
|
||||
}
|
||||
|
||||
.inner-menu-content a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid white;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
.inner-menu-content a:hover {
|
||||
color: #ccc;
|
||||
background: unset;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.menu-content div {
|
||||
margin: 30px;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -882,8 +809,8 @@ hr {
|
|||
0px 10px 30px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.team span {
|
||||
font-size: 0.8rem;
|
||||
.team .card:hover {
|
||||
border: 1px solid var(--mid-grey);
|
||||
}
|
||||
|
||||
.team .title {
|
||||
|
@ -897,12 +824,9 @@ hr {
|
|||
color: var(--light-grey);
|
||||
}
|
||||
|
||||
.team a {
|
||||
color: var(--light-purple);
|
||||
}
|
||||
|
||||
.team a:hover {
|
||||
text-decoration: underline;
|
||||
background: unset;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.team img {
|
||||
|
@ -1297,12 +1221,6 @@ section {
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
.values-container {
|
||||
font-size: 30px;
|
||||
text-align: right;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.text-well {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
@ -1789,8 +1707,8 @@ pre {
|
|||
}
|
||||
|
||||
.blog h1 {
|
||||
font-size: 2rem !important;
|
||||
line-height: 2rem !important;
|
||||
font-size: 2.5rem !important;
|
||||
line-height: 2.2rem !important;
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
|
||||
|
@ -1900,59 +1818,6 @@ pre {
|
|||
.component-links {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 50px 0px 30px 0px;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
gap: 5rem;
|
||||
padding-right: 0rem;
|
||||
}
|
||||
|
||||
.footer {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.footer-logo img {
|
||||
width: 115%;
|
||||
}
|
||||
|
||||
.footer-description, .footer-links a {
|
||||
font-size: 1.2rem !important;
|
||||
}
|
||||
|
||||
.footer-description {
|
||||
margin-bottom: 1.2rem;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
gap: 5rem;
|
||||
flex-direction: row;
|
||||
line-height: 2rem !important;
|
||||
}
|
||||
|
||||
.footer-links a:hover {
|
||||
color: var(--purple);
|
||||
}
|
||||
|
||||
.footer-footer {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.footer-bottom {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.footer-social a img {
|
||||
height: 20px;
|
||||
margin-left: 0rem;
|
||||
width: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1020px) {
|
||||
|
@ -1962,10 +1827,6 @@ pre {
|
|||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.hamburger-menu {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: inline-block;
|
||||
}
|
||||
|
@ -1992,12 +1853,6 @@ pre {
|
|||
}
|
||||
}
|
||||
|
||||
@media (max-width: 730) {
|
||||
footer {
|
||||
padding: 50px 0px 20px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.mini-card {
|
||||
padding: 20px 20px !important;
|
||||
|
@ -2063,67 +1918,11 @@ pre {
|
|||
padding-left: 10px;
|
||||
}
|
||||
|
||||
//footer on mobile//
|
||||
|
||||
.footer {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
.footer-link {
|
||||
margin-bottom: 20px;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 50px 10px 15px 10px;
|
||||
}
|
||||
|
||||
.footer-logo img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.footer-description-desktop {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-description-mobile {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.footer-description {
|
||||
font-size: 1rem !important;
|
||||
margin-bottom: 1.2rem;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
gap: 3rem;
|
||||
flex-direction: row;
|
||||
line-height: 1.7rem !important;
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
font-size: 1.1rem !important;
|
||||
}
|
||||
|
||||
.footer-links a:hover {
|
||||
color: var(--purple);
|
||||
}
|
||||
|
||||
.footer-footer {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.footer-bottom {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.footer-social a img {
|
||||
height: 20px;
|
||||
margin-left: 0rem;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
//footer//
|
||||
|
||||
.tall-section {
|
||||
margin: 100px 0px;
|
||||
}
|
||||
|
@ -2196,12 +1995,9 @@ pre {
|
|||
flex-direction: column-reverse;
|
||||
}
|
||||
|
||||
.footer-link div {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.footer-link div a {
|
||||
.footer-link {
|
||||
font-size: 1rem !important;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
|
@ -2209,11 +2005,6 @@ pre {
|
|||
line-height: 1.5rem;
|
||||
}
|
||||
|
||||
.values-container {
|
||||
text-align: left;
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Services Page
|
||||
*/
|
||||
|
@ -2232,13 +2023,3 @@ pre {
|
|||
*/
|
||||
}
|
||||
|
||||
@media (max-width: 400px) {
|
||||
|
||||
.footer-description-mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-logo img {
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 4.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.3 KiB |
|
@ -1,5 +1,5 @@
|
|||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const collapsibleButton = document.querySelector(".hamburger-menu");
|
||||
const collapsibleButton = document.querySelector("#hamburger-menu");
|
||||
const menuContent = document.querySelector(".menu-content");
|
||||
collapsibleButton.addEventListener("click", function () {
|
||||
menuContent.classList.toggle("active");
|
||||
|
@ -8,7 +8,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||
} else {
|
||||
menuContent.style.display = "block";
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
initializeCompaniesCarousel();
|
||||
// TODO: useful for news article carousel
|
||||
|
@ -18,7 +18,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||
// createCarouselItems(data);
|
||||
// initializeCarousel();
|
||||
// })
|
||||
// .catch(error => console.error('Error loading JSON:', error));
|
||||
// .catch(error => console.error('Error loading JSON:', error));
|
||||
});
|
||||
|
||||
function createCarouselItems(items) {
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
title: Threat Model
|
||||
tagline: Distrust | Threat Model
|
||||
summary: The type of threat we seek to mitigate
|
||||
layout: threatmodel
|
||||
permalink: /threatmodel.html
|
||||
thumbnail: /assets/base/threatmodel-thumbnail.png
|
||||
---
|
||||
|
Loading…
Reference in New Issue