<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cryptography on Le Site de François</title><link>https://lesitedefrancois.be/en/tags/cryptography/</link><description>Recent content in Cryptography on Le Site de François</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 François</copyright><atom:link href="https://lesitedefrancois.be/en/tags/cryptography/index.xml" rel="self" type="application/rss+xml"/><item><title>AES (Advanced Encryption Standard)</title><link>https://lesitedefrancois.be/en/security/aes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/aes/</guid><description>&lt;p&gt;&lt;strong&gt;AES (Advanced Encryption Standard)&lt;/strong&gt;, standardised as NIST FIPS 197 in 2001, is the symmetric block cipher that underlies virtually all data encryption in modern infrastructure. It was selected through a five-year open competition that evaluated 15 candidate algorithms; the winner, &lt;strong&gt;Rijndael&lt;/strong&gt; (designed by Joan Daemen and Vincent Rijmen), became AES. A block cipher takes a fixed-size block of plaintext and a key and produces a fixed-size block of ciphertext — AES always operates on &lt;strong&gt;128-bit (16-byte) blocks&lt;/strong&gt;, regardless of key size. Three key lengths are standardised: &lt;strong&gt;AES-128&lt;/strong&gt; (128-bit key, 10 rounds), &lt;strong&gt;AES-192&lt;/strong&gt; (192-bit key, 12 rounds), and &lt;strong&gt;AES-256&lt;/strong&gt; (256-bit key, 14 rounds), providing 128, 192, and 256 bits of security respectively against classical attacks. AES-256 is the conservative choice for data with long confidentiality requirements and is mandated by CNSA 2.0 for national security systems; AES-128 is widely deployed in TLS and provides adequate security for most workloads. The internal structure — SubBytes, ShiftRows, MixColumns, AddRoundKey — is fully public and has withstood over two decades of cryptanalysis; the best known attacks against full-round AES are theoretical and computationally infeasible, requiring work far beyond brute force but not threatening practical security.&lt;/p&gt;</description></item><item><title>Diffie-Hellman (DH / ECDH / X25519)</title><link>https://lesitedefrancois.be/en/security/diffie-hellman/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/diffie-hellman/</guid><description>&lt;p&gt;&lt;strong&gt;Diffie-Hellman (DH)&lt;/strong&gt; is a key exchange protocol published by Whitfield Diffie and Martin Hellman in 1976 — the first public description of asymmetric cryptography and one of the most consequential cryptographic publications in history. Its fundamental contribution is solving the &lt;strong&gt;key establishment problem&lt;/strong&gt;: two parties who have never communicated before, communicating over a channel that an adversary can fully observe, can nonetheless agree on a shared secret that the adversary cannot determine. The security of finite-field DH rests on the &lt;strong&gt;discrete logarithm problem&lt;/strong&gt;: given &lt;code&gt;g^a mod p&lt;/code&gt; and &lt;code&gt;g^b mod p&lt;/code&gt; (the public values exchanged), computing &lt;code&gt;g^ab mod p&lt;/code&gt; (the shared secret) requires solving for either &lt;code&gt;a&lt;/code&gt; or &lt;code&gt;b&lt;/code&gt;, which is computationally infeasible for sufficiently large groups. The 1976 original uses multiplicative groups of integers modulo a prime &lt;code&gt;p&lt;/code&gt;; the security level is determined by the size of &lt;code&gt;p&lt;/code&gt; (currently 2048-bit minimum, 3072-bit recommended) and the group&amp;rsquo;s structure. &lt;strong&gt;Finite-field DH&lt;/strong&gt; is still deployed in TLS 1.2 &lt;code&gt;DHE&lt;/code&gt; cipher suites and legacy IPsec configurations, but has been supplanted in new deployments by &lt;strong&gt;Elliptic Curve Diffie-Hellman (ECDH)&lt;/strong&gt; and specifically by &lt;strong&gt;X25519&lt;/strong&gt;, which provide equivalent security at dramatically smaller key sizes.&lt;/p&gt;</description></item><item><title>ECC (Elliptic Curve Cryptography)</title><link>https://lesitedefrancois.be/en/security/ecc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ecc/</guid><description>&lt;p&gt;&lt;strong&gt;Elliptic Curve Cryptography (ECC)&lt;/strong&gt; is a family of public-key cryptographic algorithms built on the mathematics of elliptic curves over finite fields. Its security rests on the &lt;strong&gt;Elliptic Curve Discrete Logarithm Problem (ECDLP)&lt;/strong&gt;: given a public point &lt;code&gt;Q = k × G&lt;/code&gt; on a curve (where &lt;code&gt;G&lt;/code&gt; is a fixed base point and &lt;code&gt;k&lt;/code&gt; is the private key scalar), recovering &lt;code&gt;k&lt;/code&gt; from &lt;code&gt;Q&lt;/code&gt; and &lt;code&gt;G&lt;/code&gt; is computationally infeasible on classical computers. The practical advantage over &lt;strong&gt;RSA&lt;/strong&gt; is dramatic key size efficiency: a 256-bit ECC key provides roughly the same classical security as a 3072-bit RSA key, because the best known classical algorithms for ECDLP (Pollard&amp;rsquo;s rho) are exponential whereas the best RSA algorithms (GNFS) are sub-exponential. This size difference has compounding benefits — smaller keys mean faster operations, smaller certificates, smaller TLS handshake messages, and lower power consumption on constrained devices. ECC is now the dominant choice for all new asymmetric cryptography deployments: TLS 1.3 mandates ECDHE for key exchange, and ECDSA or EdDSA for authentication; SSH defaults to Ed25519; code signing infrastructure increasingly uses ECDSA P-256 or Ed25519.&lt;/p&gt;</description></item><item><title>ECDSA (Elliptic Curve Digital Signature Algorithm)</title><link>https://lesitedefrancois.be/en/security/ecdsa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ecdsa/</guid><description>&lt;p&gt;&lt;strong&gt;ECDSA (Elliptic Curve Digital Signature Algorithm)&lt;/strong&gt; is the elliptic curve analogue of DSA, standardised in FIPS 186 and the IETF, that produces digital signatures using a private key and verifies them with the corresponding public key. It is the most widely deployed signature algorithm in &lt;strong&gt;X.509&lt;/strong&gt; certificates (P-256 with SHA-256 is the default for certificate authorities issuing TLS certificates), in code signing (Authenticode, macOS, Linux package signing), in TLS 1.3 certificate authentication, in SSH host keys and user keys (though Ed25519 is increasingly preferred), and in blockchain and cryptocurrency systems. An ECDSA signature over a message &lt;code&gt;m&lt;/code&gt; with private key &lt;code&gt;d&lt;/code&gt; on curve with base point &lt;code&gt;G&lt;/code&gt; produces a pair &lt;code&gt;(r, s)&lt;/code&gt;, where &lt;code&gt;r&lt;/code&gt; is the x-coordinate of an ephemeral public key &lt;code&gt;k × G&lt;/code&gt; and &lt;code&gt;s&lt;/code&gt; encodes the relationship between the message hash, &lt;code&gt;r&lt;/code&gt;, the private key &lt;code&gt;d&lt;/code&gt;, and the nonce &lt;code&gt;k&lt;/code&gt;. Verification requires only the public key &lt;code&gt;Q = d × G&lt;/code&gt; and is fast; signing requires the private key and a nonce.&lt;/p&gt;</description></item><item><title>FIDO (Fast IDentity Online) / FIDO2</title><link>https://lesitedefrancois.be/en/security/fido/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/fido/</guid><description>&lt;p&gt;&lt;strong&gt;FIDO2&lt;/strong&gt; is the current generation of authentication standards produced jointly by the &lt;strong&gt;FIDO Alliance&lt;/strong&gt; and the &lt;strong&gt;W3C&lt;/strong&gt;, combining two specifications: &lt;strong&gt;WebAuthn&lt;/strong&gt; (Web Authentication API, W3C Level 3, 2025) and &lt;strong&gt;CTAP2&lt;/strong&gt; (Client to Authenticator Protocol 2, FIDO Alliance). Its defining security property is &lt;strong&gt;origin binding&lt;/strong&gt;: every FIDO2 credential is generated and used with a cryptographic binding to the specific Relying Party ID (RP ID — typically the registering domain&amp;rsquo;s origin) encoded into every authentication assertion. An authenticator will refuse to produce an assertion for &lt;code&gt;evil.com&lt;/code&gt; using a credential registered with &lt;code&gt;bank.com&lt;/code&gt;, even if the phishing site presents an identical login page and intercepts the WebAuthn call — the origin check is enforced inside the authenticator, not in JavaScript, and cannot be bypassed by a man-in-the-middle who controls the network or the browser DOM. This property is what makes FIDO2 &lt;strong&gt;phishing-resistant&lt;/strong&gt; by construction, whereas TOTP, SMS OTP, and push-notification MFA are all interceptable by a real-time phishing proxy. FIDO2 is the direct successor to FIDO U2F (Universal 2nd Factor), which provided phishing resistance as a second factor only; FIDO2 extends the model to full passwordless primary authentication.&lt;/p&gt;</description></item><item><title>FIPS 140-2 / FIPS 140-3</title><link>https://lesitedefrancois.be/en/compliance/fips-140/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/compliance/fips-140/</guid><description>&lt;p&gt;&lt;strong&gt;FIPS 140&lt;/strong&gt; (Federal Information Processing Standard, Publication 140) is the US and Canadian government standard that defines security requirements for cryptographic modules — the hardware, software, or firmware components that perform cryptographic operations (encryption, decryption, hashing, signing, key management). It is published by &lt;strong&gt;NIST&lt;/strong&gt; (National Institute of Standards and Technology) and jointly administered with &lt;strong&gt;CCCS&lt;/strong&gt; (Canadian Centre for Cyber Security) through the &lt;strong&gt;Cryptographic Module Validation Program (CMVP)&lt;/strong&gt;. The standard has two active versions: &lt;strong&gt;FIPS 140-2&lt;/strong&gt; (published 2001, no longer accepting new submissions since April 2022) and &lt;strong&gt;FIPS 140-3&lt;/strong&gt; (effective September 2020, the current standard for all new validations). FIPS 140-2 certificates remain valid until &lt;strong&gt;21 September 2026&lt;/strong&gt;, after which they move to the Historical list — meaning only FIPS 140-3 validated modules will be accepted for new federal procurements. FIPS 140 defines four security levels (Level 1 through Level 4), with Level 1 being the baseline for software modules and Level 4 requiring physical tamper-active hardware. Compliance is &lt;strong&gt;mandatory&lt;/strong&gt; for all US federal agencies and their contractors under FISMA, for Canadian federal systems, and is widely adopted by regulated industries (finance, healthcare, critical infrastructure) globally. Non-validated cryptography is treated as providing &lt;strong&gt;no protection&lt;/strong&gt; — effectively plaintext — regardless of the algorithm strength. Validation is a formal, lab-based process: vendors submit modules to accredited Cryptographic and Security Testing (CST) laboratories, which test against the standard and submit results to CMVP for certificate issuance.&lt;/p&gt;</description></item><item><title>Hash Function (Cryptographic Hash Function)</title><link>https://lesitedefrancois.be/en/security/hash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/hash/</guid><description>&lt;p&gt;A &lt;strong&gt;cryptographic hash function&lt;/strong&gt; maps an input of arbitrary length (a file, a certificate, a password, a block of network data) to a fixed-length &lt;strong&gt;digest&lt;/strong&gt; (also called a hash or fingerprint) with three security properties that distinguish it from non-cryptographic checksums. &lt;strong&gt;Preimage resistance&lt;/strong&gt;: given a digest &lt;code&gt;h&lt;/code&gt;, it is computationally infeasible to find any input &lt;code&gt;m&lt;/code&gt; such that &lt;code&gt;H(m) = h&lt;/code&gt;. &lt;strong&gt;Second preimage resistance&lt;/strong&gt;: given an input &lt;code&gt;m1&lt;/code&gt;, it is computationally infeasible to find a different input &lt;code&gt;m2&lt;/code&gt; such that &lt;code&gt;H(m1) = H(m2)&lt;/code&gt;. &lt;strong&gt;Collision resistance&lt;/strong&gt;: it is computationally infeasible to find any pair &lt;code&gt;(m1, m2)&lt;/code&gt; with &lt;code&gt;m1 ≠ m2&lt;/code&gt; such that &lt;code&gt;H(m1) = H(m2)&lt;/code&gt;. Collision resistance is the strongest property and implies second preimage resistance but not preimage resistance. These properties together make a hash function a one-way, tamper-evident fingerprint: two inputs that produce the same digest cannot be found by an adversary, and knowing the digest reveals nothing about the input beyond its length.&lt;/p&gt;</description></item><item><title>HMAC (Hash-based Message Authentication Code)</title><link>https://lesitedefrancois.be/en/security/hmac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/hmac/</guid><description>&lt;p&gt;&lt;strong&gt;HMAC (Hash-based Message Authentication Code)&lt;/strong&gt;, standardised in RFC 2104 (1997) and FIPS 198-1, is a construction that produces a &lt;strong&gt;Message Authentication Code (MAC)&lt;/strong&gt; by combining a cryptographic hash function with a shared secret key. A plain &lt;strong&gt;hash function&lt;/strong&gt; provides integrity — any modification to a message changes its digest — but anyone can recompute the digest of a modified message, so a hash alone cannot prove that a message came from a specific party who holds a secret. HMAC adds authenticity: only a party who knows the key &lt;code&gt;K&lt;/code&gt; can produce a valid &lt;code&gt;HMAC(K, message)&lt;/code&gt;, and only a party who knows &lt;code&gt;K&lt;/code&gt; can verify it. The construction is &lt;code&gt;HMAC(K, m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m))&lt;/code&gt; — two rounds of hashing with the key XOR&amp;rsquo;d against inner and outer padding constants — a design chosen to be provably secure against length-extension attacks that affect naive &lt;code&gt;H(K ∥ m)&lt;/code&gt; constructions with Merkle-Damgård hash functions like SHA-256. HMAC is proven secure as long as the underlying hash function is a pseudorandom function, a weaker requirement than collision resistance, meaning HMAC-SHA-256 remains secure even in scenarios where SHA-256 collision resistance might be weakened.&lt;/p&gt;</description></item><item><title>HSM (Hardware Security Module)</title><link>https://lesitedefrancois.be/en/security/hsm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/hsm/</guid><description>&lt;p&gt;A &lt;strong&gt;Hardware Security Module (HSM)&lt;/strong&gt; is a purpose-built, tamper-resistant hardware device that holds cryptographic keys and performs cryptographic operations — signing, encryption, decryption, random number generation — entirely within its own protected boundary. The defining property is that private keys generated inside an HSM never exist in plaintext outside it: operations that need the key are sent into the HSM and the result is returned, but the key material itself cannot be extracted. This property is enforced both logically (the firmware refuses export in plaintext) and physically (the device detects and responds to tampering by erasing key material before an attacker can read it). HSMs come in several physical forms: network-attached appliances (rack-mounted devices accessed over the network by many clients), PCIe cards (embedded in a server), and compact USB devices for lower-throughput use cases like protecting CA root keys offline.&lt;/p&gt;</description></item><item><title>IPsec (Internet Protocol Security)</title><link>https://lesitedefrancois.be/en/security/ipsec/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ipsec/</guid><description>&lt;p&gt;&lt;strong&gt;IPsec (Internet Protocol Security)&lt;/strong&gt; is a suite of IETF standards (core specification RFC 4301) that adds cryptographic security to IP packets at the network layer, transparently to applications running above it. Where &lt;strong&gt;TLS&lt;/strong&gt; secures a specific connection between two application endpoints, IPsec secures all IP traffic between two hosts or networks — including traffic from applications that have no TLS support, protocols that predate encryption (routing protocols, SNMP, ICMP), and layer-3 metadata that TLS cannot protect. IPsec provides two protocol headers: &lt;strong&gt;AH (Authentication Header, IP protocol 51)&lt;/strong&gt; signs the IP packet including immutable header fields, providing integrity and source authentication without confidentiality — rarely used in modern deployments because NAT rewrites fields that AH covers. &lt;strong&gt;ESP (Encapsulating Security Payload, IP protocol 50)&lt;/strong&gt; encrypts the payload and provides authenticated encryption with AES-GCM or ChaCha20-Poly1305, optionally protecting the inner IP header as well; ESP is the universally deployed choice. Both operate in two modes: &lt;strong&gt;transport mode&lt;/strong&gt; protects only the payload of an existing IP packet (used for host-to-host encryption between endpoints that share routing), and &lt;strong&gt;tunnel mode&lt;/strong&gt; encapsulates the entire original IP packet inside a new one with new source and destination addresses — the basis of VPN gateways where traffic from one network is tunnelled to another through the public internet.&lt;/p&gt;</description></item><item><title>JWT (JSON Web Token)</title><link>https://lesitedefrancois.be/en/security/jwt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/jwt/</guid><description>&lt;p&gt;&lt;strong&gt;JWT (JSON Web Token)&lt;/strong&gt;, standardised in RFC 7519, is a compact, self-contained token format that encodes a set of &lt;strong&gt;claims&lt;/strong&gt; — assertions about a subject, an issuer, an audience, and arbitrary application-defined attributes — as a JSON object, signs or encrypts it, and serialises the result as three base64url-encoded segments separated by dots: &lt;code&gt;header.payload.signature&lt;/code&gt;. The header is a JSON object specifying the algorithm (&lt;code&gt;alg&lt;/code&gt;) and optionally a key ID (&lt;code&gt;kid&lt;/code&gt;) used to produce the signature. The payload is a JSON object containing the claims. The signature is computed over &lt;code&gt;base64url(header) + &amp;quot;.&amp;quot; + base64url(payload)&lt;/code&gt; using the algorithm declared in the header. The entire token is URL-safe, fits in an HTTP header or query parameter, and is self-describing — a verifier can locate the signing key, check the algorithm, verify the signature, and read the claims without any external lookup beyond fetching the issuer&amp;rsquo;s public key. This self-contained nature is what makes JWTs efficient at scale: unlike opaque tokens, which require a network call to the issuer&amp;rsquo;s introspection endpoint per verification, a JWT can be verified locally with a cached public key, making it suitable for high-throughput API gateways and distributed systems.&lt;/p&gt;</description></item><item><title>ML-DSA (Module-Lattice-Based Digital Signature Algorithm)</title><link>https://lesitedefrancois.be/en/security/ml-dsa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ml-dsa/</guid><description>&lt;p&gt;&lt;strong&gt;ML-DSA (Module-Lattice-Based Digital Signature Algorithm)&lt;/strong&gt;, standardised as &lt;strong&gt;NIST FIPS 204&lt;/strong&gt; in August 2024, is the primary post-quantum replacement for digital signatures. It replaces &lt;strong&gt;ECDSA&lt;/strong&gt;, &lt;strong&gt;EdDSA&lt;/strong&gt;, and &lt;strong&gt;RSA&lt;/strong&gt; PSS/PKCS#1 signatures in &lt;strong&gt;X.509&lt;/strong&gt; certificates, code signing, TLS client and server authentication, SSH, JWT signing, and any other context where a party proves possession of a private key by producing a signature that others verify with the public key. ML-DSA is derived from CRYSTALS-Dilithium, the submission that won NIST&amp;rsquo;s lattice-based signature selection, and its security rests on the &lt;strong&gt;Module Learning With Errors (MLWE)&lt;/strong&gt; and &lt;strong&gt;Module Short Integer Solution (MSIS)&lt;/strong&gt; problems — the same mathematical family as &lt;strong&gt;ML-KEM&lt;/strong&gt;, which is significant because both algorithms can share implementation code and hardware acceleration for the underlying polynomial arithmetic (NTT, number-theoretic transform).&lt;/p&gt;</description></item><item><title>ML-KEM (Module-Lattice-Based Key Encapsulation Mechanism)</title><link>https://lesitedefrancois.be/en/security/ml-kem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ml-kem/</guid><description>&lt;p&gt;&lt;strong&gt;ML-KEM (Module-Lattice-Based Key Encapsulation Mechanism)&lt;/strong&gt;, standardised as &lt;strong&gt;NIST FIPS 203&lt;/strong&gt; in August 2024, is the primary post-quantum replacement for key encapsulation and key exchange. It replaces the role of &lt;strong&gt;ECDH&lt;/strong&gt; (X25519, P-256) and RSA key transport in &lt;strong&gt;TLS&lt;/strong&gt; handshakes, &lt;strong&gt;IPsec&lt;/strong&gt; IKEv2 negotiations, and any other protocol that needs two parties to establish a shared secret without prior key material. ML-KEM is derived from CRYSTALS-Kyber, the submission that won NIST&amp;rsquo;s lattice-based KEM selection, and its security rests on the &lt;strong&gt;Module Learning With Errors (MLWE)&lt;/strong&gt; problem: distinguishing a structured noisy linear system from a random one is computationally hard, and no efficient quantum algorithm for this problem is known. The &amp;ldquo;module&amp;rdquo; qualifier means the construction uses polynomial rings structured in a way that allows a good balance between security and efficiency, contrasting with pure LWE (larger keys, simpler structure) and NTRU (smaller keys, different structure).&lt;/p&gt;</description></item><item><title>mTLS (Mutual TLS)</title><link>https://lesitedefrancois.be/en/security/mtls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/mtls/</guid><description>&lt;p&gt;&lt;strong&gt;mTLS (Mutual TLS)&lt;/strong&gt; is the configuration of &lt;strong&gt;TLS&lt;/strong&gt; in which certificate-based authentication is required from both sides of the connection, not just the server. In standard TLS, only the server presents an &lt;strong&gt;X.509&lt;/strong&gt; certificate, which the client verifies to confirm it is talking to the intended host; the client is typically anonymous to the server, or authenticates separately via a password or session token at the application layer. In mTLS, the client also presents a certificate during the TLS handshake; the server verifies it against a trusted CA before completing the connection. The result is cryptographic proof of identity in both directions: the client knows it is talking to the legitimate server (as in standard TLS), and the server knows the exact identity of the connecting client — without any password, API key, or token exchanged in the application layer.&lt;/p&gt;</description></item><item><title>OpenPGP / GPG</title><link>https://lesitedefrancois.be/en/security/gpg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/gpg/</guid><description>&lt;p&gt;&lt;strong&gt;OpenPGP&lt;/strong&gt; is an open standard for encryption and digital signatures of arbitrary data, defined in RFC 4880 (2007) and substantially revised in RFC 9580 (2024, adding Ed25519, X25519, and modern AEAD encryption). &lt;strong&gt;GnuPG (GPG)&lt;/strong&gt; is the dominant open-source implementation, maintained by Werner Koch and the GnuPG project, and the tool most users interact with. OpenPGP predates the &lt;strong&gt;PKI&lt;/strong&gt;/CA model and takes a fundamentally different approach to trust: rather than a hierarchy of certificate authorities that users must trust transitively, OpenPGP uses a &lt;strong&gt;Web of Trust&lt;/strong&gt; in which individual users sign each other&amp;rsquo;s public keys, and trust is established through chains of personal endorsements. In the Web of Trust model, Alice trusts Bob&amp;rsquo;s key because she verified it in person and signed it; Carol trusts Bob&amp;rsquo;s key because Alice (whom Carol trusts) signed it. This decentralised, peer-to-peer trust model made sense for email encryption between individuals who could meet at key-signing parties, but does not scale to automated infrastructure verification, which is why OpenPGP&amp;rsquo;s role in modern infrastructure is primarily &lt;strong&gt;supply chain signing&lt;/strong&gt; — package repositories, Git commits, and release artifacts — rather than interactive authentication.&lt;/p&gt;</description></item><item><title>OpenSSL</title><link>https://lesitedefrancois.be/en/security/openssl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/openssl/</guid><description>&lt;p&gt;&lt;strong&gt;OpenSSL&lt;/strong&gt; is an open-source cryptographic library and command-line toolkit, originally derived from SSLeay in 1998 and now governed by the OpenSSL Software Foundation under an Apache 2.0 licence (since version 3.0). It is the default cryptographic substrate for the majority of Linux server software: Apache httpd, nginx, curl, wget, PostgreSQL, MySQL, Postfix, OpenLDAP, and hundreds of other projects link against &lt;code&gt;libssl&lt;/code&gt; and &lt;code&gt;libcrypto&lt;/code&gt; by default. It implements &lt;strong&gt;TLS&lt;/strong&gt; (all versions from 1.2 through 1.3), &lt;strong&gt;X.509&lt;/strong&gt; certificate parsing and validation, &lt;strong&gt;PKI&lt;/strong&gt; operations (CSR generation, certificate signing, CRL and OCSP processing), and the full range of cryptographic primitives — symmetric ciphers (AES-GCM, ChaCha20-Poly1305), &lt;strong&gt;hash functions&lt;/strong&gt; (SHA-2, SHA-3, SHAKE), &lt;strong&gt;RSA&lt;/strong&gt;, &lt;strong&gt;ECC&lt;/strong&gt; (ECDSA, ECDH, Ed25519, X25519), HMAC, HKDF, and key derivation functions. The library has two primary components: &lt;code&gt;libcrypto&lt;/code&gt;, the algorithm library, and &lt;code&gt;libssl&lt;/code&gt;, the TLS protocol layer built on top of it. The &lt;code&gt;openssl&lt;/code&gt; command-line tool exposes both as a single swiss-army interface for certificate management, key generation, encryption, hashing, benchmarking, and protocol testing.&lt;/p&gt;</description></item><item><title>PKI (Public Key Infrastructure)</title><link>https://lesitedefrancois.be/en/security/pki/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/pki/</guid><description>&lt;p&gt;&lt;strong&gt;Public Key Infrastructure (PKI)&lt;/strong&gt; is the framework that makes asymmetric cryptography operationally useful at scale. Asymmetric cryptography provides a mathematical relationship between a public key and a private key, but by itself it cannot answer the question a relying party cares about: &lt;em&gt;whose&lt;/em&gt; public key is this? PKI answers that question by introducing a trusted third party — the &lt;strong&gt;Certificate Authority (CA)&lt;/strong&gt; — that cryptographically binds a public key to an identity (a hostname, an organisation name, an email address, a SPIFFE ID) by signing a certificate. A relying party that trusts the CA can therefore trust any certificate the CA signs, without needing to know the subject directly. The chain of trust extends recursively: a &lt;strong&gt;Root CA&lt;/strong&gt; signs &lt;strong&gt;Intermediate CA&lt;/strong&gt; certificates, which sign &lt;strong&gt;end-entity certificates&lt;/strong&gt; (also called leaf certificates). Root CA private keys are kept offline in &lt;strong&gt;HSMs&lt;/strong&gt; and used rarely; intermediate CAs handle day-to-day issuance and can be revoked without rotating the root. The set of root CA certificates a system trusts is its &lt;strong&gt;trust store&lt;/strong&gt; — browsers and operating systems ship with a pre-populated trust store of publicly-trusted roots, while private PKIs use custom roots distributed by administrators.&lt;/p&gt;</description></item><item><title>PQC (Post-Quantum Cryptography)</title><link>https://lesitedefrancois.be/en/security/pqc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/pqc/</guid><description>&lt;p&gt;&lt;strong&gt;Post-Quantum Cryptography (PQC)&lt;/strong&gt; is the set of cryptographic algorithms designed to resist attacks from a &lt;strong&gt;Cryptographically Relevant Quantum Computer (CRQC)&lt;/strong&gt; — a quantum computer large and stable enough to run Shor&amp;rsquo;s algorithm at scale. Shor&amp;rsquo;s algorithm can solve the integer factorisation and discrete logarithm problems that underpin RSA, ECDSA, and ECDH in polynomial time, meaning that every asymmetric algorithm in wide use today — TLS key exchange, X.509 certificate signatures, SSH host keys, code signing, and encrypted email — becomes trivially breakable by a CRQC. Symmetric algorithms (AES, SHA-256) are substantially less affected: Grover&amp;rsquo;s algorithm provides only a quadratic speedup against them, which is mitigated by doubling key lengths (AES-256 remains appropriate). PQC replaces the asymmetric primitives only, on hard mathematical problems for which no efficient quantum algorithm is known: &lt;strong&gt;structured lattices&lt;/strong&gt; (the Learning With Errors and Module-LWE problems), &lt;strong&gt;hash functions&lt;/strong&gt; (the security of SHA-3 family variants), and &lt;strong&gt;error-correcting codes&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>RSA (Rivest–Shamir–Adleman)</title><link>https://lesitedefrancois.be/en/security/rsa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/rsa/</guid><description>&lt;p&gt;&lt;strong&gt;RSA (Rivest–Shamir–Adleman)&lt;/strong&gt;, published in 1977, was the first widely adopted public-key cryptosystem and for decades the most deployed asymmetric algorithm in existence. Its security rests on the &lt;strong&gt;integer factorisation problem&lt;/strong&gt;: given a public modulus &lt;code&gt;n = p × q&lt;/code&gt; (the product of two large primes), recovering &lt;code&gt;p&lt;/code&gt; and &lt;code&gt;q&lt;/code&gt; is computationally infeasible on classical computers for sufficiently large &lt;code&gt;n&lt;/code&gt;. The public key is the pair &lt;code&gt;(n, e)&lt;/code&gt; and the private key is &lt;code&gt;(n, d)&lt;/code&gt;, where &lt;code&gt;e&lt;/code&gt; and &lt;code&gt;d&lt;/code&gt; are related by the modular arithmetic of Euler&amp;rsquo;s totient function. RSA enables two operations: &lt;strong&gt;encryption&lt;/strong&gt; (the sender uses the public key to encrypt a message that only the private key holder can decrypt) and &lt;strong&gt;signing&lt;/strong&gt; (the private key holder produces a signature that anyone with the public key can verify). In practice, RSA encryption is used almost exclusively for &lt;strong&gt;key encapsulation&lt;/strong&gt; — encrypting a randomly generated symmetric key — rather than encrypting arbitrary data directly, both because RSA is slow and because direct RSA encryption of large messages requires padding schemes that are historically error-prone.&lt;/p&gt;</description></item><item><title>SHA (Secure Hash Algorithm)</title><link>https://lesitedefrancois.be/en/security/sha/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/sha/</guid><description>&lt;p&gt;&lt;strong&gt;SHA (Secure Hash Algorithm)&lt;/strong&gt; is the name given to a series of cryptographic hash function families standardised by NIST under FIPS 180 and FIPS 202. Three generations exist with fundamentally different design lineages. &lt;strong&gt;SHA-1&lt;/strong&gt; (1995, FIPS 180-1) produces a 160-bit digest and is &lt;strong&gt;fully broken for collision resistance&lt;/strong&gt;: the SHAttered attack (Google and CWI Amsterdam, 2017) produced a chosen-prefix collision — two different PDF files with identical SHA-1 hashes — using approximately 9.2 × 10^18 SHA-1 operations, within practical reach of well-resourced attackers. SHA-1 must not be used for any security purpose; it persists only in legacy Git object identifiers (SHA-1 is being phased out in Git&amp;rsquo;s object store in favour of SHA-256 under the &lt;code&gt;sha256&lt;/code&gt; object format) and in TOTP&amp;rsquo;s HMAC-SHA-1 inner construction (where collision resistance is not the relevant security property, but migration to SHA-256 variants is still recommended). &lt;strong&gt;SHA-2&lt;/strong&gt; (2001, FIPS 180-2 and subsequent revisions) is the Merkle-Damgård family that includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256. SHA-256 and SHA-512 are the two variants in universal production use; the others serve niche roles. &lt;strong&gt;SHA-3&lt;/strong&gt; (2015, FIPS 202) is the Keccak sponge construction — structurally independent of SHA-2 — providing algorithm diversity and including fixed-output variants (SHA3-256, SHA3-512) and extendable output functions (SHAKE128, SHAKE256).&lt;/p&gt;</description></item><item><title>SLH-DSA (Stateless Hash-Based Digital Signature Algorithm)</title><link>https://lesitedefrancois.be/en/security/slh-dsa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/slh-dsa/</guid><description>&lt;p&gt;&lt;strong&gt;SLH-DSA (Stateless Hash-Based Digital Signature Algorithm)&lt;/strong&gt;, standardised as &lt;strong&gt;NIST FIPS 205&lt;/strong&gt; in August 2024, is the post-quantum signature standard based on hash functions rather than lattice problems. Where &lt;strong&gt;ML-DSA&lt;/strong&gt; and &lt;strong&gt;ML-KEM&lt;/strong&gt; both rest their security on the hardness of Module Learning With Errors — a relatively young mathematical assumption first formulated in 2005 — SLH-DSA&amp;rsquo;s security rests exclusively on the collision resistance and preimage resistance of an underlying hash function (SHA-256, SHA-512, or SHAKE, depending on parameter set). Hash function security against quantum computers is well-understood: Grover&amp;rsquo;s algorithm provides at most a quadratic speedup, which is fully mitigated by doubling output size (SHA-256 remains adequate against classical attacks; SHA-512 provides AES-256-equivalent quantum resistance). The decades-long cryptanalytic confidence in SHA-2 and SHA-3 makes SLH-DSA&amp;rsquo;s security argument the most conservative available: it requires no new mathematical assumption beyond the hash functions already trusted throughout the entire cryptographic stack.&lt;/p&gt;</description></item><item><title>SSH (Secure Shell)</title><link>https://lesitedefrancois.be/en/security/ssh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ssh/</guid><description>&lt;p&gt;&lt;strong&gt;SSH (Secure Shell)&lt;/strong&gt; is a cryptographic protocol, standardised in RFC 4251–4254, that provides a secure channel over an unsecured network for remote login, remote command execution, file transfer (via SFTP and SCP), and general TCP port forwarding. It replaced the plaintext protocols it was designed to obsolete — Telnet, rlogin, rsh, rcp — by providing mutual authentication and full session encryption. SSH is the universal administrative access mechanism for Linux servers, network devices, and embedded systems, and the transport layer for Git over SSH, Ansible, Fabric, and most configuration management tooling. The protocol stack has three layers: &lt;strong&gt;SSH-TRANS&lt;/strong&gt; (the transport layer — handles the initial key exchange, server authentication, and establishes the encrypted channel), &lt;strong&gt;SSH-AUTH&lt;/strong&gt; (the authentication protocol — authenticates the client to the server using one of several methods), and &lt;strong&gt;SSH-CONN&lt;/strong&gt; (the connection protocol — multiplexes the encrypted channel into multiple logical channels for sessions, port forwards, and X11 forwarding).&lt;/p&gt;</description></item><item><title>TLS (Transport Layer Security)</title><link>https://lesitedefrancois.be/en/security/tls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/tls/</guid><description>&lt;p&gt;&lt;strong&gt;TLS (Transport Layer Security)&lt;/strong&gt; is the protocol that establishes an encrypted, integrity-protected, and authenticated channel between two parties over an untrusted network. It is the successor to SSL (which is deprecated and broken) and the mechanism behind HTTPS, gRPC, LDAPS, SMTPS, database connections, and most other encrypted transport in modern infrastructure. The current version is &lt;strong&gt;TLS 1.3&lt;/strong&gt; (RFC 8446, 2018); TLS 1.2 remains in wide use but TLS 1.0 and 1.1 are deprecated by RFC 8996. The fundamental security properties TLS provides are: &lt;strong&gt;confidentiality&lt;/strong&gt; (a passive observer cannot read the session content), &lt;strong&gt;integrity&lt;/strong&gt; (an active attacker cannot modify session content without detection), and &lt;strong&gt;server authentication&lt;/strong&gt; (the client can verify it is talking to the intended server rather than an impersonator). Client authentication is optional in standard TLS and is provided by &lt;strong&gt;mTLS&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>WireGuard</title><link>https://lesitedefrancois.be/en/security/wireguard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/wireguard/</guid><description>&lt;p&gt;&lt;strong&gt;WireGuard&lt;/strong&gt; is a VPN protocol and implementation designed by Jason Donenfeld, merged into the Linux kernel in 5.6 (2020) and subsequently ported to Windows, macOS, iOS, Android, and BSD. Its defining characteristic is &lt;strong&gt;radical simplicity&lt;/strong&gt;: the reference Linux kernel implementation is approximately 4,000 lines of code, compared to tens of thousands for &lt;strong&gt;IPsec&lt;/strong&gt;&amp;rsquo;s XFRM subsystem and hundreds of thousands for OpenVPN. This simplicity is a deliberate security property — a smaller codebase has a smaller attack surface, is easier to audit, and is less likely to contain implementation vulnerabilities. WireGuard achieves this by making every design decision that allows optionality to be eliminated: there is no algorithm negotiation, no handshake negotiation, no cipher suite selection. The cryptographic suite is fixed: &lt;strong&gt;X25519&lt;/strong&gt; for key exchange, &lt;strong&gt;ChaCha20-Poly1305&lt;/strong&gt; for authenticated encryption, &lt;strong&gt;BLAKE2s&lt;/strong&gt; for hashing and key derivation (via a custom HKDF-like construction), and &lt;strong&gt;Curve25519&lt;/strong&gt; for the static key pairs that identify peers. Peers are identified exclusively by their 32-byte Curve25519 public key, making WireGuard a &lt;strong&gt;public-key routed&lt;/strong&gt; VPN: there are no usernames, passwords, certificates, or CAs; access control is entirely a function of which public keys are listed in each peer&amp;rsquo;s configuration.&lt;/p&gt;</description></item><item><title>X.509</title><link>https://lesitedefrancois.be/en/security/x509/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/x509/</guid><description>&lt;p&gt;&lt;strong&gt;X.509&lt;/strong&gt; is the ITU-T standard (first published in 1988, currently at version 3) that defines the structure of a &lt;strong&gt;digital certificate&lt;/strong&gt;: a signed data structure that binds a public key to an identity and a set of constraints, issued by a Certificate Authority whose signature vouches for the binding. It is the near-universal format for certificates in &lt;strong&gt;PKI&lt;/strong&gt;, &lt;strong&gt;TLS&lt;/strong&gt;, code signing, S/MIME encrypted email, SPIFFE X.509-SVIDs, and SSH host certificates. When someone refers to a TLS certificate, a CA certificate, or a code-signing certificate, they are referring to an X.509 certificate. The format is defined using ASN.1 (Abstract Syntax Notation One) and most commonly serialised as &lt;strong&gt;DER&lt;/strong&gt; (Distinguished Encoding Rules, binary) or &lt;strong&gt;PEM&lt;/strong&gt; (base64-wrapped DER with &lt;code&gt;-----BEGIN CERTIFICATE-----&lt;/code&gt; headers, the format seen in most configuration files).&lt;/p&gt;</description></item></channel></rss>