Hey there! While developing an app I encountered a problem in the library. I was trying to encrypt a message and check afterwards if the content is the same. While developing this, I found out that when decapsulating the shared secret, I always get a Uint8List with only 0s. I then cloned the library after a while of troubleshooting and found out that the same happens in the test file as well, with the only difference being that I have a non-zero encapsulated shared secret which is not the case in the usage example:
$ dart run ./example/general_example.dart
=== XKyber_crypto Usage Example ===
Public Key (800 bytes):
[253, 56, 158, 81, 20, ..., 0, 0, 0, 0, 0]
Secret Key (1632 bytes):
[109, 162, 99, 109, 162, ..., 0, 0, 0, 0, 0]
Ciphertext (768 bytes):
[110, 85, 105, 0, 0, ..., 0, 0, 0, 0, 0]
Encapsulated Shared Secret (32 bytes):
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Decapsulated Shared Secret (32 bytes):
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Shared secrets match!
Symmetric Encryption Example:
Plaintext: This is a secret message.
Encrypted (Base64): r8h+1YJHP6yWrGUMd6qV5AhjWhGCtNNF8RDbxm0ay39SMvuw1WdyZYjEFwHkLfb+YbKMgIk=
Decrypted: This is a secret message.
$ dart test
Building package executable... (3.0s)
Built test:test.
00:00 +1: test/indcpa_publickey_test.dart: IND-CPA Public Key Tests Generated IND-CPA public key has correct size (288 bytes for Kyber512 IND-CPA) and prints content naturally
--- IND-CPA Public Key ---
Total Length: 288 bytes
Polyvec Compressed Portion (256 bytes):
Zero count: 64, Non-zero count: 192
Zero ratio: 0.25, Non-zero ratio: 0.75
Polyvec Compressed (hex):
08 b2 16 0f 15 45 51 14 45 51 14 45 ae eb ba ae eb ba ae eb 9a d9 54 46 53 78 d5 c7 fb e5 94 da ef 84 79 0a 06 ed 7d 38 61 09 b2 fc 53 92 e7 09 e0 31 60 c3 76 76 27 f9 a3 95 35 14 ba b4 1e 13 a9 72 16 c2 02 b4 2e b4 67 52 31 29 b1 e8 8e e3 38 8e e3 38 aa aa aa aa aa aa aa 8a f0 6b 9f 26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 b2 16 0f 15 45 51 14 45 51 14 45 ae eb ba ae eb ba ae eb 9a 81 22 1a ab 7f 6f 4c 6c 44 dd 3f 5f 7a 16 58 c3 85 ba f8 92 66 44 c7 1b c1 35 4b 8b 89 84 bc c8 73 eb 54 ce 15 96 04 44 a2 cc 12 86 55 a4 6d 4c f9 42 fb 2c 56 4c 62 ba 38 8e e3 38 8e e3 38 aa aa aa aa aa 4a 9c ae aa c9 81 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Polyvec Compressed (decimal list):
[8, 178, 22, 15, 21, 69, 81, 20, 69, 81, 20, 69, 174, 235, 186, 174, 235, 186, 174, 235, 154, 217, 84, 70, 83, 120, 213, 199, 251, 229, 148, 218, 239, 132, 121, 10, 6, 237, 125, 56, 97, 9, 178, 252, 83, 146, 231, 9, 224, 49, 96, 195, 118, 118, 39, 249, 163, 149, 53, 20, 186, 180, 30, 19, 169, 114, 22, 194, 2, 180, 46, 180, 103, 82, 49, 41, 177, 232, 142, 227, 56, 142, 227, 56, 170, 170, 170, 170, 170, 170, 170, 138, 240, 107, 159, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 178, 22, 15, 21, 69, 81, 20, 69, 81, 20, 69, 174, 235, 186, 174, 235, 186, 174, 235, 154, 129, 34, 26, 171, 127, 111, 76, 108, 68, 221, 63, 95, 122, 22, 88, 195, 133, 186, 248, 146, 102, 68, 199, 27, 193, 53, 75, 139, 137, 132, 188, 200, 115, 235, 84, 206, 21, 150, 4, 68, 162, 204, 18, 134, 85, 164, 109, 76, 249, 66, 251, 44, 86, 76, 98, 186, 56, 142, 227, 56, 142, 227, 56, 170, 170, 170, 170, 170, 74, 156, 174, 170, 201, 129, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Public Seed (32 bytes, hex):
65 57 84 70 c2 45 79 27 2e 54 e2 d1 89 3c 01 6c 36 db 7d d1 b4 23 8b bb 8e f7 1e 26 14 78 22 60
Full IND-CPA Public Key (Base64):
CLIWDxVFURRFURRFruu6ruu6ruua2VRGU3jVx/vllNrvhHkKBu19OGEJsvxTkucJ4DFgw3Z2J/mjlTUUurQeE6lyFsICtC60Z1IxKbHojuM4juM4qqqqqqqqqorwa58mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIshYPFUVRFEVRFEWu67qu67qu65qBIhqrf29MbETdP196FljDhbr4kmZExxvBNUuLiYS8yHPrVM4VlgREoswShlWkbUz5QvssVkxiujiO4ziO4ziqqqqqqkqcrqrJgQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVXhHDCRXknLlTi0Yk8AWw2233RtCOLu473HiYUeCJg
00:00 +2: loading test/ntt_test.dart
Original polynomial:
[0, 1, 2, 3, 4, ..., 251, 252, 253, 254, 255]
00:00 +3: loading test/ntt_test.dart
NTT (in Monty):
[1318, 3032, 453, 2788, 590, ..., 2237, 3148, 84, 1864, 2368]
iNTT (in Monty):
00:00 +3: test/kem_keypair_test.dart: Kyber KEM Key Generation and Encapsulation/Decapsulation Key pair generation produces correct key sizes and matching shared secret
--- Kyber KEM Test Results ---
00:00 +3: loading test/ntt_test.dart
[1600, 3153, 2076, 730, 2130, ..., 3074, 920, 2850, 1993, 2806]
Recovered (downgrading Monty to normal):
[2578, 3112, 2030, 3132, 2891, ..., 3147, 983, 1055, 2741, 1833]
Is the same? false
00:00 +3: test/kem_keypair_test.dart: Kyber KEM Key Generation and Encapsulation/Decapsulation Key pair generation produces correct key sizes and matching shared secret
Public Key (Base64): ZevA6BVFURRFURRFruu6ruu6ruv6LZ/MHTcC5UXPIqR+ST7vZqQyaGg1OB75FX0rBvX4rUlqW6rlT2gkd2kQoz+uOb1AKrXgC9R89vFei6R1heM4qqqqqqqqqqqqqqqqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl68DoFUVRFEVRFEWu67qu67qu63qLYvw2u0VPpuawnmk8DExi3+iyYphxk0df/WPYRmWvM1rewTJAL/lbHqfFg+zmrNomzpHw64BDHRGm4jiO4ziqqqqqqqqqqqqqaE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBkSWgJHRPUBe2gPd4wMuRR7qhLTTvJ5lzTzJQ8NA3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Secret Key (Base64): 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
Ciphertext (Base64): ktaPnwAAAAAAAAAAAAAAAAAAAABAA9dGR3LVUtGVz58ZeAiiIlZbtIpdAPARmd5HtQPY5VZNEpjQBIb3KKbn5IyJO/ogoVLAeKFfrBwqQ0JROAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS1o+fAAAAAAAAAAAAAAAAAAAAAMBiWFJe5xQ34KHf+yhsSQdpYQ269bQ3dUgmv49SVURawSlWXxp6bMzXrK4+weRnXbbZn4lrJkj2qMCRAQAAAAAAAAAAAAAAAAAArrsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKiN8DRNR5dcx9FMWxc0QZVkxXV0JQBA9EAnwCtOG5gPIaxqJF3ApPEc3Wpurk9UXoXL6lJaxTwUltWfRzSfB5F47HMobp0D0j4QPfTIZVWFNLscwcEZgqMYhiUQFmBFBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Shared Secret (Encapsulated, Base64): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Shared Secret (Decapsulated, Base64): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
00:00 +4 -1: test/ntt_invntt_test.dart: NTT/iNTT Recovered polynomial is congruent to the original modulo KYBER_Q [E]
Expected: <0>
Actual: <580>
Mismatch at index 0: original 2370, recovered 2950
package:matcher expect
test/ntt_invntt_test.dart 42:9 main.<fn>.<fn>
To run this test again: ~/.flutter-sdk/flutter/bin/cache/dart-sdk/bin/dart test test/ntt_invntt_test.dart -p vm --plain-name 'NTT/iNTT Recovered polynomial is congruent to the original modulo KYBER_Q'
00:00 +4 -1: test/shake128_test.dart: SHAKE128 Function SHAKE128 generates non-zero output for random input
SHAKE128 output (Base64): AQIDBAUfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
00:00 +5 -2: test/kem_key_distribution_test.dart: Kyber KEM Full Test (IND-CCA2) Key generation, public key distribution, and encapsulation/decapsulation
--- IND-CCA2 Public Key (Base64) ---
00:00 +5 -2: test/random_comparison_test.dart: Random Generation Comparison Test Two independent key generations produce different keys and shared secrets [E]
Expected: not [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]
Actual: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]
Two encapsulated shared secrets should differ.
package:matcher expect
test/random_comparison_test.dart 26:7 main.<fn>.<fn>
00:00 +5 -2: test/kem_key_distribution_test.dart: Kyber KEM Full Test (IND-CCA2) Key generation, public key distribution, and encapsulation/decapsulation
AyGgUBRFURRFURRFruu6ruu6rmszlnJPC4ZreTeZwrg52avQQkUMGp6pRhSbQfnVbu87z8WN5tilDZEYO8EOHtW9CJyIRfK6Beg4juM4juM4juM4qqqqqqqKjxcYXHNsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIaBQFEVRFEVRFEWu67qu67qu6z7V1AxjAIMo5QLj+4QnDAicepLrgozCllHCqF22Ho5XXltkTndc7lIBOS2TrLgLqjlPPQd8JjXQk/yO4ziO4ziqqqqqQAMPPic5e1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiR2PclATH49o0e5WqhBP2mRvNY4cL4DXc6qMoPcmrcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
--- IND-CPA Public Key Portion (within sk) ---
IND-CPA Public Key (Base64):
AyGgUBRFURRFURRFruu6ruu6rmszlnJPC4ZreTeZwrg52avQQkUMGp6pRhSbQfnVbu87z8WN5tilDZEYO8EOHtW9CJyIRfK6Beg4juM4juM4juM4qqqqqqqKjxcYXHNsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIaBQFEVRFEVRFEWu67qu67qu6z7V1AxjAIMo5QLj+4QnDAicepLrgozCllHCqF22Ho5XXltkTndc7lIBOS2TrLgLqjlPPQd8JjXQk/yO4ziO4ziqqqqqQAMPPic5e1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiR2PclATH49o0e5WqhBP2mRvNY4cL4DXc6qMoPcmrc
To run this test again: ~/.flutter-sdk/flutter/bin/cache/dart-sdk/bin/dart test test/random_comparison_test.dart -p vm --plain-name 'Random Generation Comparison Test Two independent key generations produce different keys and shared secrets'
--- IND-CPA Polyvec Compressed Portion (256 bytes) ---
Zero count: 65, Non-zero count: 191
Zero ratio: 0.25, Non-zero ratio: 0.75
Polyvec Compressed (hex):
03 21 a0 50 14 ... 00 00 00 00 00
Polyvec Compressed (decimal list):
[3, 33, 160, 80, 20, ..., 0, 0, 0, 0, 0]
Public Seed (32 bytes, hex):
48 91 d8 f7 25 01 31 f8 f6 8d 1e e5 6a a1 04 fd a6 46 f3 58 e1 c2 f8 0d 77 3a a8 ca 0f 72 6a dc
--- Shared Secrets (Base64) ---
Encapsulated: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Decapsulated: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
00:00 +8 -2: Some tests failed.
Consider enabling the flag chain-stack-traces to receive more detailed exceptions.
For example, 'dart test --chain-stack-traces'.
Hey there! While developing an app I encountered a problem in the library. I was trying to encrypt a message and check afterwards if the content is the same. While developing this, I found out that when decapsulating the shared secret, I always get a Uint8List with only 0s. I then cloned the library after a while of troubleshooting and found out that the same happens in the test file as well, with the only difference being that I have a non-zero encapsulated shared secret which is not the case in the usage example:
$ dart run ./example/general_example.dart === XKyber_crypto Usage Example === Public Key (800 bytes): [253, 56, 158, 81, 20, ..., 0, 0, 0, 0, 0] Secret Key (1632 bytes): [109, 162, 99, 109, 162, ..., 0, 0, 0, 0, 0] Ciphertext (768 bytes): [110, 85, 105, 0, 0, ..., 0, 0, 0, 0, 0] Encapsulated Shared Secret (32 bytes): [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Decapsulated Shared Secret (32 bytes): [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Shared secrets match! Symmetric Encryption Example: Plaintext: This is a secret message. Encrypted (Base64): r8h+1YJHP6yWrGUMd6qV5AhjWhGCtNNF8RDbxm0ay39SMvuw1WdyZYjEFwHkLfb+YbKMgIk= Decrypted: This is a secret message.I also ran tests in the project which also failed:
Is this just a mistake of me using the library wrong or is this an actual bug?