Skip to content

Commit 5f3e6b2

Browse files
committed
CRYPTO UPGRADE IN PROGRESS
DO NOT RUN
1 parent e534db9 commit 5f3e6b2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+472
-247
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<a href="uw://universalweb.io">UNIVERSAL WEB</a>
33
</h1>
44
<p align="center">
5-
| <a href="https://github.com/universalweb/Whitepaper">WHITEPAPER (OUTDATED)</a> |
5+
| <a href="https://github.com/universalweb/Whitepaper">WHITEPAPER (OUTDATED - OLD DESIGN)</a> |
66
</p>
77
<hr />
88
<h1 align="center">UW://</h1>
@@ -46,7 +46,7 @@
4646
<li><a href="https://github.com/universalweb/Network/tree/master/udsp/server">UDSP MODULE (CONTAINS SERVER & CLIENT MODULE)</a></li>
4747
<li><a href="https://github.com/universalweb/Network/tree/master/udsp/server">SERVER MODULE (CHECK THE UDSP FOLDER & IMPORTS FOR FULL CODE)</a></li>
4848
<li><a href="https://github.com/universalweb/Network/tree/master/udsp/client">CLIENT MODULE (CHECK THE UDSP FOLDER & IMPORTS FOR FULL CODE)</a></li>
49-
<li><a href="https://github.com/universalweb/Network/tree/master/browser">BROWSER (ourdated)</a></li>
49+
<li><a href="https://github.com/universalweb/Network/tree/master/browser">BROWSER (outdated)</a></li>
5050
<li><a href="https://github.com/universalweb/Network/tree/master/serverApp">EXAMPLE APP (npm run server)</a></li>
5151
<li><a href="https://github.com/universalweb/Network/tree/master/scripts/certificates.js">BUILD DOMAIN & IDENTITY CERTIFICATES THAT ARE ALSO VIAT WALLETS (npm run certificates)</a></li>
5252
<li><a href="https://github.com/universalweb/Network/tree/master/scripts/simulateClient.js">SIMULATE CLIENT REQUEST (npm run simc) (ONLY RUN WHEN DEMO IN A STABLE COMMIT NOT LATEST UNLESS SPECIFIED)</a></li>

UWProfile/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ import {
1212
getEd25519PrivateKey,
1313
getEd25519PublicKey,
1414
getEd5519Signature
15-
} from '../udsp/cryptoMiddleware/signature/dilithium_ed25519.js';
15+
} from '../cryptoMiddleware/signature/dilithium_ed25519.js';
1616
import { keychainGet, keychainSave } from '../udsp/certificate/keychain.js';
1717
import { read, readStructured, write } from '../utilities/file.js';
1818
import {
1919
sign,
2020
signatureKeypair,
2121
verifySignature
22-
} from '../udsp/cryptoMiddleware/signature/dilithium44_ed25519.js';
23-
import { blake3 } from '@noble/hashes/blake3';
22+
} from '../cryptoMiddleware/signature/dilithium44_ed25519.js';
2423
import { currentCertificateVersion } from '../defaults.js';
25-
import { x25519_kyber768_xchacha20 } from '../udsp/cryptoMiddleware/cipherSuite/x25519_Kyber768_xChaCha.js';
24+
import { shake256 } from '@noble/hashes/sha3';
25+
import { x25519_kyber768_xchacha20 } from '../cryptoMiddleware/cipherSuite/x25519_Kyber768_xChaCha.js';
2626
const dirname = currentPath(import.meta);
2727
export class UWProfile {
2828
constructor(config = {}, optionalArg) {
@@ -97,7 +97,7 @@ export class UWProfile {
9797
return verifySignature(signature, message, this.publicKey);
9898
}
9999
async hash(message) {
100-
const hashedMessage = blake3(message);
100+
const hashedMessage = shake256(message);
101101
return hashedMessage;
102102
}
103103
async importFromBinary(data, encryptionKey) {

udsp/cryptoMiddleware/cipherSuite/Kyber768_xChaCha.js renamed to cryptoMiddleware/cipherSuite/Kyber768_xChaCha.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import {
1818
kyber768
1919
} from '../keyExchange/kyber768.js';
2020
import { decrypt, encrypt, encryptionOverhead } from '../encryption/XChaCha.js';
21-
import { extendedHandshakeHeaderRPC, introHeaderRPC } from '../../protocolHeaderRPCs.js';
22-
import { extendedHandshakeRPC, introRPC } from '../../protocolFrameRPCs.js';
21+
import { extendedHandshakeHeaderRPC, introHeaderRPC } from '../../udsp/protocolHeaderRPCs.js';
22+
import { extendedHandshakeRPC, introRPC } from '../../udsp/protocolFrameRPCs.js';
2323
import { ml_kem768 } from '@noble/post-quantum/ml-kem';
2424
import { shake256 } from '@noble/hashes/sha3';
2525
const {
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { decrypt, encrypt, encryptionOverhead } from '../encryption/XChaCha.js';
2+
import { dilithium65 } from '../signature/dilithium65.js';
3+
import { kyber768_x25519 } from '../keyExchange/kyber768_x25519.js';
4+
import { shake256 } from '@noble/hashes/sha3';
5+
import { x25519_kyber768Half_xchacha20 } from './x25519_Kyber768Half_xChaCha.js';
6+
// Kyber-768+x25519 dilithium65+ed25519+ xchacha20 shake256
7+
export const viatCipherSuite = {
8+
name: 'viatCipherSuite',
9+
alias: 'x25519_kyber768_xchacha20_dilithium65_sphincs+',
10+
description: 'Crystals-Kyber768 with XChaCha20 and SHAKE256.',
11+
id: 2,
12+
preferred: true,
13+
speed: 0,
14+
security: 1,
15+
extendedHandshake: true,
16+
};
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Closed source not for private and or corporate use.
2+
import * as defaultCrypto from '#crypto';
3+
import { assign, clear, isBuffer } from '@universalweb/acid';
4+
import {
5+
clientSetSession,
6+
encryptionKeypair as encryptionKeypairX25519,
7+
get25519KeyCopy,
8+
getX25519Key,
9+
serverSetSession,
10+
serverSetSessionAttach,
11+
} from '../keyExchange/x25519_blake3.js';
12+
import { decapsulate, encapsulate } from '../keyExchange/kyber768.js';
13+
import { decrypt, encrypt, encryptionOverhead } from '../encryption/XChaCha.js';
14+
import { kyber768Half_x25519 } from '../keyExchange/kyber768Half_x25519.js';
15+
const {
16+
randomBuffer,
17+
toBase64,
18+
toHex,
19+
combineKeysSHAKE256,
20+
clearBuffers,
21+
clearBuffer,
22+
clearSessionKeys,
23+
clearSessionWithSharedSecret,
24+
} = defaultCrypto;
25+
const {
26+
generateSeed,
27+
keypair,
28+
clientEphemeralKeypair,
29+
serverEphemeralKeypair,
30+
certificateEncryptionKeypair,
31+
ml_kem768,
32+
hash,
33+
getKyberKey
34+
} = kyber768Half_x25519;
35+
export const x25519_kyber768Half_xchacha20 = {
36+
name: 'x25519_kyber768Half_xchacha20',
37+
alias: 'hpqthalf',
38+
description: 'Hybrid Post Quantum Key Exchange using both Crystals-Kyber768 and X25519 with XChaCha20 and SHAKE256 but certification verification only occurs with x25519.',
39+
id: 1,
40+
ml_kem768,
41+
preferred: true,
42+
speed: 0,
43+
security: 1,
44+
compatibility: {
45+
0: true,
46+
1: true
47+
},
48+
clientEphemeralKeypair,
49+
generateSeed,
50+
keypair,
51+
serverEphemeralKeypair,
52+
certificateEncryptionKeypair,
53+
hash,
54+
decrypt,
55+
encrypt,
56+
encryptionOverhead
57+
};
58+
// copyright © Thomas Marchi

udsp/cryptoMiddleware/cipherSuite/x25519_Kyber768_xChaCha.js renamed to cryptoMiddleware/cipherSuite/x25519_Kyber768_xChaCha.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import * as defaultCrypto from '#crypto';
2323
import { assign, clearBuffer, isBuffer } from '@universalweb/acid';
2424
import { decrypt, encrypt, encryptionOverhead } from '../encryption/XChaCha.js';
25-
import { get25519KeyCopy, x25519 } from '../keyExchange/x25519.js';
25+
import { get25519KeyCopy, x25519 } from '../keyExchange/x25519_blake3.js';
2626
import { encapsulate } from '../keyExchange/kyber768.js';
27-
import { extendedHandshakeRPC } from '../../protocolFrameRPCs.js';
27+
import { extendedHandshakeRPC } from '../../udsp/protocolFrameRPCs.js';
2828
import { kyber768_x25519 } from '../keyExchange/kyber768_x25519.js';
2929
import { shake256 } from '@noble/hashes/sha3';
3030
import { x25519_kyber768Half_xchacha20 } from './x25519_Kyber768Half_xChaCha.js';

udsp/cryptoMiddleware/cipherSuite/x25519_xChaCha.js renamed to cryptoMiddleware/cipherSuite/x25519_xChaCha.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
encryptionKeypair,
77
serverSetSessionAttach,
88
x25519
9-
} from '../keyExchange/x25519.js';
9+
} from '../keyExchange/x25519_blake3.js';
1010
import {
1111
createSessionKey,
1212
decrypt,
File renamed without changes.

cryptoMiddleware/hash/blake3.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { blake3 as hash } from '@noble/hashes/blake3';
2+
export const blake3 = {
3+
name: 'blake3',
4+
alias: 'fast',
5+
id: 1,
6+
async hash(source) {
7+
return hash(source);
8+
},
9+
security: 0,
10+
preferred: false
11+
};

cryptoMiddleware/hash/shake256.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { shake256 as hash } from '@noble/hashes/sha3';
2+
export const shake256 = {
3+
name: 'shake256',
4+
alias: 'default',
5+
id: 0,
6+
async hash(source) {
7+
return hash(source);
8+
},
9+
security: 1,
10+
preferred: true
11+
};

0 commit comments

Comments
 (0)