Skip to content

Latest commit

Β 

History

History
123 lines (86 loc) Β· 3.59 KB

File metadata and controls

123 lines (86 loc) Β· 3.59 KB

πŸ” Secure Code Signing Using Ring-Tesla Signature

This repository provides an implementation and experimental study of Secure Code Signing using Ring-Tesla Signatures – a lattice-based, post-quantum digital signature scheme.

It is based on the research paper:
πŸ“„ β€œSecure Code Signing Using Ring-Tesla Signature” by Shaurya Pratap Singh and Brijesh Kumar Chaurasia


πŸ“Œ Overview

Software distribution (firmware, operating systems, mobile apps, and containers) requires strong protection against tampering and forgery.

πŸ”‘ Code Signing ensures:

  • Integrity – Code has not been altered
  • Authenticity – Confirms the identity of the signer

However, traditional methods (RSA/ECC) are vulnerable to quantum computing attacks.
To overcome this, we propose Ring-Tesla Signature based Code Signing – a post-quantum secure, efficient, and scalable solution.


πŸš€ Motivation

  • Cyber threats (malware injection, supply-chain attacks) are on the rise.
  • RSA & ECC will be broken by quantum computers.
  • Need a future-proof cryptographic signature that is:
    βœ… Efficient
    βœ… Scalable
    βœ… Quantum-resistant

πŸ›‘οΈ Contributions

βœ”οΈ Enhanced Security – Protects against forgery & tampering
βœ”οΈ Post-Quantum Resistance – Lattice-based signatures secure against quantum attacks
βœ”οΈ Efficiency – Fast key generation, signing, and verification
βœ”οΈ Scalability – Supports IoT, OS, firmware, and enterprise software
βœ”οΈ Interoperability – Compatible with existing crypto libraries and standards


βš™οΈ System Architecture

The architecture of the Code Signing System (CSS) includes:

  1. Code Signing System (CSS) – Signs submitted code using private keys
  2. Certification Authority (CA) – Issues certificates to verify signer’s identity
  3. Timestamp Authority (TSA) – Adds trusted timestamp during signing
  4. Verifier – Confirms signature validity before execution
  5. Trust Anchors – Root public keys securely stored for verification

βš™οΈ System Architecture

flowchart TD
    A[Developer] --> B[Code Signing System]
    B --> C[Certification Authority]
    B --> D[Timestamp Authority]
    B --> E[Verifier]
    E --> F[End User]
Loading

Key Gen

function KeyGeneration(Ξ», a1, a2): s, e1, e2 ← Gaussian Distribution if CheckE(e1) = 0 or CheckE(e2) = 0: Restart t1 = a1s + e1 (mod q) t2 = a2s + e2 (mod q) return (SecretKey = (s,e1,e2), PublicKey = (t1,t2))

Sign

function Sign(message Β΅, a1, a2, s, e1, e2): y ← Random sample from Rq v1 = a1*y (mod q) v2 = a2*y (mod q) cβ€² = H(Β΅ || v1 || v2) c = Encode(cβ€²) z = y + s*c w1 = v1 - e1*c (mod q) w2 = v2 - e2*c (mod q) if rejection check fails: Restart return (z, cβ€²)

Verify

function Verify(message Β΅, signature (z,cβ€²), a1, a2, t1, t2): c = Encode(cβ€²) w1 = a1z - t1c (mod q) w2 = a2z - t2c (mod q) cβ€²β€² = H(Β΅ || w1 || w2) if cβ€² = cβ€²β€² and z is valid: return ACCEPT else: return REJECT

Message Size KeyGen (ms) Sign (ms) Verify (ms) Failures
500 KB 0.008 24.66–39.50 6.99–14.33 20–29
1000 KB 0.007–0.008 23.53–42.53 6.96–13.67 23–26
1500 KB 0.008–0.009 25.85–34.64 7.13–13.68 19–32