GHOSTSHELL
Motion and effects on this site
Download 0.2.0

Harvest now, decrypt later: a post-quantum threat model for network engineers

What a recording of today's management traffic could give a future quantum computer, which of that traffic GHOSTSHELL 0.2.0 protects, and where its protection stops.

A technical paper from the GHOSTSHELL project, describing GHOSTSHELL 0.2.0. It has not been peer reviewed.

Fig. 0 GHOSTSHELL's papers and its reading list as a chart of stars, one row per topic and each work at its year. Accent arcs join this paper to the works its references cite, and a cursor visits them in date order, then this paper.Two estimates of the quantum computer needed to factor RSA-2048, under the same hardware assumptions: about 20 million noisy qubits in 2021, under one million in 2025.

Abstract

Encrypted traffic recorded today can be stored until a quantum computer able to break today's public-key cryptography exists, and decrypted then. For a network engineer, that traffic is the management plane: SSH sessions to routers, switches and servers, the passwords and configurations they carry, and the bastion hosts in between. This paper sets out which parts of that traffic a recording exposes, why the key exchange is the part that matters, and what a hybrid of classical and post-quantum key exchange defends and what it does not. It then maps GHOSTSHELL 0.2.0 onto the model, from post-quantum key exchange offered first by default on every SSH hop to the places its protection stops: RDP, VNC, Telnet, serial lines, proxy-command hops and servers with no post-quantum method.

1 Introduction and threat

1.1 Harvest now, decrypt later

NIST describes the threat directly: adversaries collect encrypted data now in order to decrypt it once quantum technology matures, and because sensitive data keeps its value for years, this is one of the main reasons the transition to post-quantum cryptography is urgent [1]. The attack is passive today, so copying traffic from a link or a mirrored port leaves no trace on either endpoint, and its cost is paid later, against a recording that no longer changes. Protection must therefore last as long as a session's contents are worth reading.

This paper applies the threat to a network engineer's daily traffic, administrative SSH, often through bastion hosts, and uses GHOSTSHELL 0.2.0, a terminal and session manager for Windows, to show what a client can and cannot change. Companion papers cover the SSH key exchange and the vault.

1.2 What a quantum computer breaks

Shor's algorithm factors integers and computes discrete logarithms in polynomial time on a large enough quantum computer [2]. That breaks RSA and Diffie–Hellman, and the approach extends to the elliptic curves behind X25519, P-256, P-384, ECDSA and Ed25519. NIST lists these families as quantum-vulnerable, to be deprecated after 2030 and disallowed after 2035 [1]. Grover's algorithm gives only a square-root speed-up for search [3], so a 256-bit symmetric key keeps roughly 128 bits of strength, and NIST's highest post-quantum security category is defined by key search on a 256-bit block cipher [1]. The 256-bit ciphers that carry an SSH session's data are not the weak link. The key exchange that produced their keys is.

1.3 How close such a machine is

No cryptanalytically relevant quantum computer exists [1], and no source cited here dates one, but the estimated cost has fallen. Gidney and Ekerå estimated that factoring RSA-2048 takes about 20 million noisy qubits [4]; six years after that estimate first appeared as a preprint, Gidney put it under one million under the same hardware assumptions [5]. Both are estimates for RSA; the elliptic curves GHOSTSHELL pairs with post-quantum algorithms have separate estimates, not covered here. Table 1 shows how fast the estimates move, not a date.

Table 1. Two resource estimates for factoring RSA-2048 with Shor's algorithm.
EstimateNoisy qubitsRun timeAssumptions
Gidney and Ekerå, 2021 [4]about 20 millionabout 8 hours0.1 % gate error, 1 µs cycle, 10 µs reaction time
Gidney, 2025 preprint [5]under 1 millionunder a weekthe same

1.4 Why the date does not settle the question

NIST restates Mosca's theorem as a planning rule [1]: with X the years data must stay secret and Y the years needed to migrate, migration must start before X + Y exceeds Z, the time until such a computer exists (Figure 1). For management traffic, X is the useful life of what a session carries: a typed device password until it is changed, a configuration's keys and community strings for as long as the network keeps them. Y is long, because the SSH server on a router changes only with its firmware, and NIST notes that past migrations have taken more than a decade [1]. Z is unknown, and it does not have to be near for X + Y to exceed it.

Mosca's inequality Two bars start today. The upper bar is Y, the years needed to migrate, followed by X, the years the data must then stay secret. The lower bar is Z, the years until a quantum computer can break the key exchange. The part of the upper bar that runs past the end of Z, X plus Y minus Z, is exposed. Y · years to migrate X · years it must stay secret Z · until a quantum computer can break the key exchange X + Y − Z exposed today time
Figure 1. Mosca's inequality as NIST restates it [1]: when migration (Y) plus the time data must stay secret (X) runs past Z, the difference is exposed. The lengths are illustrative; none of the three is known in advance.

2 Background

2.1 What a recording of an SSH session holds

An SSH connection starts in the clear: version strings, then KEXINIT messages listing each side's algorithms, then the key exchange [6]. Everything after it, user authentication included, is encrypted with keys derived from the exchange's shared secret K [6]. Passwords typed at a login, enable or sudo prompt, commands, output, SFTP files and forwarded ports all travel under those keys.

A recording holds everything except K. With a classical exchange such as curve25519-sha256, both ephemeral public values are in the recording, and K follows from them by a discrete logarithm, which Shor's algorithm computes [2]. Forward secrecy does not help: the attacker needs no stored key, only the transcript. With K, the session keys follow by the protocol's own derivation [6], and every later rekey is another exchange in the same recording.

2.2 Signatures are a different problem

Host-key and user signatures prove identity during the handshake. Breaking them later decrypts nothing recorded: NIST notes that signatures are not vulnerable to harvest-now-decrypt-later attacks and lets authentication migrate on its own timeline [1]. They matter only to an attacker who can forge them during the connection, which takes a quantum computer at that moment.

2.3 Hybrid key exchange

A hybrid key exchange runs a classical exchange and a post-quantum key-encapsulation mechanism (KEM) together and derives the session secret from both, so it stays secret while either half holds. Bindel et al. gave this a formal footing, including attackers whose quantum capability arrives later [7], and NIST describes hybrids the same way [1]. SSH has four published hybrids: mlkem768x25519-sha256, mlkem768nistp256-sha256 and mlkem1024nistp384-sha384 (RFC 10042 [8]), pairing ML-KEM (FIPS 203 [9]) with X25519, P-256 or P-384, and sntrup761x25519-sha512 (RFC 9941 [10]), pairing Streamlined NTRU Prime with X25519. Each hashes the two secrets together, K = HASH(K_PQ ‖ K_CL). The cost is size: the client's first value for mlkem768x25519-sha256 is 1,216 bytes, where curve25519-sha256 sends 32.

2.4 Why keep a classical half

Post-quantum algorithms are young. SIKE, in the fourth round of NIST's process, fell to a classical attack that breaks its smallest parameter set in about ten minutes on one core [11]. Rainbow, a finalist signature scheme, lost a key at its lowest security level in about 53 hours on a laptop [12]. Kyber implementations, the reference code among them, leaked keys through secret-dependent division timings [13]. A hybrid whose young half fails must still be broken classically, which no one can do today; NIST gives the same reason for hybrids [1].

3 Design: the threat model

3.1 The adversary

The adversary records traffic on any path between the workstation and the equipment, such as an access network, a transit provider or a mirrored port, stores it, and at some unknown time Z gains a quantum computer that runs Shor's algorithm at the size needed. It may also copy files: a backup, a synced folder, a lost laptop's disk. Malware on the workstation defeats any transport protection and is out of scope, as is an active quantum attacker at connection time (section 3.3).

3.2 What a network engineer exposes

Table 2 lists what an engineer's sessions and files hold and what a later decryption would reveal. The first five rows depend on the key exchange, the next three on encryption at rest, and the last on protocols whose encryption, if any, is not GHOSTSHELL's.

Table 2. What a network engineer exposes, and what a later decryption reveals.
AssetWhere it travels or restsWhat a decryption reveals
Device and server loginsSSH sessions: login, enable and sudo promptsThe credential, until it is changed
ConfigurationSession output, SFTP and SCPTopology, and any keys, hashes and community strings in it
Commands and outputSSH sessionsWhat changed, when, and where
Bastion logins and destinationsThe outer connection of a jump chainThe bastion credential and every device reached through it
Forwarded portsChannels inside an SSH connectionThe forwarded traffic
Saved credentials and profilesGhostVault and config.yaml, backups, synced copiesThe secrets, if the file's encryption breaks
Recovery and escrow slots, bundlesVault files and bundles that leave the machineThe vault's master key or the shared secrets, if their public-key encryption breaks
History and session logsFiles on diskCommands and transcripts
Remote desktops, Telnet, serialRDP, VNC, Telnet, raw sockets, a COM portEverything shown or typed

3.3 What a hybrid defends, and what it does not

A hybrid key exchange defends the confidentiality of a recorded session against a later break of one of its halves: the first five rows of Table 2, on every hop whose server supports a post-quantum method. It does not:

  • protect a connection to a server without a post-quantum method;
  • change authentication, so classical host keys stay open to an active quantum attacker at connection time;
  • add encryption to Telnet, to VNC as GHOSTSHELL implements it, or to a serial line;
  • reach connections other programs make: Windows' Remote Desktop client, a proxy command, WinSCP;
  • hide metadata: who connected where, when, and how much data moved;
  • protect files at rest, which need their own encryption (section 4.4).

4 Implementation: how GHOSTSHELL 0.2.0 maps its protections

4.1 SSH key exchange

By default, GHOSTSHELL 0.2.0 offers four post-quantum hybrids, under five names, ahead of every classical method on every SSH connection: mlkem768x25519-sha256, mlkem1024nistp384-sha384, mlkem768nistp256-sha256, sntrup761x25519-sha512 and its older name sntrup761x25519-sha512@openssh.com, which together are every post-quantum SSH key exchange published as an RFC [8] [10]. The server runs the first method in the client's list that it supports [6], so any server sharing one gets a post-quantum exchange; OpenSSH made sntrup761x25519-sha512@openssh.com its default in 9.0 and mlkem768x25519-sha256 its default in 10.0 [14].

The default policy, Quantum-safe preferred, keeps classical methods after these for older equipment; Quantum-safe only refuses a server without one. After the handshake, before any password prompt, the terminal names the key exchange and host key the server chose, with a warning when the exchange is classical, and the tab's toolbar shows the same state. The quantum-safe policies offer only 256-bit ciphers. Post-quantum by default gives the details.

4.2 Jump chains, shared connections and proxy commands

Each connection in a jump chain is a separate recording target (Figure 2). The outer connection to the bastion carries the bastion login and a channel naming the device; the inner connection runs end to end through that channel and carries the device session. GHOSTSHELL gives the outer connection at least the inner one's policy, recursively along a chain, and names the profile that set it. Tabs share an open connection only when address, user, proxy, policy and algorithm lists all match, so a stricter profile never inherits a weaker connection, and Connection security… lists what every hop negotiated.

What each connection of a jump chain carries Three boxes: the workstation running GHOSTSHELL, the bastion and the device. The outer connection runs from the workstation to the bastion and carries the bastion login and a forwarded channel to the device. The inner connection runs end to end from the workstation to the device, through that channel, and carries the device login, commands and configuration output. The bastion relays the inner connection's ciphertext without its keys. With a proxy command, another program makes the outer connection, outside GHOSTSHELL's policy. Workstation GHOSTSHELL Bastion jump host Device router, switch, server outer connection bastion login channel to the device's port 22 relayed by the bastion inner connection, end to end device login · commands · configuration output The bastion relays the inner connection's ciphertext; it never holds its keys. With a proxy command, another program makes the outer connection, outside the policy.
Figure 2. A jump chain through one bastion. GHOSTSHELL raises the outer connection's policy to at least the inner one's; with a proxy command, another program makes the outer hop.

A proxy command hands the outer hop to another program, outside the policy. When that program is Windows' built-in ssh.exe, there is nothing post-quantum to choose: on the development machine, ssh -Q kex for OpenSSH_for_Windows_9.5p2 lists twelve methods, none of them post-quantum. GHOSTSHELL says so in the terminal, the profile settings and Connection security…, and suggests a jump host, which keeps the policy on every hop. WinSCP, which makes its own connection, gets the same notice.

4.3 HTTPS

TLS that GHOSTSHELL makes through Node, for plugin installs and plugins' own requests, offers every post-quantum group its TLS library accepts first. Electron 43.7.0's BoringSSL accepts X25519MLKEM768 and MLKEM1024 but not the NIST-curve hybrids of RFC 10024 [15], so the default offer is X25519MLKEM768:MLKEM1024:X25519:P-256:P-384:P-521. Chromium's own network stack keeps Chromium's defaults, which offer X25519MLKEM768 first.

4.4 Stored secrets and vault files

Files on disk can be attacked at leisure, so the vault avoids public-key cryptography where it can. The everyday path, Argon2id and AES-256-GCM, is symmetric: it leaves nothing for Shor's algorithm, and a 256-bit key keeps about 128 bits against Grover's [3]. Only what must open without the passphrase or for someone else, namely the recovery and escrow slots and shared bundles, uses public keys: ML-KEM-1024 with P-384 to encrypt, and ML-DSA-87 with P-384 to sign the bundles, as Sealed twice describes. Encryption of command history and session logs is off by default; without it they are plain text.

4.5 Releases

A release is not a recording target, but its signature must hold as long as the release is trusted. From 0.2.0, releases carry an SSHSIG signature from a hybrid ML-DSA-44 + Ed25519 key, SHA256:wcsMR20+ZSY6dRrHBgco/FFH9pOnyjqRh8A5u2s+C0M, built as the IETF composite-signature draft describes [16] on FIPS 204's ML-DSA [17]; it counts only when both halves verify. The Download page checks it in the browser, as does ssh-keygen from OpenSSH 10.4 or 10.5. OpenSSH 10.6 renamed the key type [14] and its ssh-keygen will not check these signatures, so a new key will follow once a 10.6 build is available. The installer is not Authenticode-signed, and the app's updater checks no signature.

4.6 Where the protection stops

RDP sessions run in Windows' own Remote Desktop client, whose hybrid TLS groups are off by default, so they are protected classically. The VNC viewer (RFB 3.3, 3.7 and 3.8, without VeNCrypt or TLS), Telnet and raw sockets are unencrypted, and labeled or warned as such; recording them needs no quantum computer. A serial console has no cryptography and no network path. A server with no post-quantum method gets a classical exchange with a warning, or a refusal under Quantum-safe only: the server decides. Table 3 sums up the mapping.

Table 3. GHOSTSHELL 0.2.0's protections against a recording broken later.
AreaIn 0.2.0Against a recording
SSH key exchangeFour post-quantum hybrids, under five names, first; the result shown per tabPQ hybrid when the server shares one
SSH ciphersAES-256-GCM, ChaCha20-Poly1305256-bit symmetric
SSH host and user keysML-DSA-44 + Ed25519 preferred for new hostsNot a recording target
Jump chainsOuter hop at least the inner hop's policyPQ hybrid per hop, when each server shares one
Proxy commands, WinSCPOutside the policy, with a noticeOther program
HTTPS through NodeX25519MLKEM768, MLKEM1024 firstPQ hybrid when the server accepts one
Vault secretsArgon2id, AES-256-GCM256-bit symmetric
Recovery, escrow, bundlesML-KEM-1024 + P-384, ML-DSA-87 + P-384PQ hybrid
History, session logsAES-256-GCM per record, off by default256-bit symmetric when on
RDPWindows' own clientClassical
VNC, Telnet, raw socketsNo encryption, labeled or warnedNone
SerialNo cryptographyPhysical

5 Evaluation

The checks behind section 4 ran on Windows 11 x64 with Node 24.22.2 and the Electron 43.7.0 runtime, over 127.0.0.1 with throwaway keys (Table 4). Rows 1, 4 and 5, and row 2's run under Node, were repeated independently after the SSH library was finished; row 6 was run for this paper on 12 November 2026; row 2's run inside Electron and rows 3 and 7 are as reported by the SSH library and TLS work. A completed OpenSSH session is strong evidence of matching encodings, since any differing byte changes the exchange hash and fails the connection, but it is evidence about the library, not about every server the client will meet.

Table 4. The checks behind the mapping.
#ClaimMethodResult
1The library's post-quantum exchanges match OpenSSHOpenSSH 10.5p1 as client against the library's test server: each key exchange with pinned host keys, a login and a command, rekeys, ciphers and MACs60 of 60; mlkem1024nistp384-sha384 is not in OpenSSH 10.5
2The installed binding negotiates and reports each methodThe binding as client through SSHClient.connect() against the test server, comparing negotiatedAlgorithms() with the server's report106 of 106 under Node, 12 of them interface checks; 94 of 94 in Electron's runtime
3Its ML-KEM-1024 is FIPS 203'sEncapsulation and decapsulation against OpenSSL 3.5, both waysPassed
4Its ML-DSA keys are FIPS 204'sKeys from seeds and signatures both ways against OpenSSL 3.528 of 28
5Policies reach the wire; strict refuses classical-only servers; the terminal reports the resultThe app's unit suite, with a scripted loopback server and handshakes against the test server245 tests: 244 pass, 1 skipped (pure ML-KEM-1024, not built)
6Windows' ssh.exe has no post-quantum methodssh -Q kex on OpenSSH_for_Windows_9.5p212 methods, none post-quantum
7HTTPS offers post-quantum groups firstClientHello captured under each policy in Electron's runtimeX25519MLKEM768, MLKEM1024 first; 5 of 5

6 Limitations and what is not done

  • OpenSSH was the client in the OpenSSH runs. GHOSTSHELL's client was tested only against the library's own test server, not against an OpenSSH server, a network vendor's SSH server or real equipment.
  • The terminal line, the tab's badge and Connection security… were checked through unit tests of the code that produces them, not in the running app.
  • mlkem1024nistp384-sha384 has no peer implementation in these checks beyond the library's own server and the OpenSSL check of its ML-KEM-1024.
  • Against an active quantum attacker only post-quantum host keys help. GHOSTSHELL prefers ML-DSA-44 + Ed25519 for new hosts, but the scheme is an IETF draft [16] that few servers use, and OpenSSH renamed it in 10.6 [14].
  • The post-quantum code in the SSH library and in the vault has not been independently audited.
  • Metadata, a compromised endpoint and the value of Z are outside the model, and Table 1's estimates are for RSA.

7 Conclusion

The part of a network engineer's traffic that a future quantum computer threatens is the key exchange of each management session, and through it the passwords, configurations and bastion logins inside. A hybrid key exchange closes that exposure when both ends support one and does nothing when they do not, so a client must offer post-quantum methods first on every hop and say plainly when a connection did not get one. GHOSTSHELL 0.2.0 does both for SSH, offers post-quantum groups first for its own HTTPS, keeps stored secrets symmetric and the vault's recovery, escrow and sharing hybrid, and names what it cannot reach. The rest depends on the other end: each device that gains a post-quantum key exchange moves a row of Table 3 into the protected column.

References

  1. [1]D. Moody, R. Perlner, A. Regenscheid, A. Robinson and D. Cooper. Transition to Post-Quantum Cryptography Standards. NIST Internal Report 8547, final, October 2026. doi:10.6028/NIST.IR.8547.
  2. [2]P. W. Shor. Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. SIAM Journal on Computing 26(5):1484–1509, 1997. doi:10.1137/S0097539795293172.
  3. [3]L. K. Grover. A fast quantum mechanical algorithm for database search. Proceedings of the 28th Annual ACM Symposium on Theory of Computing (STOC '96), pp. 212–219, 1996. doi:10.1145/237814.237866.
  4. [4]C. Gidney and M. Ekerå. How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits. Quantum 5, 433, 2021. doi:10.22331/q-2021-04-15-433.
  5. [5]C. Gidney. How to factor 2048 bit RSA integers with less than a million noisy qubits. arXiv preprint 2505.15917 [quant-ph], 2025.
  6. [6]T. Ylonen and C. Lonvick (Ed.). The Secure Shell (SSH) Transport Layer Protocol. RFC 4253, January 2006.
  7. [7]N. Bindel, J. Brendel, M. Fischlin, B. Goncalves and D. Stebila. Hybrid Key Encapsulation Mechanisms and Authenticated Key Exchange. Post-Quantum Cryptography (PQCrypto 2019), LNCS 11505, pp. 206–226, 2019. doi:10.1007/978-3-030-25510-7_12.
  8. [8]P. Kampanakis, D. Stebila and T. Hansen. Post-Quantum/Traditional Hybrid Key Exchange with the Module-Lattice-Based Key-Encapsulation Mechanism for Use in SSH. RFC 10042, August 2026.
  9. [9]National Institute of Standards and Technology. Module-Lattice-Based Key-Encapsulation Mechanism Standard. FIPS 203, August 2024. doi:10.6028/NIST.FIPS.203.
  10. [10]M. Friedl, J. Mojzis and S. Josefsson. Secure Shell (SSH) Key Exchange Method Using Hybrid Streamlined NTRU Prime sntrup761 and X25519 with SHA-512: sntrup761x25519-sha512. RFC 9941, April 2026.
  11. [11]W. Castryck and T. Decru. An Efficient Key Recovery Attack on SIDH. Advances in Cryptology (EUROCRYPT 2023), LNCS 14008, pp. 423–447, 2023. doi:10.1007/978-3-031-30589-4_15.
  12. [12]W. Beullens. Breaking Rainbow Takes a Weekend on a Laptop. Advances in Cryptology (CRYPTO 2022), LNCS 13508, pp. 464–479, 2022. doi:10.1007/978-3-031-15979-4_16.
  13. [13]D. J. Bernstein, K. Bhargavan, S. Bhasin, A. Chattopadhyay et al. KyberSlash: Exploiting secret-dependent division timings in Kyber implementations. IACR Transactions on Cryptographic Hardware and Embedded Systems 2025(2):209–234. doi:10.46586/tches.v2025.i2.209-234.
  14. [14]OpenSSH project. OpenSSH release notes: 9.0 (8 April 2022), 10.0 (9 April 2025), 10.4 (6 July 2026) and 10.6 (6 October 2026).
  15. [15]K. Kwiatkowski, P. Kampanakis, B. E. Westerbaan and D. Stebila. Post-Quantum Traditional (PQ/T) Hybrid Key Agreement Mechanisms for TLS 1.3. RFC 10024, August 2026.
  16. [16]D. Miller. Post-Quantum Composite Signatures in SSH. Internet-Draft draft-ietf-sshm-composite-sigs-00, August 2026, work in progress.
  17. [17]National Institute of Standards and Technology. Module-Lattice-Based Digital Signature Standard. FIPS 204, August 2024. doi:10.6028/NIST.FIPS.204.