The February 2006 ;login: features Single Packet Authorization with Fwknop (.pdf, USENIX members only until Feb 07) by Mike Rash, who I was lucky to meet at ShmooCon 2006. This is a great concept, illustrated by the following article excerpts.
So far we have discussed the two most important ways that port knocking is used to enhance security: the passive communication of authentication information, and the server-side use of a packet filter to intercept all attempts to connect with a real server that are not associated with a knock sequence. These two features are also used in Single Packet Authorization to increase security, but this is where the similarities between port knocking and SPA abruptly end.
In port knocking schemes, the communication of information within packet headers, as opposed to the packet payload, severely limits the amount of data that can stilll be transferred effectively...
If two bytes of information were all that were required to communicate the desired access to a knock server, this would not be a significant issue, but it is not enough to simply create a mapping between a knock sequence (however short) and opening a port. We also want our messages to resist decoding by an attacker who may be in the enviable position of being able to monitor every packet emanating from the knock client.
This requirement can be satisfied by using an encryption algorithm, but even a symmetric block cipher with a reasonable key size of, say, 128 bits forces at least eight packets to be sent at two bytes per packet.
In other words, SPA is better than port knocking. Why?
Single Packet Authorization has no such limitation, because the application payload portion of packets is used to send authentication data. The result is that up to the minimum MTU number of bytes of all networks between the client and server can be sent in a single message, and no cumbersome time delays need to be introduced. Fwknop uses this relatively large data size to communicate not only detailed access requirements in SPA messages, but also entire commands to be executed by the fwknop SPA server.
Of course, all SPA messages are encrypted, and the algorithm currently supported by fwknop is the symmetric Rijndael cipher, but the upcoming 0.9.6 release will also support asymmetric encryption via GPG key rings and associated asymmetric cipher(s)...
The ability to send more than just a few bytes of data within an SPA message is the essential innovation that really makes this possible.
That is awesome. Instead of using a port number for communication, use an entire encrypted packet payload.
Port knocking is potentially "louder" than SPA, too.
Finally, to an observer of network traffic, a port knock sequence is indistinguishable from a port scan-- that is, it is a series of connections to various port numbers from a single IP address. Many network intrusion detection systems have the capability of detecting port scans, and have no way to know that a port knock sequence is not an attempt to enumerate the set of services that are accessible from the IP address of the client system. ..
By contrast, Single Packet Authorization does not create a significant enough network footprint to generate an IDS port scan alert.
I think this is really cool. I wish a FreeBSD implementation existed. :)