<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.fassag.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CRYSTL</id>
	<title>FASSAG Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fassag.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CRYSTL"/>
	<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php/Special:Contributions/CRYSTL"/>
	<updated>2026-07-28T10:52:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=322</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=322"/>
		<updated>2026-07-08T04:17:14Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since putting definitions of words in any relevant article is both unnecessary clutter and also very redundant, this page is intended to be a catch all for any term that needs further explanation, but there is not enough written about it for its own page. If an entry in the glossary is becoming too complex, consider creating its own page, and linking to it from here. Don&#039;t remove it from here until you have confirmed that nothing else links to it.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
While security is a very broad concept that has [[wikipedia:Security|many definitions]], in the concept of software, it mainly refers to ensuring someone cannot interact with your devices in a way that you do not want. For example, running software on your computer without permission. Security is most useful when thought of through the lens of [[Glossary#Threat modelling|threat modelling.]]&lt;br /&gt;
&lt;br /&gt;
=== Threat Modelling ===&lt;br /&gt;
Threat modelling is the process of planning out how someone might interact with your device in a way that you do not want, and making a plan to prevent it. For example, if you do not want someone to be able to take your laptop apart and read your files off of your [[Glossary#Drive|drive]], you could encrypt it. It&#039;s important to understand what exactly you are concerned about, instead of just trying to &amp;quot;be secure.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Drive ===&lt;br /&gt;
A drive, or sometimes disk, is a device that contains data, for long periods of time. This is different from RAM, which only stores memory temporarily. The main tradeoff being that reading and writing to a drive is much slower than RAM. Drives can come in many forms, such as [[Glossary#SSD|SSD]], [[Glossary#HDD|HDD]], [[Glossary#(e)MMC|eMMC]], etc. The term drive can be a bit confusing though, as drives used to refer to devices with removable media, like [[Glossary#CD|CD]], [[Glossary#Floppy Disk|Floppy]], and even old Hard Disks. In present day though, drives rarely have removable media. The media itself cannot be read or interacted with without the hardware to &#039;&#039;drive&#039;&#039; it, which is why it is called a drive.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
Random Access Memory, often just called &amp;quot;memory&amp;quot; is a device that contains data &#039;&#039;only&#039;&#039; while it is powered, but can be read from and written to very quickly. It is very important to note that RAM is intended &#039;&#039;temporary&#039;&#039; working memory, which is critical for a [[Glossary#CPU|CPU]] to function. &lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
Central Processing Unit is an [[Glossary#IC|IC]] that performs the majority of the processing or &amp;quot;thinking&amp;quot; operations for the computer. CPUs take in instructions, and then refer to a list for what each instruction should do, and then perform that action. For example, if the CPU receives an instruction telling it to copy some data, it will do so! The list of instructions is called the Instruction Set Architecture (ISA).&lt;br /&gt;
&lt;br /&gt;
=== IC ===&lt;br /&gt;
Integrated Circuit, or sometimes &amp;quot;chip&amp;quot;, is an electronic &#039;&#039;circuit&#039;&#039;, &#039;&#039;integrated&#039;&#039; into a single piece of silicon. The advantages of ICs is that they can operate much faster, use much less electricity for the same operations, and be much more durable than a larger more fragile board with components attached to it.&lt;br /&gt;
&lt;br /&gt;
=== Circuit ===&lt;br /&gt;
Circuits, specifically electronic circuits, are the most basic concept that defines a computer. Circuits fundamentally are just electricity flowing and being directed through various components so that they can do useful things. Like a circuit starting at a battery, passing through a motor to turn a fan, and then returning to the battery. Computers use circuits to direct electricity to various components so that they can do useful things for us!&lt;br /&gt;
&lt;br /&gt;
=== SSD ===&lt;br /&gt;
Solid State Drives are drives which have no moving parts. These drives instead of having disks, have flash chips on a board that contain the data. There are a few different types of flash chip, but most commonly [[Glossary#NAND|NAND]] is used. SSDs are usually removable from the device, and can be upgraded as needed, though some devices do have their SSD [[Glossary#Soldering|soldered]] to the motherboard. SSDs are usually either SATA or NVME, with NVME offering faster speeds, but usually at a higher price.&lt;br /&gt;
&lt;br /&gt;
=== HDD ===&lt;br /&gt;
Hard Disk Drives are [[Glossary#Drive|drives]] which contain a spinning metal disk that can be magnetized. Depending on how the disk is magnetized, it stores a corresponding 1 or 0 bit. Very old hard drives, for example for the Centurion computer, had removable disks, or &amp;quot;platters&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== NAND ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== (e)MMC ===&lt;br /&gt;
(Embedded) [[Glossary#Multi-Media|Multi-Media]] Card is a standard of flash chip typically used in products like SD cards. Though some cheaper smartphones and laptops do also used them. Compared to SSDs, they are usually much slower, though they are usually faster than HDDs. The main advantage is that they are quite cheap when compared to more expensive SSD storage.&lt;br /&gt;
&lt;br /&gt;
=== CD ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Floppy Disk ===&lt;br /&gt;
Floppy Disks, or sometimes &amp;quot;Floppies&amp;quot;, are an older form of storage disk named after their ability to bend. Compared to modern drives, floppies were extremely small, only being able to store a few [[Glossary#Bytes|MB]] of data.&lt;br /&gt;
&lt;br /&gt;
=== NVME ===&lt;br /&gt;
Non-Volatile Memory Express&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== SATA ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Bytes ===&lt;br /&gt;
Bytes are the most common way to count data. Bytes are made of 8 [[Glossary#Bits|bits]]. Bytes are often abbreviated using the metric system, such as Kilobyte (KB), Megabyte (MB), Gigabyte (GB), etc. Which represent a thousand bytes, a million bytes, and a billion bytes, respectively. ( Need to talk about like Mibibytes )&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Bits ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Multi-Media ===&lt;br /&gt;
Multi-Media is a term commonly used to describe a type of data storage that can contain any type of data. Older storage media sometimes only allowed for one type of media, though really, this was not very common, and most media was multi-media. CDs and DVDs for example, could be formatted either to contain music, or to contain arbitrary files, making them Multi-Media.&lt;br /&gt;
&lt;br /&gt;
=== Soldering ===&lt;br /&gt;
Soldering is the process of connecting metal pieces together with a metal that melts at lower temperatures, like lead. Though lead is not used much anymore, as it is toxic, and usually low-temperature alloys are used instead. The main disadvantage of soldering is that it is very difficult for an inexperienced user to remove a soldered component. A soldered SSD for example, would be exceptionally difficult for a typical user to replace, and is generally done to make the device impossible to repair and upgrade.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=321</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=321"/>
		<updated>2026-07-08T02:18:34Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: revisions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since putting definitions of words in any relevant article is both unnecessary clutter and also very redundant, this page is intended to be a catch all for any term that needs further explanation, but there is not enough written about it for its own page. If an entry in the glossary is becoming too complex, consider creating its own page, and linking to it from here. Don&#039;t remove it from here until you have confirmed that nothing else links to it.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
While security is a very broad concept that has [[wikipedia:Security|many definitions]], in the concept of software, it mainly refers to ensuring someone cannot interact with your devices in a way that you do not want. For example, running software on your computer without permission. Security is most useful when thought of through the lens of [[Glossary#Threat modelling|threat modelling.]]&lt;br /&gt;
&lt;br /&gt;
=== Threat Modelling ===&lt;br /&gt;
Threat modelling is the process of planning out how someone might interact with your device in a way that you do not want, and making a plan to prevent it. For example, if you do not want someone to be able to take your laptop apart and read your files off of your [[Glossary#Drive|drive]], you could encrypt it. It&#039;s important to understand what exactly you are concerned about, instead of just trying to &amp;quot;be secure.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Drive ===&lt;br /&gt;
A drive, or sometimes disk, is a device that contains data, for long periods of time. This is different from RAM, which only stores memory temporarily. The main tradeoff being that reading and writing to a drive is much slower than RAM. Drives can come in many forms, such as [[Glossary#SSD|SSD]], [[Glossary#HDD|HDD]], [[Glossary#(e)MMC|eMMC]], etc. The term drive can be a bit confusing though, as drives used to refer to devices with removable media, like [[Glossary#CD|CD]], [[Glossary#Floppy Disk|Floppy]], and even old Hard Disks. In present day though, drives rarely have removable media. The media itself cannot be read or interacted without without the hardware to &#039;&#039;drive&#039;&#039; it, which is why it was called a drive.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
Random Access Memory, often just called &amp;quot;memory&amp;quot; is a device that contains data &#039;&#039;only&#039;&#039; while it is powered, but can be read from and written to very quickly. It is very important to note that RAM is intended &#039;&#039;temporary&#039;&#039; working memory, which is critical for a [[Glossary#CPU|CPU]] to function. &lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
Central Processing Unit is an [[Glossary#IC|IC]] that performs the majority of the processing or &amp;quot;thinking&amp;quot; operations for the computer. CPUs take in instructions, and then refer to a list for what each instruction should do, and then perform that action. For example, if the CPU receives an instruction telling it to copy some data, it will do so! The list of instructions is called the Instruction Set Architecture (ISA).&lt;br /&gt;
&lt;br /&gt;
=== IC ===&lt;br /&gt;
Integrated Circuit, or sometimes &amp;quot;chip&amp;quot;, is an electronic &#039;&#039;circuit&#039;&#039;, &#039;&#039;integrated&#039;&#039; into a single piece of silicon. The advantages of ICs is that they can operate much faster, use much less electricity for the same operations, and be much more durable than a larger more fragile board with components attached to it.&lt;br /&gt;
&lt;br /&gt;
=== Circuit ===&lt;br /&gt;
Circuits, specifically electronic circuits, are the most basic concept that defines a computer. Circuits fundamentally are just electricity flowing and being directed through various components so that they can do useful things. Like a circuit starting at a battery, passing through a motor to turn a fan, and then returning to the battery. Computers use circuits to direct electricity to various components so that they can do useful things for us!&lt;br /&gt;
&lt;br /&gt;
=== SSD ===&lt;br /&gt;
Solid State Drives are drives which have no moving parts. These drives instead of having disks, have flash chips on a board that contain the data. There are a few different types of flash chip, but most commonly [[Glossary#NAND|NAND]] is used. SSDs are usually removable from the device, and can be upgraded as needed, though some devices do have their SSD [[Glossary#Soldering|soldered]] to the motherboard. SSDs are usually either SATA or NVME, with NVME offering faster speeds, but usually at a higher price.&lt;br /&gt;
&lt;br /&gt;
=== HDD ===&lt;br /&gt;
Hard Disk Drives are [[Glossary#Drive|drives]] which contain a spinning metal disk that can be magnetized. Depending on how the disk is magnetized, it stores a corresponding 1 or 0 bit. Very old hard drives, for example for the Centurion computer, had removable disks, or &amp;quot;platters&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== NAND ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== (e)MMC ===&lt;br /&gt;
(Embedded) [[Glossary#Multi-Media|Multi-Media]] Card is a standard of flash chip typically used in products like SD cards. Though some cheaper smartphones and laptops do also used them. Compared to SSDs, they are usually much slower, though they are usually faster than HDDs. The main advantage is that they are quite cheap when compared to more expensive SSD storage.&lt;br /&gt;
&lt;br /&gt;
=== CD ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Floppy Disk ===&lt;br /&gt;
Floppy Disks, or sometimes &amp;quot;Floppies&amp;quot;, are an older form of storage disk named after their ability to bend. Compared to modern drives, floppies were extremely small, only being able to store a few [[Glossary#Bytes|MB]] of data.&lt;br /&gt;
&lt;br /&gt;
=== NVME ===&lt;br /&gt;
Non-Volatile Memory Express&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== SATA ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Bytes ===&lt;br /&gt;
Bytes are the most common way to count data. Bytes are made of 8 [[Glossary#Bits|bits]]. Bytes are often abbreviated using the metric system, such as Kilobyte (KB), Megabyte (MB), Gigabyte (GB), etc. Which represent a thousand bytes, a million bytes, and a billion bytes, respectively. ( Need to talk about like Mibibytes )&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Bits ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Multi-Media ===&lt;br /&gt;
Multi-Media is a term commonly used to describe a type of data storage that can contain any type of data. Older storage media sometimes only allowed for one type of media, though really, this was not very common, and most media was multi-media. CDs and DVDs for example, could be formatted either to contain music, or to contain arbitrary files, making them Multi-Media.&lt;br /&gt;
&lt;br /&gt;
=== Soldering ===&lt;br /&gt;
Soldering is the process of connecting metal pieces together with a metal that melts at lower temperatures, like lead. Though lead is not used much anymore, as it is toxic, and usually low-temperature alloys are used instead. The main disadvantage of soldering is that it is very difficult for an inexperienced user to remove a soldered component. A soldered SSD for example, would be exceptionally difficult for a typical user to replace, and is generally done to make the device impossible to repair and upgrade.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=315</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=315"/>
		<updated>2026-07-08T01:00:43Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS Security on Linux ==&lt;br /&gt;
LUKS is the [[Linux anatomy|Linux]] Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important for [[Glossary#Security|security]]. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
=== Ciphers ===&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
=== On-disk [[Format]] ===&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
=== [[Initialization]] [[Vectors]] ( IV ) ===&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
=== [[Password]] [[Hashing]] ===&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
=== [[Iteration]] Time ===&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming you know what partition you want to use, setting up the disk is as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, these settings are the default on the latest cryptsetup (with the exception of &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt;). Setting them manually ensures that they are correct on older versions. You can check what the defaults are for your system by running &amp;lt;code&amp;gt;cryptsetup --help&amp;lt;/code&amp;gt;. You can then verify that it was setup correctly with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup, it can be opened with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;dm_name&amp;quot; can be set to whatever you like, and the disk will be available at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To [[format]] it, you can use the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=314</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=314"/>
		<updated>2026-07-08T01:00:14Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added numerous entries to the glossary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since putting definitions of words in any relevant article is both unnecessary clutter and also very redundant, this page is intended to be a catch all for any term that needs further explanation, but there is not enough written about it for its own page. If an entry in the glossary is becoming too complex, consider creating its own page, and linking to it from here. Don&#039;t remove it from here until you have confirmed that nothing else links to it.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
While security is a very broad concept that has [[wikipedia:Security|many definitions]], in the concept of software, it mainly refers to ensuring someone cannot interact with your devices in a way that you do not want. For example, running software on your computer without permission. Security is most useful when thought of through the lens of [[Glossary#Threat modelling|threat modelling.]]&lt;br /&gt;
&lt;br /&gt;
=== Threat Modelling ===&lt;br /&gt;
Threat modelling is the process of planning out how someone might interact with your device in a way that you do not want, and making a plan to prevent it. For example, if you do not want someone to be able to take your laptop apart and read your files off of your [[Glossary#Drive|drive]], you could encrypt it. It&#039;s important to understand what exactly you are concerned about, instead of just trying to &amp;quot;be secure.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Drive ===&lt;br /&gt;
A drive, or sometimes disk, is a device that contains data, for long periods of time. This is different from RAM, which only stores memory temporarily. The main tradeoff being that reading and writing to a drive is much slower than RAM. Drives can come in many forms, such as [[Glossary#SSD|SSD]], [[Glossary#HDD|HDD]], [[Glossary#(e)MMC|eMMC]], etc. The term drive can be a bit confusing though, as drives used to refer to devices with removable media, like [[Glossary#CD|CD]], [[Glossary#Floppy Disk|Floppy]], and even old Hard Disks. In present day though, drives rarely have removable media.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
Random Access Memory, often just called &amp;quot;memory&amp;quot; is a device that contains data while it is powered, but can be read from and written to very quickly. RAM is critical for a [[Glossary#CPU|CPU]] to function. &lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
Central Processing Unit is an [[Glossary#IC|IC]] that performs the majority of the processing or &amp;quot;thinking&amp;quot; operations for the computer. CPUs take in [[Glossary#Bytes|bytes]], and then refer to a list of instructions for what each byte should do, and then perform that action. For example, if the CPU receives a byte telling it to copy some data, it will do so! The list of instructions is called the Instruction Set Architecture (ISA).&lt;br /&gt;
&lt;br /&gt;
=== IC ===&lt;br /&gt;
Integrated Circuit, or sometimes &amp;quot;chip&amp;quot;, is a complete electronic circuit, integrated into a single piece of silicon. The advantages of ICs is that they can operate much faster, use much less electricity for the same operations, and be much more durable than a larger more fragile board with components attached to it.&lt;br /&gt;
&lt;br /&gt;
=== Circuit ===&lt;br /&gt;
Circuits, specifically electronic circuits, are the most basic concept that defines a computer. Circuits fundamentally are just electricity flowing and being directed through various components so that they can do useful things. Like a circuit starting at a battery, passing through a motor to turn a fan, and then returning to the battery. Computers use circuits to direct electricity to various components so that they can do useful things for us!&lt;br /&gt;
&lt;br /&gt;
=== SSD ===&lt;br /&gt;
Solid State Drives are drives which have no moving parts. These drives instead of having disks, have flash chips on a board that contain the data. There are a few different types of flash chip, but most commonly [[Glossary#NAND|NAND]] is used. SSDs are usually removable from the device, and can be upgraded as needed, though some devices do have their SSD [[Glossary#Soldering|soldered]] to the motherboard. SSDs are usually either SATA or NVME, with NVME offering faster speeds, but usually at a higher price.&lt;br /&gt;
&lt;br /&gt;
=== HDD ===&lt;br /&gt;
Hard Disk Drives are [[Glossary#Drive|drives]] which contain a spinning metal disk that can be magnetized. Depending on how the disk is magnetized, it will send out a corresponding 1 or 0 bit. Very old hard drives, for example for the Centurion computer, had removable disks, or &amp;quot;platters&amp;quot;, which is why it was called a drive. Even though this fairly quickly stopped being the case, the name has stuck around, and now many storage devices are called drives.&lt;br /&gt;
&lt;br /&gt;
=== NAND ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== (e)MMC ===&lt;br /&gt;
(Embedded) [[Glossary#Multi-Media|Multi-Media]] Card is a standard of flash chip typically used in products like SD cards. Though some cheaper smartphones and laptops do also used them. Compared to SSDs, they are usually much slower, though they are usually faster than HDDs. The main advantage is that they are quite cheap when compared to more expensive SSD storage.&lt;br /&gt;
&lt;br /&gt;
=== CD ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Floppy Disk ===&lt;br /&gt;
Floppy Disks, or sometimes &amp;quot;Floppies&amp;quot;, are an older form of storage disk named after their ability to bend. Compared to modern drives, floppies were extremely small, only being able to store a few [[Glossary#Bytes|MB]] of data.&lt;br /&gt;
&lt;br /&gt;
=== NVME ===&lt;br /&gt;
Non-Volatile Memory Express&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== SATA ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Bytes ===&lt;br /&gt;
Bytes are the most common way to count data. Bytes are made of 8 [[Glossary#Bits|bits]]. Bytes are often abbreviated using the metric system, such as Kilobyte (KB), Megabyte (MB), Gigabyte (GB), etc. Which represent a thousand bytes, a million bytes, and a billion bytes, respectively. ( Need to talk about like Mibibytes )&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Bits ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
=== Multi-Media ===&lt;br /&gt;
Multi-Media is a term commonly used to describe a type of data storage that can contain any type of data. Older storage media sometimes only allowed for one type of media, though really, this was not very common, and most media was multi-media. CDs and DVDs for example, could be formatted either to contain music, or to contain arbitrary files, making them Multi-Media.&lt;br /&gt;
&lt;br /&gt;
=== Soldering ===&lt;br /&gt;
Soldering is the process of connecting metal pieces together with a metal that melts at lower temperatures, like lead. Though lead is not used much anymore, as it is toxic, and usually low-temperature alloys are used instead. The main disadvantage of soldering is that it is very difficult for an inexperienced user to remove a soldered component. A soldered SSD for example, would be exceptionally difficult for a typical user to replace, and is generally done to make the device impossible to repair and upgrade.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=306</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Glossary&amp;diff=306"/>
		<updated>2026-07-07T23:53:30Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: create glossary, add security&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since putting definitions of words in any relevant article is both unnecessary clutter and also very redundant, this page is intended to be a catch all for any term that needs further explanation, but there is not enough written about it for its own page. If an entry in the glossary is becoming too complex, consider creating its own page, and linking to it from here. Don&#039;t remove it from here until you have confirmed that nothing else links to it.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
While security is a very broad concept that has [[wikipedia:Security|many definitions]], in the concept of software, it mainly refers to ensuring someone cannot interact with your devices in a way that you do not want. For example, accessing data on a device without your permission. Security is most useful when though of through the concept of threat modelling.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=305</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=305"/>
		<updated>2026-07-01T04:59:03Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: rewording for clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux anatomy|Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming you know what partition you want to use, setting up the disk is as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, these settings are the default on the latest cryptsetup (with the exception of &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt;). Setting them manually ensures that they are correct on older versions. You can check what the defaults are for your system by running &amp;lt;code&amp;gt;cryptsetup --help&amp;lt;/code&amp;gt;. You can then verify that it was setup correctly with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup, it can be opened with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;dm_name&amp;quot; can be set to whatever you like, and the disk will be available at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To [[format]] it, you can use the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=304</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=304"/>
		<updated>2026-07-01T01:34:10Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: link to linux anatomy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux anatomy|Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming you know what partition you want to use, setting up the disk is as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, these settings are the default on the latest cryptsetup (with the exception of &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt;). Setting them manually ensures that they are correct on older versions. You can check what the defaults are for your system by running &amp;lt;code&amp;gt;cryptsetup --help&amp;lt;/code&amp;gt;. You can then verify that it was setup correctly with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup, it can be opened with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;dm_name&amp;quot; can be set to whatever you like, and the disk will be available at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it, via something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=303</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=303"/>
		<updated>2026-07-01T01:29:19Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: /* Benchmarking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Advanced&lt;br /&gt;
}}For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Intermediate Guide gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand. If you just want to know the &amp;quot;best&amp;quot; [[command]] to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are [[Serpent]] and [[AES]]. &lt;br /&gt;
&lt;br /&gt;
[[Twofish]] &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option. &lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual [[implementation]]. Serpent has potential [[Vulnerability|vulnerabilities]] depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having [[hardware acceleration]] for AES has a number of advantages for security, most notably resistance to [[Side-channel attack|side-channel attacks]], but of course also speed. Some [[CPU|CPUs]] however, usually CPUs that aren&#039;t x86 based, do not have hardware accelerated AES. While it&#039;s theoretically possible that your CPU may have a vulnerability, as far as we are aware, no vulnerabilities have been reported on any present or past chip with AES support. Make sure your [[microcode]] is up to date! Practically speaking, the advantages of having hardware accelerated AES make it more secure than using Serpent in nearly all cases.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks. [[CBC]] is an older on-disk format and should not really be used. It has [[malleability]] vulnerabilities, and also, specially-crafted files can be [[fingerprinted]]. XTS is better at mitigating these issues, so it&#039;s the recommended default. It&#039;s also hardware accelerated on modern x86 CPUs. If your CPU does not have hardware accelerated AES and XTS, you &#039;&#039;may&#039;&#039; want to use CBC, for better speeds.&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to add some randomness different blocks of the disk, so that overall patterns cannot be discovered. [[ESSIV]] was previously set as default for CBC to mitigate the fingerprinting issue, but this does not help CBC&#039;s issues with malleability. Since XTS has been used, plain64 has been the default. Since XTS is not vulnerable to fingerprinting, it does not need the added overhead of ESSIV.&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing. Since it&#039;s hard to make ( and remember ) a very secure password, it&#039;s still a good idea to hash your password. &lt;br /&gt;
&lt;br /&gt;
The best option is generally Argon2, since it is optimized to be impossible to [[Brute-force attack|brute-force]] on devices with limited memory, like [[GPU|GPUs]]. The point is to force the attacker to use their CPU, which is not usually not nearly as quick as a GPU for this kind of task. Unless you&#039;re primarily concerned about some [[Advanced Persistent Threat|APT]] trying to decrypt your data, it is a pretty good tradeoff. &lt;br /&gt;
&lt;br /&gt;
Argon2 has a few different variants. Argon2i is weakest to brute-forcing, but has strong side-channel protection. It&#039;s generally not safe to use 2i with anything less than 10 iterations. Similarly, while Argon2d is most secure against brute-force attacks, it is more susceptible to side-channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice. &lt;br /&gt;
&lt;br /&gt;
If your device is very memory constrained (like under 4GB), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 instead. You will want to increase the iteration time as high as you can tolerate, as it is far weaker to GPU brute-forcing. &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password. More iteration is better, and it&#039;s just a question of how long you are willing to spend waiting for your computer to has your password. If your password is very insecure though, a long has will not slow down an attacker much. 2 seconds ( 2000ms ) is the recommended default. Make sure your computer is not set to any &amp;quot;low-power mode&amp;quot; when setting up the disk, as this will affect the time it takes to hash.&lt;br /&gt;
&lt;br /&gt;
See the [[Password]] Guide for more information about making a secure password.&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark&amp;lt;/code&amp;gt;.&lt;br /&gt;
 &amp;lt;code&amp;gt;# Tests are approximate using memory only (no storage IO).&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha1      1736052 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha256    3355443 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha512    1096836 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-ripemd160  434733 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-whirlpool  364088 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;    Algorithm |       Key |      Encryption |      Decryption&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        256b       445.6 MiB/s       401.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        256b       220.3 MiB/s       236.9 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        512b       445.2 MiB/s       437.6 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see from this sample output, &amp;lt;code&amp;gt;aes-xts&amp;lt;/code&amp;gt; is the fastest! Assuming you&#039;re on an x86 machine, this will almost certainly also be the case for you. You&#039;ll also notice Argon2i only has 4 iterations here, making it unsafe to use. You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example, to see how many iterations it achieves.&lt;br /&gt;
&lt;br /&gt;
== [[Entropy]] ==&lt;br /&gt;
Though unlikely, to avoid an [[Entropy Starvation|entropy starved]] situation, you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a lot of debate and conflicting information online about the difference between &amp;lt;code&amp;gt;/dev/random&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/dev/urandom&amp;lt;/code&amp;gt; online. The main difference is that &amp;lt;code&amp;gt;/dev/random&amp;lt;/code&amp;gt; will wait until it detects enough entropy has been gathered. Since it only affects when you initially setup the disk though, waiting for it to gather enough entropy is generally a good idea. Whether its method of ensuring it has gathered enough data is effective, is also somewhat debated, but it certainly doesn&#039;t hurt.&lt;br /&gt;
&lt;br /&gt;
An easy way to ensure you have enough entropy, is to gather it from an external source. For example, you can run: &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;. This command gathers random bytes from [https://random.org random.org]. Using an external source like this is ok, since Linux has ways to gather entropy besides this that an attacker would not be able to replicate.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=302</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=302"/>
		<updated>2026-07-01T01:25:37Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: move Disk Setup to intermediate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Advanced&lt;br /&gt;
}}For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Intermediate Guide gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand. If you just want to know the &amp;quot;best&amp;quot; [[command]] to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are [[Serpent]] and [[AES]]. &lt;br /&gt;
&lt;br /&gt;
[[Twofish]] &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option. &lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual [[implementation]]. Serpent has potential [[Vulnerability|vulnerabilities]] depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having [[hardware acceleration]] for AES has a number of advantages for security, most notably resistance to [[Side-channel attack|side-channel attacks]], but of course also speed. Some [[CPU|CPUs]] however, usually CPUs that aren&#039;t x86 based, do not have hardware accelerated AES. While it&#039;s theoretically possible that your CPU may have a vulnerability, as far as we are aware, no vulnerabilities have been reported on any present or past chip with AES support. Make sure your [[microcode]] is up to date! Practically speaking, the advantages of having hardware accelerated AES make it more secure than using Serpent in nearly all cases.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks. [[CBC]] is an older on-disk format and should not really be used. It has [[malleability]] vulnerabilities, and also, specially-crafted files can be [[fingerprinted]]. XTS is better at mitigating these issues, so it&#039;s the recommended default. It&#039;s also hardware accelerated on modern x86 CPUs. If your CPU does not have hardware accelerated AES and XTS, you &#039;&#039;may&#039;&#039; want to use CBC, for better speeds.&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to add some randomness different blocks of the disk, so that overall patterns cannot be discovered. [[ESSIV]] was previously set as default for CBC to mitigate the fingerprinting issue, but this does not help CBC&#039;s issues with malleability. Since XTS has been used, plain64 has been the default. Since XTS is not vulnerable to fingerprinting, it does not need the added overhead of ESSIV.&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing. Since it&#039;s hard to make ( and remember ) a very secure password, it&#039;s still a good idea to hash your password. &lt;br /&gt;
&lt;br /&gt;
The best option is generally Argon2, since it is optimized to be impossible to [[Brute-force attack|brute-force]] on devices with limited memory, like [[GPU|GPUs]]. The point is to force the attacker to use their CPU, which is not usually not nearly as quick as a GPU for this kind of task. Unless you&#039;re primarily concerned about some [[Advanced Persistent Threat|APT]] trying to decrypt your data, it is a pretty good tradeoff. &lt;br /&gt;
&lt;br /&gt;
Argon2 has a few different variants. Argon2i is weakest to brute-forcing, but has strong side-channel protection. It&#039;s generally not safe to use 2i with anything less than 10 iterations. Similarly, while Argon2d is most secure against brute-force attacks, it is more susceptible to side-channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice. &lt;br /&gt;
&lt;br /&gt;
If your device is very memory constrained (like under 4GB), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 instead. You will want to increase the iteration time as high as you can tolerate, as it is far weaker to GPU brute-forcing. &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password. More iteration is better, and it&#039;s just a question of how long you are willing to spend waiting for your computer to has your password. If your password is very insecure though, a long has will not slow down an attacker much. 2 seconds ( 2000ms ) is the recommended default. Make sure your computer is not set to any &amp;quot;low-power mode&amp;quot; when setting up the disk, as this will affect the time it takes to hash.&lt;br /&gt;
&lt;br /&gt;
See the [[Password]] Guide for more information about making a secure password.&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark&amp;lt;/code&amp;gt;.&lt;br /&gt;
 &amp;lt;code&amp;gt;# Tests are approximate using memory only (no storage IO).&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha1      1736052 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha256    3355443 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha512    1096836 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-ripemd160  434733 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-whirlpool  364088 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;    Algorithm |       Key |      Encryption |      Decryption&amp;lt;/code&amp;gt;[[entropy]]&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        256b       445.6 MiB/s       401.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        256b       220.3 MiB/s       236.9 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        512b       445.2 MiB/s       437.6 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see from this sample output, &amp;lt;code&amp;gt;aes-xts&amp;lt;/code&amp;gt; is the fastest! Assuming you&#039;re on an x86 machine, this will almost certainly also be the case for you. You&#039;ll also notice Argon2i only has 4 iterations here, making it unsafe to use. You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example, to see how many iterations it achieves.&lt;br /&gt;
&lt;br /&gt;
== [[Entropy]] ==&lt;br /&gt;
Though unlikely, to avoid an [[Entropy Starvation|entropy starved]] situation, you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a lot of debate and conflicting information online about the difference between &amp;lt;code&amp;gt;/dev/random&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/dev/urandom&amp;lt;/code&amp;gt; online. The main difference is that &amp;lt;code&amp;gt;/dev/random&amp;lt;/code&amp;gt; will wait until it detects enough entropy has been gathered. Since it only affects when you initially setup the disk though, waiting for it to gather enough entropy is generally a good idea. Whether its method of ensuring it has gathered enough data is effective, is also somewhat debated, but it certainly doesn&#039;t hurt.&lt;br /&gt;
&lt;br /&gt;
An easy way to ensure you have enough entropy, is to gather it from an external source. For example, you can run: &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;. This command gathers random bytes from [https://random.org random.org]. Using an external source like this is ok, since Linux has ways to gather entropy besides this that an attacker would not be able to replicate.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=301</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=301"/>
		<updated>2026-07-01T01:24:26Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: move Disk Setup to intermediate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming you know what partition you want to use, setting up the disk is as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, these settings are the default on the latest cryptsetup (with the exception of &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt;). Setting them manually ensures that they are correct on older versions. You can check what the defaults are for your system by running &amp;lt;code&amp;gt;cryptsetup --help&amp;lt;/code&amp;gt;. You can then verify that it was setup correctly with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup, it can be opened with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;dm_name&amp;quot; can be set to whatever you like, and the disk will be available at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it, via something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=300</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=300"/>
		<updated>2026-07-01T01:21:27Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: remove draft tempalte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=299</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=299"/>
		<updated>2026-07-01T01:20:11Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: reworked this page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Advanced&lt;br /&gt;
}}For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Intermediate Guide gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand. If you just want to know the &amp;quot;best&amp;quot; [[command]] to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are [[Serpent]] and [[AES]]. &lt;br /&gt;
&lt;br /&gt;
[[Twofish]] &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option. &lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual [[implementation]]. Serpent has potential [[Vulnerability|vulnerabilities]] depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having [[hardware acceleration]] for AES has a number of advantages for security, most notably resistance to [[Side-channel attack|side-channel attacks]], but of course also speed. Some [[CPU|CPUs]] however, usually CPUs that aren&#039;t x86 based, do not have hardware accelerated AES. While it&#039;s theoretically possible that your CPU may have a vulnerability, as far as we are aware, no vulnerabilities have been reported on any present or past chip with AES support. Make sure your [[microcode]] is up to date! Practically speaking, the advantages of having hardware accelerated AES make it more secure than using Serpent in nearly all cases.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks. [[CBC]] is an older on-disk format and should not really be used. It has [[malleability]] vulnerabilities, and also, specially-crafted files can be [[fingerprinted]]. XTS is better at mitigating these issues, so it&#039;s the recommended default. It&#039;s also hardware accelerated on modern x86 CPUs. If your CPU does not have hardware accelerated AES and XTS, you &#039;&#039;may&#039;&#039; want to use CBC, for better speeds.&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to add some randomness different blocks of the disk, so that overall patterns cannot be discovered. [[ESSIV]] was previously set as default for CBC to mitigate the fingerprinting issue, but this does not help CBC&#039;s issues with malleability. Since XTS has been used, plain64 has been the default. Since XTS is not vulnerable to fingerprinting, it does not need the added overhead of ESSIV.&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing. Since it&#039;s hard to make ( and remember ) a very secure password, it&#039;s still a good idea to hash your password. &lt;br /&gt;
&lt;br /&gt;
The best option is generally Argon2, since it is optimized to be impossible to [[Brute-force attack|brute-force]] on devices with limited memory, like [[GPU|GPUs]]. The point is to force the attacker to use their CPU, which is not usually not nearly as quick as a GPU for this kind of task. Unless you&#039;re primarily concerned about some [[Advanced Persistent Threat|APT]] trying to decrypt your data, it is a pretty good tradeoff. &lt;br /&gt;
&lt;br /&gt;
Argon2 has a few different variants. Argon2i is weakest to brute-forcing, but has strong side-channel protection. It&#039;s generally not safe to use 2i with anything less than 10 iterations. Similarly, while Argon2d is most secure against brute-force attacks, it is more susceptible to side-channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice. &lt;br /&gt;
&lt;br /&gt;
If your device is very memory constrained (like under 4GB), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 instead. You will want to increase the iteration time as high as you can tolerate, as it is far weaker to GPU brute-forcing. &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password. More iteration is better, and it&#039;s just a question of how long you are willing to spend waiting for your computer to has your password. If your password is very insecure though, a long has will not slow down an attacker much. 2 seconds ( 2000ms ) is the recommended default. Make sure your computer is not set to any &amp;quot;low-power mode&amp;quot; when setting up the disk, as this will affect the time it takes to hash.&lt;br /&gt;
&lt;br /&gt;
See the [[Password]] Guide for more information about making a secure password.&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark&amp;lt;/code&amp;gt;.&lt;br /&gt;
 &amp;lt;code&amp;gt;# Tests are approximate using memory only (no storage IO).&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha1      1736052 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha256    3355443 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha512    1096836 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-ripemd160  434733 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-whirlpool  364088 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;    Algorithm |       Key |      Encryption |      Decryption&amp;lt;/code&amp;gt;[[entropy]]&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        256b       445.6 MiB/s       401.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        256b       220.3 MiB/s       236.9 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        512b       445.2 MiB/s       437.6 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see from this sample output, &amp;lt;code&amp;gt;aes-xts&amp;lt;/code&amp;gt; is the fastest! Assuming you&#039;re on an x86 machine, this will almost certainly also be the case for you. You&#039;ll also notice Argon2i only has 4 iterations here, making it unsafe to use. You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example, to see how many iterations it achieves.&lt;br /&gt;
&lt;br /&gt;
== [[Entropy]] ==&lt;br /&gt;
Though unlikely, to avoid an [[Entropy Starvation|entropy starved]] situation, you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a lot of debate and conflicting information online about the difference between &amp;lt;code&amp;gt;/dev/random&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/dev/urandom&amp;lt;/code&amp;gt; online. The main difference is that &amp;lt;code&amp;gt;/dev/random&amp;lt;/code&amp;gt; will wait until it detects enough entropy has been gathered. Since it only affects when you initially setup the disk though, waiting for it to gather enough entropy is generally a good idea. Whether its method of ensuring it has gathered enough data is effective, is also somewhat debated, but it certainly doesn&#039;t hurt.&lt;br /&gt;
&lt;br /&gt;
An easy way to ensure you have enough entropy, is to gather it from an external source. For example, you can run: &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;. This command gathers random bytes from [https://random.org random.org]. Using an external source like this is ok, since Linux has ways to gather entropy besides this that an attacker would not be able to replicate.&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming you know what partition you want to use, setting up the disk is as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, these settings are the default on the latest cryptsetup (with the exception of &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt;). Setting them manually ensures that they are correct on older versions. You can check what the defaults are for your system by running &amp;lt;code&amp;gt;cryptsetup --help&amp;lt;/code&amp;gt;. You can then verify that it was setup correctly with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup, it can be opened with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;dm_name&amp;quot; can be set to whatever you like, and the disk will be available at:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it, via something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Linux_anatomy&amp;diff=298</id>
		<title>Linux anatomy</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Linux_anatomy&amp;diff=298"/>
		<updated>2026-07-01T01:17:40Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Novice&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This guide introduces a novice Linux user to common terms used to describe various common parts of the core functionality of a typical Linux computer. Maybe you&#039;ve heard about a &amp;quot;kernel&amp;quot; and want to know what it is, or perhaps you are curious why there are so many different types of Linux you can install.&lt;br /&gt;
&lt;br /&gt;
We only assume some very basic familiarity to computers and operating systems in this guide--if you can install and run programs and you know that Linux and Windows are operating systems, you should be able to follow it.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;quot;Linux&amp;quot; is a term that has a few meanings, and sometimes you will see debates online (often jokingly) about what part of the software actually counts as Linux. Though some pedants might take issue with this, in this guide we will be using the term &amp;quot;Linux&amp;quot; to refer to &#039;&#039;&#039;an entire system&#039;&#039;&#039; that runs software on top of the Linux Kernel. &lt;br /&gt;
&lt;br /&gt;
The basic gist is that Linux is a set of programs and utilities, as well as a core program called a &amp;quot;kernel&amp;quot;, that work together to create a system which can be used for many different purposes, and be customized in many ways. Keep reading to gain a better understanding of how these pieces all fit together.&lt;br /&gt;
&lt;br /&gt;
== Distribution ==&lt;br /&gt;
When you are deciding how to install Linux, one of the first considerations you may want to make is selecting a Linux Distribution (often abbreviated as &amp;quot;distro&amp;quot;). There are an incredible variety of Linux distributions out there, and different folks may recommend different distributions depending on your needs and taste.&lt;br /&gt;
&lt;br /&gt;
But what exactly is a distribution in the first place? Why is this so different from how Windows works, where there are just a few &amp;quot;editions&amp;quot; which you have to pick? And why can&#039;t you just go to a single website and install &amp;quot;Normal Linux&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
In short, this is because, unlike macOS or Windows, there is no singular company or organization working on Linux as a whole. The Linux Kernel is worked on by a single large team of dedicated volunteers, but they have enough on their hands with just those responsibilities. And, for reasons that will be explained, it is impossible to have a usable system (especially a desktop system) with only a kernel.&lt;br /&gt;
&lt;br /&gt;
So instead, many groups of volunteers have created their own organizations which do the important work of packaging together all the necessary components and building up a usable system on top of the Kernel. Distributions have the job of deciding on a &#039;&#039;package manager&#039;&#039;, &#039;&#039;desktop environment&#039;&#039;, &#039;&#039;init system&#039;&#039;, &#039;&#039;windowing system&#039;&#039;, &#039;&#039;compositor&#039;&#039;, and more. They also usually come up with a unique look and branding for their distribution, and unique features that might set their distribution apart from their peers. When they do their job well, everything comes together seamlessly to create a cohesive and usable experience that gives a user the particular features they want.&lt;br /&gt;
&lt;br /&gt;
=== Fixed-release ===&lt;br /&gt;
Some distros prioritize stability, which means that they are very careful about what versions of software are included, and they test the systems for bugs very carefully before upgrading them. These distributions usually release entire new versions of their desktop environments on a cadence, every 6 months or every year, in what is called a &amp;quot;Fixed release&amp;quot; schedule. This can be undesirable for some users, as they may become frustrated that newer software or features are not available yet on their distribution.&lt;br /&gt;
&lt;br /&gt;
=== Rolling-release ===&lt;br /&gt;
Other distros prioritize new features, which means they give you access to the latest and greatest features and software. However, such distributions can sometimes have more bugs, crashes, or other glitches, because there is usually less time for the creators of the distribution to test the software they are showing. These distros are often &amp;quot;Rolling release&amp;quot;, which just means that they do not release a single version every 6 months, but instead update single pieces of software as new updates come in and they appear to be stable.&lt;br /&gt;
&lt;br /&gt;
=== Power-user distros ===&lt;br /&gt;
Many distributions are designed for power users. They might be minimal, requiring a lot of manual customization and setup, but allowing for a system to be built that is exactly how the user wants it to be. Or perhaps they have the goal of being as free of [[Proprietary|proprietary software]] as possible.&lt;br /&gt;
&lt;br /&gt;
=== Beyond ===&lt;br /&gt;
There are also distributions which focus on creating an environment that is as close to the experience of using Windows as possible, in order to make it easier for Linux beginners to use comfortably. Distributions may also advertise themselves as being ideal for gaming, security research, or for use by lower-power machines. Whatever your needs, there is probably a Linux distribution for you.&lt;br /&gt;
&lt;br /&gt;
Just a few examples of Linux distributions include [https://www.linuxmint.com/ Linux Mint], [https://ubuntu.com/desktop Ubuntu], [https://www.debian.org/ Debian], and [https://www.gentoo.org/ Gentoo]. Wikipedia has a [[wikipedia:List_of_Linux_distributions|helpful list]] of many more.&lt;br /&gt;
&lt;br /&gt;
== Software vs. libraries ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
As you likely know, a piece of software is any sort of application or tool that runs on the computer. A very general term, this might refer to a tiny tool that simply tells you the time, and it also might refer to the web browser that you&#039;re using right now. What differentiates software from libraries is the ability to &#039;&#039;run&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
A library is a piece of functionality that can be used by software, to give it the ability to do something useful. You don&#039;t use libraries directly; instead, a program you use makes use of it.&lt;br /&gt;
&lt;br /&gt;
Linux software uses many thousands of libraries, and many pieces of software may rely on one single library for functionality. Libraries rely on other libraries, as well! On your computer, there&#039;s a whole graph of &#039;&#039;dependencies&#039;&#039; putting software together, like puzzle pieces.&lt;br /&gt;
&lt;br /&gt;
Libraries are always changing, and mismatches across software can arise when a change is made. This is where package managers become incredibly useful.&lt;br /&gt;
&lt;br /&gt;
== Package manager ==&lt;br /&gt;
The idea behind a package manager is very simple, and it&#039;s likely you&#039;ve encountered one before. The macOS and iOS App Stores, and the Windows Store are examples of package managers created by Apple and Microsoft. However, many apps on these stores are paid, whereas Linux package managers are almost always entirely free.&lt;br /&gt;
&lt;br /&gt;
The main purpose of a package manager is obtaining and organizing versions of libraries and software, and making sure that all the puzzle pieces fit together without overlapping in a bad way. These software and libraries are provided in the form of &#039;&#039;packages&#039;&#039;, which are basically tidy containers of installers that tell the system what needs to happen to get your program running.&lt;br /&gt;
&lt;br /&gt;
A Linux distribution generally provides one (or sometimes two) package managers. These package managers usually have a &#039;&#039;repository&#039;&#039; which is a collection of software you might want to install. Usually, the distribution will provide a simple graphical application (often called a &amp;quot;Software Center&amp;quot; or Store) for updating your software and installing new software from the repository, and you don&#039;t need to worry about the details of the package manager at all. You should always check the Software Center provided by your distribution first when looking for new software to install, because this is almost always the easiest way to install it and keep it updated.&lt;br /&gt;
&lt;br /&gt;
It is still useful to know what sort of package manager your distribution uses though, especially when you want to install new software from the internet that isn&#039;t available in the repository. Each package manager has its own way of installing software, so if you download a program it might not be installable on your system. In this way, Linux is different from Windows, where you can click on an .exe installer, or macOS, where you can drag a new program to the Applications folder. But luckily, the package manager often has everything you need, and you don&#039;t need to go onto web pages to install random things from the Internet! &lt;br /&gt;
&lt;br /&gt;
Knowing what is available to install on your system gives you power. And if you want to become a more advanced user it may be useful to familiarize yourself with how to use your package manager from the [[terminal]].&lt;br /&gt;
&lt;br /&gt;
== Desktop environment ==&lt;br /&gt;
The Desktop Environment, or DE for short, is a set of programs that shape how your experience works. Different DEs can radically change how programs are launched and switched, and displayed on the screen.&lt;br /&gt;
&lt;br /&gt;
Docks, desktops, taskbars, app launchers, settings pages, file managers, and often software updaters are provided by the Desktop Environment. Different environments are suitable for different purposes.&lt;br /&gt;
&lt;br /&gt;
The average user will likely find the choice of DE to be the single most impactful choice in terms of defining an experience of using the computer, because it shapes the look and feel of the desktop the most. Indeed, the biggest visual differences between Windows and macOS (the Dock/Taskbar, File Explorer/Finder, preferences panels, and more) have Linux equivalents determined by the DE.&lt;br /&gt;
&lt;br /&gt;
Some desktop environments, like [https://www.gnome.org/ GNOME], focus on a straightforward singular experience with less customization options and certain consistent design patterns. These environments are sometimes less confusing, because you are forced into a common path which is encountered by more people, and so it&#039;ll be easier to compare your desktop with others when trying to figure out how to do something. Some users find the consistent interface to be more pleasing to the eye, as well (but this is very much a matter of individual taste).&lt;br /&gt;
&lt;br /&gt;
Other desktop environments, like [https://kde.org/ KDE], are all about offering as much customization as possible, and creating exactly the desktop you want. These can sometimes be confusing for newer users, if they change options that cause their system to do something they didn&#039;t expect, and don&#039;t know how to change it back.&lt;br /&gt;
&lt;br /&gt;
There are even more environments which prioritize absolute customization, or allow for all sorts of exotic setups. Ultimately, what DE you choose comes down to what level of expertise you are comfortable with, and where your priorities lie when using an operating system.&lt;br /&gt;
&lt;br /&gt;
== Kernel ==&lt;br /&gt;
&lt;br /&gt;
== Kernelspace and userspace ==&lt;br /&gt;
&lt;br /&gt;
== Init system ==&lt;br /&gt;
&lt;br /&gt;
== Windowing system ==&lt;br /&gt;
&lt;br /&gt;
== Compositor ==&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=294</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=294"/>
		<updated>2026-07-01T00:45:28Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: /* On-disk Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=293</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=293"/>
		<updated>2026-07-01T00:17:55Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: glossary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-[[disk]] [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=292</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=292"/>
		<updated>2026-07-01T00:15:02Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: mark some words as needing entry to glossary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk [[Format]] ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Initialization]] [[Vectors]] ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== [[Iteration]] Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=290</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=290"/>
		<updated>2026-06-17T08:06:26Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: change from title to heading so the page isn&amp;#039;t hidden on mobile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
== Guide to Decent LUKS [[Security]] on [[Linux]] ==&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=289</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=289"/>
		<updated>2026-06-17T02:57:15Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: finish copying over data from the intermediate page . this page still needs a lot of cleanup and addition though .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = advanced&lt;br /&gt;
}}For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Main Page gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand. If you just want to know the &amp;quot;best&amp;quot; [[command]] to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are [[Serpent]] and [[AES]]. &lt;br /&gt;
&lt;br /&gt;
Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option.&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation. Serpent has potential vulnerabilities depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having hardware acceleration for AES has a number of advantages for security, most notably resistance to side channel attacks, and of course, speed. Some chips however, almost always not x86, do not have hardware accelerated AES. It&#039;s also possible that your CPU may have a vulnerability, so that&#039;s something you may want to look into. As far as we are aware though, no vulnerabilities have been reported on any present or past chip with AES support. Practically speaking, the advantages of having hardware accelerated AES  make it more secure than using Serpent in nearly all cases.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS .&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice .&lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;# Tests are approximate using memory only (no storage IO).&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha1      1736052 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha256    3355443 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-sha512    1096836 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-ripemd160  434733 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;PBKDF2-whirlpool  364088 iterations per second for 256-bit key&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;    Algorithm |       Key |      Encryption |      Decryption&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        256b       445.6 MiB/s       401.0 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        256b       220.3 MiB/s       236.9 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;      aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  serpent-xts        512b       445.2 MiB/s       437.6 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;  twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk .&lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming you know what partition you want to use, setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=288</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=288"/>
		<updated>2026-06-17T02:53:32Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: add LUKS definition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS [[Security]] on [[Linux]] =&lt;br /&gt;
LUKS is the Linux Unified Key Setup. This guide explains all of the different part of the LUKS system and why they are important. Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=287</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=287"/>
		<updated>2026-06-17T02:52:17Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: finish simplifying things to the expected difficulty&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Guide&lt;br /&gt;
| 0 = Intermediate&lt;br /&gt;
}}&lt;br /&gt;
Some external information that may also be helpful is the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS [[Security]] on [[Linux]] =&lt;br /&gt;
This guide explains all of the different part of the LUKS system and why they are important! Check out the advanced guide if you want to know more about how to set these options and what they do in more detail.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the [[files]] that will be saved, so it&#039;s important to pick a good one. Almost all computers have, for many decades now, have had built in support for [[AES]], making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format helps prevent the scrambled files from being modified while the computer is turned off. Since most computers already have built in support for [[XTS]], it makes it the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
By looking at the scrambled files on the disk, it is possible to find some patterns like, for example, images. IV helps prevent this! If you&#039;re using XTS, [[plain64]] is the fastest and most secure option.&lt;br /&gt;
&lt;br /&gt;
== [[Password]] [[Hashing]] ==&lt;br /&gt;
Password hashing helps make passwords that are not secure harder to break. A &#039;&#039;very&#039;&#039; secure password needs no hashing, but since making a very secure password is difficult, it&#039;s a good idea to use hashing. [[Argon2]] is the most secure option for most users. &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
Since some computers are faster than others, your computer will test to see how many times it can hash your password in this amount of time. The default is 2 seconds, and that&#039;s usually good enough. If your computer is very slow, and you&#039;re OK with waiting a bit longer for a more secure hash, you may wanna set it for a bit longer!&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=File:DRAFTS.png&amp;diff=256</id>
		<title>File:DRAFTS.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=File:DRAFTS.png&amp;diff=256"/>
		<updated>2026-06-17T01:14:01Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=247</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=247"/>
		<updated>2026-06-17T00:25:04Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: prioritize the advanced guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Intermediate]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [[LUKS/Advanced|Advanced Guide]]. &lt;br /&gt;
&lt;br /&gt;
Some external resources that may also be helpful are the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ] and [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot;best&amp;quot; command to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the files that will be saved, so it&#039;s important to pick a good one. Computers have, for many decades now, had&lt;br /&gt;
&lt;br /&gt;
built in support for [[AES]], making it the fastest and most secure option for pretty much everyone. &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=246</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=246"/>
		<updated>2026-06-17T00:23:43Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: update advanced link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Intermediate]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki], or the [[LUKS/Advanced|Advanced Guide]].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot;best&amp;quot; command to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the files that will be saved, so it&#039;s important to pick a good one. Computers have, for many decades now, had&lt;br /&gt;
&lt;br /&gt;
built in support for [[AES]], making it the fastest and most secure option for pretty much everyone. &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Luks_(Advanced)&amp;diff=245</id>
		<title>Luks (Advanced)</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Luks_(Advanced)&amp;diff=245"/>
		<updated>2026-06-17T00:21:37Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: CRYSTL moved page Luks (Advanced) to LUKS/Advanced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[LUKS/Advanced]]&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=244</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=244"/>
		<updated>2026-06-17T00:21:37Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: CRYSTL moved page Luks (Advanced) to LUKS/Advanced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Main|LUKS}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Advanced]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Main Page gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are [[Serpent]] and [[AES]]. &lt;br /&gt;
&lt;br /&gt;
Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option.&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation. Serpent has potential vulnerabilities depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having hardware acceleration for AES has a number of advantages for security, most notably resistance to side channel attacks, and of course, speed. Some chips however, almost always not x86, do not have hardware accelerated AES. It&#039;s also possible that your CPU may have a vulnerability, so that&#039;s something you may want to look into. As far as we are aware though, no vulnerabilities have been reported on any present or past chip with AES support. Practically speaking, the advantages of having hardware accelerated AES  make it more secure than using Serpent in nearly all cases.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=243</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=243"/>
		<updated>2026-06-16T23:52:52Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: add draft link as well as ODF section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}{{Main|LUKS}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Advanced]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Main Page gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are [[Serpent]] and [[AES]]. &lt;br /&gt;
&lt;br /&gt;
Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option.&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation. Serpent has potential vulnerabilities depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having hardware acceleration for AES has a number of advantages for security, most notably resistance to side channel attacks, and of course, speed. Some chips however, almost always not x86, do not have hardware accelerated AES. It&#039;s also possible that your CPU may have a vulnerability, so that&#039;s something you may want to look into. As far as we are aware though, no vulnerabilities have been reported on any present or past chip with AES support. Practically speaking, the advantages of having hardware accelerated AES  make it more secure than using Serpent in nearly all cases.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=241</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=241"/>
		<updated>2026-06-16T23:48:07Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added draft template , removed ODF for now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Intermediate]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki], or the [[Luks (Advanced)|Advanced Guide]].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot;best&amp;quot; command to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the files that will be saved, so it&#039;s important to pick a good one. Computers have, for many decades now, had&lt;br /&gt;
&lt;br /&gt;
built in support for [[AES]], making it the fastest and most secure option for pretty much everyone. &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=237</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=237"/>
		<updated>2026-06-16T23:38:34Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added external wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main|LUKS}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Advanced]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Main Page gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are Serpent and AES. &lt;br /&gt;
&lt;br /&gt;
Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option.&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation. Serpent has potential vulnerabilities depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having hardware acceleration for AES has a number of advantages for security, most notably resistance to side channel attacks, and of course, speed. Some chips however, almost always not x86, do not have hardware accelerated AES. It&#039;s also possible that your CPU may have a vulnerability, so that&#039;s something you may want to look into. As far as we are aware though, no vulnerabilities have been reported on any present or past chip with AES support. Practically speaking, the advantages of having hardware accelerated AES  make it more secure than using Serpent in nearly all cases.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=236</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=236"/>
		<updated>2026-06-16T23:37:49Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: linked external wikis with more info on the topic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS PAGE IS A DRAFT ! Information on this page is in need of further research and refinement !&lt;br /&gt;
&lt;br /&gt;
This page will need to be split into &amp;quot; difficulty tiers &amp;quot; and since it&#039;s the first page this has been needed on , it makes it an excellent test subject to figure out the best way to do so .&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Intermediate]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the [https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions cryptsetup FAQ], the [https://wiki.archlinux.org/title/Dm-crypt/Device_encryption Arch Wiki], or the [[Luks (Advanced)|Advanced Guide]].&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot;best&amp;quot; command to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the files that will be saved, so it&#039;s important to pick a good one. Computers have had, for many decades now, built in support for AES, making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS . &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=234</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=234"/>
		<updated>2026-06-16T23:34:11Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: add link to wantedpages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
Please check [[Special:WantedPages|this list]] and see if there&#039;s anything you&#039;re interested in writing about!&lt;br /&gt;
&lt;br /&gt;
== Easy first project : ==&lt;br /&gt;
&lt;br /&gt;
* write about the distinction between distro / kernel / init / userspace / DE / windowing system / compositor / package manager&lt;br /&gt;
&lt;br /&gt;
* mpeg container format&lt;br /&gt;
**h264&lt;br /&gt;
*hardware accelerated media playback&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== In Progress Pages : ==&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
**[[LUKS]]&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
&lt;br /&gt;
== Needs Research / Implementation ==&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have information about how they are best motivated&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play in those teams&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot; ( would be nice to have a directory of all unfinished pages as well )&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;br /&gt;
** tiered information ? as in , there will be a main page which gives a high level overview , and links to pages with more detail , and those pages would need a template to link back to the main page ? or perhaps the &amp;quot; See also &amp;quot; template would be enough , dunno . a graph of the different tiers of depth on the main page may also be a good idea ? probably should also try to figure out some ground rules about what kind of content is even suitable for which tier , how many tiers there should be , etc . for example , on the LUKS page , since that is assuming like , someone is installing linux , that&#039;s already like , above the base tier imo , which is just like &amp;quot; the OS that came on your computer &amp;quot;&lt;br /&gt;
*** something like : &lt;br /&gt;
**** beginner : only talk about installing software via easy methods on a device with its pre-installed OS&lt;br /&gt;
**** novice : willing to try safer OSes like linux&lt;br /&gt;
**** intermediate : can use a command line shell for simple things , and can edit config files&lt;br /&gt;
**** advanced : can write simple scripts and programs and knows their way around a CLI&lt;br /&gt;
**** expert : able to understand with low-level concepts like memory management and CPU instructions&lt;br /&gt;
*** though this might be too many ? or not enough , i dunno . i guess it would depend on the amount of content we have to talk about for any given subject&lt;br /&gt;
**** will try to figure some of this out when working on LUKS&lt;br /&gt;
* Unfinished pages :&lt;br /&gt;
** [[LUKS]]&lt;br /&gt;
** [[Lens]]&lt;br /&gt;
** ( the rest of the roles pages have not even been started )&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=230</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=230"/>
		<updated>2026-05-27T00:31:02Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
== Easy first project : ==&lt;br /&gt;
&lt;br /&gt;
* write about the distinction between distro / kernel / init / userspace / DE / windowing system / compositor / package manager&lt;br /&gt;
&lt;br /&gt;
* mpeg container format&lt;br /&gt;
**h264&lt;br /&gt;
*hardware accelerated media playback&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== In Progress Pages : ==&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
**[[LUKS]]&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
&lt;br /&gt;
== Needs Research / Implementation ==&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have information about how they are best motivated&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play in those teams&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot; ( would be nice to have a directory of all unfinished pages as well )&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;br /&gt;
** tiered information ? as in , there will be a main page which gives a high level overview , and links to pages with more detail , and those pages would need a template to link back to the main page ? or perhaps the &amp;quot; See also &amp;quot; template would be enough , dunno . a graph of the different tiers of depth on the main page may also be a good idea ? probably should also try to figure out some ground rules about what kind of content is even suitable for which tier , how many tiers there should be , etc . for example , on the LUKS page , since that is assuming like , someone is installing linux , that&#039;s already like , above the base tier imo , which is just like &amp;quot; the OS that came on your computer &amp;quot;&lt;br /&gt;
*** something like : &lt;br /&gt;
**** beginner : only talk about installing software via easy methods on a device with its pre-installed OS&lt;br /&gt;
**** novice : willing to try safer OSes like linux&lt;br /&gt;
**** intermediate : can use a command line shell for simple things , and can edit config files&lt;br /&gt;
**** advanced : can write simple scripts and programs and knows their way around a CLI&lt;br /&gt;
**** expert : able to understand with low-level concepts like memory management and CPU instructions&lt;br /&gt;
*** though this might be too many ? or not enough , i dunno . i guess it would depend on the amount of content we have to talk about for any given subject&lt;br /&gt;
**** will try to figure some of this out when working on LUKS&lt;br /&gt;
* Unfinished pages :&lt;br /&gt;
** [[LUKS]]&lt;br /&gt;
** [[Lens]]&lt;br /&gt;
** ( the rest of the roles pages have not even been started )&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=227</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=227"/>
		<updated>2026-05-10T18:11:31Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added notes for tiers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
**[[LUKS]]&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have information about how they are best motivated&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play in those teams&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot; ( would be nice to have a directory of all unfinished pages as well )&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;br /&gt;
** tiered information ? as in , there will be a main page which gives a high level overview , and links to pages with more detail , and those pages would need a template to link back to the main page ? or perhaps the &amp;quot; See also &amp;quot; template would be enough , dunno . a graph of the different tiers of depth on the main page may also be a good idea ? probably should also try to figure out some ground rules about what kind of content is even suitable for which tier , how many tiers there should be , etc . for example , on the LUKS page , since that is assuming like , someone is installing linux , that&#039;s already like , above the base tier imo , which is just like &amp;quot; the OS that came on your computer &amp;quot;&lt;br /&gt;
*** something like : &lt;br /&gt;
**** beginner : only talk about installing software via easy methods on a device with its pre-installed OS&lt;br /&gt;
**** novice : willing to try safer OSes like linux&lt;br /&gt;
**** intermediate : can use a command line shell for simple things , and can edit config files&lt;br /&gt;
**** advanced : can write simple scripts and programs and knows their way around a CLI &lt;br /&gt;
**** expert : able to understand with low-level concepts like memory management and CPU instructions&lt;br /&gt;
*** though this might be too many ? or not enough , i dunno . i guess it would depend on the amount of content we have to talk about for any given subject&lt;br /&gt;
**** will try to figure some of this out when working on LUKS&lt;br /&gt;
* Unfinished pages :&lt;br /&gt;
** [[LUKS]]&lt;br /&gt;
** [[Lens]]&lt;br /&gt;
** ( the rest of the roles pages have not even been started )&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=226</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=226"/>
		<updated>2026-05-10T18:05:40Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: simplified ciphers section , linked to the advanced page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS PAGE IS A DRAFT ! Information on this page is in need of further research and refinement !&lt;br /&gt;
&lt;br /&gt;
This page will need to be split into &amp;quot; difficulty tiers &amp;quot; and since it&#039;s the first page this has been needed on , it makes it an excellent test subject to figure out the best way to do so .&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Intermediate]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the cryptsetup FAQ, the Arch Wiki, or the [[Luks (Advanced)|Advanced Guide]]. &#039;&#039;&#039;TODO !!! LINK THESE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot;best&amp;quot; command to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers scramble the files that will be saved, so it&#039;s important to pick a good one. Computers have had, for many decades now, built in support for AES, making it the fastest and most secure option for pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS . &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=225</id>
		<title>LUKS/Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS/Advanced&amp;diff=225"/>
		<updated>2026-05-10T18:04:05Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added ciphers block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main|LUKS}}&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Advanced]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the cryptsetup FAQ, the Arch Wiki. &#039;&#039;&#039;TODO!!! LINK THESE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
The Main Page gives a high level overview of what different LUKS options can do, but this page intends to go into as much detail as possible about them while still aiming to be easy to understand.&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the [[algorithms]] used to [[Encryption|encrypt]] [[data]]. Picking the best algorithm is very important for ensuring your data is secure. If your cipher can be broken, then your data can be accessed without the key.&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options, the two most worth considering are Serpent and AES. &lt;br /&gt;
&lt;br /&gt;
Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads, but generally, not a great option.&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure, though in practice its potential advantages seem pretty minimal. It also hasn&#039;t been tested as much as AES, so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about .&lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation. Serpent has potential vulnerabilities depending on the details of the implementation. Without looking into the specific implementation in-depth, it&#039;s hard to say how secure it is.&lt;br /&gt;
&lt;br /&gt;
On the other hand, having hardware acceleration for AES has a number of advantages for security, most notably resistance to side channel attacks, and of course, speed. Some chips however, almost always not x86, do not have hardware accelerated AES. It&#039;s also possible that your CPU may have a vulnerability, so that&#039;s something you may want to look into. As far as we are aware though, no vulnerabilities have been reported on any present or past chip with AES support. Practically speaking, the advantages of having hardware accelerated AES  make it more secure than using Serpent in nearly all cases.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=224</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=224"/>
		<updated>2026-05-10T17:45:59Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: intial work to implement tiers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS PAGE IS A DRAFT ! Information on this page is in need of further research and refinement !&lt;br /&gt;
&lt;br /&gt;
This page will need to be split into &amp;quot; difficulty tiers &amp;quot; and since it&#039;s the first page this has been needed on , it makes it an excellent test subject to figure out the best way to do so .&lt;br /&gt;
&lt;br /&gt;
This page is written with [[Tiers|Intermediate]] users in mind, but of course everyone is encouraged to try to understand.&lt;br /&gt;
&lt;br /&gt;
For more more info on this topic, check the cryptsetup FAQ, the Arch Wiki, or the Advanced page. &#039;&#039;&#039;TODO !!! LINK THESE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot;best&amp;quot; command to run, you can skip to the bottom. But reading this Guide is encouraged, as it will give you a better understand of what the options do, and how they will affect the security of your data!&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the algorithms that encrypt the data that will be written to the disk . Picking one that is resistant to attacks is critical , as otherwise your data is potentially vulnerable , even without the key .&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options , generally the two worth considering are Serpent and AES . Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads , but generally , not a great option .&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure , though in practice its potential advantages seem pretty minimal . It also hasn&#039;t been tested as much as AES , so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about . &lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation . Serpent has potential vulnerabilities depending on the details of the implementation . Without looking into the specific implementation in-depth , it&#039;s hard to say how secure it is . &lt;br /&gt;
&lt;br /&gt;
On the other hand , having hardware acceleration for AES has a number of advantages for security , most notably resistance to side channel attacks , and of course , speed . Some chips however , ( usually not x86 ) , do not have hardware accelerated AES . It&#039;s also possible that your CPU may have a vulnerability , so that&#039;s something you want to look into . Not currently aware of anything like this , though some Ryzen chips recently had an AES vulnerability that allowed unauthorized microcode to be installed . To be very clear , this has been patched with a microcode update , and is also not directly relevant to use in disk unlocking . Practically speaking , the advantages of having hardware accelerated AES likely make it more secure than using Serpent in nearly all cases .&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS . &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=223</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=223"/>
		<updated>2026-05-03T20:38:12Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added unfinished pages sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
**[[LUKS]]&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have information about how they are best motivated&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play in those teams&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot; ( would be nice to have a directory of all unfinished pages as well )&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;br /&gt;
* Unfinished pages :&lt;br /&gt;
** [[LUKS]]&lt;br /&gt;
** [[Lens]]&lt;br /&gt;
** ( the rest of the roles pages have not even been started )&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Lens&amp;diff=222</id>
		<title>Lens</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Lens&amp;diff=222"/>
		<updated>2026-05-03T20:36:23Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: create initial pag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|This article is unfinished}}{{Main|Organization}}&lt;br /&gt;
&lt;br /&gt;
Lenses are critical to the function of a team. Lenses are helpful at different scales as well. A Lens may focus primarily on a specific project they are knowledgeable about, or maybe they are interested in maintaining the focus of FASSAG as a whole. Regardless of their scope, Lenses provide direction and oversight to help the other members focus on their goals without having to worry about where their efforts should be directed. &lt;br /&gt;
&lt;br /&gt;
== Skill Profile ==&lt;br /&gt;
There are a few skills Lenses should focus on. &lt;br /&gt;
&lt;br /&gt;
==== Time management ====&lt;br /&gt;
{{See|Time management}}&lt;br /&gt;
Not only will Lenses need to manage their own time well, but they also need to ensure that others are managing their time well. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mentioned in [[Organization]], different members will respond to different kinds of support and motivation, so it&#039;s also important to help others figure out their needs if they do not know, and to help motivate them using these strategies.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=221</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=221"/>
		<updated>2026-05-03T19:47:45Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added motivation info , and clarified that roles are specific to teams&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
**[[LUKS]]&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have information about how they are best motivated&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play in those teams&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot;&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=219</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=219"/>
		<updated>2026-05-03T19:25:29Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: added link to LUKS page , removed old cryptpad page .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
**[[LUKS]]&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot;&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=217</id>
		<title>LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=LUKS&amp;diff=217"/>
		<updated>2026-05-03T19:24:29Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: created LUKS page , made sure to add draft warning , and note about difficulty teirs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS PAGE IS A DRAFT ! Information on this page is in need of further research and refinement !&lt;br /&gt;
&lt;br /&gt;
This page will need to be split into &amp;quot; difficulty teirs &amp;quot; and since it&#039;s the first page this has been needed on , it makes it an excellent test subject to figure out the best way to do so .&lt;br /&gt;
&lt;br /&gt;
= Beginners Guide to Decent LUKS Security on Linux =&lt;br /&gt;
If you just want to know the &amp;quot; best &amp;quot; command to run , you can skip to the bottom . But reading this post is encouraged , as it will give you a better understand of what the options do , and how they will affect the security of your data !&lt;br /&gt;
&lt;br /&gt;
If you want even more info on this topic , check the cryptsetup FAQ , as good amount of this information is pulled from there !&lt;br /&gt;
&lt;br /&gt;
For more information on how to use LUKS tools , the arch wiki is a great resource .&lt;br /&gt;
&lt;br /&gt;
== Ciphers ==&lt;br /&gt;
Ciphers are the algorithms that encrypt the data that will be written to the disk . Picking one that is resistant to attacks is critical , as otherwise your data is potentially vulnerable , even without the key .&lt;br /&gt;
&lt;br /&gt;
Of the widely supported options , generally the two worth considering are Serpent and AES . Twofish &#039;&#039;may&#039;&#039; be better in lower-security applications where there&#039;s no AES acceleration &#039;&#039;and&#039;&#039; writes happen more often than reads , but generally , not a great option .&lt;br /&gt;
&lt;br /&gt;
Serpent may theoretically be more secure , though in practice its potential advantages seem pretty minimal . It also hasn&#039;t been tested as much as AES , so it &#039;&#039;may&#039;&#039; have potential vulnerabilities not yet known about . &lt;br /&gt;
&lt;br /&gt;
Another consideration is the actual implementation . Serpent has potential vulnerabilities depending on the details of the implementation . Without looking into the specific implementation in-depth , it&#039;s hard to say how secure it is . &lt;br /&gt;
&lt;br /&gt;
On the other hand , having hardware acceleration for AES has a number of advantages for security , most notably resistance to side channel attacks , and of course , speed . Some chips however , ( usually not x86 ) , do not have hardware accelerated AES . It&#039;s also possible that your CPU may have a vulnerability , so that&#039;s something you want to look into . Not currently aware of anything like this , though some Ryzen chips recently had an AES vulnerability that allowed unauthorized microcode to be installed . To be very clear , this has been patched with a microcode update , and is also not directly relevant to use in disk unlocking . Practically speaking , the advantages of having hardware accelerated AES likely make it more secure than using Serpent in nearly all cases .&lt;br /&gt;
&lt;br /&gt;
== On-disk Format ==&lt;br /&gt;
The on-disk format defines how the encrypted data is stored on the disk itself . While you &#039;&#039;could&#039;&#039; just write the encrypted blocks directly to the disk , you would be at risk of a number of different attacks . CBC ( Cipher-block chaining ) is an older on-disk format and should not really be used . It has malleability vulnerabilities ( meaning data can be inserted without knowing the encryption key ) , and also , specially-crafted files can be &amp;quot; fingerprinted &amp;quot; , meaning they can be located on the disk . XTS ( XEX-based tweaked-codebook mode with ciphertext stealing ) is better at mitigating these issues , so it&#039;s the recommended default . It&#039;s also usually hardware accelerated on x86 . XTS does have its own vulnerabilities , but most of these issues can be mitigated by using a filesystem that can verify and repair corrupted data , like ZFS or BTRFS . &lt;br /&gt;
&lt;br /&gt;
== Initialization Vectors ( IV ) ==&lt;br /&gt;
The purpose of IV is to ad some randomness different blocks of the disk , so that overall patterns cannot be discovered . ESSIV ( Encrypted salt-sector initialization vector ) was set as default for CBC to mitigate the fingerprinting issue , but this does not help CBC&#039;s issues with malleability . For XTS , plain64 is recommended over plain , since it has no performance impact , and plain has some data leaking vulnerabilities that are viable on disks larger than 2TiB . XTS not being vulnerable to fingerprinitng , does not need the added overhead of ESSIV .&lt;br /&gt;
&lt;br /&gt;
== Password Hashing ==&lt;br /&gt;
The hashing algorithm is intended to make weak passwords harder to break , so a very good password does not really need much hashing . Argon2 is optimized to be impossible to brute-force on devices with limited memory , most notably , graphics cards . The point is to force the attacker to use their CPU , which is not usually not nearly as quick as a GPU for this kind of task . Unless you&#039;re primarily concerned about some APT trying to break into your device , it is pretty good tradeoff . If your device is very memory constrained ( like under 4GB ), you &#039;&#039;may&#039;&#039; want to consider using PBKDF2 ( Password-Based Key Derivation Function ) . You will almost certainly want to increase the iteration time more though , as it is far weaker to GPU brute-forcing . For a small note on Argon2 , it has a few different variants . Argon2i is weakest to brute-forcing , but has strong side-channel protection . It&#039;s generally not safe to use 2i with anything less than 10 iterations . Conversely , while Argon2d is most secure against brute force attacks , it is more susceptible to side channel timing attacks than Argon2id . Unless you are &#039;&#039;really&#039;&#039; not concerned about side-channel attacks , Argon2id is the most well rounded and therefore the best choice . &lt;br /&gt;
&lt;br /&gt;
== Iteration Time ==&lt;br /&gt;
This defines how long your computer is going to spend hashing the password . More iteration is generally better , and is mostly a question of how long you willing to spend waiting for your computer to initially decrypt the drive . Do note that it doesn&#039;t decrease the speed of the drive after the key is decrypted . To be very clear , high iteration count is not an alternative to a secure password ! 2 seconds ( 2000ms ) is generally the recommended default , though of course you are welcome to set it as high as you are willing to tolerate . Make sure your computer is not set to any &amp;quot; low-power mode &amp;quot; when setting up the disk , as this will affect the time it takes to hash .&lt;br /&gt;
&lt;br /&gt;
Very important note ! Make sure your password is secure ! Using something short is a very bad idea . Using a string of characters from a well known book is also not a great idea ! Something like a diceware password with at least 6 words is generally a good idea !&lt;br /&gt;
&lt;br /&gt;
== Benchmarking ==&lt;br /&gt;
If you want to see for yourself how fast these various algorithms will run on your computer, you can use &amp;lt;code&amp;gt;cryptsetup benchmark .&amp;lt;/code&amp;gt;&amp;lt;blockquote&amp;gt;    # Tests are approximate using memory only (no storage IO). &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha1      1736052 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha256    3355443 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-sha512    1096836 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-ripemd160  434733 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
PBKDF2-whirlpool  364088 iterations per second for 256-bit key &lt;br /&gt;
&lt;br /&gt;
argon2i       4 iterations, 735656 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
argon2id      4 iterations, 842046 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) &lt;br /&gt;
&lt;br /&gt;
#     Algorithm |       Key |      Encryption |      Decryption &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        128b       594.1 MiB/s      1434.3 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        128b        59.8 MiB/s       371.1 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        128b       123.5 MiB/s       200.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-cbc        256b       423.9 MiB/s      1284.2 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-cbc        256b        61.0 MiB/s       394.5 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-cbc        256b       136.8 MiB/s       240.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        256b      2196.7 MiB/s      2414.8 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        256b       445.6 MiB/s       401.0 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        256b       220.3 MiB/s       236.9 MiB/s &lt;br /&gt;
&lt;br /&gt;
       aes-xts        512b      2031.5 MiB/s      2117.4 MiB/s &lt;br /&gt;
&lt;br /&gt;
   serpent-xts        512b       445.2 MiB/s       437.6 MiB/s &lt;br /&gt;
&lt;br /&gt;
   twofish-xts        512b       221.9 MiB/s       249.3 MiB/s&amp;lt;/blockquote&amp;gt;As you can see from this sample output , aes-xts is the fastest ! Assuming you&#039;re on an x86 machine , this will almost certainly also be the case for you . You&#039;ll also notice Argon2i only has 4 iterations here , making it unsafe to use . You can add &amp;lt;code&amp;gt;-i 5000&amp;lt;/code&amp;gt; to test 5000ms as an example , to see how many iterations it achieves .&lt;br /&gt;
&lt;br /&gt;
== /dev/urandom ==&lt;br /&gt;
Though unlikely , to avoid an entropy-starved situation ( meaning the random numbers are not random enough ) , you can use &amp;lt;code&amp;gt;--use-random&amp;lt;/code&amp;gt; when setting up the disk . &lt;br /&gt;
&lt;br /&gt;
There&#039;s apparently a lot of debate and conflicting information online about the difference between /dev/random and /dev/urandom online . The main difference is that /dev/random will wait when it estimates that not enough entropy has been gathered . Since it only affects when you initially setup the disk though , waiting for it to gather enough entropy is generally a good idea . Whether its method of ensuring it has gathered enough data is effective , is also somewhat debated , but it certainly doesn&#039;t hurt .&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
Unless you have a strong reason to doubt AES-256 ( which is also post-quantum resistant ) , AES should be used . Using CBC even with ESSIV does not have any compelling reasons for consideration , so XTS likely your best choice , especially since it will be significantly faster to encrypt / decrypt on x86 . These options are the default for good reason , and unless you have a particularly special setup or threat model ; like if for example , if your CPU does not have hardware accelerated AES , or if it had a known vulnerability . Lastly , Argon2id is generally your best option for hashing .&lt;br /&gt;
&lt;br /&gt;
== Disk Setup ==&lt;br /&gt;
Assuming your disk is already correctly partitioned , setting up the disk is as simple as :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-random --verify-passphrase /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned previously , these settings are the default on the latest cryptsetup ( with the exception of --use-random ) , but setting them manually ensures that they are correct on older versions . You can also check what the defaults are for your system by running cryptsetup --help . You can then verify that it was setup correctly with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup luksDump /dev/YOURPARTITIONHERE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once it has been setup , it can be opened with :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cryptsetup open /dev/YOURPARTITIONHERE dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot; dm_name &amp;quot; can be set to whatever you like , and the disk will be available at :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you will need to format it , via something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.ext4 /dev/mapper/dm_name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course , you&#039;ll want to replace mkfs.ext4 with the setup command for your preferred partition type .&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=TODO&amp;diff=209</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=TODO&amp;diff=209"/>
		<updated>2026-05-03T19:20:41Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: completed table of contents ( MediaWiki:Sidebar )&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of projects currently being worked on and references to relevant information.&lt;br /&gt;
&lt;br /&gt;
* Write a page describing how matrix works, how it relates to FASSAG, and some client quirks to be aware of.&lt;br /&gt;
** Maybe these should be separate pages?&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$9flQpMULrrZ9q3sM1CIKtDdwpHCC_YFOCDbXeAevn7M?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] consider having a dedicated page to matrix&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$B46BEaqrLtxuJ5BvQt_z8qzDZD4VIq2grk2MS1R6F_I?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] the matrix.to page is apparently just broken ,,, the icon is just not viewable .&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$-TvpInGLsJ_8wHilOnuKDYtP8D9T4C5DJIMQRsiAf_U?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Thread] Yeah so it commet receives a thread reply, it inserts the thread parent into the thread body instead of the new thread reply message&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Finish LUKS guide , and probably split it up into simpler and more advanced guides&lt;br /&gt;
** https://cryptpad.fr/pad/#/2/pad/view/v9+28PcpFVoMr4eVf-NpF64Do35ocDL3tQLbaWq2Bfk/&lt;br /&gt;
** NOTES: &lt;br /&gt;
*** for a bit of context as to why i wanted to write this in the first place, someone asked me &amp;quot;if i want the best security, how do i setup a LUKS partition?&amp;quot; and based on that question, I assume that just telling them &amp;quot;the defaults are fine&amp;quot; would not be a particularly satisfying answer. so i did my best to research everything, and tried to compile an exhaustive list of reasons why the defaults are OK. i went in assuming that there might be like, some algorithm that has a very strong performance cost for better security, but ultimately concluded, that wasn&#039;t really the case . but like , only after trying to understand everything.&lt;br /&gt;
*** &amp;quot;a good amount of this information is pulled from [link]&amp;quot; by itself sounds kinda weird, like why should someone read your post instead of just going to that link immediately? perhaps &amp;quot;The [cryptsetup FAQ](...) is a great in-depth resource on all the available security options, but it&#039;s pretty long and complex. This post will cover the basics so you can get set up quickly with a reasonably secure system.&amp;quot;&lt;br /&gt;
*** if your system is starved of entropy, one technique I&#039;ve seen is to use random.org , e.g. &amp;lt;code&amp;gt;curl -Ss &amp;lt;nowiki&amp;gt;https://www.random.org/cgi-bin/randbyte?nbytes=16384&amp;amp;format=f&amp;lt;/nowiki&amp;gt; &amp;gt; /dev/random&amp;lt;/code&amp;gt;&lt;br /&gt;
**** then you should be able to run any programs that would block on /dev/random&lt;br /&gt;
*** you should define what &amp;quot;post quantum resistant&amp;quot; means if you&#039;re going to mention it, IMO&lt;br /&gt;
*** ZFS actually uses an authenticated encryption mode by default (AES-GCM) which is how it can detect tampering. i think this is what you meant, but saying &amp;quot;XTS vulnerabilities can be mitigated with ZFS or BTRFS&amp;quot;  is a little less clear than &amp;quot;XTS has vulnerabilities &#039;&#039;&#039;under certain threat models&#039;&#039;&#039;, such as A, B and C [IMO if you&#039;re going to mention this you should also explain what the vulnerabilities are, you can&#039;t just drop this with no context]. If you are concerned about these issues, you should use an authenticated encryption mode like AES-GCM, which is unfortunately not available with LUKS due to the additional space needed for the authentication tags, but can be accomplished with a supporting filesystem such as ZFS.&amp;quot;&lt;br /&gt;
**** i don&#039;t remember where i read that &amp;quot;ZFS and BTRFS will help with the corruption issues of XTS&amp;quot; they may not have even been talking about LUKS directly and i just got confused (it was probably Wikipedia)&lt;br /&gt;
*** i guess to expand on this, if you have a good idea of what your target audience is then you should be evaluating everything in the post from that point of view. suppose you are a beginner who doesn&#039;t know anything about crypto. &amp;quot;XTS has vulnerabilities&amp;quot; and &amp;quot;AES-256 is post quantum&amp;quot; are meaningless to u without further context. maybe the context for those things isn&#039;t the point of the post, but in that case u could maybe link to further resources or have some further explanation in footnotes&lt;br /&gt;
* A guide on how to use and navigate around the WIKI would be a very good idea&lt;br /&gt;
** TBH I&#039;m not entirely sure how wikis are usually structured, maybe something to look into&lt;br /&gt;
*** from what i can remember offhand, usually the home page has some links to more specific topics, which then link out to other articles&lt;br /&gt;
**** probably there *shouldn&#039;t* be an orphaned articles&lt;br /&gt;
** we could also figure out if we want to have a more &amp;quot;document&amp;quot; focused theme for desktop like maybe [[mediawikiwiki:BlueSpice|BlueSpice]]&lt;br /&gt;
*** if we have something less functional than [[mediawikiwiki:BlueSpice|BlueSpice]] though, we&#039;ll want to explain in the guide how to change the default user theme if someone is interested in doing editing&lt;br /&gt;
** how to use tables&lt;br /&gt;
** how to use templates&lt;br /&gt;
** how to use the WYSIWYG editor&lt;br /&gt;
* Braille / TTS support on linux&lt;br /&gt;
** [https://matrix.to/#/!dkSMcP-EtUFhf2SZZR4nwSHGI0RVq1Sr2p-zguVoLNI/$YQue0cGGqU5KXtuNEOPpbZUl_-M25V1fj46S8kJA2q0?via=chat.solarpunk.moe&amp;amp;via=matrix.org &amp;lt;nowiki&amp;gt;[Matrix] reference&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
* Templates&lt;br /&gt;
** user profile information template (need to flesh out how this will look)&lt;br /&gt;
*** should have matrix account&lt;br /&gt;
*** should describe teams they are in and &amp;lt;s&amp;gt;what roles they want to play&amp;lt;/s&amp;gt;&lt;br /&gt;
**** Roles are now defined through [[Template:Add role]] and [[Template:User roles]] in a user page.&lt;br /&gt;
*** a description of their skills and interests&lt;br /&gt;
*** DRAFT : [[User:Everlastingred]]&lt;br /&gt;
** TODO item template? probably to gather information from relevant pages but some TODOs will likely not have a page? dunno, something to think about&lt;br /&gt;
** &amp;quot;this page is not yet completed&amp;quot; / &amp;quot;this page is a draft?&amp;quot;&lt;br /&gt;
** &amp;quot;this page is a placeholder&amp;quot;&lt;br /&gt;
** &amp;quot;this page is an accessory to another?&amp;quot; (maybe see or see also cover this, IDK)&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Main_Page&amp;diff=206</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Main_Page&amp;diff=206"/>
		<updated>2026-05-03T19:18:31Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: add weekly meetup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the &#039;&#039;&#039;FASSAG Wiki&#039;&#039;&#039;. This editable knowledge base contains an ever-changing collection of resources developed by the organization.&lt;br /&gt;
&lt;br /&gt;
== What is FASSAG? ==&lt;br /&gt;
&lt;br /&gt;
====== The Free Accessible Safe Software Advocacy Group ======&lt;br /&gt;
Our mission is to reach out and make technology accessible and easy to understand. We seek to provide resources and guidance on computer safety, guides on various software, at whatever level of complexity is right for you. You can get involved as much as you&#039;d like! Whether you want to help out with research, or writing guides, or perhaps you&#039;re a developer and want to help improve software, we&#039;d be happy to have your support.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://fassag.dev Home] — Get a top level view on our mission.&lt;br /&gt;
* [[TODO]] — What we&#039;re currently working on.&lt;br /&gt;
* [[Operations]] — Get a detailed look at how we operate.&lt;br /&gt;
* [[Organization]] — See how we structure ourselves.&lt;br /&gt;
* [[Weekly Meetup]] — Meet up and work on projects together!&lt;br /&gt;
* [https://codeberg.org/FASSAG Forge] — The Codeberg organization where all our code is stored.&lt;br /&gt;
* [https://matrix.to/#/#fassag-entrance:chat.solarpunk.moe?client=element.io Matrix Space] — Join to chat about FASSAG.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=203</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=203"/>
		<updated>2026-05-03T19:16:37Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
* FASSAG&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Operations|Operations&lt;br /&gt;
** Organization|Organization&lt;br /&gt;
** TODO|TODO&lt;br /&gt;
* Wiki Tools&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=Main_Page&amp;diff=200</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=Main_Page&amp;diff=200"/>
		<updated>2026-05-03T19:15:32Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the &#039;&#039;&#039;FASSAG Wiki&#039;&#039;&#039;. This editable knowledge base contains an ever-changing collection of resources developed by the organization.&lt;br /&gt;
&lt;br /&gt;
== What is FASSAG? ==&lt;br /&gt;
&lt;br /&gt;
====== The Free Accessible Safe Software Advocacy Group ======&lt;br /&gt;
Our mission is to reach out and make technology accessible and easy to understand. We seek to provide resources and guidance on computer safety, guides on various software, at whatever level of complexity is right for you. You can get involved as much as you&#039;d like! Whether you want to help out with research, or writing guides, or perhaps you&#039;re a developer and want to help improve software, we&#039;d be happy to have your support.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://fassag.dev Home] — Get a top level view on our mission.&lt;br /&gt;
* [[TODO]] — What we&#039;re currently working on.&lt;br /&gt;
* [[Operations]] — Get a detailed look at how we operate.&lt;br /&gt;
* [[Organization]] — See how we structure ourselves.&lt;br /&gt;
* [https://codeberg.org/FASSAG Forge] — The Codeberg organization where all our code is stored.&lt;br /&gt;
* [https://matrix.to/#/#fassag-entrance:chat.solarpunk.moe?client=element.io Matrix Space] — Join to chat about FASSAG.&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Mainpage-description&amp;diff=198</id>
		<title>MediaWiki:Mainpage-description</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Mainpage-description&amp;diff=198"/>
		<updated>2026-05-03T19:13:31Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Home&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=197</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=197"/>
		<updated>2026-05-03T19:12:49Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
* FASSAG&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** TODO|TODO&lt;br /&gt;
* Wiki Tools&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=196</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=196"/>
		<updated>2026-05-03T19:12:16Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
* FASSAG&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
* Wiki Tools&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
** TODO|TODO&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=193</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Sidebar&amp;diff=193"/>
		<updated>2026-05-03T19:09:31Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FASSAG&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
* navigation&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
** TODO|TODO&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Help-mediawiki&amp;diff=192</id>
		<title>MediaWiki:Help-mediawiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Help-mediawiki&amp;diff=192"/>
		<updated>2026-05-03T19:09:01Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Manual&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
	<entry>
		<id>https://wiki.fassag.dev/index.php?title=MediaWiki:Help-mediawiki&amp;diff=180</id>
		<title>MediaWiki:Help-mediawiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.fassag.dev/index.php?title=MediaWiki:Help-mediawiki&amp;diff=180"/>
		<updated>2026-05-03T18:52:25Z</updated>

		<summary type="html">&lt;p&gt;CRYSTL: Created page with &amp;quot;Wiki Manual&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki Manual&lt;/div&gt;</summary>
		<author><name>CRYSTL</name></author>
	</entry>
</feed>