1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án ký thuật điện điện tử mô phỏng chương trình chữ kí số Elgamal trên văn bản điện tử

13 407 1

Đ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

Tiêu đề Mô phỏng chương trình chữ kí số Elgamal trên văn bản điện tử
Tác giả Bùi Lê Trung
Chuyên ngành Kỹ thuật điện điện tử
Thể loại Đồ án kỹ thuật
Định dạng
Số trang 13
Dung lượng 81 KB

Nội dung

Việc sử dụng chữ kí số ngày càng có nhiều ứng dụng trong thực tế, không chỉ giới hạn trong Ngành Công Nghệ Thông Tin , Ngành Mật Mã mà còn được áp dụng trong một số lĩnh vực khác như tro

Trang 1

mở đầu

Trong mật mã vấn đề bảo mật luôn đi đôi với vấn đề xác thực

thông tin, đặc biệt trong hệ thống mã khoá công khai vấn đề xác thực là vô cùng quan trọng Để giải quyết được vấn đề xác thực người ta đưa ra một cách vừa đơn giản vừa hiệu quả là sử dụng chữ kí số Việc sử dụng chữ kí số ngày càng có nhiều ứng dụng trong thực tế, không chỉ giới hạn trong Ngành Công Nghệ Thông Tin , Ngành Mật Mã mà còn được áp dụng trong một số lĩnh vực khác như trong lĩnh vực Ngân Hàng để xác thực người gửỉ, người nhận, lĩnh vực Viễn thông để sử dụng các thẻ thông minh.

Với mật mã khoá công khai việc tạo ra chữ kí số và ứng dụng vào các tài liệu, các văn bản điện tử là vô cùng quan trọng Chữ kí thường ( Chữ kí viết tay ) thì có thể giả mạo được , vậy thì chữ kí số phải đảm bảo những yêu cầu gì để có thể tạo cơ sở pháp lý trong thời đại Thông tin – Tin học hoá.

Chữ kí số phải có những tính năng sau :

1 Người nhận văn bản đã kí phải có thể xác minh được bất kì chữ kí hợp lệ nào của người gửi.

2 Chữ kí không thể giả mạo được

3 Người đã kí thông báo thì không thể từ chối phủ nhận

nó về sau được

Trang 2

Mục đích của luận văn là giới thiệu về “ Sơ đồ chữ kí số Elgamal “ , đây là một trong những sơ đồ mạnh vào bậc nhất hiện nay, và đã được nhiều nước trên thế giới ứng dụng , đặc biệt là tại

Mỹ đã có bản cải tiến của sơ đồ này và đã được Viện tiêu chuẩn và Công nghệ quốc gia Mỹ (NIST) chấp nhận làm chuẩn chữ kí số Điểm mạnh và an toàn của sơ đồ chữ kí số Elgamal là dựa trên tính khó giải của bài toán tìm Logarithm rời rạc trên trường hữu hạn

Z p

CHƯƠNG I : GIỚI THIỆU SƠ ĐỒ CHỮ KÍ SỐ

Thông thường chữ kí viết tay trên các văn bản , trên các tài liệu hay trên các hợp đồng kinh tế v.v thì được dùng để xác nhận người kí nó

Sơ đồ chữ kí ( hay còn gọi là chữ kí số ) là phương pháp kí một bức điện lưu dưới dạng điện tử Chẳng hạn một bức điện có chữ kí được truyền trên mạng máy tính

Một sơ đồ chữ kí số thường chứa hai thành phần : Thuật toán kí

và thuật toán xác minh Người A có thể kí bức điện x dùng thuật

Trang 3

toán kí an toàn Chữ kí Sig(x) nhận được có thể kiểm tra bằng thuật toán xác minh công khai Ver Khi cho trước cặp (x,y) thuật toán xác minh cho giá trị TRUE hay FALSE tuỳ thuộc vào việc chữ kí được xác thực như thế nào

Định nghĩa hình thức của chữ kí số

Một sơ đồ chữ kí số là bộ 5 ( P,A,K,S,V) thoả mãn các điều kiện sau :

1 P : là tập hữu hạn các bức điện có thể.

2 A : là tập hữu hạn các chữ kí có thể

3 K : không gian khoá là tập hữu hạn các khoá có thể

4.Với mỗi K thuộc K tồn tại một thuật toán kí Sig K S và một thuật toán xác minh Ver K  V

Mỗi Sig K : P -> A và Ver K :P x A -> { TRUE ,FALSE } là những hàm sao cho mỗi bức điện x P và mỗi bức điện y  A thoả mãn phương trình sau đây

TRUE nếu y= Sig(x)

Ver (x,y) =

FALSE nếu y #Sig(x)

Với mỗi K  K , hàm SigK và Ver K là các hàm thời gian đa

thức VerK sẽ là hàm công khai còn SigK là hàm mật Ta gọi Alice

là người gửi còn Bob là người nhận Không thể dễ dàng tính toán

để giả mạo chữ kí của Bob trên bức điện x Nghĩa là với x cho

Trang 4

trước , chỉ có Bob mới có thể tính được chữ kí y để Ver (x,y) = True

CHƯƠNG II : SƠ ĐỒ CHỮ KÍ ELGAMAL

Sơ đồ chữ kí Elgamal đã từng được giới thiệu vào năm 1985 ở

Mỹ Bản cải tiến của sơ đồ này đã được Viện Tiêu Chuẩn và Công Nghệ Quốc Gia Mỹ (NIST) chấp nhận làm chuẩn chữ kí số Sơ đồ chữ kí Elgamal dựa trên tính khó giải của bài toán tìm Logarithm rời rạc trên trường hữu hạn Trước hết ta hãy làm quen với bài toán Logarithm rời rạc trên trường hữu hạn Zp

I Bài toán Logarithm rời rạc trong Z p

Chóng ta sẽ bắt đầu bằng việc mô tả bài toán này khi thiết lập một trường hữu hạn Zp , p là số nguyên tố (Nhóm nhân Zp* là nhóm Cyclic và phần tử sinh của Zp* được gọi là phần tử nguyên thuỷ) Bài toán Logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu , và được xem là bài toán khó nếu p được chọn cẩn thận Cụ thể là không có một thuật toán thời gian đa thức nào cho bài toán Logarithm rời rạc

Để gây khó khăn cho các phương pháp tấn công đã biết , p phải có Ýt nhất 150 chữ số thập phân ( ≈ 500 bít ) và (p -1) phải có

Ýt nhất một thừa số nguyên tố lớn , tốt nhất p có dạng p = 2q + 1 với q cũng là nguyên tố Số nguyên tố p dạng này gọi là số nguyên

tố mạnh ( String – Prime ) đối với hệ Elgamal nói riêng và cho

Trang 5

những hệ mà độ an toàn dựa vào tính khó giải của bài toán Logarithm rời rạc nói chung Lợi thế của bài toán Logarithm rời rạc trong xây dựng sơ đồ chữ kí là khó tìm được các Logarithm rời rạc, song bài toán ngược lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán bình phương và nhân Nói cách khác , luỹ thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp

Bài toán Logarithm rời rạc trên trường hữu hạn Zp

Đặc trưng của bài toán : I= ( p, ,  ) trong đó p là số nguyên

tố lẻ ,  Z p là phần tử nguyên thuỷ , Z p * , tìm một số nguyên duy nhất a để :

0  a  p-2 Sao cho :  a   (mod p)

Ta sẽ xác định số nguyên a bằng Log  ( mod p) được gọi là Logarit cơ số  của  

II Sơ đồ chữ kí số Elgamal

Sơ đồ Elgamal được thiết kế với mục đích dành riêng cho chữ

kí số , điểm mạnh của nó là cùng số nguyên tố p trong cùng một sơ

đồ thì với k là ngẫu nhiên nên ta có thể có nhiều chữ kí số, không tất định giống như hệ thống mã khoá công khai Elgamal, ở sơ đồ chữ kí RSA ta chỉ thấy trên cùng một sơ đồ với cùng một số nguyên tố p thì ta chỉ có một chữ kí số Điều này có nghĩa là có nhiều chữ kí hợp

Trang 6

lệ trên bức điện cho trước bất kì Thuật toán xác minh phải có khả năng chấp nhận bất kì chữ kí hợp lệ nào khi xác thực chữ kí đó

Sơ đồ chữ kí Elgamal

Cho p là số nguyên tố sao cho bài toán Logarithm rời rạc trên Z p là khó và giả sử   Z p * là phần tử nguyên thuỷ

Cho p = Z p * , A=Z p * Z p-1 , và kí hiệu :

K={(p,,a,):  a (mod p) }

Giá trị p,, là công khai ,còn a là mật

Với K=(p,,a,) và với mét số ngẫu nhiên (mật) k  Z p-1 *

Định nghĩa : Sig k (x,k) = (,)

trong đó  =  k mod p

và  = (x-a )k -1 mod (p-1).

Với x,  Z p * và  Z p-1 ta định nghĩa

Ver(x,y,) = True    x (mod p) 

Nếu chữ kí được thiết lập đúng thì xác minh sẽ thành công vì :

   a k  (mod p)  x (mod p )

Ở đây ta dùng hệ thức : a  + k   x (mod p-1)

Bob tính chữ kí bằng cách dùng cả giá trị mật a (là một phần của khoá ) lẫn số ngẫu nhiên mật k ( dùng để kí lên bức điện x ) Việc xác minh có thể thực hiện duy nhất bằng thông tin công khai

Ta xét một ví dụ sau :

Giả sử : Cho p =467 , =2 , a=127 khi đó:

Trang 7

 = a mod p = 2127 mod 467 = 132.

Nếu Bob muốn kí lên bức điện x = 100 và chọn số ngẫu nhiên k =

213

( chó ý là USCLN(213,466) =1 và 213-1 mod 466 =431 ) Khi đó :

 = 2213 mod 467 =29

và  = (100 – 127  29 ) 431 mod 466 = 51

Bất kì ai cũng có thể xác minh chữ kí này bằng cách kiểm tra :

132292951  189 (mod 467 )

và 2100  189 (mod 467 )

Vì thế chữ kí là hợp lệ

Ta xét độ mật của sơ đồ chữ kí Elgamal.

Giả sử ,Oscar thử giả mạo chữ kí trên bức điện x cho trước mà không biết a Nếu Oscar chọn  và sau đó thử tìm giá trị  tương ứng Anh ta phải tính Logarithm rời rạc Log x - Mặt khác , nếu đầu tiên anh ta chọn  và sau đó thử tìm  và thử giải phương trình :

  x ( mod p )

Để tìm  Đây là bài toán chưa có lời giải nào , tuy nhiên ,dường như nó chưa được gắn với đến bài toán đã nghiên cứu kĩ nào nên

Trang 8

vẫn còn khả năng có cách nào đó để tính  và  đồng thời để ( ,  )

là một chữ kí Hiện thời không ai tìm được cách giải song cũng không ai khẳng định được rằng nó không thể giải được

Nếu Oscar chọn  và  và sau đó thử giải tìm x , anh ta sẽ phải đối mặt với bài toán Logarithm rời rạc , tức bài toán tính Log Vì thế Oscar không thể kí một bức điện ngẫu nhiên bằng biện pháp này

Cuối cùng , ta sẽ nêu cách có thể phá được sơ đồ này nếu không áp dụng nó một cách cẩn thận Trước hết , giá trị k ngẫu nhiên được dùng để tính chữ kí phải được giữ kín không được để

lộ Vì nếu k bị lộ , khá đơn giản để tính : a =

(x-k  )-1 mod ( p –1 )

Dĩ nhiên , một khi a bị lộ thì hệ thống bị phá và Oscar có thể

dễ dàng giả mạo chữ kí

Một kiểu dùng sai sơ đồ nữa là dùng cùng giá trị k để kí hai bức điện khác nhau Điều này cũng tạo thuận lợi cho Oscar tính a

và phá hệ thống Sau đây là cách thực hiện Giả sử ( ,1 ) là chữ kí trên x1 và ( ,2 ) là chữ kí trên x2 Khi đó ta có :

1  x1 (mod p )

và 2  x2 ( mod p )

Như vậy : x1 x2   12 ( mod p )

Trang 9

Nếu viết  = k ta nhận được phương trình tìm k chưa biết sau:

 x1-.x2  k( 1- 2 ) ( mod p )

tương đương với phương trình : x1 - x2  k (1-2) (mod p-1) Bây giờ giả sử d = USCLN(1-2 ,p –1) Vì d | ( p –1) và d | (1-2 ) nên suy ra d | (x1-x2) Ta định nghĩa :

x’ = (x1-x2 )/d ; ’ = ( 1-2 ) / d ; p’ = ( p-1 ) / d Khi đó đồng dư thức trở thành : x’  k ’ ( mod p’ )

Vì USCLN (’,p’ ) =1 , nên ta có thể tính :  = ( ’ ) –1 mod p’ Khi đó giá trị k xác định theo modulo p’ sẽ là : k = x’  mod p’ Phương trình này cho d giá trị có thể của k : k = x’  + i p’ mod p với i nào đó , 0  i  d-1 Trong đó d giá trị có thể này có thể xác định được một giá trị đúng duy nhất qua việc kiểm tra điều kiện :

  k ( mod p )

Trang 10

Chương III : mô phỏng chương trình chữ kí số

ELGAMAL TRÊN VĂN BẢN ĐIỆN TỬ

Như ta đã biết một sơ đồ chữ kí số thường chứa 2 thành phần

đó là thuật toán ký và thuật toán xác minh Trong chương này em xin trình bày về hàm Hash đơn giản là hàm tóm lược văn bản và ký

số lên file văn bản , nhằm bảo toàn tính nguyên vẹn của văn bản

I Hàm HASH và việc tóm lược thông báo.

Một vấn đề đặt ra là ta không nên áp sơ đồ ký số vào một thông báo dài Nhưng thông báo thì phải được kí , mâu thuẫn này có thể giải quyết được bằng cách sử dụng hàm Hash , vì hàm Hash là một công cụ tóm lược đặc trưng của thông báo rất an toàn và hữu hiệu Với một thông báo có độ dài M bất kỳ Hàm Hash cho ra giá trị tóm lược thông báo có độ dài không đổi, nói chung giá trị tóm lược thông báo có độ dài nhỏ hơn thông báo M rất nhiều Chẳng hạn | H(M) | = 128 bít hoặc | H(M) | =160 bít trong khi đó thông báo

có độ dài cỡ Mega byte hay lớn hơn Do vậy đặc tính cơ bản của hàm Hash là đưa ra một giá trị đại diện của thông báo M rất ngắn so với thông báo

Sau khi đã tóm lược thông báo M được một tóm lược H(M) người ta dùng chữ ký số áp vào H(M) Thông báo M cùng với tóm H(M) đã được ký sẽ được gói trọn trong một thông báo và được mã hoá theo cách thông thường để truyền đi Người nhận được thông

Trang 11

báo có thể chứng thực chữ ký tóm lược H(M) sau đó dùng hàm Hash tính lại tóm lược với thông báo vừa nhận được và so sánh kết quả Khi đó cùng một lúc có thể xác thực được người gửi và cả sự nguyên vẹn của thông báo M

II Mô tả chương trình chữ kí số Elgamal trên một file văn bản bất kỳ M.

-Đầu tiên ta mở file văn bản (M) cần kí , sau đó dùng hàm Hash

để tóm lược lại văn bản ta được H(M) Hàm Hash sau đây sẽ sử dụng là ta sẽ chia văn bản M ra làm nhiều khối , mỗi khối là 40 byte Sau đó ta sẽ đọc từng 40 byte văn bản của từng khối gán bằng 1 byte mã Nếu khối văn bản cuối cùng không đủ 40 byte thì ta sẽ cho đọc riêng số lượng byte đó thành 1 byte mã Đoạn chương trình sau được viết bằng Pascal mô tả một trong những cách tóm lược văn bản qua hàm Hash

procedure tom_luoc(st:ten_file);

var

l,m,n,i,j:longint;

kq:word;

dem:sl;

begin

fillchar(hash,max_sl,0);

assign(f,st);

Trang 12

l:=filesize(f);

m:=l div 40;

n:=l mod 40;

for i:=1 to m do

begin

blockread(f,dem,40,kq);

for j:=0 to 39 do hash[j]:=hash[j] xor dem[j];

end;

if (n>0) then

begin

blockread(f,dem,n,kq);

for j:=0 to n-1 do hash[j]:=hash[j] xor dem[j];

end;

close(f);

end;

-Sau khi tóm lược được, ta dùng chương trình ký cùng với phần tóm lược để ký lên văn bản đã nhập Cuối cùng sẽ ghi toàn bộ văn bản và chữ kí số lên file ký

-Đầu tiên ta mở file văn bản cần kiểm tra chữ ký sè , sau đó ta lại dùng hàm Hash để tóm lược lại văn bản, sau đó đưa kết quả vào

để kiểm tra chữ kí trên văn bản

Trang 13

C«ng Khai

Ch÷ Ký 1

Ch÷ Ký 2

Ch ¬ng tr×nh KiÓm Tra

Tãm l îc M

-Quá trình kí và kiểm tra chữ kí thể hiện qua 2 sơ đồ sau:

Sơ đồ quá trình kí lên văn bản M:

Sơ đồ quá trình kiểm tra chữ ký trên văn bản M:

M

M

C«ng Khai Ch÷ ký 1 Ch÷ ký 2

Ch ¬ng Tr×nh

ký sè

Tãm l îc M

Ngày đăng: 11/05/2015, 21:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w