Skip to content

Commit 1eebbec

Browse files
Some further adjustments.
1 parent 2e41e8a commit 1eebbec

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

src/ltgc/encryption.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
# Encryption & Hashing
22

33
## Encryption
4-
Allowed encryption algorithms (and operation modes) are listed below. While actual recommendations are marked in bold, order of each entry does not imply preference, and decisions must be also made with strength and availability in mind.
4+
Allowed encryption algorithms (and operation modes) are listed below. While actual recommendations are marked in bold, order of each entry does not imply preference, and decisions must be also made with strength and availability in mind. Constant-time implementations are an absolute requirement.
55

66
This documentation does not include encryption system designs, refer to relevant materials before designing encryption systems.
77

88
### Symmetric
9-
Avoid using symmetric ciphers with less than 192-bit comparative key size if possible, as Grover's algorithm may half the security of 128-bit keys down to effectively 64-bit, reducing brute-forcing to be further within reach. Do not ever reuse nonce, keep rotating keys within a reasonable duration if possible, and always include message authentication (all listed operating modes include authentication).
10-
119
<div class="table-wrapper"><table>
1210
<thead><tr>
1311
<td>Algorithm</td>
@@ -35,10 +33,12 @@ Avoid using symmetric ciphers with less than 192-bit comparative key size if pos
3533
</table></div>
3634

3735
- XChacha20 allows 192-bit nonce, while Chacha20 only allows 64-bit nonce.
36+
- Do not ever reuse nonce, as such misuse will cripple security.
37+
- Message authentication is required implicitly, as we did not list any operation mode without message authentication.
38+
- Symmetric keys should be rotated at least once every 90 days despite the industry norm of 180, with duration shortened more and more with increased data confidentiality. Leaked symmetric keys should be revoked as soon as possible, and ephemeral keys that expire on session finishes are recommended.
39+
- Avoid using symmetric ciphers with less than 192-bit comparative key size if possible, as Grover's algorithm may half the security of 128-bit keys down to effectively 64-bit, reducing brute-forcing to be further within reach.
3840

3941
### Asymmetric
40-
Combine PQ with non-PQ asymmetric algorithms, in case either is broken.
41-
4242
<div class="table-wrapper"><table>
4343
<thead><tr>
4444
<td>Field</td>
@@ -82,10 +82,15 @@ Combine PQ with non-PQ asymmetric algorithms, in case either is broken.
8282
</tr></tbody>
8383
</table></div>
8484

85+
- Apart from HQC waiting NIST finalization, all PQ algorithms have been formally published by NIST.
86+
- Combine PQ with non-PQ asymmetric algorithms, in case either is broken.
87+
8588
## Hashing
8689
Recommended hashing algorithms are listed below. While actual recommendations are marked in bold, order of each entry does not imply preference, and decisions must be also made with strength and availability in mind.
8790

8891
### Secret deriviation
92+
While higher costs increase security, it will impact performance. Balance your parameters based on your need, and benchmark whenever unsure.
93+
8994
#### Argon2
9095
- Mode: Prefer `argon2id`.
9196
- Memory: At least 19 MiB, 64 MiB recommended.
@@ -97,7 +102,7 @@ Sources:
97102
2. [OWASP Cheat Sheet - Password storage cheat sheet](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)
98103

99104
#### Scrypt
100-
- Space cost: At least 2<sup>17</sup>.
105+
- Space cost: At least 2<sup>16</sup>.
101106
- Block size: At least 8 (1 KiB).
102107
- Parallelism: At least 1.
103108
- Output: 32 bytes.
@@ -116,13 +121,13 @@ Sources:
116121
</tr></thead>
117122
<tbody><tr>
118123
<td>SHA2</td>
119-
<td>224, 512/224, <b>256</b>,<br/>512/256, 384, 512</td>
124+
<td><b>256</b>,<br/>512/256, 384, 512</td>
120125
</tr><tr>
121126
<td>SHA3</td>
122127
<td>224, <b>256</b>, 384, 512</td>
123128
</tr><tr>
124129
<td>BLAKE2</td>
125-
<td><b>BLAKE2b</b>, 1~<b>32</b>~64 B<br/>BLAKE2s, 1~<b>32</b></td>
130+
<td><b>BLAKE2b</b>, 1~<b>32</b>~64 B<br/>BLAKE2s, 1~<b>32</b> B</td>
126131
</tr><tr>
127132
<td>BLAKE3</td>
128133
<td>Any, <b>256</b></td>
@@ -139,7 +144,7 @@ We currently do not utilize ECH directly on our servers. This is still a WIP.
139144
Whenever available, we will serve the certificate hash used for direct connections to our endpoints under [this URL](https://www.ltgc.cc/cert-sha256) for whoever requiring it. Exact certificate hash can be utilized to confirm if MITM attacks are observed.
140145

141146
### Authorities (CA)
142-
We currently issue certificates from the following certificate authorities. Hashes of the utilized root certificates are up-to-date as of 7th March, 2026.
147+
We currently issue certificates from the following certificate authorities. Hashes of the utilized root certificates are up-to-date as of 7th March, 2026. All of our certificates are included in CT (certificate transparency) logs.
143148

144149
- [Amazon Trust Services](https://www.amazontrust.com/repository/)
145150
- `Amazon Root CA 1` (CS): `87dcd4dc74640a322cd205552506d1be64f12596258096544986b4850bc72706`

0 commit comments

Comments
 (0)