Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
314,62 KB
Nội dung
Chữ ký số ngời xác nhận chối bỏ Đặt vấn đề Khi ứng dụng mạng máy tính ngày trở nên phổ biến, thuận lợi quan trọng yêu cầu an toàn mạng, an ninh liệu mạng ngày trở nên cấp bách cần thiết Nguồn tài nguyên mạng dễ bị đánh cắp phá hỏng chế bảo mật cho chúng sử dụng chế bảo mật lỏng lẻo Thông tin mạng, dù truyền hay đợc lu trữ cần đợc bảo vệ Hoặc thông tin phải đợc giữ bí mật, chúng phải cho phép ngời ta kiểm tra để tin tởng chúng không bị sửa đổi so với dạng nguyên thuỷ chúng ngời nhận gửi cho ta Mạng máy tính có đặc điểm bật 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 tài nguyên thông tin điểm có ngời sử dụng thờng phân tán mặt địa lý Các điểm thể lợi ích to lớn mạng thông tin máy tính đồng thời điều kiện thuận lợi cho ngời muốn phá hoại an toàn thông tin mạng máy tính Do cách tốt để bảo mật thông tin mà hoá thông tin trớc gửi Mục tiêu mật mà cho phép ngời, thờng đợc đề cập đến nh Alice Bob, liên lạc kênh không an toàn theo cách mà đối thủ Orcar hiểu đợc nói Kênh đờng điện thoại mạng máy tính Thông tin mà Alice muốn gửi đến Bob đợc gọi rõ (plaintext), cã thĨ lµ bÊt kú tµi liƯu nµo cã cÊu trúc tuỳ ý Alice mà rõ cách dùng khoá xác định trớc, gửi rõ thu đợc kênh không an toàn Orcar dù thu trộm đợc mà kênh song hiểu đợc rõ gì, nhng Bob ngời biết khoá mà giải mà thiết lập rõ Có hai loại mật mà mật mà bí mật mật mà khoá công khai.Trong mật mà bí mật, ngời muốn trao đổi thông tin cho phải thoả thuận chän mét c¸ch bÝ mËt kho¸ k Tõ k suy quy tắc mà hoá e k quy tắc giải mà dk Trong hệ mật này, dk trùng với ek dễ dàng rút 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 độ an toàn tính toán Trong thực tế, hệ mật an toàn tính toán phơng pháp tốt đà biết để phá yêu cầu số lớn không hợp lý thời gian tính toán, nghĩa trình thực tính toán phức tạp, phức tạp đến mức ta coi không -1- Chữ ký số ngời xác nhận chối bỏ thể đợc Hệ mật khoá công khai đà đáp ứng đợc đòi hỏi ý tởng nằm sau hệ mật khoá công khai chỗ tìm hệ mật tính toán để xác định dk biết ek Quy tắc mà ek 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ó ngời ngời lập mà Tính chất dễ tính toán khó đảo ngựơc thờng đợc gọi tính chất chiều Muốn giải mà thông báo nhận đợc cách hiệu ta cần có cửa sập chiều Điều đảm bảo độ bí mật cao Mặt khác, mà hoá bao gồm xác thực chữ ký số Xác thực có nhợc điểm bên có chung khoá nên phân xử đợc ngời chối bỏ thông báo họ đà gửi cho ngời Hơn nữa, mạng có nhiều ngời sử dụng, cặp có khoá thoả thuận nh ngời phải lu giữ n-1 khoá bí mật Khi n đủ lớn, việc phiền phức, phức tạp Chính mà chữ ký số đợc sử dụng nhiều Chữ ký số có nhiệm vụ giống chữ ký tay nghĩa dùng để thực chức xác nhận ngời gửi văn Nó phải vừa mang dấu vết không chối cÃi đợc ngời gửi, vừa gắn với bit văn mà thay đổi dù bit văn chữ ký không đợc chấp nhận Nói chung lợc đồ chữ ký không cần đối thoại Nhng số trờng hợp để tăng thêm trách nhiệm việc xác nhận, ngời ta dùng giao thức hỏi- đáp để xác định độ tin cậy chữ ký Trong đồ án sâu tìm hiểu lợc đồ chữ ký chống chối bỏ có ngời xác nhận chữ ký đợc kiểm tra mà không cần đến cộng tác ngời ký mà ngời thứ 3- ngời xác nhận -2- Chữ ký số ngời xác nhận chối bỏ Chơng I TổNG QUAN Về NGÔN NGữ C I.1 Lịch sử hình thành phát triển Ngôn ngữ C Brian W.Kernighan Dennis M.Ritchie phát triển vào đầu năm 70 phòng thÝ nghiƯm BELL ( Hoa Kú) víi mơc ®Ých ban đầu để phát triển hệ điều hành UNIX Bối cảnh đời xuất phát từ nhu cầu cần phải có ngôn ngữ lập trình hệ thống thay cho hợp ngữ (Assembly) vốn nặng nề, độ tin cậy thấp khó chuyển đổi hệ máy tính khác Ngoài việc C đợc dùng để viết hệ ®iỊu hµnh UNIX, ngêi ta nhanh chãng nhËn søc mạnh C việc xử lý vấn đề đại tin học: xử lý số, văn bản, sở liệu, lập trình hớng đối tợng C đà trở thành chuẩn Liên quan đến hình thành phát triển ngôn ngữ, kể đến số kiện sau: - Năm 1978, giáo trình dạy lập trình ngôn ngữ C The C programming langguage tác giả ngôn ngữ Brian W.Kernighan Dennis M.Ritchie biên soạn đà đợc xuất đợc phổ biến rộng rÃi - Năm 1983 tiểu ban viện tiêu chuẩn quốc gia Mỹ (ANSI) đợc thành lập nhằm đề xuất chuẩn cho ngôn ngữ C -3- Chữ ký số ngời xác nhận chối bỏ - Năm 1988 chuẩn ANSI C thức đợc ban hành Chuẩn bao gồm mô tả ngôn ngữ theo Brian W.Kernighan Dennis M.Ritchie quy định th viện chuẩn ngôn ngữ C, nhờ tăng tính khả chuyển chơng trình viết C - Trong giới máy vi tính 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 I Các tính chất đặc trng ngôn ngữ C ngôn ngữ lập trình vạn đợc dùng để viết hệ điều hành nh UNIX nh chơng trình ứng dụng nh quản lý văn bản, sở liệu C ngôn ngữ có mức độ thích nghi cao, gọn không thiết phải cần tới hợp ngữ C độc lập với kiến trúc máy đặc thù với chút thận trọng dễ dàng viết đợc chơng trình khả chuyển (portability) tức chơng trình chạy mà không cần phải thay đổi có thay đổi phần cứng C đợc sử dụng rộng rÃi lĩnh vực chuyên nghiệp đáp ứng đợc yêu cầu: hiệu cao soạn thảo chơng trình dịch mà máy; tiếp cận trực tiếp với thiết bị phần cứng C không đa phép toán xử lý trực tiếp đối tợng hợp thành nh đối tợng toàn vẹn; không xác định phơng tiện cấp phát nhớ khác cấp phát tĩnh, cấp phát động theo nguyên tắc xếp chồng cho biến cục hàm; không cung cấp chế I/O, phơng pháp truy nhập tệp Tất chế đợc thực lời gọi hàm th viện C đa kết cấu điều khiển cần cho chơng trình có cấu trúc nh: nhóm câu lệnh, chọn định (if); chu trình với phép kiểm tra kết thúc đầu (for, while), cuối (do while); việc lựa chọn trờng hợp (switch) C cung cấp trỏ khả định địa số học Các đối hàm đ ợc truyền cách chép giá trị đối hàm đợc gọi thay đổi đợc giá trị đối C cho phép hàm đợc gọi đệ quy biến cục hàm tự động sinh tạo với lần gọi Các định nghĩa hàm không -4- Chữ ký số ngời xác nhận chối bỏ đợc lồng nhng biến đợc khai báo theo kiểu cấu trúc khối Các hàm dịch tách biệt Các biến hàm Hàm biết đợc biến tệp gốc, biến tổng thể extern Các biến tự động đặt ghi để tăng hiệu quả, nhng việc khai báo ghi hớng dẫn cho chơng trình dịch không liên quan đến ghi đặc biệt máy C ngôn ngữ có kiểu mạnh mẽ theo nghĩa PASCAL ALGOL/68 Nó tơng đối thoải mái chuyển đổi liệu nhng không tự động chuyển kiểu liệu cách phóng túng nh PL/I Các chơng trình dịch có không đa chế kiểm tra số mảng, kiểu đối số Mặc dù vậy, C tồn số nhợc điểm nh số phép toán có thứ tự thực cha đúng; số phần cú pháp làm tốt hơn; có nhiều phiên ngôn ngữ, khác vài chi tiết Tóm lại, C tỏ ngôn ngữ hiệu đầy sức diễn cảm nhiều lĩnh vực ứng dụng lập trình Hơn nữa, ta biết hệ mật chuẩn hay chữ ký số cần số lớn tức kích cỡ không gian khoá lớn khoảng 300 số thập phân Do đó, ngôn ngữ C đủ mạnh để đáp ứng đợc điều Chơng II CHữ Ký Số II.1 Giới thiệu chung vỊ ch÷ ký sè -5- Ch÷ ký sè ngêi xác nhận chối bỏ Nh đà biết, chữ ký viết tay thờng lệ gắn với tài liệu đợc dùng để ngời đà ký Chữ ký đợc sử dụng hàng ngày nh để viết th, ký hợp đồng đây, tìm hiểu chữ ký hoàn toàn khác chữ ký số Nó phơng pháp ký thông báo đợc lu dới dạng điện tử thông báo đợc ký truyền mạng máy tính Chữ ký tay chữ ký số dù có nhiệm vụ chung ký nhng có khác chúng Thứ nhất, việc ký tài liệu: Với chữ ký tay chữ ký phận vật lý tài liệu đợc ký Tuy nhiên, chữ ký số không gắn 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, thuật toán đợc dùng phải trói chữ ký với thông báo theo cách Thứ hai, việc kiểm tra: chữ ký tay đợc kiểm tra cách so sánh với khác, chữ ký đà xác thực Ví dụ, ngời ký séc mua hàng, ngời bán hàng phải so sánh chữ ký 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 không an toàn tơng đối dễ đánh lừa chữ ký ngời khác Khác với chữ ký tay, chữ ký số đợc kiểm tra cách dùng thuật toán kiểm tra công khai đà biết Vì vậy, ngời kiểm tra chữ ký số Và việc sử dụng lợc đồ ký an toàn ngăn chặn khả đánh lừa Điều khác chữ ký tay chữ ký số thông báo số đợc ký đồng với gốc Trong đó, chép tài liệu giấy đà ký thờng khác với gốc Điều nghĩa phải cẩn thận để ngăn chặn thông báo đà ký số bị sử dụng lại Ví dụ, Bob ký thông báo số cho quyền Alice rút $100 từ tài khoản nhà băng mình, muốn Alice làm việc lần Do đó, thông báo tự 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 thành phần: thuật toán ký thuật toán kiểm tra Bob ký thông báo x nhờ thuật toán ký (bí mật) Sig Chữ ký thu đợc Sig(x) sau đợ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 trả lời sai phụ thuộc vào việc chữ ký có đích thực không? II Định nghĩa lợc đồ chữ ký số Lợc đồ chữ ký số năm phần tử (P, A, K, S, V) thoả mÃn điều kiện sau: P _ tập hữu hạn thông báo -6- Chữ ký số ngời xác nhận chối bỏ A _tập hữu hạn chữ ký K _tập hữu hạn khoá, không gian khoá Với k K, sigk S verk V Mỗi sigk: P A, verk: P * A true, false hàm cho điện x P chữ ký y A tho¶ m·n: true , y =sig ( x ) false , y≠sig ( x ) { Ver(x,y) = *Yêu cầu: - Với khoá k K, hàm sigk verk hàm thời gian đa thức - Verk hàm công khai; sigk hàm bí mật để tránh trờng hợp Orcar giả mạo chữ ký Bob để ký thông báo x Với x Bob tính đợc chữ ký y cho: Ver(x, y) = True Lợc đồ chữ ký phải an toàn Bởi Orcar kiểm tra tất khả chữ ký y nhờ thuật toán kiểm tra công khai Ver đạt đợc yêu cầu tức tìm đợc chữ ký Do đó, có đủ thời gian cần thiết Orcar giả mạo đợc chữ ký Bob Vì mục đích tìm lợc đồ chữ ký cho Orcar không đủ thời gian thực tế để thử nh II Một vài lợc đồ chữ ký số II.3 Lợc đồ chữ ký số RSA Lợc đồ chữ ký RSA đợc định nghĩa nh sau: * Tạo khoá: Cho n = p q; với p, q 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 số nguyên tố; ab 1mod (n)} Các giá trị n b công khai; giá trị p, q, a 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, tính chữ ký y b»ng c¸ch: y = sigK(x) = xa B 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 chữ ký số y, Alice tiến hành kiểm tra đẳng thức: -7- Chữ ký số ngời xác nhận kh«ng thĨ chèi bá x = yb B modn (bB khóa công khai Bob) Nếu đúng, Alice công nhận y chữ ký x Bob Ngợc lại, Alice coi x Bob gửi cho (chữ ký không tin cậy) Ngời ta giả mạo chữ ký Bob nh sau: chọn y, sau ®ã tÝnh x = verK(y), ®ã y = sigK(x) Một cách để khắc phục khó khăn việc yêu cầu x phải có nghĩa Do chữ ký giả mạo nói thành công với xác suất nhỏ Ta kết hợp chữ ký với mà hoá làm cho độ an toàn chữ ký tăng thêm Giả sử rằng, Alice tính chữ ký cô ta y = sig Alice(x), sau mà hoá x y cách sử dụng mật mà công khai e Bob Bob, cô ta nhận đợc z = eBob(x, y) Bản mà z đợc truyền tới Bob Khi nhận đợc z, việc trớc tiên giải mà hàm dBob để nhận đợc (x, y) Sau sử dụng hàm kiểm tra công khai cđa Alice ®Ĩ kiĨm tra xem liƯu ver Alice(x, y) = true? NÕu Alice m· ho¸ x tríc råi sau ký lên mà đà đợc mà hoá sao? Khi cô ta tính: y = sigAlice(eBob(x)) Alice sÏ trun cỈp (z, y) cho Bob Bob giải mà z, nhận đợc x kiểm tra chữ ký y cách sử dụng verAlice Một vấn đề tiềm ẩn biện pháp Orcar có đợc cặp (z, y) kiểu này, 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· e bob(x) rõ x Khi ®ã, nÕu Orcar trun (z, y ’ ) tíi Bob, chữ ký Orcar đợc kiểm thử Bob sư dơng ver Orcar, vµ Bob cã thĨ suy rõ x xuất phát từ Orcar Điều làm cho ngời sử dụng hiểu nên ký trớc sau 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 Bob lµ b = 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ý: -8- Chữ ký số ngời xác nhận chối bá y = xa modn = 10031 mod247 = 74 Bob gưi cỈp (x, y) = (100, 74) cho Alice Alice kiểm tra 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 chữ ký tin cậy II.3.2 Lợc đồ chữ ký ElGamal Lợc đồ chữ ký số ElGamal đợc giới thiệu năm 1985 đợc Viện tiêu chuẩn 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 giống nh hệ thống mà hoá công khai ElGamal Điều có nghĩa có nhiều chữ ký hợp lệ cho thông báo Thuật toán kiểm tra phải có khả chấp nhận chữ ký hợp lệ xác minh Lợc đồ chữ ký số ElGamal đợc định nghĩa nh sau: * Tạo khoá: Cho p số nguyên tố cho toán lôgarit rời rạc Z p khó giả sử Z p phần tử nguyên thủy ¿ Cho P = Z p , A = Z p Zp-1 định nghĩa: K = {(p, a, , ): = a modp } Các giá trị p, , công khai, a bí mật * Tạo chữ ký: Với K = (p, a, , ) với số ngẫu nhiên k Z ), đó: = k modp = (x - a) k -1mod(p - 1) * KiĨm tra ch÷ ký số: p1 , định nghĩa:sigk(, Với x, Z p Zp-1, ta định nghĩa: Ver (x, , ) = True x modp Chứng minh: Nếu chữ ký đợc thiết lập kiểm tra thành công vì: a. r. modp x modp ( v× a + r x mod(p - 1)) Bob tÝnh ch÷ ký cách dùng giá trị bí mật a ( phần khoá) lẫn số ngẫu nhiên bí mật k (dùng để ký x) Việc kiểm ta thực -9- Chữ ký số ngời xác nhận kh«ng thĨ chèi bá hiƯn nhÊt b»ng th«ng tin công khai Ví dụ: Giả sử p = 467, = 2, a = 127 Khi ®ã: = a modp = 2127mod467 = 132 Giả sử Bob có thông báo x = 100 chọn ngẫu nhiên k = 213 (213, 466) =1 213-1 mod466 = 431 Bob ký trªn x nh sau: = k modp = 2213mod467 = 29 vµ = (x - a)k-1 mod(p -1) = (100 – 127 29).431 mod466 = 51 Chữ ký Bob x = 100 (29, 51) Bất kỳ ngời kiểm tra chữ ký cách: 13229 2951 189 mod 467 2100 189 mod 467 Do chữ ký tin cậy Bây giờ, ta xét độ an toàn lợc đồ chữ ký ElGamal Giả sử Orcar thử giả mạo chữ ký thông báo x cho trớc mà a Nếu Orcar chọn giá trị thử tìm tơng ứng, phải tính logarit rời rạc logx - Mặt khác, chọn trớc sau thử tìm phải giải phơng trình x modp, ẩn Bài toán cha có lời giải, nhiên dờng nh liên quan đến toán đà nghiên cứu Vẫn có khả tìm đồng thời để (, ) chữ ký Hiện thời không tìm đợc cách giải song không khẳng định đợc lời giải Nếu Orcar chọn , sau thử giải để tìm x, phải tính toán logarit rời rạc, tức phải tính log Vì Orcar ký thông điệp ngẫu nhiên cách Tuy nhiên có cách để Orcar ký lên thông điệp ngẫu nhiên việc chọn , , x đồng thời Giả thiết i j số nguyên i p 2; j p – vµ (j, p 1) =1 Khi thự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 (, ) chữ ký hợp lệ x Điều đợc chứng minh qua việc kiÓm tra: -(i j )- i j −1 modp - 10 -