Tải bản đầy đủ (.pdf) (24 trang)

Ứng dụng FPGA thực hiện thuật toán nhân và bình phương trên vành đa thức

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 (789.24 KB, 24 trang )


1
BỘ GIÁO DỤC VÀ ĐÀO
TẠO
TẬP ĐOÀN BƯU CHÍNH VI
ỄN THÔNG
VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG



NGUYỄN TRUNG HIẾU




ỨNG DỤNG FPGA THỰC HIỆN THUẬT TOÁN NHÂN V
À BÌNH
PHƯƠNG TRÊN VÀNH ĐA THỨC

CHUYÊN NGÀNH : KỸ THUẬT ĐIỆN TỬ

MÃ SỐ:23.060.52.704.3898
TÓM TẮT LUẬN VĂN THẠC SỸ KỸ THUẬT

Người hướng dẫn khoa học: TS. NGUYỄN NGỌC MINH




HÀ NỘI - 2010




2

Luận văn được hoàn thành tại:
Học viện Công nghệ Bưu chính Viễn thông
Tập đoàn Bưu chính Viễn thông Việt Nam


Người hướng dẫn khoa học:
TS. Nguyễn Ngọc Minh

Phản biện 1: ……………………………………………………

……………………………………………………

Phản biện 2: ……………………………………………………

……………………………………………………

Phản biện 3: ……………………………………………………

……………………………………………………

Luận văn sẽ được bảo vệ trước hội đồng chấm luận văn tại Học viện
Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm 2010.

Có thể tìm hiểu luận văn tại:
Thư viện Học viện Công nghệ Bưu chính Viễn thông


3

………………………………………………………

4
LỜI NÓI ĐẦU
Nâng cao hiệu quả của hệ thống truyền tin là một yêu cầu thực
tiễn luôn chứa đựng tính cấp thiết, tính đa dạng, lại vừa chứa đựng tính
phát triển không ngừng. Các phương pháp mã hóa, mật mã đã đóng góp
không nhỏ vào việc nâng cao hiệu quả và đảm bảo độ an toan, tin cậy
của các hệ thống truyền tin.
Thuật toán nhân và bình phương đa thức có lặp được ứng dụng và
đóng vai trò quan trọng trong việc xây dựng nhiều bộ mã hóa, mật mã
như: Các bộ mã hóa xyclic, xyclic cục bộ, Mật mã AES, các hệ mật
RSA, Chor-Rivest, Merkele-Hellman, Elgamal, Rabin,
Ngày nay, sự phát triển không ngừng của thiết kế số cho các cấu
kiện logic khả trình theo công nghệ CPLD/FPGA mở ra cho chúng ta
hướng nghiên cứu xây dựng thuật toán nhân và bình phương đa thức có
lặp trên các cấu kiện logic khả trình, từ đó ứng dụng xây dựng các bộ
mã hóa, mật mã trên các cấu kiện FPGA.
Luận văn nghiên cứu ứng dụng của thuật toán cho việc xây dựng
một số bộ mã xyclic và xyclic cục bộ. Mã xyclic cục bộ được
GS.TSKH. Nguyễn Xuân Quỳnh, GS.TS. Nguyễn Bình đưa ra đầu tiên.
Những nghiên cứu từ trước cho thấy những ưu điểm nổi bật của mã
như: Tính đa dạng, tốc độ lập mã nhanh, mạch giải mã đơn giản.
Phương pháp luận của đề tài dựa vào các khái niệm đã có như:
- Lưu đồ thực hiện thuật toán nhân và bình phương đa thức có
lặp cho ngôn ngữ lập trình thông dụng để xây dựng lưu đồ thực
hiện thuật toán trên FPGA.

- Cách xây dựng các bộ mã xyclic và xyclic cục bộ từ các tài liệu
đã nghiên cứu trước đó để tự xây dựng phương pháp mã hóa,
giải mã tạo nên các bộ mã hoàn chỉnh trên FPGA.
Nội dung luận văn bao gồm 3 chương và phần phụ lục.
Chương I: Cơ sở đại số.
Trình bày những vấn đề cơ bản về lý thuyết đại số, vành đa thức,
từ đó nghiên cứu thuật toán nhân và bình phương đa thức có lặp.
Chương II: Các mã xyclic trên vành đa thức.

5
Trình bày các mã xyclic, phân hoạch và các mã xyclic cục
bộ, quan hệ giữa mã xyclic và xyclic cục bộ, một số kết quả nghiên cứu
về mã xyclic cục bộ.
Chương III: Thiết kế và mô phỏng trên FPGA.
Trình bày tổng quan về FPGA, xây dựng lưu đồ thực hiện thuật
toán nhân và bình phương đa thức có lặp trên FPGA, xây dựng bộ mã
xyclic (15, 5), xây dựng bộ mã xyclic cục bộ (27, 9) với các chương
trình thiết kế và mô phỏng minh họa cho từng nội dung.
Phụ lục: Các chương trình thiết kế và mô phỏng trên FPGA
Phụ lục được chia thành 3 phần: P1, P2 và P3. Đó là chương trình
nguồn của các thiết kế trên FPGA như thuật toán nhân và bình phương
đa thức có lặp, mã hóa và giải mã bộ mã xyclic (15,5) với phần tử sinh
(024), mã hóa và giải mã bộ mã xyclic cục bộ (27,9).
CHƯƠNG 1: CƠ SỞ ĐẠI SỐ
1.1. MỞ ĐẦU
Trong chương này nghiên cứu về thuật toán nhân và bình phương
đa thức có lặp. Cấu trúc của chương gồm ba phần: Lý thuyết đại số,
vành đa thức, thuật toán nhân và bình phương đa thức có lặp. Hai phần
đầu là cơ sở lý thuyết giúp cho việc tiếp cận và hiểu sâu về thuật toán,
phần thứ ba sẽ nghiên cứu lưu đồ thực hiện thuật toán trên Z

n
, F
p
m

một số ví dụ áp dụng, cuối chương đưa ra các đề xuất ứng dụng thuật
toán và hướng nghiên cứu cho các chương tiếp theo.
1.2. LÝ THUYẾT ĐẠI SỐ
1.2.1. Những vấn đề cơ bản về lý thuyết số
Định lý 1.1:
Với mỗi số nguyên n  2 ta luôn phân tích được dưới dạng tích
lũy thừa các số nguyên tố:
1 2 3
1 2 3
. .
k
e e e e
k
n p p p p

Trong đó: p
i
là các số nguyên tố khác nhau.
e
i
là các số nguyên dương.
Ví dụ 1.1:
2 2
36 2 .3


;
3
88 2 .11

;
3 2
600 2 .3.5

;
2 2 2
900 2 .3 .5


Định nghĩa 1.10:

6
Các số nguyên modulo n (ký hiệu Z
n
) là tập các lớp tương
đương của các số nguyên {0, 1, 2, , n-1}. Các phép tính trong
Z
n
được thực hiện theo modulo n.
1.2.2. Những vấn đề cơ bản về cấu trúc đại số
Các hệ thống đại số là những hệ thống tuân theo những quy luật
và quy tắc nhất định, thông thường đó là những quy luật dùng trong hệ
thống số. Những hệ thống số cụ thể như nhóm, vành, trường.
1.3. VÀNH ĐA THỨC
1.4. THUẬT TOÁN NHÂN VÀ BÌNH PHƯƠNG ĐA THỨC
1.4.1. Thuật toán nhân và bình phương lặp trong Z

n

INPUT: a

Z, và số nguyên 0

k < n có biểu diễn nhị phân:
0
2
t
i
i
i
k k



(hay
0 1 2 1
0 1 2 1
.2 .2 .2 .2 .2
t t
t t
k k k k k k


     
)
OUTPUT:
mod

k
a n

B1: Đặt b = 1; Nếu k = 0 thì return (b)
B2: Đặt A = a
B3: Nếu k
0
=1 thì gán b = a
B4: for (i = 1; i <= t; i++)
B41: Đặt A = A
2
mod n
B42: Nếu k
i
= 1 thì đặt b = A*b mod n
B5: return (b)
1.4.2. Thuật toán nhân và bình phương lặp cho đa thức trong F
p
m

INPUT:


m
p
g x F
 , a

Z, và số nguyên
0 1

m
k p
  
có biểu diễn:
0
2
t
i
i
i
k k



hay
0 1 2 1
0 1 2 1
.2 .2 .2 .2 .2
t t
t t
k k k k k k


      .
(Trường







/
m
p
p
F x f x
  , trong đó




p
f x x
 là một đa
thức tối giản bậc m trên
p

).
OUTPUT:
   
mod
k
g x f x
 
 

B1: Đặt s(x) = 1; Nếu k = 0 thì return (s(x))
B2: Đặt G(x) = g(x)
B3: Nếu k
0

= 1 thì gán s(x) = g(x)
B4: for (i = 1; i <= t; i++)
B41: Đặt G(x) =G(x)
2
mod f(x)

7
B42: N
ế
u k
i

= 1 thì
đ

t
s(x)
=
G(x)*s(x)
mod
f(x)

B5: return (s(x))
Ví dụ 1.15:




22
7 6 4 2 9 3

1 mod 1
x x x x x x x x
       

Ta có


7 6 4 2
1
g x x x x x x
     
,


9 3
1
f x x x x
   
, k =
22
10
= 10110 (t = 4). Kết quả tính toán theo thuật toán như sau:
i

k
i

G(x)

s(x)


0

0


7 6 4 2
1
g x x x x x x
     

1
1

1
5 3 2
1
x x x
  

5 3 2
1
x x x
  

2

1
6 2
1

x x x
  

8 7 5 2
x x x x
  

3

0
6 3 2
1
x x x
  

8 7 5 2
x x x x
  

4

1
3
1
x


7 5 4 3 2
x x x x x x
    


1.4.3. Các ứng dụng của thuật toán trên vành đa thức
Thuật toán có nhiều ứng dụng trong việc tìm kiếm phần dư của
phép chia lũy thừa cho một số, lũy thừa của một đa thức cho một đa
thức, ứng dụng xây dựng các bộ mã hóa, mật mã: mã xyclic; Mật mã
AES, hệ mật RSA, Chor-Rivest, Merkele-Hellman, Elgamal, Rabin,
Nội dung luận văn tập trung tìm hiểu phương pháp thực hiện
thuật toán nhân và bình phương đa thức ở dạng tổng quát trên FPGA, từ
đó xây dựng thuật toán tạo nhóm nhân cho các mã xyclic và xyclic cục
bộ trên vành x
n
+ 1, là thành phần quan trọng cho việc xây dựng các bộ
mã xyclic và xyclic cục bộ ứng dụng cho việc mã hóa dữ liệu.
1.5. KẾT LUẬN
Chương này đã trình bày những kiến thức cơ bản nhất về cơ sở lý
thuyết đại số, vành đa thức và thuật toán nhân và bình phương có lặp
trên Z
n
và F
p
m
. Từ đó tìm hiểu những ứng dụng của thuật toán này.
Trong nội dung nghiên cứu của luận văn sẽ tập trung vào nghiên cứu
ứng dụng FPGA để thực hiện thuật toán áp dụng cho việc xây dựng các
bộ mã xyclic trên vành đa thức phục vụ cho việc mã hóa dữ liệu.

8
CHƯƠNG 2:
CÁC MÃ XYCLIC TRÊN VÀNH ĐA THỨC
2.1. MỞ ĐẦU

Trong chương này, chúng ta sẽ đi tìm hiểu về các nhóm nhân trên
vành đa thức và phân hoạch tổng quát vành đa thức làm cơ sở lý thuyết
cho việc nghiên cứu mã xyclic và xyclic cục bộ trên vành đa thức, về
cách thức xây dựng bộ tạo mã và giải mã cho các mã này. Nội dung của
chương cũng đề cập đến mối quan hệ giữa mã xyclic và xyclic cục bộ,
cũng như các kết quả nghiên cứu về mã xyclic cục bộ và một số hướng
mở trong việc nghiên cứu về mã này.
Chương này giúp cho việc xây dựng và kiểm tra các bộ mã sẽ
được nghiên cứu, thực hiện thiết kế và mô phỏng trong chương 3.
2.2. MÃ XYCLIC TRUYỀN THỐNG
2.2.1. Vành đa thức
Định nghĩa 2.1: Nếu
R
là một vành giao hoán thì vành đa thức
[ ]
R x
là một vành được tạo bởi tập tất cả các đa thức của biến
x

các hệ số trong
R
. Hai phép toán là phép cộng và phép nhân đa
thức theo modulo
1
n
x

.
Trong trường nhị phân
(2)

GF
, vành đa thức ký hiệu
2
[ ]/ 1
n
x x

Z .
2.2.2. Ideal của vành đa thức
Định nghĩa 2.2: Ideal I của vành đa thức gồm tập các đa thức
( )
a x

là bội của một đa thức
( )
g x
thỏa mãn:

( )| 1
n
g x x

(
( )
g x
là ước của
1
n
x


).

deg ( ) mindeg ( )
g x r a x
 
với
( ) I, ( ) 0
a x a x
  
.
Ký hiệu Ideal trong vành đa là
I ( )
g x
 .
2.2.3. Định nghĩa mã xyclic
Định nghĩa 2.5:
Mã xyclic (n,k) là Ideal I=

g(x)

của vành đa thức
2
[ ]/ 1
n
x x

¢ .

9
Định nghĩa 2.6:

Mã xyclic là một bộ mã tuyến tính có tính chất sau: Nếu a(x)là
một từ mã thì dịch vòng của a(x) cũng là một từ mã thuộc bộ mã này.
2.2.4. Ma trận sinh và ma trận kiểm tra của mã xyclic
Vì mã xyclic
( , )
n k
là một mã tuyến tính nên có thể mô tả nó
thông qua ma trận sinh G chứa k véc tơ hàng độc lập tuyến tính. Ma
trận G được viết như sau :
1
( )
. ( )

( )
k
g x
x g x
G
x g x

 
 
 

 
 
 
 



( )| 1
n
g x x

, nên
1 ( ). ( )
n
x g x h x
  , hay:
1
( )
( )
n
x
h x
g x


Đa thức
( )
h x
được gọi là đa thức kiểm tra.

( ). ( ) 0 mod 1
n
g x h x x
 
nên các đa thức
( )
g x


( )
h x
được
gọi là các đa thức trực giao.
2.3. PHÂN HOẠCH VÀNH ĐA THỨC VÀ MÃ XYCLIC CỤC BỘ
2.3.1. Nhóm nhân xyclic trên vành đa thức
Định nghĩa 2.7:
Nhóm nhân xyclic (CMG-Cyclic Multiplicate Group) trong vành
đa thức là tập hợp các phần tử đều bằng lũy thừa của một phần tử gọi là
phần tử sinh. Trong vành đa thức có nhiều nhóm nhân xyclic, số nhóm
nhân bằng số các lũy đẳng có thể có trong vành.
2 3
{ , , , }
m
A
    

Trong đó: A là nhóm nhân xyclic; α là phần tử sinh (đa thức
sinh); m là cấp của nhóm nhân, cũng chính là cấp của phần tử sinh

.
Cấp của nhóm là tổng số các phần tử của nhóm.
Phần tử đơn vị của nhóm chính là một lũy đẳng
( )
e x
có cấp bằng 1.

10
Định nghĩa 2.8:

Trong vành đa thức
2
[ ]/ 1
n
x x

Z , nếu tồn tại một đa thức mà
bình phương của nó lại bằng chính nó thì được gọi là đa thức lũy
đẳng và ký hiệu là
( )
e x
:
2 2
( ) ( ) ( )
e x e x e x
  .
Các lũy đẳng
( )
e x
xác định trên cơ sở phân tích chu trình
s
C
.
2.3.2. Các loại nhóm nhân
2.3.3. Phân hoạch vành đa thức
2.3.4. Mã xyclic cục bộ trên vành đa thức
2.3.4.1. Khái niệm về mã xyclic cục bộ
Định nghĩa 2.12: Mã xyclic cục bộ là một mã tuyến tính có các dấu
mã là một tập con không trống tuỳ ý các lớp kề trong phân hoạch
của vành đa thức theo một nhóm nhân xyclic

A
.
2.3.4.2. Cách biểu diễn mã XCB
a) Biểu diễn theo trưởng lớp kề
Định nghĩa 2.13: Lớp kề là một tập hợp có tối đa k phần tử mà giá
trị của chúng được xác định từ phần tử trưởng lớp kề theo một biểu
thức toán học (trưởng lớp kề là phần tử đứng đầu tiên trong một lớp
kề). Nếu gọi giá trị của trưởng lớp kề là

0
thì các phần tử khác
trong lớp kề được tính:


0
.2 mod ; 1, 1
i
i
p i k
    

b) Biểu diễn theo ma trận sinh
Đây là cách biểu diễn truyền thống, mã XCB
( , )
n k
là mã hệ
thống tuyến tính nên có thể mô tả theo ma trận sinh


,

G n k

k
hàng và
n
cột.


, ,
, .
k k k n k
G n k I P


Với
,
k k
I
là ma trận đơn vị cấp k,
,
k n k
P

là ma trận kiểm tra.
2.3.4.3. Phương pháp xây dựng mã xyclic cục bộ
Bước đầu tiên để xây dựng mã XCB là xác định tất cả nhóm nhân
xyclic có thể có trên một vành đa thức, các nhóm nhân này có cấp khác
nhau. Sau đó xác định nhóm nhân sinh để xây dựng các cấp số nhân.

11

Trên cơ sở đã xác định được các nhóm nhân sinh, ta chọn phần
tử đầu tiên nhân với nhóm nhân sinh (lớp kề sinh) sẽ tạo được cấp số
nhân xyclic tương đương với lớp kề mới, phần tử sinh của lớp kề
(trưởng lớp kề) tương ứng số hạng đầu của cấp số nhân xyclic. Nếu ta
gắn dấu thông tin cho nhóm nhân sinh ta sẽ tạo được mã XCB tương
ứng với nhóm nhân đó. Có hai cách chọn nhóm nhân sinh:
+ Cách thứ nhất: Chọn nhóm nhân đơn vị I, các dấu thông tin
được gắn vào nhóm nhân đơn vị I để tạo mã.
+
Cách thứ hai:
Chọn nhóm nhân sinh là nhóm nhân xyclic bất kỳ.
2.3.4.4. Các lớp mã XCB
a) Mã xyclic cục bộ tự trực giao (XCBTTG)
Định nghĩa 2.14:
Mã XCBTTG là bộ mã XCB (n, k) với:
1
; 1
m
i
k
i
n C m k

  


Với k dấu thông tin là k phần tử của nhóm nhân xyclic cấp k.
Các dấu kiểm tra là một tập con không trống nào đó của tất cả các
phần tử trong nhóm kề liên tiếp (từ nhóm kề thứ hai trở đi).
b) Mã XCB có khả năng trực giao (XCBCKNTG)

Mã XCBCKNTG là một lớp quan trọng tiếp theo sau mã
XCBTTG. Hệ TKT có khả năng trực giao (TKTCKNTG) cho một cặp
dấu mã. Mạch giải mã của nó phải dùng hai cấp ngưỡng (hoặc nhiều
hơn) mới tìm được dấu cần giải mã, trong khi đó mã XCBTTG chỉ cần
một cấp ngưỡng.
Định nghĩa 2.15:
Mã XCBCKNTG là mã XCB
2 1
0
,
m
i
k
i
C k


 
 
 

với
1
0
2
k
m

 
 

 
 
.
Mã XCBCKNTG được xây dựng theo nguyên tắc sau:
 k dấu thông tin là k phần tử của nhóm nhân xyclic cấp k.


Các dấu kiểm tra được lấy là các phần tử ở các lớp kề lẻ liên tiếp.

12
lập được
1
2
k

 
 
 
bộ mã
Mỗi giá trị của k có thể
XCBCKNTG.
2.3.5. Phương pháp giải mã ngưỡng
Có nhiều phương pháp giải mã cho mã xyclic và XCB, trong số
đó phương pháp giải mã ngưỡng là một phương pháp khá hiệu quả và
có sơ đồ giải mã đơn giản. Các phương pháp giải mã ngưỡng bao gồm:
 Giải mã ngưỡng theo đa số các tổng kiểm tra (GMĐS)
 Giải mã ngưỡng trên đa số 1 biểu quyết (GMĐS+ 1), giải mã
ngưỡng trên đa số 2 biểu quyết (GMĐS + 2).
Các phương pháp giảm mã ngưỡng đều sử dụng các tổng kiểm tra
(TKT) trực giao, hoặc các tổng kiểm tra có khả năng trực giao.

2.4. QUAN HỆ GIỮA MÃ XYCLIC CỤC BỘ VÀ MÃ XYCLIC
TRUYỀN THỐNG
Từ quan điểm xây dựng mã xyclic và XCB ta thấy có thể thực
hiện việc mô tả mã xyclic thông thường theo quan điểm xây dựng các
mã XCB dựa trên phân hoạch vành đa thức.

Các phân hoạch của vành đa thức
n lẻ n tùy ý n chẵn
V
àn
h c
á
c l
ớp

đồng dư
V
àn
h c
á
c
c

p s

nh
â
n xyclic
có công bội
( )

a x

V
àn
h c
á
c l
ớp

c
á
c
phần tử liên hợp
P
h
â
n ho
ạch
c
ực

tiểu
( ) 1
a x


P
h
â
n ho

ạch

chuẩn
( )
a x x


P
h
â
n ho
ạch

c
ực

đ
ại

ord ( ) max
a x



Mã xyclic
Mã tuyến
tính ngẫu
nhiên
Shannon
Mã xyclic

cục bộ
Mã xyclic
truyền
thống

Hình 2.1: Các phân hoạch của vành đa thức và các lớp mã tuyến tính

13
2.5. CÁC KẾT QUẢ NGHIÊN
CỨU VỀ MÃ XCB
2.6. KẾT LUẬN
Trong chương này đã nghiên cứu về các mã xyclic và xyclic cục
bộ trên vành đa thức, về các nhóm nhân, các kiểu phân hoạch vành đa
thức, phương pháp mã hóa, giải mã, mối quan hệ giữa mã xyclic và
xyclic cục bộ. Ngoài ra có thống kê các kết quả nghiên cứu về mã
xyclic cục bộ, cũng như tham khảo các hướng nghiên cứu mở.
CHƯƠNG 3: THIẾT KẾ VÀ MÔ PHỎNG TRÊN FPGA
3.1. GIỚI THIỆU
Trong những chương trước đã nghiên cứu về cơ sở lý thuyết số,
vành đa thức, thuật toán nhân và bình phương đa thức có lặp, các mã
xyclic trên vành đa thức. Nội dung chương này là tìm hiểu tổng quan về
công nghệ FPGA, xây dựng các thuật toán nhân và bình phương đa
thức có lặp trên FPGA (dạng tổng quát và trường hợp riêng), làm cơ sở
cho việc tạo ra các nhóm nhân cho các bộ mã hóa xyclic và xyclic cục
bộ. Tiếp đó sẽ nghiên cứu xây dựng các bộ giải mã thực hiện trên
FPGA dựa trên phương pháp giải mã ngưỡng để tạo thành các bộ mã
xyclic hoàn chỉnh (gồm cả mã hóa và giải mã).
3.2. TỔNG QUAN VỀ FPGA
Những ưu điểm của FPGA đối với mã hoá, mật mã: Dễ dàng
chuyển thuật toán; Dễ dàng cập nhật thuật toán; Mang lại hiệu quả về

cấu trúc; Hiệu quả về tài nguyên; Khả năng thay đổi thuật toán
3.3. THỰC HIỆN MẠCH NHÂN VÀ BÌNH PHƯƠNG ĐA THỨC TRÊN
FPGA
Trong mục nghiên cứu hai phần: thứ nhất là xây dựng thuật toán
nhân và bình phương đa thức có lặp trên FPGA dạng tổng quát, thứ hai
là xây dựng thuật toán cho trường hợp đa thức f(x) = x
n
+ 1.
3.3.1. Thuật toán áp dụng cho f(x) tổng quát
Từ thuật toán được trình bày trong chương 1, ở đây ta tiến hành
xây dựng lưu đồ thực hiện thuật toán trên FPGA như hình 3.3.
Trong lưu đồ sử dụng các thuật ngữ và cách trình bày theo ngôn
ngữ mô tả phần cứng VHDL.

14


15
Hình 3.1: Lưu đồ thuật toán nhân và bình phương đa thức thực hiện
trên FPGA
Giải thích lưu đồ: Thuật toán được thực hiện theo hai phần chính
- Phép nhân:
Thực hiện theo phương pháp nhân hai số nhị phân thông thường,
đầu ra là g_d <= gx * g_gen; Thực tế ở đây là phép nhân của (n-1) bit
trọng số thấp trong của mảng gx với g_gen (là mảng (n-1) bit), kết quả
thu được là g_d (là mảng (2n-2) bit).
- Phép lấy dư:
+ Phương pháp thứ nhất: Sử dụng phép bù 2. Tuy nhiên phương
pháp này không phù hợp với lập trình trên VHDL.
+ Phương pháp thứ hai: Thực hiện phép chia như chia hai số nhị

phân thông thường. Chia giá trị bit từ trọng số cao xuống bit có trọng số
thấp. Chú ý sử dụng một mảng để lưu dữ liệu số bị chia, một mảng để
lưu dữ liệu số chia, sử dụng phép dịch vòng trái để dịch vòng số chia
đến cùng vị trí bit giá trị 1 có trọng số cao nhất rồi tiến hành phép
XOR. Kết quả sau mỗi phép XOR (giữa số bị chia với số chia đã dịch
vòng) được lưu đè trong mảng chứa dữ liệu số bị chia. Phép chia sẽ
dừng lại khi trọng số bit 1 lớn nhất lưu trong mảng chứa số bị chia nhỏ
hơn trọng số bit 1 lớn nhất lưu trong mảng chứa số chia (cụ thể là phép
chia dừng lại sau (n-2) nhịp). Và phần dư chính là giá trị (n-1) bit trọng
số thấp nhất chứa trong mảng số bị chia.
- Lặp đến lũy thừa k: Thuật toán nhân và lấy dư được thực hiện lặp đi
lặp lại đến k lần, đảm bảo thực hiện nhân và mode lũy thừa k.
3.3.2. Thuật toán áp dụng cho f(x) = x
n
+ 1
Chi tiết trình bày trong luận văn.
3.4. XÂY DỰNG BỘ MÃ XCB (15, 5)
Phần này sẽ đi nghiên cứu và thực hiện các công việc xây dựng
một bộ mã hóa XCB (15,5). Muốn xây dựng bộ mã này cần phải làm
hai phần việc như sau: Thứ nhất, là xây dựng bộ mã hóa theo phương
pháp xây dựng mã XCB đã nêu ở chương 2; Thứ hai, đó là xây dựng bộ
giải mã theo phương pháp giải mã ngưỡng.

16
Trong phần này ta xây dựng bộ mã (15,5) cho đa thức sinh
có cấp là 15 (cấp cực đại của vành)





2 4
1 024
a x x x    .
Trước hết nghiên cứu phương pháp xây dựng bộ mã, sau đó thực hiện
thiết kế và mô phỏng bộ mã trên FPGA.
3.4.1. Phương pháp xây dựng bộ mã
Thực hiện thuật toán nhân và bình phương đa thức


2 4
1
a x x x
  
trên


5
2
/( 1)
x x

Z , ta sẽ xác định nhóm nhân CMG A.




                             
 
024 , 034 , 1 , 013 , 014 , 2 , 124 , 012 , 3 , 023 , 123 , 4 ,
134 , 234 , 0

i
A a x


Mã cyclic được xây dựng theo nhóm nhân A sẽ là mã (15,5,7).
Đây là mã hệ thống với ma trận sinh như sau:
1 1 0 1 1 0 0 1 0 1 0 0 0 0 1
0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 0 1 1 1 0 1 1 0 0 1 0
0 1 0 1 0 0 0 0 1 1 1 0 1 1 0
1 1 0 0 1 0 1 0 0 0 0 1 1 1 0
G
 
 
 
 

 
 
 
 

Trong ma trận sinh G, ta có thể thấy:
 Cột thứ nhất 1
(10101)
tương ứng với
a(x)=(024)
.
 Cột thứ nhất 2
(10011)

tương ứng với
2
a (x)=(034)
.
 …
 Cột thứ nhất 15
(10000)
tương ứng với
15
a (x)=(0)
và phần tử
này là phần tử cuối cùng của nhóm nhân A.
Trong nhóm nhân CMG A, có
2 4 3
(1 )
x x x
  
3
(024) (1)
 
.
Do vậy, ta thấy rằng cột thứ i của
G
dịch chuyển so với cột thứ
 
1
th
i  sang phải 3 vị trí. Thuật toán mã hóa của mã cyclic dựa trên
nhóm nhân CMG:



5
mod( 1)
i
G a x x
 
 
 

Ta có sơ đồ thực hiện mã hóa như hình 3.5. Trong đó 5 ô X
0
, X
1
,
X
2
, X
3
, X
4
chứa 5 bit thông tin, sau mỗi nhịp xung đồng hồ sẽ có 1 bit
tại đầu ra. Kết quả là từ 5 bit thông tin ban mã hóa theo xung nhịp
thành 15 bit để phát đi.

17

Hình 3.2: Sơ đồ mã hóa mã (15,5,7) với thức sinh (024)
* Giải mã: Thuật toán giải mã sẽ tuân theo luật giải mã ngưỡng 2 cấp:
 Cấp ngưỡng đầu tiên: hệ TKTTG với cặp dấu thông tin (0)+ (1)
(01) = (0) + (1) = (024) + (124) = (034) + (134)

= (013) + (3) = (014) + (4) = (012) + (2)
= (023) + (123)
 Cấp ngưỡng thứ 2 với dấu thông tin (0) trong cặp dấu (0)+ (1).
(0) = (01) + (1) = (12) + (012)
= (23) + (023) = (34) + (034)
= (04) + (4) = (01) + (12) + (2)

18
1
a
2
a
3
a
4
a
5
a
6
a
7
a
8
a
9
a
10
a
11
a

12
a
13
a
14
a
15
a
12 15
a a

9 12
a a

6 9
a a

3 6
a a

3 15
a a


Hình 3.3: Sơ đồ giải mã cyclic (15, 5) trên


5
2
/( 1)

x x


Trong mã này, khoảng cách Hamming sẽ là: d
0
=7; sửa sai được 3
bit. Sơ đồ giải mã của mã này được minh họa tại hình 3.6.
Hoạt động: 15 nhịp đầu đưa từ mã nhận vào các ô nhớ.
Nhịp Giải mã Nhịp Giải mã Nhịp Giải mã Nhịp Giải mã Nhịp Giải mã
16
(01)
19
(12)
22
(23)
25
(34)
28
(04)
31
(0)
34
(1)
37
(2)
40
(3)
43
(4)
3.4.1. Thiết kế và mô phỏng trên FPGA

Mô hình thử nghiệm thuật toán mã hóa và giải mã cyclic cục bộ
trên vành Z
2
[x]/x
5
+1 tức vành Z
5
bằng FPGA như hình 3.7.

Hình 3.4: Sơ đồ mô hình thử nghiệm dưới dạng RTL

19
a) Thiết kế mạch mã hóa
Sơ đồ thiết kế mạch mã hóa như hình 3.8. Thành phần mạch bao
gồm một thanh ghi lưu trữ thông tin cần mã hóa, các cổng AND và
XOR để thực hiện.

Hình 3.5: Sơ đồ mã hóa thông tin theo nhóm nhân xyclic
b) Thiết kế mạch giải mã
Khối DeCoding gồm: 5 nhánh để thực hiện giải mã song song cả
5 bit thông tin Io(0:4). Mỗi nhánh gồm: Mạch đệm dịch vòng trái;
Mạch tính tổng kiểm tra “S”; Mạch giải mã ngưỡng “M”.

Hình 3.6: Sơ đồ RTL của mạch khối DeCoding
Kết quả tổng hợp, cấu hình và mô phỏng sử dụng FPGA
XC3S500E-4CPG132 như ở hình 3.10 và hình 3.11.

20



Hình 3.70: Kết quả tổng hợp và cấu hình Hình 3.11: Kết quả mô phỏng
3.5. XÂY DỰNG BỘ MÃ XCB (27, 9)
Trong phần này ta xây dựng bộ mã XCB (27,9) được xây dựng từ
3 cấp số nhân xyclic lấy trong phân hoạch vành đa thức


9
2
/ 1
Z x x


thành các CGP cấp 9 [12]. Trước hết nghiên cứu phương pháp xây
dựng bộ mã, sau đó thực hiện thiết kế và mô phỏng bộ mã trên FPGA.
3.5.1. Phương pháp xây dựng bộ mã
Mã XCB (27,9) được xây dựng từ 3 cấp số nhân xyclic lấy trong
phân hoạch vành đa thức


9
2
/ 1
Z x x

thành các CGP cấp 9. CGP1
chính là nhóm nhân xyclic đơn vị (là đa thức thông tin). Chọn CGP4
(trưởng lớp kề là (7)) và CGP6 (trưởng lớp là (11)) làm các dấu kiểm
tra. Do CGP4 và CGP6 là 2 lớp kề lẻ liên tiếp, cho nên mã này sẽ là mã
XCBCKNTG.
Biểu diển mã XCB này theo trưởng lớp kề thì có dạng {1, 7, 11}.

Sơ đồ mã hóa cho mã XCB này ở hình 3.12.

Hình 3.8: Sơ đồ mã hóa XCB {1, 7, 11}

21
Số nhịp dịch của đa thức thông tin, lớp kề 1 và lớp kề 2 là 9
nhịp; Tổng cộng sau 27 nhịp thì được toàn bộ từ mã.
* Giải mã: Đây là mã XCBCKNTG nên đi xây dựng hệ TKTCKNTG
+ Cấp ngưỡng đầu tiên: Hệ TKTCKNTG cho cặp dấu (01).
(01) = (0) + (1) = (2) + (012)
= (3) + (013) = (8) + (018)
= (078) + (178) = (1) + (5) + (567)
= (124) + (028) + (456) + (568)
+ Cấp ngưỡng thứ 2 với dấu thông tin (0) trong cặp dấu (0)+ (1).
(0) = (01) + (1) = (12) + (012)
= (01) + (12) + (2) = (12) + (23) + (013)
= (01) + (08) + (018) = (78) + (08) + (7)
= (08) + (8) = (67) + (067)
Trong mã này, khoảng cách Hamming sẽ là: d
0
= 7; sửa sai được
3 bit. Sơ đồ giải mã XCB (27, 9) với 3 lớp kề {1, 7, 11} như hình 3.13


Hình 3.13: Sơ đồ bộ giải mã XCB {1, 7, 11}
3.5.2. Thiết kế và mô phỏng trên FPGA
Mô hình thử nghiệm thuật toán mã hóa và giải mã cyclic cục bộ
trên vành Z
2
[x]/x

9
+1 tức vành Z
9
bằng FPGA như hình 3.14.

22

Hình 3.9: Sơ đồ mô hình thử nghiệm dưới dạng RTL
a) Thiết kế mạch mã hóa
Sơ đồ thiết kế mạch mã hóa như hình 3.15. Thành phần mạch bao
gồm một thanh ghi lưu trữ thông tin cần mã hóa, các cổng AND và
XOR để thực hiện.

Hình 3.10: Sơ đồ mã hóa thông tin theo 3 nhóm nhân thuộc 3 lớp kề xyclic
b) Thiết kế mạch giải mã
Khối DeCoding gồm: 9 nhánh để thực hiện giải mã song song cả
9 bit thông tin Io(0:8). Mỗi nhánh gồm: Mạch đệm dịch vòng trái;
Mạch tính tổng kiểm tra “S”; Mạch giải mã ngưỡng “M”.

23

Hình 3.11: Sơ đồ RTL của mạch khối DeCoding
3.6. KẾT LUẬN
Trong chương này, đã nghiên cứu và xây dựng được các lưu đồ
thực hiện thuật toán nhân và bình phương đa thức có lặp trên FPGA.
Kết quả thuật toán ứng dụng để xây dựng các các nhóm nhân cho các
bộ mã hóa xyclic và xyclic cục bộ. Thực hiện giải mã theo phương

24
pháp giải mã ngưỡng trên FPGA. Xây dựng được các bộ mã

hóa và giải mã ngưỡng, giúp ta xây dựng được các bộ mã xyclic và
xyclic cục bộ thực hiện trên FPGA với một số ví dụ như đã khảo sát.
KẾT LUẬN VÀ KIẾN NGHỊ
Đề tài “Ứng dụng FPGA thực hiện thuật toán nhân và bình
phương trên vành đa thức” với những nội dung đã thực hiện được
như sau:
 Tìm hiểu về cơ sở lý thuyết số, vành đa thức và thuật toán
nhân và bình phương đa thức có lặp trên Z
n
, F
p
m
với các ví
dụ minh họa cho thuật toán.
 Tìm hiểu các mã xyclic trên vành đa thức, phương pháp
phân hoạch vành theo các nhóm nhân xyclic.
 Tìm hiểu phương pháp mã hóa và giải mã cho các mã
xyclic. Về mặt kỹ thuật việc mã hóa được thực hiện bằng
các bộ cộng modul 2 và bộ nhân đa thức, việc giải mã thì
sử dụng phương pháp giải mã ngưỡng theo đa số chỉ bao
gồm các bộ cộng modul 2 và bộ so sánh ngưỡng.
 Nghiên cứu xây dựng lưu đồ thuật toán cho phép nhân và
bình phương đa thức có lặp trên vành đa thức. Xây dựng
được lưu đồ thuật toán cho đa thức f(x) tổng quát và đa
thức f(x) = x
n
+ 1.
 Xây dựng mạch thực hiện và mô phỏng trên FPGA việc
tạo ra các nhóm nhân xyclic.
 Xây dựng mạch thực hiện và mô phỏng trên FPGA cho các

mã xyclic (15,5) trên vành đa thức x
5
+ 1; mã xyclic (27,9)
trên vành đa thức x
9
+ 1.
Hướng nghiên cứu tiếp theo:
- Nghiên cứu xây dựng mạch thực hiện thuật toán cho các bộ mã
trên các vành đa thức khác. Nghiên cứu xây dựng mô hình mã hóa và
giải mã dữ liệu dựa trên mã XCB và thực hiện trên FPGA.
- Tiếp tục nghiên cứu các ứng dụng cho các bộ mã hóa, mật mã
dựa trên thuật toán nhân và bình phương đa thức.

×