Tải bản đầy đủ (.doc) (66 trang)

đồ án “tích hợp thuật toán mật mã DES trên FPGA”

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.13 MB, 66 trang )

LỜI NÓI ĐẦU
Cuộc cách mạng về công nghệ thông tin đang tác động sâu sắc đến
các lĩnh vực của đời sống xã hội, đặc biệt trong lĩnh vực truyền thông. Một
trong các thể hiện là tốc độ truyền thông ngày càng cao, chuyển tải nhiều
loại hình thông tin khác nhau. Đặc điểm này đặt ra yêu cầu cho ngành mật
mã là các thiết bị xử lý bảo mật thông tin phải được chuyên dụng hoá và
làm việc được trên các luồng thông tin tốc độ lớn. Với những kỹ thuật bảo
mật truyền thống, đòi hỏi trên là rất khó khăn, thậm chí không giải quyết
được. Do vậy, việc nghiên cứu thiết kế thiết bị bảo mật chuyên dụng, hoạt
động với tốc độ lớn là nhu cầu cần thiết và cấp bách. Nhằm góp phần giải
quyết vấn đề trên, tôi đã chọn đồ án “Tích hợp thuật toán mật mã DES
trên FPGA”.
Đồ án có nhiệm vụ: mô tả thuật toán mã hóa DES bằng ngôn ngữ mô
tả phần cứng VHDL, nắm chắc các giải pháp, công cụ hỗ trợ quá trình tích
hợp thuật toán mã hóa DES trên FPGA. Thực hiện thiết kế modul thuật
toán DES trên môi trường phần mềm tích hợp ISE của Xilinx.
Nội dung đồ án gồm 3 chương:
Chương 1: Thuật toán Mật mã DES
Chương 2: Công nghệ FPGA và ngôn ngữ VHDL
Chương 3: Tích hợp thuật toán Mật mã DES trên FPGA
Qua một thời gian nghiên cứu, đồ án đã hoàn thành được nội dung
đặt ra. Nhân dịp này, tôi xin bày tỏ lời cảm ơn chân thành đến thầy giáo TS
đã tận tình, trực tiếp hướng dẫn và có những ý kiến hết sức quý báu giúp tôi
trong quá trình thực hiện đồ án.
1
Do thời gian làm đồ án không được nhiều, trình độ bản thân hạn chế,
đồ án không thể tránh được những sai sót, nội dung chưa được sâu sắc.
Kính mong nhận được sự đóng góp các thầy giáo.
Tôi xin chân thành cảm ơn!
2
MỤC LỤC


LỜI NÓI ĐẦU 1
MỤC LỤC 3
DANH MỤC CÁC HÌNH VẼ 5
THUẬT TOÁN MÃ HÓA DES 5
1.1 TỔNG QUAN VỀ HỆ THỐNG TRUYỀN TIN MẬT 5
1.1.1 Mô hình hệ thống truyền tin mật 5
1.1.2 Phân loại hệ mã 8
1.1.3 Đánh giá độ mật của hệ thống truyền tin mật 9
1.1.4 Một số giải pháp kỹ thuật thiết kế mã khối 11
1.2 CHUẨN MÃ DỮ LIỆU DES 13
1.2.1 Mở đầu 13
1.2.2 Thuật toán 13
1.3 KẾT LUẬN CHƯƠNG 1 22
Chương 2 23
CÔNG NGHỆ FPGA VÀ NGÔN NGỮ VHDL 23
2.1 TỔNG QUAN VỀ FPGA 23
2.1.1 Giới thiệu về FPGA 23
2.1.2 Cấu trúc của FPGA 24
2.1.3 Phân loại FPGA 27
2.1.4 Ứng dụng của FPGA 28
2.2 MÔI TRƯỜNG PHẦN MỀM TÍCH HỢP ISE CỦA XILINX 31
2.2.1 Mô tả khái quát về ISE 32
2.2.2 Các giai đoạn thiết kế sử dụng ISE 33
2.2.3 Ngôn ngữ lập trình được dùng trong thiết kế 38
3
2.3 NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL 40
2.3.1 Khái quát về VHDL 40
2.3.2 Cấu trúc một mô hình hệ thống mô tả bằng VHDL 41
2.4 KẾT LUẬN CHƯƠNG 2 43
Chương 3 44

TÍCH HỢP THUẬT TOÁN DES TRÊN FPGA 44
3.1 QUY TRÌNH VÀ CÔNG CỤ THIẾT KẾ 44
3.1.1 Quy trình thiết kế 44
3.2 SƠ ĐỒ KHỐI CHỨC NĂNG 45
57
KẾT LUẬN 58
TÀI LIỆU THAM KHẢO 60
PHỤ LỤC 61
4
DANH MỤC CÁC HÌNH VẼ
Chương 1
Chương 2
Chương 3
Phụ lục
Chương 1
THUẬT TOÁN MÃ HÓA DES
1.1 TỔNG QUAN VỀ HỆ THỐNG TRUYỀN TIN MẬT
1.1.1 Mô hình hệ thống truyền tin mật
Trong cuộc sống, con người luôn có nhu cầu trao đổi thông tin với
nhau có nghĩa là có nhu cầu truyền tin cho nhau. Hình 1.1 biểu diễn mô
hình của Hệ thống truyền tin bao gồm: Nguồn tin, kênh tin và nhận tin.
5
Hình 1.1: Mô hình hệ thống truyền tin
Trong mô hình này:
- Nguồn tin là nơi sản sinh ra các tin tức cần truyền đi trên kênh tin
dưới dạng các bản tin.
- Kênh tin là môi trường vật lý xác định để truyền các bản tin dưới
các dạng tín hiệu điện, quang …
- Nhận tin là cơ cấu khôi phục thông tin ban đầu từ tín hiệu lấy ở
đầu ra của kênh tin.

Do xã hội ngày càng phát triển, nên nhu cầu trao đổi thông tin cũng
tăng theo không ngừng. Các nội dung thông tin có liên quan đến lợi ích,
quyền lợi của một số người hay một giai cấp nào đó cần được giữ kín, bí
mật vì vậy nhu cầu bảo mật nội dung thông tin được truyền đi hình thành
và phát triển ngày càng lớn.
Hệ thống truyền tin mật là hệ thống mà trong đó nội dung thông tin
phải được bảo vệ và giữ bí mật khi truyền trên kênh tin trước sự tấn công,
khám phá bất hợp pháp của mã thám. Hình 1.2 mô tả một cách tổng quát về
mô hình của một hệ thống truyền tin mật.
6
Hình 1.2: Mô hình hệ thống truyền tin mật
Trong đó:
- Mã hoá là quá trình biến đổi các bản tin rõ R thành các bản tin mã
M bằng thuật toán mã hoá E và được xem như một hàm :
M = E(R,K
E
)
- Giải mã là quá trình biến đổi ngược của mã hoá có nghĩa là biến
đổi các bản tin mã M từ đầu ra của kênh tin thành các bản tin rõ R để đưa
tới nhận tin và cũng được xem như một hàm:
R = D(M,K
D
)
- Các khoá mã K
E
và khoá dịch K
D
được gọi là khoá mã mật tham
gia vào các thuật toán mã hoá E và thuật toán giải mã D.
- Mã thám là các đối tượng có khả năng chặn bắt, thu nhận các bản

tin mã M từ kênh tin, nhưng không biết khoá mã K
E
và khoá giải mã K
D
nhằm tìm ra bản tin rõ R (thông thường mã thám sử dụng khoá giải mã K'
D
để tìm ra bản rõ R'

R).
- Nhiễu là do sự tác động của môi trường truyền dẫn.
Đôi khi thường bị đồng nhất hai khái niệm hệ thống truyền tin mật
và hệ mật khi đánh giá độ mật của hệ thống. Hệ mật là một bộ 5 (R, M, K,
E, D) thoả mãn các điều kiện sau:
a. R (không gian các bản tin rõ) là một tập hợp hữu hạn các bản rõ có
thể có.
b. M (không gian các bản tin mã) là một tập hợp các bản tin mã có
thể có.
c. K (không gian khoá) là một tập hợp hữu hạn các khoá mật mã có
thể có.
7
d. Đối với mỗi k

K có một quy tắc mã hoá e
k

E và một thuật toán
giải mã tương ứng d
k

D, mà mỗi e

k
: R

M và d

k: M

R là những hàm
được thoả mãn d
k

(e
k
(x)) = x với mọi bản tin rõ x

R.
Điều kiện (d) là quan trọng nhất có nghĩa là nếu có một bản tin rõ x
được mã hoá bằng thuật toán E và bản tin mã nhận được sau đó được giải
mã bằng thuật toán giải mã D thì phải thu được bản tin rõ x ban đầu.
1.1.2 Phân loại hệ mã
Mã khối và mã dòng là hai loại hình mã hoá cơ bản, thực hiện chức
năng mã dịch thông tin bí mật trong một hệ thống sử dụng mật mã.
- Mã dòng: Là một dạng biến đổi loạt, biến đổi tuần tự bản mã theo
bít (ký tự). Bộ tạo dãy khoá hay còn gọi là bộ tạo khoá chạy sinh ra các bít
k1, k2,…, ki,…Dãy khoá này được cộng modul 2 với dãy các bít của bản
rõ: p1, p2,…, pi,… để thành bản mã: ci = pi

ki. Tại phía nhận, bản mã
được cộng modulo 2 với dãy khoá đồng nhất để có bản rõ: ci


ki = pi

ki

ki = pi.
- Mã khối: Vấn đề đặt ra theo một góc độ khác, mỗi một lần mã,
khoá được lấy ngẫu nhiên trong không gian khoá sau đó cố định lại và
dùng để mã hoá cho tất cả các khối bản rõ trong phiên liên lạc đó hoặc
trong suốt thời gian ấn định nào đó.
Song song với việc nghiên cứu các mã pháp, các nghiên cứu để tấn
công, phân tích, thám mã các hệ này cũng phát triển. Cho tới nay, có hai
phương pháp tấn công mạnh nhất đối với mã khối là: tấn công vi sai và tấn
công tuyến tính.
8
1.1.3 Đánh giá độ mật của hệ thống truyền tin mật
Nhiệm vụ chủ yếu của hệ thống truyền tin mật là giữ bí mật của
thông tin được truyền trên kênh tin trước sự tấn công, khám phá của mã
thám. Như vậy độ mật của hệ thống truyền tin mật hoàn toàn phụ thuộc vào
độ an toàn của hệ mật mà được dùng trong nó. Có hai quan điểm cơ bản về
độ an toàn của một hệ mật:
- Thứ nhất là độ an toàn tính toán: Độ đo này liên quan đến khả
năng tính toán cần thiết để khám phá, tấn công một hệ mật. Một hệ mật là
an toàn về mặt tính toán nếu thuật toán tấn công, khám phá hệ thống đó cần
ít nhất N phép toán mà N là một số rất lớn nào đó. Vấn đề là ở chỗ, không
có một hệ mật thực tế đã biết nào có thể chứng tỏ là an toàn theo định nghĩa
này. Trên thực tế, người ta gọi một hệ mật là “an toàn về mặt tính toán” nếu
có một phương pháp tốt nhất phá hệ này nhưng yêu cầu về mặt thời gian
lớn đến mức không thể chấp nhận được.
- Thứ hai là an toàn không điều kiện: Độ đo này liên quan đến độ an
toàn của các hệ mật khi không có hạn chế nào được đặt ra về khả năng tính

toán mà mã thám có thể thực hiện. Một hệ mật được xem là an toàn không
điều kiện (tuyệt mật hay lý tưởng) nếu nó không thể bị tấn công, khám phá
với khả năng tính toán không hạn chế. Tất nhiên ta cũng phải xét đến các
kiểu tấn công của mã thám để xây dựng các hệ thống an toàn hơn nữa.
Trong hệ thống truyền tin mật khoá mật mã quyết định độ bảo mật
của toàn bộ hệ thống. Người ta đã đưa ra tiêu chuẩn của hệ thống truyền tin
mật như sau:
- Độ mật cần thiết sẽ xác định thuật toán phù hợp cho việc mã hoá
và giải mã. Tiêu chuẩn này thể hiện một nguyên lý rất cơ bản là một thuật
toán mã hoá đơn giản cũng có thể đủ mạnh để ngăn chặn các đối tượng mã
9
thám "chặn bắt tình cờ" hoặc bảo mật truyền tin trong một khoảng thời gian
ngắn.
- Không gian khoá và thuật toán mã hoá không được quá phức tạp.
Tiêu chuẩn này cho thấy rằng không nên hạn chế sự lựa chọn các khoá
hoặc các kiểu bản tin rõ mà thuật toán mã hoá làm việc trên đó. Nếu thuật
toán mã hoá chỉ làm việc với các bản tin rõ có cùng độ dài thì đó là một
thuật toán yếu, dễ bị khám phá. Tương tự, rất khó lựa chọn khoá mà tổng
các phần tử của khoá là một số nguyên tố. Những hạn chế như vậy sẽ làm
cho việc sử dụng thuật toán mã hoá rất phức tạp. Mặc dù một thuật toán mã
hoá phức tạp sẽ tăng độ bảo mật của hệ thống, nhưng sẽ làm thời gian xử
lý, truyền tin tăng lên một cách đáng kể. Nên một thuật toán mã hoá phù
hợp là thuật toán tối ưu giảm thiểu những trở ngại cho việc truyền tin.
- Các lỗi trong quá trình mã hoá không được lan truyền và gây ngắt
tin trong các bản tin rõ nhận được khi giải mã. Mã hoá có thể gây lỗi cho
quá trình truyền tin hoặc làm sai lệch nội dung thông tin từ đó các bản tin
mã cũng bị sai lệch theo hoặc bị gián đoạn toàn bộ quá trình truyền tin. Do
đó chúng ta cần hạn chế tối đa việc gây lỗi bởi quá trình mã hoá.
- Kích thước hay độ dài của bản tin mã không được lớn hơn độ dài
của bản tin rõ ban đầu, nếu điều này xảy ra nó sẽ không thể mang được

nhiều thông tin như bản tin rõ và thời gian truyền tin trên kênh cũng sẽ bị
tăng theo.
Nhìn chung các tiêu chuẩn này được đề xuất nhằm đánh giá chất
lượng của hệ thống truyền tin mật. Trong điều kiện hiện nay nhờ sự phát
triển mạnh mẽ của khoa học và công nghệ đặc biệt là công nghệ FPGA, các
thuật toán mã hoá, giải mã có thể được thiết kế để cứng hoá trong các thiết
bị bảo mật nên việc xây dựng độ mật tối ưu cho từng hệ thống với từng
mục đích cụ thể sẽ được thực hiện một cách thuận lợi.
10
1.1.4 Một số giải pháp kỹ thuật thiết kế mã khối
Việc thiết kế các thuật toán mã khối trong thiết bị bảo mật thông tin
hiện nay có thể thực hiện theo các kỹ thuật như mô tả trong hình 1.3
Hình 1.3: Các kỹ thuật thiết kế mã khối
Thiết kế mã khối bằng chương trình phần mềm
Thiết kế thuật toán mã khối bằng chương trình phần mềm và thực
hiện trên các bộ xử lý Intel, RISC hoặc nhúng trong môi trường DSP,
Smart-Card , hoặc trên các máy PC. Ưu điểm của kỹ thuật này là không
phụ thuộc quá nhiều vào công nghệ thiết kế, cho phép thiết kế nhanh, có
tính mềm dẻo cao khi cần thay đổi thuật toán mã hoá được thực hiện một
cách đơn giản. Tuy nhiên kỹ thuật này lại bị hạn chế về mặt tốc độ xử lý
mã hoá - giải mã, nó phù hợp với những hệ thống truyền tin có tốc độ
không cao. Mặt khác, việc sử dụng không hết các tính năng của một thiết bị
sẵn có làm cho giá thành tăng lên, và không thuận lợi cho chuyên dụng hoá
thiết bị bảo mật thông tin.
Thiết kế mã khối bằng công cụ phần cứng
11
Thiết kế thuật toán mã khối trên các công cụ phần cứng không mềm
dẻo bằng phần mềm nhưng nó lại có một số ưu điểm: Tại cùng một thời
điểm các thiết bị phần cứng cho phép thay đổi các phép xử lý dữ liệu một
cách linh hoạt hơn so với phần mềm. Tốc độ xử lý dữ liệu và an toàn về

mặt vật lý cao hơn, bảo mật được thiết kế, không phụ thuộc vào hệ điều
hành, rất thích hợp trong việc thiết kế những thiết bị bảo mật chuyên dụng
và bảo mật trong các hệ thống truyền tin có tốc độ cao.
Trên thế giới một số hãng sản xuất các thiết bị bảo mật cũng đã
nghiên cứu thiết kế các thuật toán mã khối bằng các công cụ phần cứng
như: công nghệ ASIC, công nghệ FPGA ,
FPGA là một thiết bị logic có thể được người sử dụng lập trình trực
tiếp mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào.
Điều này cho phép chế tạo ngay thiết bị và vì vậy giá thành sản phẩm thấp.
FPGA được ứng dụng rộng rãi và khá lý tưởng vì chúng có mức độ
tích hợp cao trên chip, đáp ứng yêu cầu phức tạp và đa dạng. Thay vì các
IC nguyên mẫu để lắp ghép vào hệ thống người thiết kế có thể tạo các kết
nối theo các phần trong FPGA của mình bằng phần mềm. Mặt khác chúng
ta có thể nạp lại chương trình một cách liên tục để thay đổi các thuật toán
mã khối hoặc thực hiện các thuật toán khác.
Hiện nay các thuật toán mã khối chủ yếu được thiết kế bằng các
chương trình phần mềm chạy trên máy PC, việc nghiên cứu để có thể cứng
hoá các thuật toán mã khối trên các công cụ phần cứng nhằm đáp ứng các
yêu cầu về tốc độ xử lý dữ liệu, tính chủ động, chuyên dụng hoá thiết bị
bảo mật cũng như giá thành là một hướng nghiên cứu mới. Công nghệ
FPGA với những tính năng ưu việt của nó được lựa chọn để nghiên cứu
thiết kế modul mã khối nhằm đáp ứng những yêu cầu trên.
12
1.2 CHUẨN MÃ DỮ LIỆU DES
1.2.1 Mở đầu
DES (Data Encryption Standard) là một kỹ thuật mã khối, thực hiện
mã hoá một xâu bít x của bản rõ độ dài 64 bằng một khoá 56 bít. Bản mã
nhận được cũng là một xâu bít có độ dài 64.
Hình 1.4: Thuật toán DES
1.2.2 Thuật toán

Thuật toán mã hoá DES tiến hành theo 3 giai đoạn:
1. Với bản rõ cho trước x, một xâu bít x
0
sẽ được xây dựng bằng
cách hoán vị các bít của x theo phép hoán vị cố định ban đầu IP.
Ta viết: x
0
= IP(X) = L
0
R
0
, trong đó L
0
gồm 32 bít đầu và R
0
là 32 bít
cuối.
2. Sau đó tính toán 16 lần lặp theo một hàm xác định. Tã sẽ tính L
i
R
i,
1≤ i ≤ theo qui tắc sau:
L
i
= R
i-1
R
i
= L
i-1

⊕ f( R
i-1
,K
i
)
13
Trong đó: ⊕ kí hiệu phép hoặc loại trừ của hai xâu bít (cộng theo
module 2), f là một hàm bao gồm các phép hoán vị, phép thế, phép cộng
modulo 2, còn K
1
, K
2,…
K
16
là các xâu bít độ dài 48 bít được tính như hàm
của khoá K (trên thực tế K
i
là một phép toán chọn hoán vị bít trong K). K
1
,
K
2,…
K
16
sẽ tạo thành bảng Khóa
3. Áp dụng phép hoán vị ngược IP
-1
cho xâu bít R
16
L

16
ta thu được
bản mã y. Tức là y = IP
-1
( R
16
L
16
).
Phép giải mã được thực hiện nhờ dùng cùng thuật toán như phép mã
nếu đầu vào là y nhưng dùng bảng khoá theo thứ tự ngược lại K16,…,K1.
Đầu ra của thuật toán sẽ là bản rõ x.
Hình 1.5: Một vòng của DES
Hàm F trong thuật toán DES
Hàm F: Có hai biến vào:
- Biến thứ nhất A là xâu bít độ dài 32.
- Biến thứ hai J là một xâu bít độ dài 48. Đầu ra của f là một xâu bít
độ dài 32.
14
Hàm F được thực hiện theo các bước như sau:
- Bước 1: Biến thứ nhất A được mở rộng thành một xâu bít độ dài
48 theo một hàm mở rộng cố định E. E(A) gồm 32 bít của A (được hoán vị
theo cách cố định) với 16 bít xuất hiện hai lần.
- Bước 2: Tính E(A)

J và viết kết quả thành một chuỗi 8 xâu 6 bít
=B
1
B
2

B
3
B
4
B
5
B
6
B
7
B
8
.
- Bước 3: Dùng 8 bảng S
1
, S
2
, ,S
8
(được gọi là các hộp thế S-
BOX). Với mỗi S
i
là một bảng 4x16 cố định có các hàng là các số nguyên
từ 0 đến 15. Với xâu bít có độ dài 6 (kí hiệu B
i
= b
1
b
2
b

3
b
4
b
5
b
6
), ta tính S
j
(B
j
)
như sau: Hai bít b
1
b
6
xác định biểu diễn nhị phân của hàng r của S
j
( 0 ≤
r ≤ 3) và bốn bít (b
2
b
3
b
4
b
5
) xác định biểu diễn nhị phân của cột c của S
j
( 0

≤ c ≤ 15 ). Khi đó S
j
(B
j
) sẽ xác định phần tử S
j
(r,c); phần tử này viết dưới
dạng nhị phân là một xâu bít có độ dài 4 (bởi vậy, mỗi S
j
có thể được coi là
một hàm mã mà đầu vào là một xâu bít có độ dài 2 và một xâu bít có độ dài
4, còn đầu ra là một xâu bít có độ dài 4). Bằng cách tương tự tính các C
j
=
S
j
(B
j
), 1 ≤ j ≤ 8.
- Bước 4: Xâu bít C = C
1
C
2
C
8
có độ dài 32 được hoán vị theo
phép hoán vị cố định P. Xâu kết quả là P(C) được xác định là F(A,J).
Hàm F được mô tả trên hình 1.6 Chủ yếu nó gồm một phép thế (sử
dụng hộp S-BOX ), tiếp sau đó là phép hoán vị P; 16 phép lặp của F sẽ tạo
nên một hệ mật tích.

15
Hình 1.6: Hàm f của thuật toán DES
Phép hoán vị ban đầu IP
Bảng 1.1: Các tham số của phép hoán vị ban đầu IP
16
Bảng này có nghĩa là bít thứ 58 của x là bít đầu tiên của IP(x); bít thứ
50 của x là bít thứ hai của IP(x), .v.v . . .
Phép hoán vị FP
Bảng 1.2: Các tham số của phép hoán vị FP
Bảng chọn E bít
Bảng 1.3: Các tham số của hàm mở rộng E
17
Hộp thế S-Box
18
Phép hoán vị P trong hàm F
Bảng 1.4: Các tham số của phép hoán vị P
Lược đồ tạo khoá mã dịch
Đây là phần mô tả việc tính toán bảng khoá từ khoá K. Trên thực tế,
K là một xâu bít độ dài 64, trong đó 56 bít là khoá và 8 bít để kiểm tra tính
chẵn lẻ nhằm phát hiện sai. Các bít ở các vị trí 8,16,24,32,40,48,56,64 được
xác định sao cho mỗi byte chứa một số lẻ các số "1". Bởi vậy một sai sót
đơn lẻ có thể phát hiện được trong mỗi nhóm 8 bít. Các bít kiểm tra bị bỏ
qua trong quá trình tính toán bảng khoá. Tính khóa theo 2 bước:
19
- Bước 1: Với một khoá K có độ dài 64 bít cho trước, loại bỏ các bít
kiểm tra tính chẵn lẻ và hoán vị các bít còn lại của K theo phép hoán vị cố
định PC-1.
PC-1(K) = C
0
D

0
- Bước 2: Với i thay đổi từ 1 đến 16:
C
i
= LS
i
(C
i-1
)
D
i
= LS
i
(D
i-1
)
Trong đó LS
i
là phép dịch vòng trái, phụ thuộc vào giá trị của i. Với i
= 1,2,9 hoặc 16 thì dịch vòng sang trái 1 vị trí, còn các giá trị khác của i thì
dịch vòng sang trái 2 vị trí.
Bảng 1.5: Các tham số của phép hoán vị PC-1
20
Bảng 1.6: Các tham số của phép hoán vị PC-2
Như đã nói ở trên, mỗi vòng sử dụng một khoá 48 bít gồm 48 bít
nằm trong K.
Phép giải mã được thực hiện nhờ dùng cùng thuật toán như phép mã
nếu đầu vào là Y nhưng dùng bảng khoá theo thứ tự ngược lại K
16
, K

1
.
Đầu ra của thuật toán sẽ là bản rõ X.
21
Hình 1.7: Sơ đồ tính khoá của thuật toán DES
1.3 KẾT LUẬN CHƯƠNG 1
Chương này đã mô tả một cách khái quát về mô hình của một hệ
truyền tin mật, các khái niệm cơ bản về mật mã. Trình bày chi tiết thứ tự
các bước thực hiện thuật toán Mã hóa DES.
22
Chương 2
CÔNG NGHỆ FPGA VÀ NGÔN NGỮ VHDL
2.1 TỔNG QUAN VỀ FPGA
2.1.1 Giới thiệu về FPGA
Công nghệ chế tạo mạch vi điện tử ngày nay đang có một sự thay đổi
lớn: từ một mạch tính hợp vi điện tử với cơ sở thiết bị công nghệ tiên tiến
chế tạo ra với số lượng lớn chuyển dần sang các mạch chuyên dụng sản
xuất với lô nhỏ tại các cơ sở có điều kiện công nghệ chưa phát triển. Sự
thay đổi đó được hình thành nhờ các công cụ thiết kế tự động. Động lực
chính của quá trình thay đổi này là giảm thời gian thiết kế, chế tạo vi mạch
và tăng tính linh hoạt cho người thiết kế lập trình với những ứng dụng riêng
biệt.
FPGA (Field-Programmable Gate Array), là mạch tích hợp cỡ lớn
trong đó cho phép người lập trình thay đổi các thiết kế của mình mà không
phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào. FPGA là công
nghệ tiên tiến nhất hiện nay của ngành công nghệ chế tạo IC (Integrated
Circuit) chuyên biệt.
Hình 2.1: Hình FPGA
23
2.1.2 Cấu trúc của FPGA

FPGA là mạch tích hợp chứa nhiều (64 đến hơn 10.000) ô logic
(logic cell) giống nhau có thể xem là các thành phần chuẩn. Mỗi ô logic giữ
một hay một số chức năng độc lập. Các ô giống nhau được kết nối bởi một
ma trận đường dẫn và các chuyển mạch khả trình. Người thực hiện thiết kế
bằng các đặc trưng lôgic đơn của mỗi ô và lựa chọn đóng các chuyển mạch
trong ma trận kết nối. Mảng của các ô lôgic và kiểu kết nối là kết cấu xây
dung khối cơ bản trong mạch lôgic. Các thiết kế phức tạp được tạo ra bằng
cách kết hợp các khối cơ bản để tạo ra các mạch được mô tả.
Mô hình tổng quát của FPGA gồm một dãy hai chiều các khối lôgic
(logic block) có thể được kết nối bằng các nguồn kết nối chung. Các nguồn
kết nối gồm các đoạn kết nối (segment) có thể có chiều dài khác nhau. Bên
trong các kết nối là các chuyển mạch lập trình được dùng để nối các khối
lôgic với các đoạn dây, các khối vào ra hay các đoạn dây với nhau. Mạch
lôgic cài đặt trong FPGA bằng cách ánh xạ lôgic vào các lôgic riêng rẽ và
sau đó nối các khối lôgic cấu hình (Configurable logic Block) cần thiết qua
các chuyển mạch. Các khối CLB cung cấp các phần tử chức năng với cấu
trúc sử dụng logic. Các khối vào/ra (I/O Block) cung cấp giao diện giữa các
gói chân và các đường tín hiệu bên trong. Tài nguyên kết nối khả trình
cung cấp các bộ phận truyền dẫn tới kết nối đầu vào và đầu ra của các CLB
và các IOB trong mạng riêng.
Vậy cấu trúc FPGA gồm ba phần tử chính: Các khối lôgic cấu hình
(CLB), các khối vào/ra (IOB) và các kết nối.
- Các khối lôgic cấu hình (Configurable logic Block)
Cấu trúc và nội dung của logic block được gọi theo kiến trúc của nó.
Kiến trúc của khối lôgic có thể thiết kế theo nhiều cách khác nhau, có thể là
các cổng AND 2 ngõ nhập, các bộ dồn kênh (Multiplexer) hay các bảng tìm
24
kiếm (Lock-up Table). Ngoài ra coa thể chứa các Flip-Flop để hỗ trợ cho
việc thực hiện một cách tuần tự.
- Các nguồn kết nối (Routes)

Các nguồn kết nối có cấu trúc và nội dung được gọi là kiến trúc
đường (Routing Architecture). Kiến trúc Routing gồm các đoạn đây nối và
các chuyển mạch khả trình. Các chuyển mạch khả trình có cấu tạo khác
nhau như pass-transistor, được điều khiển bởi các cell SRAM, các phần tử
cầu chì nghịch, EPROM transistor và EEROM transitor. Giống như các
khối lôgic có nhiều cách khác nhau để thiết kế các kiến trúc routing. Một số
FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác
cung cấp ít kết nối hơn nên routing phức tạp hơn.
- Các cổng vào/ra
Các đặc tính I/OB của các đầu vào và đầu ra được hỗ trợ tới 19 các
chuẩn tín hiệu khác nhau bao gồm: LVDS, BLVDS, LVPECL, LVCMOS,
HSTL, SSTL và GTL.
25

×