The advent of concurrent coding theory allows omnidirectional communication systems to enjoy a level of keyless jam-resistance comparable to the keyed jam-resistance of traditional spread spectrum systems, all of which rely on shared secrets. To achieve this, concurrent codecs possess the ability to efficiently separate multiple legitimate codewords that have been superimposed. Doing so requires the ability to efficiently discriminate between true codewords and hallucinations (which are codewords or partial codewords that materialize due to the interaction of transmitted codewords, both with each other and with channel noise). Hallucinations that survive the decoding process through the end of the encoded message can be exponentially exterminated by appending checksum bits to the end of the message prior to encoding. While these terminal checksum bits can reduce the final hallucination rate to an arbitrarily low level using a very reasonable number of checksum bits, they do not prevent the computational effort of the receiver from increasing exponentially as the packet mark density rises above fifty percent. However, by embedding checksum bits within the interior of the message body, this exponential blow-up can be postponed to arbitrarily high packet mark densities. This paper presents the theory behind the use of these interstitial checksum bits and analyzes their impact on receiver performance and jamresistance. I. THE NEED FOR KEYLESS JAM-RESISTANCE Wireless networks operating in hostile environments require high degrees of jam-resistance to ensure the availability of network resources. The two traditional means of providing this are highly-directional links or spread spectrum. The exclusive use of directional links in highly dynamic mobile ad hoc networks poses practical challenges that virtually guarantee that omnidirectional links will continue to play a significant role in such networks. However, spread spectrum techniques are only as secure as the shared-secrets (i.e., symmetric keys) upon which their jam-resistance is based; this, in turn, is limited by the classic key distribution problem associated with such keys. Therefore a means is needed of ensuring the availability of the channel in large omnidirectional wireless networks that does not rely on symmetric keys. A seemingly obvious alternative are asymmetric keys since ways of using them to ensure the other classic security goals (i.e., confidentiality, integrity, and authenticity) are well understood. Unfortunately, these all assume and require that data can be successfully exchanged between parties, implying that the communications channel is already available. Consequently, the conclusion is that a means is needed of ensuring the availability of the channel in large omnidirectional wireless networks that does not rely on secret keys at all. This conclusion can be reached independently by considering a different category of application altogether – namely public-access systems. One example is civilian GPS where communications are one-way and where the pool of authorized users is literally every person on the planet. In this case, secret keys of any kind are precluded since, by definition, hostile parties are authorized users with access to the same keys as everyone else. For an unkeyed system – a system with no secret keys – to be jam-resistant, it must be capable of dealing with multiple overlapping transmissions of legitimate waveforms: some from friendly sources and some from hostile sources. This problem is closely related to the field of superimposed codes; historically such codes have been limited to applications in which membership testing is sufficient since, until recently, no efficient means of fully decoding a superimposed transmission has existed. This situation changed fundamentally with the advent of concurrent codes; by definition, these are superimposed codes that can be efficiently decoded. In fact, although only one realized construction of a practical concurrent code presently exists, its decoding complexity is linear-time with respect to the product of the length and number of transmitted messages. II. A BRIEF REVIEW OF CONCURRENT CODING THEORY A detailed explanation of concurrent coding theory is available in [1] and [2], but is not yet widely disseminated, thus a brief summary is provided here. The foundation upon which concurrent codes rest is the decades-old field of superimposed codes[3], of which Bloom filters[4] are an example. The heart of a superimposed code is an encoding algorithm whereby a packet containing several different messages can be constructed by performing a bitwise-OR of the codewords corresponding to the chosen messages. Going the other way, a packet is considered to contain a particular message if it “covers” that message, meaning that all of the marks (i.e., bits that are HI) in the codeword for that message are contained in the packet. Ideally, a packet should only cover those messages used to construct it. In practice, this will only be true up to a point; if too many messages are placed into a packet then it will begin covering additional messages. These additional messages go by a variety of different names; here they are referred to as hallucinations. In general, parameters in the coding and decoding (i.e., codec) algorithms permit the user to control, at least statistically, how many messages can be contained in a packet before hallucinations start to appear. The extreme case of this occurs when the packet consists solely of marks, in which case it covers every possible message and, consequently, contains absolutely no information. Historically, superimposed codes have been used where it is sufficient to ask if a particular message, or small set of messages, is covered by the given packet. This is done by performing a “membership test” which involves verifying that all of the marks in the message being tested are covered by the packet. Membership tests can be performed very efficiently; conceptually they involve nothing more than a bitwise-AND between the codeword and the bitwise complement of the packet with any non-zero result declared a failure. However, if it is necessary to generate a list of all messages covered by the packet referred to here as decoding the packet then an exhaustive search spanning the entire message space is generally needed. As recently as 2003, it has been claimed by at least one researcher [5] that no efficient means of decoding arbitrary codewords from very large code books yet exists. Decoding therefore requires an exponential amount of time as a function of the message length. While acceptable for applications having a sufficiently small message space as well as sufficient time and processing power to perform the work, it is totally infeasible given the message spaces, processing capabilities, and time constraints found in typical communication systems. Thus, for communication systems, a subset of superimposed codes is needed in which the entire list of messages can be extracted from a packet in an “efficient” manner. This requirement is the defining characteristic of a concurrent code compared to the broader set of superimposed codes. III. A REVIEW OF THE BBC ENCODING AND DECODING ALGORITHMS The BBC algorithms are a pair of algorithms that encode and decode data into concurrent message packets. Like concurrent coding theory itself, extensive details about them and their behavior are now in the open literature[1], [2] and only a brief description is provided here. The underlying basis for the BBC algorithms is that m-bits of data are first transformed into a message and this message is then encoded one bit at a time, using progressively longer prefixes, to construct a c-bit codeword. This allows for the efficient decoding of the packet since the messages can be extracted one bit at a time by looking for progressively longer message prefixes and data extracted from the recovered message. The BBC algorithms are a pair of algorithms that encode and decode data to and from concurrent message packets. Like concurrent coding theory itself, extensive details about them and their behavior are now in the open literature[1], [2] and only a brief description is provided here. The underlying basis for the BBC algorithms is that m-bits of data are first transformed into a message which is then encoded, one bit at a time, using progressively longer prefixes to construct a c-bit codeword. This allows for the efficient decoding of the packet since messages can be recovered one bit at a time by looking for progressively longer message prefixes. Finally, the data can be extracted from the recovered message. In practice decoding a packet is most efficiently done using a depth-first search of the message space; however, it is easiest to describe in terms of a breadth first search, as depicted in Algorithm 2. The dominant parameter in the algorithm is the expansion factor, e, which is the ratio of the length of the codeword, c, to the length of the original data, m (i.e., c = me). The expansion factor determines how the output of the hash function is interpreted; specifically, it is interpreted as being one of the c possible locations in the codeword. The expansion factor is roughly equivalent to the processing gain of a traditional spread spectrum system, both in terms of bandwidth spreading and in terms of the degree of jamresistance. One important point to note about concurrent codes – and true of all superimposed codes – is that any one codeword is relatively sparse, consisting almost entirely of spaces with a few pseudorandomly scattered marks. The fraction of a
[1]
Richard C. Singleton,et al.
Nonrandom binary superimposed codes
,
1964,
IEEE Trans. Inf. Theory.
[2]
Burton H. Bloom,et al.
Space/time trade-offs in hash coding with allowable errors
,
1970,
CACM.
[3]
Graham Cormode,et al.
What's hot and what's not: tracking most frequent items dynamically
,
2003,
PODS '03.
[4]
L.C. Baird,et al.
Keyless Jam Resistance
,
2007,
2007 IEEE SMC Information Assurance and Security Workshop.
[5]
L. Baird,et al.
JAM-RESISTANT COMMUNICATION WITHOUT SHARED SECRETS THROUGH THE USE OF CONCURRENT CODES
,
2007
.