On 18/08/14 14:24, Florent Daigniere wrote:
> On Mon, 2014-08-18 at 14:04 +0100, Matthew Toseland wrote:
>> On 17/08/14 18:24, unixninja92 wrote:
>>> Hi all,
>>>
>>> I've gotten a lot done since my last status update. The deadline for
>>> GSoC is tomorrow, and I'm just about done. All I need to do is finish
>>> up writing unit tests for ERAT (like 3 more to go) and CryptBucket. I
>>> also need to write docs for ERAT and CryptSignature, but that should
>>> not take very long.
>>>
>>> This means that all the other classes I've written for the API are
>>> finished and ready for review/merging. This includes: CryptByteBuffer
>>> (used to be called CryptBitSet), Hash, KeyExchange, KeyGenUtils,
>>> MessageAuthCode, and MasterSecret. I've submitted a pull request (#277
>>> [1]) for EncryptedRandomAccessThing and it's dependencies so that toad
>>> can start working with it as soon as possible. This includes
>>> CryptByteBuffer, KeyGenUtils, MasterSecret, and MessageAuthCode.
>>> CryptByteBuffer and MessageAuthCode have not had any review yet, so
>>> please review!
>>>
>>> Hash has been submitted in PR #258 [2]. Once #277 has been merged I
>>> will submit a new pull request that will include KeyExchange,
>>> CryptBucket and CryptSignature.
>>>
>>> Unfortunately I don't have time to get JFKExchange classes working as
>>> part of GSoC, but I will hopefully have time to work on them in the
>>> future.
>>>
>>> So please review #277 and #271(upgrade to BC 1.51)[3] :)
>>>
>>> -Charles
>>>
>>> [1] https://github.com/freenet/fred/pull/277
>>> [2] https://github.com/freenet/fred/pull/258
>>> [3] https://github.com/freenet/fred/pull/271
>> For purge-db4o (new client layer), I need a common API for both simple
>> checksums (CRC32 at the moment) and HMAC's. I have implemented an API
>> and a bunch of tools (ChecksumChecker), but will your API support this
>> more cleanly?
> Doh!
>
> The remit of his GSoC is to work on a crypto API... what you're
> describing is not crypto related. In his crypto api, there will be a
> tool to do MACs which might use HMAC as the underlying primitive... but
> no, don't even think about adding CRC32 to it!
Okay, to summarize a rather long discussion:

The new splitfile code uses CRC32 checksums to check for data corruption
in relatively small chunks of data stored on disk, representing e.g. the
status of a segment. Freenet provides the ability to password-encrypt
downloads. This provides some limited protection, if there is a strong
enough password, if the computer is stolen/seized. It does not provide
any protection if the computer is tampered with covertly between the
owner using it. Hence there is no need to use a stronger HMAC to protect
downloaded data, even if it is encrypted.

In the long run we should consider whether to keep on supporting disk
crypto. The usual argument against is that it contradicts the unix
philosophy; the reason we provide it is that physical attacks, e.g.
seizing somebody's computer, are the most common in practice, especially
in hostile regimes, and people who install Freenet may not necessarily
want to install full disk encryption before using it, or have the
expertise. However, there are secure linux distributions, and nowadays
(even if we fix the key generation function), a strong enough password
would need to be very long. This is possible but it is a lot of effort.
The users who are willing to use a long password are probably also the
users who are willing to do full disk encryption and/or use Tails or
whatever.

See bugs:
https://bugs.freenetproject.org/view.php?id=6292
https://bugs.freenetproject.org/view.php?id=6293
https://bugs.freenetproject.org/view.php?id=6294

For now I will proceed with the splitfile code on the assumption that we
keep the same threat model etc, with the same cheap CRC checksums (and
other verification code), and using unixninja's
EncryptedRandomAccessThing when temporary file encryption is enabled
(i.e. physical security level is LOW or higher).

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to