Luận văn : Chữ ký số người xác nhận không thể chối bỏ
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ày cà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ị đánh cắ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ụng nhữ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ặc chú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ó cho ta.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ời cù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 to lớ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 cho nhữ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 nh Alice và Bob, liên lạc trên kênh không an toàn theo cách mà đối thủ Orcar không thể hiểu cái gì đang đợc nói. Kênh này có thể là đờng điện thoại hoặc mạ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ằng cá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ì, nhng Bob 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.Trong mật mã bí mật, 2 ngời muốn trao đổi thông tin cho nhau phải thoả thuận chọn mộ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àn tí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ốt nhất đã biết - 1 - Chữ ký số ngời xác nhận không thể chối bỏđể 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 khai. Hàm mã hoá công khai ek phải dễ dàng tính toán nhng việc giải mã phải 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ông bá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 đảm bả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ử đợc khi 1 trong 2 ngời chối bỏ thông báo họ đã gửi cho ngời kia. Hơn nữa, trong mạ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ác nhậ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ối cã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ăng thê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ác của ngời ký mà là một ngời thứ 3- ngời xác nhận.Chơng I- 2 - Chữ ký số ngời xác nhận không thể chối bỏTổNG QUAN Về NGÔN NGữ CI.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ần phải có một ngôn ngữ lập trình hệ thống thay thế cho hợp ngữ (Assembly) vốn nặ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óng nhậ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ý số, văn bản, cơ sở dữ liệu, lập trình hớng đối tợng. C đã trở thành một chuẩn mặc nhiên. Liên quan đến sự hình thành và phát triển của ngôn ngữ, có thể kể đến một số sự kiện sau: - Năm 1978, cuốn giáo trình dạy lập trình bằng ngôn ngữ C The C programming langguage do chính 2 tác giả của ngôn ngữ Brian W.Kernighan 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) đợc thà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 bao gồ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ủa chơ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 C của Lattice.- 3 - Chữ ký số ngời xác nhận không thể chối bỏI. 2. Các tính chất đặc trng của ngôn ngữ C là một ngôn ngữ lập trình vạn năng đợc dùng để viết các hệ điều hành 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ết phả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ận trọ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 đợc cá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ếp cậ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ào khá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ác biế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 nhập tệp. Tất cả các cơ chế này đợc thực hiện bằng những lời gọi hàm trong th viện. C đa ra các kết cấu điều khiển cơ bản cần cho các chơng trình có cấu trúc nh: nhóm tuần tự các câu lệnh, chọn quyết định (if); chu trình với phép kiểm tra kết thúc ở đầu (for, while), hoặc ở cuối (do .while); và việc lựa chọn một trong các trờng hợp có thể (switch). 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 đợc giá 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ác hà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ỉ - 4 - Chữ ký số ngời xác nhận không thể chối bỏ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ác biến tự động có thể đặt trong các thanh ghi để tăng hiệu quả, nhng việc khai báo thanh ghi chỉ là một hớng dẫn cho chơng trình dịch và không liên quan gì đến cá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 PASCAL hoặ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ơng trì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ễn cả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ật chuẩ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 gian khoá 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 đó.Chơng IICHữ Ký Số- 5 - Chữ ký số ngời xác nhận không thể chối bỏ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ông báo đợc ký mà đợc gắn với thông báo theo logic, do đó thuật toán đợc dùng phả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ấm sé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ông bá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 đã ký thờng là khác với bản gốc. Điều này nghĩa là phải cẩn thận để ngăn chặn một thông báo đã ký số bị sử dụng lại. Ví dụ, nếu Bob ký thông báo số cho quyền Alice rút $100 từ tài khoản ở nhà băng của mình, anh ta chỉ muốn Alice làm việc đó một lần. Do đó, thông báo tự nó phải chứa thông tin để ngăn chặn Alice làm lại việc đó nhiều lần.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án kiểm tra. Bob có thể ký thông báo x nhờ thuật toán ký (bí mật) Sig. Chữ ký thu đ-- 6 - Chữ ký số ngời xác nhận không thể chối bỏợ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ào việ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ều kiệ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 VMỗi sigk: P A, verk: P * A {true, false} là những hàm sao cho mỗi bức điện x P và mỗi chữ ký y A thoả mãn:Ver(x,y) = ( )( ).,,=xsigykhifalsexsigykhitrue*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 đợc chữ 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ủa chữ 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ốII.3. 1. Lợc đồ chữ ký số RSALợc đồ chữ ký RSA đợc định nghĩa nh sau:* Tạo khoá:- 7 - Chữ ký số ngời xác nhận không thể chối bỏCho n = p. q; với p, q là các số nguyên tố lớn khác nhau, (n) = (p - 1)(q - 1). Cho P = A = Zn và định nghĩa:K = {(n, p, q, a, b): n = p.q; p, q là các số nguyên tố; ab 1mod (n)}Các giá trị n và b là công khai; các giá trị p, q, a là bí mật.* Tạo chữ ký:Với K = (n, p, q, a, b) xác định:SigK(x) = xa mod n* Kiểm tra chữ ký:VerK(x, y) = true x yb mod n; x, y Zn.Giả sử Bob muốn ký thông báo x, anh ta tính chữ ký y bằng cách:y = sigK(x) = xaBmodn (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ến hà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 = verK(y), khi đó y = sigK(x). Một cách để khắc phục khó khăn này là việc yêu 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ất rấ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ã hoá cả x và y bằng cách sử dụng mật mã công khai eBob của Bob, khi đó cô ta 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 trớc - 8 - Chữ ký số ngời xác nhận không thể chối bỏtiên là anh ta giải mã bằng hàm dBob để nhận đợc (x, y). Sau đó anh ta sử dụng hàm kiểm tra công khai của Alice để kiểm tra xem liệu verAlice(x, y) = true?Nếu Alice mã hoá x trớc rồi sau đó mới ký lên bản mã đã đợc mã hoá thì sao? Khi đó cô ta tính:y = sigAlice(eBob(x))Alice sẽ truyền cặp (z, y) cho Bob. Bob sẽ giải mã z, nhận đợc x và kiểm tra chữ ký y trên bằng cách sử dụng verAlice. Một vấn đề tiềm ẩn trong biện pháp này là nếu Orcar có đợc cặp (z, y) kiểu này, anh ta có thể thay thế chữ ký y của Alice bằng chữ ký của anh ta: y = sigOrcar(eBob(x))Chú ý rằng Orcar có thể ký bản mã ebob(x) ngay cả khi anh ta không biết bản rõ x.Khi đó, nếu Orcar truyền (z, y ) tới Bob, chữ ký của Orcar sẽ đợc kiểm thử vì Bob sử dụng verOrcar, và Bob có thể suy ra rằng bản rõ x xuất phát từ 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 a = 7-1mod216 = 31.Bob công khai (n, b) = (247, 7).Bob ký lên thông báo x = 100 với chữ ký:y = xa modn = 10031 mod247 = 74.Bob gửi cặp (x, y) = (100, 74) cho Alice. Alice kiểm tra bằng cách sử dụng khoá công khai của Bob nh sau:x = yb modn = 747 mod247 = 100 = x. Alice chấp nhận y = 74 là chữ ký tin cậy. II.3.2. Lợc đồ chữ ký ElGamalLợc đồ chữ ký số ElGamal đợc giới thiệu năm 1985 và đợc Viện tiêu chuẩn và Công nghệ quốc gia Mỹ sửa đổi thành chuẩn chữ ký số. Lợc đồ ElGamal không tất định cũng giống nh hệ thống mã hoá công khai ElGamal. - 9 - Chữ ký số ngời xác nhận không thể chối bỏĐ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ật toá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ác minh.Lợc đồ chữ ký số ElGamal đợc định nghĩa nh sau:* Tạo khoá:Cho p là số nguyên tố sao cho bài toán lôgarit rời rạc trong Zp là khó và giả sử Z*p là phần tử nguyên thủy.Cho P = Z*p, A = Z*pì Zp-1 và định nghĩa:K = {(p, a, , ): = a modp }.Các giá trị p, , là công khai, a là bí mật.* Tạo chữ ký:Với K = (p, a, , ) và với số ngẫu nhiên k Z*1p, định nghĩa:sigk(, ), trong đó: = k modp và = (x - a) k -1mod(p - 1).* Kiểm tra chữ ký số:Với x, Z*p và Zp-1, ta định nghĩa:Ver (x, , ) = True . x modp.Chứng minh:Nếu chữ ký đợc thiết lập đúng thì kiểm tra sẽ thành công vì: a. r. modp x modp ( vì a + r x mod(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ủa khoá) 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.Ví dụ: Giả sử p = 467, = 2, a = 127 Khi đó: = a modp = 2127mod467 = 132- 10 - [...]... ngời ký nó và rằng ngòi ký không thể trả lời sai Bởi vì ngời ký luôn luôn có thể thuyết phục một ngời bất kỳ nào đó rằng một chữ ký tin cậy là tin cậy và chữ - 34 - Chữ ký số ngời xác nhận không thể chối bỏ ký không tin cậy là không tin cậy Nh vậy ngời nhận ít nhất yên tâm rằng ngời ký không thể từ chối một chữ ký tin cậy Các chữ ký chống chối bỏ có nhiều ứng dụng nh trong cuộc bán đấu giá mà sự trả giá... D, A) + X15 + K2) . đợc điều đó.Chơng IICHữ Ký Số- 5 - Chữ ký số ngời xác nhận không thể chối bỏII.1. Giới thiệu chung về chữ ký sốNh chúng ta đã biết, chữ ký viết tay thờng. vài lợc đồ chữ ký sốII.3. 1. Lợc đồ chữ ký số RSALợc đồ chữ ký RSA đợc định nghĩa nh sau:* Tạo khoá:- 7 - Chữ ký số ngời xác nhận không thể chối bỏCho n =