1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code)

51 483 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code) Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code) Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code) Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code) Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code) Thiết kế bộ mã hóa và giải mã DES trên nền tảng công nghệ FPGA (có code)

Trang 1

Thiết kế bộ mã hóa / giải mã DES trên

nền tảng công nghệ FPGA

Trang 5

CPLD Complex Programmable Logic Device

DES Data Encryption Standard

FIPS

HDL

Federal Information Processing Standards

Hardware Description Language

LSB Least Significant Bit

MSB Most Significant Bit

NBS National Bureau of Standard

NIST National Institute of Standards and TechnologyNSA

PAL

PLA

RTL

National Security Agency

Phase Alternative Line

Programmable Logic Array

Register Transfer Level

UART Universal Asynchronous Receiver - TransmitterVHDL VHSIC hardware description language

VHSIC Very High Speed Integrated Circuit

Trang 6

CHƯƠNG 1 GIỚI THIỆU CHUNG

1.1 Giới thiệu chung

DES là một phương pháp mật mã hóa được FIPS (tiêu chuẩn xử lý thông tinliên bang Hoa Kỳ) chọn làm chuẩn chính thức năm 1976 Sau đó chuẩn này được sửdụng rộng rãi trên thế giới Ngay từ đầu, thuật toán đã gây ra rất nhiều tranh cãi, do

nó bao gồm các thành phần thiết kế mật, độ dài khóa tương đối ngắn, và những nghingờ về cửa sau để cơ quan an ninh quốc gia Hoa Kỳ (NSA) có thể bẻ khóa Do đó,DES đã được các giới nghiên cứu xem xét rất kỹ lưỡng, việc này đã thúc đẩy hiểubiết hiện đại về mật mã khối (block cipher) và các phương pháp thám mã tươngứng

8 năm 1974, NBS đã đưa ra kêu gọi lần thứ hai Lần này công ty IBM đưa ra một đềxuất có thể chấp nhận được Đề xuất này được phát triển trong những năm 1973 -

1974 dựa trên thuật toán đã có từ trước - thuật toán mật mã Lucifer của HorstFeistel

1.3 Hướng nghiên cứu

Mật mã đã được con người sử dụng từ rất lâu đời Các hình thức mật mã sơ khai

đã được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh của Ai Cập cổđại Trải qua hàng nghìn năm lịch sử, mật mã đã được sử dụng rộng rãi ở khắp mọi

Trang 7

nơi trên thế giới từ Đông sang Tây để giữ bí mật cho việc giao lưu thông tin trongcác lĩnh vực hoạt động giữa con người và các quốc gia, đặc biệt trong các lĩnh vựcquân sự, ngoại giao, chính trị Mật mã trước hết là một loại hoạt động thực tiễn, nộidung chính chủ yếu là để giữ bí mật thông tin Vì vậy, tôi đã có ý tưởng làm đề tàinày.

Trang 8

CHƯƠNG 2 TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VERILOG

2.1 Tổng quan về FPGA

2.1.1 Khái niệm về FPGA

FPGA (Field-Programmable Gate Array) là vi mạch dùng cấu trúc mảng phần

tử logic mà người dùng có thể lập trình được Vi mạch FPGA được cấu thành từ các

bộ phận sau:

 Các khối logic cơ bản lập trình được (logic block)

 Hệ thống mạch liên kết lập trình được

 Khối vào/ra (IO Pads)

 Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý

2.1.2 Lịch sử ra đời của FPGA

FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty raXilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tươngđối lớn những phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD.FPGA có khả năng chứa tới từ 100.000 đến vài tỷ cổng logic, trong khi CPLD chỉchứa từ 10.000 đến 100.000 cổng logic, đối với PAL, PLA còn thấp hơn nữa chỉ đạtvài nghìn đến 10.000

2.1.3 Ứng dụng

Ứng dụng của FPGA bao gồm: mật mã học, xử lý tín hiệu số DSP, vũ trụ, quốcphòng, các hệ thống hàng không, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệthống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mô hìnhphần cứng máy tính

2.1.4 Cấu trúc một FPGA

Dưới đây là 1 chip FPGA điển hình và từng khối của nó

Trang 9

Hình 2-1: Cấu trúc tổng thế một FPGA [5]

Khối logic có thể tái cấu hình

Mục đích của việc lập trình khối logic trong FPGA là để cung cấp các tính toán

và những phần tử nhớ cơ bản được sử dụng trong hệ thống số Một phần tử logic cơbản bao gồm một mạch tổ hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch).Ngoài những khối logic cơ bản đó, nhiều chip FPGA hiện nay gồm một hỗn hợp cáckhối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thể, như cáckhối bộ nhớ chuyên dụng, các bộ nhân hoặc các bộ ghép kênh Tất nhiên, cấu hình

bộ nhớ được sử dụng trên tất cả các khối logic để điều khiển những chức năng cụthể của mỗi phần tử bên trong khối đó

Kết nối có thể lập trình

Các liên kết trong một FPGA dùng để liên kết những khối logic và I/O lại vớinhau để tạo thành một thiết kế Bao gồm có các bộ ghép kênh, các transistor vàcổng đệm ba trạng thái Nhìn chung, các transistor và bộ ghép kênh được dùng

Trang 10

trong một cụm logic để kết nối các phần tử logic lại với nhau, trong khi đó cả bađều được dùng cho những cấu trúc định tuyến bên trong FPGA Một số FPGA cungcấp nhiều kết nối đơn giản giữa những khối logic, một số khác cung cấp ít kết nốihơn nên định tuyến cũng phức tạp hơn.

Khối I/O khả trình

I/O cung cấp giao tiếp giữa những khối logic và kiến trúc định tuyến đến nhữngthành phần bên ngoài Một trong các vấn đề quan trọng nhất trong thiết kế kiến trúcI/O là việc lựa chọn những tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽđược hỗ trợ

2.1.5 Ngôn ngữ mô tả phần cứng

Ngôn ngữ mô tả phần cứng bao gồm Verilog, VHDL, Handle-C và System-Cthường được sử dụng để lập trình FPGA Verilog và VHDL phát triển như là mộtchuẩn công nghiệp và hai ngôn ngữ này là phổ biến nhất hiện nay Altera Quartus vàXilinx ISE đều hỗ trợ Verilog và VHDL

2.2 Ngôn ngữ Verilog

2.2.1 Khái niệm

Verilog là một ngôn ngữ mô tả phần cứng được sử dụng trong việc thiết kế các

hệ thống số và các mạch tích hợp

Trang 11

2.2.2 Cấu trúc chương trình dùng ngôn ngữ Verilog module tên chương trình (tên biến I/O);

input [msb: lsb] tên biến;

output [msb: lsb] tên biến;

reg [msb: lsb] tên biến reg;

wire [msb: lsb] tên biến wire;

// Khai báo khối always, hoặc khối initial

… các lệnh …

endmodule

Trang 12

CHƯƠNG 1 THIẾT KẾ HỆ THỐNG2.3 Sơ đồ khối hệ thống

Hình 3-1: Sơ đồ khối hệ thống

2.3.1 Lưu đồ giải thuật truyền TX

Hình 3-2: Lưu đồ giải thuật truyền UART

2.3.2 Lưu đồ giải thuật nhận RX

Trang 13

Hình 3-3: Lưu đồ giải thuật nhận UART

2.4 Mã hoá DES

DES là một mật mã khối đối xứng, hoạt động trên những khối 64 bits sử dụngmột khóa 56 bits DES mã hóa dữ liệu trong các khối 64 bits Đầu vào của thuậttoán là một khối 64 bits và đầu ra từ thuật toán là một khối 64 bits của bản mã sau

16 vòng của các hoạt động giống nhau Chiều dài khóa là 56 bits bằng cách loại bỏ

8 bits chẵn lẻ, bỏ qua 8 bits từ khóa 64 bits nhất định

2.4.1 Các bảng của thuật toán tìm Key

Đầu vào của khóa là 64 bits tiếp đó nghịch đảo hoán vị 1 (PC-1) như bảng 3-1.Sau đó ta được 56 bits sau hoán vị 1 ta đem chia làm 2 nửa C0 (28 bits) và D0 (28bits) rồi đem lần lượt C0 và D0 xoay trái như bảng 3-2 Sau đó thu được C1 (28bits) và D1 (28 bits) từ xoay trái C0 và D0, tiếp theo ghép C1 và D1 lại thành 56

Trang 14

bits sau đó nghịch đảo hoán vị 2 (PC-2) như bảng 3-3 sẽ tìm được Key thứ 1 (48bits), cứ như thế lấy C1 và D1 lần lượt đi xoay trái thu được C2 và D2, rồi ghép C2

và D2 lại thành 56 bits sau đó nghịch hoán vị 2 (PC-2) sẽ tìm được Key thứ 2 (48bits) cứ như thế 14 lần nữa sẽ tìm được đủ 16 Key

Trang 16

Hình 3-6: Waveform nghịch đảo hoán vị 2 (PC-2)

2.4.2 Các bảng của thuật toán mã hóa DES

Đầu vào là 64 bits Plaintext input, sau đó hoán vị ban đầu IP theo bảng 3-4được 64 bits đem chia làm 2, 32 bits đầu là L0 và 32 bits sau là R0, từ R0 có thể tìmđược L1 = R0 theo công thức Li = Ri-1 (0 < i < 17) Từ R0 (32 bits) mở rộng thành

48 bits theo bảng 3-5 Sau đó đem 48 bits mở rộng từ R0 Xor với Key thứ 1 thuđược 48 bits, tiếp theo ta chia 48 bits thu được từ Xor giữa R0 và Key thành 8 phần,

Trang 17

mỗi phần 6 bits, rồi đem 8 thành phần đó lần lượt vào tra bảng 3-6 mỗi thành phần 6bits ngõ vào thu được 4 bits ngõ ra, sau đó ghép 8 thành phần 4 bits sau khi tra bảng3-6 lại thu được 32 bits, đem 32 bits đó đi hoán vị P theo bảng 3-7 thu được 32 bitshoán vị P1 Sau đó R1 (32 bits) được tìm từ việc L0 Xor với 32 bits hoán vị P1 Cứtiếp tục như thế 15 lần nữa sẽ tìm được R16 và L16, sau đó ghép R16 (32 bits) vàL16 (32 bits) thành 64 bits rồi đem nghịch đảo hoán vị ban đầu IP-1 theo bảng 3-8

sẽ thu được ngõ ra Ciphertext output

Trang 18

Bảng 3-4: Hoán vị ban đầu IP [1]

Trang 22

Bảng 3-8: Nghịch đảo hoán vị ban đầu IP-1 [1]

Trang 23

Hình 3-12: Sơ đồ khối mã hóa DES

2.4.4 Sơ đồ nguyên lý tìm Key input

Trang 24

Hình 3-13: Sơ đồ nguyên lý tìm Key input [1]

Trang 25

2.4.5 Sơ đồ nguyên lý mã hoá DES

Hình 3-14: Sơ đồ nguyên lý mã hoá DES [1]

Trang 26

2.4.6 Lưu đồ giải thuật tìm Key input

Hình 3-15: Lưu đồ giải thuật tìm Key

 Mã hóa DES cần tìm ra 16 Key, j = 1 khi ở vòng 1, 2, 9, 16, các vòng cònlại thì j = 2

Trang 27

2.4.7 Lưu đồ giải thuật mã hoá DES

Hình 3-16: Lưu đồ giải thuật mã hoá DES

Trang 28

2.5 Giải mã DES

Thuật toán giải mã hoàn toàn giống với thuật toán mã hóa, ngoại trừ các Keyđược sử dụng theo thứ tự ngược lại Khi các Key mã hóa cho mỗi vòng là K1, K2, , K16, Key giải mã cho mỗi vòng là K16, K15, , K1 Do đó, cùng một thuậttoán làm việc cho cả hai mã hóa và giải mã

2.5.1 Sơ đồ khối

Hình 3-17: Sơ đồ khối giải mã DES

2.5.2 Sơ nguyên lý giải mã DES

Trang 29

Hình 3-18: Sơ đồ nguyên lý giải mã DES [1]

Trang 30

2.5.3 Lưu đồ giải thuật giải mã DES

Hình 3-19: Lưu đồ giải thuật giải mã DES

Trang 31

CHƯƠNG 3 PHƯƠNG THỨC TRUYỀN GIỮA PC VÀ FPGA KIT

3.1 RS232 Cable

RS232 là một chuẩn giao tiếp dùng để truyền thông tin giữa các thiết bị vớikhoảng cách lên đến 20 m Hay còn gọi là truyền UART Thường là một mạch tíchhợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và nhữngthiết bị ngoại vi

3.1.1 Cấu tạo

Các chân của cổng RS232 có thể có 9 chân hoặc 25 chân tùy theo mỗi loại mà

nó có các đặc tính khác nhau, tuy nhiên đa số các các board FPGA hiện nay sử dụngloại 9 chân nhờ các đặc tính đơn giản và dễ sử dụng

Trang 32

• Chân GND: Ground.

Hình 4-2: Cơ chế truyền cổng RS232 [3]

3.1.2 Cơ chế truyền dữ liệu

 Bên truyền truyền bit 0 (bit “start”) trước khi truyền một byte dữ liệu, bênnhận nhờ vậy biết được khi nào dữ liệu truyền đến

 Tiến hành truyền 1 byte dữ liệu

 Sau khi truyền xong một byte dữ liệu thì bên truyền truyền bit 1 (bit stop)

để báo cho bên nhận biết đã kết thúc việc truyền 1 byte

Cấu hình các thông số cần thiết cho việc truyền dữ liệu qua RS232: Như speed(số bit truyền trong 1 giây), data bits (số bit dữ liệu), parity (bit chẵn lẻ), stop bits(số bit stop), flow control

Để bắt đầu cho việc truyền dữ liệu bằng UART, một START bit được gửi đi, sau

đó là các bit dữ liệu và kết thúc quá trình truyền là STOP bit

Hình 4-3: Khung truyền nhận dữ liệu [4]

Trang 33

Khi ở trạng thái chờ mức điện thế ở mức 1 Khi bắt đầu truyền START bit sẽchuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là quá trình truyền dữ liệu sắp xảy ra.Sau START bit là đến các bit dữ liệu D0-D7 Sau khi truyền hết dữ liệu thì đến bitParity để bộ nhận kiểm tra tính đúng đắn của dữ liệu truyền Cuối cùng là STOPbit là 1 báo cho thiết bị rằng các bit đã được gửi xong Thiết bị nhận sẽ tiến hànhkiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu.

 Các thông số cơ bản trong truyền nhận UART:

Baund rate (tốc độ baund): Khoảng thời gian dành cho 1 bit được

truyền Phải được cài đặt giống nhau ở gửi và nhận

Frame (khung truyền): Khung truyền quy định về số bit trong mỗi lần

truyền

Start bit: là bit đầu tiên được truyền trong 1 Frame Báo hiệu cho

thiết bị nhận có một gói dữ liệu sắp được truyền đến Bit bắt buộc

Data: dữ liệu cần truyền Bit có trọng số nhỏ nhất LSB được truyền

trước sau đó đến bit MSB

Parity bit: kiểm tra dữ liệu truyền có đúng không.

Stop bit: là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi

xong Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảotính đúng đắn của dữ liệu Bit bắt buộc

Trang 34

CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG VÀ THỰC TẾ

4.1 Kết quả mô phỏng tìm Key

Trang 35

4.2 Kết quả mô phỏng mã hóa DES

• CIPHER_OUTPUT = fd9cba5d26331f38 như hình 5-2

 Chu kỳ mã hóa được thực trong khoảng 16 xung CLK

Hình 5-2: Kết quả mô phỏng mã hóa DES

Trang 36

4.3 Kết quả mô phỏng giải mã DES

• CIPHER_OUTPUT = 785ac3a4bd0fe12d như hình 5-3

 Chu kỳ mã hóa được thực trong khoảng 16 xung CLK

Hình 5-3: Kết quả mô phỏng giải mã DES

Trang 37

4.4 Kết quả thực tế

Hình 5-4: Kết quả thực tế mã hoá data mã Hex

Hình 5-5: Kết quả thực tế giải mã data mã Hex

Trang 38

Hình 5-6: Kết quả thực tế mã hoá data mã Ascii

Hình 5-7: Kết quả thực tế giải mã data mã Hex

CHƯƠNG 5 KẾT LUẬN

Trang 39

5.1 Kết luận

Tôi đã trình bày hoàn tất các quá trình thực hiện đồ án Sau khi hoàn thành xong

đồ án, tôi hiểu thêm về giải thuật mã hóa và giải mã DES, ngôn ngữ Verilog, phầnmềm Quartus và Matlab Đây là một đề tài có ứng dụng rất thiết trong việc bảo mậtthông tin dữ liệu

 Total logic elements: 8,504/15,408 (55 %)

• Total combinational functions: 8,042/15,408 (52 %)

• Dedicated logic registers: 2,256/15,408 (15 %)

 Total pins: 3/166 (2 %)

5.3.2 Công suất ước tính

Tổng công suất nhiệt tiêu tán: 79.24 mW

5.4 Hướng phát triển

 Mã AES được phát triển từ DES, mã DES là 64 bits đầu vào ra, mã AESnâng cấp lớn hơn thành 128 bits đầu vào ra

 Sử dụng giao thức truyền Ethernet

 Cải thiện tốc độ xử lý và hiệu suất

5.5 Ứng dụng

Ứng dụng trong các văn bản trong giao dịch ngân hàng sử dụng các tiêu chuẩnđược hiệp hội các ngân hàng Mỹ phát triển DES được sử dụng để mã hóa những sốnhận dạng cá nhân (Pins) và các văn bản về tài khoản được máy thu ngân tự độngthực hiện (ATMs)…

5.6 Ưu nhược điểm

Trang 40

Ưu điểm

•Thuật toán được định nghĩa đầy đủ, dễ hiểu

•Mạch hoạt động chính xác tuyệt đối

•Tiết kiệm điện năng

•Tốc độ mã hóa dữ liệu nhanh chóng

Nhược điểm

•Kích cỡ khóa nhỏ nên chưa đủ an toàn

Trang 41

TÀI LIỆU THAM KHẢO

Trang 43

assign key = {rx_data[120:127], rx_data[112:119], rx_data[104:111], rx_data[96:103],

rx_data[88:95], rx_data[80:87], rx_data[72:79], rx_data[64:71]};

always @ (posedge CLOCK_50)

begin

Trang 44

if(temp == 1) begin tx_data <= CIPHER_TEXT[0:7];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==2) begin

tx_data <= CIPHER_TEXT[8:15];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==3) begin

tx_data <= CIPHER_TEXT[16:23];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==4) begin

tx_data <= CIPHER_TEXT[24:31];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==5) begin

tx_data <= CIPHER_TEXT[32:39];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==6) begin

tx_data <= CIPHER_TEXT[40:47];

Trang 45

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==7) begin

tx_data <= CIPHER_TEXT[48:55];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp ==8) begin

else

begin tx_start <= 'b0;

btn_flag <= btn_flag + 1'b1;

tx_data <= 64'h00;

end end//while

if(temp1 == 1) begin tx_data <= PLAIN_TEXT[0:7];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp1 ==2) begin

tx_data <= PLAIN_TEXT[8:15];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp1 ==3) begin

tx_data <= PLAIN_TEXT[16:23];

tx_start <= 'b1;

Trang 46

btn_flag <= 0;

end else if(temp1 ==4) begin

tx_data <= PLAIN_TEXT[24:31];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp1 ==5) begin

tx_data <= PLAIN_TEXT[32:39];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp1 ==6) begin

tx_data <= PLAIN_TEXT[40:47];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp1 ==7) begin

tx_data <= PLAIN_TEXT[48:55];

tx_start <= 'b1;

btn_flag <= 0;

end else if(temp1 ==8) begin

else

begin tx_start <= 'b0;

btn_flag <= btn_flag + 1'b1;

tx_data <= 64'h00;

end end//while

Trang 47

IP ip(PLAIN_TEXT,L0,R0);

KEY_TOP

key(PLAY_STOP,KEY,KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8,KEY9,KEY10,KE Y11,KEY12,KEY13,KEY14,KEY15,KEY16);

Ngày đăng: 27/02/2018, 10:42

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w