Professional Documents
Culture Documents
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------
ĐỒ ÁN MÔN HỌC
MÃ HÓA IP SECURITY
CHUẨN MÃ HÓA SHA1
LỜI CẢM ƠN
Để hoàn thành nhiệm vụ đồ án môn học được giao, lời đầu tiên em xin cảm ơn
chân thành đến toàn thể thầy cô trong trường Đại học Bách Khoa TP.HCM nói chung
và các thầy cô trong khoa Điện-Điện Tử, bộ môn Điện Tử nói riêng, những người đã
tận tình hướng dẫn, dạy dỗ và trang bị cho chúng em những kiến thức nền tảng bổ ích
trong suốt những năm vừa qua.
Đặc biệt em xin chân thành gửi lời cảm ơn sâu sắc đến thầy PGS-TS Hoàng
Trang, người đã tận tình hướng dẫn, trực tiếp chỉ bảo và tạo mọi điều kiện giúp đỡ em
trong suốt quá trình làm đồ án môn học.
Cuối cùng em xin gửi lời cảm ơn đến gia đình, bạn bè đã luôn luôn ủng hộ đồng
hành cùng với em trong suốt chặng đường học tập và nghiên cứu tại Đại học Bách
Khoa vừa qua.
TÓM TẮT ĐỒ ÁN
Báo cáo này trình bày phương pháp Mã hóa IP sử dụng Giải thuật hàm băm (Hash
Function) với mã nguồn SHA1 trên công cụ hỗ trợ Quartus II và ModelSim ALTERA. Đưa
ra lưu đồ giải thuật cũng như Schematic cho bộ mã hóa. Báo cáo gồm có 4 phần như sau:
Phần 1: Giới thiệu về IP Security và tầm quan trọng trong thực tiễn.
Phần 3: Giới thiệu về công cụ hỗ trợ lập trình Quatus II và công cụ mô phỏng
ModelSim ALTERA.
Phần 5: Mô phỏng chương trình, dạng sóng, đánh giá kết quả đạt được và kết luận.
MỤC LỤC
1. GIỚI THIỆU......................................................................................................................................1
1.1. Tổng quan...................................................................................................................................1
1.2. Giới thiệu về IP Security và tầm quan trọng trong thực tiễn.......................................................1
1.3. Nhiệm vụ đồ án...........................................................................................................................2
2. LÝ THUYẾT.....................................................................................................................................3
2.1. Tổng quan về hàm băm (Hash Function)....................................................................................3
2.2. Hàm băm SHA1..........................................................................................................................4
3. GIỚI THIỆU VỀ CÔNG CỤ HỖ TRỢ LẬP TRÌNH VÀ MÔ PHỎNG NGÔN NGỮ VERILOG...7
3.1. Giới thiệu về phần mềm Quartus II Web Edition Soft Ware 9.0.................................................7
3.2. Giới thiệu về phần mềm hỗ trợ mô phỏng ModelsSim ALTERA STARTER EDITION 6.4a....8
4. XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG MÃ HÓA SHA1.....................................................8
4.1. Lập trình bằng code RTL bằng phần mềm Quartus II.................................................................8
4.1.1. Thiết kế Project mã hóa bằng Quartus II..............................................................................8
4.1.2. Lập trình code Verilog cho mã hóa SHA1.........................................................................10
4.2. Mô phỏng Project bằng Modelsim ALTERA STARTER EDITION 6.4a................................12
4.2.1. Tạo file testbench cho Module sha1_block........................................................................12
4.2.2. Mô phỏng file testbench bằng dạng sóng ngõ ra................................................................13
5. KẾT QUẢ THỰC HIỆN.................................................................................................................14
6. NHẬN XÉT ĐÁNH GIÁ QUÁ TRÌNH VÀ HƯỚNG PHÁT TRIỂN............................................18
6.1. Nhận xét, đánh giá quá trình.....................................................................................................18
6.2. Hướng phát triển.......................................................................................................................18
7. TÀI LIỆU THAM KHẢO...............................................................................................................18
1. GIỚI THIỆU
Internet là một hệ thống thông tin toàn cầu có thể được truy nhập công cộng gồm các
mạng máy tính được liên kết với nhau. Hệ thống này truyền thông tin theo kiểu nối chuyển
gói dữ liệu (packet switching) dựa trên một giao thức liên mạng đã được chuẩn hóa (giao
thức IP). Hệ thống này bao gồm hàng ngàn mạng máy tính nhỏ hơn của các doanh nghiệp,
của các viện nghiên cứu và các trường đại học, của người dùng cá nhân và các chính phủ trên
toàn cầu...
Mạng Internet mang lại rất nhiều tiện ích hữu dụng cho người sử dụng, một trong các
tiện ích phổ thông của Internet là hệ thống thư điện tử (email), trò chuyện trực tuyến
(chat),công cụ tìm kiếm (search engine), các dịch vụ thương mại và chuyển ngân và các dịch
vụ về y tế giáo dục như là chữa bệnh từ xa hoặc tổ chức các lớp học ảo. Chúng cung cấp một
khối lượng thông tin và dịch vụ khổng lồ trên Internet. Ban đầu, các tổ chức cơ quan sử dụng
Internet để giới thiệu các sản phẩm và dịch vụ bằng các website của mình. Cùng với thời
gian, nó sẽ phát triển thành thương mại điện tử, mọi hoạt động kinh doanh, các giao dịch
được thực hiện qua mạng internet. Bài toán đặt ra là làm thế nào để bảo mật an toàn cho các
dữ liệu trong quá trình truyền qua mạng? Làm thế nào có thể bảo vệ chống lại các cuộc tấn
công trong quá trình truyền tải các dữ liệu đó? Và để trả lời cho các câu hỏi đó thì người ta đã
xây dựng lên hệ thống giao thức bảo mật trong quá trình truyền – nhận thông tin IPsec ( IP
Security).
1.2. Giới thiệu về IP Security và tầm quan trọng trong thực tiễn
Thuật ngữ IPSec là một từ viết tắt của thuật ngữ Internet Protocol Security. Giao thức
IPSec được phát triển bởi tổ chức Internet Engineering Task Force (IETF). IPSec bao gồm
một hệ thống các giao thức chuẩn, cung cấp các dịch vụ bảo mật quá trình truyền thông tin
trên nền tảng Internet Protocol (IP). Bao gồm xác thực và mã hoá (Authenticating and
Encrypting) cho mỗi gói IP (IP packet) trong quá trình truyền thông tin. Mọi giao tiếp trong
một mạng trên cơ sở IP đều dựa trên các giao thức IP. Do đó, khi một cơ chế bảo mật cao
được tích hợp với giao thức IP, toàn bộ mạng được bảo mật bởi vì các giao tiếp đều đi qua
tầng 3 (Network layer) trong mô hình OSI. (Đó là lý do tại sao IPSec được phát triển ở giao
thức tầng 3 thay vì tầng 2).
IPSec được thiết kế như phần mở rộng của giao thức IP, được thực hiện thống nhất
trong cả hai phiên bản IPv4 và IPv6. Đối với IPv4, việc áp dụng IPSec là một tuỳ chọn,
nhưng đối với IPv6, giao thức bảo mật này được triển khai bắt buộc.
1.3. Nhiệm vụ đồ án
Đồ án nghiên cứu những lý thuyết cơ bản về kiến trúc IPSec và Giải thuật hàm băm (Hash
Function) SHA1 qua đó xây dựng được chương trình mô phỏng mã hóa IP bằng ngôn ngữ
Verilog.
- Tìm hiểu giải thuật hàm băm SHA và các dữ liệu của nó.
- Tìm hiểu về các công cụ hỗ trợ lập trình và mô phỏng ngôn ngữ Verilog
- Xây dựng chương trình mô phỏng và đánh giá, rút ra kết luận.
Đồ án chỉ thực hiện mô phỏng mã hóa giải thuật hàm băm với mã nguồn SHA1 và
xuât file mô phỏng dưới dạng sóng trên phần mềm ModelSim chứ chưa thực hiện mô
phỏng thực tế trên KIT FPGA.
2. LÝ THUYẾT
[1] Hàm băm là các thuật toán không sử dụng khóa để mã hóa, nó có nhiệm vụ băm
thông điệp được đưa vào theo một thuật toán h một chiều nào đó, rồi đưa ra một bản băm –
văn bản đại diện – có kích thước cố định. Do đó người nhận không biết được nội dung hay độ
dài ban đầu của thông điệp đã được băm bằng hàm băm. Giá trị của hàm băm là duy nhất, và
không thể suy ngược lại được nội dung thông điệp từ giá trị băm này.
Hàm băm h là hàm một chiều (one-way hash) với các đặc tính:
- Với thông điệp đầu vào xthu được bản băm z = h(x) là duy nhất.
- Nếu dữ liệu trong thông điệp x thay đổi để thành thông điệp x’ thì h(x’) ¹h(x) =>
Hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau.
- Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm => Với thông
điệp x thì dễ dàng tính được z = h(x), nhưng lại không thể (thực chất là khó) suy
ngược lại được x nếu chỉ biết giá trị hàm băm h.
- Được dùng trong quá trình tạo chữ kí số trong giao dịch điện tử.
Các hàm băm lấy một thông báo đầu vào và tạo một đầu ra được xem như là:
- Vai trò cơ bản của các hàm băm mật mã là một giá trị băm coi như ảnh đại diện thu
gọn, đôi khi gọi là một dấu vết (imprint), vân tay số (digital fingerprint), hoặc tóm
lược thông báo (message digest) của một xâu đầu vào, và có thể được dùng như là
một định danh duy nhất với xâu đó.
- Các hàm băm thường được dùng cho toàn vẹn dữ liệu kết hợp với các lược đồ chữ
kí số.
- Một lớp các hàm băm riêng được gọi là mã xác thực thông báo (MAC) cho phép
xác thực thông báo bằng các kĩ thuật mã đối xứng.
Thuật toán hàm băm an toàn SHA (Secure Hash Algorithm) được chấm nhận trong số các
chuẩn của Mỹ năm 1992 và nó được ứng dụng cùng với thuật toán chuẩn chữ ký số DSS. Khi
đầu vào là một bản tin M có chiều dài bất kỳ, đầu ra là là 160 bits rút gọn.
Trong SHA-1 sử dụng hàm f(t, B, C, D), với 0t79; B, C và D –là các từ 32 bít.
Thuật toán Hash SHA-1 được miểu tả bởi các bước sau:
1) Mở rộng bản tin: thêm vào bit để chiều dài bản tin là bội của 512. Quá trình thêm diễn
ra như sau. Thêm bit 1 vào cuối bản tin, sau đó thêm vào một số bít 0 để nhận bản tin
có chiều dài là đồng dư với 448 modulo 512, và cuối cùng thêm vào 64 bít, 64bít này
biểu diễn chiều dài của bản tin ban đầu. Bản tin được thêm vào bao gồm các khối M 1,
M2, … , Mn, chiều dài mỗi khối là 512 bít.
H3 := 10325476, H4 := C3D2E1F0
3) i := 1
4) Chia khối Mi thành 16 từ 32 bít w0, w1, …, w15.
5) Đối với các t: 16t79 wt := (wt-3 wt-8 wt-14 wt-16)<<<1.
6) A := H0, B := H1, C := H2, D := H3, E := H4.
7) Đối với tất cả các t từ 0 đến 79
8) H0 := H0 + A, H1 := H1+B, H2 := H2 + C, H3 := H3 + D, H4 := H4 + E,
Các bước trong quy trình thực hiện giải thuật hàm băm được tóm tắt qua sơ đồ sau:
SHA-
256/224 256 512 264 − 1 32 64 +,and,or,xor,shr,rotfr None
256/224
SHA-
512/384 512 1024 2128 − 1 64 80 +,and,or,xor,shr,rotfr None
512/384
3.1. Giới thiệu về phần mềm Quartus II Web Edition Soft Ware 9.0
Quartus II Web Edition Software 9 là phần mền khá nổi tiếng của hãng Altera không
thể thiếu dành cho kỹ sư kỹ thuật điện tử. Với Quartus II 9 giúp thiết kế được các mạch linh
kiện cũng như mô phỏng quá trình thực hiện, lập trình với ngôn ngữ VHDL, Verilog HDL
một cách tốt nhất, fix bug, hiện thông báo lỗi trong khi quá trình code gặp lỗi.
Quartus II 9 đọc các file mạch (netlist) EDIF chuẩn, VHDL và Verilog HDL cũng như
tạo ra các file netlist này. Phần mềm Quartus II sử dụng bộ tích hợp NativeLink@ với các
công cụ thiết kế cung cấp việc truyền thông tin liền mạch giữa Quartus với các công cụ thiết
kế phần cứng EDA khác. Quartus II có môi trường thiết kế đồ họa giúp nhà thiết kế dễ dàng
viết mã, biên dịch, soát lỗi, mô phỏng.
Công cụ biên dịch của Quartus II nằm ở trung tâm hệ thống nó cung cấp cho chúng ta quy
trình thiết kế khá là mạnh cho phép tùy biến để đạt được thiết kế tối ưu trong dự án. Quartus
II cho phép làm việc với nhiều file ở cùng thời điểm, soạn thảo file thiết kế trong khi vẫn có
thể biên dịch hay chạy mô phỏng các dự án khác. Công cụ định vị lỗi tự động và các bản tin
cảnh báo khiến việc phát hiện và sửa lỗi trở nên đơn giản hơn
Hình 6 - Giao diện làm việc của ModelSim Altera Starter Edition 6.4a
4.1. Lập trình bằng code RTL bằng phần mềm Quartus II
Sau khi khởi động giao diện chính của Quartus II, ta tạo Project bằng File → New
Project Wizard và điền các thông tin cần thiết về Folder chưa Project, tên Project và tên Top
– Module. Tiếp tới ta cần khai báo họ và tên linh kiện FPGA để cấu hình. Ở đây em chọn họ
linh kiện CycloneII, tên EP2C70F896C6 (board DE2-70) là kit FPGA được dùng trong môn
học Kỹ Thuật Số với thông số như sau:
- Les: 68416.
- User I/Os: 622 (vì khi dùng để mô phỏng SHA1 chuỗi kí tự đầu vào phải lớn hơn
512 bits).
- PLL: 4.
Sau khi cấu hình cho Project, tiếp đến ta bắt đầu soạn thảo code Verilog bằng việc tạo
một Verilog HDL file bằng File -> New -> Verilog HDL file -> OK.
Để đơn giản cho việc mô phỏng cũng như tính toán thì ở em chọn độ dài của khối dữ
liệu đầu vào là 512 bits và đầu vào/ đầu ra bao gồm[3]:
Một bộ đệm 160 bits được dùng để lưu trữ các giá trị băm trung gian và kết quả. Bộ
đệm được biểu diễn bằng 5 thanh ghi 32 bits và các giá trị khởi tạo ở dạng số hex như sau:
- H0 = 67 45 23 01
- H1 = EF CD AB 89
- H2 = 98 BA DC FE
- H3 = 10 32 54 76
- H4 = C3 D2 E1 F0
Phần trọng tâm của giải thuật bao gồm 4 bước thực thiện tất cả 80 vòng lặp (round).
Trong đó 4 bước đều có cấu trúc giống nhau chỉ khác ở các hàm logic f 1, f2, f3, f4. Mỗi vòng
đều có đầu vào là 512 bits đông thời có một bộ đệm 160 bits H 0H1H2H3H4. Các thao tác qua
mỗi vòng lặp sẽ cập nhât lại bộ đệm[4].
Hình 12 - sha1_round
4.2. Mô phỏng Project bằng Modelsim ALTERA STARTER EDITION 6.4a
Để mô phỏng dạng sóng ngõ ra cho module sha1_block ta cần xây dựng file testbench
trong phần mềm ModelSim ALTERA STARTER EDITION 6.4a. Ta chọn File -> New ->
Project. Sau đó chọn Create New File để thực hiện viết file testbench.
Sau khi Compile file testbench và trên thanh Transcript báo đã Compile thành công,
ta chọn Libraby ở phía góc trái màn hình. Ta chọn thư mục Work -> testbench để mô phỏng
file testbench vừa viết
Tiếp đó ta chuột phải vào testbench chọn Add -> To Wave -> All items in region để
thêm các dữ liệu dạng sóng cần mô phỏng lên Wave. Tiếp theo ta chọn Run Length để khai
báo thời gian mô phỏng, ở đây em chọn Run Length = 200ns để quan sát hết 80 vòng lặp của
thuật toán với thời gian xung CLK là 2ps
Khi mô phỏng bằng ModelSim em gán cho dữ liệu đầu vào block là mã ASCII của
các kí tự, ví dụ chuỗi “abc” có mã ASCII là “616263” và dữ liệu đầu ra context_out kiểu
HEX.
Sau quá trình điều chỉnh và sửa chữa code, em cũng đã hoàn thành mục tiêu đề ra của
Đồ án môn học. Để kiểm tra độ chính xác của chuỗi kết quả mô phỏng, em xử dụng Tool
MD5&SHA1 Hash Generator For Text của website http://onlinemd5.com/. Với chuỗi dữ liệu
đầu vào có độ dài 512 bits thì module cho ra kết quả một chuỗi có độ dài 160 bits tương tự
như Tools trên website
Sau quá trình tìm hiểu và nghiên cứu đồ án mã hóa IP Security bằng mã nguồn
SHA1 em thầy mình có thêm nhiều kiến thức hơn về lập trình ngôn ngữ Verilog cũng
như hiểu biết hơn về hướng thiết kế vi mạch. Ngoài ra em còn hiểu thêm về các khái
niệm các thuật toán trong giải thuật hàm băm (Hash function) sẽ giúp ích cho em rất
nhiều sau này. Bên cạnh đó nhờ sự hướng dẫn chỉ bảo tận tình của thầy PGS-TS
Hoàng Trang giúp em giải đáp các thắc mắc khó khăn trong quá trình nghiên cứu đồ
án.
- Do đây là một đề tài tương đối mới với em nên trong quá trình thực hiện đề tài còn
nhiều hạn chế và thiếu sót.
- Thời gian làm quen với ngôn ngữ lập trình Verilog chưa nhiều khiến em mất khá
nhiều thời gian để hoàn thành đồ án.
- Do đồ án mới chỉ dừng lại ở mức mô phỏng bằng phần mềm cũng như chưa được
mô phỏng trực tiếp trên KIT FPGA nên chưa thể đánh giá cao giá trị thực tiễn của
đề tài.
Nhận thấy kết quả thu lại khá khả quan nên với kết quả này, đồ án là bước đệm vững
chắc để hướng đến đề cương và đề tài luận văn sắp tới:
- Có thể xây dựng bộ mã hóa với dữ liệu đầu vào cao hơn, tính bảo mật cao hơn.
- Từ thuật toán SHA1 có thể tự xây dựng cho mình một giải thuật riêng với độ bảo
mật cao hơn.
- Ứng dụng được trên KIT FPGA cũng như phát triển trên các nền tảng vi xử lý
khác.
[1] Chương 11 – Hàm băm, tài liệu của Học viện Kỹ thuật Quân sự 2014
[2] Chương 4 – Hàm băm, tài liệu của Bộ môn Khoa học máy tính, Khoa CNTT & TT,
Đại học Cần Thơ.