Commit Graph

4752 Commits

Author SHA1 Message Date
akwizgran 30580f71ec Made erasable keys thread-safe. 2011-11-18 11:05:07 +00:00
akwizgran 6fada9f243 Finer-grained locking in the connection recogniser. 2011-11-17 20:06:19 +00:00
akwizgran 2b45cf0dd1 Accept connections asynchronously. 2011-11-17 18:59:34 +00:00
akwizgran 27a3f6e497 Erase known copies of keys (unit tests ensure we don't end up using
zeroed keys).
2011-11-17 09:54:24 +00:00
akwizgran 66d973bcdd Ignore expected IVs that arrive by the wrong transport.
This prevents an attacker from replaying connections to test whether a
transport endpoint has the same owner as an endpoint on another
transport (eg probing a Bluetooth device to see whether it has the
same owner as a given internet host).
2011-11-17 09:24:28 +00:00
akwizgran 13ebd369e2 The KDF was using CTR mode unsafely.
The data to be encrypted should go in the IV, with a blank
plaintext, so that the ciphertext is equal to the keystream.

Putting the data in the plaintext would have led to different keys
derived from the same source consisting of the same keystream XORed
with different guessable plaintexts. That would have been bad.
2011-11-17 09:01:59 +00:00
akwizgran a144884ecd Erase connection windows if the JVM shuts down cleanly. 2011-11-16 18:41:40 +00:00
akwizgran 031aa53dc7 Minor SQL cleanups. 2011-11-16 18:28:34 +00:00
akwizgran 4da7a685cd Minor code cleanups. 2011-11-16 18:15:32 +00:00
akwizgran 01dd658200 Keep the connection windows in memory. 2011-11-16 17:57:56 +00:00
akwizgran f10512d787 Erase keys after using them. (Copies created by ciphers, etc, may
still exist.)
2011-11-16 16:22:35 +00:00
akwizgran ece03038f4 Unit test for key derivation. 2011-11-16 15:56:54 +00:00
akwizgran a13a1769e5 Unit test for key derivation. 2011-11-16 15:54:17 +00:00
akwizgran f6ae4734ce Forward secrecy.
Each connection's keys are derived from a secret that is erased after
deriving the keys and the secret for the next connection.
2011-11-16 15:35:16 +00:00
akwizgran d02a68edfc Return a connection context for outgoing connections (the secret will
be included in this context in the near future).
2011-11-15 17:47:30 +00:00
akwizgran fabdaf5957 Remove transport ID from connection context. 2011-11-15 17:32:31 +00:00
akwizgran 9220bb3426 Key derivation function based on NIST SP 800-108. 2011-11-15 17:19:11 +00:00
akwizgran 6a15c03e81 Store the incoming and outgoing secrets separately. 2011-11-15 16:07:14 +00:00
akwizgran f41d48eb9f Made secret keys erasable from memory. 2011-11-15 14:43:06 +00:00
akwizgran 23be7fd876 Removed double-encryption of shared secrets. 2011-11-15 14:09:28 +00:00
akwizgran 6cdf68d6cb Initialise all connection windows when a contact is added. 2011-11-15 13:45:57 +00:00
akwizgran df054b1743 Store each connection window slot as a database row.
This is less memory-efficient but necessary for the coming forward
secrecy changes.
2011-11-15 13:08:20 +00:00
akwizgran cf49a28c95 Replaced SHA-256 with SHAd-256 to prevent length extension attacks. 2011-11-15 11:11:31 +00:00
akwizgran effa5c9d8e Throw checked exception if concurrent attempts are made to remove a
contact.
2011-11-15 09:51:51 +00:00
akwizgran 6fd8493d3d Singleton lists and singleton sets aren't equal, so use lists
consistently.
2011-11-15 09:42:21 +00:00
akwizgran 0da94879ef Use aliases for shorter, clearer SQL. 2011-11-15 09:35:07 +00:00
akwizgran 2ad15518a5 Return transports that have no properties. 2011-11-15 09:00:51 +00:00
akwizgran 72be34768b Minor refactoring. 2011-11-14 22:14:52 +00:00
akwizgran 73aa7d14d7 Split transport identifiers into two: TransportId (globally unique)
and TransportIndex (locally unique).

This is the first step towards forward secrecy. Also removed the
Writable interface and unnecessary user-defined types, moved various
constants to ProtocolConstants and renamed some classes.
2011-11-14 21:40:05 +00:00
akwizgran 7d09102c4d Advertise the Bluetooth address if the device is discoverable. 2011-11-08 21:12:08 +00:00
akwizgran b1d08af5a2 Patched Bluecove native code to work around a bug in OS X 10.4. 2011-11-08 21:08:55 +00:00
akwizgran 531889bd1f Log the local Bluetooth address. 2011-11-08 14:49:15 +00:00
akwizgran a14521526f Added Bluecove source for debugging. 2011-11-08 13:30:21 +00:00
akwizgran 4bf558542b Merge branch 'refs/heads/master' of ssh://akwizgran@briar.git.sourceforge.net/gitroot/briar/prototype 2011-11-08 13:18:18 +00:00
akwizgran 2c4c8824d0 Removed references to raw types. 2011-11-08 13:17:28 +00:00
akwizgran 81012406b1 Merge branch 'refs/heads/master' of ssh://akwizgran@briar.git.sourceforge.net/gitroot/briar/prototype 2011-11-08 13:15:05 +00:00
akwizgran ef6f61426f Removed calls to supportsMulticast() for Java 1.5 compatibility. 2011-11-08 13:14:23 +00:00
akwizgran 85e327035c Fixed some comments. 2011-11-08 12:44:42 +00:00
akwizgran 29eb900822 Non-JUnit tests for LAN socket plugin. 2011-10-30 22:39:20 +00:00
akwizgran 1b0bd6961a You can't step in the same Enumeration twice. 2011-10-30 22:35:46 +00:00
akwizgran 7065f54a57 Prefer LAN interfaces for invitations, WAN for connections. 2011-10-30 22:26:23 +00:00
akwizgran d1676781f0 Fixed test expectations. 2011-10-30 21:42:55 +00:00
akwizgran 681e82547e Try to close sockets when an exception is caught. 2011-10-30 21:32:04 +00:00
akwizgran 2c72b1e2e2 If no local address is configured, bind to any address. 2011-10-30 21:31:24 +00:00
akwizgran 517aea3b1f Socket plugin that supports exchanging invitations by LAN multicast
(untested).
2011-10-30 20:50:55 +00:00
akwizgran 42ddfb444e Added a method to check which plugins support invitations. 2011-10-29 09:52:07 +01:00
akwizgran 70c7a9c077 Factored out non-Bluetooth-specific code. 2011-10-29 09:47:19 +01:00
akwizgran 4a9d700e61 Merge branch 'refs/heads/master' of ssh://akwizgran@briar.git.sourceforge.net/gitroot/briar/prototype 2011-10-28 16:48:34 +01:00
akwizgran d3060a3bd6 Class IDs may be in nested lists. Don't ask me why. 2011-10-28 16:46:51 +01:00
akwizgran 559cdfaeba Merged shared code in listener classes and made casts safe. 2011-10-28 15:48:30 +01:00