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

Tìm hiểu về lược đồ chữ ký số người xác nhận không thể chối bỏ

50 710 1
Tài liệu đã được kiểm tra trùng lặp

Đ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 50
Dung lượng 921 KB

Nội dung

Tìm hiểu về lược đồ chữ ký số người xác nhận không thể chối bỏ

Trang 1

Chữ ký số ngời xác nhận không thể chối bỏ

Đặt vấn đề

Khi ứng dụng trên mạng máy tính ngày càng trở nên phổ biến, thuận lợi

và quan trọng thì yêu cầu về an toàn mạng, về an ninh dữ liệu trên mạng ngàycàng trở nên cấp bách và cần thiết Nguồn tài nguyên trên mạng rất dễ bị đánhcắp hoặc phá hỏng nếu không có một cơ chế bảo mật cho chúng hoặc sử dụngnhững cơ chế bảo mật quá lỏng lẻo Thông tin trên mạng, dù đang truyền hay đ-

ợc lu trữ đều cần đợc bảo vệ Hoặc các thông tin ấy phải đợc giữ bí mật, hoặcchúng phải cho phép ngời ta kiểm tra để tin tởng rằng chúng không bị sửa đổi

so với dạng nguyên thuỷ của mình và chúng đúng là của ngời nhận gửi nó chota

Mạng máy tính có đặc điểm nổi bật là có nhiều ngời sử dụng, nhiều ngờicùng khai thác một kho tài nguyên, đặc biệt là tài nguyên thông tin và các điểm

có ngời sử dụng thờng phân tán về mặt địa lý Các điểm này thể hiện lợi ích tolớn của mạng thông tin máy tính đồng thời nó cũng là điều kiện thuận lợi chonhững ngời muốn phá hoại an toàn thông tin trên mạng máy tính

Do đó cách tốt nhất để bảo mật thông tin là mã hoá thông tin trớc khi gửi

đi Mục tiêu cơ bản của mật mã là cho phép 2 ngời, thờng đợc đề cập đến nhAlice và Bob, liên lạc trên kênh không an toàn theo cách mà đối thủ Orcarkhông thể hiểu cái gì đang đợc nói Kênh này có thể là đờng điện thoại hoặcmạng máy tính Thông tin mà Alice muốn gửi đến Bob sẽ đợc gọi là “bản rõ”(plaintext), có thể là bất kỳ tài liệu nào có cấu trúc tuỳ ý Alice mã bản rõ bằngcách dùng khoá xác định trớc, và gửi bản rõ thu đợc trên kênh không an toàn.Orcar dù thu trộm đợc mã trên kênh song không thể hiểu đợc bản rõ là gì, nhngBob là ngời biết khoá mã có thể giải mã và thiết lập bản rõ

Có hai loại mật mã là mật mã bí mật và mật mã khoá công khai.Trongmật mã bí mật, 2 ngời muốn trao đổi thông tin cho nhau phải thoả thuận chọnmột cách bí mật khoá k Từ k suy ra quy tắc mã hoá ek và quy tắc giải mã dk.Trong các hệ mật này, dk hoặc trùng với ek hoặc dễ dàng rút ra từ ek và việc tiết

lộ ek sẽ làm cho hệ thống không an toàn Độ an toàn hệ mật chính là độ an toàntính toán Trong thực tế, một hệ mật là “an toàn tính toán” nếu phơng pháp tốtnhất đã biết để phá nó yêu cầu một số lớn không hợp lý thời gian tính toán,nghĩa là quá trình thực hiện tính toán cực kỳ phức tạp, phức tạp đến mức ta coi

là “không thể đợc” Hệ mật khoá công khai đã đáp ứng đợc những đòi hỏi đó ýtởng nằm sau hệ mật khoá công khai là ở chỗ nó có thể tìm ra một hệ mật trong

đó không thể tính toán để xác định dk khi biết ek Quy tắc mã ek có thể công

Trang 2

Chữ ký số ngời xác nhận không thể chối bỏ

khó đối với bất kỳ ngời nào ngoài ngời lập mã Tính chất dễ tính toán và khó

đảo ngựơc này thờng đợc gọi là tính chất một chiều Muốn giải mã các thôngbáo nhận đợc một cách hiệu quả ta cần có một cửa sập 1 chiều Điều này đảmbảo độ bí mật cao

Mặt khác, mã hoá còn bao gồm cả xác thực và chữ ký số Xác thực cónhợc điểm là ở đây 2 bên cùng có chung một khoá nên không thể phân xử đợckhi 1 trong 2 ngời chối bỏ thông báo họ đã gửi cho ngời kia Hơn nữa, trongmạng có nhiều ngời sử dụng, nếu mỗi cặp có một khoá thoả thuận nh vậy thìmỗi ngời phải lu giữ n-1 khoá bí mật Khi n đủ lớn, đó là một việc phiền phức,phức tạp Chính vì vậy mà chữ ký số đợc sử dụng nhiều hơn Chữ ký số cónhiệm vụ giống chữ ký tay nghĩa là nó dùng để thực hiện các chức năng xácnhận của một ngời gửi trên một văn bản Nó phải vừa mang dấu vết không chốicãi đợc của ngời gửi, vừa gắn với từng bit của văn bản mà nếu thay đổi dù chỉmột bit của văn bản thì chữ ký cũng không còn đợc chấp nhận Nói chung các l-

ợc đồ chữ ký thì không cần đối thoại Nhng trong một số trờng hợp để tăngthêm trách nhiệm trong việc xác nhận, ngời ta dùng các giao thức hỏi- đáp đểxác định độ tin cậy của chữ ký

Trong đồ án này tôi đi sâu tìm hiểu về lợc đồ chữ ký chống chối bỏ cóngời xác nhận ở đây chữ ký có thể đợc kiểm tra mà không cần đến sự cộng táccủa ngời ký mà là một ngời thứ 3- ngời xác nhận

Chơng I

TổNG QUAN Về NGÔN NGữ C

I.1 Lịch sử hình thành và phát triển

Ngôn ngữ C do Brian W.Kernighan và Dennis M.Ritchie phát triển vào

đầu những năm 70 tại phòng thí nghiệm BELL ( Hoa Kỳ) với mục đích ban đầu

là để phát triển hệ điều hành UNIX Bối cảnh ra đời xuất phát từ nhu cầu cầnphải có một ngôn ngữ lập trình hệ thống thay thế cho hợp ngữ (Assembly) vốnnặng nề, độ tin cậy thấp và khó chuyển đổi giữa các hệ máy tính khác nhau Ngoài việc C đợc dùng để viết hệ điều hành UNIX, ngời ta nhanh chóngnhận ra sức mạnh của C trong việc xử lý các vấn đề hiện đại của tin học: xử lý

Trang 3

và Dennis M.Ritchie biên soạn đã đợc xuất bản và đợc phổ biến rộng rãi.

- Năm 1983 một tiểu ban của viện tiêu chuẩn quốc gia Mỹ (ANSI) đợcthành lập nhằm đề xuất ra một chuẩn cho ngôn ngữ C

- Năm 1988 chuẩn ANSI C chính thức đợc ban hành Chuẩn này baogồm các mô tả về ngôn ngữ theo Brian W.Kernighan và Dennis M.Ritchie vàquy định các th viện chuẩn của ngôn ngữ C, nhờ đó tăng tính khả chuyển củachơng trình viết bằng C

- Trong thế giới máy vi tính có các hệ chơng trình dịch C nổi tiếng nh:Turbo C, Borland C của Borland Inc; MSC, VC của Microsoft Corp; Lattice Ccủa Lattice

I 2 Các tính chất đặc trng của ngôn ngữ

nh UNIX cũng nh các chơng trình ứng dụng nh quản lý văn bản, cơ sở dữ liệu

C là một ngôn ngữ có mức độ thích nghi cao, gọn và không nhất thiếtphải cần tới hợp ngữ

C độc lập với bất kỳ kiến trúc máy đặc thù nào và với một chút thậntrọng vẫn dễ dàng viết đợc các chơng trình “khả chuyển” (portability) tức lànhững chơng trình có thể chạy mà không cần phải thay đổi gì khi có sự thay đổi

về phần cứng

C đợc sử dụng rộng rãi trong các lĩnh vực chuyên nghiệp vì đáp ứng đợccác yêu cầu: hiệu quả cao trong soạn thảo chơng trình và dịch ra mã máy; tiếpcận trực tiếp với các thiết bị phần cứng

C không đa ra các phép toán xử lý trực tiếp các đối tợng hợp thành nh là

đối tợng toàn vẹn; không xác định bất kỳ một phơng tiện cấp phát bộ nhớ nàokhác ngoài cấp phát tĩnh, cấp phát động theo nguyên tắc xếp chồng cho cácbiến cục bộ của hàm; không cung cấp cơ chế I/O, không có phơng pháp truy

Trang 4

C cung cấp con trỏ và khả năng định địa chỉ số học Các đối của hàm

đ-ợc truyền bằng cách sao chép giá trị đối và hàm đđ-ợc gọi không thể thay đổi đđ-ợcgiá trị của đối hiện tại

C cho phép hàm đợc gọi đệ quy và các biến cục bộ của hàm sẽ “tự

động” sinh ra hoặc tạo mới với mỗi lần gọi mới Các định nghĩa hàm không

đợc lồng nhau nhng các biến có thể đợc khai báo theo kiểu cấu trúc khối Cáchàm có thể dịch tách biệt Các biến có thể trong hoặc ngoài hàm Hàm chỉ biết đợc các biến ngoài trong cùng một tệp gốc, hoặc biến tổng thể extern Cácbiến tự động có thể đặt trong các thanh ghi để tăng hiệu quả, nhng việc khai báothanh ghi chỉ là một hớng dẫn cho chơng trình dịch và không liên quan gì đếncác thanh ghi đặc biệt của máy

C không phải là một ngôn ngữ có kiểu mạnh mẽ theo nghĩa của PASCALhoặc ALGOL/68 Nó tơng đối thoải mái trong chuyển đổi dữ liệu nhng không

tự động chuyển các kiểu dữ liệu một cách phóng túng nh của PL/I Các chơngtrình dịch hiện có đều không đa ra cơ chế kiểm tra chỉ số mảng, kiểu đối số…

Mặc dù vậy, C vẫn còn tồn tại một số nhợc điểm nh một số phép toán cóthứ tự thực hiện cha đúng; một số phần cú pháp có thể làm tốt hơn; hiện cónhiều phiên bản của ngôn ngữ, chỉ khác nhau ở một vài chi tiết

Tóm lại, C vẫn tỏ ra là một ngôn ngữ cực kỳ hiệu quả và đầy sức diễncảm đối với nhiều lĩnh vực ứng dụng lập trình Hơn nữa, ta biết rằng hệ mậtchuẩn hay chữ ký số luôn cần một bộ số rất lớn tức là kích cỡ của không giankhoá rất lớn khoảng trên 300 số thập phân Do đó, ngôn ngữ C đủ mạnh để cóthể đáp ứng đợc điều đó

Trang 5

Chữ ký số ngời xác nhận không thể chối bỏ

Chơng II

CHữ Ký Số

II.1 Giới thiệu chung về chữ ký số

Nh chúng ta đã biết, chữ ký viết tay “thờng lệ” gắn với tài liệu đợc dùng

để chỉ ra ngời đã ký nó Chữ ký đợc sử dụng hàng ngày nh để viết th, ký hợp

đồng

ở đây, chúng ta tìm hiểu về chữ ký hoàn toàn khác đó là chữ ký số Nó làphơng pháp ký thông báo đợc lu dới dạng điện tử và thông báo đợc ký có thểtruyền trên mạng máy tính Chữ ký tay và chữ ký số dù cùng có nhiệm vụchung là ký nhng có sự khác nhau cơ bản giữa chúng

Thứ nhất, về việc ký tài liệu: Với chữ ký tay thì chữ ký là bộ phận vật lýcủa tài liệu đợc ký Tuy nhiên, chữ ký số không gắn một cách vật lý với thôngbáo đợc ký mà đợc gắn với thông báo theo logic, do đó thuật toán đợc dùngphải “trói” chữ ký với thông báo theo một cách nào đó

Thứ hai, về việc kiểm tra: chữ ký tay đợc kiểm tra bằng cách so sánh nóvới những cái khác, những chữ ký đã xác thực Ví dụ, một ngời ký trên một tấmséc mua hàng, ngời bán hàng phải so sánh chữ ký trên tấm séc với chữ ký nằm ởsau thẻ tín dụng để kiểm tra Tất nhiên, phơng pháp này không an toàn lắm vì

nó tơng đối dễ đánh lừa bởi chữ ký của ngời khác Khác với chữ ký tay, chữ ký

số có thể đợc kiểm tra bằng cách dùng thuật toán kiểm tra công khai đã biết Vìvậy, bất kỳ ngời nào đó đều có thể kiểm tra chữ ký số Và việc sử dụng lợc đồ

ký an toàn sẽ ngăn chặn khả năng đánh lừa

Điều khác nhau cơ bản giữa chữ ký tay và chữ ký số là “bản sao” thôngbáo số đợc ký là đồng nhất với bản gốc Trong khi đó, bản sao chép tài liệu giấy

Trang 6

Lợc đồ chữ ký số gồm 2 thành phần: một thuật toán ký và một thuật toánkiểm tra Bob có thể ký thông báo x nhờ thuật toán ký (bí mật) Sig Chữ ký thu

đợc Sig(x) sau đó có thể đợc kiểm tra nhờ thuật toán kiểm tra công khai Ver.Khi cho cặp (x,y) thuật toán kiểm tra sẽ trả lời “đúng” hoặc “sai” phụ thuộc vàoviệc chữ ký có đích thực không?

II 2 Định nghĩa lợc đồ chữ ký số

Lợc đồ chữ ký số là một bộ năm phần tử (P, A, K, S, V) thoả mãn các điềukiện sau:

1 P _ là một tập hữu hạn các thông báo

2 A _tập hữu hạn các chữ ký có thể

3 K _tập hữu hạn các khoá, không gian khoá

4 Với mỗi k  K,  sigk  S và verk V

bức điện x  P và mỗi chữ ký y  A thoả mãn:

x sig y khi true

*Yêu cầu:

- Với mỗi khoá k  K, các hàm sigk và verk là các hàm thời gian đa thức

- Verk là hàm công khai; sigk là hàm bí mật để tránh trờng hợp Orcar có thể giảmạo chữ ký của Bob để ký thông báo x Với mỗi x chỉ duy nhất Bob tính đợcchữ ký y sao cho:

Ver(x, y) = True

Lợc đồ chữ ký phải an toàn Bởi vì Orcar có thể kiểm tra tất cả các khả năng củachữ ký y nhờ thuật toán kiểm tra công khai Ver cho tới khi đạt đợc yêu cầu tức

là tìm đợc chữ ký đúng Do đó, nếu có đủ thời gian cần thiết Orcar có

thể giả mạo đợc chữ ký của Bob Vì vậy mục đích của chúng ta là tìm các lợc

đồ chữ ký sao cho Orcar không đủ thời gian thực tế để thử nh thế

II 3 Một vài lợc đồ chữ ký số

Trang 7

y = sigK(x) = xaB modn (aB là tham số bí mật của Bob).

Bob gửi cặp (x, y) cho Alice Nhận đợc thông báo x và chữ ký số y, Alice tiếnhành kiểm tra đẳng thức:

x = ybB modn (bB là khóa công khai của Bob)Nếu đúng, Alice công nhận y là chữ ký trên x của Bob Ngợc lại, Alice sẽcoi x không phải của Bob gửi cho mình (chữ ký không tin cậy)

Ngời ta có thể giả mạo chữ ký của Bob nh sau: chọn y, sau đó tính x =

cầu x phải có nghĩa Do đó chữ ký giả mạo nói trên sẽ thành công với xác suấtrất nhỏ

Ta có thể kết hợp chữ ký với mã hoá sẽ làm cho độ an toàn của chữ kýtăng thêm

Giả sử rằng, Alice sẽ tính chữ ký của cô ta là y = sigAlice(x), và sau đó mã

nhận đợc z = eBob(x, y) Bản mã z sẽ đợc truyền tới Bob Khi nhận đợc z, việc

true?

Trang 8

bản rõ x.

Khi đó, nếu Orcar truyền (z, y’ ) tới Bob, chữ ký của Orcar sẽ đợc kiểm

Orcar Điều này cũng làm cho ngời sử dụng hiểu rằng nên ký trớc rồi sau đómới tiến hành mã hoá

Ví dụ: Giả sử Bob dùng lợc đồ chữ ký số RSA với n = 247 (p = 13, q =19); (n) = 12.18 = 216 Khoá công khai của Bob là b = 7

Điều này có nghĩa là có nhiều chữ ký hợp lệ cho một thông báo bất kỳ Thuậttoán kiểm tra phải có khả năng chấp nhận bất kỳ chữ ký hợp lệ nào khi xácminh

Lợc đồ chữ ký số ElGamal đợc định nghĩa nh sau:

Trang 9

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

Bob tính chữ ký bằng cách dùng cả giá trị bí mật a ( là một phần củakhoá) lẫn số ngẫu nhiên bí mật k (dùng để ký trên x) Việc kiểm ta có thể thực

hiện duy nhất bằng thông tin công khai

Bây giờ, ta xét độ an toàn của lợc đồ chữ ký ElGamal

Giả sử Orcar thử giả mạo chữ ký trên thông báo x cho trớc mà không biết

a Nếu Orcar chọn giá trị  và thử tìm  tơng ứng, anh ta phải tính logarit rời rạccủa logx - Mặt khác, nếu anh ta chọn  trớc và sau đó thử tìm  thì anh taphải giải phơng trình    x modp, trong đó  là ẩn Bài toán này cha có lờigiải, tuy nhiên dờng nh nó liên quan đến bài toán đã nghiên cứu Vẫn còn có

Trang 10

Giả thiết i và j là các số nguyên 0  i  p – 2; 0  j  p – 2 và (j, p 1) =1.

-Khi đó thực hiện các phép tính:

 = i j modp

 = -.j-1mod(p - 1)

x = - i.j-1mod(p - 1) = i. mod(p - 1)

Trong đó j-1 đợc tính theo module (p - 1) Ta thấy rằng (, ) là chữ ký hợp lệcủa x Điều này đợc chứng minh qua việc kiểm tra:

   -(i j )-ij 1

modp   -i.j  1  -

 -.i.j  1

modp  x modp

Orcar có thể giả mạo chữ ký theo kiểu khác là bắt đầu từ thông báo x đã

đợc Bob ký Giả sử (, ) là chữ ký hợp lệ trên x Khi đó Orcar có khả năng kýlên nhiều thông báo khác nhau Giả sử i, j, h là các số nguyên; 0  h; i, j  p –

2 và (h - j, p - 1) = 1 Thực hiện các phép tính:

 = h i j modp

Trang 11

Chữ ký số ngời xác nhận không thể chối bỏ

 = (h - j)-1mod(p - 1)

x’ = (hx + i)(h - j)-1 mod(p - 1)

Trong đó (h - j)-1đợc tính theo module (p - 1)

Kiểm tra:    x' modp  (, ) là chữ ký hợp lệ của x’

Cả 2 phơng pháp trên đều tạo các chữ ký giả mạo hợp lệ song không xuấthiện khả năng đối phơng giả mạo chữ ký trên thông điệp có lựa chọn của chính

họ mà không phải giải bài toán logarit rời rạc Vì thế không có gì nguy hiểm về

độ an toàn của lợc đồ ElGamal

Trang 12

Chữ ký số ngời xác nhận không thể chối bỏ

Chơng III

Hàm HashIII.1 Giới thiệu

Đối với xác thực và chữ ký số ta thấy rằng các thuật toán thờng nhận

đầu vào là một dòng bít có độ dài rất ngắn( 64,128,160 bit) và tốc độ thực hiệnchậm Mặt khác, các thông báo cần ký thờng có độ dài khác nhau và trongnhiều trờng hợp chúng có độ dài lớn cỡ vài Kilôbyte hoặc vài Megabyte Dovậy, muốn ký một chữ ký ngắn trên một thông báo dài ta cần phải cắt thông báo

ra nhiều đoạn có độ dài hữu hạn và cố định rồi tiến hành ký độc lập từng đoạn

đó và gửi từng đoạn đó đi Khi đó lại xuất hiện nhiều vấn đề nh:

- Tốc độ thực hiện sẽ rất chậm vì phải ký trên quá nhiều đoạn

- Dễ xảy ra trờng hợp không sắp xếp đợc thông báo theo đúng trật tự ban

đầu

- Có thể bị mất các đoạn riêng biệt trong quá trình truyền tin

Để giải quyết những vấn đề này ta có thể dùng hàm Hash Hàm Hashchấp nhận một thông báo có độ dài bất kỳ làm đầu vào, hàm Hash sẽ biến đổithông báo này thành một thông báo rút gọn, sau đó ta sẽ dùng lợc đồ chữ ký để

Nếu không cần bí mật x ta sẽ gửi cặp (x, y) cho ngời nhận Nếu cần giữ

bí mật x thì ta sẽ mã hoá thông báo x thành x’ và gửi cặp (x’, y)

Trang 13

Chữ ký số ngời xác nhận không thể chối bỏ

- Hàm Hash mạnh: Hàm Hash đợc gọi là mạnh nếu về mặt tính toán không tìm

ra đợc hai thông báo x và x’ sao cho:

- Hàm Hash có tính chất một chiều: Hàm Hash có tính chất một chiều nếu chotrớc thông báo rút gọn z thì về mặt tính toán không tìm ra đợc thông báo x saocho h(x) = z

Hàm Hash yếu làm cho chữ ký số trở nên tin cậy giống nh việc ký trêntoàn thông báo

Hàm Hash mạnh có tác dụng chống lại kẻ giả mạo tạo ra hai bản thôngbáo có nội dung khác nhau, sau đó thu nhận chữ ký hợp pháp cho một bảnthông báo dễ đợc xác nhận rồi lấy nó giả mạo làm chữ ký của thông báo thứ 2

III.3 Một số hàm Hash sử dụng trong chữ ký số

III.3.1 Các hàm Hash đơn giản

Tất cả các hàm Hash đều đợc thực hiện theo nguyên tắc chung là: Đầuvào đợc biểu diễn dạng một dãy các khối có độ dài n bít Các khối n bit này

đợc xử lý theo cùng một kiểu và lặp đi lặp lại để cuối cùng cho đầu ra có số bit

Ci: là bit thứ i của mã Hash, i = 1 ,n

m: là số các khối đầu vào

bji: là bit thứ i trong khối thứ j

Trang 14

Khi mã hoá một thông báo dài thì ta sử dụng mode CBC (The CipherBlock Chaining), thực hiện nh sau:

Giả sử thông báo X đợc phân thành các khối 64 bit liên tiếp:

III.3.2 Kỹ thuật khối xích

Ngời đầu tiên đề xuất kỹ thuật mật mã xích chuỗi nhng không có khoá bímật là Rabin

Kỹ thuật này thực hiện nh sau:

Chia thông báo M thành các khối có cỡ cố định là M1, M2, …,MN Sử dụng

hệ mã thuận tiện nh DES để tính mã Hash nh sau

Ho= Giá trị ban đầu

Hi = EMi(Hi-1), i = 1 ,N

III.3.3 Các hàm Hash mở rộng

ở trên, ta đề cập tới hàm Hash có miền đầu vào hữu hạn Tiếp theo ta sẽ

đề cập tới loại hàm Hash mạnh với đầu vào vô hạn thu đợc do mở rộng một hàmHash mạnh có đầu vào độ dài hữu hạn Hàm này sẽ cho phép ký các thông báo

Trang 15

Chữ ký số ngời xác nhận không thể chối bỏ

Ký hiệu: x là độ dài của x tính theo bit Khi đó: x = n

Ký hiệu: x y là dãy bit thu đợc do nối x với y

1 Cho i = 1 tới k – 1 gán yi = xi;

2 yk = xk  0d ( 0d là dãy có d số 0 Khi đó yk dài m – t - 1)

3 yk+1 là biểu diễn nhị phân của d ( y k 1 = m – t - 1)

4 g1 = h( 0t+1  y1) ( g1 = t, 0t+1  y1 dài m)

5 Cho i = 1 tới k thực hiên:

gi+1 = h( gi 1yi+1 )

6 h*(x) = gk+1

Ký hiệu y(x) = y1 y2 …yk+1

Ta thấy rằng y(x)  y( x’ ) nếu x  x’

3 Cho i = 1 tới k – 1 thực hiện

gi+1 = h( gi yi+1 ) ( y i = m – t - 1)

5 h*(x) = gk

III.3.4 Hàm Hash MD4

Năm 1990, RIVEST đữ đề xuất hàm hash MD4, sau đó một phiên bảnmạnh hơn MD4 đã ra đời vào năm 1991 đó là MD5 Cùng thời điểm đó SHS

Trang 16

Chữ ký số ngời xác nhận không thể chối bỏ

(Secure Hash Standard) phức tạp hơn ra đời Nhng MD5 và SHS đều dựa trênnền tảng của MD4 và SHS đã đợc thừa nhận nh là một chuẩn hoá vào tháng 5năm 1993

Thuật toán thực hiện MD4:

Trang 17

Chữ ký số ngời xác nhận không thể chối bỏ

Giải thích thuật toán thực hiện MD4:

Giả sử x là một thông báo cần hash Đầu tiên bổ sung số 1 nối vào x, sau

đó là dãy các số 0 sao cho độ dài thu đợc đồng d với 448mod512 Cuối cùng,gắn thêm 64 bit nữa vào để đợc thông báo mở rộng Đây là 64 bit biểu diễn nhịphân độ dài nguyên thuỷ của x Kết quả ta đợc thông báo mở rộng M có độ dàichia hết cho 512 Vì vậy khi cắt thành những từ có độ dài 32 bit ta sẽ đợc số Nchia hết cho 16

Biểu diễn M đới dạng dãy liên tiếp N các từ có độ dài 32 bit:

Do M chia hết cho 512 nên N chia hết cho 16

Thuật toán xây dựng M trong MD4 nh sau:

Chúng ta tiếp tục xây dựng thông báo rút gọn có độ dài 128 bit đợc mô tảdựa trên thuật toán xây dựng M Một thông điệp thu gọn đợc xây dựng nh một

sự ghép của 4 từ A, B, C, D Các từ này gần tơng tự nh 4 thanh ghi trong máytính

Các thanh ghi có giá trị khởi tạo từ bớc 1 Xử lý mảng M[] tại một thời

điểm, thực hiện 16 từ của M[] và lu trữ chúng trong mảng X[] tại bớc 3 Tại bớc

4 giá trị của A, B, C, D đợc lu trữ trong các biến AA, BB, CC, DD Sau đóchúng ta thực hiện 3 vòng lặp của hashing Mỗi vòng thực hiện các phép toán sốhọc và logic trên 16 từ của X, các toán hạng này sau khi thực hiện trong 3 vòng

sẽ cho giá trị mới bằng cách cộng vào các giá trị đợc lu trữ trong bớc 4 Đây là

hiện đầy đủ thì một điều cần thiết phải tính đến đó là cấu trúc của bộ vi xử lýtrong máy tính nhằm mục đích thực hiện các phép cộng chính xác nhất

Trang 18

Chữ ký số ngời xác nhận không thể chối bỏ

Trong 3 vòng Round1, Round2, Round3 của MD4 thực hiện các phéptoán logic sau:

+ a << s: phép quay vòng dịch trái đại lợng a đi s bit, 1  s  32

+a: phép đảo bit

+ : phép and

+ : phép or

+ : phép Xor

Mỗi vòng chỉ sử dụng một trong 3 hàm f, g, h:

f(A, B, C) = (AB)(AC)g(A, B, C) = (AB)(AC)(BC)h(A, B, C) = A  B  C

Ta ký hiệu các hằng số:

K2 = 0x6ed9eba1Các biến Xi, i = 0 , 15

Trang 20

Chữ ký số ngời xác nhận không thể chối bỏ

Chơng IV

Chữ Ký Chống Chối Bỏ

IV.1 Giới thiệu

Chữ ký chống chối bỏ đợc công bố bởi Chaum và van Antwerpen vàonăm 1989 Nó có một số nét riêng mới lạ rất thú vị Quan trọng nhất trong số đó

là chữ ký không thể kiểm tra khi không có sự cộng tác của ngời ký, Bob

Sự bảo vệ này của Bob đề phòng khả năng chữ ký trong tài liệu của anh

ta bị sao chép và phân bố bởi thiết bị điện tử mà không có sự đồng ý của anh ta

Ví dụ, Bob có một phần mềm và chữ ký kèm theo đợc tạo ra nhờ thuật toán củachữ ký số thông thờng Nh vậy, sẽ không tránh khỏi trờng hợp phần mềm đó bịsao chép mà Bob không biết Ngời mua sẽ kiểm tra chữ ký kèm theo phần mềmnhờ thuật toán kiểm tra công khai Ver và công nhận đó là chữ ký đúng Vì nhchúng ta đã biết bản sao của chữ ký số là đồng nhất với bản gốc Đơng nhiên

nh vậy Bob đã bị mất bản quyền Để tránh điều bất lợi đó Bob đã dùng chữ ký

số chống chối bỏ Sự kiểm tra sẽ thành công khi thực hiện giao thức hỏi - đáp

Lợc đồ chữ ký chống chối bỏ gồm 3 phần: thuật toán ký, giao thức kiểmtra, giao thức chối bỏ

IV.2 Lợc đồ chữ ký chống chối bỏ

IV.2.1 Thuật toán ký

* Tạo khoá:

Cho p, q là các số nguyên tố lẻ sao cho p = 2q + 1 và bài toán rời rạc trên

Zp là khó Lấy   Zp là một phần tử của bậc q (Nếu 0 là phần tử nguyên thuỷcủa Zp thì  = 0(p -1)/q modp) Lấy 1  a  q-1 và xác định:  = a modp

Trang 21

Chữ ký số ngời xác nhận không thể chối bỏ

Với K = (p, , a, ) và x  G, xác định chữ ký y trên thông báo x:

y = sigk(x) = xa modp

IV.2.2 Giao thức kiểm tra

Với x, y  G, sự kiểm tra đợc tiến hành theo giao thức sau:

1 Alice chọn e1, e2 ngẫu nhiên, e1, e2  Zp

2 2 Alice tính c = ye1 e2 modp và gửi nó cho Bob

3 Bob tính d = ca 1 modq

modp và gửi nó cho Alice

3 4 Alice chấp nhận y là chữ ký đúng khi và chỉ khi:

d  xe1 e2modp

* Vai trò của p, q trong lợc đồ:

nhân G của Zp của bậc nguyên tố lẻ Đặc biệt, chúng ta cần tính phần tử nghịch

đảo theo modun G, điều này lý giải tại sao Gnên là nguyên tố lẻ Nó thuậntiện nếu lấy p =2q+1 với q là nguyên tố lẻ Trong trờng hợp này, phân nhóm G

là tồn tại

*Chứng minh bớc 4 của giao thức kiểm tra:

ở đây, chúng ta chứng minh rằng Alice sẽ chấp nhận chữ ký đúng Trongcác phép toán dới đây, tất cả số mũ là biến đổi theo modun q

d  xe1 e2modp _ Đó là điều phải chứng minh

Ví dụ: Giả sử chúng ta lấy p = 467 Từ 2 là căn nguyên thuỷ => 22 = 4 làthặng d bậc 2 theo modun 467 và 4 là phần tử sinh của G Lấy  = 4 Giả sử a

= 101, ta có:

 = amodp = 4101 mod467 = 449

Bob sẽ ký thông báo x = 119 với chữ ký:

Trang 22

xe1 e2 modp = 11938 4397 mod467 = 9

 d  xe1 e2modp

Do đó, Alice chấp nhận chữ ký là đúng

IV.2.3 Giao thức chối bỏ

Một vấn đề đặt ra, nếu sự cộng tác của Bob là cần thiết trong việc kiểmtra chữ ký thì điều gì đã ngăn cản Bob từ chối chữ ký do chính anh ta tạo ratrong thời gian gần đây? Tất nhiên, Bob có thể cho rằng chữ ký đúng đó là giảmạo và từ chối kiểm tra nó hoặc Bob thực hiện một giao thức mà theo đó chữ ký

sẽ không đợc kiểm tra Vì vậy, một lợc đồ chữ ký chống chối bỏ đợc kết hợpchặt chẽ với một giao thức chối bỏ và nhờ điều đó Bob có thể chứng minh

đợc rằng chữ ký đó là giả mạo (Nếu anh ta từ chối thực hiện một phần tronggiao thức chối bỏ, điều đó đồng nghĩa với dấu hiệu chứng minh chữ ký đó làxác thực trên thực tế và anh ta đang cố gắng từ chối chữ ký của mình)

Giao thức chối bỏ gồm 2 tiến trình của giao thức kiểm tra và có các bớcsau:

1 Alice chọn e1, e2 ngẫu nhiên, e1, e2  Zq

4 2 Alice tính c = ye1 e2 modp và gửi nó cho Bob

3 Bob tính d = ca 1 modq

modp và gửi nó cho Alice

5 4 Alice kiểm tra d  xe1 e2 modp

5.Alice chọn f1, f2 ngẫu nhiên, f1, f2  Zq

6 6 Alice tính C = y f1 f2 modp và gửi nó cho Bob

7 7 Bob tính D = ca 1 modq

modp và gửi nó cho Alice

8 8 Alice kiểm tra D  x f1 f2 modp

Trang 23

Chữ ký số ngời xác nhận không thể chối bỏ

9 9 Alice kết luận rằng y là chữ ký giả mạo khi và chỉ khi

(de2 ) f1  (D f2 )e1 modpCác bớc 1 – 4 và 5 – 8 là 2 tiến trình không thành công của giao thứckiểm tra Bớc 9 là bớc “kiểm tra tính chính xác” cho phép Alice xác định rõ chữ

ký đó có xác thực hay không nếu sự trả lời của Bob đợc tạo ra nh giao thức theo

lý thuyết

Ví dụ: Ta lấy tơng tự nh ví dụ trớc Lấy p =467,  = 4, a = 101,  = 449

Ký thông báo x =286 với chữ ký y = 83 (là giả mạo) Bob muốn thuyết phụcAlice rằng chữ ký đó là không đúng Vậy phải thực hiện nh sau:

Alice chọn ngẫu nhiên e1 = 45, e2 = 237 Alice tính c = 305 và Bob trả lờivới d = 109 Alice tính: 28645 4237mod467 = 149

Vì 149  109 nên Alice thực hiện tiếp giao thức chối bỏ

Alice chọn tiếp f1 = 125, f2 = 9, ngẫu nhiên, Alice tính C = 270 và Bob trảlời với D = 68 Alice tính: 286125.49mod467 = 25

Vì 25  68 nên Alice thực hiện bớc cuối cùng của giao thức tức là thựchiện kiểm tra tính chính xác

Ta có: (109.4-237)125  188 mod467

và (68.4-9)45  188 mod467

(de2 ) f1  (D f2 )e1 modpVậy Alice tin chắc rằng chữ ký đó là không đúng 

Bây giờ, chúng ta cần phải chứng minh 2 điều là:

a Bob có thể thuyết phục Alice rằng chữ ký không đúng đó là giả mạo

b Bob không thể làm cho Alice bị thuyết phục rằng chữ ký đúng đó là giảmạo ngoại trừ xác suất rất nhỏ

IV 3 Các định lý

IV.3.1 Định lý 1: Nếu y  xa modp, Alice sẽ chấp nhận y nh là một chữ ký đúng

của x với xác suất q1

Chứng minh:

Trớc tiên, ta nhận xét rằng mỗi yêu cầu c có thể xảy ra sẽ tơng ứng chínhxác với một cặp (e1, e2) bậc q (Bởi vì y và  đều là phần tử của nhóm nhân G cóbậc nguyên tố lẻ q) Khi Bob nhận yêu cầu c anh ta không biết Alice đã dùng

Trang 24

k a

1 = l – a.k (5)MÆt kh¸c: y  xa modp (gt)

Trang 25

Tơng tự nh trên ta cũng tính đợc:

(D.-f2 )e1  ye1.a  1 f1 modp (2)với D  Ca  1

modp

C  yf1f2 modp

  a modp

Từ (1) và (2) (d-e2)f1  (D-f2 )e1 modp Vì vậy, nếu y là chữ ký giả mạo thì Bob có thể thuyết phục Alice tin chữ

ở đây, ta xét trờng hợp rằng Bob có thể thử từ chối chữ ký đúng của anh

ta Trong trờng hợp này, chúng ta không thể giả định Bob làm theo giao thứcnghĩa là Bob có thể không xây dựng d và D nh lý thuyết bởi giao thức, chúng

Ngày đăng: 17/04/2013, 12:52

HÌNH ẢNH LIÊN QUAN

Sơ đồ hàm Hash sử dụng phép XOR: - Tìm hiểu về lược đồ chữ ký số người xác nhận không thể chối bỏ
Sơ đồ h àm Hash sử dụng phép XOR: (Trang 16)
3 vòng Round1, Round2, Round3 đợc mô tả theo bảng sau: - Tìm hiểu về lược đồ chữ ký số người xác nhận không thể chối bỏ
3 vòng Round1, Round2, Round3 đợc mô tả theo bảng sau: (Trang 23)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w