Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
MỤC LỤC CHƯƠNG 1: KHÁI QUÁT VỀ CHỮ KÍ SỐ 1.1 Tổng quan chữ kí số 1.1.1 Thuật toán khóa công khai Mã hóa bất đối xứng thường hiểu mã hoá sử dụng khóa công khai Mã hóa bất đối xứng sử dụng cặp khóa: khóa bí mật khóa công khai, miêu tả hình 1.1 Mỗi trình truyền tin sử dụng cặp khóa sử dụng linh hoạt Khóa bí mật cần phải lưu trữ riêng đảm bảo tính bảo mật, không truyền mạng Khóa công khai cung cấp miễn phí công bố tới người Hình 1.1: Hệ thống sử dụng mã hóa khóa công khai Tương tự mã hoá khoá bí mật, phương pháp có thành phần sau: Plaintext: tin gốc Encryption Algorithm: phép biến đổi xuôi, thực biến đổi tin gốc Public/Private keys: cặp khóa công khai/bí mật Ciphertext: tin biến đổi Decryption Algorithm: phép biến đổi ngược, khôi phục tin gốc Quá trình sử dụng mã hóa khóa công khai: Bên nhận sinh cặp khóa Khóa công khai thường chứng thực bên thứ ba tin cậy chuyển cho người gửi theo phương thức truyền thông thông thường Bên gửi nhận khóa công khai, kiểm tra thông tin chứng thực khoá dùng khóa để mã hóa thông điệp gửi cho bên nhận Bên nhận sử dụng khoá bí mật để giải mã thông điệp D(Kd(E(Ke,M)) = M Thông điệp bị bên thứ ba lấy trộm, đọc nội dung 1.1.2 Chữ ký số Chữ ký số : Là thể chứng thực mã hóa khoá bí mật người gửi Chữ ký số thông tin kèm theo liệu (văn bản, hình ảnh, video ) nhằm mục đích xác định chủ thể liệu Quá trình tạo xác thực chữ ký số mô tả Hình 1.2 Hình 1.2: Chữ ký số 1.1.3 Vai trò chữ ký số Chữ ký số dùng cho văn số, cho biết toàn văn ký người ký Và người khác xác minh điều Chữ ký số tương tự chữ ký thông thường, đảm bảo nội dung tài liệu đáng tin cậy, xác, không thay đổi đường truyền cho biết người tạo tài liệu Tuy nhiên, chữ ký số khác chữ ký thường, tuỳ thuộc vào văn Chữ ký số thay đổi theo văn chữ ký thường không thay đổi Chữ ký số sử dụng để cung cấp chứng thực chủ sở hữu, tính toàn vẹn liệu chống chối bỏ nguồn gốc nhiều lĩnh vực 1.1.4 Sơ đồ tổng quan hệ thống chữ ký số Một sơ đồ chữ ký số thường bao gồm hai thành phần chủ chốt thuật toán ký thuật toán xác minh Một sơ đồ chữ ký số (P, A, K, S, V) thỏa mãn điều kiện sau: P tập hợp rõ A tập hữu hạn chữ ký K tập hữu hạn khóa S tập thuật toán ký V tập thuật toán xác minh Với k thuộc K, tồn thuật toán ký sigk thuộc S thuật toán xác minh verk thuộc V, sigk verk ánh xạ : sigk ánh xạ từ P sang A vàVerk ánh xạ từ A sang tập biểu diễn {True, False} thỏa mãn với x thuộc P, y thuộc A,ver (x,y)= true y=sig(x) ver(x,y) = false y khác sig(x) Với k thuộc K, hàm sigk verk hàm thời gian đa thức, verk hàm công khai sigk hàm mật Ý nghĩa sơ đồ : Khi người dùng muốn ký lên thông báo x người dùng thuật toán an toàn để tạo chữ ký y =sig(x) nhận gửi cho người nhận Người nhận nhận chữ ký sig(x) dùng thuật toán xác minh ver(x,y) để xác định tính đắn chữ ký số ( trả true false) 1.2 Cơ sở hình thành nên chữ ký số 1.2.1 Cơ sở toán học Số học nhánh toán học, lại trở thành công cụ hữu hiệu ngành an ninh máy tính Như khởi đầu, số học giúp bảo vệ liệu nhạy cảm số thẻ tín dụng giúp người dùng mua sắm trực tuyến Đó kết số thành tựu nghiên cứu đáng ghi nhận từ năm 1970 tới nay, áp dụng rộng rãi giới Những giao thức mã hóa đặc biệt chữ ký số điện tử dựa lý thuyết số học để tạo khóa, mã hóa giải mã An tòan giao thức liên quan tới vấn đề số học : giải thuật công khai phân tích thừa số nguyên tố 1.2.1.1 Sinh số nguyên tố phân tích thừa số nguyên tố Hai hệ ước lượng thuyết số học tiền đề cho hệ thống khóa công khai RSA ngày Hệ : Sinh số nguyên tố dễ Việc tìm số nguyên tố ngẫu nhiên với kích cỡ cho trước dễ dàng Nó kết hai điểm khác : Số nguyên tố với kích thước phổ biến việc kiểm tra số nguyên tố không khó – chí với số nguyên tố lớn Để sinh số nguyên tố ngẫu nhiên, đơn giản việc sinh số nguyên ngẫu nhiên với độ lớn cho kiểm tra tính nguyên tố số nguyên tố tìm thấy Dựa vào điều kiện số nguyên tố, số kỳ vọng kiểm tra dựa vào thứ tự lnx( thuật toán tự nhiên x) mà x số điển hình với độ lớn mong muốn Việc kiểm tra số số nguyên tố không dễ Trong thực tế, dường việc kiểm tra tính nguyên tố yêu cầu số khác số số ước số nguyên cần kiểm tra Hầu hết hệ mã hóa khóa công khai ngày đề phụ thuộc vào việc sinh số nguyên tố Cho p, q số nguyên tố lớn sinh ngẫu nhiên.(kích cỡ trung bình hệ mã hóa thường 512 bits lớn hơn) Hệ : Phép tính nhân dễ : Với p q cho trước, việc tính kết phép nhân n = pxq dễ dàng Ước lượng : Phân tích thừa số khó : Với số nguyên n kết phép nhân số nguyên tố lớn, việc tìm lại số nguyên tố thừa số p, q khó 1.2.1.2 Phép mũ hóa khai modul Như ta khai báo n kết phép nhân hai số nguyên tố lớn sinh ngẫu nhiên Cho m c số nguyên nằm khoảng (0,n-1) e số nguyên lẻ khoảng (3,n-1) nguyên tố với p-1 q-1 Thao tác mã hóa giải mã hệ mã hóa khóa công khai RSA thực dựa hệ ước lượng sau : Hệ 4: Phép tính mũ hóa modul dễ : Cho n,m e Việc tính c = me mod n dễ dàng Giá trị me mod n thức kết nâng lũy thừa e m, chia cho n lấy phần dư Điều phép tính toán phức tạp liên quan tới việc nhân (e-1) số m kết trả số nguyên lớn, trước việc thực phép chia cho n Tuy nhiên hai cách tối ưu hóa sau làm cho việc tính toán trở nên dễ dàng : - Nhân với trình tự thích hợp giá trị trung gian trước đó, thay m, giảm số lượng phép nhân để không hai lần kích thước e hệ nhị phân - Chia lấy phần dư sau phép nhân giữ kết trung gian có kích thước n Hệ 5: Phép khai module – nghịch đảo phép lũy thừa module Cho n,e,c thừa số nguyên tố p, q, việc khôi phục lại giái trị m cho c = me mod n dễ dàng Giá trị m khôi phục từ c thao tác mũ hóa modul với số nguyên lẻ d nằm khoảng (3,n-1) Đặc biệt, với số d này, biểu thức sau thể cho tất m : m = (me)d mod n Số nguyên d dễ dàng tính với e, p, q cho trước Ước lượng 6: Phép khai modul lại khó hoàn cảnh khác Cho n,e, thừa số nguyên tố, việc khôi phục lại m khó khăn Phương pháp nhanh có sẵn việc tính toán khai modul điều kiện dựa n e phân tích thừa số n áp dụng hệ để định d Thực sự, phương thức định d bị chuyển cách khác việc phân tích thừa số n Đúng mà tồn phương pháp mà tính toán khai modul mà không cần phân tích n định d Nhưng chưa phương phàp làm nhanh việc phân tích thừa số n 1.2.2 Hàm băm mật mã 1.2.2.1 Các khái niệm định nghĩa Hàm băm giải thụât nhằm sinh giá trị băm tương ứng với khối liệu Giá trị băm đóng vai trò gần khóa để phân biệt khối liệu Hình 1.3: Ảnh minh họa làm việc hàm băm o Phân loại : Hàm băm chiều : (one – way hash functions) : Là hàm băm mang tính chất : với mã băm biết trước, tính toán để tìm chuỗi bit ban đầu vào có mã băm với mã băm cho Hàm băm kháng xung đột : (collision resistant hash funtions) hàm băm mang tính chất : tính toán để tìm hai chuỗi bit có giá trị băm 1.2.2.2 Cấu trúc thuật toán băm Khối liệu đầu vào x có chiều dài hữu hạn tùy ý phân thành khối liên tiếp có chiều dài cố định r, giả sử đánh số x1,x2, ,xm Tuy nhiên chiều dài khối liệu ban đầu x tùy ý, cần phải thêm vào liệu ban đầu số bit phụ cho tổng số bit khối liệu x’ sau thêm vào bội số r Ngoài khối bit thêm vào thường chứa khối bit (có chiều dài cố định trước, thường 64 bit) xác định chiều dài thực khối bt liệu chưa thêm bit phụ Tiếp theo, cắt khối r bit từ khối mở rộng x’ Mỗi khối r bit xi bước qua hàm nén f hàm băm h(x) Tại bước thứ i, hàm nén f nhận liệu đàu vào xi kết trung gian bước trước (bước i – 1) để tạo đầu kết trung gian bước thứ i, ký hiệu H i Kết trung gian bước Hi chuỗi bit có độ dài cố định n > Kết ký hiệu IV giá trị ban đầu (cho H ), trình lặp xử lý dãy khối x1,x2, ,xm mô tả : H0 = IV Hi = f(Hi-1,xi) (i = 1,2, ,m) h(x) = g(Hm) Trong : - Các biến Hi biến dây chuyền - Hàm g(x) lấy biến dây chuyền cuối để tạo mã băm cuối cần tìm Trong hầu hết thuật toán g(x) thường chọn ánh xạ đồng tức g(H m) = Hm - Khâu then chốt xây dựng hàm băm thiết kế hàm nén f - Giá trị hàm băm mật mã thông điệp gọi Message Digest (MD) Một số hàm băm mật mã thông dụng : MD4,MD5 SHA-1 1.2.2.3 Giải thuật MD4 MD4 (Message-Digest thuật toán 4) thông điệp tiêu hóa thuật toán (thứ tư loạt a) thiết kế Giáo sư Ronald Rivest MIT vào năm 1990 Nó thực hàm băm mật mã để sử dụng kiểm tra tính toàn vẹn thông điệp Chiều dài giá trị băm 128 bit Thuật toán MD4 nhận liệu đầu vào chuỗi bit x có chiều dài b >= tùy ý sinh mã băm x có chiều dài cố định 128 bit Trước tiên chuỗi bit x định dạng lại cách thêm r > bit phụ thuộc vào x cho chiều dài chuỗi bit b’ = b + r bội số 512 Sau chia chuỗi bit thành m khối, khối có độ dài 512 bit Mỗi khối bit lại chia thành 16 từ, từ có 32 bit Thuật toán MD4 xử lý dãy m khối m lượt tính toán Dữ liệu đầu vào lượt tính toán thứ k (1