FPGA thay th các chíp SSI trong m ch ng u nhiên 55... DANH M.C CH/ VI0T T1T AES Advanced Encryption Standard ASIC Application-Specific Integrated Circuit ASSP Application-Specific Standa
Trang 4Em c ng xin g i l i c m n t i gia ình, b n bè, ng nghi p và các
ng i ã th ng xuyên ng viên, khích l giúp em trong su t quá trình
c tinh th n làm vi c, thái nghiên c u khoa h c nghiêm túc c a th y
M c dù em ã c g!ng hoàn thành tài v i t$t c n% l c c a b n thân
nh ng ch!c ch!n s& không tránh kh"i nh ng thi u sót Em kính mong nh n
c s c m thông và t n tình ch b o c a Quý Th y Cô và các b n
M t l n n a, em xin chân thành c m n !
Thái Nguyên, tháng 10 n m 2015
Nguy n H ng Nhanh
Trang 52.1.2.2 Phép bi n #i SubBytes và InvSubBytes 22 2.1.2.3 Phép bi n #i ShiftRows và InvShiftRows 24 2.1.2.4 Phép bi n #i MixColumns và InvMixColumns 25
Trang 61.3 H mã hoá khoá công khai 29
2.1 C% s) khoa h c c*a các thi t b kh/ trình 39 2.2 Khái quát v0 m1t s công ngh c-ng hóa hi n nay 40
2.3.3.1 FPGA s d)ng cho các m ch tích h p có ng d)ng c bi t 55 2.3.3.2 FPGA dùng cho thi t k m ch ng u nhiên 55 2.3.3.3 FPGA thay th các chíp SSI trong m ch ng u nhiên 55
Trang 72.3.3.4 FPGA ng d)ng cho ch t o m u 55 2.3.3.5 FPGA ng d)ng cho ch t o máy tính 55 2.3.3.6 FPGA ng d)ng trong các thi t b tái c$u hình 56
3.1.4 Kh i CPU và kh i Data c a b gi i mã 65 3.1.5 Thi t k chi ti t các kh i ch c n ng c a b mã hóa 67 3.1.6 Thi t k các kh i ch c n ng c a b gi i mã 70 3.1.7 Thi t k chi ti t cho kh i KeyExpansion 72
3.1.10 S d)ng ch cài t ECB cho gi i pháp 75
3.2.2 C$u trúc ph n c ng FPGA th c hi n AES 79
PH L C
Trang 8DANH M.C CH/ VI0T T1T
AES Advanced Encryption Standard
ASIC Application-Specific Integrated Circuit
ASSP Application-Specific Standard Product
CLB Configurable Logic Block
DES Data Encryption Standard
DSP Digital Signal Processor
EEPROM Electrically Eraseable Programmable Read Only Memory EPROM Eraseable Programmable Read Only Memory
FPGA Field-Programmable Gate Array
GF(28) Tr ng Galois
GPP General Purpose Processor
HDL Hardware Description Language
MPGA Mask-Programmable Gate Array
NIST Institute of Standards and Technology
PAL Programmable Array Logic
PLA Programmable Logic Array
PLD Programmable Logic Device
PROM Programmable read-only Memory
RISC Reduced Instruction Set Computer
VHDL Verilog Hardware Description Language
Trang 9DANH M C B NG
B/ng 1.2 S bit c lo i b" khi i qua PC1 11
Trang 10DANH M C HÌNH
Hình 1.17 Mã hoá v i khóa mã và gi i mã khác nhau 29
Hình 2.4 Công ngh l p trình c u chì ngh ch PLICE 51 Hình 2.5 Công ngh l p trình c u chì ngh ch ViaLink 52 Hình 2.6 Công ngh l p trình EPROM transistor 53 Hình 2.7 Minh h a kh n ng c$u hình l i c a FPGA 60
Hình 3.2 S thu t toán kh i data c a b mã hóa 63
Trang 11Hình 3.3 S thu t toán kh i KeyExpansion 64
Hình 3.5 S thu t toán kh i gi i mã - D ng 1 66 Hình 3.6 S thu t toán kh i gi i mã - D ng 2 67
Trang 12T+ sau chi n tranh th gi i l n th nh$t và nh$t là t+ sau chi n tranh
th gi i l n th hai n nay, ã xu$t hi n hàng lo t máy mã c dùng b o
m t thông tin t+ các hãng s n xu$t máy mã trên th gi i nh : Cryto - AG, Greytax (Th)y SQ), BBG (Nh t B n), E10 (Nga), Racal (Anh), Mills (Áo), Siemens ( c) ã ph n nào áp ng c yêu c u b o m t thông tin Các máy mã v c b n g m hai y u t t o thành là thu t toán/gi i mã (ph n m m)
và ph n c ng cài t thu t toán ó [3]
Hi n nay, các lo i máy mã v n c dùng r ng rãi ch y u là b o
m t thông tin trong an ninh, qu c phòng, ngo i giao Ru i m c b n c a các lo i máy mã này, nh$t là các máy mã i n t và vi i n t là t c nhanh,
có an toàn thông tin r$t cao [7] [8], nh ng nh c i m c b n c a t$t c các lo i máy mã là giá thành m%i s n ph'm th ng !t [3], do ó các lo i máy
mã ít c s d)ng trong th ng m i Trong lúc ó, s hòa nh p c ng ng
mà ng i ta hay g i là “Toàn c u hóa” ã d n n s bùng n# thông tin và các
m ng truy n thông mang tính toàn c u Nh v y, vi c nghiên c u a ra
nh ng công ngh mã hóa v+a b o m cho an toàn b o m t thông tin v+a r,
ti n và l i r$t “m m d,o” ng d)ng cho an toàn, b o m t thông tin trong
th ng m i là c n thi t [7]
Cùng v i s phát tri n c a máy mã, các h m t mã ra i ã áp ng
ph n l n các yêu c u t ra trong b o m t thông tin nh DES (Data Encryption Standard), 3 DES (Triple Data Encryption Standard), AES (Advanced Encryption Standard), IDEA (International Data Encryption Algorithin) thu n l i, các thu t toán mã/gi i mã ó hoàn toàn công khai, an toàn (v m t
Trang 13mã) nPm ( vi c gi bí m t khóa mã Nh v y, các thu t toán mã/gi i mã nêu trên hoàn toàn áp ng yêu c u t ra v b o m t thông tin
Tuy v y, xét v m c b o m t thông tin thì an toàn m t mã ó ch ( m c t ng i (an toàn thông tin cho th ng m i) vì n u khóa mã hóa b
l thì b o m t hoàn toàn m$t hi u l c, do thu t toán mã hóa c công khai hóa M t khác, do vi c mã hóa và gi i mã b(i các thu t toán trên c
th c hi n hoàn toàn trên máy tính PC nên b n thông báo c n mã s& c l u trong máy PC tr c khi nó c mã hóa và b n thông báo ó c ng c l u trong máy PC u cu i sau khi nó c khôi ph)c l i (gi i mã), k, t$n công s& l i d)ng nh c i m này l$y c!p thông tin m t cách d2 dàng (ta g i ó
là t$n công ti n mã hóa và h u mã d ch) [3] kh!c ph)c các nh c i m nêu trên, nhi u nhà khoa h c ã nghiên c u các công ngh nhPm c ng hóa các thu t toán nêu trên vì các thu t toán chung và các thu t toán m t mã nói riêng có th th c hi n c trên hardware, software hay firmware Trong ó hardware bao g m c các linh ki n có ch c n ng c nh (các ICs logic) l n các linh ki n có ch c n ng l p trình c ng c (PLD, ASIC, FPGA ) Tuy nhiên, trong th gi i hardware có nhi u công ngh khác nhau, trong ó có chíp FPGA là m t trong nh ng chíp có t c x lý nhanh và có các c tính
t i u riêng có th ng d)ng không nh ng trong th ng m i mà còn trong an ninh - qu c phòng [6] [7] [8] Vì nh ng lý do ó, d i s h ng d n c a Th y giáo Ti n sQ H V n Canh em ã ch n h ng tìm hi u, nghiên c u cho tài
lu n v n t t nghi p cao h c c a mình là: “S d ng công ngh c ng hóa FPGA trong mã hóa d li u”
Trang 14Ph m vi c a tài:
+ Tìm hi u t#ng quan v h m t mã hi n i;
+ Tìm hi u t#ng quan v công ngh c ng hóa FPGA;
+ Mô t t#ng quát thu t toán mã hoá c xu$t tri n khai trên n n công ngh FPGA
Trong ch ng này gi i thi u k t qu tìm hi u v lý thuy t h m t mã,
t p trung vào s phát tri n c a H mã hóa khoá i x ng (mã hóa khóa bí
m t) và H mã hóa khoá phi i x ng (mã hóa khóa công khai), m t s công c) toán h c s d)ng trong lý thuy t m t mã liên quan n lu n v n
Ch$%ng 2: T&NG QUAN V CÔNG NGH FPGA
N i dung ph n này mô t công ngh c ng hóa FPGA; ng th i c ng khái quát hóa m t s công ngh c ng hóa hi n có
Ch$%ng 3: GI I PHÁP TRI2N KHAI THU T TOÁN AES TRÊN
N N FPGA
H8 A=3A<S3? T3?K5A=3UVS3W A=3=> >3T8DT3?K> A3J8:>3B85'A36738CD3AVA=3B:C3EFG3?KLA3BXA=3A=8 3MNOE3W :3?KLA3BDB3SL53B 53; 3=> >3T8DT3; >3B8 3 3cài t cho thu t toán mã hóa trên công ngh FPGA
Ph n k t lu+n: Tóm t!t các k t qu t c, c p nh ng h n ch b$t c p c a tài và h ng phát tri n ti p c a tài lu n v n
Trang 15Ch$%ng 1 T&NG QUAN V M'T S( H M T MÃ HI N I
Trong ch ng này gi i thi u k t qu tìm hi u v lý thuy t h m t mã
hi n i, t p trung vào s phát tri n c a H mã hóa khoá i x ng (mã hóa khóa bí m t) và H mã hóa khoá phi i x ng (mã hóa khóa công khai), m t
s công c) toán h c s d)ng trong lý thuy t m t mã liên quan n lu n v n
Mô t tóm l c k t qu tìm hi u m t s thu t toán mã hóa hi n i th ng
c s d)ng c ng hóa
1.1 C% s) khoa h c c*a h m+t mã
Mã hóa là công c) c b n c a vi c m b o an toàn d li u Th i kY
s khai, con ng i ã s d)ng nhi u ph ng pháp b o v các thông tin bí
m t Ban u, m t mã h c c s d)ng ph# bi n trong quân i, qua nhi u
cu c chi n tranh, vai trò c a m t mã ngày càng quan tr ng và mang l i nhi u thành qu không nh", chúng là n n t ng cho m t mã h c ngày nay
Ngày nay, các ng d)ng mã hóa và b o m t thông tin ang c s d)ng ngày càng ph# bi n trong các l-nh v c khác nhau trên th gi i, t+ các l-nh
v c an ninh, quân s , qu c phòng cho n các l-nh v c dân s nh th ng m i
i n t , ngân hàng… V i s phát tri n ngày càng nhanh chóng c a Internet và các ng d)ng giao d ch i n t trên m ng, nhu c u b o v thông tin trong các
h th ng và ng d)ng i n t ngày càng c quan tâm và có ý ngh-a h t s c quan tr ng Cùng v i s phát tri n c a khoa h c máy tính, các nghiên c u và
ng d)ng c a các chu'n mã hóa ngày càng tr( nên a d ng h n [8]
Hi n nay, có nhi u ph ng pháp mã hóa, m%i ph ng pháp có u,
nh c i m riêng Tùy theo yêu c u c a môi tr ng ng d)ng mà ng i ta có
th dùng ph ng pháp này hay ph ng pháp kia Có nh ng môi tr ng c n
ph i an toàn tuy t i b$t k th i gian và chi phí, nh ng có nh ng môi tr ng
l i c n gi i pháp “dung hòa” gi a b o m t và chi phí Trong ph m vi lu n v n
c a mình, em t p trung vào 2 dòng mã hoá: H mã hóa khoá i x ng (mã hóa khóa bí m t), trong ó ch t p trung vào chu'n mã hóa d li u DES và
Trang 16Chu'n mã hoá nâng cao AES Riêng H mã hóa khoá phi i x ng (mã hóa khóa công khai), lu n v n c ng ch t p trung vào h mã hoá RSA và Elgamal
Là nh ng thu t toán ang c s d)ng r ng rãi hi n nay
1.1.1 Yêu c u c% b/n , i vAi h mã hóa
- B o m t: Cung c$p s bí m t cho các thông báo c l u gi bPng
là gi i mã (Decipherment) bi n #i quá trình mã hóa và gi i mã ng i làm m t mã luôn dùng khóa Thông th ng khóa c g i i nh m t ph ng pháp tin c y nào ó, mà sau ó ng i và máy s& s d)ng nó t o ra các b n
mã t c là các b n tin c n c b o v
M t h mã hóa là m t b 5 (P, C, D, K, E) tho mãn các i u ki n sau
- P là m t t p h p h u h n các b n rõ (PlainText), nó còn c g i là không gian b n rõ
Trang 17- C là t p h p h u h n các b n mã (CipherText), nó còn c g i là không gian b n mã M%i ph n t c a C có th nh n c bPng cách áp d)ng phép mã hóa Ek lên m t ph n t c a P
- K là t p h p h u h n các khóa hay còn g i là không gian khóa i
v i m%i ph n t k c a K c g i là m t khóa (Key) S l ng c a không gian khóa ph i l n “k, ch” không th i gian th m i khóa (ph ng pháp vét c n)
- E và D l n l t là t p lu t mã hóa và gi i mã V i m%i k c a K có m t quy t!c mã hóa ek: P C và m t quy t!c gi i mã t ng ng dk Z D M%i ek:
P C và dk: C P là nh ng hàm mà: dk(ek(x))=x v i m i b n rõ x Z P
Hình 1.1 Mô hình mã hóa
1.1.3 Vai trò c*a mã hóa
- Các h mã hóa ph i che d$u c n i dung c a v n b n rõ (PlainText)
m b o sao cho ch ng i ch h p pháp c a thông tin m i có quy n truy
c p thông tin, hay nói cách khác là ch ng truy c p không úng quy n h n
- T o các y u t xác th c thông tin, m b o thông tin l u hành trên h
Trang 181.2 H mã hoá khoá , i x-ng
H mã hóa khoá i x ng hay mã hóa chia s, khóa là mô hình mã hóa hai chi u, có ngh-a là ti n trình mã hóa và gi i mã u dùng chung m t khóa Khóa này c chuy n giao bí m t gi a hai i t ng tham gia giao ti p Khóa này có th c c$u hình trong software ho c c mã hóa trong hardware Mã hóa i x ng th c hi n nhanh nh ng có th g p r i ro n u khóa
b ánh c!p Do v y, h mã hoá này yêu c u ng i g i và ng i nh n ph i tho thu n m t khoá tr c khi thông báo c g i i, và khoá này ph i c
Chu'n mã hoá d li u DES (Data Encryption Standard), ra i kho ng
nh ng n m 1970, ti n s- Horst Feistel ã t n n móng u tiên cho chu'n mã hóa DES v i ph ng pháp mã hóa Feistel Cipher Vào n m 1976, C quan
B o m t Qu c gia Hoa KY (NSA) ã công nh n DES d a trên ph ng pháp Feistel là chu'n mã hóa d li u Kích th c khóa ban u c a DES là 128 bit
nh ng t i b n công b FIPS kích th c c rút xu ng 56 bit t ng t c
x lý và a ra các tiêu chu'n thi t k m t chu'n mã hóa d li u
DES th c hi n mã hóa d li u qua 16 vòng l p mã hóa, m%i vòng s d)ng m t khóa chu kY 48 bit c t o ra t+ khóa ban u có dài 56 bit [1] DES s d)ng 8 b ng hPng s s-box thao tác
Trang 191.2.1.2 T3ng quát
B/ng 1.1 Các giai o n mã hoá c a DES
Giai o n 1 B n rõ ch ==== B n rõ s (r ng nh phân) Giai o n 2 B n rõ s ====
(Chia thành) Các o n 64 bit rõ s Giai o n 3 64 bit rõ s ==== 64 bit mã s
Giai o n 4 Các o n 64 bit mã s (K t n i) ==== B n mã s (d ng nh phân) Giai o n 5 B n mã s ==== B n mã ch
Qua b ng trên cho th$y, thu t toán DES t p trung th c hi n Giai o n
3 c a qui trình mã hóa ó là chuy n #i b n rõ s v i 64 bit thành b n mã
v i 64 bit
Ph ng pháp DES mã hóa kh i thông tin x có dài 64 bit v i khóa k
có dài 56 bit thành kh i y có dài 64 bit
N n t ng xây d ng kh i c a DES là s k t h p n gi n c a các kQ thu t thay th và hoán v b n rõ d a trên khóa, ó là vòng l p DES s d)ng
16 vòng l p áp d)ng cùng m t ki u k t h p các kQ thu t trên kh i b n rõ
Thu t toán ch s d)ng các phép toán s h c và logic thông th ng trên các s 16 bit, vì v y nó d2 dàng th c hi n vào nh ng n m 1970 trong i u
ki n v công ngh ph n c ng lúc b$y gi
Trang 21Quá trình có 16 vòng th c hi n gi ng nhau trong quá trình x lý Ngoài
ra có hai l n hoán v u IP và cu i IP-1, hai hoán v này c s d)ng v i m)c ích a thông tin vào và l$y thông tin ra
Mu n vào vòng mã hóa thì kh i thông tin x ban u 64 bit c chia làm hai kh i, m%i kh i 32 bit Hàm f làm bi n #i m t n a c a kh i ang x
lý v i m t khóa con t ng ng v i vòng mã hóa
Trong u ra c a hàm có hàm f c k t h p v i n a kh i còn l i bPng phép toán XOR và hai ph n c trao #i x lý trong chu trình k ti p
C th c hi n các vòng nh v y cho t i vòng cu i cùng thì hai ph n không b trao #i n a, chính vì i u này mà quá trình mã hóa và gi i mã là
gi ng nhau
1.2.1.3 TFo khóa
Quá trình mã hóa c th c hi n 16 vòng, m%i vòng sinh ra 1 khoá con
Ki Nh v y, t+ khóa ban u t o ra 16 khóa con cho 16 vòng l p t ng ng
Hình 1.4 S t o khóa
Trang 22Theo s ta th$y u tiên khóa K có dài 64 bit, sau ó c gi m
Nh v y các bit ( v trí 8, 16, 24, 32, 40, 48, 56, 64 b lo i b" và 56 bit thu c chia làm hai ph n, m%i ph n 28 bit, các ph n c x lý c l p nhau Các ph n này c d ch 1 hay 2 bit ph) thu c vào vòng ó S bit d ch
c cho trong b ng sau
B/ng 1.3 S bit d ch chuy n Vòng 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
S bit d.ch 11 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Sau khi d ch bit, 56 bit này c ch n ra 48 bit B(i vì s th c hi n #i ch% th t các bit nh là s l a ch n m t t p con các bit, nó còn c g i là hoán v nén ho c hoán v l a ch n S th c hi n này cung c$p m t t p h p các bit cùng c v i u ra c a hoán v m( r ng B ng PC2 nh ngh-a hoán v nén (c ng g i là hoán v l a ch n) Ví d), bit ( v trí 33 c a khóa c d ch chuy n t i v trí 35 c a u ra và bit ( v trí 8 c a khóa b b" qua
Trang 23Nh v y sau khi i qua PC2 còn l i 48 bit, 48 bit này s& c s d)ng làm khóa K1 s d)ng trong vòng mã hóa
Hai ph n, m%i ph n 28 bit sau khi c d ch bit ( l n th nh$t, ti p t)c
d ch bit ( l n th 2 và qua b ng PC2 hoán v nén 48 bit và làm K2
Quá trình c ti p t)c nh v y ta thu c 16 khóa Ki (i=1…16)
V i kh i d liêu vào x 64 bit cho tr c, m t xâu bit x0 s& c xây
d ng bPng cách hoán v các bit c a x theo phép hoán v c nh ban u IP
Ta vi t x0=IP(x)=L0R0 trong ó L0 g m 32 bit u và R0 g m 32 bit cu i
Hình 1.5 Bi u di2n dãy 64 bit x chia thành 2 thành ph n L0,R0
1.2.1.5 Mã hóa chi ti t m1t vòng
Quá trình x lý các vòng là gi ng nhau, ta xét quá trình x lý c a m t vòng i v i 1≤ i ≤ 16
Trang 24Hình 1.6 S chi ti t m t vòng
Ta th$y: Li = Ri-1
Ri =Li-1 ⊕ f(Ri-1,Ki) Hàm f có hai tham s là Ri-1 và Ki và c th c hi n theo s sau:
Hình 1.7 S ho t ng c a hàm f
Ri-1 c m( r ng t+ 32 bit thành 48 bit nh s thay #i th t c a các bit bPng cách l p l i m t s bit nào ó và c hi u nh là m t s hoán v m(
r ng
Trang 25Hình 1.8 Hoán v m( r ng
xác nh ( u vào có 32 bit, bit nào c l p l i và xu$t hi n t i v trí nào c a u ra 48 bit ng i ta xác nh nh sau:
u vào có 32 bit chia làm 8 b , m%i b có 4 bit Bit u tiên và bit
cu i cùng c a m%i b t ng ng v i 2 bit c a kh i d li u ra, trong khi bit th
2 và bit th 3 c a m%i b t ng ng v i m t bit ( kh i d li u ra Ví d), bit (
v trí th 3 c a kh i d li u vào c chuy n t i v trí th 4 trong kh i d li u
ra, bit th 8 trong kh i d li u vào thì c chuy n t i v trí 11 và 13 trong
Nh v y 16 bit c a Ri c hoán v hai l n M c dù kh i d li u ra
r ng h n kh i d li u vào, nh ng m t kh i d li u vào ch có duy nh$t m t
kh i d li u ra
Trang 26Nh v y E(Ri-1) là m t dãy 48 bit Th c hi n phép toán XOR cho dãy bit E(Ri-1) v i khóa Ki Ta thu c dãy 48 bit B Bi u di2n B thành t+ng nhóm 6 bit B = B1B2B3B4B5B6B7B8
Giá tr n c xác nh bPng cách ghép bit b2b3b4b5 thành m t s 4 bit
Dãy 32 bit thu c bPng cách hoán v hoán v C theo quy lu t P nh$t
nh ây là k t qu c a hàm f(Ri-1,Ki) XOR v i Li-1 t o thành kh i Ri v i 32 bit
B/ng 1.7 Các h p S
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]
S1 [0] 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 [1] 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 [2] 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 [3] 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2 [0] 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 [1] 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 [2] 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 [3] 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
Trang 27C1t Hàng
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]
S3 [0] 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 [1] 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 [2] 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 [3] 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4 [0] 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 [1] 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 [2] 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 [3] 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S5 [0] 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 [1] 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 [2] 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 [3] 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6 [0] 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 [1] 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 [2] 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 [3] 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S7 [0] 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 [1] 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 [2] 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 [3] 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S8 [0] 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 [1] 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 [2] 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 [3] 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
P [0] 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 [1] 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
Trang 28H p hoán v P ch a kh i d li u 32 bit ra c a h p thay th S c hoán
v ti p trong h p P S hoán v này ánh x m%i bit d li u vào t i m t v trí trong kh i d li u ra, không có bit nào c s d)ng hai l n và c ng không bit nào b b" qua Nó c g i là hoán v tr c ti p
1.2.1.6 Hoán v cu i cùng
Hoán v cu i cùng là ngh ch o c a hoán v kh(i u c mô t theo b ng IP-1
T i vòng cu i cùng c a mã hóa DES thì n a trái và n a ph i không
c tráo #i cho nhau n a
Khi ó R16L16 c s d)ng nh kh i d li u ra c a hoán v cu i cùng
B/ng 1.8 Hoán v cu i cùng IP-1 C1t [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Hàng [0] 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 [1] 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 [2] 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 [3] 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
1.2.1.7 Gi/i mã DES
Quá trình gi i mã hoàn toàn t ng t v i quá trình mã hóa Nh ng quá trình mã hóa th c hi n hoán v IP tr c hoán v IP-1, còn gi i mã thì th c hi n hoán v IP-1 tr c hoán v IP Các khóa ph i c th c hi n trái ng c nhau
T c là n u mã hóa, khóa th c hi n cho các vòng l n l t là K1, K2,…, K16, thì
gi i mã là K16, K15,…, K2, K1 [1]
Ngoài ra, sau m%i chu trình t o khóa các bit c d ch ph i thay vì d ch trái nh khi mã hóa, và s bit d ch c l$y theo chi u ng c l i [1]
1.2.1.8 1 an toàn c*a thu+t toán
ã có r$t nhi u nghiên c u v dài c a khóa, s vòng l p và thi t k
h p S Trong ph ng pháp mã hóa này ch có h p S là khó hi u M i tính toán trong DES u là tuy n tính ngo i tr+ h p S, các h p S ch a các thành
ph n phi tuy n tính c a h là y u t quan tr ng nh$t i v i s an toàn c a h
th ng
Tính b o m t c a m t h mã hóa i x ng ph) thu c ch y u vào hai
y u t : ph c t p c a thu t toán và dài c a khóa
Trang 29Gi s ph ng pháp này an toàn v ph c t p c a thu t toán Có ngh-a là không có ph ng pháp nào phá v h th ng m t mã h n là c g!ng th m i khóa có th , còn g i là ph ng pháp vét c n N u khóa có dài 8 bit thì s& có 28= 256 khóa Nh v y mu n tìm ra khóa thì m$t nhi u nh$t
là 256 l n th khóa Thu t toán DES s d)ng khóa có dài 56 bit nên có 256khóa ây là con s r$t l n do ó vi c tìm ki m khóa là r$t khó kh n Gi s
có m t máy tính có th th m t tri u khóa trong m t giây, thì nó s& c n h n
2000 n m th h t khóa [1] [5] Các thành t u g n ây ch ra rPng th i gian
c n thi t gi i m t trang mã DES mà không bi t khoá là: Sau m t vài tháng trên Internet trong n m 1997; m t vài ngày trên thi t b ph n c ng t ng c ng trong n m 1998; sau 22 gi n u k t h p các bi n pháp trong n m 1999 Nh
v y v n có th oán c b n rõ sau m t kho ng th i nh$t nh, n u có ngu n
l c máy tính m nh Chính vì v y bây gi ng i ta ã xét m t vài bi n th c a DES nhPm nâng cao s c m nh cho DES [1]
an toàn c a H mã hóa DES có liên quan n các b ng Sj ngh-a là: Ngo i tr+ các b ng S, m i tính toán trong DES u tuy n tính, t c là vi c tính phép ho c lo i tr+ c a hai u ra c ng gi ng nh phép ho c lo i tr+ c a hai u vào, r i tính toán u ra [5] Các b ng S ch a ng nhi u thành ph n phi tuy n c a h m t, là y u t quan tr ng nh$t i v i m t c a h th ng Khi m i xây d ng h m t DES, thì tiêu chu'n xây d ng các h p S không
c bi t y Và có th các h p S này có th ch a các “c a s p” c gi$u kín Và ó c ng là m t i m m b o tính b o m t c a h DES và c ng theo [5] ch c a DES chính là kích th c không gian khoá: S khóa có th
là 256 , không gian này là nh" m b o an toàn th c s Nhi u thi t b chuyên d)ng ã c xu$t nhPm ph)c v) cho phép t$n công v i b n rõ ã
bi t Phép t$n công này ch y u th c hi n theo ph ng pháp “vét c n” T c là
v i b n rõ x và b n mã y t ng ng (64 bit), m%i khoá có th u c
ki m tra cho t i khi tìm c m t khoá K tho mãn eK (x) = y Nh v y,
nh n xét [5] cùng trùng l p v i nh n xét c a các tác gi khác H n ch c a DES chính là dài c a khoá
Trang 301.2.2 ChuBn mã hoá nâng cao AES
H85'A367389:3AVA=3B:C3EFG3\EW;:AB]W3FABKST?>CA3G?:AW:KW^3_<36 ?3
8 3 673 J89:3 `a3 6 ?3 \bC3 8:>3 A8<3 6 ?3 673 8 B3 A= >3 I 3 _<3 cC:A3 b:]6]A3 ;<3d>AB]A?3e>f6]A3 :3K:3;<3?K(3?8<A83B85'A3?+3A 63ghhg^3B8C3T8iT3U 3_j3BDB3J8 >3W 3_> 53>AT5?3B93JaB83?8 B3kgl3`>?3m 3W)A=3BDB3J89:3B93 3W<>3kgln3kog38C B3256 bit, l<36 ?3B85'A3WC3pS3`:A3?>L53B85'A3B :3qC:3rY3 :3K:3;<C3A 63
2001, nó c quy3 A83B8 3_<63;> B3; >3BDB3J8 >3W 3_> 53kgl3`>?3;<3BDB3J89:3B93 3W<>3kgln3kog38C B3gst3`>?3\WC3 93B@A3 ?3B8C3A93BDB3?LA3EFG-128, AES-
192, AES-256 t A=3 A=3; >3 3W<>3J89:3m 3W)A=)
1.2.2.1 T3ng quan mã hóa AES
Thu t toán mã hóa AES c công nh n vào n m 2000 và n tháng 11/ghhk3 B3BXA=3A8 A3_<3B85'A367389:3`(>3?#3B8 B3uAm?>?5?]3Cv3G?:AW:KWm3:AW3 w]B8AC_C=S3 \xuGw^n3 ?85 ?3 ?CDA3 673 89:3 EFG3 W :3 ?KLA3 A A3 ? A=3 B :3 6 ?3
673 e>fAW:]_3 B3 T8D?3 ?K> A3 `(>3 8:>3 A8<3 ?CDA3 8 B3 cC:A3 b]:6]A3 ;<3 d>AB]A?3e>f6]A3A= >3I [1]
w85 ?3?CDA367389:3EFG3_<3?85 ?3?CDA367389:3J8 >3; >3J89:3 >3U A=3WyA=3 367389:38C B3=> >3673J8 >3W 3_> 53128 bit3; >3 3W<>3J89:3m 3W)A=3_<3kgln3kog38C B3256 bitz3w85 ?3?CDA367389:3EFG3_<3?85 ?3?CDA3B93B$53?K{B3_ T3A=8-:3_<3?KCA=3|5D3?K}A8367389:3m&3?8 B38> A3A8> 53;@A=3_ T [11] [12]z3wKCA=36%>3;@A=3_ T3?8 B38> A3BDB3T8iT3`> A3 #>3A8P63`> A3 #>3J8 >3W 3_> 53K~3128 bit3?8<A83J8 >3W 3_> 53673128 bit3A= B3_ >3?KCA=3;@A=3_ T3B :3|5D3?K}A83=> >3673m&3?8 B38> A3BDB3T8iT3`> A3 #>3A= B3; >3|5D3?K}A83_ T3B :367389:3A8P63
`> A3J8 >3W 3_> 53673128 bit3?8<A83J8 >3W 3_> 53K~3128 bit [11] [12]z3x=C<>3K:3
m 3;@A=3_ T3B :3?85 ?3?CDA367389:3EFG3T8)3?85 B3;<C3 3W<>3B :3J89:3khn3kg38C B3k•3;@A=3? A=3 A=3; >3kgln3kog38C B3gst3`>?3 3W<>3J89:3 B3?8 38> A3Hình 1.9 M t vòng l p c a thu t toán mã hóa AES s d)ng khóa khác nhau
c tham chi u trong b ng S-Box và m%i vòng l p thì x lý m t kh i d li u
c bi u di2n nh m t ma tr n 4x4 kh i d li u này c g i là State [6]
Trang 31Kh(i t o
i:=1 Vòng mã hóa_gi i mã
i <vòng
Bi n #i cu i cùng
Trang 32#i này c th c hi n trong m%i vòng l p v i khóa khác bi t cho m%i vòng
w A=3? 3?KCA=3_ 53 38}A83 1.11 (b) i v i quá trình gi i mã các phép
bi n #i s& là ng c v i các phép bi n #i trong quá trình mã hóa l n l t
c g i là InvSubBytes(ISB), InvMixColumns(IMC), uA;G8>v?eC•m\uGe^n3
; >3J89:3J8DB3`> ?3B8C36%>3;@A=
Riêng i v i AddRoundKey là phép bi n #i c th c hi n trên phép toán XOR theo bit nên bi n #i ng c c ng chính là phép bi n #i c s d)ng trong quá trình mã hóa vì v y phép bi n #i AddRoundKey là gi ng nhau cho c hai quá trình mã hóa và gi i mã Các phép bi n #i c a thu t toán
mã hóa AES c th c hi n v i các a th c trên tr ng Galois GF(28) M%i giá tr và các h s trong vi c tính toán c a các phép bi n #i trong thu t toán
Trang 33(a) (b)
Hình 1.12 L u th c hi n SB và ISB
mã hóa AES c xây d ng trên m t words 8 bit, trên s hexadecimal ho c là các a th c có b c bPng 7 ho c nh" h n, các phép tính c ng trong thu t toán s& c th c hi n trên phép toán modulo 2
n v thông tin c x lý trong thu t toán AES là byte M%i byte xem nh m t ph n t c a tr ng Galois GF(28) c trang b phép c ng và phép nhân M%i byte có th c bi u di2n bPng nhi u cách khác nhau:
d ng nh phân (b7 b6 b5 b4 b3 b2 b1 b0), d ng th p l)c phân (h1h0) hay d ng a
th c có các h s nh phân ΣΣ
i = 7
2.1.2.2 Phép bi n ,3i SubBytes và InvSubBytes
N8iT3`> A3 #>3G5`IS?]m38}A831.12 (a) c th c hi n trên t+ng bytes
c a m t state Quá trình bi n #i c ng th c hi n trên hai phép toán c b n là:
q<63G5`IS?]m\^3?8 B38> A3T8iT3?8:S3?8 3BDB3`S?]3B :36 A=3?K A=3?8D>3
`PA=3 BDB83 m 3 W)A=3 6 ?3 ` A=3 ?8 3s-`CUn3` A=3?8 3A<S3_<3J8 3A=8 B83[10] ;<3B3UVS3W A=3`PA=3BDB83J ?38 T38:>3`> A3 >3m:5:
- Nhân ngh B83 C3 ?KLA3 ?K A=3 8 53 8 A3 OM3 (28^n3 3 T8 A3 ? 3 ƒhh„3 B3DA83U:3…3?8<A83B8aA83A9
-3†T3W)A=3`> A3 #>3Evv>A]3m:53(trên GF(2)):
Trang 34b’I = bi ‡ b(i+4) mod 8 ‡ b(i+5) mod 8 ‡ b(i+6) mod 8 ‡ b(i+7) mod 8 ‡ ci trong ó
0 <= I < 8 là bit th i c a byte b t ng ng và ci là bit th i c a byte c v i giá
ph c t p khi th c hi n trên ph n c ng Ng i ta ã ch ng minh c rPng phép bi n #i Subbyte là kh ngh ch có ngh-a là: V i m t byte A cho tr c
t n t i m t và ch m t byte Y th"a mãn B = subbyte(A) Do ó, ng i ta ã
a ra ph ng pháp ánh x u vào c a phép bi n #i subbyte qua m t b ng s-box (xây d ng theo các phép bi n #i trên) tìm u ra
I A=3?8 3s - `CU3 B3m 3W)A=3?KCA=38<63G5`IS?]m3\^3B93?8 3 B3`> 53W>2A3W >3W A=38]U:3[10] nh sau:
Trang 35B/ng 1.9 B ng th s-box c a AES
TKCA=3 93B8ˆA=38 A3A 53G1,13‰3ƒsŠ„3B93A=8-:3_<3=>D3?K 3?8:S3?8 3m&3 B3UDB3 A83`PA=3=>:C3B :38<A=3B93B8 3m 3s3; >3B ?3B93B8 3m 3Š3?KCA=3` A=3?KLA3
> 53A<S3? A=3 A=3; >3;> B3G’ 1,1 = {ed}
N8iT3`> A3 #>3A=8 B83 C3B :3G5`IS?]m3= >3_<3uA;G5`IS?]m38}A831.12 (b) thì c tính toán v i hai phép toán là nhân ngh ch o và phép bi n #i
ng c affine Phép bi n #i ng ch o c tính toán nh sau:
2.1.2.3 Phép bi n ,3i ShiftRows và InvShiftRows
N8iT3`> A3 #>3G8>v?eC•m3;<3uA;G8>v?eC•m3_<3BDB3T8iT3W B83`>?3?KLA36 ?3G?:?]z3T8iT3`> A3 #>3A<S3?8 B38> A3`PA=3BDB3_ A3_ ?3W B83?+3?KD>3|5:3T8 >3BDB3
`>?3(3; 3?Ka3k3B :38<A=3g3?8<A83; 3?Ka3•3B :38<A=3gn3; 3?Ka3k3B :38<A=3Š3?8<A83; 3
Trang 36?Ka3Š3B :38<A=3Š3;<3; 3?Ka3g3B :38<A=3Š3?8<A83; 3?Ka3•3B :38<A=3Šn3? A=3? 3A8 3
; S3W B833 bit3B :38<A=34 c bi u di2n nh hình 1.143;<3A= B3_ >3 >3; >3InvShiftRows:
Hình 1.14 L u th c hi n SR 2.1.2.4 Phép bi n ,3i MixColumns và InvMixColumns
N8iT3 `> A3 #>3 ‚>UHC_56Am3 ;<3 uA;‚>UHC_56Am3 B3 ?aA83 ?CDA3 ?KLA3 4-bytes words bi u di2n d i d ng c t c a m t State (8}A83 1.15) 4-bytes words này c bi u di2n nh là m t a th c b c 4 v i h s K trên tr ng GF(28) và c tính toán theo công th c:
Hình 1.15 Quá trình x lý MixColumns Phép toán c ng trong bi n #i MC và IMC c th c hi n theo toán t XOR v i t+ng h s trong a th c3 ` B3 •z3 x=C<>3 K:3 B@A3 B93 T8iT3 ?CDA3 A8VA3
?KCA=3`> A3 #>3‚H3;<3u‚H3 B3?aA83?CDA3?8]C3T8iT3?aA836CW5_C3; >3 :3?8 B3
X4‹k3 B3?K}A83`<S3A8 3BXA=3?8 B: M(X)=X4+1 (1.1)
Ta có nh ngh-a c a phép tính: Xj mod (X4+1)=Xj mod 4 (1.2)
Trang 37Công th c tính toán c a T8iT3A8VA3?KCA=3` B3‚H3;<3u‚H3?8]C3BXA=3
?8 B3(1.2) c tri n khai nh sau:
+ Cho m t a th c: a(X)= a3X3+a2X2+a1X+a0 (1.3) và m t a th c c nh: c(X)= c3X3+c2X2+c1X+c0 (1.4) thì công th c tính MC c tri n khai
d >3uA;‚>UHC_56Am3_<3T8iT3`> A3 #>3A=8 B83 C3B :3‚>UHC_56Am3;}3
; S3?KCA=3T8iT3`> A3 #>3uA;‚>UHC_56Am3 B3?aA83?CDA3?KLA3 :3?8 B3W(X)
Trang 38H8 3m 3xJ3_<3m 3`S?]m3B :3J89:3B8 3m 3 B3UDB3 A83A=:S3?+3 53;<3=>D3
?K 3B :3B8 3m 3_ A3_ ?3A8 3m:5•3•3? A=3 A=3; >3 3W<>3J89:3_<3128 bitn3t3? A=3A=3; >3 3W<>3J89:3m&3_<3192 bitn3l3? A=3 A=3; >3 3W<>3J89:3_<3256 bitz3w+3B8 3m 3xJ3T8iT3`> A3 #>3?KCA=3T8 A36(3K A=3J89:3m&3? C3K:3BDB3`S?]m3J89:3(ki^3
?> T3?8]C3m 3_ A=3`S?]m3m>A83K:3B A=3T8)3?85 B3;<C3 3W<>3B :3J89:3B5 >3ByA=3_ :3 B8 A3 J89:3 \eC5AW3J]S3 G]_]B?>CA^3B8C3BDB3;@A=3?KCA=3|5S3?K}A8367389:n3
=> >3673B :3?85 ?3?CDA367389:3EFGn3_ :3B8 A3J89:3B8C3;@A=3T8)3?85 B3;<C3G?:?]3 53;<C3B :36%>3;@A=3;<3B93=>D3?K 3B)3?8 3A8 3m:5•3x`‰•3? A=3 A=36:3
?K A3G?:?]33•U•n3x`‰t3? A=3 A=36:3?K A3G?:?]3•Utn3x`3‰l3? A=3 A=3; >36:3
?K A3G?:?]3•Uln3|5D3?K}A83A<S3 B3?8 38> A:
Trang 392.1.2.6 Quy trình gi/i mã
- Quy trình gi i mã c th c hi n qua các giai o n sau:
+ Th c hi n thao tác AddRoundKey u tiên tr c khi th c hi n các chu kY gi i mã
+ Nr − 1 chu kY gi i mã bình th ng: m%i chu kY bao g m b n bi n #i liên ti p nhau: InvShiftRows, InvSubBtes, AddRoundKey, InvMixColumns
+ Th c hi n chu kY gi i mã cu i cùng Trong chu kY này, thao tác InvMixColumns c b" qua
- Thu t toán gi i mã t ng ng: Trong thu t toán gi i mã c trình bày ( trên chúng ta th$y th t c a các hàm bi n #i c áp d)ng khác so
v i thu t toán mã hóa trong khi d ng c a danh sách khóa cho c 2 thu t toán
v n gi nguyên Tuy v y m t s c i m c a AES cho phép chúng ta có m t thu t toán gi i mã t ng ng có th t áp d)ng các hàm bi n #i gi ng v i thu t toán mã hóa (t$t nhiên là thay th các bi n #i bPng các hàm ng c c a chúng) i u này t c bPng cách thay #i danh sách khóa Hai thu c tính sau cho chúng ta m t thu t toán gi i mã t ng ng:
+ Các hàm SuBytes() và ShitRows() hoán #i cho nhau: có ngh-a là
m t phép bi n #i SubByte theo sau b(i i n #i ShiftRows() t ng ng
v i m t bi n #i ShiftRows() theo sau b(i m t bi n #i SubByte() i u này
c ng úng v i các hàm ng c c a chúng
+ Các hàm tr n c t InvMixColumns và MixColumns() là các hàm tuy n tính i v i các c t input có ngh-a là: InvMixcolumns(state XOR Round Key) = InvMixColumns(state) XOR InvMixColumns(Round Key)
Các c i m này cho phép th t c a các hàm InvSubBytes() và InvShiftRows() có th #i ch% Th t c a các hàm AddRoundKy() và InvMixColumns() c ng có th #i ch% mi2n là các c t c a danh sách khóa
gi i mã ph i c thay #i bPng cách s d)ng hàm InvMixColumns()
Trang 40Thu t toán gi i mã t ng ng c th c hi n bPng cách o ng c
th th c a hàm InvSubBytes() và InvShifRows(), và thay #i th t c a hàm AddRoundKey() và InvMixColumns() trong các l n l p sau khi thay #i cho giá tr round = 1 to Nr - 1 bPng cách s d)ng bi n #i invMixcoulumns() Các word u tiên và cu i cùng c a danh sách khóa không b thay #i khi ta áp d)ng ph ng pháp này Thu t toán gi i mã t ng ng cho m t c$u trúc
hi u qu h n so v i thu t toán gi i mã tr c ó
Tóm l i, trong các b c bi n #i c a thu t toán mã hóa AES c th c
hi n tính toán trên các a th c b c 7 c a tr ng GF(28) và a th c b c 4 trên
tr ng GF(24) Các phép tính trên a th c, các a th c này c a thu t toán mã hóa AES d2 l p trình, ki m soát th i gian tính toán trên máy tính [3]; h n n a, thi t k và dài khoá c a thu t toán AES (128, 192 và 256 bít) là an toàn
b o v các thông tin c x p vào lo i “M•T” và s c m nh c a h m t s&
t ng lên khi chúng c cài t trong công ngh c ng kh trình
1.3 H mã hoá khoá công khai
H mã hoá khoá công khai là h mã hoá, trong ó t+ khoá l p mã
“khó” tính c khoá gi i mã và ng c l i Trong m i tr ng h p, khoá l p
mã và khoá gi i mã là khác nhau H mã hoá này không yêu c u ng i g i và
ng i nh n ph i tho thu n m t khoá m t [1, 2, 5]
Khoá công khai (public key) cho m i ng i bi t l p mã, khoá m t (private key) ch thu c v m t ng i, dùng gi i mã [2]
Ð an toàn c a H mã hoá khoá phi i x ng ph) thu c vào khoá bí