quarkdash 1.0.5 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/cjs/ringlwe.js +122 -88
- package/dist/cjs/ringlwe.js.map +1 -1
- package/dist/esm/ringlwe.js +122 -88
- package/dist/esm/ringlwe.js.map +1 -1
- package/dist/types/ringlwe.d.ts +49 -43
- package/docutil.ts +84 -0
- package/package.json +4 -2
- package/src/ringlwe.ts +183 -132
- package/.idea/modules.xml +0 -8
- package/.idea/quarkdash.iml +0 -12
- package/.idea/vcs.xml +0 -6
- package/coverage/clover.xml +0 -652
- package/coverage/coverage-final.json +0 -10
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/cipher.ts.html +0 -862
- package/coverage/lcov-report/crypto.ts.html +0 -1000
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -236
- package/coverage/lcov-report/index.ts.html +0 -163
- package/coverage/lcov-report/kdf.ts.html +0 -274
- package/coverage/lcov-report/mac.ts.html +0 -277
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/ringlwe.ts.html +0 -949
- package/coverage/lcov-report/sha.ts.html +0 -877
- package/coverage/lcov-report/shake.ts.html +0 -571
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/utils.ts.html +0 -952
- package/coverage/lcov.info +0 -972
package/README.md
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
> Have a questions? <a href="mailto:ilya@neurosell.top">Contact me</a>
|
|
7
7
|
|
|
8
|
+
 
|
|
9
|
+
|
|
8
10
|
---
|
|
9
11
|
|
|
10
12
|
[About](#about-quarkdash-crypto) | [Get Started](#get-started) | [Example](#basic-example) | [Benchmark](#benchmark) | [Docs](https://github.com/devsdaddy/quarkdash/wiki)
|
package/dist/cjs/ringlwe.js
CHANGED
|
@@ -8,6 +8,87 @@ const sha_1 = require("./sha");
|
|
|
8
8
|
* Ring-LWE based key exchange implementation
|
|
9
9
|
*/
|
|
10
10
|
class QuarkDashKeyExchange {
|
|
11
|
+
/**
|
|
12
|
+
* Generate crypto key pair async
|
|
13
|
+
* @returns {ICryptoKeyPair} Crypto key pair
|
|
14
|
+
* TODO: GPU Calculations
|
|
15
|
+
*/
|
|
16
|
+
async generateKeyPair() {
|
|
17
|
+
return this.generateKeyPairSync();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate crypto key pair sync
|
|
21
|
+
* @returns {ICryptoKeyPair} Crypto key pair
|
|
22
|
+
*/
|
|
23
|
+
generateKeyPairSync() {
|
|
24
|
+
const a = _a.uniformPoly();
|
|
25
|
+
const s = _a.smallPoly();
|
|
26
|
+
const e = _a.errorPoly();
|
|
27
|
+
const as = _a.multiply(a, s);
|
|
28
|
+
const b = new Array(_a.N);
|
|
29
|
+
for (let i = 0; i < _a.N; i++) {
|
|
30
|
+
b[i] = (as[i] + e[i]) % _a.Q;
|
|
31
|
+
}
|
|
32
|
+
const publicKey = utils_1.QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
|
|
33
|
+
const privateKey = _a.serializePoly(s);
|
|
34
|
+
return { publicKey, privateKey };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Encapsulate async
|
|
38
|
+
* @param publicKey {Uint8Array} Public key buffer
|
|
39
|
+
* @returns {Promise<ICryptoEncapsulated>} Encapsulated data
|
|
40
|
+
* TODO: GPU Calculations
|
|
41
|
+
*/
|
|
42
|
+
async encapsulate(publicKey) {
|
|
43
|
+
return this.encapsulateSync(publicKey);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Encapsulate sync
|
|
47
|
+
* @param publicKey {Uint8Array} Public key buffer
|
|
48
|
+
* @returns {ICryptoEncapsulated} Encapsulated data
|
|
49
|
+
*/
|
|
50
|
+
encapsulateSync(publicKey) {
|
|
51
|
+
const aBytes = publicKey.slice(0, _a.N * 2);
|
|
52
|
+
const bBytes = publicKey.slice(_a.N * 2);
|
|
53
|
+
const a = _a.deserializePoly(aBytes);
|
|
54
|
+
const b = _a.deserializePoly(bBytes);
|
|
55
|
+
const sp = _a.smallPoly();
|
|
56
|
+
const ep = _a.errorPoly();
|
|
57
|
+
const uArr = _a.multiply(a, sp);
|
|
58
|
+
for (let i = 0; i < _a.N; i++) {
|
|
59
|
+
uArr[i] = (uArr[i] + ep[i]) % _a.Q;
|
|
60
|
+
}
|
|
61
|
+
const w = _a.multiply(b, sp);
|
|
62
|
+
const rawSecret = _a.roundToBits(w);
|
|
63
|
+
const ciphertext = _a.serializePoly(uArr);
|
|
64
|
+
const sharedSecret = _a.hashSharedSecret(rawSecret, publicKey, ciphertext);
|
|
65
|
+
return { ciphertext, sharedSecret };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Decapsulate async
|
|
69
|
+
* @param privateKey {Uint8Array} Private key buffer
|
|
70
|
+
* @param peerPublicKey {Uint8Array} Peer public key
|
|
71
|
+
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
72
|
+
* @returns {Promise<Uint8Array>} Buffer data
|
|
73
|
+
* TODO: GPU Calculations
|
|
74
|
+
*/
|
|
75
|
+
async decapsulate(privateKey, peerPublicKey, ciphertext) {
|
|
76
|
+
return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Decapsulate sync
|
|
80
|
+
* @param privateKey {Uint8Array} Private key buffer
|
|
81
|
+
* @param peerPublicKey{Uint8Array} Peer public key buffer
|
|
82
|
+
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
83
|
+
* @returns {Uint8Array} Buffer data
|
|
84
|
+
*/
|
|
85
|
+
decapsulateSync(privateKey, peerPublicKey, ciphertext) {
|
|
86
|
+
const s = _a.deserializePoly(privateKey);
|
|
87
|
+
const u = _a.deserializePoly(ciphertext);
|
|
88
|
+
const w = _a.multiply(u, s);
|
|
89
|
+
const rawSecret = _a.roundToBits(w);
|
|
90
|
+
return _a.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
|
|
91
|
+
}
|
|
11
92
|
/**
|
|
12
93
|
* Get small polygon
|
|
13
94
|
* @returns {bigint[]} Small polygon
|
|
@@ -15,14 +96,21 @@ class QuarkDashKeyExchange {
|
|
|
15
96
|
*/
|
|
16
97
|
static smallPoly() {
|
|
17
98
|
const poly = new Array(this.N);
|
|
99
|
+
const bytesNeeded = Math.ceil(this.N * 2 / 8);
|
|
100
|
+
const randomBytes = utils_1.QuarkDashUtils.randomBytes(bytesNeeded);
|
|
18
101
|
for (let i = 0; i < this.N; i++) {
|
|
19
|
-
const
|
|
20
|
-
|
|
102
|
+
const byteIdx = Math.floor(i * 2 / 8);
|
|
103
|
+
const bitShift = (i * 2) % 8;
|
|
104
|
+
const val = (randomBytes[byteIdx] >> bitShift) & 0x03; // 0..3
|
|
105
|
+
if (val === 0)
|
|
21
106
|
poly[i] = -1n;
|
|
22
|
-
else if (
|
|
107
|
+
else if (val === 1)
|
|
23
108
|
poly[i] = 0n;
|
|
24
|
-
else
|
|
109
|
+
else if (val === 2)
|
|
110
|
+
poly[i] = 1n;
|
|
111
|
+
else {
|
|
25
112
|
poly[i] = 1n;
|
|
113
|
+
}
|
|
26
114
|
}
|
|
27
115
|
return poly;
|
|
28
116
|
}
|
|
@@ -40,6 +128,26 @@ class QuarkDashKeyExchange {
|
|
|
40
128
|
}
|
|
41
129
|
return poly;
|
|
42
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Error polygon
|
|
133
|
+
* @private
|
|
134
|
+
*/
|
|
135
|
+
static errorPoly() {
|
|
136
|
+
const poly = new Array(this.N);
|
|
137
|
+
const SIGMA = 3.19;
|
|
138
|
+
for (let i = 0; i < this.N; i++) {
|
|
139
|
+
let sum = 0;
|
|
140
|
+
const randBytes = utils_1.QuarkDashUtils.randomBytes(12);
|
|
141
|
+
for (let j = 0; j < 12; j++) {
|
|
142
|
+
sum += randBytes[j];
|
|
143
|
+
}
|
|
144
|
+
// Центрируем и масштабируем к [-6,6]
|
|
145
|
+
const centered = (sum / 255) - 6;
|
|
146
|
+
const error = Math.floor(centered * SIGMA);
|
|
147
|
+
poly[i] = BigInt(Math.max(-Number(this.Q), Math.min(Number(this.Q) - 1, error)));
|
|
148
|
+
}
|
|
149
|
+
return poly;
|
|
150
|
+
}
|
|
43
151
|
/**
|
|
44
152
|
* NTT Operation
|
|
45
153
|
* @param poly {bigint[]} Polygon
|
|
@@ -86,8 +194,9 @@ class QuarkDashKeyExchange {
|
|
|
86
194
|
}
|
|
87
195
|
len >>= 1;
|
|
88
196
|
}
|
|
89
|
-
for (let i = 0; i < this.N; i++)
|
|
197
|
+
for (let i = 0; i < this.N; i++) {
|
|
90
198
|
res[i] = (res[i] * this.INV_N) % this.Q;
|
|
199
|
+
}
|
|
91
200
|
return res;
|
|
92
201
|
}
|
|
93
202
|
/**
|
|
@@ -100,8 +209,9 @@ class QuarkDashKeyExchange {
|
|
|
100
209
|
const aNTT = this.ntt(a);
|
|
101
210
|
const bNTT = this.ntt(b);
|
|
102
211
|
const prod = new Array(this.N);
|
|
103
|
-
for (let i = 0; i < this.N; i++)
|
|
212
|
+
for (let i = 0; i < this.N; i++) {
|
|
104
213
|
prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
|
|
214
|
+
}
|
|
105
215
|
return this.invNTT(prod);
|
|
106
216
|
}
|
|
107
217
|
/**
|
|
@@ -157,7 +267,9 @@ class QuarkDashKeyExchange {
|
|
|
157
267
|
* @private
|
|
158
268
|
*/
|
|
159
269
|
static powMod(base, exp, mod) {
|
|
160
|
-
let result = 1n
|
|
270
|
+
let result = 1n;
|
|
271
|
+
let b = base % mod;
|
|
272
|
+
let e = exp;
|
|
161
273
|
while (e > 0n) {
|
|
162
274
|
if (e & 1n)
|
|
163
275
|
result = (result * b) % mod;
|
|
@@ -174,7 +286,8 @@ class QuarkDashKeyExchange {
|
|
|
174
286
|
* @private
|
|
175
287
|
*/
|
|
176
288
|
static modInverse(a, m) {
|
|
177
|
-
let [old_r, r] = [a, m]
|
|
289
|
+
let [old_r, r] = [a, m];
|
|
290
|
+
let [old_s, s] = [1n, 0n];
|
|
178
291
|
while (r !== 0n) {
|
|
179
292
|
const q = old_r / r;
|
|
180
293
|
[old_r, r] = [r, old_r - q * r];
|
|
@@ -182,85 +295,6 @@ class QuarkDashKeyExchange {
|
|
|
182
295
|
}
|
|
183
296
|
return (old_s % m + m) % m;
|
|
184
297
|
}
|
|
185
|
-
/**
|
|
186
|
-
* Generate crypto key pair async
|
|
187
|
-
* @returns {ICryptoKeyPair} Crypto key pair
|
|
188
|
-
* TODO: GPU Calculations
|
|
189
|
-
*/
|
|
190
|
-
async generateKeyPair() {
|
|
191
|
-
return this.generateKeyPairSync();
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Generate crypto key pair sync
|
|
195
|
-
* @returns {ICryptoKeyPair} Crypto key pair
|
|
196
|
-
*/
|
|
197
|
-
generateKeyPairSync() {
|
|
198
|
-
const a = _a.uniformPoly();
|
|
199
|
-
const s = _a.smallPoly();
|
|
200
|
-
const e = _a.smallPoly();
|
|
201
|
-
const as = _a.multiply(a, s);
|
|
202
|
-
const b = new Array(_a.N);
|
|
203
|
-
for (let i = 0; i < _a.N; i++)
|
|
204
|
-
b[i] = (as[i] + e[i]) % _a.Q;
|
|
205
|
-
const pub = utils_1.QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
|
|
206
|
-
const priv = _a.serializePoly(s);
|
|
207
|
-
return { publicKey: pub, privateKey: priv };
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Encapsulate async
|
|
211
|
-
* @param publicKey {Uint8Array} Public key buffer
|
|
212
|
-
* @returns {Promise<ICryptoEncapsulated>} Encapsulated data
|
|
213
|
-
* TODO: GPU Calculations
|
|
214
|
-
*/
|
|
215
|
-
async encapsulate(publicKey) {
|
|
216
|
-
return this.encapsulateSync(publicKey);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Encapsulate sync
|
|
220
|
-
* @param publicKey {Uint8Array} Public key buffer
|
|
221
|
-
* @returns {ICryptoEncapsulated} Encapsulated data
|
|
222
|
-
*/
|
|
223
|
-
encapsulateSync(publicKey) {
|
|
224
|
-
const aBytes = publicKey.slice(0, _a.N * 2);
|
|
225
|
-
const bBytes = publicKey.slice(_a.N * 2);
|
|
226
|
-
const a = _a.deserializePoly(aBytes);
|
|
227
|
-
const b = _a.deserializePoly(bBytes);
|
|
228
|
-
const sp = _a.smallPoly();
|
|
229
|
-
const ep = _a.smallPoly();
|
|
230
|
-
const uArr = _a.multiply(a, sp);
|
|
231
|
-
for (let i = 0; i < _a.N; i++)
|
|
232
|
-
uArr[i] = (uArr[i] + ep[i]) % _a.Q;
|
|
233
|
-
const w = _a.multiply(b, sp);
|
|
234
|
-
const rawSecret = _a.roundToBits(w);
|
|
235
|
-
const ciphertext = _a.serializePoly(uArr);
|
|
236
|
-
const sharedSecret = this.hashSharedSecret(rawSecret, publicKey, ciphertext);
|
|
237
|
-
return { ciphertext, sharedSecret };
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Decapsulate async
|
|
241
|
-
* @param privateKey {Uint8Array} Private key buffer
|
|
242
|
-
* @param peerPublicKey {Uint8Array} Peer public key
|
|
243
|
-
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
244
|
-
* @returns {Promise<Uint8Array>} Buffer data
|
|
245
|
-
* TODO: GPU Calculations
|
|
246
|
-
*/
|
|
247
|
-
async decapsulate(privateKey, peerPublicKey, ciphertext) {
|
|
248
|
-
return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Decapsulate sync
|
|
252
|
-
* @param privateKey {Uint8Array} Private key buffer
|
|
253
|
-
* @param peerPublicKey{Uint8Array} Peer public key buffer
|
|
254
|
-
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
255
|
-
* @returns {Uint8Array} Buffer data
|
|
256
|
-
*/
|
|
257
|
-
decapsulateSync(privateKey, peerPublicKey, ciphertext) {
|
|
258
|
-
const s = _a.deserializePoly(privateKey);
|
|
259
|
-
const u = _a.deserializePoly(ciphertext);
|
|
260
|
-
const w = _a.multiply(u, s);
|
|
261
|
-
const rawSecret = _a.roundToBits(w);
|
|
262
|
-
return this.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
|
|
263
|
-
}
|
|
264
298
|
/**
|
|
265
299
|
* Hash shared secret
|
|
266
300
|
* @param ss {Uint8Array} Shared secret buffer
|
|
@@ -269,7 +303,7 @@ class QuarkDashKeyExchange {
|
|
|
269
303
|
* @returns {Uint8Array} Shared secret hash
|
|
270
304
|
* @private
|
|
271
305
|
*/
|
|
272
|
-
hashSharedSecret(ss, publicKey, ciphertext) {
|
|
306
|
+
static hashSharedSecret(ss, publicKey, ciphertext) {
|
|
273
307
|
const data = utils_1.QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
|
|
274
308
|
return sha_1.SHA256.hash(data, true);
|
|
275
309
|
}
|
package/dist/cjs/ringlwe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/ringlwe.js
CHANGED
|
@@ -5,6 +5,87 @@ import { SHA256 } from "./sha";
|
|
|
5
5
|
* Ring-LWE based key exchange implementation
|
|
6
6
|
*/
|
|
7
7
|
export class QuarkDashKeyExchange {
|
|
8
|
+
/**
|
|
9
|
+
* Generate crypto key pair async
|
|
10
|
+
* @returns {ICryptoKeyPair} Crypto key pair
|
|
11
|
+
* TODO: GPU Calculations
|
|
12
|
+
*/
|
|
13
|
+
async generateKeyPair() {
|
|
14
|
+
return this.generateKeyPairSync();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate crypto key pair sync
|
|
18
|
+
* @returns {ICryptoKeyPair} Crypto key pair
|
|
19
|
+
*/
|
|
20
|
+
generateKeyPairSync() {
|
|
21
|
+
const a = _a.uniformPoly();
|
|
22
|
+
const s = _a.smallPoly();
|
|
23
|
+
const e = _a.errorPoly();
|
|
24
|
+
const as = _a.multiply(a, s);
|
|
25
|
+
const b = new Array(_a.N);
|
|
26
|
+
for (let i = 0; i < _a.N; i++) {
|
|
27
|
+
b[i] = (as[i] + e[i]) % _a.Q;
|
|
28
|
+
}
|
|
29
|
+
const publicKey = QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
|
|
30
|
+
const privateKey = _a.serializePoly(s);
|
|
31
|
+
return { publicKey, privateKey };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Encapsulate async
|
|
35
|
+
* @param publicKey {Uint8Array} Public key buffer
|
|
36
|
+
* @returns {Promise<ICryptoEncapsulated>} Encapsulated data
|
|
37
|
+
* TODO: GPU Calculations
|
|
38
|
+
*/
|
|
39
|
+
async encapsulate(publicKey) {
|
|
40
|
+
return this.encapsulateSync(publicKey);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Encapsulate sync
|
|
44
|
+
* @param publicKey {Uint8Array} Public key buffer
|
|
45
|
+
* @returns {ICryptoEncapsulated} Encapsulated data
|
|
46
|
+
*/
|
|
47
|
+
encapsulateSync(publicKey) {
|
|
48
|
+
const aBytes = publicKey.slice(0, _a.N * 2);
|
|
49
|
+
const bBytes = publicKey.slice(_a.N * 2);
|
|
50
|
+
const a = _a.deserializePoly(aBytes);
|
|
51
|
+
const b = _a.deserializePoly(bBytes);
|
|
52
|
+
const sp = _a.smallPoly();
|
|
53
|
+
const ep = _a.errorPoly();
|
|
54
|
+
const uArr = _a.multiply(a, sp);
|
|
55
|
+
for (let i = 0; i < _a.N; i++) {
|
|
56
|
+
uArr[i] = (uArr[i] + ep[i]) % _a.Q;
|
|
57
|
+
}
|
|
58
|
+
const w = _a.multiply(b, sp);
|
|
59
|
+
const rawSecret = _a.roundToBits(w);
|
|
60
|
+
const ciphertext = _a.serializePoly(uArr);
|
|
61
|
+
const sharedSecret = _a.hashSharedSecret(rawSecret, publicKey, ciphertext);
|
|
62
|
+
return { ciphertext, sharedSecret };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Decapsulate async
|
|
66
|
+
* @param privateKey {Uint8Array} Private key buffer
|
|
67
|
+
* @param peerPublicKey {Uint8Array} Peer public key
|
|
68
|
+
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
69
|
+
* @returns {Promise<Uint8Array>} Buffer data
|
|
70
|
+
* TODO: GPU Calculations
|
|
71
|
+
*/
|
|
72
|
+
async decapsulate(privateKey, peerPublicKey, ciphertext) {
|
|
73
|
+
return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Decapsulate sync
|
|
77
|
+
* @param privateKey {Uint8Array} Private key buffer
|
|
78
|
+
* @param peerPublicKey{Uint8Array} Peer public key buffer
|
|
79
|
+
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
80
|
+
* @returns {Uint8Array} Buffer data
|
|
81
|
+
*/
|
|
82
|
+
decapsulateSync(privateKey, peerPublicKey, ciphertext) {
|
|
83
|
+
const s = _a.deserializePoly(privateKey);
|
|
84
|
+
const u = _a.deserializePoly(ciphertext);
|
|
85
|
+
const w = _a.multiply(u, s);
|
|
86
|
+
const rawSecret = _a.roundToBits(w);
|
|
87
|
+
return _a.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
|
|
88
|
+
}
|
|
8
89
|
/**
|
|
9
90
|
* Get small polygon
|
|
10
91
|
* @returns {bigint[]} Small polygon
|
|
@@ -12,14 +93,21 @@ export class QuarkDashKeyExchange {
|
|
|
12
93
|
*/
|
|
13
94
|
static smallPoly() {
|
|
14
95
|
const poly = new Array(this.N);
|
|
96
|
+
const bytesNeeded = Math.ceil(this.N * 2 / 8);
|
|
97
|
+
const randomBytes = QuarkDashUtils.randomBytes(bytesNeeded);
|
|
15
98
|
for (let i = 0; i < this.N; i++) {
|
|
16
|
-
const
|
|
17
|
-
|
|
99
|
+
const byteIdx = Math.floor(i * 2 / 8);
|
|
100
|
+
const bitShift = (i * 2) % 8;
|
|
101
|
+
const val = (randomBytes[byteIdx] >> bitShift) & 0x03; // 0..3
|
|
102
|
+
if (val === 0)
|
|
18
103
|
poly[i] = -1n;
|
|
19
|
-
else if (
|
|
104
|
+
else if (val === 1)
|
|
20
105
|
poly[i] = 0n;
|
|
21
|
-
else
|
|
106
|
+
else if (val === 2)
|
|
107
|
+
poly[i] = 1n;
|
|
108
|
+
else {
|
|
22
109
|
poly[i] = 1n;
|
|
110
|
+
}
|
|
23
111
|
}
|
|
24
112
|
return poly;
|
|
25
113
|
}
|
|
@@ -37,6 +125,26 @@ export class QuarkDashKeyExchange {
|
|
|
37
125
|
}
|
|
38
126
|
return poly;
|
|
39
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Error polygon
|
|
130
|
+
* @private
|
|
131
|
+
*/
|
|
132
|
+
static errorPoly() {
|
|
133
|
+
const poly = new Array(this.N);
|
|
134
|
+
const SIGMA = 3.19;
|
|
135
|
+
for (let i = 0; i < this.N; i++) {
|
|
136
|
+
let sum = 0;
|
|
137
|
+
const randBytes = QuarkDashUtils.randomBytes(12);
|
|
138
|
+
for (let j = 0; j < 12; j++) {
|
|
139
|
+
sum += randBytes[j];
|
|
140
|
+
}
|
|
141
|
+
// Центрируем и масштабируем к [-6,6]
|
|
142
|
+
const centered = (sum / 255) - 6;
|
|
143
|
+
const error = Math.floor(centered * SIGMA);
|
|
144
|
+
poly[i] = BigInt(Math.max(-Number(this.Q), Math.min(Number(this.Q) - 1, error)));
|
|
145
|
+
}
|
|
146
|
+
return poly;
|
|
147
|
+
}
|
|
40
148
|
/**
|
|
41
149
|
* NTT Operation
|
|
42
150
|
* @param poly {bigint[]} Polygon
|
|
@@ -83,8 +191,9 @@ export class QuarkDashKeyExchange {
|
|
|
83
191
|
}
|
|
84
192
|
len >>= 1;
|
|
85
193
|
}
|
|
86
|
-
for (let i = 0; i < this.N; i++)
|
|
194
|
+
for (let i = 0; i < this.N; i++) {
|
|
87
195
|
res[i] = (res[i] * this.INV_N) % this.Q;
|
|
196
|
+
}
|
|
88
197
|
return res;
|
|
89
198
|
}
|
|
90
199
|
/**
|
|
@@ -97,8 +206,9 @@ export class QuarkDashKeyExchange {
|
|
|
97
206
|
const aNTT = this.ntt(a);
|
|
98
207
|
const bNTT = this.ntt(b);
|
|
99
208
|
const prod = new Array(this.N);
|
|
100
|
-
for (let i = 0; i < this.N; i++)
|
|
209
|
+
for (let i = 0; i < this.N; i++) {
|
|
101
210
|
prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
|
|
211
|
+
}
|
|
102
212
|
return this.invNTT(prod);
|
|
103
213
|
}
|
|
104
214
|
/**
|
|
@@ -154,7 +264,9 @@ export class QuarkDashKeyExchange {
|
|
|
154
264
|
* @private
|
|
155
265
|
*/
|
|
156
266
|
static powMod(base, exp, mod) {
|
|
157
|
-
let result = 1n
|
|
267
|
+
let result = 1n;
|
|
268
|
+
let b = base % mod;
|
|
269
|
+
let e = exp;
|
|
158
270
|
while (e > 0n) {
|
|
159
271
|
if (e & 1n)
|
|
160
272
|
result = (result * b) % mod;
|
|
@@ -171,7 +283,8 @@ export class QuarkDashKeyExchange {
|
|
|
171
283
|
* @private
|
|
172
284
|
*/
|
|
173
285
|
static modInverse(a, m) {
|
|
174
|
-
let [old_r, r] = [a, m]
|
|
286
|
+
let [old_r, r] = [a, m];
|
|
287
|
+
let [old_s, s] = [1n, 0n];
|
|
175
288
|
while (r !== 0n) {
|
|
176
289
|
const q = old_r / r;
|
|
177
290
|
[old_r, r] = [r, old_r - q * r];
|
|
@@ -179,85 +292,6 @@ export class QuarkDashKeyExchange {
|
|
|
179
292
|
}
|
|
180
293
|
return (old_s % m + m) % m;
|
|
181
294
|
}
|
|
182
|
-
/**
|
|
183
|
-
* Generate crypto key pair async
|
|
184
|
-
* @returns {ICryptoKeyPair} Crypto key pair
|
|
185
|
-
* TODO: GPU Calculations
|
|
186
|
-
*/
|
|
187
|
-
async generateKeyPair() {
|
|
188
|
-
return this.generateKeyPairSync();
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Generate crypto key pair sync
|
|
192
|
-
* @returns {ICryptoKeyPair} Crypto key pair
|
|
193
|
-
*/
|
|
194
|
-
generateKeyPairSync() {
|
|
195
|
-
const a = _a.uniformPoly();
|
|
196
|
-
const s = _a.smallPoly();
|
|
197
|
-
const e = _a.smallPoly();
|
|
198
|
-
const as = _a.multiply(a, s);
|
|
199
|
-
const b = new Array(_a.N);
|
|
200
|
-
for (let i = 0; i < _a.N; i++)
|
|
201
|
-
b[i] = (as[i] + e[i]) % _a.Q;
|
|
202
|
-
const pub = QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
|
|
203
|
-
const priv = _a.serializePoly(s);
|
|
204
|
-
return { publicKey: pub, privateKey: priv };
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Encapsulate async
|
|
208
|
-
* @param publicKey {Uint8Array} Public key buffer
|
|
209
|
-
* @returns {Promise<ICryptoEncapsulated>} Encapsulated data
|
|
210
|
-
* TODO: GPU Calculations
|
|
211
|
-
*/
|
|
212
|
-
async encapsulate(publicKey) {
|
|
213
|
-
return this.encapsulateSync(publicKey);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Encapsulate sync
|
|
217
|
-
* @param publicKey {Uint8Array} Public key buffer
|
|
218
|
-
* @returns {ICryptoEncapsulated} Encapsulated data
|
|
219
|
-
*/
|
|
220
|
-
encapsulateSync(publicKey) {
|
|
221
|
-
const aBytes = publicKey.slice(0, _a.N * 2);
|
|
222
|
-
const bBytes = publicKey.slice(_a.N * 2);
|
|
223
|
-
const a = _a.deserializePoly(aBytes);
|
|
224
|
-
const b = _a.deserializePoly(bBytes);
|
|
225
|
-
const sp = _a.smallPoly();
|
|
226
|
-
const ep = _a.smallPoly();
|
|
227
|
-
const uArr = _a.multiply(a, sp);
|
|
228
|
-
for (let i = 0; i < _a.N; i++)
|
|
229
|
-
uArr[i] = (uArr[i] + ep[i]) % _a.Q;
|
|
230
|
-
const w = _a.multiply(b, sp);
|
|
231
|
-
const rawSecret = _a.roundToBits(w);
|
|
232
|
-
const ciphertext = _a.serializePoly(uArr);
|
|
233
|
-
const sharedSecret = this.hashSharedSecret(rawSecret, publicKey, ciphertext);
|
|
234
|
-
return { ciphertext, sharedSecret };
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Decapsulate async
|
|
238
|
-
* @param privateKey {Uint8Array} Private key buffer
|
|
239
|
-
* @param peerPublicKey {Uint8Array} Peer public key
|
|
240
|
-
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
241
|
-
* @returns {Promise<Uint8Array>} Buffer data
|
|
242
|
-
* TODO: GPU Calculations
|
|
243
|
-
*/
|
|
244
|
-
async decapsulate(privateKey, peerPublicKey, ciphertext) {
|
|
245
|
-
return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Decapsulate sync
|
|
249
|
-
* @param privateKey {Uint8Array} Private key buffer
|
|
250
|
-
* @param peerPublicKey{Uint8Array} Peer public key buffer
|
|
251
|
-
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
252
|
-
* @returns {Uint8Array} Buffer data
|
|
253
|
-
*/
|
|
254
|
-
decapsulateSync(privateKey, peerPublicKey, ciphertext) {
|
|
255
|
-
const s = _a.deserializePoly(privateKey);
|
|
256
|
-
const u = _a.deserializePoly(ciphertext);
|
|
257
|
-
const w = _a.multiply(u, s);
|
|
258
|
-
const rawSecret = _a.roundToBits(w);
|
|
259
|
-
return this.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
|
|
260
|
-
}
|
|
261
295
|
/**
|
|
262
296
|
* Hash shared secret
|
|
263
297
|
* @param ss {Uint8Array} Shared secret buffer
|
|
@@ -266,7 +300,7 @@ export class QuarkDashKeyExchange {
|
|
|
266
300
|
* @returns {Uint8Array} Shared secret hash
|
|
267
301
|
* @private
|
|
268
302
|
*/
|
|
269
|
-
hashSharedSecret(ss, publicKey, ciphertext) {
|
|
303
|
+
static hashSharedSecret(ss, publicKey, ciphertext) {
|
|
270
304
|
const data = QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
|
|
271
305
|
return SHA256.hash(data, true);
|
|
272
306
|
}
|
package/dist/esm/ringlwe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
|