mirror of
https://github.com/rosenpass/rosenpass.git
synced 2025-12-18 21:34:37 +03:00
Compare commits
27 Commits
v0.1.1-rc.
...
v0.1.2-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83ef709519 | ||
|
|
f1d06658f6 | ||
|
|
3b1321d33f | ||
|
|
170e0e7088 | ||
|
|
becc8c057a | ||
|
|
1625d94b71 | ||
|
|
a62405190e | ||
|
|
5afa6c19a6 | ||
|
|
ecc1b75b00 | ||
|
|
fe80792873 | ||
|
|
3fc28a0b70 | ||
|
|
97f5d75838 | ||
|
|
aa15872f2b | ||
|
|
1d10e7f036 | ||
|
|
cc01472942 | ||
|
|
4b33938d66 | ||
|
|
f4c351c74b | ||
|
|
12522e90ea | ||
|
|
0995317fa6 | ||
|
|
4b4902cacd | ||
|
|
c389d39fbd | ||
|
|
12933de42b | ||
|
|
9b3f4670af | ||
|
|
8313a61cc7 | ||
|
|
175a9c20af | ||
|
|
a9c13caeaa | ||
|
|
92838250b5 |
23
.github/workflows/nix.yaml
vendored
23
.github/workflows/nix.yaml
vendored
@@ -31,38 +31,37 @@ jobs:
|
|||||||
- name: Generate gitHeadInfo.gin for the whitepaper
|
- name: Generate gitHeadInfo.gin for the whitepaper
|
||||||
if: ${{ matrix.derivation == 'whitepaper' }}
|
if: ${{ matrix.derivation == 'whitepaper' }}
|
||||||
run: ( cd papers && ./tex/gitinfo2.sh && git add gitHeadInfo.gin )
|
run: ( cd papers && ./tex/gitinfo2.sh && git add gitHeadInfo.gin )
|
||||||
- name: Build ${{ matrix.derivation }}
|
- name: Build ${{ matrix.derivation }}@${{ matrix.nix-system }}
|
||||||
run: |
|
run: |
|
||||||
# build the package
|
# build the package
|
||||||
nix build .#packages.${{ matrix.nix-system }}.${{ matrix.derivation }} --print-build-logs
|
nix build .#packages.${{ matrix.nix-system }}.${{ matrix.derivation }} --print-build-logs
|
||||||
|
|
||||||
# copy over the results
|
# copy over the results
|
||||||
if [[ -f $(readlink --canonicalize result ) ]]; then
|
if [[ -f $(readlink --canonicalize result ) ]]; then
|
||||||
mkdir -- ${{ matrix.derivation }}
|
mkdir -- ${{ matrix.derivation }}-${{ matrix.nix-system }}
|
||||||
fi
|
fi
|
||||||
cp --recursive -- $(readlink --canonicalize -- result) ${{ matrix.derivation }}
|
cp --recursive -- $(readlink --canonicalize result) ${{ matrix.derivation }}-${{ matrix.nix-system }}
|
||||||
chmod --recursive -- ug+rw ${{ matrix.derivation }}
|
chmod --recursive ug+rw -- ${{ matrix.derivation }}-${{ matrix.nix-system }}
|
||||||
|
|
||||||
# add version information
|
# add version information
|
||||||
git rev-parse --abbrev-ref HEAD > ${{ matrix.derivation }}/git-version
|
git rev-parse --abbrev-ref HEAD > ${{ matrix.derivation }}-${{ matrix.nix-system }}/git-version
|
||||||
git rev-parse HEAD > ${{ matrix.derivation }}/git-sha
|
git rev-parse HEAD > ${{ matrix.derivation }}-${{ matrix.nix-system }}/git-sha
|
||||||
|
|
||||||
# override the `rp` script to keep compatible with non-nix systems
|
# override the `rp` script to keep compatible with non-nix systems
|
||||||
if [[ -f ${{ matrix.derivation }}/bin/rp ]]
|
if [[ -f ${{ matrix.derivation }}-${{ matrix.nix-system }}/bin/rp ]]; then
|
||||||
then
|
cp --force -- rp ${{ matrix.derivation }}-${{ matrix.nix-system }}/bin/
|
||||||
cp --force rp ${{ matrix.derivation }}/bin/
|
|
||||||
fi
|
fi
|
||||||
- name: Upload build results
|
- name: Upload build results
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ${{ matrix.derivation }}@${{ matrix.nix-system }}
|
name: ${{ matrix.derivation }}-${{ matrix.nix-system }}
|
||||||
path: ${{ matrix.derivation }}
|
path: ${{ matrix.derivation }}-${{ matrix.nix-system }}
|
||||||
- name: Deploy PDF artifacts
|
- name: Deploy PDF artifacts
|
||||||
if: ${{ matrix.derivation == 'whitepaper' && github.ref == 'refs/heads/main' }}
|
if: ${{ matrix.derivation == 'whitepaper' && github.ref == 'refs/heads/main' }}
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
uses: peaceiris/actions-gh-pages@v3
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
publish_dir: whitepaper
|
publish_dir: ${{ matrix.derivation }}-${{ matrix.nix-system }}
|
||||||
publish_branch: papers-pdf
|
publish_branch: papers-pdf
|
||||||
force_orphan: true
|
force_orphan: true
|
||||||
checks:
|
checks:
|
||||||
|
|||||||
49
.github/workflows/release.yaml
vendored
Normal file
49
.github/workflows/release.yaml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: Release
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: ["v*"]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release for ${{ matrix.nix-system }}
|
||||||
|
runs-on:
|
||||||
|
- nix
|
||||||
|
- ${{ matrix.nix-system }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
nix-system:
|
||||||
|
- x86_64-linux
|
||||||
|
# - aarch64-linux
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Build release-package for ${{ matrix.nix-system }}
|
||||||
|
run: nix build .#release-package --print-build-logs
|
||||||
|
- name: Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
draft: ${{ contains(github.ref_name, 'rc') }}
|
||||||
|
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }}
|
||||||
|
files: |
|
||||||
|
result/*
|
||||||
|
|
||||||
|
|
||||||
|
release-darwin:
|
||||||
|
name: Release for x86_64-darwin
|
||||||
|
runs-on:
|
||||||
|
- macos-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: cachix/install-nix-action@v20
|
||||||
|
with:
|
||||||
|
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Build release-package for ${{ matrix.nix-system }}
|
||||||
|
run: nix build .#release-package --print-build-logs
|
||||||
|
- name: Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
draft: ${{ contains(github.ref_name, 'rc') }}
|
||||||
|
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }}
|
||||||
|
files: |
|
||||||
|
result/*
|
||||||
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -865,7 +865,7 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rosenpass"
|
name = "rosenpass"
|
||||||
version = "0.1.1-rc.2"
|
version = "0.1.2-rc.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rosenpass"
|
name = "rosenpass"
|
||||||
version = "0.1.1-rc.2"
|
version = "0.1.2-rc.2"
|
||||||
authors = ["Karolin Varner <karo@cupdev.net>", "wucke13 <wucke13@gmail.com>"]
|
authors = ["Karolin Varner <karo@cupdev.net>", "wucke13 <wucke13@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
|
|||||||
23
flake.nix
23
flake.nix
@@ -132,6 +132,29 @@
|
|||||||
default = rosenpass;
|
default = rosenpass;
|
||||||
rosenpass = rpDerivation pkgs;
|
rosenpass = rpDerivation pkgs;
|
||||||
rosenpass-oci-image = rosenpassOCI "rosenpass";
|
rosenpass-oci-image = rosenpassOCI "rosenpass";
|
||||||
|
|
||||||
|
# derivation for the release
|
||||||
|
release-package =
|
||||||
|
let
|
||||||
|
version = cargoToml.package.version;
|
||||||
|
package =
|
||||||
|
if pkgs.hostPlatform.isLinux then
|
||||||
|
packages.rosenpass-static
|
||||||
|
else packages.rosenpass;
|
||||||
|
oci-image =
|
||||||
|
if pkgs.hostPlatform.isLinux then
|
||||||
|
packages.rosenpass-static-oci-image
|
||||||
|
else packages.rosenpass-oci-image;
|
||||||
|
in
|
||||||
|
pkgs.runCommandNoCC "lace-result" { }
|
||||||
|
''
|
||||||
|
mkdir {bin,$out}
|
||||||
|
cp ${./.}/rp bin/
|
||||||
|
tar -cvf $out/rosenpass-${system}-${version}.tar bin/rp \
|
||||||
|
-C ${package} bin/rosenpass
|
||||||
|
cp ${oci-image} \
|
||||||
|
$out/rosenpass-oci-image-${system}-${version}.tar.gz
|
||||||
|
'';
|
||||||
} // (if pkgs.stdenv.isLinux then rec {
|
} // (if pkgs.stdenv.isLinux then rec {
|
||||||
rosenpass-static = rpDerivation pkgs.pkgsStatic;
|
rosenpass-static = rpDerivation pkgs.pkgsStatic;
|
||||||
rosenpass-static-oci-image = rosenpassOCI "rosenpass-static";
|
rosenpass-static-oci-image = rosenpassOCI "rosenpass-static";
|
||||||
|
|||||||
5
papers/graphics/readme.md
Normal file
5
papers/graphics/readme.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Illustrations
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
The graphics graphics (SVG, PDF, and PNG files) in this folder are released under the CC BY-SA 4.0 license.
|
||||||
@@ -1,218 +0,0 @@
|
|||||||
root: 0 { shape: text }
|
|
||||||
PROTOCOL: "PROTOCOL" { shape: text }
|
|
||||||
|
|
||||||
protocol_comment: 'PROTOCOL = "rosenpass 1 rosenpass.eu aead=chachapoly1305 dprf=blake2s ekem=lightsaber skem=mceliece460896 xaead=xchachapoly1305"' { shape: text}
|
|
||||||
|
|
||||||
ck_init: '"chaining key init"' { shape: text }
|
|
||||||
ck_ext: '"chaining key extract"' { shape: text }
|
|
||||||
|
|
||||||
mac: '"mac"' { shape: text }
|
|
||||||
mac_param: MAC_WIRE_DATA { shape: text }
|
|
||||||
cookie: '"cookie"' { shape: text }
|
|
||||||
cookie_param: COOKIE_WIRE_DATA { shape: text }
|
|
||||||
peer_id: '"peer_id"' { shape: text }
|
|
||||||
peer_id_p1: spkm { shape: text}
|
|
||||||
peer_id_p2: spkt { shape: text}
|
|
||||||
|
|
||||||
root -> PROTOCOL
|
|
||||||
|
|
||||||
PROTOCOL -> mac -> mac_param
|
|
||||||
PROTOCOL -> cookie -> cookie_param
|
|
||||||
PROTOCOL -> peer_id -> peer_id_p1 -> peer_id_p2
|
|
||||||
PROTOCOL -> ck_init
|
|
||||||
PROTOCOL -> ck_ext
|
|
||||||
|
|
||||||
mix: '"mix"' { shape: text }
|
|
||||||
user: '"user"' { shape: text }
|
|
||||||
rp_eu: '"rosenpass.eu"' { shape: text }
|
|
||||||
wg_psk: '"wireguard psk"' { shape: text }
|
|
||||||
hs_enc: '"handshake encryption"' { shape: text }
|
|
||||||
ini_enc: '"initiator session encryption"' { shape: text }
|
|
||||||
res_enc: '"responder session encryption"' { shape: text }
|
|
||||||
|
|
||||||
ck_ext -> mix
|
|
||||||
ck_ext -> user -> rp_eu -> wg_psk
|
|
||||||
ck_ext -> hs_enc
|
|
||||||
ck_ext -> ini_enc
|
|
||||||
ck_ext -> res_enc
|
|
||||||
|
|
||||||
# ck_init -> InitHello.start
|
|
||||||
|
|
||||||
InitHello {
|
|
||||||
start -> d0 \
|
|
||||||
-> m1 -> d1 \
|
|
||||||
-> m2 -> d2
|
|
||||||
|
|
||||||
d2 -> encaps_spkr.m1
|
|
||||||
encaps_spkr.d3 -> encrypt_ltk.m1
|
|
||||||
encaps_spkr.d3 -> encrypt_ltk.key
|
|
||||||
encrypt_ltk.d1 -> encrypt_auth.m1
|
|
||||||
encrypt_ltk.d1 -> encrypt_auth.key
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
m2: "mix" { shape: text }
|
|
||||||
|
|
||||||
start: '"chaining key init"' { shape: text }
|
|
||||||
d0: "spkr" { shape: circle }
|
|
||||||
d1: "sidi" { shape: circle }
|
|
||||||
d2: "epki" { shape: circle }
|
|
||||||
|
|
||||||
encaps_spkr {
|
|
||||||
m1 -> d1 \
|
|
||||||
-> m2 -> d2 \
|
|
||||||
-> m3 -> d3 \
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
m2: "mix" { shape: text }
|
|
||||||
m3: "mix" { shape: text }
|
|
||||||
|
|
||||||
d1: "spkr" { shape: circle }
|
|
||||||
d2: "sctr" { shape: circle }
|
|
||||||
d3: "sptr" { shape: circle }
|
|
||||||
}
|
|
||||||
|
|
||||||
encrypt_ltk {
|
|
||||||
m1 -> d1
|
|
||||||
|
|
||||||
encrypt: 'Aead::enc(peer_id(spkr, spki))'
|
|
||||||
key -> encrypt: {
|
|
||||||
target-arrowhead.label: key
|
|
||||||
}
|
|
||||||
data -> encrypt: {
|
|
||||||
target-arrowhead.label: data
|
|
||||||
}
|
|
||||||
encrypt -> d1: {
|
|
||||||
source-arrowhead.label: output
|
|
||||||
}
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
key: '"handshake encryption"' { shape: text }
|
|
||||||
data: 'ref from "peer id" branch after spkt' { shape: text }
|
|
||||||
d1: "ct" { shape: diamond }
|
|
||||||
}
|
|
||||||
|
|
||||||
encrypt_auth {
|
|
||||||
m1 -> d1
|
|
||||||
|
|
||||||
encrypt: 'Aead::enc(empty())'
|
|
||||||
key -> encrypt: {
|
|
||||||
target-arrowhead.label: key
|
|
||||||
}
|
|
||||||
encrypt -> d1: {
|
|
||||||
source-arrowhead.label: output
|
|
||||||
}
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
key: '"handshake encryption"' { shape: text }
|
|
||||||
d1: "ct" { shape: diamond }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RespHello {
|
|
||||||
start -> d0 -> m1 -> d1
|
|
||||||
d1 -> encaps_epki.m1
|
|
||||||
encaps_epki.d3 -> encaps_spki.m1
|
|
||||||
encaps_spki.d3 -> m2 -> d2
|
|
||||||
d2 -> encrypt_auth.m1
|
|
||||||
|
|
||||||
store_biscuit -> d2
|
|
||||||
"pidi" -> store_biscuit {
|
|
||||||
target-arrowhead.label: "field=peerid"
|
|
||||||
}
|
|
||||||
encaps_spki.d3 -> store_biscuit {
|
|
||||||
target-arrowhead.label: "field=ck"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
m2: "mix" { shape: text }
|
|
||||||
|
|
||||||
start: '(state from InitHello)' { shape: text }
|
|
||||||
d0: "sidr" { shape: circle }
|
|
||||||
d1: "sidi" { shape: circle }
|
|
||||||
d2: "biscuit" { shape: diamond }
|
|
||||||
|
|
||||||
store_biscuit: "store_biscuit()"
|
|
||||||
|
|
||||||
encaps_epki {
|
|
||||||
m1 -> d1 \
|
|
||||||
-> m2 -> d2 \
|
|
||||||
-> m3 -> d3 \
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
m2: "mix" { shape: text }
|
|
||||||
m3: "mix" { shape: text }
|
|
||||||
|
|
||||||
d1: "epki" { shape: circle }
|
|
||||||
d2: "ecti" { shape: circle }
|
|
||||||
d3: "epti" { shape: circle }
|
|
||||||
}
|
|
||||||
|
|
||||||
encaps_spki {
|
|
||||||
m1 -> d1 \
|
|
||||||
-> m2 -> d2 \
|
|
||||||
-> m3 -> d3 \
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
m2: "mix" { shape: text }
|
|
||||||
m3: "mix" { shape: text }
|
|
||||||
|
|
||||||
d1: "spki" { shape: circle }
|
|
||||||
d2: "scti" { shape: circle }
|
|
||||||
d3: "spti" { shape: circle }
|
|
||||||
}
|
|
||||||
|
|
||||||
encrypt_auth {
|
|
||||||
m1 -> d1
|
|
||||||
|
|
||||||
encrypt: 'Aead::enc(empty())'
|
|
||||||
key -> encrypt: {
|
|
||||||
target-arrowhead.label: key
|
|
||||||
}
|
|
||||||
encrypt -> d1: {
|
|
||||||
source-arrowhead.label: output
|
|
||||||
}
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
key: '"handshake encryption"' { shape: text }
|
|
||||||
d1: "ct" { shape: diamond }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
InitConf {
|
|
||||||
start -> d0 -> m1 -> d1 -> encrypt_auth.m1
|
|
||||||
|
|
||||||
encrypt_auth.d1 -> ol1 -> o1
|
|
||||||
encrypt_auth.d1 -> ol2 -> o2
|
|
||||||
encrypt_auth.d1 -> ol3 -> o3
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
|
|
||||||
start: '(state from RespHello)' { shape: text }
|
|
||||||
d0: "sidi" { shape: circle }
|
|
||||||
d1: "sidr" { shape: circle }
|
|
||||||
|
|
||||||
ol1: '"wireguard psk"' { shape: text }
|
|
||||||
ol2: '"initiator session encryption"' { shape: text }
|
|
||||||
ol3: '"responder session encryption"' { shape: text}
|
|
||||||
o2: "" { shape: page }
|
|
||||||
o1: "" { shape: step }
|
|
||||||
o2: "" { shape: step }
|
|
||||||
o3: "" { shape: step }
|
|
||||||
|
|
||||||
encrypt_auth {
|
|
||||||
m1 -> d1
|
|
||||||
|
|
||||||
encrypt: 'Aead::enc(empty())'
|
|
||||||
key -> encrypt: {
|
|
||||||
target-arrowhead.label: key
|
|
||||||
}
|
|
||||||
encrypt -> d1: {
|
|
||||||
source-arrowhead.label: output
|
|
||||||
}
|
|
||||||
|
|
||||||
m1: "mix" { shape: text }
|
|
||||||
key: '"handshake encryption"' { shape: text }
|
|
||||||
d1: "ct" { shape: diamond }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 847 KiB |
@@ -23,3 +23,7 @@ inside `papers/`. The PDF files will be located directly in `papers/`.
|
|||||||
The version info is using gitinfo2. To use the setup one has to run the `papers/tex/gitinfo2.sh` script. In local copies it's also possible to add this as a post-checkout or post-commit hook to keep it automatically up to date.
|
The version info is using gitinfo2. To use the setup one has to run the `papers/tex/gitinfo2.sh` script. In local copies it's also possible to add this as a post-checkout or post-commit hook to keep it automatically up to date.
|
||||||
|
|
||||||
The version information in the footer automatically includes a “draft”. This can be removed by tagging a release version using `\jobname-release`, e.h. `whitepaper-release` for the `whitepaper.md` file.
|
The version information in the footer automatically includes a “draft”. This can be removed by tagging a release version using `\jobname-release`, e.h. `whitepaper-release` for the `whitepaper.md` file.
|
||||||
|
|
||||||
|
## Licensing of assets
|
||||||
|
|
||||||
|
The text files and graphics in this folder (i.e. whitepaper.md, the SVG, PDF, and PNG files in the graphics/ folder) are released under the CC BY-SA 4.0 license.
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
Protocol: {
|
|
||||||
shape: sequence_diagram
|
|
||||||
ini: "Initiator"
|
|
||||||
res: "Responder"
|
|
||||||
ini -> res: "InitHello"
|
|
||||||
res -> ini: "RespHello"
|
|
||||||
ini -> res: "InitConf"
|
|
||||||
res -> ini: "EmptyData"
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope: "Envelope" {
|
|
||||||
shape: class
|
|
||||||
type: "1"
|
|
||||||
'': 3
|
|
||||||
payload: variable
|
|
||||||
mac: 16
|
|
||||||
cookie: 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope.payload -> InitHello
|
|
||||||
InitHello: "InitHello (type=0x81)" {
|
|
||||||
shape: class
|
|
||||||
sidi: 4
|
|
||||||
epki: 800
|
|
||||||
sctr: 188
|
|
||||||
peerid: 32 + 16 = 48
|
|
||||||
auth: 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope.payload -> RespHello
|
|
||||||
RespHello: "RespHello (type=0x82)" {
|
|
||||||
shape: class
|
|
||||||
sidr: 4
|
|
||||||
sidi: 4
|
|
||||||
ecti: 768
|
|
||||||
scti: 188
|
|
||||||
biscuit: 76 + 24 + 16 = 116
|
|
||||||
auth: 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope.payload -> InitConf
|
|
||||||
InitConf: "InitConf (type=0x83)" {
|
|
||||||
shape: class
|
|
||||||
sidi: 4
|
|
||||||
sidr: 4
|
|
||||||
biscuit: 76 + 24 +16 = 116
|
|
||||||
auth: 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope.payload -> EmptyData
|
|
||||||
EmptyData: "EmptyData (type=0x84)" {
|
|
||||||
shape: class
|
|
||||||
sidx: 4
|
|
||||||
ctr: 8
|
|
||||||
auth: 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope.payload -> Data
|
|
||||||
Data: "Data (type=0x85)" {
|
|
||||||
shape: class
|
|
||||||
sidx: 4
|
|
||||||
ctr: 8
|
|
||||||
data: variable + 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Envelope.payload -> CookieReply
|
|
||||||
CookieReply: "CookieReply (type=0x86)" {
|
|
||||||
shape: class
|
|
||||||
sidx: 4
|
|
||||||
nonce: 24
|
|
||||||
cookie: 16 + 16 = 32
|
|
||||||
}
|
|
||||||
|
|
||||||
RespHello.biscuit -> Biscuit
|
|
||||||
InitConf.biscuit -> Biscuit
|
|
||||||
Biscuit: "Biscuit" {
|
|
||||||
shape: class
|
|
||||||
peerid: 32
|
|
||||||
no: 12
|
|
||||||
ck: 32
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 669 KiB |
@@ -130,7 +130,7 @@
|
|||||||
\bool_set_false:N \l_tmpa_bool
|
\bool_set_false:N \l_tmpa_bool
|
||||||
\gitAbbrevHash{}~(\gitAuthorDate
|
\gitAbbrevHash{}~(\gitAuthorDate
|
||||||
\clist_map_inline:Nn \gitTags {
|
\clist_map_inline:Nn \gitTags {
|
||||||
\exp_args:Nx \str_if_eq:nnT {\jobname-release} {test-whitepaper} {\bool_set_true:N \l_tmpa_bool\clist_map_break:}
|
\exp_args:Nx \str_if_eq:nnT {\jobname-release} {whitepaper-release} {\bool_set_true:N \l_tmpa_bool\clist_map_break:}
|
||||||
}
|
}
|
||||||
\bool_if:NF \l_tmpa_bool {~--~draft}
|
\bool_if:NF \l_tmpa_bool {~--~draft}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ abstract: |
|
|||||||
Rosenpass inherits most security properties from Post-Quantum WireGuard (PQWG). The security properties mentioned here are covered by the symbolic analysis in the Rosenpass repository.
|
Rosenpass inherits most security properties from Post-Quantum WireGuard (PQWG). The security properties mentioned here are covered by the symbolic analysis in the Rosenpass repository.
|
||||||
|
|
||||||
## Secrecy
|
## Secrecy
|
||||||
Three key encapsulations using the keypairs `sski`/`spki`, `sskr`/`spkr`, and `eski`/`epki` provide secrecy (see Section \ref{variables} for an introduction of the variables). Their respective ciphertexts are called `scti`, `sctr`, and `ectr` and the resulting keys are called `spti`, `sptr`, `epti`. A single secure encapsulation is sufficient to provide secrecy. We use two different KEMs (Key Encapsulation Methods; see section \ref{skem}): Kyber and Classic McEliece.
|
Three key encapsulations using the keypairs `sski`/`spki`, `sskr`/`spkr`, and `eski`/`epki` provide secrecy (see Section \ref{variables} for an introduction of the variables). Their respective ciphertexts are called `scti`, `sctr`, and `ectr` and the resulting keys are called `spti`, `sptr`, `epti`. A single secure encapsulation is sufficient to provide secrecy. We use two different KEMs (Key Encapsulation Mechanisms; see section \ref{skem}): Kyber and Classic McEliece.
|
||||||
|
|
||||||
## Authenticity
|
## Authenticity
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user