qssh 0.5.0

Post-quantum secure shell with NIST PQC algorithms (Falcon, SPHINCS+, ML-KEM), configurable security tiers, and quantum-resistant protocol design
Documentation
# QSSH Security Analysis

## Executive Summary

QSSH provides quantum-resistant security through a combination of post-quantum cryptography and optional quantum key distribution. This document analyzes the security properties, threat models, and formal verification approaches.

## 1. Cryptographic Primitives

### 1.1 Post-Quantum Key Exchange: Kyber

**Algorithm**: CRYSTALS-Kyber (NIST PQC Winner)
- **Security Level**: Kyber-512 (AES-128 equivalent)
- **Assumption**: Module-LWE problem hardness
- **Key Sizes**: 
  - Public key: 800 bytes
  - Ciphertext: 768 bytes
  - Shared secret: 32 bytes

**Security Analysis**:
```
Best known classical attack: 2^118 operations
Best known quantum attack: 2^107 operations (using Grover)
Safety margin: >80 bits post-quantum security
```

### 1.2 Digital Signatures: SPHINCS+

**Algorithm**: SPHINCS+ (NIST PQC Winner)
- **Security Level**: 128-bit post-quantum
- **Assumption**: Hash function security
- **Signature Size**: 7,856 bytes (SHAKE-128s)

**Security Properties**:
- Stateless (no state synchronization issues)
- Based on one-way functions only
- Quantum random oracle model secure

### 1.3 Symmetric Encryption: ChaCha20-Poly1305

**Security**: 
- 256-bit keys (Grover-resistant)
- AEAD providing confidentiality and authenticity
- Nonce-misuse resistant design

## 2. Protocol Security

### 2.1 Handshake Security

The QSSH handshake achieves:

1. **Mutual Authentication**: Both parties prove identity
2. **Forward Secrecy**: Past sessions secure if keys compromised
3. **Quantum Resistance**: Secure against quantum adversaries

**Formal Model**:
```
Protocol QSSH-Handshake:
  C → S: ClientHello(v_c, r_c, algs_c)
  S → C: ServerHello(v_s, r_s, alg_s, pk_s)
  C → S: ClientKEX(ct_c, sig_c)
  S → C: ServerAuth(sig_s)
  
Security Goals:
  - Mutual authentication
  - Key indistinguishability
  - Forward secrecy
```

### 2.2 Channel Security

Each QSSH channel provides:
- **Confidentiality**: ChaCha20 encryption
- **Integrity**: Poly1305 authentication
- **Replay Protection**: Sequence numbers
- **Perfect Forward Secrecy**: Via ephemeral keys

## 3. Threat Analysis

### 3.1 Quantum Adversary (Q-ADV)

**Capabilities**:
- Polynomial-time quantum computation
- Shor's algorithm for factoring/discrete log
- Grover's algorithm for search

**Attack Vectors**:
1. **Key Exchange Attack**: 
   - Threat: Break Kyber via quantum algorithms
   - Defense: Module-LWE believed quantum-hard
   - Result: Attack infeasible

2. **Signature Forgery**:
   - Threat: Forge SPHINCS+ signatures
   - Defense: Hash-based, quantum-secure
   - Result: Requires breaking hash functions

3. **Symmetric Key Recovery**:
   - Threat: Grover's algorithm on ChaCha20
   - Defense: 256-bit keys (128-bit post-quantum)
   - Result: Infeasible with current technology

### 3.2 Classical Adversary (C-ADV)

**Attack Surface Analysis**:

```python
class AttackAnalysis:
    def __init__(self):
        self.attacks = {
            'brute_force': self.analyze_brute_force(),
            'mitm': self.analyze_mitm(),
            'replay': self.analyze_replay(),
            'dos': self.analyze_dos(),
            'side_channel': self.analyze_side_channel()
        }
    
    def analyze_brute_force(self):
        return {
            'kyber_512': '2^118 operations',
            'sphincs_128s': '2^128 operations',
            'chacha20': '2^256 operations',
            'feasible': False
        }
    
    def analyze_mitm(self):
        return {
            'detection': 'Signature verification',
            'prevention': 'Certificate pinning',
            'success_rate': 'Negligible with proper PKI'
        }
```

### 3.3 Implementation Vulnerabilities

**Common Pitfalls**:
1. **Timing Attacks**: Use constant-time operations
2. **RNG Failure**: Fail closed if entropy unavailable
3. **Memory Leaks**: Zeroize sensitive data
4. **Protocol Confusion**: Strict state machine

## 4. QKD Security Properties

### 4.1 Information-Theoretic Security

When QKD is used, QSSH achieves:
- **Unconditional Security**: Based on physics, not math
- **Eavesdropping Detection**: Via QBER monitoring
- **Key Freshness**: Each key used once

### 4.2 QKD Failure Modes

```rust
enum QkdFailure {
    // High quantum bit error rate
    HighQBER { rate: f64, threshold: f64 },
    
    // Low key generation rate
    LowKeyRate { rate: f64, required: f64 },
    
    // Authentication failure
    AuthenticationFailure,
    
    // Network issues
    NetworkError(String),
}

impl QkdFailure {
    fn fallback_action(&self) -> Action {
        match self {
            HighQBER { .. } => Action::AbortConnection,
            LowKeyRate { .. } => Action::UsePQCOnly,
            AuthenticationFailure => Action::AbortConnection,
            NetworkError(_) => Action::RetryOrUsePQC,
        }
    }
}
```

## 5. Formal Verification

### 5.1 Security Properties in Tamarin

```
theory QSSH_Protocol
begin

builtins: diffie-hellman, signing, symmetric-encryption, hashing

/* Post-quantum KEM abstraction */
functions: pq_keygen/0, pq_encaps/2, pq_decaps/2

/* Protocol rules */
rule Client_1:
  [ Fr(~id), Fr(~r_c) ]
  --[ ClientHello(~id, ~r_c) ]->
  [ Out(<'client_hello', ~r_c>), Client_1(~id, ~r_c) ]

rule Server_1:
  let pk_s = pq_keygen()
  in
  [ In(<'client_hello', r_c>), Fr(~r_s), !Ltk($S, sk_s) ]
  --[ ServerHello($S, ~r_s, pk_s) ]->
  [ Out(<'server_hello', ~r_s, pk_s>), Server_1($S, r_c, ~r_s, pk_s) ]

/* Security lemmas */
lemma mutual_authentication:
  "All C S k #i #j. 
    ClientAccept(C, S, k) @i & ServerAccept(S, C, k) @j
    ==> (Ex #k. ClientHello(C) @k & #k < #i)"

lemma forward_secrecy:
  "All C S k #i. 
    SessionKey(C, S, k) @i & K(k) 
    ==> (Ex sk #j. CompromisedKey(sk) @j & #i < #j)"

end
```

### 5.2 Cryptographic Proofs

**Theorem 1 (IND-CCA Security)**:
The QSSH key exchange achieves IND-CCA security under the Module-LWE assumption.

**Proof Sketch**:
1. Kyber-512 is IND-CCA secure
2. SPHINCS+ signatures provide authentication
3. Composition via KEM-DEM is secure
4. QKD enhancement preserves security

**Theorem 2 (Forward Secrecy)**:
Compromise of long-term keys does not compromise past session keys.

**Proof**:
- Each session uses ephemeral Kyber keys
- Deleted after session establishment
- No way to recover from long-term keys

## 6. Security Recommendations

### 6.1 Deployment Guidelines

1. **Key Management**:
   ```yaml
   key_policy:
     rotation_interval: 3600  # 1 hour
     backup_encryption: true
     hsm_storage: recommended
     key_deletion: secure_wipe
   ```

2. **Algorithm Selection**:
   ```yaml
   security_levels:
     standard:
       kex: kyber512
       sig: sphincs_shake128s
     high:
       kex: kyber768
       sig: sphincs_shake256s
     maximum:
       kex: kyber1024
       sig: sphincs_shake256s
       require_qkd: true
   ```

3. **Monitoring**:
   - Track authentication failures
   - Monitor QBER rates
   - Log algorithm downgrades
   - Alert on replay attempts

### 6.2 Security Checklist

- [ ] Use hardware RNG or HSM for key generation
- [ ] Enable certificate pinning for known hosts
- [ ] Configure maximum authentication attempts
- [ ] Set appropriate key rotation intervals
- [ ] Monitor for quantum attacks (high QBER)
- [ ] Implement rate limiting
- [ ] Use constant-time crypto implementations
- [ ] Enable audit logging
- [ ] Regular security updates
- [ ] Penetration testing with quantum scenarios

## 7. Comparison with Other Protocols

| Protocol | Quantum-Resistant | Forward Secrecy | QKD Support | Adoption |
|----------|------------------|-----------------|-------------|----------|
| SSH | No | Optional | No | High |
| TLS 1.3 | Optional | Yes | No | Growing |
| WireGuard | No | Yes | No | Growing |
| IPSec | Optional | Optional | No | High |
| **QSSH** | **Yes** | **Yes** | **Yes** | **New** |

## 8. Future Research

### 8.1 Hybrid Approaches
- Combining multiple PQC algorithms
- Classical + quantum crypto for transition

### 8.2 Quantum Network Integration
- Direct quantum channel protocols
- Entanglement-based authentication

### 8.3 Advanced QKD Modes
- Continuous variable QKD
- Measurement device independent QKD

## Conclusion

QSSH provides strong security guarantees against both classical and quantum adversaries through:
1. NIST-approved post-quantum algorithms
2. Optional QKD for information-theoretic security
3. Careful protocol design with forward secrecy
4. Defense-in-depth approach

The protocol is suitable for high-security environments requiring long-term confidentiality in the quantum era.