Newer
Older
To enable the plugin at all, add its name to the list of storage plugins in the Tahoe-LAFS configuration
(``tahoe.cfg`` in the relevant node directory)::
[client]
Jean-Paul Calderone
committed
storage.plugins = privatestorageio-zkapauthz-v2
Jean-Paul Calderone
committed
Then configure the plugin as desired in the ``storageclient.plugins.privatestorageio-zkapauthz-v2`` section.
redeemer
~~~~~~~~
This item configures the voucher redeemer the client will use to redeem vouchers submitted to it.
The ``dummy`` value is useful for testing purposes only.
For example::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
issuer-public-key = YXNkYXNkYXNkYXNkYXNkCg==
The value of the ``issuer-public-key`` item is included as-is as the public key in the successful redemption response.
A ``redeemer`` value of ``ristretto`` causes the client to speak Ristretto-flavored PrivacyPass to an issuer server.
In this case, the ``ristretto-issuer-root-url`` item is also required.
For example::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
ristretto-issuer-root-url = https://issuer.example.invalid/
Note that ``ristretto-issuer-root-url`` must agree with whichever storage servers the client will be configured to interact with.
If the values are not the same, the client will decline to use the storage servers.
The client can also be configured with the value of a single pass::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
pass-value = 1048576
The value given here must agree with the value servers use in their configuration or the storage service will be unusable.
The client can also be configured with the number of passes to expect in exchange for one voucher::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
default-token-count = 32768
The value given here must agree with the value the issuer uses in its configuration or redemption may fail.
allowed-public-keys
~~~~~~~~~~~~~~~~~~~
Regardless of which redeemer is selected,
the client must also be configured with the public part of the issuer key pair which it will allow to sign tokens::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
allowed-public-keys = AAAA...,BBBB...,CCCC...
The ``allowed-public-keys`` value is a comma-separated list of encoded public keys.
When tokens are received from an issuer during redemption,
these are the only public keys which will satisfy the redeemer and cause the tokens to be made available to the client to be spent.
Tokens received with any other public key will be sequestered and will *not* be spent until some further action is taken.
lease.crawl-interval.mean
~~~~~~~~~~~~~~~~~~~~~~~~~
This item controls the frequency at which the lease maintenance crawler runs.
The lease maintenance crawler visits all shares and renews their leases if necessary.
The crawler will run at random intervals.
The client will try to make the average (mean) interval between runs equal to this setting.
The value is an integer number of seconds.
For example to run on average every 26 days::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
lease.crawl-interval.mean = 2246400
lease.crawl-interval.range
~~~~~~~~~~~~~~~~~~~~~~~~~~
This item also controls the frequency of lease maintenance crawler runs.
The random intervals between runs have a uniform distribution with this item's value as its range.
The value is an integer number of seconds.
For example to make all intervals fall within a 7 day period::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
lease.crawl-interval.range = 302400
lease.min-time-remaining
~~~~~~~~~~~~~~~~~~~~~~~~
This item controls the lease renewal behavior of the lease maintenance crawler.
It specifies an amount of time left on a lease.
If the crawler encounters a lease with less time left than this then it will renew the lease.
The value is an integer number of seconds.
For example to renew leases on all shares which will expire in less than one week::
Jean-Paul Calderone
committed
[storageclient.plugins.privatestorageio-zkapauthz-v2]
lease.min-time-remaining = 604800
Server
------
To enable the plugin at all, add its name to the list of storage plugins in the Tahoe-LAFS configuration
(``tahoe.cfg`` in the relevant node directory)::
[storage]
Jean-Paul Calderone
committed
plugins = privatestorageio-zkapauthz-v2
Then also configure the Ristretto-flavored PrivacyPass issuer the server will announce to clients::
Jean-Paul Calderone
committed
[storageserver.plugins.privatestorageio-zkapauthz-v2]
ristretto-issuer-root-url = https://issuer.example.invalid/
The value of a single pass in the system can be configured here as well::
Jean-Paul Calderone
committed
[storageserver.plugins.privatestorageio-zkapauthz-v2]
pass-value = 1048576
If no ``pass-value`` is given then a default will be used.
The value given here must agree with the value clients use in their configuration or the storage service will be unusable.
The storage server must also be configured with the path to the Ristretto-flavored PrivacyPass signing key.
To avoid placing secret material in tahoe.cfg,
this configuration is done using a path::
Jean-Paul Calderone
committed
[storageserver.plugins.privatestorageio-zkapauthz-v2]
ristretto-signing-key-path = /path/to/signing.key
The signing key is the keystone secret to the entire system and must be managed with extreme care to prevent unintended disclosure.
If things go well a future version of ZKAPAuthorizer will remove the requirement that the signing key be distributed to storage servers.