Sim IJskes - QCG wrote:
Peter Firmstone wrote:
Exactly, you cannot provide proxies in the wild without some kind of verification. Thats why i keep returning to things analogous to tunnels/VPNs etc. Because i want a TLS session end to end.
IPSec (VPN) packets cannot be mangled, it breaks the checksum, so the IPSec packet is wrapped in another packet that gets mangled, this provides the encryption end to end, unfortunately it requires low level Kernel support as it's below the TCP/IP Layer, so it isn't available without network admin intervention.

We have to be careful to avoid a man in the middle with our Relay, see below I have some more thoughts.

By providing a transparent packet relay, we can still provide for an end-to-end TLS session, implemented with the javax.net.ssl.SSLEngine.{wrap,unwrap} functions. And conceptually i still see this as tunneled JERI session. And because the session is running end-to-end, the change of a MITM is equivalent to other solutions. The javax.net.ssl.SSLSession. getPeerPrincipal() provides us with the Principals needed for our JERI security.

The JERI Relay is only a public reachable bi-directional mailbox for JERI packets/messages.

Perhaps JR can provide these functions:
  2. Keeps a line of communication open to the private Service
     utilising a heartbeat

This is not needed, a connection to a JR is on a polling basis, initiated from the service (acting as a client from an RPC perspective). (think XMPP, XEP-0124 BOSH).
Ok, so if it doesn't poll (empty packet) within a certain time, it's lease expires?


  3. Read's ByteBuffer's from a Socket Channel, and write it's content
     to another Socket Channel without decrypting it.  If it isn't
     visible to the Relay and the Server and client can verify the JRS
     code, then there is potential there to trust the Relay.

There is no trust of the Relay. End to end TLS session is all the security we need. If you want to relay my service, be my guest. You cannot inspect, you cannot intercept.
That's much simpler, use authentication instead to avoid the MIM.

  4. SSL Handshake: Not sure about how the handshake process from
     actual client to private service will handle the redirect.

There is no redirect. The test used in HTTPS where the CN is compared with the hostname is outside the scope of the TLS protocol IMHO.
Ok, good that solves that problem.

Perhaps the BasicJeriExporter can inspect the IP Address, and if it lies within a private range, check a system property to determine if JR Services are to be utilised?

Can i reserve judgement on that? I cannot oversee the effect right now.
Sure.

JR could be looked up just like any other service, it only executes local code, doesn't need to know the details but can be trusted enough by the Service and client not to peek at the details.

Indeed, only local code, and it may peek at the stream just like any other router.
Ok.

JR probably needs to be identified by a public domain certificate,
although this is a weak defence (DNS cache poisoning), it adds
another layer.

No, no, no. I can not cooporate with an implementation where we include the requirement that one MUST use a domain certificate. We want to free ourselfs of the network admin, but chain ourselfs to a costly certificate authority?

I want to spray the internet with certificates, and cannot find the money to fund that!

Just checking your paying attention ; ) good point, just use authentication! Actually having thought about this a little more, allowing public domain certificates would probably weaken security, as some clients would rely on this flawed mechanism (exposing us to DNS cache poisoning). Even though it checks the box of the marketing manager!

Gr. Sim

Apache river: The Data is the Code! (and vice-versa)

Nice catch phrase. All about getting back to the original concepts around Objects.

Cheers,

Peter.

Reply via email to