[tor-dev] getting reliable time-period without a clock

Ivan Markin twim at riseup.net
Mon Jun 20 16:51:27 UTC 2016


Hello Razan,

Razvan Dragomirescu:
> I am working on a smartcard-based hidden service publishing solution and
> since I'm tying the hidden service descriptor to the physical smartcard, I
> want to make sure that the host is not asking the smartcard to generate
> hidden service descriptors in advance, to be used when the card is no
> longer inserted into the host/reader.

Just for the record, currently it's a problem that is going to be solved
by introducing shared random randomness [1].

> The smartcard has no internal clock or time source and it's not supposed to
> trust the host it's inserted into, so I need an external trusted source
> that indicates the current time period. I'm not 100% familiar with the Tor
> protocol (minus the hidden service parts I've been reading about recently),
> so is there any way to get a feel of what the network thinks is the current
> time or the current time-period? An idea would be to fetch the Facebook
> hidden service descriptor or some other trusted 3rd party hidden service at
> a known address and see if the time period given to the smartcard is valid
> for that Facebook descriptor too. An operator could set up  one or more
> trusted hidden services to match against the time-period (inside the
> smartcard) before it signs a given descriptor.

Hmm, you seem to trust untrusted host here since you trust tor daemon
running on the host for clock fetching.
Anyway you're proposing to offload more tor logic onto the smartcard
thus making it trusted host. For me it seems to be unreasonable for such
tiny amount of resources it has. The only functon of a smartcard is to
store private keys in secure manner (do not expose them, only use them).

I think that a possible solution to this is to have some trusted
air-gapped host with the smartcard that generates chunks of signed
descriptors. This trusted host can check if the digest is legit. Then
you can transfer the digests to a "postman" machine which just uploads
these descriptors.
[ha-ha, ironically, I'm currently creating such setup right now. I'm
transferring signed digests via UART]


[1]
https://gitweb.torproject.org/torspec.git/tree/proposals/250-commit-reveal-consensus.txt
--
Healthy bulbs,
Ivan Markin


More information about the tor-dev mailing list