parent
bcb3b6cd75
commit
cdeeb241c4
695
about.xhtml
695
about.xhtml
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - About -->
|
||||
<!-- Version: 10.0.1 -->
|
||||
<!-- Version: 10.0.2-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -90,30 +90,21 @@
|
||||
<section id="about_me">
|
||||
<h2><a href="#about_me">About Me</a></h2>
|
||||
<img class="avatar" src="asset/img/avatar/inference.png" alt="My avatar."/>
|
||||
<p>I am Jake Winters, also known by my pseudonym
|
||||
"Inference", a security researcher based in United
|
||||
<p>I am Jake Winters, also known by my pseudonym "Inference", a security researcher based in United
|
||||
Kingdom.</p>
|
||||
<p>I am the founder, lead developer, and administrator, of
|
||||
Inferencium.</p>
|
||||
<p>All opinions are my own, and are not necessarily shared
|
||||
with projects or people I am affiliated with.</p>
|
||||
<p>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.</p>
|
||||
<p>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
|
||||
teachings were; it is how modern humanity survives and runs.
|
||||
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.</p>
|
||||
<p>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.</p>
|
||||
<p>I run multiple XMPP channels; a directory of channels can
|
||||
be found on the
|
||||
<p>I am the founder, lead developer, and administrator, of Inferencium.</p>
|
||||
<p>All opinions are my own, and are not necessarily shared with projects or people I am affiliated
|
||||
with.</p>
|
||||
<p>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.</p>
|
||||
<p>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 teachings were; it is
|
||||
how modern humanity survives and runs. 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.</p>
|
||||
<p>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.</p>
|
||||
<p>I run multiple XMPP channels; a directory of channels can be found on the
|
||||
<a href="https://inferencium.net/directory.xhtml">directory</a>
|
||||
webpage.</p>
|
||||
<p>If you wish to contact me for any reason, you can use my
|
||||
@ -123,14 +114,11 @@
|
||||
<h2><a href="#date_time">Date and Time</a></h2>
|
||||
<p>All dates and times across my services are
|
||||
<a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>-compliant.
|
||||
The short-form format <code>YYYY-MM-DD</code> is used for
|
||||
dates, and <code>hh:mm:ss</code> is used for times, with
|
||||
display of seconds being based on required level of
|
||||
accuracy. The full expression may be used when necessary;
|
||||
<code>YYYYMMDDThhmmssZ</code> (UTC without offset),
|
||||
<code>YYYYMMDDThhmmss+hhmm</code> (with positive offset), or
|
||||
<code>YYYYMMDDThhmmss-hhmm</code> (with negative
|
||||
offset).</p>
|
||||
The short-form format <code>YYYY-MM-DD</code> is used for dates, and <code>hh:mm:ss</code> is used
|
||||
for times, with display of seconds being based on required level of accuracy. The full expression
|
||||
may be used when necessary; <code>YYYYMMDDThhmmssZ</code> (UTC without offset),
|
||||
<code>YYYYMMDDThhmmss+hhmm</code> (with positive offset), or <code>YYYYMMDDThhmmss-hhmm</code> (with
|
||||
negative offset).</p>
|
||||
</section>
|
||||
<section id="languages">
|
||||
<h2><a href="#languages">Languages</a></h2>
|
||||
@ -145,100 +133,69 @@
|
||||
languages whenever possible.</p>
|
||||
<section id="languages-markup-xhtml">
|
||||
<h4><a href="#languages-markup-xhtml">XHTML</a></h4>
|
||||
<p>XHTML is preferred for most content
|
||||
due to its HTML-based design and syntax,
|
||||
with advantages over HTML, including
|
||||
strict parsing checks which assist with
|
||||
achieving code-correctness, and being
|
||||
XML-compliant to allow widespread usage
|
||||
even outside of the intended HTML-based
|
||||
use case.</p>
|
||||
<p>HTML has multiple flaws, including
|
||||
allowing broken code to be loaded in the
|
||||
user's web browser, not informing the
|
||||
developer of broken code or mismatching
|
||||
tags, and using non-standard, highly
|
||||
permissive syntax which is
|
||||
non-portable. XHTML mitigates or
|
||||
completely fixes these issues via
|
||||
its XML namespace.</p>
|
||||
<p>XHTML is preferred for most content due to its HTML-based design and syntax, with
|
||||
advantages over HTML, including strict parsing checks which assist with achieving
|
||||
code-correctness, and being XML-compliant to allow widespread usage even outside of
|
||||
the intended HTML-based use case.</p>
|
||||
<p>HTML has multiple flaws, including allowing broken code to be loaded in the
|
||||
user's web browser, not informing the developer of broken code or mismatching tags,
|
||||
and using non-standard, highly-permissive syntax which is non-portable. XHTML
|
||||
mitigates or completely fixes these issues via its XML namespace.</p>
|
||||
</section>
|
||||
<section id="languages-markup-asciidoc">
|
||||
<h4><a href="#languages-markup-asciidoc">AsciiDoc</a></h4>
|
||||
<p>AsciiDoc is used when portability is
|
||||
a concern, as it allows easy conversion
|
||||
to other file formats, including HTML
|
||||
and PDF. AsciiDoc can also be read
|
||||
as-is, due to it having clean markup and
|
||||
high readability when viewed as
|
||||
plaintext.</p>
|
||||
<p>AsciiDoc is used when portability is a concern, as it allows easy conversion to
|
||||
other file formats, including HTML and PDF. AsciiDoc can also be read as-is, due to
|
||||
it having clean markup and high readability when viewed as plaintext.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="languages-programming">
|
||||
<h3><a href="#languages-programming">Programming</a></h3>
|
||||
<p>The following programming languages are used in my code, with
|
||||
rationale provided for the usage of each language.</p>
|
||||
<p>Note that derivations of non-Inferencium codebases, such as
|
||||
forks, may not contain the programming languages listed here due
|
||||
to the work involved in replacing all code, but will be
|
||||
rewritten whenever possible, and new code will be written in my
|
||||
preferred languages whenever possible.</p>
|
||||
<p>The following programming languages are used in my code, with rationale provided for the
|
||||
usage of each language.</p>
|
||||
<p>Note that derivations of non-Inferencium codebases, such as forks, may not contain the
|
||||
programming languages listed here due to the work involved in replacing all code, but will
|
||||
be rewritten whenever possible, and new code will be written in my preferred languages
|
||||
whenever possible.</p>
|
||||
<section id="languages-programming-rust">
|
||||
<h4><a href="#languages-programming-rust">Rust</a></h4>
|
||||
<p>Rust is a partially object-oriented
|
||||
programming language with a focus on
|
||||
security and performance. It has strict
|
||||
compile-time checks to verify the
|
||||
memory-safety and thread-safety of code,
|
||||
is memory-efficient, has no garbage
|
||||
collection, is highly portable, has
|
||||
great support for integration with other
|
||||
languages, and is suitable for both
|
||||
high-level and low-level code.</p>
|
||||
<p>Rust is the modern replacement for
|
||||
C++.</p>
|
||||
<p>Rust is a partially object-oriented programming language with a focus on security
|
||||
and performance. It has strict compile-time checks to verify the memory-safety and
|
||||
thread-safety of code, is memory-efficient, has no garbage collection, is highly
|
||||
portable, has great support for integration with other languages, and is suitable
|
||||
for both high-level and low-level code.</p>
|
||||
<p>Rust is the modern replacement for C++.</p>
|
||||
</section>
|
||||
<section id="languages-programming-go">
|
||||
<h4><a href="#languages-programming-go">Go</a></h4>
|
||||
<p>Go is a functional programming
|
||||
language with a focus on performance. It
|
||||
is easy to use, has garbage collection,
|
||||
allows clean codebases, and is suitable
|
||||
for high-level code.</p>
|
||||
<p>Go is the modern replacement for
|
||||
C.</p>
|
||||
<p>Go is a functional programming language with a focus on performance. It is easy
|
||||
to use, has garbage collection, allows clean codebases, and is suitable for
|
||||
high-level code.</p>
|
||||
<p>Go is the modern replacement for C.</p>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section id="licensing">
|
||||
<h2><a href="#licensing">Licensing</a></h2>
|
||||
<p>I care about upstreaming and sharing code, strongly
|
||||
preferring licenses which have high license compatibility in
|
||||
order to permit sharing code with as many other projects as
|
||||
possible; for this reason, permissive licenses are my
|
||||
preferred choice, while avoiding copyleft licenses and other
|
||||
licenses which place restrictions on how my code may be
|
||||
used, and prevent me from including important proprietary
|
||||
code, such as firmware, which can patch security
|
||||
vulnerabilities, privacy issues, and stability issues.</p>
|
||||
<p>All of my code is and will be permissively licensed
|
||||
unless specific circumstances make it impractical or
|
||||
infeasible to do so. My goal is to share code which has the
|
||||
least amount of restrictions as possible, to allow wider
|
||||
propagation of my code and allow more use cases and
|
||||
possibilities, as well as ensuring proprietary code,
|
||||
whenever required, is permitted to be included and/or linked
|
||||
to.</p>
|
||||
<p>I care about upstreaming and sharing code, strongly preferring licenses which have high license
|
||||
compatibility in order to permit sharing code with as many other projects as possible; for this
|
||||
reason, permissive licenses are mypreferred choice, while avoiding copyleft licenses and other
|
||||
licenses which place restrictions on how my code may be used, and prevent me from including
|
||||
important proprietary code, such as firmware, which can patch security vulnerabilities, privacy
|
||||
issues, and stability issues.</p>
|
||||
<p>All of my code is and will be permissively-licensed unless specific circumstances make it
|
||||
impractical or infeasible to do so. My goal is to share code which has the least amount of
|
||||
restrictions as possible, to allow wider propagation of my code and allow more use cases and
|
||||
possibilities, as well as ensuring proprietary code, whenever required, is permitted to be included
|
||||
and/or linked to.</p>
|
||||
<p><a href="https://iso.org/standard/81870.html">ISO 5962:2021</a>
|
||||
is used for licensing, in the format
|
||||
<code>SPDX-License-Identifier: <var><license></var></code>;
|
||||
see the
|
||||
<code>SPDX-License-Identifier: <var><license></var></code>; see the
|
||||
<a href="https://spdx.org/licenses/">SPDX License List</a>
|
||||
for the full list of available licenses under this
|
||||
standard.</p>
|
||||
<p>My preferred licenses and rationale for using them are
|
||||
below; any licenses not listed are chosen on a case-by-case
|
||||
basis.</p>
|
||||
<p>My preferred licenses and rationale for using them are below; any licenses not listed are chosen
|
||||
on a case-by-case basis.</p>
|
||||
<section id="licensing-code">
|
||||
<h3><a href="#licensing-code">Code</a></h3>
|
||||
<section id="licensing-code-bsd3clause">
|
||||
@ -246,17 +203,11 @@
|
||||
<p><b>SPDX License Identifier:</b> <code>BSD-3-Clause</code></p>
|
||||
<p><b>Type: Permissive</b></p>
|
||||
<p><a href="https://spdx.org/licenses/BSD-3-Clause.html">BSD 3-Clause 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
|
||||
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.</p>
|
||||
</section>
|
||||
<section id="licensing-code-gpl2.0only">
|
||||
@ -264,31 +215,18 @@
|
||||
<p><b>SPDX License Identifier:</b> <code>GPL-2.0-only</code></p>
|
||||
<p><b>Type: Copyleft</b></p>
|
||||
<p><a href="https://spdx.org/licenses/GPL-2.0-only.html">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.</p>
|
||||
<p>Due to the restrictive and invasive
|
||||
nature of this license, it is avoided
|
||||
unless such restrictions would be
|
||||
beneficial to my code; whenever this is
|
||||
the case, the GNU General Public License
|
||||
v2.0 will be used, rather than the more
|
||||
restrictive
|
||||
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.</p>
|
||||
<p>Due to the restrictive and invasive nature of this license, it is avoided unless
|
||||
such restrictions would be beneficial to my code; whenever this is the case, the GNU
|
||||
General Public License v2.0 will be used, rather than the more restrictive
|
||||
<a href="https://spdx.org/licenses/GPL-3.0-only.html">GNU General Public License v3.0</a>,
|
||||
and relicensing derivatives under the
|
||||
GNU General Public License v3.0 will be
|
||||
and relicensing derivatives under the GNU General Public License v3.0 will be
|
||||
disallowed.</p>
|
||||
</section>
|
||||
</section>
|
||||
@ -299,24 +237,18 @@
|
||||
<p><b>SPDX License Identifier:</b> <code>CC-BY-4.0</code></p>
|
||||
<p><b>Type: Permissive</b></p>
|
||||
<p><a href="https://spdx.org/licenses/CC-BY-4.0.html">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>
|
||||
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>
|
||||
</section>
|
||||
</section>
|
||||
<section id="licensing-open_source_vs_free_software">
|
||||
<h3><a href="#licensing-open_source_vs_free_software">Do I Distinguish Between Open Source and Free Software?</a></h3>
|
||||
<p>No. If code is not released under an open-source
|
||||
license and places restrictions on how the code may be
|
||||
used, it is either source-available (if viewing the code
|
||||
is permitted) or proprietary. "Free software" only
|
||||
causes confusion and exists to push an ideology by a
|
||||
specific group of people. If software isn't "free", it's
|
||||
not open-source, either.</p>
|
||||
<p>No. If code is not released under an open-source license and places restrictions on how
|
||||
the code may be used, it is either source-available (if viewing the code is permitted) or
|
||||
proprietary. "Free software" only causes confusion and exists to push an ideology by a
|
||||
specific group of people. If software isn't "free", it's not open-source, either.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="versioning">
|
||||
@ -325,131 +257,105 @@
|
||||
<h3><a href="#versioning-numbering_scheme">What is the Numbering Scheme?</a></h3>
|
||||
<p>All code uses
|
||||
<a href="https://semver.org">Semantic Versioning</a>.
|
||||
The numbering scheme divided into 3 blocks (herein referred to
|
||||
as Block 0, Block 1, and Block 2, in left-to-right order); the
|
||||
version blocks are separated by periods. When a version number
|
||||
block is incremented, all blocks to the right of it are reset to
|
||||
0. The legacy versioning scheme was a similar numerical
|
||||
versioning scheme which lacked standardisation.</p>
|
||||
<p>Block 0 contains the <code><var>MAJOR</var></code> version;
|
||||
this number is incremented whenever an API-incompatible change
|
||||
is made to the code.</p>
|
||||
<p>Block 1 contains the <code><var>MINOR</var></code> version;
|
||||
this number is incremented whenever an API-compatible,
|
||||
substantial change is made to the code, such as adding a
|
||||
The numbering scheme is divided into 3 blocks (herein referred to as Block 0, Block 1, and
|
||||
Block 2, in left-to-right order); the version blocks are separated by periods. When a
|
||||
version number block is incremented, all blocks to the right of it are reset to 0. The
|
||||
legacy versioning scheme was a similar numerical versioning scheme which lacked
|
||||
standardisation.</p>
|
||||
<p>Block 0 contains the <code><var>MAJOR</var></code> version; this number is incremented
|
||||
whenever an API-incompatible change is made to the code.</p>
|
||||
<p>Block 1 contains the <code><var>MINOR</var></code> version; this number is incremented
|
||||
whenever an API-compatible, substantial change is made to the code, such as adding a
|
||||
feature.</p>
|
||||
<p>Block 2 contains the <code><var>PATCH</var></code> version;
|
||||
this number is incremented whenever an API-compatible,
|
||||
unsubstantial change is made to the code, such as fixing or
|
||||
<p>Block 2 contains the <code><var>PATCH</var></code> version; this number is incremented
|
||||
whenever an API-compatible, unsubstantial change is made to the code, such as fixing or
|
||||
optimising the code.</p>
|
||||
<p>Development and pre-release versions are suffixed with
|
||||
a hyphen, followed by their phase, a period, then the version of
|
||||
that phase; for example, <code>-alpha.<var>n</var></code> for an
|
||||
alpha version, <code>-beta.<var>n</var></code> for a beta
|
||||
version, and <code>-rc.<var>n</var></code> for a release
|
||||
candidate version, with <code><var>n</var></code> being a
|
||||
non-negative integer. Stable versions have no suffix.</p>
|
||||
<p>Development and pre-release versions are suffixed with a hyphen, followed by their phase,
|
||||
a period, then the version of that phase; for example, <code>-alpha.<var>n</var></code> for
|
||||
an alpha version, <code>-beta.<var>n</var></code> for a beta version, and
|
||||
<code>-rc.<var>n</var></code> for a release candidate version, with
|
||||
<code><var>n</var></code> being a non-negative integer. Stable versions have no suffix.</p>
|
||||
</section>
|
||||
<section id="versioning-phases">
|
||||
<h3><a href="#versioning-phases">What Are the Phases?</a></h3>
|
||||
<p>There are 4 phases of development. Each phase typically has
|
||||
its own branch in each source code repository. The phases are as
|
||||
follows:</p>
|
||||
<p>There are 4 phases of development. Each phase typically has its own branch in each source
|
||||
code repository. The phases are as follows:</p>
|
||||
<ol>
|
||||
<li>Alpha: Pre-alpha development and alpha testing
|
||||
occurs in this phase. Features are added, modified,
|
||||
and/or removed. Fixes and optimisations may also occur
|
||||
if they are caught during this phase. This is where the
|
||||
majority of changes occur and where the fine-grained
|
||||
commits can be found. Breakage is highly likely within
|
||||
this phase as it makes no attempt to be stable or usable
|
||||
due to being where the most rapid development occurs.
|
||||
Code is tested internally in a fine-grained manner and
|
||||
is moved to the next phase only when it is deemed
|
||||
feature-complete and reasonably stable for broader
|
||||
public testing. If you would like to assist in testing
|
||||
code in this phase, you must use the code and/or tags
|
||||
from the source code repositories due to it not being
|
||||
available publicly outside of them.</li>
|
||||
<li>Beta: Feature-complete testing occurs in this phase.
|
||||
Only bug fixes and optimisations occur in this phase,
|
||||
such as stability and security fixes. This phase is
|
||||
classified as stable enough for broad public testing and
|
||||
is made available publicly in many cases without having
|
||||
to use the source code repositories. Since this phase
|
||||
contains only feature-complete code, no features will be
|
||||
added, modified, or removed in this phase.</li>
|
||||
<li>Release candidate (RC): Feature-complete testing
|
||||
occurs in this phase. Code in the RC phase is often
|
||||
stable enough for production usage, but is not yet
|
||||
completely acceptable to be classified as stable by my
|
||||
standards. This phase is often skipped due to most bugs
|
||||
being caught in the beta phase, but will be used should
|
||||
the need arise for finer-grained testing beyond what the
|
||||
beta phase can provide. Like the beta phase, code in
|
||||
this phase is available publicly without requiring usage
|
||||
of the source code repositories.</li>
|
||||
<li>Stable: Feature-complete and well-tested code is
|
||||
moved to this phase. Code in this phase is deemed to be
|
||||
stable enough for production usage and full support is
|
||||
<li>Alpha: Pre-alpha development and alpha testing occurs in this phase. Features
|
||||
are added, modified, and/or removed. Fixes and optimisations may also occur if they
|
||||
are caught during this phase. This is where the majority of changes occur and where
|
||||
the fine-grained commits can be found. Breakage is highly likely within this phase
|
||||
as it makes no attempt to be stable or usable due to being where the most rapid
|
||||
development occurs. Code is tested internally in a fine-grained manner and is moved
|
||||
to the next phase only when it is deemed feature-complete and reasonably stable for
|
||||
broader public testing. If you would like to assist in testing code in this phase,
|
||||
you must use the code and/or tags from the source code repositories due to it not
|
||||
being available publicly outside of them.</li>
|
||||
<li>Beta: Feature-complete testing occurs in this phase. Only bug fixes and
|
||||
optimisations occur in this phase, such as stability and security fixes. This phase
|
||||
is classified as stable enough for broad public testing and is made available
|
||||
publicly in many cases without having to use the source code repositories. Since
|
||||
this phase contains only feature-complete code, no features will be added, modified,
|
||||
or removed in this phase.</li>
|
||||
<li>Release candidate (RC): Feature-complete testing occurs in this phase. Code in
|
||||
the RC phase is often stable enough for production usage, but is not yet completely
|
||||
acceptable to be classified as stable by my standards. This phase is often skipped
|
||||
due to most bugs being caught in the beta phase, but will be used should the need
|
||||
arise for finer-grained testing beyond what the beta phase can provide. Like the
|
||||
beta phase, code in this phase is available publicly without requiring usage of the
|
||||
source code repositories.</li>
|
||||
<li>Stable: Feature-complete and well-tested code is moved to this phase. Code in
|
||||
this phase is deemed to be stable enough for production usage and full support is
|
||||
provided.</li>
|
||||
</ol>
|
||||
<p>When development of a new version has begun, the code within
|
||||
the alpha phase is rebased onto the most recent code from the
|
||||
stable phase before work commences. This cycle continues for the
|
||||
lifetime of the code.</p>
|
||||
<p>When development of a new version has begun, the code within the alpha phase is rebased
|
||||
onto the most recent code from the stable phase before work commences. This cycle continues
|
||||
for the lifetime of the code.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="services">
|
||||
<h2><a href="#services">Services</a></h2>
|
||||
<p>This list contains the policies and practices of my services.</p>
|
||||
<p>My policies and practices are heavily security- and privacy-focused, with
|
||||
improvements made on an ongoing basis as new technologies, protocols, and
|
||||
software become available.</p>
|
||||
<p>My policies and practices are heavily security- and privacy-focused, with improvements made on an
|
||||
ongoing basis as new technologies, protocols, and software become available.</p>
|
||||
<h3 id="services-websites"><a href="#services-websites">Websites</a></h3>
|
||||
<ul>
|
||||
<li>Unnecessary logging avoided (only logs required for security
|
||||
and debugging purposes)</li>
|
||||
<li>Unnecessary logging avoided (only logs required for security and debugging
|
||||
purposes)</li>
|
||||
<li>All server logs purged every 14 days</li>
|
||||
<li>User IP addresses used only for security and debugging
|
||||
purposes (purged along with logs)</li>
|
||||
<li>User IP addresses used only for security and debugging purposes (purged along with
|
||||
logs)</li>
|
||||
<li>All connections made via
|
||||
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3">TLS 1.3</a>
|
||||
only to ensure the most secure
|
||||
<a href="https://en.wikipedia.org/wiki/Authenticated_encryption">AEAD</a>
|
||||
ciphers are used, along with
|
||||
<a href="https://en.wikipedia.org/wiki/Forward_secrecy">forward secrecy</a></li>
|
||||
<li>All connections made via high-security AEAD ciphers,
|
||||
preferring AES-256-GCM for devices with AES
|
||||
hardware acceleration, and ChaCha20-Poly1305 for devices without
|
||||
AES hardware acceleration, with AES-128-GCM as a fallback
|
||||
(AES-128-GCM is mandated for TLS 1.3 by
|
||||
<li>All connections made via high-security AEAD ciphers, preferring AES-256-GCM for
|
||||
devices with AES hardware acceleration, and ChaCha20-Poly1305 for devices without AES
|
||||
hardware acceleration, with AES-128-GCM as a fallback (AES-128-GCM is mandated for TLS
|
||||
1.3 by
|
||||
<a href="https://datatracker.ietf.org/doc/rfc8446#section-9.1">IETF RFC8446 section 9.1</a>)</li>
|
||||
<li>All connections are made via high-security key exchange
|
||||
protocols, preferring X25519, with secp256r1 as a fallback
|
||||
(secp256r1 is mandated for TLS 1.3 by IETF RFC8446 section
|
||||
9.1)</li>
|
||||
<li>All connections are made via high-security key exchange protocols, preferring
|
||||
X25519, with secp256r1 as a fallback (secp256r1 is mandated for TLS 1.3 by IETF RFC8446
|
||||
section 9.1)</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions">Domain Name System Security Extensions (DNSSEC)</a>
|
||||
enabled to provide a root-of-trust for encryption and
|
||||
authentication for domain and server configuration</li>
|
||||
enabled to provide a root-of-trust for encryption and authentication for domain and
|
||||
server configuration</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/DNS_Certification_Authority_Authorization">Certification Authority Authorization (CAA)</a>
|
||||
records enabled to prevent all certificate authorities other
|
||||
than
|
||||
records enabled to prevent all certificate authorities other than
|
||||
<a href="https://letsencrypt.org/">Let's Encrypt</a> from
|
||||
issuing TLS certificates for my domains</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/SSHFP_record">Secure Shell fingerprint (SSHFP)</a>
|
||||
records enabled to provide a DNS-based root-of-trust for SSH
|
||||
connections to my domains</li>
|
||||
<li>Referrer headers disabled to prevent knowing where a user
|
||||
was redirected from</li>
|
||||
<li>All content sourced from my own domains, with third-party
|
||||
content prohibited via
|
||||
records enabled to provide a DNS-based root-of-trust for SSH connections to my
|
||||
domains</li>
|
||||
<li>Referrer headers disabled to prevent knowing where a user was redirected from</li>
|
||||
<li>All content sourced from my own domains, with third-party content prohibited via
|
||||
<a href="https://en.wikipedia.org/wiki/Content_Security_Policy">Content Security Policy</a>
|
||||
configuration</li>
|
||||
<li>All servers physically under my control (no VPS or other
|
||||
hosting providers)</li>
|
||||
<li>No proprietary services, ensuring I have complete control
|
||||
over my services, and vendor lock-in does not occur</li>
|
||||
<li>All servers physically under my control (no VPS or other hosting providers)</li>
|
||||
<li>No proprietary services, ensuring I have complete control over my services, and
|
||||
vendor lock-in does not occur</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="recommendations">
|
||||
@ -480,102 +386,78 @@
|
||||
<th id="hardware-smartphone-smartphone">Smartphone</th>
|
||||
<th id ="google-pixel" headers="hardware hardware-smartphone-smartphone">
|
||||
<img src="asset/img/google-pixel_8_pro.png" width="100" height="100" alt="Front and rear view of a Google Pixel 8 Pro in Obsidian colour"/><br/>
|
||||
Google Pixel
|
||||
</th>
|
||||
Google Pixel</th>
|
||||
<td class="desc" headers="hardware-description google-pixel">
|
||||
<h5>Security/Privacy</h5>
|
||||
<p>Google Pixel devices are the best
|
||||
Android devices available on the market
|
||||
for
|
||||
<p>Google Pixel devices are the best Android devices
|
||||
available on the market for
|
||||
<a href="https://security.googleblog.com/2021/10/pixel-6-setting-new-standard-for-mobile.html">security and privacy</a>.</p>
|
||||
<p>They allow locking the bootloader
|
||||
with a
|
||||
<p>They allow locking the bootloader with a
|
||||
<a 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
|
||||
in order to preserve security and privacy features when
|
||||
installing a custom operating system, such as
|
||||
<a 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
|
||||
which verifies that the OS has not been corrupted or tampered with, and
|
||||
<a 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
|
||||
which prevents an adversary from rolling back the OS or
|
||||
firmware version to a previous version with known security
|
||||
vulnerabilities.</p>
|
||||
<p>They also include a
|
||||
<a href="https://developer.android.com/training/articles/keystore#HardwareSecurityModule">hardware security module</a>
|
||||
(Titan M2, improving on the previous
|
||||
generation
|
||||
(Titan M2, improving on the previous generation
|
||||
<a 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
|
||||
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 href="https://source.android.com/docs/security/best-practices/hardware#strongbox-keymaster">Android StrongBox Keymaster</a>,
|
||||
a
|
||||
<a 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
|
||||
containing sensitive user keys which are unavailable to the
|
||||
OS or apps running on it without authorisation from Titan M2
|
||||
itself.
|
||||
<a 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.</p>
|
||||
<p>Google Pixel device kernels are
|
||||
compiled with
|
||||
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.</p>
|
||||
<p>Google Pixel device kernels are compiled with
|
||||
<a href="https://android-developers.googleblog.com/2018/10/control-flow-integrity-in-android-kernel.html">forward-edge control-flow integrity</a>
|
||||
and
|
||||
<a 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
|
||||
to prevent code reuse attacks against the kernel. MAC
|
||||
address randomisation is
|
||||
<a 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>.</p>
|
||||
<p>Google releases
|
||||
<a 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.</p>
|
||||
<p>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
|
||||
ensuring Google Pixel devices are up-to-date and quickly
|
||||
protected against security vulnerabilities.</p>
|
||||
<p>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 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
|
||||
System-on-Chip includes Tensor Security
|
||||
Core, further improving device
|
||||
security.</p>
|
||||
the highest level of vulnerability assessment. Google's
|
||||
in-house Tensor System-on-Chip includes Tensor Security
|
||||
Core, further improving device security.</p>
|
||||
<p>Pixel 8-series includes Armv9's
|
||||
<a href="https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/enhanced-security-through-mte">Memory Tagging Extension</a>,
|
||||
which dramatically increases device
|
||||
security by eliminating up to 95% of all
|
||||
security issues caused by
|
||||
which dramatically increases device security by eliminating
|
||||
up to 95% of all security issues caused by
|
||||
memory-unsafety.</p>
|
||||
<h5>Support</h5>
|
||||
<p>Pixel 5a is supported for a
|
||||
<a href="https://support.google.com/nexus/answer/4457705#zippy=%2Cpixel-a-g-pixel-pixel-a-g-pixel-a-pixel-xl-pixel">minimum of 3 years from launch</a>.</p>
|
||||
<p>Pixel 6-series, Pixel 7-series, Pixel
|
||||
Fold, and Pixel Tablet are supported for
|
||||
a
|
||||
<p>Pixel 6-series, Pixel 7-series, Pixel Fold, and Pixel
|
||||
Tablet are supported for a
|
||||
<a href="https://support.google.com/nexus/answer/4457705#zippy=%2Cpixel-a-pixel-pixel-pro-pixel-a-pixel-pixel-pro-pixel-fold">minimum of 5 years from launch</a>.</p>
|
||||
<p>Pixel 8-series is supported for a
|
||||
<a href="https://support.google.com/nexus/answer/4457705#zippy=%2Cpixel-pro">minimum of 7 years from launch</a>.</p>
|
||||
</td>
|
||||
<td headers="hardware-smartphone-source_model google-pixel">
|
||||
</td>
|
||||
<td headers="hardware-smartphone-source_model google-pixel"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -608,50 +490,41 @@
|
||||
<th id="software-pc-os">Operating system</th>
|
||||
<th id="gentoo_linux" headers="software-pc software-pc-os">
|
||||
<img src="asset/img/logo/gentoo_linux.png" width="100" height="100" alt="Gentoo Linux logo"/><br/>
|
||||
Gentoo Linux
|
||||
</th>
|
||||
Gentoo Linux</th>
|
||||
<td class="desc" headers="software-pc-description gentoo_linux">
|
||||
<p><a 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.</p>
|
||||
<p>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
|
||||
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.</p>
|
||||
<p>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 href="https://en.wikipedia.org/wiki/Buffer_overflow_protection">stack protection</a>,
|
||||
<a href="https://en.wikipedia.org/wiki/Integer_overflow">signed integer overflow trapping</a>,
|
||||
and GrapheneOS'
|
||||
<a href="https://github.com/GrapheneOS/hardened_malloc/">hardened_malloc</a>
|
||||
memory allocator.</p>
|
||||
<p>You can find my Gentoo Linux configurations
|
||||
in my
|
||||
<p>You can find my Gentoo Linux configurations in my
|
||||
<a href="https://src.inferencium.net/Inferencium/cfg/">configuration respository</a>.</p>
|
||||
</td>
|
||||
<td headers="software-pc-source_model gentoo_linux">
|
||||
Open-source<br/>
|
||||
(GPL-2.0-only)
|
||||
</td>
|
||||
(GPL-2.0-only)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="software-web_browser">Web browser</th>
|
||||
<th id="chromium" headers="software-pc software-web_browser">
|
||||
<img src="asset/img/logo/chromium.png" width="100" height="100" alt="Chromium logo"/><br/>
|
||||
Chromium
|
||||
</th>
|
||||
Chromium</th>
|
||||
<td class="desc" headers="software-pc-description chromium">
|
||||
<p><a 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
|
||||
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 href="https://www.chromium.org/Home/chromium-security/brag-sheet/">security brag sheet</a>.
|
||||
Chromium's security features include a strong
|
||||
<a href="https://code.google.com/p/chromium/wiki/LinuxSandboxing">multi-layer sandbox</a>,
|
||||
@ -659,11 +532,11 @@
|
||||
<a href="https://www.chromium.org/Home/chromium-security/site-isolation">site isolation</a>,
|
||||
<a href="https://www.chromium.org/Home/chromium-security/binding-integrity">Binding Integrity</a>
|
||||
memory hardening, and
|
||||
<a href="https://www.chromium.org/developers/testing/control-flow-integrity/">control-flow integrity (CFI)</a>.</p></td>
|
||||
<a href="https://www.chromium.org/developers/testing/control-flow-integrity/">control-flow integrity (CFI)</a>.</p>
|
||||
</td>
|
||||
<td headers="software-pc-source_model chromium">
|
||||
Open-source<br/>
|
||||
(BSD-3-Clause)
|
||||
</td>
|
||||
(BSD-3-Clause)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -693,146 +566,125 @@
|
||||
<th id="software-smartphone-os">Operating system</th>
|
||||
<th id="grapheneos" headers="software-smartphone software-smartphone-os">
|
||||
<img src="asset/img/logo/grapheneos.png" width="100" height="100" alt="GrapheneOS logo"/><br/>
|
||||
GrapheneOS
|
||||
</th>
|
||||
GrapheneOS</th>
|
||||
<td class="desc" headers="software-smartphone-description grapheneos">
|
||||
<p><a 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.</p>
|
||||
<p>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,
|
||||
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.</p>
|
||||
<p>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 href="https://github.com/GrapheneOS/kernel_gs-gs101/">hardened kernel</a>,
|
||||
hardened memory allocator
|
||||
(<a href="https://github.com/GrapheneOS/hardened_malloc/">hardened_malloc</a>)
|
||||
to protect against common memory corruption
|
||||
vulnerabilities,
|
||||
to protect against common memory corruption vulnerabilities,
|
||||
<a href="https://github.com/GrapheneOS/platform_bionic/">hardened Bionic standard C library</a>,
|
||||
<a href="https://github.com/GrapheneOS/platform_system_sepolicy/">stricter SELinux policies</a>,
|
||||
and local and remote hardware-backed attestation
|
||||
(<a href="https://attestation.app/about/">Auditor</a>)
|
||||
to ensure the OS has not been corrupted or
|
||||
tampered with.</p>
|
||||
to ensure the OS has not been corrupted or tampered with.</p>
|
||||
<p>GrapheneOS only supports
|
||||
<a 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.</p>
|
||||
<p>For an extensive list of features GrapheneOS
|
||||
provides, visit its
|
||||
which receive full support from their manufacturers, including
|
||||
firmware updates, long support lifecycles, secure hardware, and
|
||||
overall high-security practices.</p>
|
||||
<p>For an extensive list of features GrapheneOS provides, visit
|
||||
its
|
||||
<a href="https://grapheneos.org/features/">official features list</a>
|
||||
which provides extensive documentation.</p>
|
||||
</td>
|
||||
<td headers="software-smartphone-source_model grapheneos">
|
||||
Open-source<br/>
|
||||
(MIT)
|
||||
</td>
|
||||
(MIT)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="software-smartphone-web_browser">Web browser</th>
|
||||
<th id="vanadium" headers="software-smartphone software-smartphone-web_browser">
|
||||
<img src="asset/img/logo/vanadium.png" width="100" height="100" alt="Vanadium logo"/><br/>
|
||||
Vanadium
|
||||
</th>
|
||||
Vanadium</th>
|
||||
<td class="desc" headers="software-smartphone-description vanadium">
|
||||
<p>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.</p>
|
||||
<p>Its hardening alongside Chromium's base
|
||||
security features includes
|
||||
<p>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.</p>
|
||||
<p>Its hardening alongside Chromium's base security features
|
||||
includes
|
||||
<a 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 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 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>.</p>
|
||||
<p>Vanadium's source code, including its Chromium
|
||||
patch-set, can be found in its
|
||||
<p>Vanadium's source code, including its Chromium patch-set, can
|
||||
be found in its
|
||||
<a href="https://github.com/GrapheneOS/Vanadium/">official repository</a>.</p>
|
||||
</td>
|
||||
<td headers="software-smartphone-source_model vanadium">
|
||||
Open-source<br/>
|
||||
(GPL-2.0-only)
|
||||
</td>
|
||||
(GPL-2.0-only)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2" id="software-smartphone-messenger">Messenger</th>
|
||||
<th id="molly" headers="software-smartphone software-smartphone-messenger">
|
||||
<img src="asset/img/logo/molly.png" width="100" height="100" alt="Molly logo"/><br/>
|
||||
Molly
|
||||
</th>
|
||||
Molly</th>
|
||||
<td class="desc" headers="software-smartphone-description molly">
|
||||
<p><a href="https://molly.im/">Molly</a>
|
||||
is a security-hardened, privacy-hardened
|
||||
<a href="https://signal.org/">Signal</a>
|
||||
client which hardens Signal by using a variety
|
||||
of
|
||||
client which hardens Signal by using a variety of
|
||||
<a href="https://github.com/mollyim/mollyim-android#features">unique features</a>,
|
||||
allowing
|
||||
<a href="https://github.com/mollyim/mollyim-android/wiki/Data-Encryption-At-Rest">locking the database when not in use</a>,
|
||||
and
|
||||
<a 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.</p>
|
||||
to protect user keys using the device's hardware security
|
||||
module.</p>
|
||||
<p>Molly is available in
|
||||
<a href="https://github.com/mollyim/mollyim-android#free-and-open-source">2 flavours</a>:</p>
|
||||
<ul>
|
||||
<li>Molly, which includes the same
|
||||
proprietary Google code as Signal to
|
||||
support more features</li>
|
||||
<li>Molly-FOSS, which removes the
|
||||
proprietary Google code to provide an
|
||||
entirely open-source client</li>
|
||||
<li>Molly, which includes the same proprietary Google
|
||||
code as Signal to support more features</li>
|
||||
<li>Molly-FOSS, which removes the proprietary Google
|
||||
code to provide an entirely open-source client</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td headers="software-smartphone-source_model molly">
|
||||
Open-source<br/>
|
||||
(GPL-3.0-only)
|
||||
</td>
|
||||
(GPL-3.0-only)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="conversations" headers="software-smartphone software-smartphone-messenger">
|
||||
<img src="asset/img/logo/conversations.png" width="100" height="100" alt="Conversations logo"/><br/>
|
||||
Conversations
|
||||
</th>
|
||||
Conversations</th>
|
||||
<td class="desc" headers="software-smartphone-description conversations">
|
||||
<p><a href="https://conversations.im/">Conversations</a>
|
||||
is a well-designed Android
|
||||
<a href="https://xmpp.org/">XMPP</a>
|
||||
client which serves as the de facto XMPP
|
||||
reference client and has great usability.</p>
|
||||
client which serves as the de facto XMPP reference client and
|
||||
has great usability.</p>
|
||||
</td>
|
||||
<td headers="software-smartphone-source_model conversations">
|
||||
Open-source<br/>
|
||||
(GPL-3.0-only)
|
||||
</td>
|
||||
(GPL-3.0-only)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="software-smartphone-viewer">Viewer</th>
|
||||
<th id="gallery" headers="software-smartphone software-smartphone-viewer">
|
||||
<img src="asset/img/logo/gallery.png" width="100" height="100" alt="Gallery logo"/><br/>
|
||||
Gallery
|
||||
</th>
|
||||
Gallery</th>
|
||||
<td class="desc" headers="software-smartphone-description gallery">
|
||||
<p><a href="https://github.com/IacobIonut01/Gallery">Gallery</a>
|
||||
is a lightweight image and video viewer with
|
||||
image editing capabilities.</p>
|
||||
<p>It has a clean and modern design without
|
||||
including unnecessary features, and runs
|
||||
smoothly. It provides both individual image and
|
||||
video file view, and folder view.</p>
|
||||
is a lightweight image and video viewer with image editing
|
||||
capabilities.</p>
|
||||
<p>It has a clean and modern design without including
|
||||
unnecessary features, and runs smoothly. It provides both
|
||||
individual image and video file view, and folder view.</p>
|
||||
</td>
|
||||
<td headers="software-smartphone-source_model gallery">
|
||||
Open-source<br/>
|
||||
(Apache-2.0)
|
||||
</td>
|
||||
(Apache-2.0)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -841,28 +693,21 @@
|
||||
</section>
|
||||
<section id="recommendations-music">
|
||||
<h3><a href="#recommendations-music">Music</a></h3>
|
||||
<p>For a curated list of music I enjoy,
|
||||
visit my
|
||||
<p>For a curated list of music I enjoy, visit my
|
||||
<a href="music.xhtml">music page</a>.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="gnulinux_or_linux">
|
||||
<h2><a href="#gnulinux_or_linux">Is it GNU/Linux or Just Linux?</a></h2>
|
||||
<p>It's just Linux. GNU is unrelated to Linux, which is a
|
||||
kernel developed by
|
||||
<p>It's just Linux. GNU is unrelated to Linux, which is a kernel developed by
|
||||
<a href="https://en.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a>.
|
||||
Linux can be used entirely without GNU software in
|
||||
userspace, and the kernel can be compiled without the use of
|
||||
GNU tools. Just because GNU tools were used to initally
|
||||
develop and compile the kernel, and were initially the only
|
||||
available tools for userspace, does not make this true
|
||||
today, and it never made GNU a part of Linux itself at any
|
||||
point of time.</p>
|
||||
<p>Where are all of the other forward-slashes for every
|
||||
other piece of software on a Linux-based system which makes
|
||||
it just as usable? If a system is running "GNU/Linux", it
|
||||
should be using more than a single forward-slash when there
|
||||
is more to the system than only GNU.</p>
|
||||
Linux can be used entirely without GNU software in userspace, and the kernel can be compiled without
|
||||
the use of GNU tools. Just because GNU tools were used to initally develop and compile the kernel,
|
||||
and were initially the only available tools for userspace, does not make this true today, and it
|
||||
never made GNU a part of Linux itself at any point of time.</p>
|
||||
<p>Where are all of the other forward-slashes for every other piece of software on a Linux-based
|
||||
system which makes it just as usable? If a system is running "GNU/Linux", it should be using more
|
||||
than a single forward-slash when there is more to the system than only GNU.</p>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="sitemap.xhtml">Sitemap</a></div>
|
||||
</body>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Blog -->
|
||||
<!-- Version: 8.0.0 -->
|
||||
<!-- Version: 8.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Blog - #0 -->
|
||||
<!-- Version: 9.0.0 -->
|
||||
<!-- Version: 9.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -48,39 +48,35 @@
|
||||
</nav>
|
||||
<section id="introduction">
|
||||
<h2><a href="#introduction">Introduction</a></h2>
|
||||
<p>The world has become a dangerous, privacy invading, human rights stripping,
|
||||
totalitarian place; in order to combat this, people are joining a growing, and
|
||||
dangerous, trend, which I will refer to in this post as the "Free and Open
|
||||
Source (FOSS) movement". With that stated, I will now debunk the misinformation
|
||||
being spread inside of this extremely flawed movement.</p>
|
||||
<p>The world has become a dangerous, privacy invading, human rights stripping, totalitarian
|
||||
place; in order to combat this, people are joining a growing, and dangerous, trend, which I will
|
||||
refer to in this post as the "Free and Open Source (FOSS) movement". With that stated, I will
|
||||
now debunk the misinformation being spread inside of this extremely flawed movement.</p>
|
||||
<p>The
|
||||
<a href="https://en.wikipedia.org/wiki/Free_software">FOSS</a>
|
||||
movement is an attempt to regain
|
||||
<a href="https://en.wikipedia.org/wiki/Privacy">privacy</a>
|
||||
and
|
||||
<a href="https://en.wikipedia.org/wiki/Control_(psychology)">control</a>
|
||||
over our devices and data, but the entire concept of FOSS-only, at the current
|
||||
time, is severely, and dangerously, flawed. What the FOSS community does not
|
||||
seem to understand is the fact that most FOSS software cares not about
|
||||
over our devices and data, but the entire concept of FOSS-only, at the current time, is
|
||||
severely, and dangerously, flawed. What the FOSS community does not seem to understand is the
|
||||
fact that most FOSS software cares not about
|
||||
<a href="https://en.wikipedia.org/wiki/Security">security</a>.
|
||||
"Security"; keep that word in mind as you progress through this article. What is
|
||||
security? Security is being safe and secure from adversaries and unwanted
|
||||
consequences; security protects our rights and allows us to protect ourselves.
|
||||
Without security, we have no protection, and without protection, we have a lack
|
||||
of certainty of everything else, including privacy and control, which is what
|
||||
the FOSS movement is seeking.</p>
|
||||
<p>FOSS projects rarely take security into account; they simply look at the
|
||||
surface level, rather than the actual
|
||||
"Security"; keep that word in mind as you progress through this article. What is security?
|
||||
Security is being safe and secure from adversaries and unwanted consequences; security protects
|
||||
our rights and allows us to protect ourselves. Without security, we have no protection, and
|
||||
without protection, we have a lack of certainty of everything else, including privacy and
|
||||
control, which is what the FOSS movement is seeking.</p>
|
||||
<p>FOSS projects rarely take security into account; they simply look at the surface level,
|
||||
rather than the actual
|
||||
<a href="https://en.wikipedia.org/wiki/Root_cause_analysis">root cause</a>
|
||||
of the issues they are attempting to fight against. In this case, the focus is
|
||||
on privacy and control. Without security mechanisms to protect the privacy
|
||||
features and the ability to control your devices and data, it can be stripped
|
||||
away as if it never existed in the first place, which, inevitably, leads us back
|
||||
to the beginning, and the cycle repeats. With this
|
||||
of the issues they are attempting to fight against. In this case, the focus is on privacy and
|
||||
control. Without security mechanisms to protect the privacy features and the ability to control
|
||||
your devices and data, it can be stripped away as if it never existed in the first place, which,
|
||||
inevitably, leads us back to the beginning, and the cycle repeats. With this
|
||||
<a href="https://en.wikipedia.org/wiki/Ideology">ideology</a>,
|
||||
privacy and control will <em>never</em> be achieved. There is no foundation to
|
||||
build privacy or control upon. It is impossible to build a solid, freedom
|
||||
respecting platform on this model.</p>
|
||||
privacy and control will <em>never</em> be achieved. There is no foundation to build privacy or
|
||||
control upon. It is impossible to build a solid, freedom respecting platform on this model.</p>
|
||||
</section>
|
||||
<section id="examples">
|
||||
<h2><a href="#examples">Examples</a></h2>
|
||||
@ -88,107 +84,91 @@
|
||||
<h3><a href="#examples-smartphones">Smartphones</a></h3>
|
||||
<p>A FOSS phone, especially so-called
|
||||
"<a href="https://en.wikipedia.org/wiki/Linux_for_mobile_devices#Smartphones">Linux phones</a>"
|
||||
are completely detrimental to privacy and control, because they
|
||||
do not have the security necessary to enforce that privacy.
|
||||
are completely detrimental to privacy and control, because they do not have the security
|
||||
necessary to enforce that privacy.
|
||||
<a href="https://en.wikipedia.org/wiki/Bootloader_unlocking">Unlocked bootloaders</a>
|
||||
prevent the device from
|
||||
<a href="https://source.android.com/docs/security/features/verifiedboot/">verifying the integrity of the boot chain</a>,
|
||||
including the OS, meaning any adversary, whether a stranger who
|
||||
happens to pick up the device, or a big tech or government
|
||||
entity, can simply inject malicious code into your software and
|
||||
you wouldn't have any idea it was there. If that's not enough of
|
||||
a backdoor for you to reconsider your position, how about the
|
||||
trivial
|
||||
including the OS, meaning any adversary, whether a stranger who happens to pick up the
|
||||
device, or a big tech or government entity, can simply inject malicious code into your
|
||||
software and you wouldn't have any idea it was there. If that's not enough of a backdoor
|
||||
for you to reconsider your position, how about the trivial
|
||||
<a href="https://en.wikipedia.org/wiki/Evil_maid_attack">evil maid</a>
|
||||
and data extraction attacks which could be executed on your
|
||||
device, without coercion? With Android phones, this is bad
|
||||
enough to completely break the privacy and control the FOSS
|
||||
movement seeks, but "Linux phones" take it a step further by
|
||||
implementing barely any security, if any at all.
|
||||
and data extraction attacks which could be executed on your device, without coercion?
|
||||
With Android phones, this is bad enough to completely break the privacy and control the
|
||||
FOSS movement seeks, but "Linux phones" take it a step further by implementing barely
|
||||
any security, if any at all.
|
||||
<a href="https://en.wikipedia.org/wiki/Privilege_escalation">Privilege escalation</a>
|
||||
is trivial to achieve on any Linux system, which is the reason
|
||||
Linux
|
||||
is trivial to achieve on any Linux system, which is the reason Linux
|
||||
<a href="https://en.wikipedia.org/wiki/Hardening_(computing)">hardening</a>
|
||||
strategies often include restricting access to the root account;
|
||||
if you
|
||||
strategies often include restricting access to the root account; if you
|
||||
<a href="https://en.wikipedia.org/wiki/Rooting_(Android)">root your Android phone</a>,
|
||||
or use a "Linux phone", you've already destroyed the security
|
||||
model, and thus privacy and control model you were attempting to
|
||||
achieve. Not only are these side effects of FOSS, so is the
|
||||
absolutely illogical restriction of not being able to, or making
|
||||
it unnecessarily difficult to, install and update critical
|
||||
components of the system, such as proprietary
|
||||
or use a "Linux phone", you've already destroyed the security model, and thus privacy
|
||||
and control model you were attempting to achieve. Not only are these side effects of
|
||||
FOSS, so is the absolutely illogical restriction of not being able to, or making it
|
||||
unnecessarily difficult to, install and update critical components of the system, such
|
||||
as proprietary
|
||||
<a href="https://en.wikipedia.org/wiki/Firmware">firmware</a>,
|
||||
which just so happens to be almost all of them. "Linux phones"
|
||||
are not as free as they proclaim to be.</p>
|
||||
which just so happens to be almost all of them. "Linux phones" are not as free as they
|
||||
proclaim to be.</p>
|
||||
<p>You may ask "What's so bad about using
|
||||
<a href="https://lineageos.org/">LineageOS</a>?",
|
||||
to which I answer with "What's not bad about it?".
|
||||
to which I answer with "What's not bad about it?".</p>
|
||||
<ul>
|
||||
<li>LineageOS uses
|
||||
<a href="https://github.com/LineageOS/hudson/blob/master/lineage-build-targets">debug builds</a>,
|
||||
not safe and secure release builds.</li>
|
||||
<li>LineageOS requires an unlocked bootloader.
|
||||
Even when installed on devices which support
|
||||
custom Android Verified Boot (AVB) keys, the
|
||||
bootloader cannot be locked due to lack of the
|
||||
OS being signed.</li>
|
||||
<li>LineageOS does not install critically
|
||||
important firmware without manual flashing,
|
||||
requiring users to perform a second update to
|
||||
install this firmware; this likely causes users
|
||||
to ignore the notification or miss firmware
|
||||
<li>LineageOS requires an unlocked bootloader. Even when installed on devices
|
||||
which support custom Android Verified Boot (AVB) keys, the bootloader cannot be
|
||||
locked due to lack of the OS being signed.</li>
|
||||
<li>LineageOS does not install critically important firmware without manual
|
||||
flashing, requiring users to perform a second update to install this firmware;
|
||||
this likely causes users to ignore the notification or miss firmware
|
||||
updates.</li>
|
||||
<li>LineageOS does not implement
|
||||
<a href="https://source.android.com/docs/security/features/verifiedboot/verified-boot#rollback-protection">rollback protection</a>,
|
||||
meaning any adversary, from a stranger who
|
||||
physically picks up the device, to a goverment
|
||||
entity remotely, can simply downgrade the OS to
|
||||
a previous version in order to exploit known
|
||||
meaning any adversary, from a stranger who physically picks up the device, to a
|
||||
goverment entity remotely, can simply downgrade the OS to a previous version in
|
||||
order to exploit known
|
||||
<a href="https://en.wikipedia.org/wiki/Vulnerability_(computing)">security vulnerabilities</a>.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>LineageOS is not the only Android OS (commonly, and
|
||||
incorrectly, referred to as a "ROM") with such issues, but it is
|
||||
one of the worst. The only things such insecure OSes can provide
|
||||
you are customisation abilities, and a backdoor to your data.
|
||||
They are best suited as a development OS, not a production
|
||||
OS.</p>
|
||||
<p>LineageOS is not the only Android OS (commonly, and incorrectly, referred to as a
|
||||
"ROM") with such issues, but it is one of the worst. The only things such insecure OSes
|
||||
can provide you are customisation abilities, and a backdoor to your data. They are best
|
||||
suited as a development OS, not a production OS.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="solution">
|
||||
<h2><a href="#solution">Solution</a></h2>
|
||||
<p>What can you do about this? The answer is simple; however, it does require
|
||||
you to use logic, fact, and evidence, not emotion, which is a difficult pill for
|
||||
most people to swallow. Use your adversaries' weapons against them. The only way
|
||||
to effectively combat the privacy invasion and lack of control of our devices
|
||||
and data is to become a
|
||||
<p>What can you do about this? The answer is simple; however, it does require you to use logic,
|
||||
fact, and evidence, not emotion, which is a difficult pill for most people to swallow. Use your
|
||||
adversaries' weapons against them. The only way to effectively combat the privacy invasion and
|
||||
lack of control of our devices and data is to become a
|
||||
<a href="https://en.wikipedia.org/wiki/Turncoat">renegade</a>
|
||||
and not take sides. Yes, that means not taking sides with the closed-source,
|
||||
proprietary, big tech and government entities, but it also means not taking
|
||||
sides with any FOSS entities. The only way to win this war is to take
|
||||
<em>whatever</em> hardware and software you can, and use it tactically.</p>
|
||||
<p>The best solution for device security, privacy, and control, is to use a
|
||||
Google Pixel (currently, Pixel 5a or newer) running
|
||||
and not take sides. Yes, that means not taking sides with the closed-source, proprietary, big
|
||||
tech and government entities, but it also means not taking sides with any FOSS entities. The
|
||||
only way to win this war is to take <em>whatever</em> hardware and software you can, and use it
|
||||
tactically.</p>
|
||||
<p>The best solution for device security, privacy, and control, is to use a Google Pixel
|
||||
(currently, Pixel 5a or newer) running
|
||||
<a href="https://grapheneos.org/">GrapheneOS</a>.
|
||||
Google Pixel devices allow you complete bootloader freedom, including the
|
||||
<a href="https://android.googlesource.com/platform/external/avb/+/master/README.md#pixel-2-and-later">ability to lock the bootloader after flashing a custom OS</a>
|
||||
(GrapheneOS includes a custom OS signing key to allow locking the bootloader and
|
||||
enabling verified boot to prevent
|
||||
(GrapheneOS includes a custom OS signing key to allow locking the bootloader and enabling
|
||||
verified boot to prevent
|
||||
<a href="https://en.wikipedia.org/wiki/Malware">malware</a>
|
||||
persistence, evil maid attacks, and boot chain
|
||||
<a href="https://en.wikipedia.org/wiki/Data_corruption">corruption</a>),
|
||||
<a href="https://support.google.com/nexus/answer/4457705">long device support lifecycles</a>
|
||||
(minimum 3 years for Pixel 5a, minimum 5 years for Pixel 6-series and 7-series,
|
||||
and minimum 7 years for Pixel 8-series and newer), and
|
||||
(minimum 3 years for Pixel 5a, minimum 5 years for Pixel 6-series and 7-series, and minimum 7
|
||||
years for Pixel 8-series and newer), and
|
||||
<a href="https://source.android.com/docs/security/bulletin/pixel/">guaranteed monthly security updates</a>
|
||||
for the entire support timeframe of the devices.</p>
|
||||
</section>
|
||||
<section id="conclusion">
|
||||
<h2><a href="#conclusion">Conclusion</a></h2>
|
||||
<p>Use what you can, and do what you can. By neglecting security, you are, even
|
||||
if unintentionally, neglecting exactly what you are trying to gain; privacy and
|
||||
control.</p>
|
||||
<p>Use what you can, and do what you can. By neglecting security, you are, even if
|
||||
unintentionally, neglecting exactly what you are trying to gain; privacy and control.</p>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="../sitemap.xhtml">Sitemap</a></div>
|
||||
</body>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Blog - #1 -->
|
||||
<!-- Version: 9.0.0 -->
|
||||
<!-- Version: 9.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -47,8 +47,7 @@
|
||||
developer doesn't care about your security at all.</p>
|
||||
<section id="issue-0">
|
||||
<h2><a href="#issue-0">Issue #0 - Against CVE Assignment</a></h2>
|
||||
<blockquote>"You don't assign CVEs to every single random bugfix we do, do
|
||||
you?"</blockquote>
|
||||
<blockquote>"You don't assign CVEs to every single random bugfix we do, do you?"</blockquote>
|
||||
<p>- Lennart Poettering, systemd lead developer</p>
|
||||
<p><b>My thoughts:</b> Yes, if they're security-related.</p>
|
||||
<p>Source:
|
||||
@ -56,41 +55,38 @@
|
||||
</section>
|
||||
<section id="issue-1">
|
||||
<h2><a href="#issue-1">Issue #1 - CVEs Are Not Useful</a></h2>
|
||||
<blockquote>"Humpf, I am not convinced this is the right way to announce this.
|
||||
We never did that, and half the CVEs aren't useful anyway, hence I am not sure
|
||||
we should start with that now, because it is either inherently incomplete or
|
||||
blesses the nonsensical part of the CVE circus which we really shouldn't
|
||||
bless..."</blockquote>
|
||||
<blockquote>"Humpf, I am not convinced this is the right way to announce this. We never did
|
||||
that, and half the CVEs aren't useful anyway, hence I am not sure we should start with that now,
|
||||
because it is either inherently incomplete or blesses the nonsensical part of the CVE circus
|
||||
which we really shouldn't bless..."</blockquote>
|
||||
<p>- Lennart Poettering, systemd lead developer</p>
|
||||
<p><b>My thoughts:</b> CVEs are supposed to be for security, and a log of when they
|
||||
were found and their severity, so yes, it <em>is</em> the correct way to
|
||||
announce it. It seems as if over 95 security-concious people think the same.</p>
|
||||
<p><b>My thoughts:</b> CVEs are supposed to be for security, and a log of when they were found
|
||||
and their severity, so yes, it <em>is</em> the correct way to announce it. It seems as if over
|
||||
95 security-concious people think the same.</p>
|
||||
<p>Source:
|
||||
<a href="https://github.com/systemd/systemd/pull/6225#issuecomment-311739869">systemd GitHub Issue 6225</a></p>
|
||||
</section>
|
||||
<section id="issue-2">
|
||||
<h2><a href="#issue-2">Issue #2 - Security is a Circus</a></h2>
|
||||
<blockquote>"I am not sure I buy enough into the security circus to do that
|
||||
though for any minor issue..."</blockquote>
|
||||
<blockquote>"I am not sure I buy enough into the security circus to do that though for any minor
|
||||
issue..."</blockquote>
|
||||
<p>- Lennart Poettering, systemd lead developer</p>
|
||||
<p>Source:
|
||||
<a href="https://github.com/systemd/systemd/issues/5144#issuecomment-276740654">systemd GitHub Issue 5144</a></p>
|
||||
</section>
|
||||
<section id="issue-3">
|
||||
<h2><a href="#issue-3">Issue #3 - Blaming the User</a></h2>
|
||||
<blockquote><p>"Yes, as you found out "0day" is not a valid username. I wonder
|
||||
which tool permitted you to create it in the first place. Note that not
|
||||
permitting numeric first characters is done on purpose: to avoid ambiguities
|
||||
between numeric UID and textual user names.</p>
|
||||
<p>systemd will validate all configuration data you drop at it, making it hard to
|
||||
generate invalid configuration. Hence, yes, it's a feature that we don't permit
|
||||
invalid user names, and I'd consider it a limitation of xinetd that it doesn't
|
||||
refuse an invalid username.</p>
|
||||
<p>So, yeah, I don't think there's anything to fix in systemd here. I understand
|
||||
this is annoying, but still: the username is clearly not valid."</p></blockquote>
|
||||
<blockquote><p>"Yes, as you found out "0day" is not a valid username. I wonder which tool
|
||||
permitted you to create it in the first place. Note that not permitting numeric first characters
|
||||
is done on purpose: to avoid ambiguities between numeric UID and textual user names.</p>
|
||||
<p>systemd will validate all configuration data you drop at it, making it hard to generate
|
||||
invalid configuration. Hence, yes, it's a feature that we don't permit invalid user names, and
|
||||
I'd consider it a limitation of xinetd that it doesn't refuse an invalid username.</p>
|
||||
<p>So, yeah, I don't think there's anything to fix in systemd here. I understand this is
|
||||
annoying, but still: the username is clearly not valid."</p></blockquote>
|
||||
<p>- Lennart Poettering, systemd lead developer</p>
|
||||
<p><b>My thoughts:</b> systemd was the thing that allowed root access just because a
|
||||
username started with a number, then Poettering blamed the user.</p>
|
||||
<p><b>My thoughts:</b> systemd was the thing that allowed root access just because a username
|
||||
started with a number, then Poettering blamed the user.</p>
|
||||
<p>Source:
|
||||
<a href="https://github.com/systemd/systemd/issues/6237#issuecomment-311900864">systemd GitHub Issue 6237</a></p>
|
||||
</section>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Blog - #3 -->
|
||||
<!-- Version: 9.0.0 -->
|
||||
<!-- Version: 9.0.0-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -44,68 +44,56 @@
|
||||
</nav>
|
||||
<section id="introduction">
|
||||
<h2><a href="#introduction">Introduction</a></h2>
|
||||
<p>It's no secret that I'm an advocate of Chromium and will use it for the
|
||||
foreseeable future. It is a highly secure web browser which provides strong
|
||||
protection against malicious wesbites and the code they run, and, while I am not
|
||||
too interested in high performance, it is a very performant web browser, despite
|
||||
its security features.</p>
|
||||
<p>However, the intention of this blog post is not to promote Chromium for any
|
||||
reason, but rather show an issue with it; an issue which is larger than may be
|
||||
realised by web-surfing users. That issue is the large monopoly Chromium has in
|
||||
the web browser market;
|
||||
<p>It's no secret that I'm an advocate of Chromium and will use it for the foreseeable future.
|
||||
It is a highly secure web browser which provides strong protection against malicious wesbites
|
||||
and the code they run, and, while I am not too interested in high performance, it is a very
|
||||
performant web browser, despite its security features.</p>
|
||||
<p>However, the intention of this blog post is not to promote Chromium for any reason, but
|
||||
rather show an issue with it; an issue which is larger than may be realised by web-surfing
|
||||
users. That issue is the large monopoly Chromium has in the web browser market;
|
||||
<a href="https://en.wikipedia.org/wiki/Usage_share_of_web_browsers#Summary_tables">Chromium's market share is around 65%</a>,
|
||||
making it the largest slice of the cake. The issue becomes even deeper and more
|
||||
problematic when you realise that the second-place web browser, Safari, has only
|
||||
an 18% market share.</p>
|
||||
<p>The main issue with this type of monopoly is the large amounts of power and
|
||||
influence it gives Chromium, which can lead to, and is leading to, excessive
|
||||
authority of how the web should work, and the standards which are implemented,
|
||||
which all other web browsers must comply with in order to have a fully working
|
||||
web.</p>
|
||||
making it the largest slice of the cake. The issue becomes even deeper and more problematic when
|
||||
you realise that the second-place web browser, Safari, has only an 18% market share.</p>
|
||||
<p>The main issue with this type of monopoly is the large amounts of power and influence it
|
||||
gives Chromium, which can lead to, and is leading to, excessive authority of how the web should
|
||||
work, and the standards which are implemented, which all other web browsers must comply with in
|
||||
order to have a fully working web.</p>
|
||||
</section>
|
||||
<section id="solution">
|
||||
<h2><a href="#solution">Solution</a></h2>
|
||||
<p>In order to combat the Chromium monopoly, users typically go over to
|
||||
Chromium's classical rival, Firefox. However, Firefox is dying and has lost
|
||||
almost all of its userbase over the last 2-3 years; the reason for this is a
|
||||
tale of selfishness and greed, caused by Firefox's parent company to go off
|
||||
course and lose its original goal of providing a freedom-respecting, open web.
|
||||
Mozilla caused self-inflicted damage which it cannot recover from, and, to me,
|
||||
is already dead. The vultures are simply waiting for the final, small group of
|
||||
users to abandon the project before Firefox finally succumbs to its own demise;
|
||||
the demise it caused itself.</p>
|
||||
<p>If attempting to increase Firefox's market share to previous levels will be
|
||||
in vain, what is the solution? How can we prevent Chromium from completely
|
||||
taking over the web and dictating everything we do and how the web should be
|
||||
designed and used?</p>
|
||||
<p>To find the answer to these important but difficult questions, we must go to
|
||||
the alternatives which still have a fighting chance. Safari, developed by Apple,
|
||||
is based on WebKit, an engine completely independent of Chromium and
|
||||
Firefox.</p>
|
||||
<p>Just using a non-Chromium-based web browser is not enough; the choice must
|
||||
already have enough market share to still be relevant, and be capable of gaining
|
||||
new users. Safari, being preinstalled on Apple devices including iPhone and Mac,
|
||||
already has a great advantage over Firefox. Apple devices, especially iPhone, is
|
||||
abundant in streets everywhere on the planet. Safari is the default choice for
|
||||
Apple users and has a large market share simply because of how widespread it is.
|
||||
Exploiting this fact is the only way to gain more market share and take down
|
||||
Chromium before it is too late; the clock is ticking, and Apple are the only
|
||||
ones preventing Chromium from completely taking over the web. Backing Safari
|
||||
instead of Firefox will keep the WebKit market share from falling to a
|
||||
critically low percentage, making it impossible to make a comeback, as has
|
||||
happened to Firefox. Sometimes, directly supporting a political party is not the
|
||||
way to get them into power, supporting the second-place alternative is, in order
|
||||
to keep the one you don't want out of power, giving the party you do want in
|
||||
power an advantage. To win this war against the Chromium monopoly, we must be
|
||||
tactical, not emotional.</p>
|
||||
<p>In order to combat the Chromium monopoly, users typically go over to Chromium's classical
|
||||
rival, Firefox. However, Firefox is dying and has lost almost all of its userbase over the last
|
||||
2-3 years; the reason for this is a tale of selfishness and greed, caused by Firefox's parent
|
||||
company to go off course and lose its original goal of providing a freedom-respecting, open web.
|
||||
Mozilla caused self-inflicted damage which it cannot recover from, and, to me, is already dead.
|
||||
The vultures are simply waiting for the final, small group of users to abandon the project
|
||||
before Firefox finally succumbs to its own demise; the demise it caused itself.</p>
|
||||
<p>If attempting to increase Firefox's market share to previous levels will be in vain, what is
|
||||
the solution? How can we prevent Chromium from completely taking over the web and dictating
|
||||
everything we do and how the web should be designed and used?</p>
|
||||
<p>To find the answer to these important but difficult questions, we must go to the alternatives
|
||||
which still have a fighting chance. Safari, developed by Apple, is based on WebKit, an engine
|
||||
completely independent of Chromium and Firefox.</p>
|
||||
<p>Just using a non-Chromium-based web browser is not enough; the choice must already have
|
||||
enough market share to still be relevant, and be capable of gaining new users. Safari, being
|
||||
preinstalled on Apple devices including iPhone and Mac, already has a great advantage over
|
||||
Firefox. Apple devices, especially iPhone, is abundant in streets everywhere on the planet.
|
||||
Safari is the default choice for Apple users and has a large market share simply because of how
|
||||
widespread it is. Exploiting this fact is the only way to gain more market share and take down
|
||||
Chromium before it is too late; the clock is ticking, and Apple are the only ones preventing
|
||||
Chromium from completely taking over the web. Backing Safari instead of Firefox will keep the
|
||||
WebKit market share from falling to a critically low percentage, making it impossible to make a
|
||||
comeback, as has happened to Firefox. Sometimes, directly supporting a political party is not
|
||||
the way to get them into power, supporting the second-place alternative is, in order to keep the
|
||||
one you don't want out of power, giving the party you do want in power an advantage. To win this
|
||||
war against the Chromium monopoly, we must be tactical, not emotional.</p>
|
||||
</section>
|
||||
<section id="conclusion">
|
||||
<h2><a href="#conclusion">Conclusion</a></h2>
|
||||
<p>Supporting Safari is the first step in supporting WebKit and promoting usage
|
||||
of the independent web engine. Buying time while supporting and contributing to
|
||||
WebKit browser projects is the best and only chance anyone has at competing with
|
||||
Chromium, and preventing it from increasing its dominance to unstoppable levels,
|
||||
at which point there will be no return.</p>
|
||||
<p>Supporting Safari is the first step in supporting WebKit and promoting usage of the
|
||||
independent web engine. Buying time while supporting and contributing to WebKit browser projects
|
||||
is the best and only chance anyone has at competing with Chromium, and preventing it from
|
||||
increasing its dominance to unstoppable levels, at which point there will be no return.</p>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="../sitemap">Sitemap</a></div>
|
||||
</body>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Blog - #2 -->
|
||||
<!-- Version: 9.0.0 -->
|
||||
<!-- Version: 9.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -48,120 +48,99 @@
|
||||
</nav>
|
||||
<section id="introduction">
|
||||
<h2><a href="#introduction">Introduction</a></h2>
|
||||
<p>A recent trend is seeing people move towards decentralised services and
|
||||
platforms. While this is reasonable and I can understand why they are doing such
|
||||
a thing, they are seemingly doing it without thinking about the possible
|
||||
consequences of doing so. The issue with decentralisation is trust; there is no
|
||||
way to pin a key to a specific person, to ensure that you are communicating with
|
||||
the same person you are supposed to be communicating with. In this article, I
|
||||
will discuss some of the security issues with the decentralised model.</p>
|
||||
<p>A recent trend is seeing people move towards decentralised services and platforms. While this
|
||||
is reasonable and I can understand why they are doing such a thing, they are seemingly doing it
|
||||
without thinking about the possible consequences of doing so. The issue with decentralisation is
|
||||
trust; there is no way to pin a key to a specific person, to ensure that you are communicating
|
||||
with the same person you are supposed to be communicating with. In this article, I will discuss
|
||||
some of the security issues with the decentralised model.</p>
|
||||
</section>
|
||||
<section id="examples">
|
||||
<h2><a href="#examples">Examples</a></h2>
|
||||
<section id="examples-messaging">
|
||||
<h3><a href="#examples-messaging">Messaging</a></h3>
|
||||
<p>When it comes to messaging your contacts on a centralised
|
||||
platform, such as Twitter or Facebook, the keys are pinned to
|
||||
that user account, using the user's password as the method of
|
||||
identification. This approach makes it impossible to log in as a
|
||||
specific user without their password, should it be strong enough
|
||||
to not be guessed, whether via personal guessing or exhaustive
|
||||
search. The trust in this centralised model is the high security
|
||||
these platforms have. It is extremely unlikely that anyone other
|
||||
than a government would be able to access the accounts stored on
|
||||
such platforms' servers, which makes the physical security
|
||||
trusted. As for remote security, should a user's password be
|
||||
compromised, it can typically be reset if the user can prove
|
||||
they are the owner of the account via some form of
|
||||
identification; this is where the trust issue of
|
||||
<p>When it comes to messaging your contacts on a centralised platform, such as Twitter
|
||||
or Facebook, the keys are pinned to that user account, using the user's password as the
|
||||
method of identification. This approach makes it impossible to log in as a specific user
|
||||
without their password, should it be strong enough to not be guessed, whether via
|
||||
personal guessing or exhaustive search. The trust in this centralised model is the high
|
||||
security these platforms have. It is extremely unlikely that anyone other than a
|
||||
government would be able to access the accounts stored on such platforms' servers, which
|
||||
makes the physical security trusted. As for remote security, should a user's password be
|
||||
compromised, it can typically be reset if the user can prove they are the owner of the
|
||||
account via some form of identification; this is where the trust issue of
|
||||
decentralisation occurs.</p>
|
||||
<p>In the decentralised model, keys are kept on the users'
|
||||
devices, in their possession. While this soveriegnty is
|
||||
welcomed, it introduces a critical flaw in the security of
|
||||
communicating with anyone via a decentralised platform; should a
|
||||
user's device be lost, stolen, or otherwise compromised, there
|
||||
is no way to know it happened and what the new keys really are,
|
||||
and if the same user generated those keys. There is no
|
||||
centralised point where anyone can go to check if the
|
||||
compromised user has updated their keys, which means there must
|
||||
already have been at least one other secure channel in place
|
||||
before the compromise occurred. Even if there was, the security
|
||||
of endpoint devices, especially typical users, is much lower
|
||||
than a well protected corporation's servers, making even those
|
||||
secure channels questionable to trust. Should all secure
|
||||
channels be compromised, there is literally no way to know if
|
||||
the person you are communicating with is the real person or an
|
||||
imposter; there is no root of trust. This point is fatal; game
|
||||
over. The only way to establish trust again would be to
|
||||
physically meet and exchange keys.</p>
|
||||
<p>In the decentralised model, keys are kept on the users' devices, in their possession.
|
||||
While this soveriegnty is welcomed, it introduces a critical flaw in the security of
|
||||
communicating with anyone via a decentralised platform; should a user's device be lost,
|
||||
stolen, or otherwise compromised, there is no way to know it happened and what the new
|
||||
keys really are, and if the same user generated those keys. There is no centralised
|
||||
point where anyone can go to check if the compromised user has updated their keys, which
|
||||
means there must already have been at least one other secure channel in place before the
|
||||
compromise occurred. Even if there was, the security of endpoint devices, especially
|
||||
typical users, is much lower than a well protected corporation's servers, making even
|
||||
those secure channels questionable to trust. Should all secure channels be compromised,
|
||||
there is literally no way to know if the person you are communicating with is the real
|
||||
person or an imposter; there is no root of trust. This point is fatal; game over. The
|
||||
only way to establish trust again would be to physically meet and exchange keys.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="solution">
|
||||
<h2><a href="#solution">Solution</a></h2>
|
||||
<p>I'll cut to the chase; there isn't a definitive solution. The best way to
|
||||
handle this situation is to design your threat model and think about your
|
||||
reasoning for avoiding centralised platforms. Is it lack of trust of a specific
|
||||
company? Is it the possibility of centralised platforms going offline? Only by
|
||||
thinking logically and tactically can you solve both the issue of centralisation
|
||||
and decentralisation. Often, one size fits all is never the correct approach,
|
||||
<p>I'll cut to the chase; there isn't a definitive solution. The best way to handle this
|
||||
situation is to design your threat model and think about your reasoning for avoiding centralised
|
||||
platforms. Is it lack of trust of a specific company? Is it the possibility of centralised
|
||||
platforms going offline? Only by thinking logically and tactically can you solve both the issue
|
||||
of centralisation and decentralisation. Often, one size fits all is never the correct approach,
|
||||
nor does it typically work.</p>
|
||||
<p>In order to avoid the issue of loss of trust due to lack of root of trust,
|
||||
all users' keys must be stored in a centralised location where all contacts are
|
||||
able to go to in case of compromise or to periodically check the state of keys
|
||||
and to see if they have changed. This centralised location requires some sort of
|
||||
identification to ensure that the user changing their keys is really the same
|
||||
person who initially signed up for the platform, using a trust-on-first-use
|
||||
(TOFU) model, which isn't much different than what today's centralised platforms
|
||||
are already doing; the only difference is who is controlling the location; trust
|
||||
is still present and required.</p>
|
||||
<p>In order to avoid the issue of loss of trust due to lack of root of trust, all users' keys
|
||||
must be stored in a centralised location where all contacts are able to go to in case of
|
||||
compromise or to periodically check the state of keys and to see if they have changed. This
|
||||
centralised location requires some sort of identification to ensure that the user changing their
|
||||
keys is really the same person who initially signed up for the platform, using a
|
||||
trust-on-first-use (TOFU) model, which isn't much different than what today's centralised
|
||||
platforms are already doing; the only difference is who is controlling the location; trust is
|
||||
still present and required.</p>
|
||||
<p>In order to have a root of trust, I have posted my keys to my website, which
|
||||
is protected by multiple layers of security:
|
||||
is protected by multiple layers of security:</p>
|
||||
<ol>
|
||||
<li>I have provided identification to my domain name registrar,
|
||||
to ensure I can access the website I rightfully own, should it
|
||||
be compromised, by providing identification to the domain name
|
||||
registrar.</li>
|
||||
<li>I have provided identification to my virtual private server
|
||||
host, to ensure I can access the virtual private servers I
|
||||
rightfully rent, should they be compromised, by providing
|
||||
identification to the virtual private server host.</li>
|
||||
<li>I have pinned my website to a globally trusted certificate
|
||||
authority, Let's Encrypt, which is a trusted party to manage TLS
|
||||
certificates and ensure ownership of the domain when connecting
|
||||
to it.</li>
|
||||
<li>I have enabled DNSSEC on my domain, so it is extremely
|
||||
difficult to spoof my domain to make you believe you're
|
||||
connecting to it when you're actually connecting to someone
|
||||
<li>I have provided identification to my domain name registrar, to ensure I can access
|
||||
the website I rightfully own, should it be compromised, by providing identification to
|
||||
the domain name registrar.</li>
|
||||
<li>I have provided identification to my virtual private server host, to ensure I can
|
||||
access the virtual private servers I rightfully rent, should they be compromised, by
|
||||
providing identification to the virtual private server host.</li>
|
||||
<li>I have pinned my website to a globally trusted certificate authority, Let's Encrypt,
|
||||
which is a trusted party to manage TLS certificates and ensure ownership of the domain
|
||||
when connecting to it.</li>
|
||||
<li>I have enabled DNSSEC on my domain, so it is extremely difficult to spoof my domain
|
||||
to make you believe you're connecting to it when you're actually connecting to someone
|
||||
else's.</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>While not the most secure implementation of a root of trust, it is the most
|
||||
secure implementation currently available to me. While the domain name registrar
|
||||
or virtual private server host could tamper with my domain and data, they are
|
||||
the most trustworthy parties available. In its current form, decentralisation
|
||||
would make this impossible to implement in any form.</p>
|
||||
<p>While not the most secure implementation of a root of trust, it is the most secure
|
||||
implementation currently available to me. While the domain name registrar or virtual private
|
||||
server host could tamper with my domain and data, they are the most trustworthy parties
|
||||
available. In its current form, decentralisation would make this impossible to implement in any
|
||||
form.</p>
|
||||
</section>
|
||||
<section id="conclusion">
|
||||
<h2><a href="#conclusion">Conclusion</a></h2>
|
||||
<p>Do not demand anonymity; demand privacy and control of your own data.
|
||||
Complete anonymity makes it impossible to have a root of trust, and is typically
|
||||
never necessary. It is possible for someone else to hold your keys, without them
|
||||
taking control of them and dictating what you can and cannot do (X's
|
||||
misinformation policy comes to mind). If a platform is not listening to your or
|
||||
other people's concerns about how it is being run, show those platforms that you
|
||||
will not stand for it, and move to a different one. This may not be ideal, but
|
||||
it's not different to moving from one decentralised platform to another.
|
||||
Centralisation is not what is evil, the people in control of the platforms are
|
||||
what is potentially evil. Carefully, logically, and tactically, choose who to
|
||||
trust. Decentralisation doesn't do much for trust when you must still trust the
|
||||
operator of the decentralised platform, and are still subject to the possibly
|
||||
draconian policies of that decentralised platform. If government is what you are
|
||||
trying to avoid, there is no denying it is feasibly impossible to avoid it; a
|
||||
government could always take down the decentralised platform, forcing you to
|
||||
move to another, and they could also take down the centralised key storage site
|
||||
mentioned earlier in this article. A government is not something you can so
|
||||
easily avoid. Decentralisation does not solve the government issue. In order to
|
||||
live a happy, fun, and fulfilled life, while protecting yourself against logical
|
||||
<p>Do not demand anonymity; demand privacy and control of your own data. Complete anonymity
|
||||
makes it impossible to have a root of trust, and is typically never necessary. It is possible
|
||||
for someone else to hold your keys, without them taking control of them and dictating what you
|
||||
can and cannot do (X's misinformation policy comes to mind). If a platform is not listening to
|
||||
your or other people's concerns about how it is being run, show those platforms that you will
|
||||
not stand for it, and move to a different one. This may not be ideal, but it's not different to
|
||||
moving from one decentralised platform to another. Centralisation is not what is evil, the
|
||||
people in control of the platforms are what is potentially evil. Carefully, logically, and
|
||||
tactically, choose who to trust. Decentralisation doesn't do much for trust when you must still
|
||||
trust the operator of the decentralised platform, and are still subject to the possibly
|
||||
draconian policies of that decentralised platform. If government is what you are trying to
|
||||
avoid, there is no denying it is feasibly impossible to avoid it; a government could always take
|
||||
down the decentralised platform, forcing you to move to another, and they could also take down
|
||||
the centralised key storage site mentioned earlier in this article. A government is not
|
||||
something you can so easily avoid. Decentralisation does not solve the government issue. In
|
||||
order to live a happy, fun, and fulfilled life, while protecting yourself against logical
|
||||
threats, there are only two words you must live by: Threat model.</p>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="../sitemap">Sitemap</a></div>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Changelog -->
|
||||
<!-- Version: 6.0.0 -->
|
||||
<!-- Version: 6.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Changelog - Firmware - aa000-0 -->
|
||||
<!-- Version: 5.0.0 -->
|
||||
<!-- Version: 5.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -106,8 +106,7 @@
|
||||
<p>Changelog (since version 2.0.0.3):</p>
|
||||
<ul>
|
||||
<li>Update WHENCE</li>
|
||||
<li>Update AMD GPU Navy Flounder DMCUB firmware to version
|
||||
0.0.172.0</li>
|
||||
<li>Update AMD GPU Navy Flounder DMCUB firmware to version 0.0.172.0</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article id="2.0.0.3">
|
||||
@ -119,8 +118,7 @@
|
||||
<p>Changelog (since version 1.0.0.2):</p>
|
||||
<ul>
|
||||
<li>Update readme</li>
|
||||
<li>Switch AMD CPU microcode readme from plaintext formatting to
|
||||
AsciiDoc formatting</li>
|
||||
<li>Switch AMD CPU microcode readme from plaintext formatting to AsciiDoc formatting</li>
|
||||
<li>Update AMD CPU microcode readme</li>
|
||||
<li>Update WHENCE</li>
|
||||
<li>Update AMD GPU Navy Flounder DMCUB firmware</li>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Changelog - Firmware - xa000-0 -->
|
||||
<!-- Version: 5.0.0 -->
|
||||
<!-- Version: 5.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Changelog - Firmware - xb000-0 -->
|
||||
<!-- Version: 5.0.0 -->
|
||||
<!-- Version: 5.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Contact -->
|
||||
<!-- Version: 10.1.0 -->
|
||||
<!-- Version: 10.1.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -46,46 +46,38 @@
|
||||
<h2><a href="#e2ee">End-to-end Encrypted Contact Methods</a></h2>
|
||||
<section id="e2ee-preferred">
|
||||
<h3><a href="#e2ee-preferred">Preferred</a></h3>
|
||||
<p>Whenever possible, use the following contact methods; they
|
||||
allow verification to mitigate man-in-the-middle attacks, have
|
||||
high security, and reasonable privacy.</p>
|
||||
<p>Whenever possible, use the following contact methods; they allow verification to mitigate
|
||||
man-in-the-middle attacks, have high security, and reasonable privacy.</p>
|
||||
<p><strong>Use the
|
||||
<a href="key.xhtml">keys</a>
|
||||
for each contact method to verify my devices.</strong></p>
|
||||
<p>Note: Verification does not verify a person, only their devices,
|
||||
and can be defeated via coercion or other force.</p>
|
||||
<p><img src="asset/img/logo/signal.png" class="logo-small" width="40" height="40" alt="Signal logo"/>Signal
|
||||
<p>Note: Verification does not verify a person, only their devices, and can be defeated via
|
||||
coercion or other force.</p>
|
||||
<p><img src="asset/img/logo/signal.png" class="logo-small" width="40" height="40" alt="Signal logo"/>Signal</p>
|
||||
<ul>
|
||||
<li><a href="https://signal.me/#eu/rXOem_06yX9bsIXE2IM4wAqu6MdZKrEeepdhm28bo0M82s2UXo1GHrew2grpTIkJ">inference.01</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
<p><img src="asset/img/logo/xmpp.png" class="logo-small" width="40" height="40" alt="XMPP logo"/>XMPP
|
||||
<p><img src="asset/img/logo/xmpp.png" class="logo-small" width="40" height="40" alt="XMPP logo"/>XMPP</p>
|
||||
<ul>
|
||||
<li><a href="xmpp://inference@inferencium.net">inference@inferencium.net</a> (Main) - (<a href="key.xhtml#xmpp-inferencium">Key</a>)</li>
|
||||
</ul>
|
||||
</p>
|
||||
</section>
|
||||
<!--
|
||||
<section id="e2ee-metadatafree">
|
||||
<h3><a href="#e2ee-metadatafree">Metadata-free</a></h3>
|
||||
<p>If metadata leakage is an issue for you, you can use the
|
||||
following contact methods.</p>
|
||||
<p>These services do not have verification functionality and
|
||||
will be treated as less secure; <strong>unless you really need
|
||||
to use these services, use a preferred method
|
||||
<p>If metadata leakage is an issue for you, you can use the following contact methods.</p>
|
||||
<p>These services do not have verification functionality and will be treated as less secure;
|
||||
<strong>unless you really need to use these services, use a preferred method
|
||||
instead.</strong></p>
|
||||
</section>
|
||||
-->
|
||||
</section>
|
||||
<!--
|
||||
<section id="nonprivate">
|
||||
<h2><a href="#nonprivate" class="h2">Non-private Contact Methods</a></h2>
|
||||
<p>The following contact methods do not utilise end-to-end encryption, or I do
|
||||
not use such functionality; they are suitable for public contact only, including
|
||||
directly and groups. Do not use these methods if confidentiality and/or privacy
|
||||
is required.</p>
|
||||
<p>The following contact methods do not utilise end-to-end encryption, or I do not use
|
||||
such functionality; they are suitable for public contact only, including directly and
|
||||
groups. Do not use these methods if confidentiality and/or privacy is required.</p>
|
||||
</section>
|
||||
-->
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="sitemap.xhtml">Sitemap</a></div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Directory -->
|
||||
<!-- Version: 5.0.1 -->
|
||||
<!-- Version: 5.0.2-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -33,15 +33,14 @@
|
||||
<h1>Directory</h1>
|
||||
<section id="xmpp">
|
||||
<h2><a href="#xmpp">XMPP</a></h2>
|
||||
<p>This is a list of XMPP channels hosted by me. Channels branded as
|
||||
Inferencium are run by me. Channels not under Inferencium branding are
|
||||
either run by me or other people, but are hosted on Inferencium servers.</p>
|
||||
<p>Public channels can be joined by anyone without an invitation. Non-public
|
||||
channels require an invitation; requirements for invitations differ
|
||||
per channel.</p>
|
||||
<p>For assistance within any channel, contact a moderator of the channel. If an
|
||||
issue is related to a moderator, contact an administrator; administrators should
|
||||
not be contacted unless the issue cannot be resolved by a moderator.</p>
|
||||
<p>This is a list of XMPP channels hosted by me. Channels branded as Inferencium are run by me.
|
||||
Channels not under Inferencium branding are either run by me or other people, but are hosted on
|
||||
Inferencium servers.</p>
|
||||
<p>Public channels can be joined by anyone without an invitation. Non-public channels require an
|
||||
invitation; requirements for invitations differ per channel.</p>
|
||||
<p>For assistance within any channel, contact a moderator of the channel. If an issue is related to
|
||||
a moderator, contact an administrator; administrators should not be contacted unless the issue
|
||||
cannot be resolved by a moderator.</p>
|
||||
<div style="overflow-x: auto;">
|
||||
<table class="lrg">
|
||||
<colgroup>
|
||||
@ -65,14 +64,10 @@
|
||||
<th id="inf"><a href="xmpp://gojayi@muc.xmpp.inferencium.net?join">Inferencium</a></th>
|
||||
<td class="desc" headers="description inf">
|
||||
<p>Inferencium general channel.</p>
|
||||
<p><b>Topic:</b> Any, excluding
|
||||
NSFW.</p>
|
||||
<p>Multimedia prohibited unless
|
||||
part of discussion.</p>
|
||||
</td>
|
||||
<td class="red" headers="public inf">
|
||||
No
|
||||
<p><b>Topic:</b> Any, excluding NSFW.</p>
|
||||
<p>Multimedia prohibited unless part of discussion.</p>
|
||||
</td>
|
||||
<td class="red" headers="public inf">No</td>
|
||||
<td class="desc" headers="moderator inf">
|
||||
<ul>
|
||||
<li><a href="xmpp://homejacob@inferencium.net">homejacob@inferencium.net</a></li>
|
||||
@ -89,13 +84,10 @@
|
||||
<th id="inf-moderation"><a href="xmpp://moderation@muc.xmpp.inferencium.net?join">Inferencium - Moderation</a></th>
|
||||
<td class="desc" headers="description inf-moderation">
|
||||
<p>Inferencium moderation channel.</p>
|
||||
<p><b>Topic:</b> Moderation of all XMPP
|
||||
channels hosted by Inferencium.</p>
|
||||
<p><b>Topic:</b> Moderation of all XMPP channels hosted by Inferencium.</p>
|
||||
<p>Inferencium moderators only.</p>
|
||||
</td>
|
||||
<td class="red" headers="public inf-moderation">
|
||||
No
|
||||
</td>
|
||||
<td class="red" headers="public inf-moderation">No</td>
|
||||
<td class="desc" headers="moderator inf-moderation">
|
||||
<ul>
|
||||
<li><a href="xmpp://homejacob@inferencium.net">homejacob@inferencium.net</a></li>
|
||||
@ -112,10 +104,8 @@
|
||||
<th id="inf-multimedia"><a href="xmpp://multimedia@muc.xmpp.inferencium.net?join">Inferencium - Multimedia</a></th>
|
||||
<td class="desc" headers="description inf-multimedia">
|
||||
<p>Inferencium multimedia channel.</p>
|
||||
<p><b>Topic:</b> Any, excluding
|
||||
NSFW.</p>
|
||||
<p>Discussion prohibited outside of
|
||||
multimedia discussion.</p>
|
||||
<p><b>Topic:</b> Any, excluding NSFW.</p>
|
||||
<p>Discussion prohibited outside of multimedia discussion.</p>
|
||||
</td>
|
||||
<td class="red" headers="public inf-multimedia">
|
||||
No
|
||||
@ -135,14 +125,11 @@
|
||||
<tr>
|
||||
<th id="sys-hardening"><a href="xmpp://sys-hardening@muc.xmpp.inferencium.net?join">Systems Hardening</a></th>
|
||||
<td class="desc" headers="description sys-hardening">
|
||||
<p>Systems Hardening security and
|
||||
privacy channel.</p>
|
||||
<p><b>Topic:</b> General security
|
||||
and privacy.</p>
|
||||
</td>
|
||||
<td class="green" headers="public sys-hardening">
|
||||
Yes (Temporarily unavailable)
|
||||
<p>Systems Hardening security and privacy channel.</p>
|
||||
<p><b>Topic:</b> General security and privacy.</p>
|
||||
</td>
|
||||
<td class="green" headers="public sys-hardening">Yes
|
||||
(Temporarily unavailable)</td>
|
||||
<td class="desc" headers="moderator sys-hardening">
|
||||
<ul>
|
||||
<li><a href="xmpp://homejacob@inferencium.net">homejacob@inferencium.net</a></li>
|
||||
@ -158,14 +145,11 @@
|
||||
<tr>
|
||||
<th id="sys-hardening-ot"><a href="xmpp://sys-hardening-ot@muc.xmpp.inferencium.net?join">Systems Hardening - Off-topic</a></th>
|
||||
<td class="desc" headers="description sys-hardening-ot">
|
||||
<p>Systems Hardening off-topic
|
||||
channel.</p>
|
||||
<p><b>Topic:</b> Any, excluding NSFW,
|
||||
security, and privacy.</p>
|
||||
</td>
|
||||
<td class="green" headers="public sys-hardening-ot">
|
||||
Yes (Temporarily unavailable)
|
||||
<p>Systems Hardening off-topic channel.</p>
|
||||
<p><b>Topic:</b> Any, excluding NSFW, security, and privacy.</p>
|
||||
</td>
|
||||
<td class="green" headers="public sys-hardening-ot">Yes
|
||||
(Temporarily unavailable)</td>
|
||||
<td class="desc" headers="moderator sys-hardening-ot">
|
||||
<ul>
|
||||
<li><a href="xmpp://homejacob@inferencium.net">homejacob@inferencium.net</a></li>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Documentation -->
|
||||
<!-- Version: 5.0.0 -->
|
||||
<!-- Version: 5.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Documentation - hardened_malloc -->
|
||||
<!-- Version: 5.0.0 -->
|
||||
<!-- Version: 5.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -34,14 +34,12 @@
|
||||
<section id="introduction">
|
||||
<p>This documentation contains instructions to use
|
||||
<a href="https://github.com/GrapheneOS/hardened_malloc">hardened_malloc</a>
|
||||
memory allocator as the system's default memory allocator. These instructions
|
||||
apply to both musl and glibc C libraries on Unix-based and Unix-like
|
||||
systems.</p>
|
||||
<p>hardened_malloc can also be used per-application and/or per-user, in which
|
||||
case root permissions are not required; this documentation focuses on
|
||||
system-wide usage of hardened_malloc, assumes root privileges, and assumes the
|
||||
compiled library will be located in a path readable and executable by all users
|
||||
of the system.</p>
|
||||
memory allocator as the system's default memory allocator. These instructions apply to both musl and
|
||||
glibc C libraries on Unix-based and Unix-like systems.</p>
|
||||
<p>hardened_malloc can also be used per-application and/or per-user, in which case root permissions are
|
||||
not required; this documentation focuses on system-wide usage of hardened_malloc, assumes root
|
||||
privileges, and assumes the compiled library will be located in a path readable and executable by all
|
||||
users of the system.</p>
|
||||
<p>For the complete hardened_malloc documentation, visit its
|
||||
<a href="https://github.com/GrapheneOS/hardened_malloc#hardened_malloc">official documentation</a>.</p>
|
||||
<p>This documentation is also available in portable AsciiDoc format in my
|
||||
@ -60,9 +58,8 @@
|
||||
</nav>
|
||||
<section id="memory_pages">
|
||||
<h2><a href="#memory_pages">Increase Permitted Amount of Memory Pages</a></h2>
|
||||
<p>Add <code>vm.max_map_count = 1048576</code> to
|
||||
<code>/etc/sysctl.conf</code> to accommodate hardened_malloc's large amount of
|
||||
guard pages.</p>
|
||||
<p>Add <code>vm.max_map_count = 1048576</code> to <code>/etc/sysctl.conf</code> to accommodate
|
||||
hardened_malloc's large amount of guard pages.</p>
|
||||
</section>
|
||||
<section id="clone_source_code">
|
||||
<h2><a href="#clone_source_code">Clone hardened_malloc Source Code</a></h2>
|
||||
@ -75,13 +72,12 @@
|
||||
<section id="compile">
|
||||
<h2><a href="#compile">Compile hardened_malloc</a></h2>
|
||||
<p><code>$ make <var><arguments></var></code></p>
|
||||
<p><code>CONFIG_N_ARENA=<var>n</var></code> can be adjusted to increase parallel
|
||||
performance at the expense of memory usage, or decrease memory usage at the
|
||||
expense of parallel performance, where <code><var>n</var></code> is a
|
||||
non-negative integer. Higher values prefer parallel performance, whereas lower
|
||||
values prefer lower memory usage. Note that having too many arenas may cause
|
||||
memory fragmentation and decrease system performance. The number of arenas has
|
||||
no impact on the security properties of hardened_malloc.</p>
|
||||
<p><code>CONFIG_N_ARENA=<var>n</var></code> can be adjusted to increase parallel performance at the
|
||||
expense of memory usage, or decrease memory usage at the expense of parallel performance, where
|
||||
<code><var>n</var></code> is a non-negative integer. Higher values prefer parallel performance,
|
||||
whereas lower values prefer lower memory usage. Note that having too many arenas may cause memory
|
||||
fragmentation and decrease system performance. The number of arenas has no impact on the security
|
||||
properties of hardened_malloc.</p>
|
||||
<table align="center">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -98,19 +94,17 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>For extra security, <code>CONFIG_SEAL_METADATA=true</code> can be used in
|
||||
order to control whether
|
||||
<p>For extra security, <code>CONFIG_SEAL_METADATA=true</code> can be used in order to control
|
||||
whether
|
||||
<a href="https://www.kernel.org/doc/html/v6.7/core-api/protection-keys.html">Memory Protection Keys</a>
|
||||
are used to disable access to all writable allocator state outside of the memory
|
||||
allocator code. It's currently disabled by default due to a significant
|
||||
performance cost for this use case on current-generation hardware. Whether or
|
||||
not this feature is enabled, the metadata is all contained within an isolated
|
||||
memory region with high-entropy random guard regions around it.</p>
|
||||
<p>For low-memory systems, <code>VARIANT=light</code> can be used to compile the
|
||||
light variant of hardened_malloc, which sacrifices some security for much less
|
||||
memory usage. This option still produces a more hardened memory allocator than
|
||||
both the default musl and glibc allocators, despite the security sacrifices over
|
||||
the full variant.</p>
|
||||
are used to disable access to all writable allocator state outside of the memory allocator code.
|
||||
It's currently disabled by default due to a significant performance cost for this use case on
|
||||
current-generation hardware. Whether or not this feature is enabled, the metadata is all contained
|
||||
within an isolated memory region with high-entropy random guard regions around it.</p>
|
||||
<p>For low-memory systems, <code>VARIANT=light</code> can be used to compile the light variant of
|
||||
hardened_malloc, which sacrifices some security for much less memory usage. This option still
|
||||
produces a more hardened memory allocator than both the default musl and glibc allocators, despite
|
||||
the security sacrifices over the full variant.</p>
|
||||
<p>For all compile-time options, see the
|
||||
<a href="https://github.com/GrapheneOS/hardened_malloc#configuration">configuration section</a>
|
||||
of hardened_malloc's extensive official documentation.</p>
|
||||
@ -121,11 +115,9 @@
|
||||
</section>
|
||||
<section id="preload_on_boot">
|
||||
<h2><a href="#preload_on_boot">Set System to Preload hardened_malloc on Boot</a></h2>
|
||||
<p><b>musl-based systems:</b> Add
|
||||
<code>LD_PRELOAD=<var><hardened_malloc path></var></code> to
|
||||
<p><b>musl-based systems:</b> Add <code>LD_PRELOAD=<var><hardened_malloc path></var></code> to
|
||||
<code>/etc/environment</code></p>
|
||||
<p><b>glibc-based systems:</b> Add
|
||||
<code><var><hardened_malloc path></var></code> to
|
||||
<p><b>glibc-based systems:</b> Add <code><var><hardened_malloc path></var></code> to
|
||||
<code>/etc/ld.so.preload</code></p>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="../sitemap.xhtml">Sitemap</a></div>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Documentation - OpenSSL Self-signed Certificate Chain -->
|
||||
<!-- Version: 5.0.0 -->
|
||||
<!-- Version: 5.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -32,13 +32,12 @@
|
||||
</nav>
|
||||
<h1 id="openssl_selfsigned_certificate_chain"><a href="#openssl_selfsigned_certificate_chain">Documentation - OpenSSL Self-signed Certificate Chain</a></h1>
|
||||
<section id="introduction">
|
||||
<p>This documentation contains the complete set of commands to create a new OpenSSL
|
||||
self-signed certificate chain with V3 subjectAltName (SAN) extensions enabled. Multiple
|
||||
SANs can be included in a certificate by adding each domain as a comma-delimited string.
|
||||
Each key can be encrypted or unencrypted, with multiple encryption options; AES
|
||||
(<code>aes128</code> or <code>aes256</code>) is recommended. Optional verification can
|
||||
also be performed between multiple levels of certificates to ensure the chain of trust
|
||||
is valid.</p>
|
||||
<p>This documentation contains the complete set of commands to create a new OpenSSL self-signed
|
||||
certificate chain with V3 subjectAltName (SAN) extensions enabled. Multiple SANs can be included in a
|
||||
certificate by adding each domain as a comma-delimited string. Each key can be encrypted or unencrypted,
|
||||
with multiple encryption options; AES (<code>aes128</code> or <code>aes256</code>) is recommended.
|
||||
Optional verification can also be performed between multiple levels of certificates to ensure the chain
|
||||
of trust is valid.</p>
|
||||
<p>This documentation is also available in portable AsciiDoc format in my
|
||||
<a href="https://src.inferencium.net/Inferencium/doc/src/branch/stable/security/openssl_selfsigned_certificate_chain.adoc">documentation source code repository</a>.</p>
|
||||
</section>
|
||||
@ -66,7 +65,8 @@
|
||||
</nav>
|
||||
<section id="create_certificate_authority_key">
|
||||
<h2><a href="#create_certificate_authority_key">Create Certificate Authority Key</a></h2>
|
||||
<p><code>openssl genrsa <var><encryption type></var> -out <var><CA key name></var>.pem <var><key size></var></code></p>
|
||||
<p><code>openssl genrsa <var><encryption type></var> -out <var><CA key name></var>.pem
|
||||
<var><key size></var></code></p>
|
||||
</section>
|
||||
<section id="verify_certificate_authority_key">
|
||||
<h2><a href="#verify_certificate_authority_key">Verify Certificate Authority Key</a></h2>
|
||||
@ -74,11 +74,13 @@
|
||||
</section>
|
||||
<section id="create_certificate_authority_certificate">
|
||||
<h2><a href="#create_certificate_authority_certificate">Create Certificate Authority Certificate</a></h2>
|
||||
<p><code>openssl req -new -x509 -days <var><days of validity></var> -extensions v3_ca -key <var><CA key name></var>.pem -out <var><CA certificate name></var>.pem</code></p>
|
||||
<p><code>openssl req -new -x509 -days <var><days of validity></var> -extensions v3_ca -key
|
||||
<var><CA key name></var>.pem -out <var><CA certificate name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="convert_certificate_to_pem_format">
|
||||
<h2><a href="#convert_certificate_to_pem_format">Convert Certificate to PEM Format</a></h2>
|
||||
<p><code>openssl x509 -in <var><CA certificate name></var>.pem -out <var><CA certificate name></var>.pem -outform PEM</code></p>
|
||||
<p><code>openssl x509 -in <var><CA certificate name></var>.pem -out
|
||||
<var><CA certificate name></var>.pem -outform PEM</code></p>
|
||||
</section>
|
||||
<section id="verify_certificate_authority_certificate">
|
||||
<h2><a href="#verify_certificate_authority_certificate">Verify Certificate Authority Certificate</a></h2>
|
||||
@ -86,7 +88,8 @@
|
||||
</section>
|
||||
<section id="create_intermediate_certificate_authority_key">
|
||||
<h2><a href="#create_intermediate_certificate_authority_key">Create Intermediate Certificate Authority Key</a></h2>
|
||||
<p><code>openssl genrsa <var><encryption type></var> -out <var><intermediate CA key name></var>.pem <var><key size></var></code></p>
|
||||
<p><code>openssl genrsa <var><encryption type></var> -out
|
||||
<var><intermediate CA key name></var>.pem <var><key size></var></code></p>
|
||||
</section>
|
||||
<section id="verify_intermediate_certificate_authority_key">
|
||||
<h2><a href="#verify_intermediate_certificate_authority_key">Verify Intermediate Certificate Authority Key</a></h2>
|
||||
@ -94,23 +97,30 @@
|
||||
</section>
|
||||
<section id="create_intermediate_certificate_authority_signing_request">
|
||||
<h2><a href="#create_intermediate_certificate_authority_signing_request">Create Intermediate Certificate Authority Signing Request</a></h2>
|
||||
<p><code>openssl req -new -sha256 -key <var><intermediate CA key name></var>.pem -out <var><intermediate CA certificate signing request name></var>.pem</code></p>
|
||||
<p><code>openssl req -new -sha256 -key <var><intermediate CA key name></var>.pem -out
|
||||
<var><intermediate CA certificate signing request name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="create_intermediate_certificate_authority_certificate">
|
||||
<h2><a href="#create_intermediate_certificate_authority_certificate">Create Intermediate Certificate Authority Certificate</a></h2>
|
||||
<p><code>openssl ca -config <var><intermediate CA configuration file></var> -extensions v3_intermediate_ca -days <var><days of validity></var> -notext -md sha256 -in <var><intermediate CA signing request name></var>.pem -out <var><intermediate CA certificate name></var>.pem</code></p>
|
||||
<p><code>openssl ca -config <var><intermediate CA configuration file></var> -extensions
|
||||
v3_intermediate_ca -days <var><days of validity></var> -notext -md sha256 -in
|
||||
<var><intermediate CA signing request name></var>.pem -out
|
||||
<var><intermediate CA certificate name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="verify_intermediate_certificate_authority_certificate">
|
||||
<h2><a href="#verify_intermediate_certificate_authority_certificate">Verify Intermediate Certificate Authority Certificate</a></h2>
|
||||
<p><code>openssl x509 -noout -text -in <var><intermediate CA certificate name></var>.pem</code></p>
|
||||
<p><code>openssl x509 -noout -text -in
|
||||
<var><intermediate CA certificate name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="verify_chain_of_trust-ca_to_intermediate">
|
||||
<h2><a href="#verify_chain_of_trust-ca_to_intermediate">Verify Chain of Trust (CA to Intermediate)</a></h2>
|
||||
<p><code>openssl verify -CAfile <var><CA certificate name></var>.pem <var><intermediate CA certificate name></var>.pem</code></p>
|
||||
<p><code>openssl verify -CAfile <var><CA certificate name></var>.pem
|
||||
<var><intermediate CA certificate name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="create_server_key">
|
||||
<h2><a href="#create_server_key">Create Server Key</a></h2>
|
||||
<p><code>openssl genrsa <var><encryption type></var> -out <var><server key name></var>.pem <var><key size></var></code></p>
|
||||
<p><code>openssl genrsa <var><encryption type></var> -out
|
||||
<var><server key name></var>.pem <var><key size></var></code></p>
|
||||
</section>
|
||||
<section id="verify_server_key">
|
||||
<h2><a href="#verify_server_key">Verify Server Key</a></h2>
|
||||
@ -118,11 +128,19 @@
|
||||
</section>
|
||||
<section id="create_server_certificate_signing_request">
|
||||
<h2><a href="#create_server_certificate_signing_request">Create Server Certificate Signing Request</a></h2>
|
||||
<p><code>openssl req -new -sha256 -subj "/C=<var><country></var>/ST=<var><state/province></var>/L=<var><locality></var>/O=<var><organization></var>/CN=<var><common name></var>" -addext "subjectAltName = DNS.1:<var><alternative DNS entry></var>" -key <var><server key name></var>.pem -out <var><server certificate signing request name></var>.pem</code></p>
|
||||
<p><code>openssl req -new -sha256 -subj "/C=<var><country></var>/ST=<var><state/province></var>/L=<var><locality></var>/O=<var><organization></var>/CN=<var><common name></var>"
|
||||
-addext "subjectAltName = DNS.1:<var><alternative DNS entry></var>" -key
|
||||
<var><server key name></var>.pem -out
|
||||
<var><server certificate signing request name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="create_server_certificate">
|
||||
<h2><a href="#create_server_certificate">Create Server Certificate</a></h2>
|
||||
<p><code>openssl x509 -sha256 -req -days <var><days of validity></var> -in <var><server certificate signing request name></var>.pem -CA <var><intermediate CA certificate name></var>.pem -CAkey <var><intermediate CA key name></var>.pem -extensions SAN -extfile <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS.1:")) -out <var><server certificate name></var>.pem</code></p>
|
||||
<p><code>openssl x509 -sha256 -req -days <var><days of validity></var> -in
|
||||
<var><server certificate signing request name></var>.pem -CA
|
||||
<var><intermediate CA certificate name></var>.pem -CAkey
|
||||
<var><intermediate CA key name></var>.pem -extensions SAN -extfile <(cat
|
||||
/etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS.1:")) -out
|
||||
<var><server certificate name></var>.pem</code></p>
|
||||
</section>
|
||||
<section id="verify_server_certificate">
|
||||
<h2><a href="#verify_server_certificate">Verify Server Certificate</a></h2>
|
||||
@ -130,7 +148,8 @@
|
||||
</section>
|
||||
<section id="verify_chain_of_trust-intermediate_to_server">
|
||||
<h2><a href="#verify_chain_of_trust-intermediate_to_server">Verify Chain of Trust (Intermediate to Server)</a></h2>
|
||||
<p><code>openssl verify -CAfile <var><intermediate CA certificate name></var>.pem <var><server certificate></var>.pem</code></p>
|
||||
<p><code>openssl verify -CAfile <var><intermediate CA certificate name></var>.pem
|
||||
<var><server certificate></var>.pem</code></p>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="../sitemap.xhtml">Sitemap</a></div>
|
||||
</body>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Index -->
|
||||
<!-- Version: 7.0.0 -->
|
||||
<!-- Version: 7.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
34
key.xhtml
34
key.xhtml
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Key -->
|
||||
<!-- Version: 9.0.0 -->
|
||||
<!-- Version: 9.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -76,8 +76,8 @@
|
||||
and
|
||||
<a href="https://codeberg.org/inference/key">Codeberg</a>
|
||||
in order to check for discrepancies between the keys</li>
|
||||
<li>Verification does not verify a person, only their devices, and can
|
||||
be defeated via coercion or other force</li>
|
||||
<li>Verification does not verify a person, only their devices, and can be defeated via coercion
|
||||
or other force</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="e2ee">
|
||||
@ -91,15 +91,11 @@
|
||||
<h4 id="xmpp-inferencium"><a href="#xmpp-inferencium">inference@inferencium.net (Main)</a></h4>
|
||||
<h5 id="xmpp-inferencium-current"><a href="#xmpp-inferencium-current">Current</a></h5>
|
||||
<h6 id="xmpp-inferencium-current-1"><a href="#xmpp-inferencium-current-1">#1</a></h6>
|
||||
<code>
|
||||
67ee49da 37bcc392 691d9151 851e4240 6b5e80c2 e7d060b5 78dfdb41 443f9c52
|
||||
</code>
|
||||
<code>67ee49da 37bcc392 691d9151 851e4240 6b5e80c2 e7d060b5 78dfdb41 443f9c52</code>
|
||||
<p><a href="xmpp:inference@inferencium.net?omemo-sid-1641576775=67ee49da37bcc392691d9151851e42406b5e80c2e7d060b578dfdb41443f9c52">xmpp:inference@inferencium.net?omemo-sid-1641576775=67ee49da37bcc392691d9151851e42406b5e80c2e7d060b578dfdb41443f9c52</a></p>
|
||||
<h5 id="xmpp-inferencium-legacy"><a href="#xmpp-inferencium-legacy">Legacy</a></h5>
|
||||
<h6 id="xmpp-inferencium-legacy-0"><a href="#xmpp-inferencium-legacy-0">#0</a></h6>
|
||||
<code>
|
||||
1bd03c6a 5e011655 2fafd697 da4fce70 63de5a83 a264a34a fcce78fe 6b06820c
|
||||
</code>
|
||||
<code>1bd03c6a 5e011655 2fafd697 da4fce70 63de5a83 a264a34a fcce78fe 6b06820c</code>
|
||||
<p><a href="xmpp:inference@inferencium.net?omemo-sid-1586888206=1bd03c6a5e0116552fafd697da4fce7063de5a83a264a34afcce78fe6b06820c">xmpp:inference@inferencium.net?omemo-sid-1586888206=1bd03c6a5e0116552fafd697da4fce7063de5a83a264a34afcce78fe6b06820c</a></p>
|
||||
</section>
|
||||
</section>
|
||||
@ -108,28 +104,20 @@
|
||||
<section id="ssh">
|
||||
<h3><a href="#ssh">SSH</a></h3>
|
||||
<p class="update_date">Updated: 2023-07-27 (UTC+00:00)</p>
|
||||
<p>Each SSH key is signed by the previous key, allowing verification of
|
||||
the chain of keys, and root of trust.</p>
|
||||
<p>Each SSH key is signed by the previous key, allowing verification of the chain of keys,
|
||||
and root of trust.</p>
|
||||
<h4 id="ssh-current"><a href="ssh-current">Current</a></h4>
|
||||
<h5 id="ssh-current-1"><a href="#ssh-current-1">#1 (2023-07-27 - present)</a></h5>
|
||||
<h6 id="ssh-current-1-fingerprint"><a href="#ssh-current-1-fingerprint">Fingerprint</a></h6>
|
||||
<code>
|
||||
SHA256:FtEVfx1CmTKMy40VwZvF4k+3TC+QhCWy+EmPRg50Nnc
|
||||
</code>
|
||||
<code>SHA256:FtEVfx1CmTKMy40VwZvF4k+3TC+QhCWy+EmPRg50Nnc</code>
|
||||
<h6 id="ssh-current-1-key"><a href="#ssh-current-1-key">Key</a></h6>
|
||||
<code>
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHPGnrIg7dI7GUqA+lTztJSrn+7QyRceajqs4iaU8UG
|
||||
</code>
|
||||
<code>ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHPGnrIg7dI7GUqA+lTztJSrn+7QyRceajqs4iaU8UG</code>
|
||||
<h4 id="ssh-legacy"><a href="#ssh-legacy">Legacy</a></h4>
|
||||
<h5 id="ssh-legacy-0"><a href="#ssh-legacy-0">#0 (2023-01-01 - 2023-07-27)</a></h5>
|
||||
<h6 id="ssh-legacy-0-fingerprint"><a href="#ssh-legacy-0-fingerprint">Fingerprint</a></h6>
|
||||
<code>
|
||||
SHA256:9Pl0nZ2UJacgm+IeEtLSZ4FOESgP1eKCtRflfPfdX9M
|
||||
</code>
|
||||
<code>SHA256:9Pl0nZ2UJacgm+IeEtLSZ4FOESgP1eKCtRflfPfdX9M</code>
|
||||
<h6 id="ssh-legacy-0-key"><a href="#ssh-legacy-0-key">Key</a></h6>
|
||||
<code>
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINs8UH2hVmNSg0qKig/9ZQt07IuOHsorRfw1doEgMuJ8
|
||||
</code>
|
||||
<code>ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINs8UH2hVmNSg0qKig/9ZQt07IuOHsorRfw1doEgMuJ8</code>
|
||||
</section>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="sitemap.xhtml">Sitemap</a></div>
|
||||
|
14
main.css
14
main.css
@ -1,10 +1,12 @@
|
||||
/* Inferencium - Website - CSS - Main */
|
||||
/* Version: 12.0.1 */
|
||||
/* Version: 12.0.2-alpha.1 */
|
||||
|
||||
/* Copyright 2022 Jake Winters */
|
||||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
|
||||
|
||||
/* Display Size - Large
|
||||
Colour Scheme - Dark */
|
||||
/* Body */
|
||||
body {
|
||||
padding-top: 40px;
|
||||
@ -19,7 +21,8 @@ body {
|
||||
|
||||
|
||||
/* Headings */
|
||||
h1, h1 a, h1 a:visited, h2, h2 a, h2 a:visited, h3, h3 a, h3 a:visited, h4, h4 a, h4 a:visited, h5, h5 a, h5 a:visited, h6, h6 a, h6 a:visited {
|
||||
h1, h1 a, h1 a:visited, h2, h2 a, h2 a:visited, h3, h3 a, h3 a:visited, h4, h4 a, h4 a:visited, h5, h5 a, h5 a:visited,
|
||||
h6, h6 a, h6 a:visited {
|
||||
text-align: left;
|
||||
line-height: 130%;
|
||||
color: #ffffff;
|
||||
@ -205,13 +208,12 @@ nav.navbar div.sitemap a, nav.navbar div.sitemap a:visited {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
|
||||
div.sitemap-small {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/* Media */
|
||||
/* Display Size - Small */
|
||||
@media (max-width: 600px) {
|
||||
|
||||
body {
|
||||
@ -285,6 +287,7 @@ div.sitemap-small {
|
||||
}
|
||||
|
||||
|
||||
/* Colour Scheme - Light */
|
||||
@media (prefers-color-scheme: light) {
|
||||
|
||||
body {
|
||||
@ -292,7 +295,8 @@ div.sitemap-small {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
h1, h1 a, h1 a:visited, h2, h2 a, h2 a:visited, h3, h3 a, h3 a:visited, h4, h4 a, h4 a:visited, h5, h5 a, h5 a:visited, h6, h6 a, h6 a:visited, code {
|
||||
h1, h1 a, h1 a:visited, h2, h2 a, h2 a:visited, h3, h3 a, h3 a:visited, h4, h4 a, h4 a:visited, h5, h5 a,
|
||||
h5 a:visited, h6, h6 a, h6 a:visited, code {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
|
17
music.xhtml
17
music.xhtml
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Music -->
|
||||
<!-- Version: 7.0.0 -->
|
||||
<!-- Version: 7.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2023 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -32,15 +32,12 @@
|
||||
</nav>
|
||||
<h1 id="music"><a href="#music">Music</a></h1>
|
||||
<section id="music_list">
|
||||
<p>This is a curated list of my personally-enjoyed music. The list
|
||||
is alphabetically-sorted A-Z, based on artist name, followed by
|
||||
track name, and is formatted as
|
||||
<code><var>ARTIST</var> - <var>TRACK</var></code>. Each item in the
|
||||
list has its own individual link which will take you to an official
|
||||
source of the item (or the best alternative when an official source
|
||||
is unavailable). It is your responsibility to comply with any local
|
||||
laws when following these links and/or consuming any media found in
|
||||
this list.</p>
|
||||
<p>This is a curated list of my personally-enjoyed music. The list is alphabetically-sorted A-Z, based
|
||||
on artist name, followed by track name, and is formatted as <code><var>ARTIST</var> -
|
||||
<var>TRACK</var></code>. Each item in the list has its own individual link which will take you to an
|
||||
official source of the item (or the best alternative when an official source is unavailable). It is your
|
||||
responsibility to comply with any local laws when following these links and/or consuming any media found
|
||||
in this list.</p>
|
||||
<ul>
|
||||
<li><a href="https://youtube.com/watch?v=_Eq_qQUPvGQ">Altare - Impulse</a></li>
|
||||
<li><a href="https://youtube.com/watch?v=mXWhf35hOXA">Anomy5 - Predator</a></li>
|
||||
|
12
news.xhtml
12
news.xhtml
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - News -->
|
||||
<!-- Version: 1.0.0 -->
|
||||
<!-- Version: 1.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2024 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
@ -47,12 +47,10 @@
|
||||
<p><a href="https://src.inferencium.net/Inferencium">Inferencium source code repositories</a>
|
||||
are now mirrored at
|
||||
<a href="https://codeberg.org/Inferencium">Codeberg</a>.
|
||||
In case of service disruption of the main Inferencium source
|
||||
code repositories, the mirrors can be used to access the source
|
||||
code.</p>
|
||||
<p>Due to terms of service restrictions, proprietary code and
|
||||
related repositories, such as firmware, are unable to be
|
||||
mirrored to Codeberg.</p>
|
||||
In case of service disruption of the main Inferencium source code repositories, the mirrors
|
||||
can be used to access the source code.</p>
|
||||
<p>Due to terms of service restrictions, proprietary code and related repositories, such as
|
||||
firmware, are unable to be mirrored to Codeberg.</p>
|
||||
</article>
|
||||
</section>
|
||||
<div class="sitemap-small"><a href="sitemap.xhtml">Sitemap</a></div>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Sitemap (HTML) -->
|
||||
<!-- Version: 1.0.0 -->
|
||||
<!-- Version: 1.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2024 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
@ -1,14 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Inferencium - Website - Sitemap (XML) -->
|
||||
<!-- Version: 1.0.0 -->
|
||||
<!-- Version: 1.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2024 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
||||
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
<url>
|
||||
<loc>https://inferencium.net/</loc>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- Inferencium - Website - Source -->
|
||||
<!-- Version: 8.0.0 -->
|
||||
<!-- Version: 8.0.1-alpha.1 -->
|
||||
|
||||
<!-- Copyright 2022 Jake Winters -->
|
||||
<!-- SPDX-License-Identifier: BSD-3-Clause -->
|
||||
|
Loading…
x
Reference in New Issue
Block a user