Documente Academic
Documente Profesional
Documente Cultură
INTRODUCTION
Typically, jamming attacks have been considered under an external threat model,
in which the jammer is not a part of the network. Under this model, jamming
strategies include the continuous or random transmission of high-power
interference signals. However, adopting an “always-on” strategy has several
disadvantages. First, the adversary has to expend a significant amount of energy to
jam frequency bands of interest. Second, the continuous presence of unusually high
interference levels makes this type of attacks easy to detect. Conventional anti-
jamming techniques rely extensively on spread-spectrum (SS) communications, or
some form of jamming evasion (e.g., slow frequency hopping, or spatial retreats).
SS techniques provide bit-level protection by spreading bits according to a secret
pseudo-noise (PN) code, known only to the communicating parties. These methods
can only protect wireless transmissions under the external threat model. Potential
disclosure of secrets due to node compromise neutralizes the gains of SS.
1
knowledge for launching selective jamming attacks in which specific messages of
“high importance” are targeted. For example, a jammer can target route-
request/route-reply messages at the routing layer to prevent route discovery, or
target TCP acknowledgments in a TCP session to severely degrade the throughput
of an end-to-end flow. To launch selective jamming attacks, the adversary must be
capable of implementing a “classify-then-jam” strategy before the completion of a
wireless transmission. Such strategy can be actualized either by classifying
transmitted packets using protocol semantics, or by decoding packets on the fly. In
the latter method, the jammer may decode the first few bits of a packet for
recovering useful packet identifiers such as packet type, source and destination
address. After classification, the adversary must induce a sufficient number of bit
errors so that the packet cannot be recovered at the receiver. Selective jamming
requires an intimate knowledge of the physical (PHY) layer, as well as of the
specifics of upper layers.
2
2. LITERATURE REVIEW
3
2.2 Jamming Attacks
The DNS is a hierarchical tree structure whose root node is known as the root
domain. A label in a DNS name directly corresponds with a node in the DNS tree
structure. A label is an alphanumeric string that uniquely identifies that node from
its brothers. Labels are connected together with a dot notation, ".", and a DNS
name containing multiple labels represents its path along the tree to the root.
Labels are written from left to right. Only one zero length label is allowed and is
reserved for the root of the tree. This is commonly referred to as the root zone. Due
to the root label being zero length, all FQDNs end in a dot [RFC 1034].A study
into DoS attacks and defense was done by Raymond and Midkiff (2008). Since
WSNs are used in monitoring medical uses, homeland security, industrial
automation, and military applications, security of WSNs must be guaranteed.
Defeating many threats of DoS attacks on WSNs can be done by encryption and
authentication, but some other techniques still need to be found to prevent from
special DoS attacks, especially Denial of Sleep attacks, which are still critical
threats in WSNs.
4
after channels were jumped, the network resumes communications as normal. In
both scenarios, the amount of packets dropped reduced immediately. The research
concluded that channel jumping will decrease the throughput of the network. Also,
it was easier to detect jamming through intermitted channel jumping. Concluded,
channel jumping was a superior method of combating network interference, rather
than changing network protocols (Jeung, Jeong, and Lim, 2011).The research
concluded that channel jumping will decrease the throughput of the network. Also,
it was easier to detect jamming through intermitted channel jumping. Concluded,
channel jumping was a superior method of combating network interference, rather
than changing network protocols (Jeung, Jeong, and Lim, 2011).
5
strategies include the continuous or random transmission of high-power
interference signals [25], [36]. However, adopting an “always-on” strategy has
several disadvantages. First, the adversary has to expend a significant amount of
energy to jam frequency bands of interest. Second, the continuous presence of
unusually high interference levels makes this type of attacks easy to detect [17],
[36], [37].
6
To launch selective jamming attacks, the adversary must be capable of
implementing a “classify-then-jam” strategy before the completion of a wireless
transmission. Such strategy can be actualized either by classifying transmitted
packets using protocol semantics [1], [33], or by decoding packets on the fly [34].
In the latter method, the jammer may decode the first few bits of a packet for
recovering useful packet identifiers such as packet type, source and destination
address. After classification, the adversary must induce a sufficient number of bit
errors so that the packet cannot be recovered at the receiver [34]. Selective
jamming requires an intimate knowledge of the physical (PHY) layer, as well as of
the specifics of upper layers.
7
3. ANALYSIS AND DESIGN
3.1 ALGORITHMS
Algorithm Description
Fig 1: Algorithm
8
3.2 ARCHITECTURE:
Fig 2: Architecture
Fig 2.1: selective jamming attack and a frame format for wireless network
9
3.3 EXISTING SYSTEM
Jamming attacks are much harder to counter and more security problems. They
have been shown to actualize severe Denial-of-Service (DoS) attacks against
wireless networks. In the simplest form of jamming, the adversary interferes with
the reception of messages by transmitting a continuous jamming signal , or several
short jamming pulses jamming attacks have been considered under an external
threat model, in which the jammer is not part of the network. Under this model,
jamming strategies include the continuous or random transmission of high power
interference signals
In this project, we address the problem of jamming under an internal threat model.
We consider a sophisticated adversary who is aware of network secrets and the
implementation details of network protocols at any layer in the network stack. The
adversary exploits his internal knowledge for launching selective jamming attacks
in which specific messages of “high importance” are targeted. For example, a
jammer can target route-request/route-reply messages at the routing layer to
prevent route discovery, or target TCP acknowledgments in a TCP session to
severely degrade the throughput of an end-to-end flow
10
3.5 DESIGN
Flow Diagram
Architecture
Fig 2: Architecture
11
Use case Diagram
12
Activity Diagram
13
Sequence Diagram
14
4. METHODOLOGY
Methodology is the stage of the project when the theoretical design is turned
out into a working system. Thus it can be considered to be the most critical stage in
achieving a successful new system and in giving the user, confidence that the new
system will work and be effective.
Modules:-
1. Network module
Module Descriptions
1. Network module
We address the problem of preventing the jamming node from classifying m in real
time, thus mitigating J’s ability to perform selective jamming.
The network consists of a collection of nodes connected via wireless links. Nodes
may communicate directly if they are within communication range, or indirectly
15
via multiple hops. Nodes communicate both in unicast mode and broadcast mode.
Communications can be either unencrypted or encrypted. For encrypted broadcast
communications, symmetric keys are shared among all intended receivers. These
keys are established using pre-shared pair wise keys or asymmetric cryptography.
Consider the generic communication system depicted in Fig. At the PHY layer, a
packet m is encoded, interleaved, and modulated before it is transmitted over the
wireless channel. At the receiver, the signal is demodulated, de-interleaved, and
decoded, to recover the original packet m.
Moreover, even if the encryption key of a hiding scheme were to remain secret, the
static portions of a transmitted packet could potentially lead to packet
classification. This is because for computationally-efficient encryption methods
such as block encryption, the encryption of a prefix plaintext with the same key
yields a static cipher text prefix. Hence, an adversary who is aware of the
underlying protocol specifics (structure of the frame) can use the static cipher text
portions of a transmitted packet to classify it.
16
3. Selective Jamming Module
17
Fig 7: SHCS Architecture
The computation overhead of SHCS is one symmetric encryption at the sender and
one symmetric decryption at the receiver. Because the header information is
permuted as a trailer and encrypted, all receivers in the vicinity of a sender must
receive the entire packet and decrypt it, before the packet type and destination can
be determined. However, in wireless protocols such as 802.11, the complete packet
is received at the MAC layer before it is decided if the packet must be discarded or
be further processed. If some parts of the MAC header are deemed not to be useful
information to the jammer, they can remain unencrypted in the header of the
packet, thus avoiding the decryption operation at the receiver.
18
5. Cryptographic Puzzle Hiding Scheme (CPHS)
We present a packet hiding scheme based on cryptographic puzzles. The main idea
behind such puzzles is to force the recipient of a puzzle execute a pre-defined set
of computations before he is able to extract a secret of interest. The time required
for obtaining the solution of a puzzle depends on its hardness and the
computational ability of the solver. The advantage of the puzzle based scheme is
that its security does not rely on the PHY layer parameters. However, it has higher
computation and communication overhead
We consider several puzzle schemes as the basis for CPHS. For each scheme, we
analyze the implementation details which impact security and performance.
Cryptographic puzzles are primitives originally suggested by Merkle as a method
for establishing a secret over an insecure channel. They find a wide range of
applications from preventing DoS attacks to providing broadcast authentication
and key escrow schemes
19
5. RESULTS AND TESTING
Introduction:
The actual working project is materialized in this part where all the work done in
analysis and design part is put onto an appropriate environment. This project is
implemented in java swings and Jcreator.
5.1 RESULTS
5.2.1 Source
Description:
At source, the file is selected and sent it in the form of packets to the destination.
For this first the file is encoded and then it is interleaved and finally sent to the
destination.
20
5.1.2 Destination
Description:
At destination, the file received from the source is de-interleaved and then decoded
to obtain the original file. The result option is used for viewing the file received.
21
5.1.3 Packet Queue
Description:
In the Packet Hiding and Queue, the status information of each packet is
maintained.
22
5.1.4 Result
23
5.2 TESTING
Introduction:
The importance of software testing and its impact on software cannot be under
estimated. Software testing is a fundamental component of software quality
assurance and represents a review of specification, design and coding.
The greater visibility of software systems and the cost associated with software
failure are motivating factors for planning through testing. During testing the
software engineering produces a series of test cases that are used to “rip apart” the
software produced.
TYPES OF TESTS
24
Organization and preparation of functional tests is focused on requirements, key
functions, or special test cases. In addition, systematic coverage pertaining to
identify Business process flows; data fields, predefined processes, and successive
processes must be considered for testing. Before functional testing is complete,
additional tests are identified and the effective value of current tests is determined.
25
5.2.5 Unit Testing
Unit testing involves the design of test cases that validate that the internal
program logic is functioning properly, and that program inputs produce valid
outputs. All decision branches and internal code flow should be validated. It is the
testing of individual software units of the application .it is done after the
completion of an individual unit before integration. This is a structural testing, that
relies on knowledge of its construction and is invasive. Unit tests perform basic
tests at component level and test a specific business process, application, and/or
system configuration. Unit tests ensure that each unique path of a business process
performs accurately to the documented specifications and contains clearly defined
inputs and expected results.
Unit testing is usually conducted as part of a combined code and unit test
phase of the software lifecycle, although it is not uncommon for coding and unit
testing to be conducted as two distinct phases.
Test objectives
All field entries must work properly.
Pages must be activated from the identified link.
The entry screen, messages and responses must not be delayed.
Features to be tested
Verify that the entries are of the correct format
No duplicate entries should be allowed
All links should take the user to the correct page.
26
5.2.6 Integration Testing
Integration tests are designed to test integrated software components to
determine if they actually run as one program. Testing is event driven and is more
concerned with the basic outcome of screens or fields. Integration tests
demonstrate that although the components were individually satisfaction, as shown
by successfully unit testing, the combination of components is correct and
consistent. Integration testing is specifically aimed at exposing the problems that
arise from the combination of components.
Test Results: All the test cases mentioned above passed successfully. No defects
encountered.
Test Results: All the test cases mentioned above passed successfully. No defects
encountered.
27
Channel Encoding:
28
Channel Decoding:
Channel De-Interleaving:
29
Channel Decoding And Packets Received:
30
6. CONCLUSION
31
6.1 Bibliography
Sites Referred:
http://java.sun.com
http://www.sourcefordgde.com
http://www.networkcomputing.com/
http://www.roseindia.com/
http://www.java2s.com/
32
7. APPENDIX
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
33
public String filsep[][];
public String filorg[];
public Source1()
{
super();
initializeComponent();
this.setVisible(true);
}
34
jTextField1.setFont(new Font("Arial",Font.BOLD,12));
jTextArea1 = new JTextArea();
jTextArea1.setFont(new Font("Arial",Font.BOLD,12));
jTextField1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
35
jTextField1_actionPerformed(e);
}
});
jScrollPane1.setViewportView(jTextArea1);
});
});
36
public void actionPerformed(ActionEvent e)
{
jButton3_actionPerformed(e);
}
});
});
});
37
ImageIcon v1 = new ImageIcon(this.getClass().getResource("packethiding.JPG"));
imageLabel1.setIcon(v1);
imageLabel1.setBounds(400,208,487,200);
add(imageLabel1);
imageLabel2.setBounds(0,0,1000,100);
add(imageLabel2);
JLabel imageLabel3 = new JLabel();
ImageIcon v3 = new ImageIcon(this.getClass().getResource("hiding.JPG"));
imageLabel3.setIcon(v3);
imageLabel3.setBounds(360,440,628,258);
add(imageLabel3);
contentPane.setLayout(null);
contentPane.setBackground(new Color(204, 54, 100));
contentPane.setForeground(new Color(51, 51, 51));
//addComponent(contentPane, jLabel1, 285,10,245,18);
addComponent(contentPane, jLabel2, 90,380,184,18);
addComponent(contentPane, jLabel3, 87,100,240,30);
addComponent(contentPane, jLabel4, 27,410,200,20);
addComponent(contentPane, jTextField1, 87,131,240,30);
addComponent(contentPane, jScrollPane1, 17,400,316,303);
//addComponent(contentPane, jProgressBar1, 27,430,600,20);
addComponent(contentPane, jButton1, 376,130,83,32);
addComponent(contentPane, jButton2, 526,130,150,30);
38
addComponent(contentPane, jButton3, 90,200,120,30);
addComponent(contentPane, jButton4, 90,270,120,30);
addComponent(contentPane, jButton5, 90,340,120,30);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
System.out.println("\n*********************File
Loaded********************");
// TODO: Add any handling code here
39
try
{
FileDialog fd=new
FileDialog(this,"Open",FileDialog.LOAD);
fd.show();
FileInputStream fin=new
FileInputStream(fd.getDirectory()+fd.getFile());
jTextField1.setText(fd.getDirectory()+fd.getFile());
File f = new File(fd.getDirectory()+fd.getFile());
fin.read(filebyte);
flen=(int)f.length();
}
catch (Exception er)
{
System.out.println(er);
}
}
40
jTextArea1.append("\n\n Channel Encoding Started");
if (k!=5)
{
String msg="Load The File and then Start Channel Encoding";
JOptionPane op=new JOptionPane();
op.showMessageDialog(op,msg);
}
else
{
k=10;
System.out.println("\n************************Channel
Encoding Started****************");
41
System.out.println(filstr[i]);
try
{
Thread.sleep(2);
}
catch (Exception er)
{
System.out.println("Sleep Disturbed : "+er);
}
}
filsep[i][j]=Character.toString(filstr[i].charAt(j));
}
}
42
Thread.sleep(2);
}
catch (Exception er)
{
System.out.println("Sleep Disturbed : "+er);
}
}
filsep[i][j]=filsep[i][j]+filsep[i][j]+filsep[i][j];
}
}
{
for(j=0;j<filstr[i].length();j++)
{
System.out.print(filsep[i][j]+" ");
}
System.out.print("\n");
try
{
Thread.sleep(2);
}
catch (Exception er)
{
43
System.out.println("Sleep Disturbed : "+er);
}
}
System.out.println(filmer[i]+" ");
try
{
Thread.sleep(2);
}
}System.out.println("\n************************Channel
Encoding Completed****************");
jTextArea1.append("\n\n Channel Encoding Completed");
44
}
for(i=0;i<flen;i++)
{
for(j=0;j<filmer[i].length();j++)
{
pakch[i][j]=filmer[i].charAt(j);
}
}
//Printing the values
for(i=0;i<flen;i++)
{
for(j=0;j<filmer[i].length();j++)
45
{
System.out.print(pakch[i][j]+" ");
}
System.out.print("\n");
try
{
Thread.sleep(2);
}
catch (Exception er)
{
System.out.println("Sleep Disturbed : "+er);
}
}
for(i=0;i<flen;i++)
{
for(j=0;j<1;j++)
{
if((filmer[i].length())==21)
{
shufch[i][0]=pakch[i][5];
shufch[i][1]=pakch[i][12];
shufch[i][2]=pakch[i][11];
shufch[i][3]=pakch[i][9];
shufch[i][4]=pakch[i][6];
shufch[i][5]=pakch[i][10];
shufch[i][6]=pakch[i][8];
shufch[i][7]=pakch[i][20];
shufch[i][8]=pakch[i][0];
shufch[i][9]=pakch[i][4];
shufch[i][10]=pakch[i][1];
shufch[i][11]=pakch[i][19];
46
shufch[i][12]=pakch[i][13];
shufch[i][13]=pakch[i][7];
shufch[i][14]=pakch[i][16];
shufch[i][15]=pakch[i][3];
shufch[i][16]=pakch[i][17];
shufch[i][17]=pakch[i][15];
shufch[i][18]=pakch[i][2];
shufch[i][19]=pakch[i][18];
shufch[i][20]=pakch[i][14];
}
else if((filmer[i].length())==18)
{
shufch[i][0]=pakch[i][5];
shufch[i][1]=pakch[i][12];
shufch[i][2]=pakch[i][11];
shufch[i][3]=pakch[i][9];
shufch[i][4]=pakch[i][6];
shufch[i][5]=pakch[i][10];
shufch[i][6]=pakch[i][8];
shufch[i][7]=pakch[i][0];
shufch[i][8]=pakch[i][4];
shufch[i][9]=pakch[i][1];
shufch[i][10]=pakch[i][15];
shufch[i][11]=pakch[i][7];
shufch[i][12]=pakch[i][16];
shufch[i][13]=pakch[i][3];
shufch[i][14]=pakch[i][17];
shufch[i][15]=pakch[i][13];
shufch[i][16]=pakch[i][2];
shufch[i][17]=pakch[i][14];
}
else
{
47
shufch[i][0]=pakch[i][5];
shufch[i][1]=pakch[i][11];
shufch[i][2]=pakch[i][10];
shufch[i][3]=pakch[i][9];
shufch[i][4]=pakch[i][6];
shufch[i][5]=pakch[i][2];
shufch[i][6]=pakch[i][8];
shufch[i][7]=pakch[i][0];
shufch[i][8]=pakch[i][4];
shufch[i][9]=pakch[i][1];
shufch[i][10]=pakch[i][3];
shufch[i][11]=pakch[i][7];
}
}
}
//Bottle neck
if(flen<=50)
{
l=(int)(Math.random()*3);
for(int a=0;a<=3;a+=l)
{
j=(int)(Math.random()*10);
shufch[a][j]='\0';
}
}
else if(flen>=51&&flen<=210)
{
l=(int)(Math.random()*4);
48
for(int a=31;a<=10;a+=l)
{
j=(int)(Math.random()*10);
shufch[a][j]='\0';
}
}
else if(flen>=251&&flen<=500)
{
l=(int)(Math.random()*4);
for(int a=110;a<=192;a+=l)
{
j=(int)(Math.random()*10);
shufch[a][j]='\0';
}
}
else if(flen>=501&&flen<=750)
{
l=(int)(Math.random()*4);
for(int a=440;a<=501;a+=l)
{
j=(int)(Math.random()*10);
shufch[a][j]='\0';
}
}
else if(flen>=751&&flen<=1000)
{
l=(int)(Math.random()*4);
for(int a=652;a<=751;a+=l)
{
j=(int)(Math.random()*10);
shufch[a][j]='\0';
}
}
49
else
{
l=(int)(Math.random()*4);
for(int a=500;a<=610;a+=l)
{
j=(int)(Math.random()*10);
shufch[a][j]='\0';
}
}
for(i=0;i<flen;i++)
{
filtfr[i]="";
for(j=0;j<filmer[i].length();j++)
50
{
filtfr[i]+=shufch[i][j];
}
}
for(i=0;i<flen;i++)
{
}
System.out.println("\n********************Interleaving
Completed**************");
jTextArea1.append("\n\n Interleaving Process Completed");
}
51
op.showMessageDialog(null, "Complete the Channel Encoding,
Interleaving and then Send the Packets", "Message",
JOptionPane.INFORMATION_MESSAGE, icon);
try
{
Dest1="";
FileInputStream fis=new
FileInputStream("QueueAddress.txt");
while((ch=fis.read())!=-1)
Dest1+=(char)ch;
Dest1.trim();
System.out.println("The Address of Destination :
"+Dest1);
st=new Socket(Dest1,4500);
DataOutputStream dos=new
DataOutputStream(st.getOutputStream());
dos.writeInt(flen);
dos.writeUTF("Dest1");
for(i=0;i<flen;i++)
{
52
dos.writeUTF(filtfr[i]);
}
}
catch (Exception er)
{
System.out.println(er);
}
new Source1();
}
53
7.2 Java Technology
Simple
Architecture neutral
Object oriented
Portable
Distributed
High performance
Interpreted
Multithreaded
Robust
Dynamic
Secure
54
You can think of Java byte codes as the machine code instructions for the
Java Virtual Machine (Java VM). Every Java interpreter, whether it’s a
development tool or a Web browser that can run applets, is an implementation of
the Java VM. Java byte codes help make “write once, run anywhere” possible. You
can compile your program into byte codes on any platform that has a Java
compiler. The byte codes can then be run on any implementation of the Java VM.
That means that as long as a computer has a Java VM, the same program written in
the Java programming language can run on Windows 2000, a Solaris workstation,
or on an iMac.
55
The Java API is a large collection of ready-made software components
that provide many useful capabilities, such as graphical user interface (GUI)
widgets. The Java API is grouped into libraries of related classes and interfaces;
these libraries are known as packages.
Native code is code that after you compile it, the compiled code runs on
a specific hardware platform. As a platform-independent environment, the Java
platform can be a bit slower than native code. However, smart compilers, well-
tuned interpreters, and just-in-time byte code compilers can bring performance
close to that of native code without threatening portability.
Java Technology
However, the Java programming language is not just for writing cute,
entertaining applets for the Web. The general-purpose, high-level Java
programming language is also a powerful software platform. Using the generous
API, you can write many types of programs.
56
An application is a standalone program that runs directly on the Java
platform. A special kind of application known as a server serves and supports
clients on a network. Examples of servers are Web servers, proxy servers, mail
servers, and print servers. Another specialized program is a servlet. A servlet can
almost be thought of as an applet that runs on the server side. Java Servlets are a
popular choice for building interactive web applications, replacing the use of CGI
scripts. Servlets are similar to applets in that they are runtime extensions of
applications. Instead of working in browsers, though, servlets run within Java
Web servers, configuring or tailoring the server.
How does the API support all these kinds of programs? It does so with
packages of software components that provides a wide range of functionality.
Every full implementation of the Java platform gives you the following features:
The essentials: Objects, strings, threads, numbers, input and output,
data structures, system properties, date and time, and so on.
Applets: The set of conventions used by applets.
Networking: URLs, TCP (Transmission Control Protocol), UDP
(User Data gram Protocol) sockets, and IP (Internet Protocol)
addresses.
Internationalization: Help for writing programs that can be localized
for users worldwide. Programs can automatically adapt to specific
locales and be displayed in the appropriate language.
Security: Both low level and high level, including electronic
signatures, public and private key management, access control, and
certificates.
TM
Software components: Known as JavaBeans , can plug into
existing component architectures.
Object serialization: Allows lightweight persistence and
communication via Remote Method Invocation (RMI).
TM
Java Database Connectivity (JDBC ): Provides uniform access to
a wide range of relational databases.
57
The Java platform also has APIs for 2D and 3D graphics, accessibility,
servers, collaboration, telephony, speech, animation, and more. The following
figure depicts what is included in the Java 2 SDK.
58
7.3 Java Swings:
In general, the Swing components are easier to use than similar AWT components.
The top level components provided by Swing are:
1. JApplet - for applets within web pages
2. JDialog - for dialog boxes
3. JFrame - for building applications
All other Swing components derive from the JComponent class. JComponent
provides
Tool tips - little windows with explanations
Pluggable look and feel - as described
Layer management - items within the component
Keyboard action management - Hot keys and so on.
And other facilities like Swing implements an MVC architecture.
59
7.4 Networking
TCP/IP stack
IP datagram’s
60
UDP
TCP
Internet addresses
In order to use a service, you must be able to find it. The Internet uses
an address scheme for machines so that they can be located. The address is a 32 bit
integer which gives the IP address. This encodes a network ID and more
addressing. The network ID falls into various classes according to the size of the
network address.
Network address
Class A uses 8 bits for the network address with 24 bits left over
for other addressing. Class B uses 16 bit network addressing. Class C uses 24 bit
network addressing and class D uses all 32.
61
Subnet address
Host address
8 bits are finally used for host addresses within our subnet. This places
a limit of 256 machines that can be on the subnet.
Total address
62
Port addresses
Sockets
#include <sys/types.h>
#include <sys/socket.h>
int socket(int family, int type, int protocol);
63
8. REFERENCES
64
against connection depletion attacks. In Proceedings of NDSS, pages 151–165,
1999.
[13] G. Lin and G. Noubir. On link layer denial of service in data wireless LANs.
Wireless Communications and Mobile Computing, 5(3):273–284, May 2004.
[14] X. Liu, G. Noubir, and R. Sundaram. Spread: Foiling smart jammers using
multi-layer agility. In Proceedings of INFOCOM, pages 2536– 2540, 2007.
[17] G. Noubir and G. Lin. Low-power DoS attacks in data wireless lans and
countermeasures. Mobile Computing and Communications Review, 7(3):29–30,
2003.
65
Symposium, 2009.
[24] SciEngines. Break DES in less than a single day. http://www. sciengines.com,
2010.
[26] D. Stinson. Something about all or nothing (transforms). Designs, Codes and
Cryptography, 22(2):133–138, 2001.
66
8(9):1221–1234, 2009.
[35] W. Xu, W. Trappe, and Y. Zhang. Anti-jamming timing channels for wireless
networks. InProceedings of WiSec, pages 203–213, 2008.
[36] W. Xu, W. Trappe, Y. Zhang, and T. Wood. The feasibility of launching and
detecting jamming attacks in wireless networks. In Proceedings of MobiHoc,
pages 46–57, 2005.
[37] W. Xu, T. Wood, W. Trappe, and Y. Zhang. Channel surfing and spatial
retreats: defenses against wireless denial of service. In Proceedings of the 3rd
ACM workshop on Wireless security, pages 80–89, 2004.
67