Update About webpage to version 4.3.0.88.
This commit is contained in:
parent
0bfc69c4d6
commit
7e6c0213ca
643
about.html
643
about.html
@ -2,10 +2,10 @@
|
||||
|
||||
<!-- Inferencium - Website - About -->
|
||||
|
||||
<!-- Copyright 2022-2023 Jake Winters -->
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
|
||||
|
||||
<!-- Version: 4.2.0.70 -->
|
||||
<!-- Version: 4.3.0.88 -->
|
||||
|
||||
|
||||
<html>
|
||||
@ -16,7 +16,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
|
||||
<!-- Navigation bar. -->
|
||||
<!-- Navigation bar -->
|
||||
<div class="sidebar">
|
||||
<img src="asset/img/logo-inferencium-no_text.png"
|
||||
width="110px" height="110px">
|
||||
@ -28,6 +28,7 @@
|
||||
<div><a href="blog.html">Blog</a></div>
|
||||
<div><a href="source.html">Source</a></div>
|
||||
<div><a href="key.html">Key</a></div>
|
||||
<div><a href="changelog.html">Changelog</a></div>
|
||||
</div>
|
||||
|
||||
<body>
|
||||
@ -36,7 +37,7 @@
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- Table of contents. -->
|
||||
<!-- Table of contents -->
|
||||
<h2 id="toc"><a href="#toc" class="h2"
|
||||
>Table of Contents<a/></h2>
|
||||
<ul>
|
||||
@ -48,38 +49,51 @@
|
||||
<li><a href="#licensing-preferred" class="body-link"
|
||||
>Preferred</a></li>
|
||||
<ul>
|
||||
<li><a href="#licensing-preferred-code" class="body-link"
|
||||
<li><a href="#licensing-preferred-code"
|
||||
class="body-link"
|
||||
>Code<a/></li>
|
||||
<ul>
|
||||
<li><a href="#licensing-bsd-3-clause-clear"
|
||||
<li><a href="#licensing-bsd-3-
|
||||
clause-clear"
|
||||
class="body-link"
|
||||
>BSD 3-Clause Clear License</a></li>
|
||||
<li><a href="#licensing-mit" class="body-link"
|
||||
<li><a href="#licensing-mit"
|
||||
class="body-link"
|
||||
>MIT License</a></li>
|
||||
<li><a href="#licensing-gpl-2.0" class="body-link"
|
||||
>GNU General Public License v2.0</a></li>
|
||||
<li><a href="#licensing-gpl-2.0"
|
||||
class="body-link"
|
||||
>GNU General Public License
|
||||
v2.0</a></li>
|
||||
</ul>
|
||||
<li><a href="#licensing-preferred-non-code" class="body-link"
|
||||
<li><a href="#licensing-preferred-non-code"
|
||||
class="body-link"
|
||||
>Non-code</a></li>
|
||||
<ul>
|
||||
<li><a href="#licensing-cc-by-4.0" class="body-link"
|
||||
>Creative Commons Attribution 4.0 International</a></li>
|
||||
<li><a href="#licensing-cc-by-
|
||||
4.0" class="body-link"
|
||||
>Creative Commons Attribution
|
||||
4.0 International</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
<li><a href="#licensing-other" class="body-link"
|
||||
>Other</a></li>
|
||||
<ul>
|
||||
<li><a href="#licensing-other-code" class="body-link"
|
||||
<li><a href="#licensing-other-code"
|
||||
class="body-link"
|
||||
>Code</a></li>
|
||||
<ul>
|
||||
<li><a href="#licensing-gpl-3.0" class="body-link"
|
||||
<li><a href="#licensing-gpl-3.0"
|
||||
class="body-link"
|
||||
>GNU General Public License v3.0</a></li>
|
||||
</ul>
|
||||
<li><a href="#licensing-other-non-code" class="body-link"
|
||||
<li><a href="#licensing-other-non-code"
|
||||
class="body-link"
|
||||
>Non-code</a></li>
|
||||
<ul>
|
||||
<li><a href="#licensing-cc-by-nc-4.0" class="body-link"
|
||||
>Creative Commons Attribution Non Commercial 4.0
|
||||
<li><a href="#licensing-cc-by-
|
||||
nc-4.0" class="body-link"
|
||||
>Creative Commons Attribution
|
||||
Non Commercial 4.0
|
||||
International</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
@ -101,24 +115,26 @@
|
||||
<li><a href="#sfw-smartphone" class="body-link"
|
||||
>Smartphone</a></li>
|
||||
</ul>
|
||||
<li><a href="#music" class="body-link"
|
||||
>Music</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- About me. -->
|
||||
<!-- About me -->
|
||||
<h2 id="about_me"><a href="#about_me" class="h2"
|
||||
>About Me</a></h2>
|
||||
<p>I am Jake Winters, also known by my pseudonym "Inference", a cybersecurity researcher based in
|
||||
United Kingdom.<br>
|
||||
<p>I am Jake Winters, also known by my pseudonym "Inference", a cybersecurity researcher
|
||||
based in United Kingdom.<br>
|
||||
I am the founder, lead developer, and administrator, of Inferencium.<br>
|
||||
All opinions are my own, and are not necessarily shared with projects or people I am
|
||||
affiliated with.<br>
|
||||
<br>
|
||||
I write about my research and experience in cybersecurity and also physical security.
|
||||
Most of my postings are security-related, but I occasionally post about other aspects of my
|
||||
life.<br>
|
||||
Most of my postings are security-related, but I occasionally post about other aspects of
|
||||
my life.<br>
|
||||
<br>
|
||||
I am an open source advocate for the preservation and modifiability of source code. I
|
||||
believe source code should be considered human knowledge as much as past knowledge and
|
||||
@ -126,16 +142,17 @@
|
||||
Source code being modifiable allows it to be adapted for use by anyone, whether to add
|
||||
features, harden it for increased security and/or privacy, or provide accessibility for
|
||||
disabled users.<br>
|
||||
I am also a modular design advocate for the ability to securely and robustly make changes to
|
||||
hardware and software without the entire system being affected.<br>
|
||||
I am also a modular design advocate for the ability to securely and robustly make
|
||||
changes to hardware and software without the entire system being affected.<br>
|
||||
<br>
|
||||
If you want to contact me for any reason, you can use my
|
||||
<a href="https://inferencium.net/contact.html" class="body-link"
|
||||
>contact methods</a>.<br>
|
||||
<br>
|
||||
I run the public Systems Hardening XMPP channel dedicated to systems security and privacy
|
||||
hardening at <code>sys-hardening@muc.xmpp.inferencium.net</code>, and its respective
|
||||
off-topic channel at <code>sys-hardening-ot@muc.xmpp.inferencium.net</code>.</p>
|
||||
I run the public Systems Hardening XMPP channel dedicated to systems security and
|
||||
privacy hardening at <code>sys-hardening@muc.xmpp.inferencium.net</code>, and its
|
||||
respective off-topic channel at
|
||||
<code>sys-hardening-ot@muc.xmpp.inferencium.net</code>.</p>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
@ -161,124 +178,172 @@
|
||||
<br>
|
||||
<h3 id="licensing-preferred"><a href="#licensing-preferred" class="h3"
|
||||
>Preferred</a></h3>
|
||||
<h4 id="licensing-preferred-code"><a href="#licensing-preferred-code" class="h4"
|
||||
<h4 id="licensing-preferred-code"><a href="#licensing-preferred-code"
|
||||
class="h4"
|
||||
>Code</a></h4>
|
||||
<h5 id="licensing-bsd-3-clause-clear"><a href="#licensing-bsd-3-clause-clear" class="h5"
|
||||
<h5 id="licensing-bsd-3-clause-clear">
|
||||
<a href="#licensing-bsd-3-clause-clear" class="h5"
|
||||
>BSD 3-Clause Clear License</a></h5>
|
||||
<code>SPDX-License-Identifier: BSD-3-Clause-Clear</code>
|
||||
<p>Type: Permissive</p>
|
||||
<br>
|
||||
<p><a href="https://spdx.org/licenses/BSD-3-Clause-Clear.html" class="body-link"
|
||||
>BSD 3-Clause Clear License</a> is a highly permissive license which allows content licensed
|
||||
under it to be used in any way, whether in source or binary form, and allows sublicensing
|
||||
under a different license, with the only restrictions being the original copyright notice
|
||||
must be kept in order to attribute the original creator of the licensed content, and the
|
||||
name of the project and/or its contributors may not be used to endorse or promote products
|
||||
derived from the original project.<br>
|
||||
BSD 3-Clause Clear License is a derivative of <a href="https://spdx.org/licenses/
|
||||
<p><a href="https://spdx.org/licenses/BSD-3-Clause-
|
||||
Clear.html" class="body-link"
|
||||
>BSD 3-Clause Clear License</a> is a highly permissive
|
||||
license which allows content licensed under it to be
|
||||
used in any way, whether in source or binary form, and
|
||||
allows sublicensing under a different license, with the
|
||||
only restrictions being the original copyright notice
|
||||
must be kept in order to attribute the original creator
|
||||
of the licensed content, and the name of the project
|
||||
and/or its contributors may not be used to endorse or
|
||||
promote products derived from the original project.<br>
|
||||
BSD 3-Clause Clear License is a derivative of
|
||||
<a href="https://spdx.org/licenses/
|
||||
BSD-3-Clause.html" class="body-link"
|
||||
>BSD 3-Clause "New" or "Revised" License</a>, which adds an explicit statement clarifying
|
||||
that patent rights are not granted by the license alone, and must be granted separately by
|
||||
the copyright and/or patent holder(s). We prefer this license over the BSD 3-Clause "New" or
|
||||
"Revised" License due to this explicit statement which removes any possibility of debate and
|
||||
misunderstanding in regards to patents applied to code using the BSD 3-Clause "New" or
|
||||
"Revised" License.</p>
|
||||
>BSD 3-Clause "New" or "Revised" License</a>, which adds
|
||||
an explicit statement clarifying that patent rights are
|
||||
not granted by the license alone, and must be granted
|
||||
separately by the copyright and/or patent holder(s). We
|
||||
prefer this license over the BSD 3-Clause "New" or
|
||||
"Revised" License due to this explicit statement which
|
||||
removes any possibility of debate and misunderstanding
|
||||
in regards to patents applied to code using the BSD
|
||||
3-Clause "New" or "Revised" License.</p>
|
||||
<br>
|
||||
<h5 id="licensing-mit"><a href="#licensing-mit" class="h5"
|
||||
>MIT License</a></h5>
|
||||
<code>SPDX-License-Identifier: MIT</code>
|
||||
<p>Type: Permissive</p>
|
||||
<br>
|
||||
<p><a href="https://spdx.org/licenses/MIT.html" class="body-link"
|
||||
>MIT License</a> is a highly permissive license which allows content licensed under it to be
|
||||
used in any way, whether in source or binary form, and allows sublicensing under a different
|
||||
license, with the only restriction being the original copyright notice must be kept in order
|
||||
to attribute the original creator of the licensed content.<br>
|
||||
Due to this license allowing the original project's name and/or contributors to be used to
|
||||
endorse or promote products derived from the original project, unless an explicit statement
|
||||
is made alongside this license, increasing complexity and deviating from the standard
|
||||
license text, we prefer <a href="#licensing-bsd-3-clause-clear" class="body-link"
|
||||
>BSD 3-Clause Clear License</a>; however, MIT License is a great choice when derivatives
|
||||
using the name of the original project and/or its contributors is a non-issue.</p>
|
||||
<p><a href="https://spdx.org/licenses/MIT.html"
|
||||
class="body-link"
|
||||
>MIT License</a> is a highly permissive license which
|
||||
allows content licensed under it to be used in any way,
|
||||
whether in source or binary form, and allows
|
||||
sublicensing under a different license, with the only
|
||||
restriction being the original copyright notice must be
|
||||
kept in order to attribute the original creator of the
|
||||
licensed content.<br>
|
||||
Due to this license allowing the original project's name
|
||||
and/or contributors to be used to endorse or promote
|
||||
products derived from the original project, unless an
|
||||
explicit statement is made alongside this license,
|
||||
increasing complexity and deviating from the standard
|
||||
license text, we prefer <a href="#licensing-bsd-3-
|
||||
clause-clear" class="body-link"
|
||||
>BSD 3-Clause Clear License</a>; however, MIT License is
|
||||
a great choice when derivatives using the name of the
|
||||
original project and/or its contributors is a non-issue.</p>
|
||||
<br>
|
||||
<h5 id="licensing-gpl-2.0"><a href="#licensing-gpl-2.0" class="h5"
|
||||
>GNU General Public License v2.0</a></h5>
|
||||
<code>SPDX-License-Identifier: GPL-2.0-only</code>
|
||||
<p>Type: Copyleft</p>
|
||||
<br>
|
||||
<p><a href="https://spdx.org/licenses/GPL-2.0-only.html" class="body-link"
|
||||
>GNU General Public License v2.0</a> is a strong copyleft license which restricts use of
|
||||
content licensed under it by requiring all source code of the content to be publicly
|
||||
available, making binary-only form and inclusion of proprietary code impossible, requiring
|
||||
all derivatives to be licensed under the same license (allowing sublicensing under only
|
||||
newer GPL licenses if <code>GPL-2.0-or-later</code> is specified in the
|
||||
SPDX-License-Identifier), and requiring the original copyright notice to be kept in order to
|
||||
attribute the original creator of the licensed content.<br>
|
||||
Due to the restrictive and invasive nature of this license, it is avoided unless such
|
||||
restrictions would be beneficial to Inferencium code; whenever this is the case, the GNU
|
||||
General Public License v2.0 will be used, rather than the more restrictive
|
||||
<a href="#licensing-gpl-3.0" class="body-link"
|
||||
>GNU General Public License v3.0</a>, and relicensing derivatives under the GNU General
|
||||
Public License v3.0 will be disallowed.</p>
|
||||
<p><a href="https://spdx.org/licenses/GPL-2.0-
|
||||
only.html" class="body-link"
|
||||
>GNU General Public License v2.0</a> is a strong
|
||||
copyleft license which restricts use of content licensed
|
||||
under it by requiring all source code of the content to
|
||||
be publicly available, making binary-only form and
|
||||
inclusion of proprietary code impossible, requiring all
|
||||
derivatives to be licensed under the same license
|
||||
(allowing sublicensing under only newer GPL licenses if
|
||||
<code>GPL-2.0-or-later</code> is specified in the SPDX-
|
||||
License-Identifier), and requiring the original
|
||||
copyright notice to be kept in order to attribute the
|
||||
original creator of the licensed content.<br>
|
||||
Due to the restrictive and invasive nature of this
|
||||
license, it is avoided unless such restrictions would be
|
||||
beneficial to Inferencium code; whenever this is the
|
||||
case, the GNU General Public License v2.0 will be used,
|
||||
rather than the more restrictive <a href="#licensing-gpl
|
||||
-3.0" class="body-link"
|
||||
>GNU General Public License v3.0</a>, and relicensing
|
||||
derivatives under the GNU General Public License v3.0
|
||||
will be disallowed.</p>
|
||||
<br>
|
||||
<h4 id="licensing-preferred-non-code"><a href="#licensing-preferred-non-code" class="h4"
|
||||
<h4 id="licensing-preferred-non-code"><a href="#licensing-preferred-non-
|
||||
code" class="h4"
|
||||
>Non-code</a></h4>
|
||||
<h5 id="licensing-cc-by-4.0"><a href="#licensing-cc-by-4.0" class="h5"
|
||||
<h5 id="licensing-cc-by-4.0"><a href="#licensing-cc-by-4.0"
|
||||
class="h5"
|
||||
>Creative Commons Attribution 4.0 International</a></h5>
|
||||
<code>SPDX-License-Identifier: CC-BY-4.0</code>
|
||||
<p>Type: Permissive</p>
|
||||
<br>
|
||||
<p><a href="https://spdx.org/licenses/CC-BY-4.0.html" class="body-link"
|
||||
>Creative Commons Attribution 4.0 International</a> is a highly permissive license which
|
||||
allows content licensed under it to be used in any way, in any medium, with the only
|
||||
restriction being the original copyright notice must be kept in order to attribute the
|
||||
original creator of the licensed content.</p>
|
||||
<p><a href="https://spdx.org/licenses/CC-BY-4.0.html"
|
||||
class="body-link"
|
||||
>Creative Commons Attribution 4.0 International</a> is a
|
||||
highly permissive license which allows content licensed
|
||||
under it to be used in any way, in any medium, with the
|
||||
only restriction being the original copyright notice
|
||||
must be kept in order to attribute the original creator
|
||||
of the licensed content.</p>
|
||||
<br>
|
||||
<h3 id="licensing-other"><a href="#licensing-other" class="h2"
|
||||
>Other</a></h3>
|
||||
<h4 id="licensing-other-code"><a href="#licensing-other-code" class="h4"
|
||||
>Code</a></h4>
|
||||
<h5 id="licensing-gpl-3.0"><a href="#licensing-gpl-3.0" class="h5"
|
||||
<h5 id="licensing-gpl-3.0"><a href="#licensing-gpl-3.0"
|
||||
class="h5"
|
||||
>GNU General Public License v3.0</a></h5>
|
||||
<code>SPDX-License-Identifier: GPL-3.0-only</code>
|
||||
<p>Type: Copyleft</p>
|
||||
<br>
|
||||
<p><a href="https://spdx.org/licenses/GPL-3.0-only.html" class="body-link"
|
||||
>GNU General Public License v3.0</a> is a strong copyleft license which restricts usage of
|
||||
content licensed under it by requiring all source code of the content to be publicly
|
||||
available, making binary-only form and inclusion of proprietary code impossible, requiring
|
||||
all derivatives to be licensed under the same license (allowing sublicensing under only
|
||||
newer GPL licenses if <code>GPL-3.0-or-later</code> is specified in the
|
||||
SPDX-License-Identifier), requiring the content to be made available only on systems which
|
||||
allow modifying the content, such as systems with unlocked/unlockable bootloaders and/or
|
||||
which are unsigned by the OEM, and requiring the original copyright notice to be kept in
|
||||
order to attribute the original creator of the licensed content.<br>
|
||||
Due to the restrictive and invasive nature of this license, and the fact it requires code to
|
||||
be included only on specific systems, further restricting usage of Inferencium code, it is
|
||||
avoided completely.</p>
|
||||
<p><a href="https://spdx.org/licenses/GPL-3.0-only.html"
|
||||
class="body-link"
|
||||
>GNU General Public License v3.0</a> is a strong
|
||||
copyleft license which restricts usage of content
|
||||
licensed under it by requiring all source code of the
|
||||
content to be publicly available, making binary-only
|
||||
form and inclusion of proprietary code impossible,
|
||||
requiring all derivatives to be licensed under the same
|
||||
license (allowing sublicensing under only newer GPL
|
||||
licenses if <code>GPL-3.0-or-later</code> is specified
|
||||
in the SPDX-License-Identifier), requiring the content
|
||||
to be made available only on systems which allow
|
||||
modifying the content, such as systems with
|
||||
unlocked/unlockable bootloaders and/or which are
|
||||
unsigned by the OEM, and requiring the original
|
||||
copyright notice to be kept in order to attribute the
|
||||
original creator of the licensed content.<br>
|
||||
Due to the restrictive and invasive nature of this
|
||||
license, and the fact it requires code to be included
|
||||
only on specific systems, further restricting usage of
|
||||
Inferencium code, it is avoided completely.</p>
|
||||
<br>
|
||||
<h4 id="licensing-other-non-code"><a href="#licensing-other-non-code" class="h4"
|
||||
<h4 id="licensing-other-non-code"><a href="#licensing-other-non-code"
|
||||
class="h4"
|
||||
>Non-code</a></h4>
|
||||
<h5 id="licensing-cc-by-nc-4.0"><a href="#licensing-cc-by-nc-4.0" class="h5"
|
||||
>Creative Commons Attribution Non Commerical 4.0 International</a></h5>
|
||||
<h5 id="licensing-cc-by-nc-4.0"><a href="#licensing-cc-by-nc-
|
||||
4.0" class="h5"
|
||||
>Creative Commons Attribution Non Commerical 4.0
|
||||
International</a></h5>
|
||||
<code>SPDX-License-Identifier: CC-BY-NC-4.0</code>
|
||||
<p>Type: Permissive non-commercial</p>
|
||||
<br>
|
||||
<p><a href="https://spdx.org/licenses/CC-BY-NC-4.0.html" class="body-link"
|
||||
>Creative Commons Attribution Non Commercial 4.0 International</a> is a permissive license
|
||||
which allows content licensed under it to be used in any way, in any medium, with the
|
||||
restrictions being commercial usage is prohibited, and the original copyright notice must be
|
||||
kept in order to attribute the original creator of the licensed content.</br>
|
||||
Due to the non-commercial restriction of this license preventing Inferencium code from being
|
||||
used for any purpose, specifically preventing commercial usage we do not want to prevent, it
|
||||
is avoided completely.</p>
|
||||
<p><a href="https://spdx.org/licenses/CC-BY-NC-4.0.html"
|
||||
class="body-link"
|
||||
>Creative Commons Attribution Non Commercial 4.0
|
||||
International</a> is a permissive license which allows
|
||||
content licensed under it to be used in any way, in any
|
||||
medium, with the restrictions being commercial usage is
|
||||
prohibited, and the original copyright notice must be
|
||||
kept in order to attribute the original creator of the
|
||||
licensed content.</br>
|
||||
Due to the non-commercial restriction of this license
|
||||
preventing Inferencium code from being used for any
|
||||
purpose, specifically preventing commercial usage we do
|
||||
not want to prevent, it is avoided completely.</p>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<h2 id="recommendations"><a href="#recommendations" class="h2"
|
||||
>Recommendations</a></h2>
|
||||
<br>
|
||||
<!-- Hardware I recommend as production hardware. -->
|
||||
<!-- Hardware I recommend as production hardware -->
|
||||
<h3 id="hardware"><a href="#hardware" class="h3"
|
||||
>Hardware</a></h3>
|
||||
<br>
|
||||
@ -296,92 +361,118 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Smartphone</td>
|
||||
<td class="table-main"><img src="asset/img/google-pixel_6.png"
|
||||
<td class="table-main"><img src="asset/img/google-
|
||||
pixel_6.png"
|
||||
width="100px" height="100px"/><br>
|
||||
<br>
|
||||
Google Pixel</td>
|
||||
<td>Google Pixel devices are the best Android devices available on the market for
|
||||
<a class="body-link" href="https://security.googleblog.com/2021/10/
|
||||
pixel-6-setting-new-standard-for-mobile.html"
|
||||
<td>Google Pixel devices are the best Android devices
|
||||
available on the market for
|
||||
<a class="body-link" href="https://security.googleblog
|
||||
.com/2021/10/pixel-6-setting-new-standard-for-mobile
|
||||
.html"
|
||||
>security and privacy</a>.<br>
|
||||
<br>
|
||||
They allow locking the bootloader with a
|
||||
<a class="body-link" href="https://android.googlesource.com/platform/external/avb/+/
|
||||
master/README.md#pixel-2-and-later"
|
||||
>custom Android Verified Boot (AVB) key</a> in order to preserve security and privacy
|
||||
features when installing a custom operating system, such as
|
||||
<a class="body-link" href="https://source.android.com/docs/security/features/
|
||||
<a class="body-link" href="https://android.googlesource
|
||||
.com/platform/external/avb/+/master/README.md#pixel-2-
|
||||
and-later"
|
||||
>custom Android Verified Boot (AVB) key</a> in order to
|
||||
preserve security and privacy features when installing a
|
||||
custom operating system, such as <a class="body-link"
|
||||
href="https://source.android.com/docs/security/features/
|
||||
verifiedboot/"
|
||||
>verified boot</a> which verifies that the OS has not been corrupted or tampered with,
|
||||
and
|
||||
<a class="body-link" href="https://source.android.com/docs/security/features/
|
||||
verifiedboot/verified-boot#rollback-protection"
|
||||
>rollback protection</a> which prevents an adversary from rolling back the OS or
|
||||
firmware version to a previous version with known security vulnerabilities.<br>
|
||||
>verified boot</a> which verifies that the OS has not
|
||||
been corrupted or tampered with, and
|
||||
<a class="body-link" href="https://source.android.com/
|
||||
docs/security/features/verifiedboot/verified-boot
|
||||
#rollback-protection"
|
||||
>rollback protection</a> which prevents an adversary
|
||||
from rolling back the OS or firmware version to a
|
||||
previous version with known security vulnerabilities.<br>
|
||||
<br>
|
||||
They also include a
|
||||
<a class="body-link" href="https://developer.android.com/training/articles/
|
||||
keystore#HardwareSecurityModule"
|
||||
>hardware security module</a> (Titan M2, improving on the previous generation
|
||||
<a class="body-link" href="https://security.googleblog.com/2018/10/
|
||||
building-titan-better-security-through.html"
|
||||
>Titan M</a>) which is extremely resistant to both remote and physical attacks due to
|
||||
being completely isolated from the rest of the system, including the operating system.
|
||||
Titan M2 ensures that the device cannot be remotely compromised by requiring the side
|
||||
buttons of the device to be physically pressed for some sensitive operations. Titan M2
|
||||
also takes the role of
|
||||
<a class="body-link" href="https://source.android.com/docs/security/best-practices/
|
||||
hardware#strongbox-keymaster"
|
||||
<a class="body-link" href="https://developer.android
|
||||
.com/training/articles/keystore#HardwareSecurityModule"
|
||||
>hardware security module</a> (Titan M2, improving on
|
||||
the previous generation <a class="body-link"
|
||||
href="https://security.googleblog.com/2018/10/building-
|
||||
titan-better-security-through.html"
|
||||
>Titan M</a>) which is extremely resistant to both
|
||||
remote and physical attacks due to being completely
|
||||
isolated from the rest of the system, including the
|
||||
operating system. Titan M2 ensures that the device
|
||||
cannot be remotely compromised by requiring the side
|
||||
buttons of the device to be physically pressed for some
|
||||
sensitive operations. Titan M2 also takes the role of
|
||||
<a class="body-link" href="https://source.android.com/
|
||||
docs/security/best-practices/hardware#strongbox-
|
||||
keymaster"
|
||||
>Android StrongBox Keymaster</a>,
|
||||
a <a class="body-link" href="https://source.android.com/docs/security/features/keystore"
|
||||
>hardware-backed Keystore</a> containing sensitive user keys which are unavailable to
|
||||
the OS or apps running on it without authorisation from Titan M2 itself.
|
||||
<a class="body-link" href="https://android-developers.googleblog.com/2018/05/
|
||||
insider-attack-resistance.html"
|
||||
>Insider attack resistance</a> ensures that Titan M2 firmware can be flashed only if the
|
||||
user PIN/password is already known, making it impossible to backdoor the device without
|
||||
already knowing these secrets.<br>
|
||||
a <a class="body-link" href="https://source.android.com/
|
||||
docs/security/features/keystore"
|
||||
>hardware-backed Keystore</a> containing sensitive user
|
||||
keys which are unavailable to the OS or apps running on
|
||||
it without authorisation from Titan M2 itself.
|
||||
<a class="body-link" href="https://android-developers
|
||||
.googleblog.com/2018/05/insider-attack-resistance.html"
|
||||
>Insider attack resistance</a> ensures that Titan M2
|
||||
firmware can be flashed only if the user PIN/password is
|
||||
already known, making it impossible to backdoor the
|
||||
device without already knowing these secrets.<br>
|
||||
<br>
|
||||
Google Pixel device kernels are compiled with
|
||||
<a class="body-link" href="https://android-developers.googleblog.com/2018/10/
|
||||
control-flow-integrity-in-android-kernel.html"
|
||||
<a class="body-link" href="https://android-developers
|
||||
.googleblog.com/2018/10/control-flow-integrity-in-
|
||||
android-kernel.html"
|
||||
>forward-edge control-flow integrity</a> and
|
||||
<a class="body-link" href="https://security.googleblog.com/2019/10/
|
||||
protecting-against-code-reuse-in-linux_30.html"
|
||||
>backward-edge control-flow integrity</a> to prevent code reuse attacks against the
|
||||
kernel. MAC address randomisation is
|
||||
<a class="body-link" href="https://android-developers.googleblog.com/2017/04/
|
||||
changes-to-device-identifiers-in.html"
|
||||
>implemented well, along with minimal probe requests and randomised initial sequence
|
||||
numbers</a>.<br>
|
||||
<a class="body-link" href="https://security.googleblog
|
||||
.com/2019/10/protecting-against-code-reuse-in-linux_30
|
||||
.html"
|
||||
>backward-edge control-flow integrity</a> to prevent
|
||||
code reuse attacks against the kernel. MAC address
|
||||
randomisation is
|
||||
<a class="body-link" href="https://android-developers
|
||||
.googleblog.com/2017/04/changes-to-device-identifiers-in
|
||||
.html"
|
||||
>implemented well, along with minimal probe requests and
|
||||
randomised initial sequence numbers</a>.<br>
|
||||
<br>
|
||||
Google releases
|
||||
<a class="body-link" href="https://source.android.com/docs/security/bulletin/pixel/"
|
||||
>guaranteed monthly security updates</a>, ensuring Google Pixel devices are up-to-date
|
||||
and quickly protected against security vulnerabilities.<br>
|
||||
<a class="body-link" href="https://source.android.com/
|
||||
docs/security/bulletin/pixel/"
|
||||
>guaranteed monthly security updates</a>, ensuring
|
||||
Google Pixel devices are up-to-date and quickly
|
||||
protected against security vulnerabilities.<br>
|
||||
<br>
|
||||
Pixel 6-series and 7-series devices are a large improvement over the already very
|
||||
secure and private previous generation Pixel devices. They replace ARM-based Titan M
|
||||
with RISC-V-based Titan M2, reducing trust by removing ARM from the equation. Titan M2
|
||||
is more resiliant to attacks than Titan M, and is
|
||||
<a class="body-link" href="https://www.tuv-nederland.nl/assets/files/cerfiticaten/2022/
|
||||
09/nscib-cc-22-0228971-cert-final.pdf"
|
||||
>AVA_VAN.5 certified</a>, the highest level of vulnerability assessment. Google's
|
||||
in-house Tensor SoC includes Tensor Security Core, further improving device security.<br>
|
||||
Pixel 6-series and 7-series devices are a large
|
||||
improvement over the already very secure and private
|
||||
previous generation Pixel devices. They replace
|
||||
ARM-based Titan M with RISC-V-based Titan M2, reducing
|
||||
trust by removing ARM from the equation. Titan M2 is
|
||||
more resiliant to attacks than Titan M, and is
|
||||
<a class="body-link" href="https://www.tuv-nederland.nl/
|
||||
assets/files/cerfiticaten/2022/09/nscib-cc-22-0228971-
|
||||
cert-final.pdf"
|
||||
>AVA_VAN.5 certified</a>, the highest level of
|
||||
vulnerability assessment. Google's in-house Tensor SoC
|
||||
includes Tensor Security Core, further improving device
|
||||
security.<br>
|
||||
<br>
|
||||
Pixel 6-series and 7-series devices are supported for a
|
||||
<a class="body-link" href="https://support.google.com/nexus/answer/
|
||||
4457705#zippy=%2Cpixel-and-later"
|
||||
>minimum of 5 years from launch</a>, an increase from previous generations'
|
||||
<a class="body-link" href="https://support.google.com/nexus/answer/
|
||||
4457705#zippy=%2Cpixel-xl-a-a-g-and-a-g"
|
||||
<a class="body-link" href="https://support.google.com/
|
||||
nexus/answer/4457705#zippy=%2Cpixel-and-later"
|
||||
>minimum of 5 years from launch</a>, an increase from
|
||||
previous generations'
|
||||
<a class="body-link" href="https://support.google.com/
|
||||
nexus/answer/4457705#zippy=%2Cpixel-xl-a-a-g-and-a-g"
|
||||
>support lifecycles of 3 years</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<!-- Software I recommend as production software. -->
|
||||
<!-- Software I recommend as production software -->
|
||||
<h3 id="software"><a href="#software" class="h3"
|
||||
>Software</a></h3>
|
||||
<br>
|
||||
@ -399,30 +490,39 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Operating system</td>
|
||||
<td class="table-main"><img src="asset/img/logo-gentoo_linux.png"
|
||||
width="100px" height="100px"/><br>
|
||||
<td class="table-main"><img src="asset/img/logo-
|
||||
gentoo_linux.png" width="100px" height="100px"/><br>
|
||||
<br>
|
||||
Gentoo Linux</td>
|
||||
<td><a class="body-link" href="https://www.gentoo.org/"
|
||||
>Gentoo Linux</a> is a highly modular, source-based Linux-based operating system which
|
||||
allows vast customisation to tailor the operating system to suit your specific needs.
|
||||
There are many advantages to such an operating system, with the most notable being the
|
||||
ability to optimise the software for security, privacy, performance, or power usage;
|
||||
however, there are effectively unlimited other use cases, or a combination of multiple
|
||||
use cases.<br>
|
||||
>Gentoo Linux</a> is a highly modular, source-based,
|
||||
Linux-based operating system which allows vast
|
||||
customisation to tailor the operating system to suit
|
||||
your specific needs. There are many advantages to such
|
||||
an operating system, with the most notable being the
|
||||
ability to optimise the software for security, privacy,
|
||||
performance, or power usage; however, there are
|
||||
effectively unlimited other use cases, or a combination
|
||||
of multiple use cases.<br>
|
||||
<br>
|
||||
I have focused on security hardening and privacy hardening, placing performance below
|
||||
those aspects, although my system is still very performant. Some of the hardening I
|
||||
apply includes
|
||||
<a class="body-link" href="https://en.wikipedia.org/wiki/Buffer_overflow_protection"
|
||||
I have focused on security hardening and privacy
|
||||
hardening, placing performance below those aspects,
|
||||
although my system is still very performant. Some of the
|
||||
hardening I apply includes
|
||||
<a class="body-link" href="https://en.wikipedia.org/
|
||||
wiki/Buffer_overflow_protection"
|
||||
>stack protection</a>,
|
||||
<a class="body-link" href="https://en.wikipedia.org/wiki/Integer_overflow"
|
||||
<a class="body-link" href="https://en.wikipedia.org/
|
||||
wiki/Integer_overflow"
|
||||
>signed integer overflow wrapping</a>, and GrapheneOS'
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/hardened_malloc/"
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/hardened_malloc/"
|
||||
>hardened_malloc</a> memory allocator.<br>
|
||||
<br>
|
||||
You can find my personal Gentoo Linux configurations in my personal
|
||||
<a class="body-link" href="https://git.inferencium.net/inference/cfg/"
|
||||
You can find Inferencium's Gentoo Linux configurations
|
||||
in Inferencium's
|
||||
<a class="body-link" href="https://git.inferencium.net/
|
||||
Inferencium/cfg/"
|
||||
>configuration respository</a>.</td>
|
||||
<td class="table-main">Open source<br>
|
||||
<br>
|
||||
@ -430,26 +530,29 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Web browser</td>
|
||||
<td class="table-main"><img src="asset/img/logo-chromium.png"
|
||||
width="100px" height="100px"/><br>
|
||||
<td class="table-main"><img src="asset/img/logo-chromium
|
||||
.png" width="100px" height="100px"/><br>
|
||||
<br>
|
||||
Chromium</td>
|
||||
<td><a class="body-link" href="https://chromium.org/"
|
||||
>Chromium</a> is a highly secure web browser which is often ahead of other web browsers
|
||||
in security aspects. It has a dedicated security team and a very impressive
|
||||
<a class="body-link" href="https://www.chromium.org/Home/chromium-security/brag-sheet/"
|
||||
>Chromium</a> is a highly secure web browser which is
|
||||
often ahead of other web browsers in security aspects.
|
||||
It has a dedicated security team and a very impressive
|
||||
<a class="body-link" href="https://www.chromium.org/
|
||||
Home/chromium-security/brag-sheet/"
|
||||
>security brag sheet</a>.
|
||||
Chromium's security features include a strong
|
||||
<a class="body-link" href="https://code.google.com/p/chromium/wiki/LinuxSandboxing"
|
||||
<a class="body-link" href="https://code.google.com/p/
|
||||
chromium/wiki/LinuxSandboxing"
|
||||
>multi-layer sandbox</a>,
|
||||
strong <a class="body-link" href="https://www.chromium.org/Home/chromium-security/
|
||||
site-isolation"
|
||||
strong <a class="body-link" href="https://www.chromium
|
||||
.org/Home/chromium-security/site-isolation"
|
||||
>site isolation</a>,
|
||||
<a class="body-link" href="https://www.chromium.org/Home/chromium-security/
|
||||
binding-integrity"
|
||||
<a class="body-link" href="https://www.chromium.org/
|
||||
Home/chromium-security/binding-integrity"
|
||||
>Binding Integrity</a> memory hardening, and
|
||||
<a class="body-link" href="https://www.chromium.org/developers/testing/
|
||||
control-flow-integrity/"
|
||||
<a class="body-link" href="https://www.chromium.org/
|
||||
developers/testing/control-flow-integrity/"
|
||||
>control-flow integrity (CFI)</a>.</td>
|
||||
<td class="table-main">Open source<br>
|
||||
<br>
|
||||
@ -472,63 +575,88 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Operating system</td>
|
||||
<td class="table-main"><img src="asset/img/logo-grapheneos.png"
|
||||
width="100px" height="100px"/><br>
|
||||
<td class="table-main"><img src="asset/img/logo-
|
||||
grapheneos.png" width="100px" height="100px"/><br>
|
||||
<br>
|
||||
GrapheneOS</td>
|
||||
<td><a class="body-link" href="https://grapheneos.org/"
|
||||
>GrapheneOS</a> is a security-hardened, privacy-hardened, secure-by-default
|
||||
Android-based operating system which implements extensive, systemic security and privacy
|
||||
hardening to the Android Open Source Project used as its base codebase. Its hardening
|
||||
includes closing gaps for apps to access sensitive system information, a secure app
|
||||
spawning feature which avoids sharing address space layout and other secrets AOSP's
|
||||
default Zygote app spawning model would share,
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/kernel_gs-gs101/"
|
||||
>GrapheneOS</a> is a security-hardened,
|
||||
privacy-hardened, secure-by-default, Android-based
|
||||
operating system which implements extensive, systemic
|
||||
security and privacy hardening to the Android Open
|
||||
Source Project used as its base codebase. Its hardening
|
||||
includes closing gaps for apps to access sensitive
|
||||
system information, a secure app spawning feature which
|
||||
avoids sharing address space layout and other secrets
|
||||
AOSP's default Zygote app spawning model would share,
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/kernel_gs-gs101/"
|
||||
>hardened kernel</a>, hardened memory allocator
|
||||
(<a class="body-link" href="https://github.com/GrapheneOS/hardened_malloc/"
|
||||
>hardened_malloc</a>) to protect against common memory corruption vulnerabilties,
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/platform_bionic/"
|
||||
(<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/hardened_malloc/"
|
||||
>hardened_malloc</a>) to protect against common memory
|
||||
corruption vulnerabilties,
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/platform_bionic/"
|
||||
>hardened Bionic standard C library</a>,
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/platform_system_sepolicy/"
|
||||
>stricter SELinux policies</a>, and local and remote hardware-backed attestation
|
||||
(<a class="body-link" href="https://attestation.app/about/"
|
||||
>Auditor</a>) to ensure the OS has not been corrupted or tampered with.<br>
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/platform_system_sepolicy/"
|
||||
>stricter SELinux policies</a>, and local and remote
|
||||
hardware-backed attestation
|
||||
(<a class="body-link" href="https://attestation.app/
|
||||
about/"
|
||||
>Auditor</a>) to ensure the OS has not been corrupted or
|
||||
tampered with.<br>
|
||||
<br>
|
||||
GrapheneOS only supports
|
||||
<a class="body-link" href="https://grapheneos.org/faq#device-support"
|
||||
>high security and well-supported devices</a> which receive full support from their
|
||||
manufacturers, including firmware updates, long support lifecycles, secure hardware, and
|
||||
overall high security practices.<br>
|
||||
<a class="body-link" href="https://grapheneos.org/faq
|
||||
#device-support"
|
||||
>high security and well-supported devices</a> which
|
||||
receive full support from their manufacturers, including
|
||||
firmware updates, long support lifecycles, secure
|
||||
hardware, and overall high security practices.<br>
|
||||
<br>
|
||||
For an extensive list of features GrapheneOS provides, visit its
|
||||
<a class="body-link" href="https://grapheneos.org/features/"
|
||||
>official features list</a> which provides extensive documentation.</td>
|
||||
For an extensive list of features GrapheneOS provides,
|
||||
visit its
|
||||
<a class="body-link" href="https://grapheneos.org/
|
||||
features/"
|
||||
>official features list</a> which provides extensive
|
||||
documentation.</td>
|
||||
<td class="table-main">Open source<br>
|
||||
<br>
|
||||
(MIT)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Web browser</td>
|
||||
<td class="table-main"><img src="asset/img/logo-vanadium.png"
|
||||
width="100px" height="100px"/><br>
|
||||
<td class="table-main"><img src="asset/img/logo-vanadium
|
||||
.png" width="100px" height="100px"/><br>
|
||||
<br>
|
||||
Vanadium</td>
|
||||
<td>Vanadium is a security-hardened, privacy-hardened Chromium-based web browser which
|
||||
utilises GrapheneOS' operating system hardening to implement stronger defenses to the
|
||||
already very secure Chromium web browser. Its hardening alongside Chromium's base
|
||||
<td>Vanadium is a security-hardened, privacy-hardened
|
||||
Chromium-based web browser which utilises GrapheneOS'
|
||||
operating system hardening to implement stronger
|
||||
defenses to the already very secure Chromium web
|
||||
browser. Its hardening alongside Chromium's base
|
||||
security features includes
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
||||
0081-Implement-UI-for-JIT-site-settings.patch"
|
||||
>disabling JavaScript just-in-time (JIT) compilation by default</a>,
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
||||
0051-stub-out-the-battery-status-API.patch"
|
||||
>stubbing out the battery status API to prevent abuse of it</a>, and
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
||||
0084-Toggle-for-navigating-external-URL-in-incognito.patch"
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/Vanadium/blob/13/patches/0081-Implement-UI-
|
||||
for-JIT-site-settings.patch"
|
||||
>disabling JavaScript just-in-time (JIT) compilation by
|
||||
default</a>,
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/Vanadium/blob/13/patches/0051-stub-out-the-
|
||||
battery-status-API.patch"
|
||||
>stubbing out the battery status API to prevent abuse of
|
||||
it</a>, and
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/Vanadium/blob/13/patches/0084-Toggle-for-
|
||||
navigating-external-URL-in-incognito.patch"
|
||||
>always-on Incognito mode as an option</a>.<br>
|
||||
<br>
|
||||
Vanadium's source code, including its Chromium patchset, can be found in its
|
||||
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/"
|
||||
Vanadium's source code, including its Chromium patchset,
|
||||
can be found in its
|
||||
<a class="body-link" href="https://github.com/
|
||||
GrapheneOS/Vanadium/"
|
||||
>official repository</a>.</td>
|
||||
<td class="table-main">Open source<br>
|
||||
<br>
|
||||
@ -536,51 +664,59 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Messenger</td>
|
||||
<td class="table-main"><img src="asset/img/logo-molly.png"
|
||||
width="100px" height="100px"><br>
|
||||
<td class="table-main"><img src="asset/img/logo-molly
|
||||
.png" width="100px" height="100px"><br>
|
||||
<br>
|
||||
Molly</td>
|
||||
<td><a class="body-link" href="https://molly.im/"
|
||||
>Molly</a> is a security-hardened, privacy-hardened
|
||||
<a class="body-link" href="https://signal.org/"
|
||||
>Signal</a> client which hardens Signal by using a variety of
|
||||
<a class="body-link" href="https://github.com/mollyim/mollyim-android#features"
|
||||
>Signal</a> client which hardens Signal by using a
|
||||
variety of
|
||||
<a class="body-link" href="https://github.com/mollyim/
|
||||
mollyim-android#features"
|
||||
>unique features</a>, allowing
|
||||
<a class="body-link" href="https://github.com/mollyim/mollyim-android/wiki/
|
||||
Data-Encryption-At-Rest"
|
||||
<a class="body-link" href="https://github.com/mollyim/
|
||||
mollyim-android/wiki/Data-Encryption-At-Rest"
|
||||
>locking the database when not in use</a>, and
|
||||
<a class="body-link" href="https://github.com/mollyim/mollyim-android/blob/
|
||||
a81ff7d120adc9d427be17239107343146bad704/app/src/main/java/org/thoughtcrime/securesms/
|
||||
crypto/MasterSecretUtil.java#L91"
|
||||
>utilising Android StrongBox</a> to protect user keys using the device's hardware
|
||||
security module.<br>
|
||||
<a class="body-link" href="https://github.com/mollyim/
|
||||
mollyim-android/blob/
|
||||
a81ff7d120adc9d427be17239107343146bad704/app/src/main/
|
||||
java/org/thoughtcrime/securesms/crypto/MasterSecretUtil
|
||||
.java#L91"
|
||||
>utilising Android StrongBox</a> to protect user keys
|
||||
using the device's hardware security module.<br>
|
||||
<br>
|
||||
Molly is available in
|
||||
<a class="body-link" href="https://github.com/mollyim/
|
||||
mollyim-android#free-and-open-source"
|
||||
>2 flavours</a>:<br>
|
||||
<ul>
|
||||
<li>Molly, which includes the same proprietary Google code as Signal to support
|
||||
more features.</li>
|
||||
<li>Molly, which includes the same
|
||||
proprietary Google code as Signal to
|
||||
support more features.</li>
|
||||
<br>
|
||||
<li>Molly-FOSS, which removes the proprietary Google code to provide an
|
||||
<li>Molly-FOSS, which removes the
|
||||
proprietary Google code to provide an
|
||||
entirely open-source client.</li>
|
||||
</ul></td>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="table-main">Open source<br>
|
||||
<br>
|
||||
(GPL-3.0-only)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="table-main">Messenger</td>
|
||||
<td class="table-main"><img src="asset/img/logo-conversations.png"
|
||||
width="100px" height="100px"><br>
|
||||
<td class="table-main"><img src="asset/img/logo-
|
||||
conversations.png" width="100px" height="100px"><br>
|
||||
<br>
|
||||
Conversations</td>
|
||||
<td><a class="body-link" href="https://conversations.im/"
|
||||
<td><a class="body-link" href="https://conversations
|
||||
.im/"
|
||||
>Conversations</a> is a well-designed Android
|
||||
<a class="body-link" href="https://xmpp.org/"
|
||||
>XMPP</a> client which serves as the de facto XMPP reference client and has great
|
||||
usability.</td>
|
||||
>XMPP</a> client which serves as the de facto XMPP
|
||||
reference client and has great usability.</td>
|
||||
<td class="table-main">Open source<br>
|
||||
<br>
|
||||
(GPL-3.0-only)</td>
|
||||
@ -589,6 +725,15 @@
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<h3 id="music"><a href="#music" class="h3"
|
||||
>Music</a></h3>
|
||||
<p>For a curated list of music I enjoy, visit my
|
||||
<a href="music.html" class="body-link"
|
||||
>music page</a>.</p>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Loading…
x
Reference in New Issue
Block a user