The authentication bootstrap
The deepest limitation is not engineering. It is that quantum key distribution cannot do the thing people assume it does, and the gap is conceptual rather than technical.
BB84 requires a classical public channel for basis reconciliation, error estimation and post-processing. The protocol allows an adversary to read that channel, which is fine. What it cannot allow is an adversary to modify it.
If the classical channel is unauthenticated, an attacker sits in the middle and runs two separate QKD sessions: one with Alice, pretending to be Bob, and one with Bob, pretending to be Alice. Both sessions are perfectly secure by the physics. Both terminate successfully with low error rates. Alice and Bob each hold a key shared with the attacker, and the attacker relays traffic between them reading everything.
No quantum mechanism prevents this, because the photons arrived exactly as physics says they should. The attack is on the classical conversation.
So QKD requires an authenticated classical channel, which means Alice and Bob must already share a secret, or must rely on a public key infrastructure, before the protocol can run.
The consequence deserves stating plainly. Quantum key distribution does not establish a secure channel between strangers. It expands an existing shared secret into more key material. It is a key growing protocol rather than a key establishment protocol.
That matters because the problem most cryptography exists to solve is establishing trust between parties who have never met, which is what public key cryptography does and what QKD does not. The hard part is the part QKD leaves for classical methods, and if those classical methods are broken by a quantum computer, the QKD system's authentication is broken with them.

