FOSSA Logo

Cryptography

The practice and study of techniques for securing communication and data through the use of mathematical algorithms, enabling confidentiality, integrity, authentication, and non-repudiation in software systems.

What is Cryptography?

Cryptography is the science and practice of securing communication and data from unauthorized access or modification by using mathematical techniques and algorithms. In software and computing, cryptography provides the foundation for ensuring confidentiality, integrity, authentication, and non-repudiation of information.

In the context of software supply chain security, cryptographic techniques play a crucial role in verifying the authenticity of software artifacts, protecting sensitive information during transmission and storage, and establishing trust between different components and systems.

Core Cryptographic Concepts

Confidentiality

Protecting information from unauthorized disclosure:

  • Encryption: Converting plaintext into ciphertext to prevent unauthorized reading
  • Key Management: Securely generating, distributing, and storing encryption keys
  • Forward Secrecy: Ensuring past communications remain secure if keys are compromised
  • End-to-End Encryption: Encrypting data throughout its entire journey

Integrity

Ensuring information hasn't been altered:

  • Hashing: Creating fixed-length fingerprints of data
  • Message Authentication Codes (MACs): Verifying both authenticity and integrity
  • Digital Signatures: Cryptographically binding an identity to data
  • Checksums: Simple integrity verification methods

Authentication

Verifying the identity of entities:

  • Challenge-Response: Proving identity by responding to random challenges
  • Certificates: Digital documents attesting to the ownership of a public key
  • Cryptographic Tokens: Secure authentication credentials
  • Password Hashing: Secure storage of authentication credentials

Non-repudiation

Preventing denial of actions:

  • Digital Signatures: Cryptographically binding actions to identities
  • Secure Timestamping: Proving when an action occurred
  • Audit Trails: Maintaining cryptographically secured logs
  • Key Attestation: Verifying the properties and origin of cryptographic keys

Types of Cryptographic Algorithms

Symmetric Encryption

Using the same key for encryption and decryption:

  • AES (Advanced Encryption Standard): Standard algorithm for symmetric encryption
  • ChaCha20: Modern stream cipher used in protocols like TLS
  • 3DES (Triple DES): Older block cipher still used in legacy systems
  • Modes of Operation: ECB, CBC, CTR, GCM providing different security properties

Asymmetric Encryption

Using key pairs for encryption and decryption:

  • RSA: Public-key cryptosystem widely used for encryption and signing
  • ECC (Elliptic Curve Cryptography): Providing strong security with shorter keys
  • DSA (Digital Signature Algorithm): Standard for digital signatures
  • DH (Diffie-Hellman): Key exchange protocol enabling secure key sharing

Hash Functions

One-way functions producing fixed-length output:

  • SHA-2 (SHA-256, SHA-512): Secure hash algorithm family
  • SHA-3: Next-generation secure hash standard
  • BLAKE2/BLAKE3: High-speed cryptographic hash functions
  • MD5/SHA-1: Older, now insecure hash functions still found in legacy systems

Key Derivation Functions

Converting base key material into cryptographic keys:

  • PBKDF2: Password-Based Key Derivation Function
  • Argon2: Modern password hashing and key derivation function
  • scrypt: Memory-hard function designed to resist hardware attacks
  • HKDF: Hash-based Key Derivation Function for extracting keys from existing keying material

Cryptography in Software Supply Chain Security

Code Signing

Using cryptography to verify code authenticity:

  • Certificate-Based Signing: Using X.509 certificates to sign code
  • GPG Signing: Open standard for signing source code and artifacts
  • Timestamping: Adding trusted timestamps to signatures
  • Key Protection: Securing private signing keys with hardware security modules

Artifact Integrity

Ensuring software artifacts haven't been tampered with:

  • Checksum Verification: Comparing hash values to verify downloads
  • Signature Verification: Validating digital signatures on packages
  • SBOMs with Integrity: Including cryptographic evidence in Software Bills of Materials
  • Immutable Records: Creating tamper-evident logs of artifacts

Secure Communication

Protecting data in transit:

  • TLS (Transport Layer Security): Encrypting network communications
  • Secure APIs: Implementing cryptographically secure API access
  • VPNs (Virtual Private Networks): Creating encrypted tunnels for communication
  • SSH (Secure Shell): Secure protocol for remote access and file transfers

Secret Management

Securing sensitive cryptographic material:

  • Hardware Security Modules (HSMs): Dedicated devices for managing cryptographic keys
  • Key Vaults: Centralized services for managing secrets
  • Key Rotation: Regularly changing cryptographic keys
  • Secure Enclaves: Protected execution environments for cryptographic operations

Cryptographic Standards and Protocols

TLS/SSL

Protocols for secure communications:

  • TLS 1.3: Latest version with improved security and performance
  • Certificate Validation: Verifying server identities
  • Cipher Suites: Combinations of cryptographic algorithms
  • Perfect Forward Secrecy: Protecting past sessions if keys are compromised

Public Key Infrastructure (PKI)

Framework for managing digital certificates:

  • Certificate Authorities (CAs): Trusted entities that issue certificates
  • Certificate Revocation: Mechanisms for invalidating compromised certificates
  • Certificate Transparency: Public logs of issued certificates
  • Certificate Pinning: Restricting accepted certificates to specific known ones

Cryptographic Message Syntax (CMS)

Standard for cryptographically protected messages:

  • SignedData: Format for digital signatures
  • EnvelopedData: Format for encrypted data
  • AuthenticatedData: Format for authenticated but not encrypted data
  • S/MIME: Email encryption and signing based on CMS

JWT (JSON Web Tokens)

Compact, self-contained tokens for secure information exchange:

  • JWS (JSON Web Signatures): Signed tokens
  • JWE (JSON Web Encryption): Encrypted tokens
  • JWK (JSON Web Keys): Format for representing cryptographic keys
  • JOSE (JavaScript Object Signing and Encryption): Framework for secure data exchange

Cryptographic Implementations

Cryptographic Libraries

Software providing cryptographic functionality:

  • OpenSSL: Widely used open-source library for TLS and cryptography
  • Libsodium: Modern, easy-to-use crypto library
  • BouncyCastle: Java and C# cryptography API
  • Tink: Google's cryptographic library focusing on usability

Hardware-Based Cryptography

Dedicated hardware for cryptographic operations:

  • TPM (Trusted Platform Module): Hardware chip for secure key storage
  • HSM (Hardware Security Module): Dedicated cryptographic processing device
  • Secure Elements: Tamper-resistant hardware for key protection
  • Smart Cards: Portable devices containing cryptographic capabilities

Cloud Cryptography Services

Provider-managed cryptographic services:

  • Key Management Services (KMS): Cloud-based key management
  • Cloud HSM: Virtualized hardware security modules
  • Certificate Services: Management of TLS/SSL certificates
  • Cryptographic APIs: Provider-specific cryptographic operations

Cryptographic Challenges and Best Practices

Common Vulnerabilities

Issues affecting cryptographic implementations:

  • Side-Channel Attacks: Exploiting physical information leakage
  • Implementation Flaws: Bugs in cryptographic code
  • Weak Key Generation: Insufficient randomness in key creation
  • Quantum Computing Threats: Future risks to current algorithms

Best Practices

Guidelines for secure cryptographic implementation:

  • Use Standard Algorithms: Avoid custom or proprietary cryptography
  • Implement Perfect Forward Secrecy: Protect past communications
  • Regular Key Rotation: Change keys according to defined policies
  • Secure Random Number Generation: Use cryptographically secure random numbers
  • Defense in Depth: Never rely on a single cryptographic control

Key Management

Critical practices for managing cryptographic keys:

  • Separation of Duties: Requiring multiple parties to access critical keys
  • Key Backup and Recovery: Secure processes for key restoration
  • Key Usage Limitations: Restricting what each key can be used for
  • Automated Key Lifecycle: Managing the entire key lifecycle automatically

Future of Cryptography

Post-Quantum Cryptography

Preparing for quantum computing threats:

  • Lattice-Based Cryptography: Algorithms based on mathematical lattices
  • Hash-Based Signatures: Quantum-resistant digital signatures
  • Code-Based Cryptography: Systems based on error-correcting codes
  • NIST PQC Standards: Emerging standards for post-quantum algorithms

Homomorphic Encryption

Performing computations on encrypted data:

  • Partially Homomorphic: Supporting limited operations
  • Fully Homomorphic: Supporting arbitrary computations
  • Privacy-Preserving Computation: Processing sensitive data without exposure
  • Secure Multi-Party Computation: Joint computation while keeping inputs private

Threshold Cryptography

Distributing cryptographic operations:

  • Secret Sharing: Splitting secrets among multiple parties
  • Distributed Key Generation: Creating keys without any party knowing the whole key
  • Threshold Signatures: Requiring multiple parties to create a signature
  • Decentralized PKI: Removing single points of failure in certificate authorities

Zero-Knowledge Proofs

Proving knowledge without revealing it:

  • ZK-SNARKs: Succinct non-interactive arguments of knowledge
  • ZK-STARKs: Scalable, transparent arguments of knowledge
  • Identity Verification: Proving attributes without revealing details
  • Private Transactions: Verifiable transactions with hidden details