Add paper, more minor doc updates
Some checks failed
CI / lint (push) Successful in 1m37s
CI / test-python (push) Successful in 1m45s
CI / test-zig (push) Successful in 1m37s
CI / test-wasm (push) Successful in 1m52s
CI / test (push) Successful in 13m50s
CI / miri (push) Successful in 13m48s
CI / build (push) Successful in 1m10s
CI / fuzz-regression (push) Successful in 9m16s
CI / publish (push) Failing after 55s
CI / publish-python (push) Failing after 1m40s
CI / publish-wasm (push) Failing after 1m49s

Signed-off-by: Kamal Tufekcic <kamal@lo.sh>
This commit is contained in:
Kamal Tufekcic 2026-04-23 08:03:02 +03:00
commit 793b00ff4b
No known key found for this signature in database
198 changed files with 2254 additions and 21 deletions

View file

@ -73,16 +73,16 @@ HybridSig combines Ed25519 (classical) and ML-DSA-65 (post-quantum). Key pairs
satisfy pk = (pk_E, pk_P), sk = (sk_E, sk_P). satisfy pk = (pk_E, pk_P), sk = (sk_E, sk_P).
**Sign(sk, m)** → σ = (σ_E ‖ σ_P): both components computed independently and **Sign(sk, m)** → σ = (σ_E ‖ σ_P): both components computed independently and
concatenated. ML-DSA-65 uses hedged signing via `sign_internal` (FIPS 204 §5.2 / concatenated. ML-DSA-65 uses hedged signing via `sign_internal` (FIPS 204 §6.2 /
Algorithm 2); fresh randomness is mixed per signing operation for Algorithm 7); fresh randomness is mixed per signing operation for
fault-injection resistance. **FIPS 204 compatibility note**: The implementation fault-injection resistance. **FIPS 204 compatibility note**: The implementation
calls `sign_internal` directly — the raw internal signing function with no calls `sign_internal` directly — the raw internal signing function with no
context string or domain prefix. This is structurally incompatible with FIPS 204 context string or domain prefix. This is structurally incompatible with FIPS 204
§6.2 (`ML-DSA.Sign`, which prepends a context-dependent domain separator before §5.2 (`ML-DSA.Sign` / Algorithm 2, which prepends a context-dependent domain
calling `sign_internal`). A FIPS 204 §6.2 verifier expecting the domain-prefixed separator before calling `sign_internal`). A FIPS 204 §5.2 verifier expecting
message format will reject Soliton ML-DSA-65 signatures. A formal model or test the domain-prefixed message format will reject Soliton ML-DSA-65 signatures. A
vector suite must use the `sign_internal` / `verify_internal` interface, not the formal model or test vector suite must use the `sign_internal` /
§6.2 external interface. For adversary models that include fault injection, `verify_internal` interface, not the §5.2 external interface. For adversary models that include fault injection,
hedged signing provides resistance to differential fault analysis that hedged signing provides resistance to differential fault analysis that
deterministic signing does not. **RNG implication**: Every HybridSig.Sign deterministic signing does not. **RNG implication**: Every HybridSig.Sign
invocation consumes randomness (from ML-DSA-65's hedged component). In the §8.2 invocation consumes randomness (from ML-DSA-65's hedged component). In the §8.2

View file

@ -19,7 +19,7 @@ edition = "2024"
rust-version = "1.85" rust-version = "1.85"
license = "AGPL-3.0-only" license = "AGPL-3.0-only"
repository = "https://git.lo.sh/lo/libsoliton" repository = "https://git.lo.sh/lo/libsoliton"
homepage = "https://lo.sh" homepage = "https://git.lo.sh/lo/libsoliton/wiki"
authors = ["LO Contributors"] authors = ["LO Contributors"]
description = "Cryptographic library for the LO protocol" description = "Cryptographic library for the LO protocol"
categories = ["cryptography"] categories = ["cryptography"]

View file

@ -8,6 +8,7 @@ Pure-Rust post-quantum cryptographic library. Provides composite identity keys (
| Document | Description | | Document | Description |
|----------|-------------| |----------|-------------|
| [paper.tex](paper.tex) | Protocol paper — design, security analysis, formal verification, implementation |
| [Abstract.md](Abstract.md) | Security analysis specification — adversary model, theorems, and verification targets for formal modeling | | [Abstract.md](Abstract.md) | Security analysis specification — adversary model, theorems, and verification targets for formal modeling |
| [Specification.md](Specification.md) | Full cryptographic specification (v1) | | [Specification.md](Specification.md) | Full cryptographic specification (v1) |
| [CHEATSHEET.md](CHEATSHEET.md) | API quick reference with types, sizes, and signatures | | [CHEATSHEET.md](CHEATSHEET.md) | API quick reference with types, sizes, and signatures |

View file

@ -16,6 +16,7 @@ fi
HOURS="${1:-8}" HOURS="${1:-8}"
WORKERS="${2:-1}" WORKERS="${2:-1}"
# Change to 3600 for overnight runs, 1 is used for quick local runs
SECONDS_TOTAL=$((HOURS * 1)) SECONDS_TOTAL=$((HOURS * 1))
CORE_DIR="soliton" CORE_DIR="soliton"

2223
soliton.tex Normal file

File diff suppressed because it is too large Load diff

View file

@ -435,7 +435,7 @@ dependencies = [
[[package]] [[package]]
name = "libsoliton" name = "libsoliton"
version = "0.1.0" version = "0.1.1"
dependencies = [ dependencies = [
"argon2", "argon2",
"chacha20poly1305", "chacha20poly1305",

View file

@ -1 +1 @@
d怹°–¹@©Âº@eæTRV§‡ |ç¿ZAÙI/˜jA\ñ ; ­ð Ÿ x<EFBFBD>e)S<13><><EFBFBD><EFBFBD> <EFBFBD>^<14>ب8ٍ<38>v­<>7+ق<><D982>N<EFBFBD><4E><EFBFBD>الحEf<45><66>OJx<4A>}ث6G9G

View file

@ -1 +1 @@
フ q<>vU<76>|J<P n[¦t'ÚÞ·>T…

View file

@ -1 +1 @@
虂@q<>vU暾|J<P遲脮薼濨鷈H眛<04>1<EFBFBD>:┝诘佘-=<3D>B测镟=賞袗熉 願>2<> n[¦t'Ϊή·>T…<1E>ΌR297l8HIΐ)ϋUZGnάB±νΑ*¶Σhι¬ ®K<C2AE>b(Δ δt<11>=P_$4:γg²u

View file

@ -1,2 +1,2 @@
ánDÆky =ø¢ƒí “K/Ë8l8Žâ<C5BD>™ÃÌNýNówû‡ìo…Ÿôa"e!?_Ö Ä<EFBFBD>½ëùÖ8þíÎDûÔ.º¨ø Dtêüº«%Á,«mºZÖÔA¬
^&Mï„]U â7÷c~<V'ìhNà6i:¤‚¹-,t¢Wá¹ fuzz corpus msg X';{H‰Ï EeðÞ?3ëZa*m»°Êf;ºä®]%±ÈdESž‡•htHR³¯Å <C385>fuzz corpus msg

View file

@ -1,2 +1,2 @@
ánDÆky =ø¢ƒí “K/Ë8l8Žâ<C5BD>™ÂÌNýNówû‡ìo…Ÿôa"e!?_Ö Ä<EFBFBD>½ëùÖ8þíÎDûÔ.º¨ø Dtêüº«%À,«mºZÖÔA¬
^&Mï„]U â7÷c~<V'ìhNà6i:¤‚¹-,t¢Wá¹ fuzz corpus msg X';{H‰Ï EeðÞ?3ëZa*m»°Êf;ºä®]%±ÈdESž‡•htHR³¯Å <C385>fuzz corpus msg

View file

@ -0,0 +1 @@
e<EFBFBD>]<5D><>&<26><>e<EFBFBD>]}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&molo

View file

@ -0,0 +1 @@
utĄAAĽąRP‡z˙˙*.˙˙˙=˙˙˙˙˙˙+˙–Čż˙~(—u¨ň0

View file

@ -0,0 +1 @@
#AAј№RzјP‡яяяяяяяяяяяя+я–И@’щ~c—uЁт1

View file

@ -1 +1 @@
ţ+·śš%g<”şŃLWnH{0;­×Ęţ4hďÜ—HΦ‰W­ĄčŮń°°Ú%şĐs^n þ»Æææ8ÃÉ·ê<C2B7>EƒÎ5ñüž9ֹд<ú4 <15>ÎŒ¸b˰)óü–2O" Ëä

View file

@ -435,7 +435,7 @@ dependencies = [
[[package]] [[package]]
name = "libsoliton" name = "libsoliton"
version = "0.1.0" version = "0.1.1"
dependencies = [ dependencies = [
"argon2", "argon2",
"chacha20poly1305", "chacha20poly1305",
@ -473,7 +473,7 @@ dependencies = [
[[package]] [[package]]
name = "libsoliton_capi" name = "libsoliton_capi"
version = "0.1.0" version = "0.1.1"
dependencies = [ dependencies = [
"libsoliton", "libsoliton",
"zeroize", "zeroize",

View file

@ -1 +1 @@
гУ^”Б7x[N`НЏйж<.EУЅ:‡‰КсRП] kр<gJИ\Ѓnу(@гуФp—ЭЛЊГZЄWЖ!QаЮ <EFBFBD>¿…Q׃ז;ֻ׀³RYj<08>"יא5£<35>זֲK!ז?ֺ[¢{*ֵ<>ֹiAֵׁׁ,Gקֶ׀^של~&ט7<37>@¦״j"¿

View file

@ -1 +1 @@
þUëŠ]te ôYº§Ø˜E¾£ö”$<24>ÃSëÀá}ÉȉüÀ>Ú†VK%¸¹ôD †jqÄ|Dö þaj¹<¢/“q˜ò:êÌÑDå6. äJD4̈<>K×ïù·Óܾ~§A<C2A7>*Ú@wCe<E28099>ë