diff --git a/' b/' deleted file mode 100644 index 35bd4c1..0000000 --- a/' +++ /dev/null @@ -1,661 +0,0 @@ -@charset "utf-8" - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 100 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 100 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 100 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 200 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 200 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 200 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 300 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 300 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 300 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 400 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 400 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 400 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 500 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 500 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 500 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 600 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 600 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 600 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 700 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 700 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 700 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 800 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 800 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 800 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 900 - font-display: swap - src: url(../webfonts/cyrillic-italic.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 900 - font-display: swap - src: url(..webfonts/latin-ext-italic.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: italic - font-weight: 900 - font-display: swap - src: url(../webfonts/latin-italic.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 100 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 100 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 100 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 200 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 200 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 200 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 300 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 300 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 300 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 400 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 400 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 400 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 500 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 500 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 500 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 600 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 600 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 600 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 700 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 700 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 700 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 800 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 800 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 800 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - -/* cyrillic */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 900 - font-display: swap - src: url(../webfonts/cyrillic-normal.woff2) format('woff2') - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116 - -/* latin-ext */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 900 - font-display: swap - src: url(../webfonts/latin-ext-normal.woff2) format('woff2') - unicode-range: U+0100-02AF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF - -/* latin */ -@font-face - font-family: 'Jost' - font-style: normal - font-weight: 900 - font-display: swap - src: url(../webfonts/latin-normal.woff2) format('woff2') - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD - - - -// Update Bulma's global variables -$family-sans-serif: "Jost", sans-serif -$footer-padding: 1.0rem 2.5rem - -/* on small resolutions */ -@media screen and (max-width:1023px) - /* add left and right margins to menu */ - .navbar-brand - margin-left: 0.5em!important - - .navbar-menu - margin-right: 0.5em!important - - /* allow menu items to wrap */ - .navbar-menu - flex-shrink: 1!important - - .navbar-end - flex-wrap: wrap!important - -html - scroll-behavior: smooth - -body - font-family: $family-sans-serif - display: flex - flex-direction: column - min-height: 100vh - -section - flex: 1 - -#dark-mode - display: none - -.menu - position: sticky - top: 48px - max-height: calc(100vh - 48px) - overflow-y: scroll - -div.column.is-2.is-hidden-mobile - padding-right: 0px !important - -img - margin: auto - display: block - -#image-gay - width: auto - height: auto - max-height:90vh - -ul - font-size: 18px - color: #373737 !important - -.toc - font-size: 15.5px !important - -ol - font-size: 18px - color: #373737 !important - -p - font-size: 18px - color: #373737 !important - -h1 - text-align: center !important - font-size: 2.8em !important - text-decoration: underline #AE3B8B !important - -h2:not(.title) - font-size: 1.8em !important - margin-top: 2.5rem !important - margin-bottom: 2rem !important - -h3 - font-size: 1.4em !important - font-style: italic !important - -h4 - font-size: 1.1em !important - text-decoration: underline !important - -a - color: #AE3B8B - -.menu-list a.is-active - background-color: #AE3B8B - -code - color: #AE3B8B - -.icon-text - font-size: 16px - -body[theme="dark"] - background-color: black !important - -body[theme="dark"] article.box - background-color: black !important - box-shadow: 0 .5em 1em -.125em rgba(245,245,245,.1),0 0 0 1px rgba(245,245,245,.02) - -body[theme="dark"] blockquote - background-color: #090809 !important - border-left: 5px solid #232223 - -body[theme="dark"] .navbar - background-color: #090809 !important - -body[theme="dark"] .footer - background-color: #090809 !important - -body[theme="dark"] .navbar-item - color: #c9c7c9 !important - -body[theme="dark"] .navbar-item:hover - color: black !important - -body[theme="dark"] .navbar-item:focus - color: black !important - -body[theme="dark"] p - color: #c9c7c9 !important - -body[theme="dark"] strong - color: #c9c7c9 !important - -body[theme="dark"] ol - color: #c9c7c9 !important - -body[theme="dark"] ul - color: #c9c7c9 !important - -body[theme="dark"] .title - color: #c9c7c9 !important - -body[theme="dark"] h1 - color: #c9c7c9 !important - -body[theme="dark"] h2 - color: #c9c7c9 !important - -body[theme="dark"] h3 - color: #c9c7c9 !important - -body[theme="dark"] h4 - color: #c9c7c9 !important - -body[theme="dark"] a.toc - color: #c9c7c9 !important - -body[theme="dark"] a.toc:hover - color: black !important - -body[theme="dark"] a:not(.toc,.navbar-item) - color: #fa86d8 !important - -body[theme="dark"] code - color: #fa86d8 !important - background-color: #090809 !important - -body[theme="dark"] a.is-active - background-color: #fa86d8 !important - color: black !important - -img[theme=dark]:not(.no-dark) - filter: invert(1) hue-rotate(180deg) - diff --git a/content/posts/tamper/index.md b/content/posts/tamper/index.md index 69c5f34..3f3c1f0 100644 --- a/content/posts/tamper/index.md +++ b/content/posts/tamper/index.md @@ -14,10 +14,12 @@ a4="tamper-a4.pdf" letter="tamper-letter.pdf" +++ -If the police ever have [physical access](/glossary/#physical-attacks) to an electronic device like a laptop, even [for five minutes](https://www.vice.com/en/article/a3q374/hacker-bios-firmware-backdoor-evil-maid-attack-laptop-5-minutes), they can install hardware keyloggers, create images of the storage media, or otherwise trivially compromise it at the hardware, firmware, or software level. One way to minimize this risk is to make devices tamper-evident. As the No Trace Project [notes](https://notrace.how/threat-library/mitigations/tamper-evident-preparation.html), "Tamper-evident preparation is the process of taking precautionary measures to make it possible to detect when something has been physically accessed by an adversary." +If the police ever have [physical access](/glossary/#physical-attacks) to an electronic device like a laptop, even [for five minutes](https://www.vice.com/en/article/a3q374/hacker-bios-firmware-backdoor-evil-maid-attack-laptop-5-minutes), they can install hardware keyloggers, create images of the storage media, or otherwise trivially compromise it at the hardware, firmware, or software level. One way to minimize this risk is to make devices tamper-evident. As the Threat Library [notes](https://notrace.how/threat-library/mitigations/tamper-evident-preparation.html), "Tamper-evident preparation is the process of taking precautionary measures to make it possible to detect when something has been physically accessed by an adversary." -['Evil maid' attacks](https://en.wikipedia.org/wiki/Evil_maid_attack) work like this: An attacker gains temporary access to your [encrypted](/glossary/#encryption) laptop or phone. Although they can’t decrypt your data, they can tamper with your laptop for a few minutes and then leave it exactly where they found it. When you return and enter your credentials, you have been hacked. The attacker may have [modified data on your hard drive](https://media.ccc.de/v/gpn20-32-poc-implementing-evil-maid-attack-on-encrypted-boot), replaced the firmware, or installed a hardware component such as a keylogger. +['Evil maid' attacks](https://en.wikipedia.org/wiki/Evil_maid_attack) work like this: an attacker gains temporary access to your [encrypted](/glossary/#encryption) laptop or phone. Although they can’t decrypt your data, they can tamper with your laptop for a few minutes and then leave it exactly where they found it. When you return and enter your credentials, you have been hacked. The attacker may have [modified data on your hard drive](https://media.ccc.de/v/gpn20-32-poc-implementing-evil-maid-attack-on-encrypted-boot), replaced the firmware, or installed a hardware component such as a keylogger. + +"Defense in depth" means that there are multiple layers of security that an adversary must bypass in order to succeed. This article will cover tamper-evident laptop screws, storage and firmware, as well as physical intrusion detection. # Tamper-Evident Laptop Screws @@ -47,29 +49,29 @@ For this reason, it is preferable to apply nail polish directly to the screws ra Glitter nail polish was successfully bypassed during a Tamper Evident Challenge in 2018 — the winner [explained](https://hoodiepony.medium.com/bypassing-the-glitter-nail-polish-tamper-evident-seal-25d6973d617d) how they managed to do it. Notably, a brand of nail polish with relatively large pieces of glitter in only two colors was used. It would be difficult to apply this bypass to inset screw holes; if the glitter was applied with a high density of elements, but not too thick, this would also increase the difficulty. Finally, [using an adhesive](https://dys2p.com/en/2021-12-tamper-evident-protection.html#glitzer-nagellack-mit-klebstoff) would also make the bypass less feasible. -Verification that the random pattern hasn't changed can be done manually with what astronomers call a "blink comparison". This is used in astronomy to detect small changes in the night sky: you quickly flick between the original photo and the current one, which makes it easier to see any changes. Alternatively, if you have an Android smartphone (either [GrapheneOS](/posts/grapheneos/) or a cheap one for [intrusion detection](/posts/tamper/#physical-intrusion-detection) that has an inferior camera), you can use an app called [Blink Comparison](https://github.com/proninyaroslav/blink-comparison), which makes it less likely to miss something. It can be installed like any other [app that doesn't require Google Services](/posts/grapheneos/#how-to-install-software), i.e. not through F-Droid. +Verification that the random pattern hasn't changed can be done manually with what astronomers call a "blink comparison". This is used in astronomy to detect small changes in the night sky: you quickly flick between the original photo and the current one, which makes it easier to see any changes. Alternatively, if you have an Android smartphone (either [GrapheneOS](/posts/grapheneos/) or a cheap one for [intrusion detection](/posts/tamper/#physical-intrusion-detection)), you can use an app called [Blink Comparison](https://github.com/proninyaroslav/blink-comparison), which makes it less likely that you will miss something. It can be installed like any other [app that doesn't require Google Services](/posts/grapheneos/#how-to-install-software), i.e. not through F-Droid. The Blink Comparison app encrypts its storage to prevent an adversary from easily replacing the photos, and provides a helpful interface for comparing them. The app helps you take the comparison photo from the same angle and distance as the original photo. Blink Comparison then switches between the two images when you touch the screen, making direct comparison much easier than manually comparing two photos. -## Getting Started +## In practice -Now that you understand the nuances of applying nail polish to the screws of your laptop case, let's actually do it — if you are going to [install HEADS](/posts/tamper/#tamper-evident-software-and-firmware), do that first so the nail polish doesn't have to be removed and repeated. Before you start, you can also take a picture of the inside of the laptop in case you ever need to check if the internal components have been tampered with despite the nail polish protection (keep in mind that not all components are visible). Use a nail polish that has different colors and sizes of glitter, like the one shown above. +Now that you understand the nuances of applying nail polish to the screws of your laptop case, let's actually do it — if you are going to [install Heads firmware](/posts/tamper/#tamper-evident-software-and-firmware), do that first so the nail polish doesn't have to be removed and repeated. Before you start, you can also take a picture of the inside of the laptop in case you ever need to check if the internal components have been tampered with despite the nail polish protection (keep in mind that not all components are visible). Use a nail polish that has different colors and sizes of glitter, like the one shown above. * First, take a photo of the bottom of the computer and use a program like GIMP to number the screws to make it easier to verify. For example, the ThinkPad X230 shown above has 13 screws that need to be numbered so that in the future you know which screw the photo `3.jpg` refers to. -* Apply the glitter nail polish directly to each screw, making sure there are enough glitter elements without being too thick. +* Apply the glitter nail polish directly to each screw, making sure there are enough glitter elements without it being too thick. * Once it is dry, take good close-up photos of each screw — either with the Blink Comparison app on a smartphone or with a regular camera. It is a good idea to use lighting that is reproducible, so close the blinds on any windows and rely on the indoor lighting and the camera flash. Number the file names of the photos and back them up to a second storage location. If you ever need to remove the nail polish to access the inside of the laptop, you can use a syringe to apply the nail polish remover to avoid applying too much and damaging the internal electronics. # Tamper-Evident Storage -Now that you understand the concept, you need a tamper-evident storage solution for all sensitive electronics when you are away from home (laptops, external drives, USBs, phones, external keyboards and mice). Safes are often used to protect valuable items, but they can be bypassed in several ways, and some of these bypasses are difficult to detect (see [below](/posts/tamper/#appendix-cracking-safes)). It is not trivial or inexpensive to make a safe tamper-evident, if it can be done at all. +You also need a tamper-evident storage solution for all sensitive electronics when you are away from home (laptops, external drives, USBs, phones, external keyboards and mice) — a laptop can be tampered with in ways that don't require removing the screws. Safes are often used to protect valuable items, but they can be bypassed in many ways, and some of these bypasses are difficult to detect (see [below](/posts/tamper/#appendix-cracking-safes)). It is not trivial or inexpensive to make a safe tamper-evident, if it can be done at all.
-
+
-
+