Skip to content

SID intrinsic security

AltraMayor edited this page May 1, 2012 · 1 revision

THIS PAGE IS STILL BEING WRITTEN

Autobinding tradeoff

An unbound socket is a socket that has not been associated to a transport protocol's port. System call socket(2) always returns unbound sockets. TCP/IP sockets are expected to automatically binds to a local port number whenever necessary, for example, calling system call connect(2) or sendmsg(2) with an unbound socket will implicitly bind it to a local port number. System call accept(2) goes even further, it returns a new socket that is already bound!

Internet's transport protocols' ports are just numbers, so autobinding is a convenient feature without unwanted side effects. On the other hand, autobinding in XIA happens to be a different animal.

If XIA stack follows TCP/IP and supports autobinding, it establishes a dependency on a given public/private key algorithm. Although it would be an implicit dependency, it is a hard one because applications would not have a choice. Forgoing autobinding avoids this dependency, but it pushes some work to applications that, now, have to handle it on their own.

One may consider changing the socket API in order to pass the kind of public/private key algorithm to use, but it's as cumbersome as requiring an explicit binding.

The Linux XIP prototype is forgoing autobinding in order to be flexible enough to allow experimentation. It worth mentioning that although TCP/IP autobinds sockets, one can call bind(2) to make it explicit.