R&D : Hybrid Post-Quantum solutions

Hi everyone,

This topics specifies the Qubex Protocol, Hybrid Post-Quantum Cryptographic Layer 2, a new approach for blockchain transition to quantum-resistant cryptographic. We are following the Europe’s ANSSI recommendations to ensure the transition with current system. We use ICP in layer 1, which allows us to benefit from the basic speed of this layer.

Read this post, share your feedback. Also we can open our repository for further review under certain conditions.

I apologize for this lengthy topic; I am currently finishing my white paper on our solution and am attempting to make it as straightforward as possible.

Vision

On our approach we implements NIST-standardized post-quantum algorithms in a hybrid configuration with classical cryptographic schemes to ensure backward compatibility and progressive migration. Respectively, given the uncertainty surrounding the official implementations chosen by blockchains, we have built an abstraction around the ECDSA and Schnorr for classical algorithm then ML-DSA-44 (Dilithium-2) and SLH-DSA-SHA2-128f (SPHINCS+) for post quantum algorithms to manage signature schemes, and we use ML-KEM-768 (Kyber-768) for datas encryption.

I’m going to tell you about signatures; so we’re not going to talk about ML-KEM-768.

Challenges

Of course, there are many significant challenges to consider, some of which can be resolved; others require more in-depth work on the ICP protocol. (More deeply challenges (private key management (no custodial system), canister communications..) must be implemented on the layer 1)

For example for the post-quantum transition we have the size challenge, for a ECDSA signature the size is 64 bytes, while ML-DSA-44 is 2,420 bytes or SLH-DSA-SHA2-128f 17kb. For that we have implemented a compression mechanism to reduce the size; we compress by approximately 60% using zstd. An another way, the compression/decompression must be assure the integrity.

Verification system →

Phase 1

// generate a signature
let signature = create_hybryd_signature(...);

// compress signature
let compressed = CompressedHybridSignature(...);

Phase 2

fn verify_compressed_hybrid_signature(&self, message: [&u8], compressed_signature: &CompressedHybridSignature)-> Result<...>{
// I validation before decompression
SecureDecompressionValidator::...
// II Secure decompression with limits
let decompressed_data = safe_decompress_with_validation(...)
// III Deserialization
let signature = HybridSignature::deserialize_from_bytes(...)
// IV Verification cryptographic
self.verify..
}

That’s so one example among others examples we try to solve;

Hybridation

Today we have make many progress on this R&D, the hybridation system is the BETTER way to ensure the compatibility with the current system, and be ready to the quantum era;

Why ?

Let me explain the concept: imagine that a transaction is represented by a color, this color being a signature. This color is vulnerable. When? We don’t know*, but it can happen very quickly. The principle is to protect current transactions using a dual signature system, i.e., two colors: the first color guarantees compatibility(ecdsa, schnorr…) with current protocols, while the second signature guarantees a future validation system that is already active. Why? Because by creating a hybrid system, we can link two signatures and impose double verification

(*Yesterday’s advice has become recommendations, which have become obligations. Sensitive sectors such as finance, telecommunications, and energy are required to find a quick solution within a specific deadline-USA)

So in concret term what is happening ?

(I truncated the generation so that it would be sufficiently readable)

You can see many parameters on a hybrid generation

dfx canister call qubex_crypto generate_hybrid_keypair   '(record {                                                                                          require_both_signatures = false; 
    fallback_to_classical = true; 
    minimum_security_level = variant { Standard }; 
    auto_upgrade_signatures = true; 
    quantum_readiness_threshold = 0.9 
  })'
(
  variant {
    Ok = record {
      key_id = "hybrid_1757446383536423918";
      classical_algorithm = variant { ECDSA };
      derived_address = "hybrid_9d78b5a1b885bb21b34346e10650c2eb8a4d3e55";
      quantum_public_key = blob "\37\e8\65\7d\9a\40\ca\c8\6f\8c\6a\8f\57\dd\ba\5f\91\89\41\a5\3a\02\79\05\f0\3a\31\94\02\94\21\67\fa\83\b5\ae\a7\c3\ed\1d\22\f1\ec\39\20\0d\e8\50\19\e4\5d\e3\19\c4\3e\2f\7a\1b\c2\3d\8c\3c\8c\0d\c9\75\ec\9c\95\39\58\30\91\53\58\a6\d1\7e\71\95\67\8e\fc\fa\77\7c\59\01\39\85\a5\dd\0e\92\85\78\9c\76\cd\56\64\e7\b6\04\e0\b1\5e\e4\81\02\b9\1e\66\5a\f4\78\01\fe\33\1a\5f\55\9b\c7\18\ad\6a\f8\d6\08\01\87\0e\25\8d\1c\e4\f3\1a\2d\1e\1b\07\a2\a4\53\98\f2\da\20\9a\c0\d1\37\3d\c5\16\cc\69\31\c0\a7\ff\04\34\68\6f\ae\bb\79\d4\40\6c\d4\31\76\6c\10\53\f0\3d\4e\6f\43\e4\64\e8\06\e4\5f\d9\dc\64\16\8f\36\b7\d2\71\8a\76\c8\cd\04\4d\c2\52\d2\c7\06\de\e6\d4\85\82\ba\ee\57\d5\8b\2a\39\6f\bb\41\28\c1\26\1a\55\87\a9\1f\1a\83\7c\05\8c\cb\25\c9\4f\7e\a8\80\6a\30\71\84\fc\a7\e2\ab\eb\29\66\47\23\58\3b\f1\d4\70\de\22\a5\bb\50\1f\64\53\54\db\44\cc\dd\7c\9b\12\e8\36\6a\b0\15\0b\81\f4\13\c3\37\10\66\ed\e0\a7\d6\09\c7\fa\8d\a4\24\a2\5a\e8\d6\74\5d\8b\b2\c4\10\9b\35\91\b6\72\b0\62\50\d9\9d\05\54\6a\5d\b3\64\9b\ea\b0\6d\4c\c2\94\39\9a\a6\32\a0\b9\e5\ab\75\b6\f7\e7\4b\c3\eb\ad\8f\3b\8c\df\53\5f\85\56\c2\5d\4d\e0\d7\07\ad\20\18\cb\65\0e\ff\13\cf\3e\1d\e0\f7\7a\de\71\ea\3e\60\58\de\1e\ad\41\09\8c\fc\aa\1b\bc\e3\ee\7d\9f\c4\b5\78\c8\9e\ed\45\2d\3b\5f\41\d0\bd\fb\f2\d0\30\9f\1d\00\bd\ef\a3\f1\30\61\f6\b4\4e\5c\33\bb\84\21\fa\f8\c7\0c\ab\f7\4e\6c\8b\6a\78\2a\77\7d\bc\fb\34\9b\e1\b9\6f\cd\3a\42\85\bd\77\5f\41\aa\28\a2\b6\0c\18\16\d8\a1\7d\59\8c\03\70\fc\06\02\fb\aa\fc\3e\43\7e\63\e8\8a\aa\05\dd\3d\32\40\d8\06\48\fc\2d\50\cd\0e\50\11\12\71\16\ce\13\35\49\e4\69\35\c3\07\9a\07\60\71\34\54\98\fa\ce\a5\7b\c5\0d\9d\80\aa\a2\6d\35\a4\4c\32\5b\ed\1c\a4\c1\e3\91\ae\0b\93\8e\1a\f7\89\88\91\e8\e0\7c\be\91\18\b4\51\74\d3\30\3d\b7\7d\82\bb\a4\60\09\a1\0b\0a\d8\ea\8c\21\6e\00\c3\05\c9\7c\53\db\e0\c0\1e\e4\19\af\98\f5\60\4b\74\25\1f\0a\a1\8e\39\ed\1e\2b\8b\cb\37\e5\c8\87\7a\b3\17\19\b5\dd\b9\2a\ff\6a\c8\15\4c\e8\53\55\72\f5\61\41\a2\9c\3d\9a\48\b5\81\23\41\30\c8\66\9e\d6\57\92\5b\e7\64\1e\71\fe\25\00\1f\d0\f3\0a\df\3d\8e\9c\a4\07\9c\39\e6\06\79\fa\77\b5\8b\f0\8e\33\ed\52\65\0e\6f\57\8c\f3\c0\34\c9\6b\28\32\2a\a4\dc\e1\c8\77\31\37\8a\77\f3\8c\d9\2d\23\df\8c\10\32\e6\07\0f\9b\f0\c5\9d\d9\c8\94\b3\b8\ed\c8\79\fc\70\b3\98\d4\e2\f1\f6\de\04\6e\35\dc\95\05\46\38\54\3d\15\3a\4f\61\56\b8\e1\59\96\13\59\d3\bb\35\81\25\e7\60\85\70\2b\90\99\7d\43\6f\fb\41\bb\59\c0\fb\0d\3e\1d\08\a7\3f\cc\9e\cf\7c\34\d6\59\f2\34\48\52\8f\d9\b6\21\d9\94\77\58\11\fe\73\66\0f\4a\1e\3a\12\a3\15\9d\fa\f1\62\69\78\a8\87\ee\c0\fb\fc\3f\1e\ff\f0\0a\9d\95\fe\81\17\66\3e\0c\31\2f\27\3c\14\ff\78\eb\aa\f1\ed\3a\34\06\67\48\1b\ab\8e\46\fd\34\b6\89\65\f9\41\9c\8d\39\4b\09\56\3e\fc\2e\62\71\39\b3\89\21\4c\06\f5\c9\40\fc\40\74\46\e7\d8\04\fe\c4\50\82\2b\eb\bd\ab\d9\ee\1c\e0\60\49\53\d2\06\63\77\06\fa\ca\57\ca\67\f8\6d\58\78\05\c1\73\6f\b0\35\f5\96\27\cd\1e\7c\b3\b1\e9\b4\d1\48\d4\45\ba\e9\d6\f1\5c\6c\d9\58\24\65\33\f3\2f\5c\c4\79\49\52\3a\46\1b\f2\83\f3\88\84\62\c2\ca\07\39\f8\31\ac\01\86\88\fb\64\be\11\bb\bc\8d\5b\70\e1\eb\1c\7e\1d\d1\e7\51\6a\d9\8c\2c\3d\8b\86\d1\5b\a4\b4\db\b2\b5\94\43\3d\31\c3\4f\88\c2\96\0e\78\87\a7\5d\34\38\bf\ec\91\09\35\25\a7\f2\eb\42\c9\7f\da\20\7a\ab\bf\23\8e\a4\c8\18\28\eb\37\af\98\01\02\1c\55\62\92\31\bf\e2\87\a2\2c\d6\08\44\f1\be\ab\fe\d5\ee\87\e5\80\c3\90\6f\49\4b\ae\ad\35\f3\a5\7a\fe\12\09\70\58\d8\cc\00\0a\fb\3d\38\12\e5\7c\97\6f\3e\3e\ac\dc\ec\1e\04\c9\74\1f\2b\ad\61\cd\78\a8\db\db\f3\6b\ec\aa\91\f7\d8\1b\c2\02\bd\3d\0a\85\7d\18\8a\dc\25\10\1c\aa\e6\f6\45\30\a9\61\a0\6b\dc\ef\5b\b1\78\e3\48\11\a9\61\f9\88\37\3f\3b\30\9e\16\35\3f\84\08\7d\f4\23\8b\00\93\81\20\90\cb\ec\98\2e\d6\1b\a6\6a\fd\cc\23\1c\ba\72\d0\7d\db\e0\bc\85\d9\ce\6b\75\67\a2\6a\97\b2\b3\c5\fd\26\b0\a2\67\7c\13\b8\c2\8c\1d\7a\98\e1\97\f9\f0\32\2c\98\bb\1f\84\52\8c\95\53\97\d5\6c\78\7f\96\dc\77\b2\8a\fd\07\fc\ab\26\c4\9d\2c\fb\51\25\66\0f\ad\ee\9b\8b\8e\89\73\15\8e\4a\6b\fb\10\14\3a\e8\34\90\78\8f\c9\36\25\4d\05\aa\fe\21\0c\e2\ed\13\4c\83\31\d8\6b\3a\ec\26\bb\65\e9\9d\ea\d9";
      classical_public_key = blob "\03\d4\25\ae\ee\11\a0\bf\08\8f\f7\ed\ae\80\4c\9d\59\ba\47\80\e8\fa\51\ca\45\07\6c\58\a8\88\98\2d\7c";
      quantum_algorithm = variant { MlDsa44 };
    }
  },
)

Now we can sign the transaction :

dfx canister call qubex_crypto create_hybrid_signature "(record {
    message = blob \"516265782048796272696420536967207465737421\";
    key_id = \"hybrid_1757442545037856490\";
    transition_mode = variant { HybridRequired };
    policy = null;
  })" 
(
  variant {
    Ok = record {
      metadata = record {
        security_level = variant { Quantum };
        version = 1 : nat8;
        timestamp = 1_757_442_849 : nat64;
        transition_mode = variant { HybridRequired };
        compatibility_level = variant { Modern };
      };
      quantum_resistant = record {
        algorithm = variant { MlDsa44 };
        signature = blob "\a0\b6\fe\e4\f1\8e\86\4b\4b\a6\8f\19\50\8d\ab\ab\5f\56\0f\af\f5\d8\3a\89\5c\87\d5\ef\89\a6\c1\29\7a\45\65\70\16\14\a7\41\be\a9\f0\68\b6\9f\74\86\80\0a\a2\25\cb\6e\08\2b\80\de\0c\89\96\0e\56\83\07\c1\b9\94\c9\4f\17\6c\77\08\dd\97\38\59\ad\26\4a\6d\93\82\b8\a8\e7\c5\28\d9\94\4f\02\35\58\ba\d6\82\46\35\95\ef\9e\50\dc\9f\4a\44\a0\3d\60\22\69\ac\50\94\53\a6\1d\e7\31\49\43\1a\04\c9\bb\cb\8c\72\1e\44\67\31\8f\c4\12\57\dd\30\8f\b5\b0\34\3c\63\85\d5\9a\aa\5e\7e\64\e8\10\d6\52\c7\a4\39\4a\31\01\17\5a\90\18\2c\25\6c\a8\ad\be\c9\4f\d6\85\99\6d\d3\d9\9f\80\0b\47\e9\52\1b\dc\d8\5b\01\2c\b7\65\68\63\8b\ad\8a\42\c3\d4\58\0d\8a\c1\19\29\39\db\1a\4e\e9\5b\ae\87\d3\10\7b\fa\19\96\d0\b7\42\35\d4\05\b0\37\b2\79\d8\d3\44\90\21\0c\b6\38\b6\b0\b5\b2\d5\d7\79\b4\bc\33\27\5e\2b\16\...5e\4c\94\99\ef\f1\d9\b5\8a\10\f8\5c\5d\9d\ab\32\4e\98\ed\82\58\9b\18\9c\ee\16\5a\1e\fc\19\ac\4d\73\56\c7\1a\81\57\d8\b5\1a\34\51\40\50\d5\8e\89\80\18\e4\19\5c\88\66\32\0e\08\ca\91\ed\50\f1\12\4e\d7\77\fb\60\e9\97\bd\c3\6b\3a\74\cb\62\af\fa\af\20\0a\4b\b0\b1\9e\4e\97\80\10\c2\0f\15\4f\b1\f6\ad\63\a6\59\23\6a\97\d4\6d\0a\e9\65\7f\4f\2b\82\6e\8e\5f\8b\69\72\c8\90\05\88\1d\6f\ee\fa\f2\ae\07\88\f6\a3\1a\09\cb\8d\7e\15\44\37\ec\29\5e\f7\67\dc\89\5c\51\97\75\d2\c9\36\e5\99\aa\b6\41\7d\25\b2\f7\e2\88\66\94\20\68\f5\b4\a5\b2\a7\3b\62\a2\ea\2c\17\bf\d6\14\a0\e6\e7\c4\de\0e\56\0d\4f\e7\1f\25\3e\d7\86\a2\e3\0c\82\7c\42\3a\44\7d\19\f3\ae\28\b8\6b\df\39\b4\f6\53\81\ce\83\8c\0a\20\3b\aa\47\e0\01\8e\e9\d3\0d\df\c9\47\87\7d\06\6a\c7\7b\cf\3a\49\ad\e2\a7\a2\75\fc\a6\cf\b7\ba\d1\c2\5d\70\c2\b2\ac\2e\53\cf\15\62\3c\1c\2c\9a\6d\4e\91\58\bd\cd\57\3b\f7\91\5b\22\fb\98\fa\30\5c\c9\d2\c8\d7\1c\e9\84\a3\6d\8d\4e\c4\d4\52\26\c0\c3\02\46\99\ed\97\45\ed\87\82\98\5b\b7\5e\c7\2b\fa\76\0b\76......35\91\84\4b\c1\dd\c0\fa\c1\f2\dc\91\65\5c\41\70\f2\4b\bd\b3\ae\7b\8e\23\9b\33\6a\b2\6e\fb\c7\70\0c\d4\86\eb\85\2e\90\27\23\30\77\0f\a5\92\d8\62\42\f9\e9\67\e3\2b\bc\ca\89\78\03\07\f4\bd\d0\45\61\63\19\6d\c2\92\46\6a\db\15\6f\b6\52\2d\15\e2\85\d9\b1\13\0a\08\0e\13\31\55\97\d3\d8\78\2c\84\03\cb\57\fa\67\f5\00\d5\bf\f1\28\fa\28\b3\8e\8f\d9\77\fb\34\62\c1\6b\45\5d\8e\ff\a4\7e\43\0e\52\98\3e\96\d3\8f\43\27\f4\42\77\63\50\66\48\52\01\63\46\b3\8f\44\64\3f\fe\41\8f\86\c4\19\35\5b\1b\90\ff\61\24\49\57\bc\3b\65\cf\18\89\44\11\92\e2\70\10\e5\f5\79\40\3a\5e\49\db\b2\15\29\ff\b6\f8\e4\7f\d1\d5\63\b4\34\c8\a4\e2\70\07\65\eb\35\d7\5e\2c\5f\b8\e6\32\f6\b9\08\6f......09\c9\ab\dc\e9\8c\3f\c1\28\78\a2\0f\67\1d\2b\0c\c8\79\d0\1b\6b\78\89\4f\be\3d\e0\db\8d\3f\c0\68\0f\c2\86\a9\6d\6c\3a\9b\8b\c2\82\c3\f4\ad\70\fb\f4\b1\5b\9d\ed\86\e1\af\d5\c3\6f\cc\df\57\c1\32\b0\cf\e2\9b\f4\08\52\26\de\ca\13\4d\68\64\60\25\cd\36\54\cb\e3\68\87\8f\2e\80\65\d7\99\76\42\a4\98\50\f1\e8\c5\60\09\fb\69\97\18\22\5a\c3\36\c9\9a\a9\3b\64\0c\28\5c\4d\63\5a\d7\8a\7b\bb\35\b1\df\d4\b7\3d\bb\f0\4f\1b\de\9c\8f\93\66\2a\6c\fa\47\66\50\a2\4c\0c\7b\c3\5b\3e\73\a8\b6\77\9a\84\f6\6d\00\2d\6e\5a\2b\62\82\63\3a\4c\ce\11\58\f6\69\87\19\53\cf\67\9b\91\d0\66\16\ba\5c\c0\fe\f6\c0\75\3b\7d\26\a7\cd\38\cd\a5\94\95\c5\1f\43\87\9f\05\f1\21\49\f9\62\f1\6d\a2\de\6b\6e\0d\96\7d\b7\b9\10\4a\4e\59\49\b9\6b\f2\3e\4c\74\dc\a9\c1\b2\11\26\c0\01\21\47\03\bf\f3\24\1a\71\29\2e\5f\90\d4\e1\93\33\78\3f\f6\66\d6\44\d2\a3\dd\91\37\6c\7f\67\04\42\2b\c9\05\13\14\17\19\1b\51\57\5b\84\8b\a1\a2\ab\b0\b1\b3\d0\d1\d4\d8\e2\ec\fb\00\06\08\0d\10\20\27\4c\63\83\bd\cf\d6\e4\f9\00\24\29\2c\37\4d\61\8c\97\a1\d7\e4\ed\f3\06\2d\31\3b\53\57\76\c2\c9\ca\df\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\27\35\40";
        public_key = blob "\33\d8\a2\7c\92\56\73\c5\5a\5b\e8\31\31\6b\df\70\c1\7f\3c\26\ad\77\dc\67\f6\ab\00\7d\05\f1\10\09\09\ad\b4\56\d7\bd\e6\1d\f7\f5\8f\fc\cc\54\de\a5\91\2e\83\9e\a2\1e\b1\b0\70\f4\ce\a4\7f\69\5b\ba\7c\1b\9e\bd\b2\12\a9\05\db\eb\65\8e\7c\17\fa\c2\f7\b6\48\6c\1b\ee\de\d0\bc\21\57\63......55\81\0e\18\46\b5\ea\0f\30\b0\8f\4d\d6\e5\7f\70\d2\b9\f1\81\9e\80\ba\fc\e1\be\84\0b\4c\dd\7a\b3\a6\91\fe\1a\e3\a2\41\16\d9\b5\52\76\5f\72\64\70\90\bd\36\d7\34\c8\4e\ac\cc\ab\08\4d\20\b7\9a\0b\a5\81\16\0f\56\e4\e9\6a\a2\da\d3\ec\71\cb\74\14\85\f3\51\b3\3a\22\92\d6\2c\19\db\d5\ec\1f\a6\94\e7\c1\31\65\4c\71\b3\e2\07\96\50\a1\57\4e\7b\ed\8b\d9\fd\d5\2e\dd\16\8f\67\d5\aa\8e\f0\35\5f...f6\27\b9\4d\68\93\c0\c4\b0\5d\9e\29\87\cb\df\29\fb\f6\e6\1b\f9\80\9a\d0\7e\27\c5\81\0e\bc\14\49\04\1d\39\07\d5\bf\5c\b4\bf\42\89\1d\61\61\0a\86\4f\b7\77\58\cf\a8\44\dc\3e\ff\32\ed\75\34\04\00\11\43\6c\1f\f3\00\9a\39\69\d0\9b\06\17\b6\31\39\92\df\e2\cf\51\1a\fa\3e\4d\d6\06\fb\1b\27\99\1b\00\1d\62\10\86\7d\6b\ed\73\fb\17\0d\51\8a\d6\11\87\d5\b0\cb\ba\e5\34\c3\04\ce\b6\11\22\7e\ef\63\62\de\e8\9c\4e\b8\a2\9f\ab\f8\a0\ce\9f\d1\9e\52\e1\4a\dc\9c\68\73\cf\63\d8\9e\c9\17\70\52\e4\f1\27\71\4b\21\56\c5\d0\25\a3\28\82\7e\af\7f\ed\29\df\15\8a\f1\ae\53\f0\9a\78\a3\a1\e1\f0\86\ce\39\7d\63\ce\f6\1b\af\29\1a\0c\48\37\f4\4f\ba\bb\95";
      };
      classical = record {
        algorithm = variant { ECDSA };
        signature = blob "\81\f4\1f\48\ce\7d\54\82\71\a7\52...51\2d\4c\fc\36\2b\aa\b2\b0\64\1e\ce\6a\3a\57\bd\c4\c0";
        public_key = blob "\02\f6\84\a9\68\0c\d2\...21\c7\81\a7\00\71\5f\68\1f\67\44\84\8c\4f\a8\b0\fe\82\f3\74\0d";
      };
    }
  },
)

Signature with compress algorithm

dfx canister call qubex_crypto create_compressed_hybrid_signature   '(blob "ICP Forum - Post Quantum Cryptography", "hybrid_1757446383536423918", variant { HybridRequired 
  })' 
(
  variant {
    Ok = record {
      metadata = record {
        security_level = variant { Quantum };
        version = 1 : nat8;
        timestamp = 1_757_446_496 : nat64;
        transition_mode = variant { HybridRequired };
        compatibility_level = variant { Modern };
      };
      compression_level = 22 : nat8;
      compressed_data = blob "\28\b5\2f\fd\00\88\4d\a9\00\6a\88\8d\2b\23\20\6f\8b\9a\03\03\3d\34\ff\63\84\f6\07\3b\dc\2a\c0\87\28\58\05\20\2e\2d\2d\d9\d2\6a\85\0a\09\00\09\0e\02\c3\02\8d\02\92\02\57\2c\81\cf\13\ce\e6\78\77\18\6f\f4\09\5e\33\6e\65\1c\a2\4b\74\d2\54\fa\62\bb\60\9b\6d\c1\43\f4\a6\9d\1a\f8\c4\14\df\34\50\78\d1\33\72\b1\8c\45\24\93\4d\ed\41\9f\7d\c3\b8\c0\c5\0e\3b\e2\d7\2d\7a\85\c0\59\3c\c4\6d\dd\7a\f4\c2\d0\41\78\09\a7\1e\fa\dc\26\93\3c\55\b9\02\a5\93\bd\ae\aa\9c\7a\d1\12\e8\e1\36\07\7d\c5\43\88\e8\ac\39\0f\4d\94\1e\c6\e9\60\bc\66\3b\5e\81\17\ec\0d\99\4e\42\c4\49\3a\89\f0\92\4e\75\1d\1f\f9\02\6f\0f\d4\3e\b5\05\33\46\d1\5c\3b\3a\d9\21\1e\fa\7a\c4\15\38\c9\c2\5e\e4\43\57\7b\79\28\27\fb\89\b1\5b\bf\72\....57\df\cd\e9\2d\bf\e0\14\9d\0b\f1\3b\6e\e4\75\f7\21\3f\e2\62\87\60\bc\c4\25\da\1e\76\08\71\dc\e8\98\47\7a\b8\89\f8\09\6f\e1\9d\65\f8\45\27\79\d9\8b\f8\d1\12\7c\a4\57\ba\1d\9f\e9\81\b8\94\d3\f1\28\3f\8a\71\93\6f\2e\e1\43\93\f8\1c\8f\cf\c8\a5\4b\3b\e5\30\37\f8\b4\d7\56\c6\63\e1\25\8b\53\71\de\a4\83\1c\ce\6e\ba\ad\9d\d8\29\47\5c\73\0c\37\11\05\0e\04\e0\40\01\1e\38\60\e0\60\41\83\05\3c\10\c1\03\08\14\44\30\81\04\5f\40\01\52\3e\72\87\53\70\23\6e\b6\05\5e\1f\dd\d0\69\87\e9\8d\6e\e5\ac\c9\f8\d9\35\9c\6a\2b\7b\c9\3c\1e\88\97\14\7b\54\60\01\04\16\d0\00\03\07\18\10\81\04\12\ac\00\33\3e\e5\6c\0f\c2\27\0e\c3\43\7a\09\e7\f0\11\6e\36\45\9f\e1\57\53\7b\89\37\78\c5\2d\37\f6\20\bd\26\70\21\af\74\12\6e\77\d9\e1\f8\f1\a8\2b\fa\d8\a1\1b\fb\05\ce\3b\08\6f\e8\21\dc\a2\47\e0\43\5b\bb\f5\0a\7e\c3\4b\96\e1\61\9c\d1\83\7c\77\63\1a\8f\e9\37\07\1f\e2\77\d8\14\8f\30\01\0c\24\58\d0\20\82\07\0a\20\70\00\03\07\09\4e\00\00\04\08\20\00\03\48\c0\40\82\07\1e\f0\80\41\83\08\38\c0\01\05\09\2c\c0\40\02\07\14\34\c0\c0\81\03\05\0e\34\90\c0\02\01\33\d6\72\93\e9\d0\ce\d8\ae\93\0e\d3\49\c6\a4\43\4e\a9\30\5d\64\5c\d1\9b\8a\3b\57\f4\e0\c4\3e\33\36\85\bd\45\3f\a3\70\0b\5e\69\51\a6\b0\69\d4\e7\e2\c3\a5\c7\74\9a\a3\78\98\f4\d2\81\ae\5a\6a\76\eb\24\3c\62\2a\a7\1d\62\3c\64\06\67\02\0f\4f\79\38\99\ec\e1\2b\d9\24\47\e8\e4\3c\06\a5\d3\2c\15\ba\dc\62\bc\ca\79\9c\36\6d\61\0f\e4\0d\a9\54\59\d3\44\18\e3\64\37\1e\3a\a2\53\39\dd\b5\36\e3\41\25\de\de\e2\62\bc\35\87\59\64\3a\f1\bb\5b\84\d3\1d\5d\42\08\13\0b\3d\71\65\db\1d\62\92\0d\8d\6b\a2\8e\c0\eb\16\86\7e\87\d0\85\6e\9f\8b\0b\46\3c\d0\a1\0e\35\87\cb\cc\d6\f0\40\4b\fb\c5\7d\b3\d8\32\27\9d\54\b1\ea\53\38\f1\70\35\47\56\8e\9b\0d\6e\57\8c\aa\f6\ca\32\45\3a\22\ac\0e\3d\a2\bd\19\7a\e7\a8\7a\48\e6\ca\c0\db\4e\56\0b\66\42\9a\66\e9\b5\60\83\17\66\b9\af\1b\43\98\8e\f4\ab\ad\68\61\71\0e\76\a8\1b\9d\72\ab\76\44\2f\b2\1e\b6\57\69\a1\5b\8d\d5\70\99\e2\c1\ae\fd\64\2e\89\bb\9c\b1\d5\14\38\6d\f4\c5\bc\a2\b6\1a\e2\d4\ef\78\b8\e7\36\ba\89\aa\cb\cc\0a\21\e6\c0\4d\......ad\78\f4\aa\cf\ea\68\af\04\8b\06\27\fa\6e\0a\3c\d8\72\d4\25\74\b1\d7\f0\f6\ec\b2\0b\8d\10\e3\50\bc\81\b3\7c\62\e9\81\84\17\b9\d9\77\11\42\27\ce\98\5e\c5\ed\cc\ea\e9\58\60\3f\7b\ba\cd\51\de\ec\56\97\71\99\2e\53\4d\73\60\1f\72\0a\e5\c6\85\aa\9d\74\ef\a4\b3\0e\fb\88\93\f0\10\9d\a6\15\ab\16\06\79\42\0f\72\05\1e\e8\d6\41\ce\5a\82\47\e7\2d\c3\2d\36\b9\ee\d0\6f\0e\f6\91\47\0f\1d\ca\d3\0b\db\8a\07\9a\75\90\2e\e4\77\c4\c3\4d\e3\c5\4e\e2\9c\89\b8\f1\06\3b\cd\37\5f\b5\9c\e2\a9\4b\76\6f\1a\1e\74\11\8f\4b\2f\ec\32\59\8e\01\77\8d\dc\6a\d2\41\7a\d8\46\7e\12\b8\d0\2d\63\67\79\a6\17\9d\3c\81\a5\67\ae\b1\b1\c3\c3\16\aa\ab\32\f5\b0\06\e7\b6\b0\a1\d3\39\d2\c3\dd\c0\43\3c\c6\ad\5d\ee\2a\de\43\e0\64\4f\e8\c6\ce\36\78\cd\65\e5\a4\13\71\b3\c3\1e\e1\26\9b\5d\34\c5\08\44\cb\f1\ea\2d\2f\b9\d3\ab\7d\7a\b0\1b\d7\4c\21\51\44\9b\46\54\b6\39\0f\c5\5c\7b\19\c9\30\73\b3\c9\11\1b\83\58\1d\45\03\eb\84\97\fc\ee\b2\6d\66\28\e2\81\38\85\78\b6\d4\21\96\86\2a\89\09\3c\82\cd\b8\fa\3d\c1\4e\25\0f\43\19\99\b8\9a\61\3c\29\6f\dd\f6\68\cb\f6\92\6d\92\10\ea\b3\a9\26\76\ba\82\05\bf\76\8a\7c\8a\b7\ee\1c\ba\f4\09\bc\ea\ce\0c\dd\e2\96\09\a7\cd\46\89\38\04\f2\b1\ab\bc\68\3b\86\7e\bd\6a\da\e0\75\7c\ba\88\88\30\74\32\2a\4e\a1\37\c5\71\57\78\8f\8a\cb\04\4d\e2\23\fd\e2\50\fc\68\ba\d2\d9\24\9d\2a\a4\56\2f\30\3a\23\a6\49\7d\b5\6c\a1\e4\41\97\bc\8c\33\66\2c\42\76\ce\a1\3d\c8\52\87\3c\77\75\c9\26\75\a5\4b\31\8a\4f\47\ec\ca\3e\43\23\1f\3e\fc\ea\0b\c4\e9\11\48\1e\77\05\b5\07\3f\c6\16\0c\9d\1b\6e\99\ce\c8\22\3c\1c\a7\20\24\31\9b\aa\09\7d\28\73\c9\bc\43\8c\c2\48\08\1e\f3\71\de\26\63\77\15\a7\f8\2a\d0\17\b5\a1\6d\1a\57\f0\38\84\88\ca\34\f0\b0\50\96\85\8e\46\bb\84\b2\4b\1d\b7\b6\31\87\d4\0d\8c\b0\2b\7a\cc\14\7c\e8\da\74\07\9b\66\d6\db\27\18\33\a4\4f\b0\bd\ec\95\6b\cb\7c\3c\2e\ed\5d\14\7b\cd\a4\f1\19\b3\1b\e2\47\eb\3c\d0\25\e1\a2\db\b5\4b\8b\cd\6d\95\98\5e\77\7c\88\df\45\73\b8\54\34\66\f1\93\69\f8\cc\42\7c\ec\70\1f\1d\6c\09\5c\6c\89\1e\c8\78\42\97\c5\26\e3\d5\8b\36\36\58\8d\c2\6f\38\9f\d3\85\1e\b6\44\21\26\dd\72\a2\43\b0\36\4f\48\67\08\fc\8c\cf\09\f9\0c\b7\ba\7c\e6\6a\a7\59\5b\62\7a\f5\de\54\a0\89\c0\29\e8\be\ea\55\b1\93\4b\b0\0c\13\07\f6\60\d2\b6\78\dc\8a\77\3e\e1\2c\1b\c4\8f\8b\5d\f5\1c\6f\90\1d\81\df\c9\65\9c\f6\b8\b1\c2\e0\e1\da\a5\62\66\1d\35\d1\0d\76\6b\a7\87\60\19\e5\88\a3\26\d1\17\53\3b\cd\15\7a\c9\54\33\3a\4d\f4\b0\b6\3d\62\9a\6e\93\d6\26\df\55\09\11\2e\a1\87\d0\8b\10\1b\ce\05\e1\75\87\a1\ce\3d\c4\43\a6\85\bd\34\59\a5\24\ad\3b\1b\bb\58\50\4a\e8\60\93\ea\3a\4e\d9\da\47\fa\54\85\53\5c\e9\5d\21\0e\69\9c\24\17\b8\40\02\03\34\88\a0\81\05\0e\20\68\50\00\07\16\50\60\81\03\0b\a8\c0\03\06\0e\30\60\00\83\07\0a\24\f0\40\04\1a\48\70\82\06\2c\68\c0\20\82\09\2c\38\40\03\18\34\60\40\05\08\90\a0\01\11\78\60\01\0f\18\38\80\40\41\03\3a\21\91\9a\92\c0\03\0b\1e\60\f0\20\c1\64\20\01\04\11\60\e0\a0\c1\02\0a\28\78\a0\a0\01\0a\1e\2c\78\a0\d8\25\22\8c\9b\0d\fb\c9\0c\5e\d1\23\96\99\ab\66\08\ed\1c\3a\71\8e\f4\a1\70\a2\78\c5\b4\39\5d\e4\9a\98\5e\c7\84\e1\55\0b\3c\18\16\26\1d\ce\f5......9e\eb\60\db\71\66\38\71\ba\de\25\4e\21\77\fc\16\b6\0d\9c\f8\cc\8b\90\33\70\19\96\d3\e8\b3\43\e0\8c\c3\10\97\b8\ed\25\c5\9e\98\52\9c\3a\bd\9b\4c\81\6a\86\5e\71\cc\52\ea\8c\e0\63\53\b7\10\ab\b9\f2\05\cd\22\04\7d\57\ab\c5\22\b0\87\71\99\43\78\43\27\84\d4\a8\83\41\44\3b\28\0e\84\24\cc\94\31\35\45\da\a4\d0\01\23\20\20\30\50\80\90\88\84\5e\4a\9c\0f\33\20\70\d0\ac\07\29\4c\fb\7f\07\de\f4\0a\98\c6\97\c4\01\14\1b\40\b2\6a\07\20\33\7a\01\9c\0e\c0\e9\0b\60\60\00\1d\1b\ed\00\ec\14\d5\19\29\17\4d\bc\a0\72\24\c4\dc\c0\d6\02\4b\a7\fd\21\43\1e\37\16\dc\84\6e\d2\03\87\c9\92\dc\e9\7f\33\55\34\61\ef\50\93\38\d4\e2\85\36\d0\e5\ed\de\b1\97\b4\a0\84\fa\96\75\54\75\2c\94\2e\e4\3e\12\6a\f6\44\0d\85\ec\f8\9e\d8\b3\36\ea\8f\e5\d3\b6\29\d6\f1\82\0d\14\0f\63\99\16\43\fc\8e\c8\6d\1c\7d\25\6f\2c\db\d4\95\15\50\12\ba\a0\61\05\65\27\75\43\68\87\81\d2\a9\b4\d2\14\3e\cc\23\2d\e2\1f\46\4a\34\52\53\fb\72\03\19\0a\21......8d\12\ad\75\8b\27\9c\50\5a\d0\a8\be\4d\e6\e5\f7\27\d9\fe\71\4d\77\86\59\ff\e6\9d\0d\ea\df\53\64\0a\db\db\0c\b5\9d\4a\7f\71\1b\dc\6f\86\95\da\46\9f\ba\d0\37\02\08\f8\92\68\42\9d\02\90\39\b9\0c\f0\b3\c6\7c\00\e7\b1\8b\c2\47\70\37\76\24\fd\5e\b7\04\86\6c\09\77\7b\48\94\f4\8f\40\c9\d4\33\7f\75\ab\35\8f\9b\2a\cd\58\9b\16\6a\2b\3a\b8\da\75\e2\00\66\cd\75\8c\37\13\77\b5\c3\b6\30\d4\d5\06\94\3d\06\24\c1\32\14\04\69\25\89\27\4f\c1\a1\2e\3f\82\18\c2\94\d9\4a\35\b1\26\0d\e0\9e\6d\c6\fc\2d\ad\ca\d9\a1\9b\1a\ce\b3\0e\e1\73\f4\68\21\d1\f5\b4\38\73\1d\0c\a6\cb\b9\ad\a9\35\8c\a7\cf\75\0c\0a\96\a0\81\58\58\95\ff\05\78\34\f4\5a\8d\d4\5a\64\f7\86\1b\45\a8\73\87\3e\d5\bd\f4\81\27\ed\2d\51\66\22\c8\cf\1a\74\c1\87\a6\a8\5c\24\9c\69\16\50\56\04\79\e1\ce\eb\0f\86\7b\e9\17\cc\4f\37\31\d8\88\b2\6a\66\03\3f\65\1c\cf\5c\85\23\65\df\cb\20\c0\a1\07\86\d8\9d\87\e3\1a\8d\06\a2\e5\cd\04\e5\b8\d2\a2\f1\73\5e\0e\95\53\e2\ec\ac\97\67\08\fa\dd\25\b0\5a\cc\51\f1\8e\e4\47\2e\e1\f7\16\1f\1a\dc\48\f3\5f\d9\cf\be\cd\23\04\4e\3e\71\a1\bb\d4\1e\17\8e\6e\68\77\32\de\f9\f0\4b\8d\10\df\e7\1a\53\52\be\51\a0\be\40\1b\ca\d2\20\cf\3a\36\fd\3a\3a\04\f0\f8\54\b5\02\1d\c2\7f\68\ec\b4\9f\c8\85\11\f8\a1\81\93\81\45\eb\66\35\ff\fd\be\5f\55\89\04\44\c3\aa\3b\7f\69\7b\ab\58\35\7e\10\93\8c\f4\d4\a1\ae\be\39\a4\31\05\9d\7d\8c\65\69\9c\1f\40\b4\0b\2e\01\d5\95\23\e7\4b\d0\c9\10\f0\68\ef\9b\9f\14\25\fb\13\8b\83\7e\e5\9a\8f\a2\c3\7d\5d\0f\ac\54\30\4f\a2\47\bd\91\e1\2e\3f\51\79\7b\78\2c\10\90\ce\e9\40\34\68\83\cf\ce\d4\dd\14\3b\71\1b\80\77\71\b9\c1\36\cf\2f\06\3d\50\f8\ba\97\e1\c1\cc\05\5f\bc\42\80\24\c9\30\c1\b3\a3\e0\d3\cb\dd\c3\fc\0a\e4\4a\c1\8d\b5\a2\ed\23\7f\72\......59\d0\4b\f7\e8\34\2b\0d\bd\b2\72\f1\dc\de\21\8d\39\66\00\81\95\d3\76\73\bc\8e\29\1f\8e\b4\a1\4e\b3\23\a3\10\9f\b7\16\d8\15\31\b8\30\f0\3b\c1\21\99\af\4a\28\09\e2\6d\53\e4\fc\3b\23\62\b1\0c\fe\62\ef\37\99\c1\94\06\de\79\ba\4c\e1\d5\20\83\3f\8b\14\cc\4b\51\5e\9c\d1\29\5e\e4\29\a4\20\f3\29\2e\d7\39\cf\bc\c3\9a\63\8a\0e\42\f1\a1\f4\4b\08\63\97\c4\3f\a7\81\ca\0a\7b\0f\9e\de\e4\57\1f\61\69\76\b1\0b\e8\bf\d7\85\8b\57\47\5a\d4\4b\34\fd\af\79\cc\26\4b\e6\ba\4b\5c\8a\79\fb\77\e2\88\84\97\cf\1f\89\39\3d\6f\ba\21\28\7c\9b\5a\28\40\93\0d\92\ad\fe\8c\bf\ab\59\bf\b2\3c\ab\37\eb\c5\......e2\ea\a4\33\0c\d8\f0\f2\0c\20\9b\a3\e2\33\b3\b9\c4\69\ee\22\93\27\1a\77\b8\b3\ac\04\2e\58\9b\88\71\f7\ca\cd\a9\c7\19\8a\b3\75\ce\bf\48\fd\1e\d0\1e\02\4e\2f\89\7c\a4\55\da\50\8c\f5\7c\66\b2\88\ca\ec\b2\53\12\ec\38\bc\ad\8c\7c\74\6b\f7\23\d2\22\7d\fe\3d\16\dc\2a\f1\f4\66\fe\93\94\52\23\cc\f4\e3\c9\e1\5c\00\94\72\ec\d9\92\38\4e\d0\05\87\9e\c9\5f\aa\e0\56\bc\98\da\3b\0b\66\2d\85\9b\99\50\29\c9\d0\24\e2\bf\4b\f1\ac\8c\ac\e2\8e\21\f2\87\4c\71\80\a4\1f\58\2a\b0\fb\4d\b4\22\50\c2\ea\4a\19\7d\7c\c1\14\03\48\4b\0b\76\74\30\6d\3c\bd\9a\74\30\59\95\7d\34\e8\6c\86\ad\31\2d\aa\d2\2a\f9\ff\ed\c2\ec\b6\45\f4\c5\04\a6\00\33\2c\5b\7c\d2\1f\38\1b\a2\2a\f2\06\1a\fe\......5c\7f\90\ee\40\56\d0\78\95\56\9c\69\de\a2\1d\db\40\6d\d1\13\87\5b\1d\97\2a\51\7f\49\8a\1e\d1\22\b4\77\45\cb\b8\9e\91\0c\fa\f7\29\4c\38\4c\6f\6d\fb\fd\90\2d\8f\3a\97\ef\9d\45\a8\56\28\ad\f0\e0\70\4d\e4\9c\36\d7\d2\40\1f\41\7c\f0\ec\8c\07\10\8a\ca\78\66\28\40\a0\25\dc\5c\f8\94\a2\a2\00\68\08\04\02\71\ec\02\50\44\76\40\9a\40\8c\28\a5\09\04\10\1e\a5\42\57\a7\10\5d\1d\f6\74\4a\22\16\39\d9\0d\e1\e4\5d\e2\e9\87\ee\cf\6f\12\e8\0a";
      compressed_size = 5_426 : nat64;
      original_size = 13_955 : nat64;
      compression_ratio = 61.11787889645288 : float64;
    }
  },
)

We gain ratio : 61%.

Terminal view

For this demonstration, I created a message with a simple string, but in reality, we use it for transactions, whether batch transactions or simple transactions.

Now we know we can create an hybrid signature, so what’s the next ?

Part II : Wallet Quantum Safe

Philippe.

Hi! I’m not understand much on this cryptographic topic but good luck