nghiên cứu tìm hiểu số thuật toán, bảo đảm truyền thông tin mạng từ xây dựng chương trình ứng dụng thi từ xa

70 315 0
nghiên cứu tìm hiểu số thuật toán, bảo đảm truyền thông tin mạng từ xây dựng chương trình ứng dụng thi từ xa

Đ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

Đồ án tốt nghiệp Sơ đồ định danh ứng dụng lời mở đầu Với phát triển mạnh mẽ công nghệ thông tin giao lu thông tin ngày trở nên phổ biến mạng truyền thông_máy tính, yêu cầu bảo đảm an toàn thông tin đà trở thành yêu cầu chung hoạt động kinh tế xà hội giao tiếp ngời Lí thuyết mật mà đại, tiếp nối ngành mật mà truyền thông, nhng đợc xây dựng sở quan niệm bảo mật: phơng pháp bảo mật dựa vào độ phức tạp tính toán, đà cho ta giải pháp hữu hiệu Luận văn em vào nghiên cứu tìm hiểu số thuật toán, bảo đảm truyền thông tin mạng từ xây dựng chơng trình ứng dụng thi từ xa Nội dung luận văn gồm chơng: Chơng Các khái niệm thuật toán Chơng Sơ đồ định danh Chơng Một số ứng dụng Đồ án tốt nghiệp Sơ đồ định danh ứng dụng Chơng Các khái niệm thuật toán Một số khái niệm số học, đại số 1.1 Kí hiệu khái niƯm 1.1.1 KÝ hiƯu chia hÕt Cho a vµ b hai số nguyên dơng Số a chia hết cho sè b ký hiƯu lµ a : b ⇔ Tån t¹i n ∈ N cho a= b * n Khi ngời ta nói b ớc a ký hiệu: b | a 1.1.2 Ước số chung lớn Cho a b hai số nguyên dơng Ước số chung lớn a b số tự nhiên m lớn cho m | a vµ m | b Khi dã ký hiƯu UCLN(a, b) = m 1.1.3 Hai số nguyên tố Cho a b hai số nguyên dơng Số a số b đợc gọi nguyªn tè cïng ⇔ UCLN (a, b) = 1.1.4 §ång d module Cho n ∈ N, n ≠ vµ a, b ∈ Zn* Ký hiƯu a ≡ b (mod n) nghĩa a đồng d với b theo mod n tồn số nguyên b Zn* cho a= b + k * n Tøc lµ (a - b) = k * n, nh vËy n | (a – b ) 1.1.5 Mét sè tÝnh chÊt cđa ®ång d module (a ± b) ( mod n ) ≡ [( a mod n ) ± (b mod n)]( mod n) (a * b) ( mod n ) ≡ [( a mod n ) * ( b mod n)] (mod n) Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 1.1.6 Khái niệm nhóm Nhóm cặp (G, *) Trong G tập hợp khác rỗng, * phép toán hai G thoả mÃn ba điều kiện sau: Phép toán có tính kết hợp: ( x * y )* z = x * (y * z) víi mäi x, y, z ∈ G Cã phÇn tư trung lËp e ∈ G x * e = e * x = x víi mäi x ∈ G Víi mäi x G, có phần tử nghịch đảo x G x * x’ = x’ * x =e 1.1.7 Nhóm Cyclic Nhóm G đợc gọi nhóm Cyclic đợc sinh phần tử Tức có phần tử g G mà phần tử a x G tồn số n N để gn = a Khi g đợc gọi phần tử sinh hay phần tư nguyªn thủ cđa nhãm G VÝ dơ: Nhãm céng Z gồm số nguyên nhóm Cyclie có phần tử sinh Cấp G số phần tử G G có hữu hạn phần tử, G có vô hạn phần tử Ví dụ: Nhóm cộng Z gồm số nguyên nhóm Cyclic vô hạn Nếu không tồn số tự nhiên n để gn = e G có cấp Trong trờng hợp ngợc lại, tồn số tự nhiên nhỏ n mà g n = e G gồm n phần tử khác nhau: e, g, g2, g3, , gn-1 Khi G đợc gọi nhóm Cyclic hữu hạn cấp n Phần tử G đợc gọi có cấp d d số nguyên dơng nhỏ cho d = e Nã cã cÊp nÕu α = e ChÝnh lẽ trên, nhóm Cyclic đợc định nghĩa nh sau: Nhóm G đợc gọi nhóm Cyclic tồn số g cho phần tử G luỹ thừa nguyên g 1.1.8 Nhãm Cho G lµ mét nhãm, cho S G S S đợc gọi nhóm G nếu: Phần tử trung lập e cđa G n»m S S khÐp kÝn ®èi với luật hợp thành G ( tức x * yS với x, y S) Đồ án tốt nghiệp Sơ đồ định danh ứng dụng S khép kín phép lấy nghịch đảo G ( tøc x-1∈S víi mäi x ∈ S ) 1.1.9 Ký hiÖu Zn = { 0, 1, 2, ., n-1} Tức Zn tập số nguyên không âm < n TËp nµy cïng víi phÐp céng lËp thµnh nhãm Cyclic có phần tử sinh là nhóm hữu h¹n cã cÊp n Zn* = { e ∈ Zn, e nguyên tố với n} Tức e Đó tập số nguyên dơng < n, nhng nguyên tố với n đợc gọi tập Thặng d thu gọn theo mod n, lập thành nhóm với phép nhân mod n (n) số phần tử tập Zn* 1.1.10 Một số kết Những kết sau đà đợc chứng minh, nhắc lại để sử dụng: *Định lý Lagrange: Cho G lµ nhãm cÊp n vµ g ∈ G Khi cấp g ớc n *Hệ quả: Giả sử g Zn* có cấp m m ớc (n) Nếu g Zn* b(n) (mod n) Nếu p số nguyên tố (p) = p-1 Do với b Z* (tức b nguyên tố với p) Thì b(n) (mod n) hay bp-1 (mod n) *Định lý : Nếu p số nguyên tố Z* nhóm Cyclic Đồ án tốt nghiệp Sơ đồ định danh ứng dụng Chú ý: Theo định nghĩa ta có: phần tử Zn* có cấp d d số nguyên dơng nhỏ cho αd = e Zn*, tøc lµ αd (mod n) 1.2 Logarit rời rạc *Khái niệm Logarit rời rạc: Cho p số nguyên tố, phần tử nguyên thuỷ ZP, ZP* Logarit rời rạc việc giải phơng trình x = logα β (mod p) víi Èn x Hay ph¶i t×m sè x nhÊt cho: αx ≡ β (mod p) *Bỉ ®Ị : NÕu (a, n) = tồn a-1 Zn thoả mÃn a* a-1 (mod n) *Định lý ( Euler tổng quát): Nếu (a, n)=1 a(n) mod n =1 *Hệ quả: Với p số nguyên tố (a, p) = ap-1 (mod p) = 1.3 Thặng d bậc hai ký hiệu Legendre * Thặng d bậc hai: Cho p số nguyên tố lẻ, x số nguyên dơng p - x đợc gọi thặng d bậc hai mod p, phơng trình y2 x có lời giải * Ký hiệu Legendre: Cho p số nguyên tố lẻ, a số nguyên dơng Ký hiệu Legendre nh sau: a p nÕu a ≡ mod p a thặng d bậc hai mod p trờng hợp lại Đồ án tốt nghiệp Sơ đồ định danh ứng dông Function lagendre (a, n : longint) :longint; Var tam : longint; Begin If a mod n = then tam:=0 Else If (tinhmu (a,(n-1) div 2, n)=1) then Tam:=1 else tam:=-1; Lagendre:=tam; End; 1.4 Hµm mét phÝa vµ hµm cửa sập phía Hàm f(x) đợc gọi hàm mét phÝa nÕu tÝnh y = f(x) th× “ dƠ ”, nhng tÝnh x = f (y) l¹i rÊt “ khã ” -1 VÝ dơ : Hµm f(x) = x (mod p), với p số nguyên tố lớn, ( phần tử nguyên thuỷ) hàm phía Hàm f(x) đợc gọi hàm cửa sập phía nÕu tÝnh y = f(x) th× “ dƠ ”, tÝnh x = f -1 (y) l¹i rÊt “ khã ” Tuy nhiên có cửa sập z để tính x = f –1 (y) lµ “ dƠ ” VÝ dơ 2: Hµm f(x) = xa ( mod n) ( víi n tích hai số nguyên tố lớn n = p *q ) lµ hµm mét phÝa NÕu chØ biÕt a n tính x = f (y) rÊt khã nhng nÕu biÕt cưa sËp p vµ q tính đợc f 1(y) dễ 1.5 Thuật toán nghịch đảo Cho a Zn* , a-1 ( mod n ) = Mét sè thuËt to¸n tÝnh nghịch đảo: Cho a-1 chạy từ đến n-1 đến đợc a*a-1 (mod n) = Nếu biết ( n ) cần tính: a-1 a(n) (mod n ) Đồ án tốt nghiệp Sơ đồ định danh ứng dụng Dùng thuật toán Euclidean mở rộng nh sau: Đầu vào: b n Đầu ra: - nghịch đảo b theo mod n tồn - không tồn Function nghichdao(b,n:longint) :longint; Var Aa ,i:longint; Begin Aa:=0; For i:=1 to n If (b*i mod n) = then Aa:=i; nghichdao:=Aa; End; 1.6 Thuật toán phân tích thừa số Bài toán : Cho n tích hai số nguyên tố lớn p q, n = p*q, toán đặt biết n, có cách để tìm đợc p q không ? Hiện ngời ta cha có cách tính trực tiếp p, q hữu hiệu từ n trừ biết (n) Vì biÕt φ(n), ta cã: p*q = n φ(n) = (p-1)*(q-1) ⇒ p + q = n - φ(n) + Dựa vào định lý Viet p q nghiệm phơng trình: x2 - (n - (n) + ) * x + n = Giải phơng trình ta dễ dàng tìm đợc p q Ví dô: n = 84773093, φ(n) = 84754668 ⇒ q=9539, p=8887 Ngoài theo cách cổ điển, sử dụng thuật toán: {dau vao n daura: p tho¶ m·n p | n trờng hợp ngợc lại for i = to i Lenth ( B ) Then begin C := A; A := B; B := C; end; For i:= Lenth ( B ) Downto Do begin If ( i- ( Lenth ( A ) - Lenth ( B ))) > = Then ch1 := A( i- ( Lenth ( A ) - Lenth ( B ))) Else ch1 := ‘0’; ch2 := B( i ); Val( ch1, x, code ); Val( ch2, y, code ); Tg := x + y + chuc; chuc := Tg div 10; dv := Tg mod 10; KQ := str(dv) + KQ; end; If chuc Then KQ := str( chuc) + KQ; End 10 Đồ án tốt nghiệp Sơ đồ định danh vµ øng dơng 3.2 KiĨm tra danh tÝnh Khi ta Ên nót “Thùc hiƯn” giao diƯn kiĨm tra danh tÝnh sÏ hiƯn ra, lóc ®ã ngêi nhËn sÏ tù động nhập tham số trung tâm yêu cầu, ngời nhận nhận đợc dấu xác nhận 56 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng Sau đà có dấu xác nhận trung tâm kiểm tra xem có không Nếu trung tâm thông báo thí sinh hợp lệ Còn ngợc lại có thông báo thí sinh 57 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 3.3 Mà Hoá Đề thi muốn gửi phải đợc mà hoá để đảm bảo an toàn Trong trình gửi kẻ trộm lấy đợc giải mà đợc Đề thi không bị lộ 58 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng Đề thi thi đợc thực theo bớc nh sau: 59 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 3.4 Giải Mà Khi đà đợc xác nhận thí sinh tham gia dự thi, thí sinh có khoá để giải mà đề thi 60 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng Mà nguồn 4.1 KiÓm tra danh tÝnh Private Sub kiemtra_Click() Dim kq As String Dim kq1, kq2 As String Dim gama1% Dim kqtg As Double kq1 = TinhMu.Mu(CLng(alpha), CLng(y), CLng(p)) kq2 = TinhMu.Mu(CLng(v), CLng(r), CLng(p)) kq = TinhMu.Mu(BigNumber.Nhan(kq1, kq2), 1, CLng(p)) gama1 = gama Mod p If gama1 = kq Then MsgBox "§ã Alice",vbOKOnly + vbInformation, "Thông Báo" frmRSA.Show frmktdinhdanh.Hide Else MsgBox "Bạn đà giả mạo Alice", vbOKOnly + vbCritical, "Thông Báo" Exit Sub End If End Sub 61 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 4.2 §äc file doc Public Function ReadFile(TT As String) As String Dim sFile As String, pos As Integer, FileName$ Dim wdA As Object, wdD As Object, newfile As Boolean On Error Resume Next If Len(TT) = Then Exit Function End If sFile = TT newfile = False FileName = sFile Set wdA = GetObject(, "Word.Application") If Err = 429 Then Err.Clear Set wdA = CreateObject("Word.Application") If Err = 429 Then ' Khong tim thay Word MsgBox "Word not available !" Err.Clear Exit Function End If End If Set wdD = wdA.Documents.Open(sFile, ReadOnly:=True) If wdD = Null Then MsgBox "Can't not open : " & sFile GoTo ErrEnd End If pos = InStr(sFile, ".") If pos > Then Source = Left(sFile, pos - 1) Source = Source & ".txt" wdD.SaveAs FileName:=Source, FileFormat:=2 'wdFormatText End If wdD.Close ErrEnd: wdA.Quit Set wdD = Nothing Set wdA = Nothing ReadFile = Source End Function Public Function WriteFile(TT As String) As String 62 §å án tốt nghiệp Sơ đồ định danh ứng dụng Dim sFile As String, pos As Integer, FileName$ Dim wdA As Object, wdD As Object, newfile As Boolean On Error Resume Next If Len(TT) = Then Exit Function End If sFile = TT newfile = False FileName = sFile Set wdA = GetObject(, "Word.Application") If Err = 429 Then Err.Clear Set wdA = CreateObject("Word.Application") If Err = 429 Then ' Khong tim thay TextFile MsgBox "Word not available !" Err.Clear Exit Function End If End If Set wdD = wdA.Documents.Open(sFile, ReadOnly:=True) If wdD = Null Then MsgBox "Can't not open : " & sFile GoTo ErrEnd End If pos = InStr(sFile, ".") If pos > Then Source = Left(sFile, pos - 1) Source = Source & ".doc" wdD.SaveAs FileName:=Source, FileFormat:=0 'wdFormatDoc End If wdD.Close ErrEnd: wdA.Quit Set wdD = Nothing Set wdA = Nothing WriteFile = Source End Function 63 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 4.3 Mà hoá Public Function RoChu_RoSo() Dim rc$ Dim rs%, i% banroso = "c:\banroso.txt" Open Source For Input As #1 Open banroso For Output As #2 i=1 Do While Not (EOF(1)) rc = Input(1, #1) rs = Asc(rc) If i = Then kq = rs Else kq = kq & " " & rs End If i=i+1 Loop Print #2, kq Close (1) Close (2) End Function 'Chuyen Tu Ban Ro So Sang Ban Ma So Public Function RoSo_Maso() Dim ch$, k As Long, tam As Long, i%, ms$ banmaso = "c:\banmaso.txt" Open banroso For Input As #3 Open banmaso For Output As #4 i=1 Do While Not (EOF(3)) ch = Input(1, #3) st = ch Do If (EOF(3)) Then Exit Do End If ch = Input(1, #3) st = st & ch Loop While (ch " ") 64 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng k = Val(st) tam = TinhMu.Mu(k, frmRSA.txtb, frmRSA.txtn) ms = Str(tam) ms = Mid(ms, 2, Len(ms) - 1) Do While (Len(ms) < 6) ms = "0" & ms Loop If i = Then kq = ms Else kq = kq & " " & ms End If i=i+1 Loop Print #4, kq Close (3) Close (4) End Function Public Function MaSo_MaChu() Dim ch$, s1$, mc1$, mc2$, mc3$, kq$, k As Long, i%, chuc%, dv%, tram % banmaso = "c:\banmaso.txt" banmachu = "c:\banmachu.txt" Open banmaso For Input As #5 Open banmachu For Output As #6 i=1 Do While Not (EOF(5)) ch = Input(1, #5) s1 = ch Do If ((EOF(5))) Then Exit Do End If ch = Input(1, #5) s1 = s1 & ch Loop While (ch " ") tram = Val(Mid(s1, 1, 2)) chuc = Val(Mid(s1, 3, 2)) dv = Val(Mid(s1, 5, 2)) mc1 = Chr(tram + 100) mc2 = Chr(chuc + 100) 65 Đồ án tốt nghiệp Sơ đồ định danh øng dông mc3 = Chr(dv + 100) If i = Then kq = mc1 & mc2 & mc3 Else kq = kq & mc1 & mc2 & mc3 End If i=i+1 Loop Print #6, kq Close (5) Close (6) End Function 66 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 4.4 Giải mà Public Function MaChu_MaSo() Dim st$, st1$, kq$, ch$, i%, ms1$, ms2$, ms3$, ms$, kt% BanMaSoG = "c:\banmasoG.txt" Open MaHoa.banmachu For Input As #7 Open BanMaSoG For Output As #8 i=1 Do While Not (EOF(7)) kt = ch = Input(1, #7) If Asc(ch) = 13 Then Exit Do End If st = ch kt = kt + Do If (EOF(7)) Then Exit Do End If ch = Input(1, #7) If (EOF(7)) Then Exit Do End If st = st & ch kt = kt + Loop While ((kt Mod 3) 0) ms1 = Str(Asc(Mid(st, 1, 1)) - 100) ms1 = Mid(ms1, 2, Len(ms1) - 1) If Val(ms1) < 10 Then ms1 = "0" & ms1 End If ms2 = Str(Asc(Mid(st, 2, 1)) - 100) ms2 = Mid(ms2, 2, Len(ms2) - 1) If Val(ms2) < 10 Then ms2 = "0" & ms2 End If ms3 = Str(Asc(Mid(st, 3, 1)) - 100) ms3 = Mid(ms3, 2, Len(ms3) - 1) If Val(ms3) < 10 Then ms3 = "0" & ms3 End If 67 Đồ án tốt nghiệp Sơ đồ định danh ứng dông ms = ms1 + ms2 + ms3 If (i = 1) Then kq = ms Else kq = kq & " " & ms End If i=i+1 Loop Print #8, kq Close (7) Close (8) End Function Public Function MaSo_RoSo() Dim s1$, ch$, kq$, ms As Long, rs As Long, i% BanRoSoG = "c:\banrosoG.txt" Open BanMaSoG For Input As #9 Open BanRoSoG For Output As #10 i=1 Do While Not (EOF(9)) ch = Input(1, #9) s1 = ch Do If ((EOF(9))) Then Exit Do End If ch = Input(1, #9) s1 = s1 & ch Loop While (ch " ") If Left(s1, 1) = "-" Then Exit Do Else End If rs = TinhMu.Mu(s1, frmGiaiMaRSA.khoa, frmRSA.txtn) If i = Then kq = rs Else kq = kq & " " & rs End If i=i+1 Loop Print #10, kq 68 Đồ án tốt nghiệp Sơ đồ định danh vµ øng dơng Close (9) Close (10) End Function Public Function RoSo_RoChu() Dim s1$, ch$, rc$, kq$, rs As Long, i% BanRoChuG = "c:\banrochuG" Open BanRoSoG For Input As #11 Open BanRoChuG For Output As #12 i=1 Do While Not (EOF(11)) ch = Input(1, #11) s1 = ch Do If ((EOF(11))) Then Exit Do End If ch = Input(1, #11) s1 = s1 & ch Loop While (ch " ") rs = Val(s1) If (rs > 255) Then rs = rs Mod 255 End If rc = Chr(rs) If i = Then kq = rc Else kq = kq & rc End If i=i+1 Loop Print #12, kq Close (11) Close (12) End Function 69 Đồ án tốt nghiệp Sơ đồ định danh ứng dụng 4.5 Hµm tÝnh sè mị to Public Bnp(250) As Byte Sub DoiNp(ByVal A As Variant) Dim i, j As Integer i=0 Do While A > i=i+1 If A Mod = Then Bnp(i) = Else Bnp(i) = End If A= A\ Loop Bnp(0) = i End Sub Public Function ModST(ByVal A As Variant, ByVal p As Variant) Dim i, z, tg As Variant If A

Ngày đăng: 30/12/2015, 20:29

Từ khóa liên quan

Mục lục

  • Các khái niệm và thuật toán cơ bản

  • Chương 2

  • Sơ Đồ Định Danh

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan