1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bảo mật thông tin

106 11 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

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

Nội dung

Đ IH CQU CGIAHÀN I TRƯ NG Đ I H C CÔNG NGH NGUY N VINH SƠN B O M T THÔNG TIN LU NVĂNTH Hà N i - 2009 CSĨ M CL C M Đ U CHƯƠNG B 1.1 Khái nim 1.2 Đánh giá hm t 1.3 Cơ s toán hc CHƯƠNG H 2.1 H m t DES 2.1.1 Sơ ñ 2.1.2 Ho t ñ ng 2.1.3 Ch 2.1.4 2DES 3DES 2.2 H m t RC 2.2.1 RC5 2.2.2 RC6 2.3 H m t Gost 2814789 2.3.1 Ch 2.3.2 Ch 2.3.3 Ch 2.3.4 Th 2.4 H m t IDEA 2.5 H m t AES 49 2.5.1 Bi u di n kh i tin 50 2.5.2 Các phép toán 52 2.5.3 Gi i thu t 56 2.6 H m t khóa cơng khai RSA 70 CHƯƠNG TRI N KHAI 74 3.1 Ph n m m m t mã 74 3.2 B o v m t kh u 77 3.2.1 Nguy ch n b t 77 3.2.2 Gi i pháp bo v 79 K T LU N 83 KÝ HI U AES Advanced Encryption Standard DES Data Encryption Standard IDEA International Data Encryption Algorithm RC Rivest’s Cipher RSA Rivest, Shamir, Adleman ĐU M B o m t thơng tin nhu c ph i tìm cách ct gi u nh ng thông tin c v n th c ăn, nư c u ngu tri n cao, nhu c n ñ i T hi lên mt chi c “g này, ng i khác phi bi t cu n l i nh có đư ng kính b ng chi c “g 20, m ts thi t b máy Enigma ca ngư i Đ c K bư c sang m t trang s đó, h th ng m t mã máy tính ho t ñ ng v i nh ng phép tính ph chu i nh phân nên hi u qu B o m t thông tin th ng g n v chuy n đ i thơng tin t ngư c l i Vi c m t mã giúp ñ m b o tính bí m t c ch ng h n thơng tin tình báo, quân s m i Nhưng ñang bư c t gi n ti n sinh ho t hàng ngày, l m c đích ñó Gi nhân/ t ch cho vi c phát trin nhi u bomt ng d ng r d ch ngân hàng, th ương m i n t Ngồi ra, nh ng ngư i khơng có nhu c s d ng công ngh h th ng v Như v y, ph i quan tâm ñ n b o m t? Câu tr không d h n u ta phân tách lĩnh v c – Toán h c, Công ngh Chúng ta bi t r ng, b o m t r Thông tin – Truy m nh m , nhu c u b o m t mts t v ng ch c h u thu t p tính tốn,đ i s ngư i ta tách bit ñây ngành khoa h Và dù quan ñi m nào, vi c nghiên c u b o m t v n t nhi u ngư i làm ICT, c ũng nhi u nhà Toán h c B ta v n thư ng b t g p nh T i Vi t Nam, bi t có m H c vi n K Đih c ñào t ti ng Vi t r t khan hi m Trên th c t v i mong mu b o m t có ch thơng, hay b t c xúc tích v m t mã, nh ng h m t ph bi n nh t hi n nay, m t ph n m m mã hóa, gi i mã h c viên thit k theo Chu n m t mã Qu c gia Hoa Kỳ  AES Ngồi ra, h c viên xinđ xu t m t gi i pháp mi giúp b o v m t kh u mơ hình server/ client mà khơng s d ng giao th c b o m t Hà N i, 2009 Nguy n Vinh Sơn CHƯƠNG B O M T THÔNG TIN 1.1 Khái nim Trư c tìm hi u ni dung b o m t thông tin c n hi u m t s - Mã hóa : vi th hi - Gi i mã : vi có th - Thám mã: vi có th - Khóa : đ i lư ng thơng tin s - Mã kh - Mã dòng : ph ương th - H m dàng t H m t khóa cơng khai (h mtbtñixi mã ñư c gi ng): h m t có khóa mã hóa bí m t (r t khó đ tìm khóa gi i đư c cơng khai, cịn khóa gi mã t khóa mã hóa) n t ): thơng tin kèm d li u ñi n t nh m m c i ch c a d li u Ch ký s (ch ký ñích xácñ nh ngư - Ch ng th c s s ñ - H t s d - Hàm hash : hàm tính giá tr g n m t khóa cơng khai v ng khóa cơng khai ng, lưu tr Đánh giá hm t 1.2 Các h th ng m t mã (h nhìn chung, chúng có th c a thut toán thám chúng Ngưi ta chia đ ph c t p thu t tốn thành: - Đ ph c t p n tính - Đ ph c t p lũy th a - Đ ph c t p t a hàm m ũ - Đ ph c t p hàm m ũ Thu t tốn có đ ph c t p khơng v t qđ đư c) Thu t tốn có đ ph c t p khơng nh “khó” (khơng gi có th gi i đư c, ho c khơng gi i đư H mtt t thu - H m t an toàn t ñ i: nh ng hi u bi t v b n mã khơng thu h p đư c ñ b t ñ nh c a b n rõ ñ i v i ngư i thám mã, nói cách khác, hm t khơng th thámđư c lý thuy t H m t an toàn th c s : m i phương pháp thám mãñã bi t ñ u c n đ n th i gian tính tốn, hoc l c tính tốn vơ l n - H m t an toàn ch ng minh: vi H m t an toàn th thám, bi l l tương đương có th c a Pháp năm 1883, Auguste Kerckhoffs (1835 – 1903) ñ m th - H m t chưa t ng thámñư c th c t - Ho t ñ ng c a h m t, thi t b m t mã khơng c n gi bí m t - Khóa thành ph n bí m t nh t, t o m i, truy n ñi, ghi nh - H m t tương thích v i cơng ngh ñi n tín - Thi t b m t mã g - n nh , m t ngư i có th d dàng s d ng Cách s d ng d dàng Đ n ngo i tr quy t c th ñã tr nên lc h u, v n ph i hư ng ñ n quy t c l i 1.3 Cơ s c b o m t thơng tin liên quan đ n lý thuy t s Lĩnh v ñ ph v c t p tính tốn,đ i s i khn kh khơng gi i thi u chi ti t nh đ nh lý, gi Ký hi u gcd(a, b), lcm(a, b) nguyên a, b; x , x s ngun ln nh t khơng l khơng nh Nhóm (G, *) c u trúc ñ i s - Phép * có tính k t h p: a * (b * c) = (a * b) * c ( a, b, c  G) - T n t i ph n t trung hòa G  G: a * G = G * a = a ( a  G) - T n t i ph n t ñ i l p xG  G: a * x G = x G * a = G (v i m i a  G) Nhóm (G, *) g i nhóm giao hốn n u phép * cịn có tính giao hoán: a * b = b * a Vành (R, +, ) c u trúc ñ i s g m t p R phép toán +, R, th a mãn: - (R, +) nhóm giáo hốn - Phép có tính k - T n t i ph n t - Phép có tính phân ph i v i phép +: Vành (R, +, ) g i vành giao hoán n u phép cịn có tính giao hốn: a  b = b  a Ph n t trung hòa qR c a vành (R, +, ) g i ph n t trung hòa phép  Ph n t trung hịa c a nhóm giao hốn (R, +) g i ph n t trung hòa phép +, ký hi u qr Trong vành giao hoán, n u m i ph n t khácqr ñ u có ph n t xR Ỵ đ i l p phép, t “tr ng” R th a mãn a  xR = xR  a = qR, ta nói vành m Trư ng h u h n tr ng có s T p ña th c có h ph n t h u h n s thu c vành (tr ng) R, phép tốn cng, nhân đa th c th c hi n b i phép c ng, nhân h s R, t o nên vành (trư ng) ña th c R[x] Đ nh lý Fermat : [5] Cho s nguyên t p, n u gcd(a, p) = a (p1) ≡ (mod p) Gi i thu t Euclide m r ng: [5] Input: s nguyên không âm a, b (a ³ b) Output: d = gcd(a, b) s nguyên x, y tha mãn: ax + by = d N u b = d  a , x  , y  Tr v {d, x, y} Đ t x2  , x1  , y2  , y1  Khi b > 0, tính: q r x y a b x2 x y y1 Chuy n d  a , x  x2 , y  y2 Tr v {d, x, y} Trong Zp[x] (p nguyên t): Input: g(x), h(x)  Zp[x] Output: d(x) = gcd(g(x), h(x)) s(x), t(x)  Zp[x] th a mãn: s(x).g(x) + t(x).h(x) = d(x) 71 W Diffie M Hellman trình bày thu hút s quan tâm l n c a hc gi M t năm sau, R.L Rivest, A Shamir, L Adleman công b h m t RSA d a trênđ khó c a tốn phân tích s nguyên thành th a s nguyên t Gi s A c n g i b n tin ñ (n, e) n B m t cách bí mt Đ u tiên, B sinh khóa cơng khai ng b ng bư c: khóa riêng d tương - Ch n ng u nhiên s nguyên t l n p q khác - Tính n = pq  = (p – 1)(q – 1) - Ch n ng u nhiên s nguyêne th a mãn < e <  gcd(e, ) = - Tìm s nguyênd th a mãn < d <  ed ≡ (mod ) (s d ng thu t toán Euclide m r ng) Chú ý r ng,  = lcm(p – 1, q – 1) có th đư c s d ng thay cho  = (p – 1)(q – 1) đ khóa riêng d nh hơn, giúp gi i mã nhanh h ơn Ngoài ra, thành ph n p, q, ,  ph i ñư c h y th c hi n xong q trình sinh khóa, b i l chúng s phép tính khóa riêng d bit e Sau nh n đư c khóa cơng khai (n, e), A bi thu c ño n [0, n – 1] theo m e tính c = m mod n s ñư c g d gi i mã m = c mod n đ Ví d : B ch n s  = (p – 1)(q – 1) = 6007800, ch r ng tìm d = 422191 th (n, e) = (6012707, 3674911), khóa riêng d = 422191 A th c hi n mã hóa b đư c bi u di n b i m = 5234673: [5] Nh n đư c b n mã c, B tính m b ng khóa riêng d: d Cơng th c gi i mã m = c mod n ñư c c khóa, ed gcd(m, p) = 1, theo đ nh lý Fermat: ≡ (mod ) nên tn t i m t s mp1 Bi n ñ i v , nâng l ũy th a k(q – 1) r m1 k(p1)(q1) N u gcd(m, p) = p, hay m b trư ng h p, ta đ u có: med Hồn tồn t ương t : med L i có gcd(p, q) = 1, nên suy ra: med m m ñây, ph ương th c chuy n ñ i b n tin v s nguyên m ngư c l i ph i đư c gi bí m t ng u nhiên hóa đ tránh vic thám bng t ñi n Giá tr m c n th a mãn cácñi u ki n: 73 - m ≠ m ≠ (vì m =  c = 0, m =  c = 1) m ñ l n (vì n u m nh, me  n, phép module khơng có tác d ng, m tìm b ng cách khai ăcn b c e c a c) có th tốn hc có Vi c thám mã vi c gi i quy t m t hai v n đ đ khó tương ñương: - Phân tích s - nguyên n tha s nguyên t (tìm p, q th a mãn n = p.q) e Tìm m th a mãn m ≡ c (mod n) Vào n ăm 1999, máy tính kt n i m ng phân tích đư c s n có đ dài 512 bits th a s nguyên t Hi n m t máy tính cá nhân có th phân tích đư c s n dài 256 bits sau vài gi , tương lai, máy tính ưl ng t tính tốn nhanh n a Vì v y, h cịn mang đ n t c ñ m t RSA ñư c khuy n cáo s d ng đ dài khóa t i thi u 2048 bits, c p p, q c n ch n không g n p – 1, q – khơng có th a s ngun t nh , đ h n ch kh phân tích n Bên cnh phương pháp phân tích n, tìm d, hay dị m, RSA ph i đ i m t v i m t vài cách t n cơng khác Ví d m t cách tn cơng mà h m t khóa cơng khai nói chung ph i đ i m t t n cơng m o danh cách tn công này, C ch n b t thông tin A, B g i cho C g i cho A khóa cơng khai c l i tin r ng khóa cơng khai c mã d dàng Sau đó, C l i mã hóa v B đ u khơng bi h m t khóa cơng khai c key Infrastructure – PKI) Ngồi ra, RSA c ũng t pháp ph c t p d b n mã l a ch n ng d ng thư ng g p c a RSA t m t văn b n có ch tính giá tr mũ d mod n c ch ñi n t b n K t qu gi ng s ch ng t v ăn b n khơng b thay đ i sau ký ký ñi n t c a B, A tính giá tr mũ e mo 74 CHƯƠNG TRI N KHAI Trên môi trư ng Borland C++ Builder 6.0, h c viên trin khai thành công ph n m m m t mã theo chu n AES Ngồi ra, h c viên xinđ xu t gi i pháp bo v m t kh u mơ hình máy ch / máy khách (server/ client) không s d ng giao th c b o m t 3.1 Ph n m m m t mã Thu t toán sinh khóa, mã hóa, gi i mã theo h m t AES đư c nói đ n chương trư c Dư i đo n code c a chương trình h c viên trin khai: void _fastcall TfrmMain::cmdInputFileClick(TObject *Sender) { if(dlgOpen->Execute()) {txtInputFile->Text = dlgOpen->FileName;} } void _fastcall TfrmMain::cmdOutputFileClick(TObject *Sender) { if(dlgSave->Execute()) {txtOutputFile->Text = dlgSave->FileName;} } void _fastcall TfrmMain::cmdKeyFileClick(TObject *Sender) { if(dlgOpen->Execute()) {txtKeyFile->Text = dlgOpen->FileName;} } 75 void _fastcall TfrmMain::radNK4Click(TObject *Sender) {NK=4;} void _fastcall TfrmMain::radNK6Click(TObject *Sender) {NK=6;} void _fastcall TfrmMain::radNK8Click(TObject *Sender) {NK=8;} void _fastcall TfrmMain::radEncryptClick(TObject *Sender) {operation=OP_ENCRYPT;} void _fastcall TfrmMain::radDecryptClick(TObject *Sender) {peration=OP_DECRYPT;} void _fastcall TfrmMain::cmdDoClick(TObject *Sender) { TKey Key; TState State; NB=4; BYTE BlockSize = 4*NB; BYTE *buff = new BYTE[BlockSize]; int count; Key.LoadFromTextFile(txtKeyFile->Text.c_str()); Key.Expand(); FILE *fi = fopen(txtInputFile->Text.c_str(), "rb"); FILE *fo = fopen(txtOutputFile->Text.c_str(),"wb"); while(!feof(fi)) { memset(buff,0,BlockSize); count = fread(buff,1,BlockSize,fi); if(count

Ngày đăng: 11/11/2020, 21:32

w