Top Banner
The FPX KCPSM Module Exercise 1 Henry Fu The FPX KCPSM Module 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]
33

The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

Feb 01, 2016

Download

Documents

marilu alfaro

The FPX KCPSM Module 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]. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 1 Henry Fu

The FPX KCPSM Module 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]

Page 2: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 2 Henry Fu

The FPX KCPSM Module Software 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’

Page 3: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

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

Page 4: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 4 Henry Fu

The FPX KCPSM Module Package

• The FPX KCPSM Module Package includes:– IPTESTBENCH (IP2FAKE)

• Generates fake ATM cells for simulation

– UDPTESTBENCH (UDPTEST, UDPSTR)• Sends and receives UDP program and data packets

– KCPSM Package (KCPSMBLE, PSMDEBUG)• Includes an assembler and a debugger for KCPSM

– FPX KCPSM Module in VHDL• Includes all the VHDL source codes for the module

Page 5: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 5 Henry Fu

The FPX KCPSM Module Package (More)

• The FPX KCPSM Module Package– Detailed information on the Internet:

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

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

– Extract the FPX KCPSM Module Package• Open a cygwin window

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

Page 6: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 6 Henry Fu

The FPX KCPSM Module Package

• The FPX KCPSM Module Package includes:– IPTESTBENCH/

• Includes the source files, input / output files, and comiple script for the IP2FAKE program

• Build: Type ‘make’ in the prompt

– UDPTESTBENCH/• Includes the source fiels, input files, and compile

script for the UDPTEST, UDPSTR program• Build: Type ‘make’ in the prompt

Page 7: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 7 Henry Fu

The FPX KCPSM Module Package (More)

– KCPSM/• Includes the KCPSM package from Xilinx Corp. and

all the VHDL source codes, simulation script, synthesis script, and COREGEN component files for the FPX_KCPSM Module

Page 8: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 8 Henry Fu

Programming the KCPSM

• The KCPSM executes programs stored in the program memory and accesses data stored in the data memory– Program memory stores up to two programs– Each program is limited to 255 instructions– Program should begin at address 0x00– Interrupt input is used to reset the KCPSM– Data memory stores up to four data packets– Each data packet is limited to 255 bytes

Page 9: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 9 Henry Fu

Writing a KCPSM Program

• Access the KCPSM Package– cd KCPSM/package

• Create a subdirectory in the KCPSM package– mkdir ROT13– cp kcpsmble.dat ROT13/– cd ROT13

• Create a KCPSM program using a plain text editor– vi ROT13.PSM

Page 10: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 10 Henry Fu

The KCPSM: Registers and Constants

• The KCPSM has 16 8-bit registers– Used in the program in the “sX” format, where

‘X’ is one of the following:• 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

– Example: s0, sA, sF• The KCPSM supports constants

– Specified in the program in the form of a two-digit hexadecimal value, where they ranges from 0x00 to 0xFF

Page 11: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 11 Henry Fu

The KCPSM: Special Instructions

• The KCPSM provides special instructions used to handle I/O and Interrupt operations:– INPUT sX, sY

• Enables 8-bit data values external to the KCPSM to be transferred to register sX, where the port address is indirectly specified by the contents of sY

– INPUT sX, pp• Enables 8-bit data values external to the KCPSM to

be transferred to register sX, where the port address is directly specified as a two-digit hex constant

Page 12: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 12 Henry Fu

The KCPSM: Special Instructions (More)

– OUTPUT sX, sY• Enables 8-bit data values in register sX to be

transferred to logic external to the KCPSM, where the port address is indirectly specified by the contents of register sY

– OUTPUT sX, pp• Enables 8-bit data values in register sX to be

transferred to logic external to the KCPSM, where the port address is directly specified by the two-digit hex constant

Page 13: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 13 Henry Fu

The KCPSM: Special Instructions (More)

– ENABLE INTERRUPT• Enables future interrupt requests

– DISABLE INTERRUPT• Disables future interrupt requests

– RETURNI ENABLE• Concludes an interrupt service routine and specifies

that future interrupt requests are enabled

– RETURNI DISABLE• Concludes an interrupt service routine and specifies

that future interrupt requests are disabled

Page 14: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 14 Henry Fu

The KCPSM: Instructions

• For detailed explanations of every instruction available to the KCPSM, please refer to the KCPSM App Notes:– “8-bit Microcontroller for Virtex Devices”

• By Ken Chapman of Xilinx Corp.

– Download URL:• http://www.xilinx.com/xapp/xapp213.pdf

Page 15: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 15 Henry Fu

The KCPSM Program Template

• All KCPSM programs should follow a template in order for them to work with the FPX KCPSM Module:– Enables the KCPSM for Interrupt requests– Checks if the data memory is empty– Processes data if data memory is not empty– Signals to the Interface when KCPSM is done– Suspends the KCPSM

Page 16: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 16 Henry Fu

The KCPSM Program Template (More)

;Enable KCPSM Interrupt so that the KCPSM Interface can reset the KCPSM ENABLE INTERRUPT

;Check if there is new data packet in memory;if no data, signal KCPSM Interface that process is done with no write;if there is data, proceed to process dataINIT: INPUT SA,03 ;LOAD M[03] TO SA SUB SA,00 ;COMPARE SA TO 00 JUMP NZ,CHK ;DATA IN MEMORY, PROCEED LOAD SA,00 ;NO DATA, LOAD 00 TO SA, no write, signal done OUTPUT SA,FF ;WRITE 00 TO M[FF], no write, signal done JUMP WAIT ;WAIT

;Assembly code to process dataCHK: ;Assembly code goes here

;Signal KCPSM Interface that process is done, and needs to write it outDONE: LOAD SA,FF ;LOAD FF TO SA, signal done OUTPUT SA,FF ;WRITE FF TO M[FF], write, signal done

;Suspend KCPSM ADDRESS FEWAIT: JUMP WAIT

Page 17: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 17 Henry Fu

Assembling a KCPSM Program

• An assembler called KCPSMBLE is included in the KCPSM package from Xilinx Corp.– KCPSMBLE needs to be executed in a PC– Programs need to be written in plain text– Programs needs to be saved in a DOS 8.3 file

format with a <.PSM> extension– Usage:

• ../KCPSMBLE ROT13.PSM

Page 18: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 18 Henry Fu

Assembling a KCPSM Program (More)

• After KCPSMBLE finishes assembling the program, a coefficient file (ROT13.COE) is generated:– Used by COREGEN to generate a single-port

block RAM and initialize the block RAM content to the machine code of the program

– Used by CONVERT to generate a dual-port block RAM coefficient file for COREGEN and a <INST.TBP> for simulation and lab testing

Page 19: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 19 Henry Fu

Debugging a KCPSM Program

• A debugger called PSMDEBUG is included in the KCPSM package from Xilinx Corp.– PSMDEBUG needs to be executed in a PC– The <.COE> file used must be generated by

KCPSMBLE and must be unmodified– Usage:

• ../PSMDEBUG ROT13.COE

– Detail instructions will appear on screen after PSMDEBUG is executed

Page 20: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 20 Henry Fu

Converting a KCPSM Program

• The <.COE> file generated by KCPSMBLE is targeted to use with single-port block RAM

• The <.COE> file generated by KCPSMBLE contains the machine code of the KCPSM program

Need a program that converts the <.COE> file generated by KCPSMBLE so that it can be used for simulation, synthesis, and testing

Page 21: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 21 Henry Fu

Converting a KCPSM Program (More)

• A C program called CONVERT is used to convert the <.COE> file generated by KCPSMBLE:– Converts the <.COE> file so that it is targeted

to use with dual-port block RAM– Extracts the machine code of the KCPSM from

the <.COE> file so that the program can be used in simulation and can be sent to the FPX KCPSM Module through an UDP packet

Page 22: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 22 Henry Fu

Converting a KCPSM Program (More)

• The CONVERT program– Usage:

• ../CONVERT ROT13.COE

– Two files are generated after the CONVERT program is executed

• <PROGRAM.COE> A coefficient file used by COREGEN to generate a dual-port block RAM

• <INST.TBP> A input file used by the IP2FAKE program to generate simulation inputs and the UDPTEST program to send UDP program packet

Page 23: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 23 Henry Fu

Generating Fake ATM Cells for Simulation

• A C program called IP2FAKE is used to generate fake ATM cells for simulation– Generate a fake ROT13 program packet / cell

using the <INST.TBP> from CONVERT• Usage:

– /cygdrive/h/iptestbench/ip2fake INST.TBP ROT13.DAT

– Generate a fake input data packet / cell• Use a plain text editor to create a HELLO.TBP file

– vi HELLO.TBP

Page 24: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 24 Henry Fu

Contents of the HELLO.TBP File

# demo testbench## comments start with ## commands start with !# parameters are optional## to get familiar with the tools run "ip2raw TESTBENCH.TBP"# and check the outcoming TBRAW.TBP file#

# UDP block, will be prepended by an UDP header# parameter: ip-address, dest-port, src-port!UDP 192.168.0.1 7 640000000000148656C6C6F20576F726C6400

The first word specifies it is a data

packet

The first word specifies it is a data

packet

The second word specifies ‘Hell’

The second word specifies ‘Hell’The third word specifies ‘o Wo’

The third word specifies ‘o Wo’The fourth word

specifies ‘rld’

The fourth word specifies ‘rld’

Page 25: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 25 Henry Fu

Simulating a KCPSM Program

• Modelsim is used to simulate the FPX KCPSM Module– Copy the fake ATM program and data packet /

cell to the simulation directory• cp ROT13.DAT KCPSM/sim/• cp HELLO.DAT KCPSM/sim/

– Go to the design simulation directory• cd KCPSM/sim/

– Create the simulation input file• cat WAIT.DAT ROT13.DAT HELLO.DAT >

INPUT_CELLS.DAT

Page 26: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 26 Henry Fu

Simulating a KCPSM Program (More)

– Compile the module and Start Modelsim• make compile• make sim

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

– In Modelsim wave window• Edit > Select All

– Right click on the selected waves• Radix > Hexadecimal

Page 27: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 27 Henry Fu

Simulating a KCPSM Program (More)

– In Modelsim wave window• Go through the window and see the internal KCPSM

processing details

– In the cygwin window, open the simulation output file

• vi LC_CELLSOUT.DAT

– Scroll through the simulation output file• Each ATM cell is separated by a ‘new_cell’ line• The first to the third to last cells are program packets• The last two cells are the encrypted data packets

Page 28: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 28 Henry Fu

Simulating a KCPSM Program

• The input data cell

• The output data cell

The 1st – 2nd word is the ATM Cell Header

The 1st – 2nd word is the ATM Cell Header

The 3rd – 7th word is the Internet Protocol Header

The 3rd – 7th word is the Internet Protocol Header

The 8th – 9th word is the UDP Header

The 8th – 9th word is the UDP Header

The 10th word specifies it is a data packet

The 10th word specifies it is a data packet

The 11th – 13th word is the data string ‘Hello World’

The 11th – 13th word is the data string ‘Hello World’

The 1st – 2nd word is the ATM Cell Header

The 1st – 2nd word is the ATM Cell Header

The 3rd – 7th word is the Internet Protocol Header

The 3rd – 7th word is the Internet Protocol Header

The 8th – 9th word is the UDP Header

The 8th – 9th word is the UDP Header

The 10th word specifies it is a data packet

The 10th word specifies it is a data packet

The 11th – 13th word is the data string ‘Uryyb Jbeyq’

The 11th – 13th word is the data string ‘Uryyb Jbeyq’

Page 29: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 29 Henry Fu

Testing a KCPSM Program in the Lab

• FTP the .TBP file to fpx– sftp [email protected]– put ROT13.TBP– quit

• Login to fpx using ssh (Secure Shell)– ssh -l yourlogin fpx.arl.wustl.edu– mkdir udptestbench/– cd udptestbench/– cp ~hwf1/udptestbench/* .

Page 30: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 30 Henry Fu

Testing a KCPSM Program in the Lab

• Use UDPTEST to send the ROT13 program packet– ./udptest ../ROT13.TBP

• Use UDPSTR to send the data packet– ./udpstr –h 192.168.10.1 –p 7

Page 31: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 31 Henry Fu

Testing a KCPSM Program in the Lab (More)

• Screenshot of the encryption example:

Page 32: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 32 Henry Fu

Testing a KCPSM Program in the Lab (More)

• Screenshot of the decryption example:

Page 33: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

The FPX KCPSM Module Exercise 33 Henry Fu

Conclusion

• In this FPX KCPSM Module Exercise– Write, assemble, and debug a KCPSM program

using KCPSMBLE, PSMDEBUG– Generate fake program and data ATM cells for

simulation using CONVERT, IP2FAKE– Simulate a KCPSM program using Modelsim– Test a KCPSM program in the lab using

UDPTEST, UDPSTR