Luận văn Nghiên cứu một số bài toán về an toàn thông tin trong thỏa thuận và ký kết hợp đồng của thương mại điện tử

LỜI CẢM ƠN .i

LỜI CAM ĐOAN .ii

LỜI MỞ ĐẦU.1

CHưƠNG 1. CÁC KHÁI NIỆM CƠ BẢN .3

1.1. Tổng quan về thương mại điện tử .3

1.1.1. Khái niệm về TMĐT.3

1.1.2. Vai trò tác động của TMĐT.4

1.1.3. Các đặc trưng của TMĐT .6

1.1.4. Các loại hình giao dịch TMĐT .8

1.1.5. Ba giai đoạn hoạt động của TMĐT.10

1.2. Tổng quan về An toàn thông tin.12

1.2.1. An toàn thông tin là gì? Tại sao cần bảo đảm An toàn thông tin?.12

1.2.2. Mục tiêu của An toàn thông tin.13

1.2.3. Các giải pháp bảo đảm An toàn thông tin.13

1.3. Mã hóa dữ liệu.14

1.3.1. Khái niệm Mã hóa dữ liệu.15

1.3.2. Phân loại hệ mã hóa .16

1.3.3. Một số Hệ mã hóa tiêu biểu .18

1.4. Chữ ký số.23

1.4.1. Khái niệm “Chữ ký số”.23

1.4.2. Một số chữ ký số tiêu biểu.25

1.5. Đại diện tài liệu và hàm băm.27

1.5.1. Hàm băm (Hàm tạo đại diện tài liệu).27

1.5.2. Các Hàm băm .28

1.6. Thủy vân số (Digital watermarking) .28

1.6.1 Phân loại Thủy vân số.29

1.6.2. Các ứng dụng của Thuỷ vân với ảnh số.30

pdf68 trang | Chia sẻ: honganh20 | Ngày: 10/03/2022 | Lượt xem: 259 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số bài toán về an toàn thông tin trong thỏa thuận và ký kết hợp đồng của thương mại điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
được nội dung. 15 Trên đường truyền nội dung của thông tin có thể bị theo dõi, bị đọc trộm hay bị đánh cắp vì vậy để đảm bảo rằng chỉ có người nhận mới được đọc tin thì trước khi gửi chúng cần phải được mã hóa thành “thông tin không có ý nghĩa”. Và để hiểu được thông điệp này thì kẻ tấn công phải giải mã được nó, nếu chúng được mã hóa với thuật toán càng tốt thì chi phí giải mã càng cao đối với những kẻ tấn công này và đương nhiên chúng sẽ phải tính toán xem chi phí giải mã có cao hơn thông tin cần biết hay không? Như vậy thuật toán mã hóa càng tốt thì vấn đề bảo mật thông tin càng cao. 1.3.1. Khái niệm Mã hóa dữ liệu Để bảo đảm ATTT lưu trữ trong máy tính hay bảo đảm ATTT trên đường truyền tin [1] người ta phải “Che Giấu” (mã hóa) các thông tin này để người khác khó nhận ra. Mã hóa: Là quá trình chuyển thông tin từ dạng đọc được (bản rõ) thành thông tin không thể đọc được (bản mã) đối với người không được phép. Giải mã: Là quá trình chuyển đổi thông tin ngược lại từ thông tin không thể đọ được (bản mã) sang thông tin có thể đọc được (bản rõ). Hình 1.11: Sơ đồ mã hóa đơn giản. 1.3.1.1. Hệ mã hóa Hệ mã hóa: là tập hợp các thuật toán, các khóa nhằm mã hóa và giải mã thông tin. Hệ mã hóa là bộ năm (P, C, K, E, D) trong đó: P là tập hữu hạn các bản rõ có thể. C là tập hữu hạn các bản mã có thể. K là tập hữu hạn các khoá có thể. E là tập các hàm lập mã. D là tập các hàm giải mã. Khóa lập mã ke  K, hàm lập mã eke  E, eke: P C, Khóa giải mã kd  K, hàm giải mã dkd  D, dkd: C P, sao cho dkd (eke (x)) = x, x  P. x ở đây được gọi là bản rõ và eke (x) được gọi là bản mã. 16 1.3.1.2. Mã hóa và Giải mã Người gửi G    eke (T)    Người nhận N (có khóa lập mã ke) (có khóa giải mã kd)  Tin tặc có thể trộm bản mã eke (T) Người gửi G muốn gửi bản tin T cho người nhận N. Để bảo đảm bí mật, G mã hoá bản tin bằng khóa lập mã ke, sau khi mã hóa G nhận được bản mã eke (T), rồi gửi cho N. Tin tặc có thể trộm bản mã eke (T), nhưng nếu có trộm được bản mã này cũng “khó” hiểu được bản tin gốc T nếu không có khoá giải mã kd. N nhận được bản mã và dùng khoá giải mã kd để giải mã bản mã eke (T), sau khi giải mã xong sẽ nhận được bản tin gốc T = dkd (eke (T)). 1.3.2. Phân loại hệ mã hóa Như chúng ta đã biết hiện nay có 2 loại mã hóa chính bao gồm: mã hóa khóa đối xứng và mã hóa khoá công khai. 1.3.2.1. Hệ mã hóa khóa đối xứng Mã hóa khóa đối xứng [1] là hệ mã hóa mà cả khóa lập mã và khóa giải mã “giống nhau” nếu biết được khóa lập mã thì có thể “dễ” tính ra được khóa giải mã và ngược lại biết được khóa giải mã thì sẽ “dễ” tính ra được khóa lập mã. Đặc biệt có một số hệ mã hóa có khoá lập mã và khoá giải mã trùng nhau (ke = kd), chẳng hạn như hệ mã hóa “dịch chuyển” hay DES. Hệ mã hóa khóa đối xứng hay còn gọi là hệ mã hóa khoá bí mật, khóa riêng bởi vì phải giữ bí mật cả hai khóa. Người gửi, người nhận phải thoả thuận khoá chung (lập mã hay giải mã) và khoá này phải được giữ bí mật trước khi dùng hệ mã hóa khóa đối xứng. Độ an toàn của hệ mã hóa khóa đối xứng phụ thuộc vào khoá. Ưu điểm: - Mã hóa khóa đối xứng thì mã hóa và giải mã nhanh hơn hệ mã hóa khóa công khai. Nhược điểm: - Mã hóa khóa đối xứng chưa thật sự an toàn vì: người mã hoá và người giải mã phải có “chung” một khoá. Do vậy khóa phải được giữ bí mật tuyệt đối (vì biết khoá này “dễ” tính được khoá kia và ngược lại). - Việc thỏa thuận và quản lý khóa chung là khó khăn và phức tạp. Người gửi, người nhận luôn phải thống nhất với nhau về khoá chung. Việc thay đổi khoá là rất khó và dễ bị lộ. Khóa chung phải được gửi cho nhau giữa người gửi và người nhận trên kênh an toàn. 17 - Hai người (lập mã, giải mã) cùng biết “chung” một bí mật, thì việc giữ được bí mật là rất khó! Nơi sử dụng: - Thường được sử dụng trong môi trường như trong cùng mạng nội bộ thì khoá chung có thể dễ dàng trao chuyển bí mật. - Hệ mã hóa khóa đối xứng mã hóa và giải mã nhanh hơn hệ mã hóa khóa công khai nên thường dùng để mã hóa những bản tin lớn. Mã hóa khóa đối xứng có thể chia thành:  Mã hóa khối: là mã hóa sử dụng phép biến đổi mã hóa cố định thao tác trên các khối của bản rõ và bản mã. Bản rõ được chia thành một chuỗi các khối có kích thước xác định và mã hóa từng khối một tại mỗi thời điểm. Các khối bản rõ cùng với khóa luôn được mã hóa thành các khối bản mã tương ứng. Chẳng hạn, hệ mã hóa DES và hệ mã hóa AES (thế hệ sau của DES) là hai hệ mã hóa sử dụng mã hóa khối. DES thao tác trên những khối 64 bit với khóa 56 bit, còn AES thao tác trên những khối 128 bit và kích cỡ khóa có thể là 128, 192 hoặc 256 bit.  Mã hóa dòng: Xử lý từng bit hoặc byte của bản rõ và bản mã tại một thời điểm. Mỗi lần nó được mã hóa thì mỗi bit của bản rõ sẽ được mã hóa thành một bit khác. Mã hóa dòng áp dụng những phép biến đổi mã hóa tùy thuộc vào một dòng khóa được sử dụng. 1.3.2.2. Hệ mã hóa khóa công khai Hệ mã hóa khóa công khai (hệ mã hóa khóa phi đối xứng) [1] do Diffie và Hellman phát minh vào những năm 1970, là hệ mã hóa có khóa lập mã và khóa giải mã khác nhau (ke  kd), biết được khóa này cũng “khó” tính được khóa kia. Một ai đó có thể dùng khoá công khai để mã hoá bản tin, nhưng chỉ người có đúng khoá giải mã thì mới có khả năng đọc được bản rõ. Ưu điểm: - Người mã hoá dùng khóa công khai và ngược lại người giải mã giữ khóa bí mật. Vì chỉ có một người giữ khóa bí mật nên khả năng lộ khóa bí mật khó hơn. - Nếu thám mã cố gắng tìm khoá bí mật (mặc dù biết khoá công khai) thì chúng phải đương đầu với bài toán “khó”. - Thuận tiện ở chỗ là thuật toán được viết một lần nhưng có thể công khai cho nhiều người dùng và cho nhiều lần dùng và họ chỉ cần giữ bí mật khóa riêng của mình. 18 - Việc tính ra cặp khoá công khai, bí mật phải trong thời gian đa thức (cho biết các tham số ban đầu của hệ mã hóa). - Người gửi “dễ” tạo ra bản mã C khi có bản rõ P, khoá công khai. - Người nhận “dễ” giải được thành bản rõ P khi có bản mã C, khoá bí mật. - Việc tìm ra bản rõ P cũng là bài toán “khó” nếu thám mã biết khoá công khai, biết bản mã C thì số phép thử là vô cùng lớn và không khả thi. Nhược điểm: - Hệ mã hóa khóa công khai mã hóa, giải mã chậm hơn hệ mã hóa khóa đối xứng. Nơi sử dụng: - Việc trao chuyển khoá bí mật khá khó khăn và thường sử dụng đa số trên các mạng công khai như Internet. - Khoá công khai, bản mã đều có thể gửi đi trên một kênh truyền tin không an toàn. - Nếu có biết cả khóa công khai, bản mã thì việc thám mã khám phá được bản rõ cũng không phải dễ dàng. - Hệ mã hóa khóa công khai chỉ dùng để mã hóa những bản tin ngắn vì mã hóa và giải mã chậm. - Đa số được sử dụng cho cặp người dùng thỏa thuận khóa bí mật của hệ mã hóa khóa riêng. 1.3.3. Một số Hệ mã hóa tiêu biểu 1.3.3.1. Hệ mã hóa đối xứng AES Giới thiệu: Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóa tiên tiến là một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa nhằm mã hóa và giải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa Kỳ (National Institute Standards and Technology – NIST) phát hành ngày 26 11 2001 và được đặc tả trong Tiêu chuẩn Xử lý thông tin Liên bang 197 (Federal Information Processing Standard – FIPS 197) sau quá trình kéo dài 5 năm trình phê duyệt, AES tuân theo mục 5131 trong Luật Cải cách quản lý công nghệ thông tin năm 1996 và Luật An toàn máy tính năm 1997. Thuật toán được hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen thiết kế. Khi tham gia cuộc thi thiết kế AES thì thuật toán được đặt tên là "Rijndael". Vào những năm 1990, nhận thấy nguy cơ của mã hóa DES là kích thước khóa ngắn, nó có thể bị phá mã trong tương lai gần nên cục tiêu chuẩn quốc gia Hoa Kỳ đã kêu gọi xây dựng một phương pháp mã hóa mới. Cuối cùng 19 một thuật toán có tên là Rijndael được chọn và đổi tên thành Andvanced Encryption Standard (AES). Thuật toán Rijndael dựa trên bản thiết kế trước đó của Daemen và Rijmen (đó là Square và Square lại được thiết kế dựa trên Shark). Khác với Rijndael sử dụng mạng thay thế hoán vị thì DES lại sử dụng mạng Feistel. AES không đòi hỏi nhiều bộ nhớ và có thể dễ dàng được thực hiện với tốc độ cao bằng phần mềm hoặc phần cứng. Chuẩn mã hóa AES cho phép xử lý các khối dữ liệu đầu vào kích thước 128 bit và sử dụng các khóa có độ dài là 128, 192 hoặc 256 bit. Hệ mã hóa Rijndael có thể làm việc với các khóa và khối dữ liệu có độ dài lớn hơn, nhưng khi được Ủy ban tiêu chuẩn của Hoa kỳ đưa ra vào năm 2001 và chọn là chuẩn mã hóa thì nó được quy định chỉ làm việc với khối dữ liệu 128 bit và các khóa có độ dài 128, 192 hoặc 256 bit (do vậy nó còn có các tên AES-128, AES-192, AES-256 tương ứng với độ dài khóa sử dụng). Ưu điểm: - AES đã được sử dụng trong thông tin mật (do chính phủ Hoa Kỳ tuyên bố là có độ an toàn cao). - AES sử dụng bảng tra và phép thế có tính chất phi tuyến mạnh dẫn đến mức độ phân tán thông tin phức tạp làm tăng độ an toàn cho thuật toán. - AES mô tả cấu trúc rõ ràng, đơn giản, mô tả toán học đơn giản. Nhược điểm: Do cấu trúc toán học của AES mô tả toán học khá đơn giản mặc dù điều này hiện tại chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu cho rằng trong tương lai sẽ có người lợi dụng được cấu trúc này. Ứng dụng: Hiện nay, AES được sử dụng rộng rãi trên toàn thế giới để bảo vệ dữ liệu ở các tổ chức như tài chính, ngân hàng, chính phủ, chữ ký điện tử, thương mại điện tử. Mã hóa AES được ứng dụng nhanh đối với cả phần mềm và phần cứng, chỉ yêu cầu một không gian lưu trữ nhỏ sử dụng cho việc mã hóa những thiết bị cầm tay nhỏ như ổ CD, ổ USB, Mã hóa AES được sử dụng như một hàm băm. 20 Các khái niệm và định nghĩa: 1. Các khái niệm và ký hiệu Biến đổi Affine Phép biến đổi bao gồm một phép nhân với một ma trận sau đó là môṭ phép cộng của một vectơ Bit Một số nhi ̣phân nhận giá tri ̣0 hoặc 1 Block Một dãy các bit nhi ̣phân tạo thành input, output, trạng thái (state) và các khóa sử dụng tại các vòng lặp (Round Key) của hệ mã. Độ dài của dãy (khối) là số lượng các bit mà nó chứa. Các khối cũng có thể được xem là một dãy các byte Byte Một nhóm 8 bit Cipher Thuật toán mã hóa Cipher Key Khóa của hệ mã, có thể được biểu diễn dưới dạng một mảng 2 chiều gồm 4 hàng và Nk cột Ciphertext Bản mã Inverse Cipher Thuật toán giải mã Thủ tục sinh khóa (Key Expansion) Thủ tục được sử dụng để sinh ra các khóa sử dụng tại các vòng lặp của thuật toán mã hóa, giải mã từ khóa chính ban đầu Round Key Là các giá trị sinh ra từ khóa chính bằng cách sử dụng thủ tục sinh khóa. Các khóa này được sử dụng tại các vòng lặp của thuật toán Trạng thái (State) Các giá trị mã hóa trung gian có thể biểu diễn dưới dạng môṭ mảng 2 chiều gồm 4 hàng và Nb cột S-box Một bảng thế phi tuyến được sử dụng trong thủ tuc ̣sinh khóa và trong các biến đổi thay thế các byte để thực hiện các thay thế 1-1 đối với một giá tri ̣1 byte Word Một nhóm 32 bit có thể được xem như 1 đơn vi ̣tính toán độc lập hoặc là một mảng 4 byte Bảng 1: Qui ước một số từ viết tắt và thuật ngữ của AES 21 2. Các hàm, ký hiệu và các tham số của thuật toán Các tham số thuật toán, các ký hiệu và các hàm được sử dụng trong mô tả thuật toán: Tên hàm Giải thích AddRoundKey() Hàm biến đổi được sử dụng trong thuật toán mã hóa và giải mã trong đó thực hiện phép XOR bit giữa trạng thái trung gian (state) và một khóa vòng lặp (Round Key). Kích thước của một Round Key bằng kích thước của trạng thái, ví dụ với Nb=4 độ dài của một Round Key sẽ là 128 bit hay 16 byte MixColumns() Hàm biến đổi trong thuật toán mã hóa nhận tất cả các cột của một trạng thái (state) và trộn với dữ liệu của nó (không phụ thuộc lẫn nhau) để nhận được cột mới ShiftRows() Hàm sử dụng trong quá trình mã hóa, xử lý các trạng thái bằng cách dịch vòng ba hàng cuối của trạng thái với số lần dịch khác nhau SubBytes() Hàm biến đổi sử dụng trong quá trình mã hóa, xử lý một trạng thái bằng cách sử dụng một bảng thế phi tuyến các byte (S-box) thao tác trên mỗi byte một cách độc lập InvMixColumns() Hàm biến đổi được sử dụng trong thuật toán giải mã, là hàm ngược của hàm MixColumns() InvShiftRows() Hàm biến đổi sử dụng trong thuật toán giải mã và chính là hàm ngược của hàm ShiftRows() Inv SubBytes() Hàm biến đổi được sử dụng trong thuật toán giải mã, là hàm ngược của hàm SubBytes() K Khóa mã hóa Nb Số lượng các cột (là các word 32 bit) tạo thành một trạng thái, Nb = 4) Nk Số lượng các word 32 bit taọ thành khóa mã hóa K (Nk = 4, 6, hoặc 8) Nr Số lượng các vòng lặp của thuật toán, là một hàm của Nk và Nb (là các giá trị cố định) ( Nr = 10, 12 hoặc 14 tương ứng với các giá trị khác nhau của Nk) Rcon[] Mảng word hằng số sử dụng trong các vòng lặp RotWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word 4-byte và thực hiện một hoán vị vòng SubWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word input 4-byte và sử dụng một S -box trên mỗi giá trị 4-byte này để thu được 1 word output XOR Phép or bit tuyệt đối ⊕ Phép or bit tuyệt đối ⊗ Phép nhân 2 đa thức (bậc nhỏ hơn 4) theo modulo (x4 + 1) ● Phép nhân trên trường hữu hạn Bảng 2: Các hàm, ký hiệu, các tham số của thuật toán 22 Độ an toàn: Việc sử dụng các hằng số khác nhau ứng với mỗi chu kỳ giúp hạn chế khả năng tính đối xứng trong thuật toán. Sự khác nhau trong cấu trúc của việc mã hóa và giải mã đã hạn chế được các khóa “yếu” như trong phương pháp DES. Ngoài ra, thông thường những điểm yếu liên quan đến mã khóa đều xuất phát từ sự phụ thuộc vào giá trị cụ thể của mã khóa của các thao tác phi tuyến. Trong phiên bản mở rộng, các khóa được sử dụng thông qua thao tác XOR và tất cả những thao tác phi tuyến đều được cố định sẵn trong S-box mà không phụ thuộc vào giá trị cụ thể của khóa mã hóa. Tính chất phi tuyến cùng khả năng khuếch tán thông tin trong việc tạo bản mã khóa mở rộng làm cho việc phân tích mật mã dựa vào khóa tương đương hay các khóa có liên quan trở nên không khả thi. Đối với phương pháp vi phân rút gọn, việc phân tích chủ yếu khai thác đặc tính tập trung thành vùng của các vết vi phân trong một số phương pháp mã hóa. Trong thuật toán AES, số lượng chu kỳ lớn hơn 6, không tồn tại phương pháp công phá mật mã nào hiệu quả hơn phương pháp thử sai. Tính chất phức tạp của biểu thức S-box cùng với hiệu ứng khuếch tán giúp cho thuật toán không thể bị phân tích bằng phương pháp nội suy. Đối với phương pháp thử sai với chiều dài khóa 256-bit tương ứng 2256 hay 1.2 x 10 77 khả năng có thể xảy ra. Thậm chí nếu sử dụng một trong những siêu máy tính mạnh nhất hiện nay là Roadrunner 54 của IBM để xử lý thì cũng cần 3.5 x 1054 năm để kiểm tra tất cả khả năng (Roadrunner có khả năng thực hiện 1.042 triệu tỉ phép tính / giây). 1.3.3.2. Hệ mã hóa RSA Sơ đồ Là hệ mã hóa sử dụng các phép tính toán trong Zn, trong đó n là tích của hai số nguyên tố phân biệt p và q. Ta nhận thấy: (n) = (p-1).(q-1). Mô tả thuật toán: 1. Tạo cặp khóa (bí mật, công khai) (a, b) : Chọn bí mật nguyên tố lớn p, q và tính n = p * q, công khai n, đặt P = C = Zn Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b < (n) và b lànguyên tố cùng nhau với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n) ta có: a*b  1 (mod (n). Cặp khóa (bí mật, công khai) K = (a, b)/ a, b  Z(n) , a*b  1 (mod (n)). Với Bản rõ x  P và Bản mã y  C, định nghĩa: 2. Mã hoá: y = ek (x) = x b mod n 3. Giải mã: x = dk (y) = y a mod n 23 Ta kiểm tra xem các phép mã hóa và giải mã có phải là nghịch đảo của nhau không vì: a*b  1 (mod (n)). nên ta có: a*b  t(n) +1 với một số nguyên t ≥ 1 nào đó. Giả sử x  Zn * khi đó ta có: (x b ) a  xt(n) +1(mod n)  (xt(n))x(mod n)  (1t)x(mod n)  x(mod n) Thực hiện: Thiết lập hệ RSA cần tuân theo các bước sau: 1. Tạo hai số nguyên tố lớn p và q. 2. Tính n = p × q và (n) = (p-1).(q-1). 3. Chọn một số ngẫu nhiên b (với điều kiện 1 < b < (n)) sao cho UCLN(b, (n)) = 1 4. Tính a = b -1 mod (n) dùng thuật toán Euclide mở rộng. 5. Công bố n và b trong cùng một danh bạ và dùng chúng làm khóa công khai. Độ an toàn 1. Hệ mã hóa RSA là tất định nghĩa là với một bản rõ x và một khóa bí mật a, thì chỉ có duy nhất một bản mã y. 2. Hệ mật RSA an toàn, khi giữ được bí mật khoá giải mã a, p, q, (n). Thám mã dễ dàng tính được (n) = (q-1)*(p-1) nếu biết được p và q. Thám mã sẽ tính được a theo thuật toán Euclide mở rộng nếu biết được (n) Việc phân tích n thành tích của p và q là bài toán không dễ dàng hay nói cách khác là bài toán “khó”. Độ an toàn của hệ mật RSA dựa vào việc giải bài toán phân tích số nguyên dương n thành tích của hai số nguyên tố lớn p và q. 1.4. Chữ ký số 1.4.1. Khái niệm “Chữ ký số” Để chứng thực nguồn gốc hay hiệu lực của một tài liệu [1] trước đây người ta dùng chữ ký “tay”, ghi vào phía dưới của mỗi tài liệu. Như vậy người ký phải trực tiếp “ký tay“ vào tài liệu. Ngày nay các tài liệu được số hóa, người ta cũng có nhu cầu chứng thực nguồn gốc hay hiệu lực của các tài liệu này. Rõ ràng không thể “ký tay“ vào tài liệu, vì chúng không được in ấn trên giấy. Tài liệu “số” (hay tài liệu “điện tử”) là một xâu các bit (0 hay 1), xâu bít có thể rất dài (có thể hàng nghìn trang). “Chữ ký” 24 để chứng thực một xâu bít tài liệu cũng không thể là một xâu bit nhỏ đặt phía dưới xâu bit tài liệu. Một “chữ ký” như vậy chắc chắn sẽ bị kẻ gian sao chép để đặt dưới một tài liệu khác bất hợp pháp. “Chữ ký số” để chứng thực một “tài liệu số” đó chính là “bản mã” của xâu bit tài liệu. Người ta tạo ra “chữ ký số” (chữ ký điện tử) trên “tài liệu số” giống như tạo ra “bản mã” của tài liệu với “khóa lập mã”. Như vậy “ký số” trên “tài liệu số” là “ký” trên từng bit tài liệu. Kẻ gian khó thể giả mạo “chữ ký số” nếu nó không biết “khóa lập mã”. Để kiểm tra một “chữ ký số” thuộc về một “tài liệu số”, người ta giải mã “chữ ký số” bằng “khóa giải mã”, và so sánh với tài liệu gốc. Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của các tài liệu số hóa, “chữ ký số” còn dùng để kiểm tra tính toàn vẹn của tài liệu gốc. Mặt mạnh của “chữ ký số” hơn “chữ ký tay” còn là ở chỗ người ta có thể “ký” vào tài liệu từ rất xa (trên mạng công khai). Hơn thế nữa, có thể “ký” bằng các thiết bị cầm tay tại khắp mọi nơi miễn là kết nối được vào mạng. Đỡ tốn thời gian, sức lực, chi phí. “Ký số” thực hiện trên từng bit tài liệu, nên độ dài của “chữ ký số” ít nhất cũng bằng độ dài của tài liệu. Do đó thay vì ký trên tài liệu dài, người ta thường dùng “hàm băm” để tạo “đại diện” cho tài liệu, sau đó mới “Ký số” lên “đại diện” này. Sơ đồ chữ ký số: Sơ đồ chữ ký là bộ năm (P, A, K, S, V ), trong đó: P là tập hữu hạn các văn bản có thể. A là tập hữu hạn các chữ ký có thể. K là tập hữu hạn các khoá có thể. S là tập các thuật toán ký. V là tập các thuật toán kiểm thử. Với mỗi khóa k  K, có thuật toán ký Sig k  S, Sig k : P A, có thuật toán kiểm tra chữ ký Ver k  V, Ver k : P  A đúng, sai, thoả mãn điều kiện sau với mọi x  P, y  A: Đúng, nếu y = Sig k (x) Ver k (x, y) = Sai, nếu y  Sig k (x) 25 Chú ý: Người ta thường dùng hệ mã hóa khóa công khai để lập “Sơ đồ chữ ký số”. Ở đây khóa bí mật a dùng làm khóa “ký”, khóa công khai b dùng làm khóa kiểm tra “chữ ký”. Ngược lại với việc mã hóa, dùng khóa công khai b để lập mã, dùng khóa bí mật a để giải mã. Phân loại “Chữ ký số”: 1. Phân loại chữ ký theo khả năng khôi phục thông điệp gốc. - Chữ ký có thể khôi phục thông điệp gốc - Chữ ký không thể khôi phục thông điệp gốc 2. Phân loại chữ ký theo mức an toàn: - Chữ ký “không thể phủ nhận” - Chữ ký “một lần” 3. Phân loại chữ ký theo ứng dụng đặc trưng: - Chữ ký “mù” (Blind Signature). - Chữ ký “nhóm” (Group Signature). - Chữ ký “bội” (Multy Signature). - Chữ ký “mù nhóm” (Blind Group Signature). - Chữ ký “mù bội” (Blind Multy Signature). 1.4.2. Một số chữ ký số tiêu biểu 1.4.2.1. Chữ ký RSA Sơ đồ [1]: Chú ý: - So sánh giữa sơ đồ chữ ký RSA và sơ đồ mã hóa RSA ta thấy có sự tương ứng. 1. Tạo cặp khóa (bí mật, công khai) (a, b) : Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, đặt P = A = Zn Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b < (n), nguyên tố cùng nhau với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b  1 (mod (n). Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b  Zn , a*b  1 (mod (n)). 2. Ký số: Chữ ký trên x  P là y = Sig k (x) = x a (mod n), y  A (R1) 3. Kiểm tra chữ ký: Verk (x, y) = đúng  x  y b (mod n) (R2) 26 - Việc ký là mã hoá, việc kiểm thử lại chính là việc giải mã - Việc “ký số” vào x tương ứng với việc “mã hoá” tài liệu x. - Kiểm thử chữ ký chính là việc giải mã “chữ ký”, để kiểm tra xem tài liệu đã giải mã có đúng là tài liệu trước khi ký không? Thuật toán và khóa kiểm thử “chữ ký” là công khai, ai cũng có thể kiểm thử chữ ký được. 1.4.2.2. Chữ ký không thể phủ định (Chaum - van Antwerpen) Giới thiệu: Sơ đồ chữ ký không thể chối bỏ được David Chaum và Hans van Antwerpen đề xuất năm 1989. Giả sử tài liệu cùng chữ ký từ G gửi đến N. Khi N yêu cầu G cùng kiểm thử chữ ký thì một vấn đề nảy sinh là làm sao để ngăn cản G chối bỏ một chữ ký mà anh ta đã ký, G có thể tuyên bố rằng chữ ký đó là giả mạo? Để giải quyết tình huống trên, cần có thêm giao thức chối bỏ, bằng giao thức này, G có thể chứng minh một chữ ký là giả mạo. Nếu G từ chối tham gia vào giao thức đó thì có thể xem rằng G không chứng minh được chữ ký đó là giả mạo. Sơ đồ [6]:  Chuẩn bị các tham số: + Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải, đồng thời thỏa mãn điều kiện p = 2 * q + 1, q cũng là nguyên tố. + Chọn g ∈ là phần tử có cấp q. + Chọn 1 ≤ a ≤ q – 1, tính h = ga mod p. + G là nhóm con (theo phép nhân) cấp q sinh ra bởi g của + Tập hữu hạn các văn bản có thể P, tập hữu hạn các chữ ký có thể A + P = A = G + Khóa công khai được định nghĩa pk = ( p, g, h ), khóa bí mật sk = a. 27 1.5. Đại diện tài liệu và hàm băm 1.5.1. Hàm băm (Hàm tạo đại diện tài liệu) Khái niệm Hàm băm [1]: Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) tài liệu và cho kết quả là một giá trị “băm” có kích thước cố định, còn gọi là “đại diện tài liệu” hay “đại diện bản tin” hay “đại diện thông điệp”. Hàm băm là hàm một chiều, nghĩa là giá trị của hàm băm là duy nhất và từ giá trị băm này “khó có thể” suy ngƣợc lại được nội dung hay độ dài ban đầu của tài liệu gốc.  Thuật toán ký: Dùng khóa bí mật sk ở trên để ký lên thông điệp x, chữ ký là: y = sigsk( x ) = x a mod p  Giao thức kiểm thử: Bob muốn xác thực chữ ký y trên thông điệp x được ký bởi Alice. Giao thức được thực hiện như sau: - Bob chọn ngẫu nhiên e1, e2∈ 𝑍𝑞 - Bob tính c = 𝑦𝑒1ℎ𝑒2 mod p và gửi cho Alice. - Alice tính d = 𝑐𝑎 −1 𝑚𝑜𝑑 𝑞 mod p và gửi cho Bob. - Bob chấp nhận y là chữ ký đúng trên x khi và chỉ khi d ≡ 𝑥𝑒1𝑔𝑒2 mod p  Giao thức chối bỏ chữ ký: - Bob chọn ngẫu nhiên e1, e2 ∈ 𝑍𝑞 - Bob tính c = 𝑦𝑒1ℎ𝑒2 mod p và gửi cho Alice. - Alice tính d = 𝑐𝑎 −1 𝑚𝑜𝑑 𝑞 mod p và gửi cho Bob. - Bob kiểm tra d ≢ 𝑥𝑒1𝑔𝑒2 mod p - Bob chọn ngẫu nhiên f1, f2 ∈ 𝑍𝑞 - Bob tính C = 𝑦𝑓1ℎ𝑓2 mod p và gửi cho Alice - Alice tính D = 𝐶𝑎 −1 𝑚𝑜𝑑 𝑞 mod p và gửi cho Bob - Bob kiểm tra D ≢ 𝑥𝑓1𝑔𝑓2 mod p - Bob kết luận chữ ký y thực sự là giả mạo nếu: (𝑑𝑔−𝑒2)𝑓1 ≡ (D𝑔−𝑓2)𝑒1 mod p 28 Đặc tính của Hàm băm: Hàm băm h là hàm một chiều có các đặc tính sau: 1. Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x). 2. Nếu dữ liệu trong bản tin x bị thay đổi hay bị xóa để thành bản tin x’, thì giá trị băm h(x’)  h(x). Cho dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin gốc x, thì giá trị băm h(x) của nó cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp khác nhau thì giá trị băm của chúng cũng khác nhau. 3. Nội dung của bản tin gốc “khó” thể suy ra từ giá trị hàm băm của nó. Nghĩa là: với thông điệp x thì “dễ” tính được z = h(x), nhưng lại “khó” tính ngược lại được x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h). Ứng dụng của hàm băm: 1. Với bản tin dài x, thì chữ ký trên x cũng sẽ dài, như vậy tốn thời gian “ký”, tốn bộ nhớ lưu giữ “chữ ký”, tốn thời gian truyền “chữ ký” trên mạng. Người ta dùng hàm băm h để tạo đại diện bản tin z = h(x), nó có độ dài ngắn (chẳng hạn 128 bit). Sau đó ký trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều so với chữ ký trên bản tin gốc x. 2. Hàm băm dùng để xác định tính toàn vẹn dữ liệu. 3. Hàm băm dùng để

Các file đính kèm theo tài liệu này:

  • pdfluan_van_nghien_cuu_mot_so_bai_toan_ve_an_toan_thong_tin_tro.pdf
Tài liệu liên quan