incomplete alloy model

This commit is contained in:
Florian Dold 2020-09-25 17:07:38 +05:30
parent af962c90ba
commit f0e633ca09
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B

View File

@ -0,0 +1,52 @@
/*
Simple Alloy4 model for Taler backup&sync.
*/
sig AnastasisMasterSecret { }
// Key pair that each wallet has.
sig WalletDeviceKey { }
sig SyncProvider { }
// Key pair to access the sync account.
sig SyncAccountKey { }
// Abstraction of what's in a sync blob
sig SyncBlobHeader {
// Access matrix, abstracts the DH
// suggested by Christian (https://bugs.gnunet.org/view.php?id=6077#c16959)
// The DH will yield the symmetric blob encryption key for the "inner blob"
access: AnastasisMasterSecret -> WalletDeviceKey,
}
sig SyncAccount {
account_key: SyncAccountKey,
prov: SyncProvider,
hd: SyncBlobHeader,
}
sig WalletState {
device_key: WalletDeviceKey,
anastasis_key: AnastasisMasterSecret,
enrolled: set SyncAccount,
}
fact DifferentDeviceKeys {
all disj w1, w2: WalletState | w1.device_key != w2.device_key
}
fact AnastasisKeyConsistent {
all disj w1, w2: WalletState, s: SyncAccount |
s in (w1.enrolled & w2.enrolled) implies
w1.anastasis_key = w2.anastasis_key
}
fact NoBoringInstances {
#WalletState >= 2
all w: WalletState | #w.enrolled >= 1
}
run {} for 5