the fpx kcpsm module exercise 1 henry fu the layered protocol wrappers exercise: network data...

31
The FPX KCPSM Module Exercise 1 Henry Fu The Layered Protocol Wrappers Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm Henry Fu Washington University Applied Research Lab Supported by: NSF ANI-0096052 and Xilinx Corp. http://www.arl.wustl.edu/arl/projects/fpx/fpx_kcpsm/ [email protected]

Upload: constance-lawson

Post on 29-Dec-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

The FPX KCPSM Module Exercise 1 Henry Fu

The Layered Protocol Wrappers Exercise:Network Data Encryption / Decryption

Using ROT13 Algorithm

Henry Fu

Washington UniversityApplied Research Lab

Supported by: NSF ANI-0096052 and Xilinx Corp.

http://www.arl.wustl.edu/arl/projects/fpx/fpx_kcpsm/[email protected]

The FPX KCPSM Module Exercise 2 Henry Fu

The Layered Protocol Wrappers Exercise

• Network data encryption / decryption using ROT13 algorithm– Rotates characters by 13 places

• ‘A’ ‘N’, ‘M’ ‘Z’, ‘a’ ‘n’, ‘m’ ‘z’

– Encryption Example:• ‘Hello World’ encrypts to ‘Uryyb Jbeyq’

– Decryption Example:• ‘Uryyb Jbeyq’ decrypts to ‘Hello World’

The FPX KCPSM Module Exercise 3 Henry Fu

Approach to the ROT13 Algorithm

• Consider the following four cases– IF (ch >= ‘A’) && (ch <= ‘M’)

• Rotate “Right” ch by 13 characters

– IF (ch >= ‘N’) && (ch <= ‘Z’)• Rotate “Left” ch by 13 characters

– IF (ch >= ‘a’) && (ch <= ‘m’)• Rotate “Right” ch by 13 characters

– IF (ch >= ‘n’) && (ch <= ‘z’)• Rotate “Left” ch by 13 characters

The FPX KCPSM Module Exercise 4 Henry Fu

The ROT13 Module Package

• The ROT13 Module Package– Detailed information on the Internet:

• http://www.arl.wustl.edu/arl/projects/fpx/fpx_kcpsm/

– Download the ROT13 Module Package• Right click on ROT13.tar.gz• Save it to h:\

– Extract the ROT13 Module Package• Open a cygwin window

– cd /cygdrive/h/– gunzip ROT13.tar.gz– tar xvf ROT13.tar

The FPX KCPSM Module Exercise 5 Henry Fu

The ROT13 Module Package (More)

• The ROT13 Module Package includes– ROT13/sim/

• Modelsim simulation directory

– ROT13/syn/• Synplicity, Xinlinx backend synthesis directory

– ROT13/vhdl/ • VHDL source directory

– ROT13/wrappers/• Layered Protocol Wrappers package directory

The FPX KCPSM Module Exercise 6 Henry Fu

The ROT13 Module Framework

• The ROT13 Module (“module.vhd”) is based on the ExampleApp Module– Instantiate the UDP Wrapper– Instantiate the ROT13 Application

(“rot13app.vhd”)• Instantiate the UDPEcho entity• Instantiate four parallel ROT13 entity (“rot13.vhd”)

– D_MOD_IN is 32-bit data bus, but we need to encrypt on a character boundary (8-bit data)

The FPX KCPSM Module Exercise 7 Henry Fu

Overview of the ROT13 Application

32 –

Bit

Dat

a

D_MOD_IN

32 –

Bit

Dat

a

D_OUT_MOD

UD

PE

cho

Ent

ity

ROT13Entity

ROT13Entity

ROT13Entity

ROT13Entity

The FPX KCPSM Module Exercise 8 Henry Fu

The ROT13 Entity

• The ROT13 encrypts / decrypts the characters stored in the UDP payload– Implement a state machine that steps through

the ATM Cells• Looks for the start of the ATM Cell (SOF)• Looks for the start of the UDP Datagram (SOD)• Looks for the start of the UDP Payload• Encrypts the UDP Payload with the ROT13

algorithm when there are valid data• Looks for the end of the ATM Cell (EOF)

The FPX KCPSM Module Exercise 9 Henry Fu

State Diagram of the ROT13 State Machine

IDLE REQ

REQ2UDPPayload

SOF = ‘1’

SOD = ‘1’EOF = ‘1’

DataEn = ‘1’

IF DataEn = ‘1’ then Encrypts / Decrypts

Payload

The FPX KCPSM Module Exercise 10 Henry Fu

VHDL Process of the ROT13 State Machine

type StateType is (Idle, Req1, Req2, UDPPayload); -- statessignal state, nx_state : StateType; -- current and new state

state_machine: process (Reset_l, state, sof_in, dataen_in, eof_in, sod_in, data_in) variable tmp_state : StateType; -- new state variable tmp_data : UNSIGNED (7 downto 0);

begin -- process state_machine

-- default value tmp_state := state; tmp_data := UNSIGNED (data_in);

-- details of state machine goes here

-- set state nx_state <= tmp_state; data_out <= std_logic_vector (tmp_data); dataen_out <= dataen_in; sof_out <= sof_in; eof_out <= eof_in; sod_out <= sod_in;

end process state_machine;

The FPX KCPSM Module Exercise 11 Henry Fu

Simulating the ROT13 Module

• Modelsim is used to simulate the ROT13– Go to the sim directory and create the input file

• cd ROT13/sim/• cp HELLO.DAT INPUT_CELLS.DAT

– Compile the module and start Modelsim• Make compile• Make sim

– In Modelsim main window, type:• do testbench.do• run 3000

The FPX KCPSM Module Exercise 12 Henry Fu

Simulating the ROT13 Module (More)

• The input data coming into the module

SOF indicates the start of an ATM CellSOF indicates the start of an ATM CellSOD indicates the start of an UDP DatagramSOD indicates the start of an UDP DatagramDataEn indicates the data is validDataEn indicates the data is validEOF indicates the end of an ATM CellEOF indicates the end of an ATM CellThe last two valid words are the ATM TrailerThe last two valid words are the ATM Trailer

The FPX KCPSM Module Exercise 13 Henry Fu

Simulating the ROT13 Module (More)

• The output data going out of the module

The UDPPayload has been encrypted / decryptedThe UDPPayload has been encrypted / decrypted

The FPX KCPSM Module Exercise 14 Henry Fu

Error Handling by the Protocol Wrappers

• What happens if the incoming data is not an UDP Datagram?– If the incoming data is an ATM cell

• Frame Processor drops the cell

– If the incoming data is an AAL5 frame• IP Processor drops the cell

– If the incoming data is an IP packet• UDP Processor does not assert the SOD signal

Application only needs to handle the last case

The FPX KCPSM Module Exercise 15 Henry Fu

State Diagram of the New State Machine

IDLE REQ

REQ2UDPPayload

SOF = ‘1’

SOD = ‘1’EOF = ‘1’

DataEn = ‘1’

IF DataEn = ‘1’ then Encrypts / Decrypts

Payload

EOF = ‘1’

The FPX KCPSM Module Exercise 16 Henry Fu

Simulating the new ROT13

• Modify the ROT13 entity to handle this case• Simulate the updated ROT13 entity

– Go to the sim directory and create the IPv4 file• cd ROT13/sim/• cp IPv4.DAT INPUT_CELLS.DAT

– Compile the module in Cygwin Bash Shell• Make compile

– In Modelsim main window, type:• restart -f• run 3000

The FPX KCPSM Module Exercise 17 Henry Fu

Simulating the new ROT13 (More)

• The IPv4 input data coming into the module

SOD is not asserted between SOF and EOFSOD is not asserted between SOF and EOF

The FPX KCPSM Module Exercise 18 Henry Fu

Simulating the new ROT13 (More)

• The IPv4 output data going out of the module

The IP Payload is not modified by the ROT13 entityThe IP Payload is not modified by the ROT13 entity

The FPX KCPSM Module Exercise 19 Henry Fu

Synthesizing the ROT13 Module

• Synplicity is used to synthesize the ROT13– Go to the synthesis directory

• cd ROT13/syn/

– Start Synplicity• make syn

The FPX KCPSM Module Exercise 20 Henry Fu

Synthesizing the ROT13 Module (More)

Files that are included in the project

Files that are included in the project

The FPX KCPSM Module Exercise 21 Henry Fu

Synthesizing the ROT13 Module (More)

Click to change implementation option

Click to change implementation option

The FPX KCPSM Module Exercise 22 Henry Fu

Implementation Options for the ROT13

The FPX KCPSM Module Exercise 23 Henry Fu

Implementation Options for the ROT13

The FPX KCPSM Module Exercise 24 Henry Fu

Implementation Options for the ROT13

The FPX KCPSM Module Exercise 25 Henry Fu

Implementation Options for the ROT13

The FPX KCPSM Module Exercise 26 Henry Fu

Running the Implementation

Click to run implementation

Click to run implementation

The FPX KCPSM Module Exercise 27 Henry Fu

Synthesizing with Xilinx Backend Tools

• Xilinx backend tools are used to perform backend synthesis on the ROT13 module– Go to the implementation directory

• cd ROT13/syn/rad-xcve1000/

Start Xilinx backend script• ./build

The FPX KCPSM Module Exercise 28 Henry Fu

Contents of the Xilinx Backend Script

• Xilinx Backend Script– NGDBUILD

• Translates and merges the various source files of a design into a single "NGD" design database.

– NGD2VHDL• Translates an NGD file (NGDBUILD output) into an

VHDL simulation netlist which is intended for post-synthesis simulation

The FPX KCPSM Module Exercise 29 Henry Fu

Contents of the Xilinx Backend Script

– MAP• Maps the logic gates of the NGD file (NGD output)

into the CLBs and IOBs of the physical device, and writes out this physical design to an NCD file

– PAR• Places and routes a design's logic components

contained within an NCD file (MAP output) based on the layout and timing requirements specified within the Physical Constraints File (PCF)

The FPX KCPSM Module Exercise 30 Henry Fu

Contents of the Xilinx Backend Script

– BITGEN• Creates the configuration (BIT) file based on the

contents of a physical implementation file (NCD) and defines the behavior of the programmed FPGA

ngdbuild -p xcv1000e-7-fg680 rad_loopback -uc rad_loopback.ucf

ngd2vhdl -w rad_loopback.ngd rad_loopback_sim.vhd

map -p xcv1000e-7-fg680 -o top.ncd rad_loopback.ngd rad_loopback.pcf

par -w -ol 2 top.ncd rad_loopback.ncd rad_loopback.pcf

bitgen rad_loopback.ncd -b -l -w -f bitgen.ut

The FPX KCPSM Module Exercise 31 Henry Fu

Conclusion

• In this ROT13 Module Exercise– Implement a network module using the Layered

Protocol Wrappers– Simulate the module using Module– Examine the generated input / output control

signals and various levels of data processing– Handle special error case– Synthesize the ROT13 Module