Các hệ mã đối xứng hiện đại và mã công khai

Một phần của tài liệu Phát hiện giả mạo bảng điểm tiếng việt cho các trường học luận văn thạc sĩ (Trang 36)

2.2.3.1. Phƣơng pháp DES

Khoảng những năm 1970, tiến sĩ Horst Feistel đã đặt nền móng đầu tiên cho chuẩn mã hóa dữ liệu DES với phƣơng pháp mã hóa Feistel Cipher. Vào năm 1976 cơ quan bảo mật quốc gia Hoa Kỳ (NSA) đã công nhận DES dựa trên Feistel Cipher là chuẩn mã hóa dữ liệu. DES đƣợc công bố trong tài liệu FIPS của NIST. Kích thƣớc khóa của DES ban đầu là 128 bit nhƣng tại bản công bố FIPS kích thƣớc khóa đƣợc rút xuống còn 56 bit.

DES có kích thƣớc khối 64 bit. DES thực hiện mã hóa dữ liệu qua 16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu kỳ 48 bit thu đƣợc từ khóa 56 bit ban đầu. DES sử dụng 8 bảng hằng số Sbox để thao tác. Quá trình mã hóa của DES có thể đƣợc tóm tắt nhƣ sau:

Biểu diễn thông điệp nguồn xP bằng dãy 64bit. Khóa k có 56bit. Thực hiện mã hóa theo 3 giai đoạn:

 Tạo dãy 64 bit bằng cách hoán vị x theo hoán vị IP.

 Thực hiện 16 vòng lặp từ 64 bit thu đƣợc và 56 bit của khoá k (chỉ sử dụng 48 bit của khoá k trong mỗi vòng lặp). 64 bit kết quả thu đƣợc qua mỗi vòng lặp sẽ là đầu vào cho vòng lặp sau.

 Sau 16 vòng lặp, áp dụng hoán vị ngƣợc IP-1

cho 64bit thu đƣợc. Kết quả cuối cùng chính là khối dữ liệu đã mã hóa y.

Hình 2.14 – Sơ đồ quá trình mã hóa dữ liệu bằng phương pháp DES

Quá trình giải mã chính là thực hiện theo thứ tự đảo ngƣợc các thao tác của quá trình mã hóa.

2.2.3.2. Phƣơng pháp chuẩn mã hóa nâng cao AES

Để tìm kiếm một phƣơng pháp mã hóa quy ƣớc mới với độ an toàn cao hơn DES, NIST đã công bố một chuẩn mã hóa mới, thay thế cho chuẩn DES. Thuật toán đại diện cho chuẩn mã hóa nâng cao AES (Advanced

Encryption Standard) sẽ là thuật toán mã hóa khóa quy ƣớc, sử dụng miễn phí trên toàn thế giới. Chuẩn AES bao gồm các yêu cầu sau:

 Thuật toán mã hóa theo khối 128 bit.  Chiều dài khóa 128 bit, 192 bit và 256 bit.  Không có khóa yếu.

 Hiệu quả trên hệ thống Intel Pentium Pro và trên các nền phần cứng và phần mềm khác.

 Thiết kế dễ dàng (hỗ trợ chiều dài khóa linh hoạt, có thể triển khai ứng dụng rộng rãi trên các nền và các ứng dụng khác nhau).  Thiết kế đơn giản: phân tích đánh giá và cài đặt dễ dàng.  Chấp nhận bất kỳ chiều dài khóa lên đến 256 bit.

 Mã hóa dữ liệu thấp hơn 500 chu kỳ đồng hồ cho mỗi khối trên Intel Pentium, Pentium Pro và Pentium II đối với phiên bản tối ƣu của thuật toán.

 Có khả năng thiết lập khóa 128 bit (cho tốc độ mã hóa tối ƣu) nhỏ hơn thời gian đòi hỏi để mã hóa các khối 32 bit trên Pentium, Pentium Pro và Pentium II.

 Không chứa bất kỳ phép toán nào làm nó giảm khả năng trên các bộ vi xử lý 8 bit, 16 bit, 32 bit và 64 bit.

 Không bao hàm bất kỳ phần tử nào làm nó giảm khả năng của phần cứng.

 Thời gian mã hóa dữ liệu rất thấp dƣới 10/1000 giây trên bộ vi xử lý 8 bit.

 Có thể thực hiện trên bộ vi xử lý 8 bit với 64 byte bộ nhớ RAM. Sau khi thực hiện hai lần tuyển chọn, có năm thuật toán đƣợc vào vòng chung kết, gồm có: MARS, RC6, SERPENT, TWOFISH và RIJNDAEL. Các thuật toán này đều đạt các yêu cầu của AES nên đƣợc gọi chung là các thuật toán ứng viên AES. Các thuật toán ứng viên AES có độ an toàn cao, chi phí thực hiện thấp.

2.3. Hàm băm và chữ ký điện tử 2.3.1. Hàm băm 2.3.1. Hàm băm

Hàm băm mật mã là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy bit có độ dài cố định (tùy thuộc vào thuật toán băm). Dãy bit này đƣợc gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu.

Dễ dàng nhận thấy rằng hàm băm h không phải là một song ánh. Do đó, với thông điệp x bất kỳ, tồn tại thông điệp x’ ≠ x sao cho h(x) = h(x’). Lúc này, ta nói rằng “có sự đụng độ xảy ra”.

Một hàm băm h đƣợc gọi là an toàn (hay “ít bị đụng độ”) khi không thể xác định đƣợc (bằng cách tính toán) cặp thông điệp x và x’ thỏa mãn x≠x’ và h(x) = h(x’). Trên thực tế, các thuật toán băm là hàm một chiều, do đó, rất khó để xây dựng lại thông điệp ban đầu từ thông điệp rút gọn.

Hàm băm giúp xác định đƣợc tính toàn vẹn dữ liệu của thông tin: mọi thay đổi, dù là rất nhỏ, trên thông điệp cho trƣớc, ví dụ nhƣ đổi giá trị 1 bit, đều làm thay đổi thông điệp rút gọn tƣơng ứng. Tính chất này hữu ích trong việc phát sinh, kiểm tra chữ ký điện tử, các đoạn mã chứng nhận thông điệp, phát sinh số ngẫu nhiên, tạo ra khóa cho quá trình mã hóa…

Hàm băm là nền tảng cho nhiều ứng dụng mã hóa. Có nhiều thuật toán để thực hiện hàm băm, trong số đó, phƣơng pháp SHA-1 và MD5 thƣờng đƣợc sử dụng khá phổ biến từ thập niên 1990 đến nay.

2.3.1.1. Phƣơng pháp hàm băm MD4 và MD5

 Hàm băm MD4 đƣợc Giáo sƣ Ron Rivest đề nghị vào năm 1990. Vào năm 1992, phiên bản cải tiến MD5 của thuật toán này ra đời.

 Thông điệp rút gọn có độ dài 128 bit.

 Năm 1995, Hans Dobbertin đã chỉ ra sự đụng độ ngay chính trong bản thân hàm nén của giải thuật (mặc dù chƣa thật sự phá vỡ đƣợc giải thuật).

 Năm 2004, nhóm tác giả Xiaoyun Wang, Dengguo Feng, Xuejia Lai và Hongbo Yu đã công bố kết quả về việc phá vỡ thuật toán MD4 và MD5 bằng phƣơng pháp tấn công đụng độ

2.3.1.2. Phƣơng pháp Secure Hash Standard

 Phƣơng pháp Secure Hash Standard (SHS) do NIST và NSA xây dựng đƣợc công bố trên Federal Register vào ngày 31 tháng 1 năm 1992 và sau đó chính thức trở thành phƣơng pháp chuẩn từ ngày 13 tháng 5 năm 1993.

 Thông điệp rút gọn có độ dài 160 bit.

Hàm băm là nền tảng cho nhiều ứng dụng mã hóa. Có nhiều thuật toán để thực hiện hàm băm, trong số đó SHA-1 và MD5 đƣợc sử dụng phổ biến và đáng tin cậy. Ngày 26/08/2002, Học viện Quốc gia về Chuẩn hóa và Công nghệ của Hoa Kỳ (National Institute of Standard and Technology - NIST) đã đề xuất hệ thống chuẩn hàm băm an toàn (Secure Hash Standard) gồm 4 thuật toán hàm băm SHA-1, SHA-256, SHA-384, SHA-512. Đến 25/03/2004, NIST đã chấp nhận thêm thuật toán hàm băm SHA-224 vào hệ thống chuẩn hàm băm. Các thuật toán hàm băm do NIST đề xuất đƣợc đặc tả trong tài liệu FIPS180-2.

2.3.1.3. Cấu trúc của hàm băm

Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật nhƣ sau:  Cho trƣớc một thông điệp M có độ dài bất kỳ. Tùy theo thuật toán

đƣợc sử dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận đƣợc thông điệp có độ dài là bội số của một hằng số cho trƣớc. Chia nhỏ thông điệp thành từng khối có kích thƣớc bằng nhau: M1, M2, …Ms.

 Gọi H là trạng thái có kích thƣớc n bit, f là “hàm nén” thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành.

 Khởi gán H0 bằng một vector khởi tạo nào đó.  Hi = f(Hi=1,Mi) với i = 1, 2, 3, …, s.

 Hs chính là thông điệp rút gọn của thông điệp M ban đầu.

2.3.1.4. Tính an toàn của hàm băm đối với hiện tƣợng đụng độ

Hàm băm đƣợc xem là an toàn đối với hiện tƣợng đụng độ khi rất khó tìm đƣợc hai thông điệp có cùng giá trị băm.

Nhận xét: Trong một tập hợp mà các phần tử mang một trong N giá trị cho trƣớc với xác suất bằng nhau, chúng ta cần khoảng N phép thử ngẫu nhiên để tìm ra một cặp phần tử có cùng giá trị.

Nhƣ vậy, phƣơng pháp hàm băm đƣợc xem là an toàn đối với hiện tƣợng đụng độ nếu chƣa có phƣơng pháp tấn công nào có thể tìm ra cặp thông điệp có cùng giá trị hàm băm với số lƣợng tính toán ít hơn đáng kể so với ngƣỡng 2n/2, với n là kích thƣớc (tính bằng bit) của giá trị băm.

Phƣơng pháp tấn công dựa vào đụng độ:

 Tìm ra 2 thông điệp có nội dung khác nhau nhƣng cùng giá trị băm.  Ký trên một thông điệp, sau đó, ngƣời ký sẽ không thừa nhận đây là chữ

ký của mình mà nói rằng mình đã ký trên một thông điệp khác.

 Nhƣ vậy, cần phải chọn 2 thông điệp “đụng độ” với nhau trƣớc khi ký.

2.3.1.5. Tính một chiều

Hàm băm đƣợc xem là hàm một chiều khi cho trƣớc giá trị băm, không thể tái tạo lại thông điệp ban đầu, hay còn gọi là “tiền ảnh” (“pre-image”). Nhƣ vậy, trong trƣờng hợp lý tƣởng, cần phải thực hiện hàm băm cho khoảng 2n thông điệp để tìm ra đƣợc “tiền ảnh” tƣơng ứng với một giá trị băm.

Nếu tìm ra đƣợc một phƣơng pháp tấn công cho phép xác định đƣợc “tiền ảnh” tƣơng ứng với một giá trị băm cho trƣớc thì thuật toán băm sẽ không còn an toàn nữa.

Cách tấn công nhằm tạo ra một thông điệp khác với thông điệp ban đầu nhƣng có cùng giá trị băm gọi là tấn công “tiền ảnh thứ hai” (second pre- image attack).

2.3.1.6. Một số hàm băm thông dụng a. Hàm băm MD5 a. Hàm băm MD5

Hàm băm MD4 (Message Digest 4) đƣợc Giáo sƣ Rivest đề nghị vào năm 1990. Vào năm sau, phiên bản cải tiến MD5 của thuật toán này ra đời. Cùng với phƣơng pháp SHS, đây là ba phƣơng pháp có ƣu điểm tốc độ xử lý rất nhanh nên thích hợp áp dụng trong thực tế đối với các thông điệp dài.

MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thƣớc cố định 128 bits. Thông điệp đƣa vào sẻ đƣợc cắt thành các khối 512 bits. Thông điệp đƣợc đƣa vào bộ đệm để chiều dài của nó chia hết cho 512. Bộ đệm hoạt động nhƣ sau:

 Trƣớc tiên nó sẻ chèn bit 1 vào cuối thông điệp.

 Tiếp đó là hàng loạt bit 0 cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit.

 Phần còn lại sẻ đƣợc lấp đầy bởi một số nguyên 64 bit biểu diển chiều dài ban đầu của thông điệp.

Thuật toán chính của MD5 hoạt động trên một bộ 128 bit. Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A,B,C và D. Các giá trị này là các hằng số cố định. Sau đó thuật toán chính sẻ luân phiên hoạt động trên các khối 512 bit. Mỗi khối sẽ phối hợp với một bộ. Quá trình xử lý một khối thông điệp bao gồm 4 bƣớc tƣơng tự nhau, gọi là vòng (“round”). Mỗi vòng lại gồm 16 quá trình tƣơng tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái…

Hình bên dƣới mô tả một quá trình trong một vòng. Có 4 hàm một chiều F có thể sử dụng. Mỗi vòng sử dụng một hàm khác nhau.

Hình 2.15 – Mô tả một quá trình trong một vòng của hàm băm MD5

Hàm băm MD5 (còn đƣợc gọi là hàm tóm tắt thông điệp - message degests) sẽ trả về một chuổi số thập lục phân gồm 32 số liên tiếp. Dƣới đây là các ví dụ mô tả các kết quả thu đƣợc sau khi băm.

MD5("dai hoc lac hong") = 327e7cbce9c5ff6a0d654957c16b0b6c Chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn kết quả trả về: MD5("dai hoc lac honh") = 24eed62af8f392339f77f8fcf87e1311 Ngay cả một chuổi rổng cũng cho ra một kết quả phức tạp: MD5("") = d41d8cd98f00b204e9800998ecf8427e

b. SHA (thuật giải băm an toàn)

SHA (Secure Hash Algorithm) là năm thuật giải đƣợc dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu đã đƣợc mã hóa. Năm thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lại kết quả dài 224 bit), SHA-256 (trả lại kết quả dài 256 bit), SHA- 384 (trả lại kết quả dài 384 bit), và SHA-512 (trả lại kết quả dài 512 bit). Thuật giải SHA là thuật giải băm mật đƣợc phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) và đƣợc xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệ và chuẩn quốc gia Mĩ (National Institute of Standards and Technology hay NIST). Bốn thuật giải sau thƣờng đƣợc gọi chung là SHA-2.

2.3.2. Chữ ký điện tử

2.3.2.1. Khái niệm chữ ký điện tử

Trong cách thức truyền thống, thông báo đƣợc truyền đi trong giao dịch thƣờng dƣới dạng các văn bản viết tay hoặc đánh máy đƣợc kèm thêm chữ ký (viết tay) của ngƣời gửi ở bên dƣới văn bản. Chữ ký đó là bằng chứng xác nhận thông báo đúng là của ngƣời ký, tức là của chủ thể giao dịch, và nếu tờ giấy mang văn bản không bị cắt, dán, tẩy, xoá, thì tính toàn vẹn của thông báo cũng đƣợc chứng thực bởi chữ ký đó. Chữ ký viết tay có nhiều ƣu điểm quen thuộc nhƣ dễ kiểm thử, không sao chép đƣợc, chữ ký của một ngƣời là giống nhau trên nhiều văn bản, nhƣng mỗi chữ ký gắn liền với một văn bản cụ thể, v.v...

Khi chuyển sang cách thức truyền tin bằng phƣơng tiện hiện đại, các thông báo đƣợc truyền đi trên các mạng truyền tin số hoá, bản thân các thông báo cũng đƣợc biểu diễn dƣới dạng số hoá, tức dƣới dạng các dãy bit nhị phân, “chữ ký” nếu có cũng ở dƣới dạng các dãy bit, thì các mối quan hệ tự nhiên kể trên không còn giữ đƣợc nữa. Chẳng hạn, “chữ ký” của một ngƣời gửi trên những văn bản khác nhau phải thể hiện đƣợc sự gắn kết trách nhiệm của ngƣời gửi đối với từng văn bản đó thì tất yếu phải khác nhau chứ không thể là những đoạn bit giống nhau nhƣ các chữ ký giống nhau trên các văn bản thông thƣờng. Chữ ký viết tay có thể đƣợc kiểm thử bằng cách so sánh với nguyên mẫu, nhƣng “chữ ký” điện tử thì không thể có “nguyên mẫu” để mà so sánh, việc kiểm thử phải đƣợc thực hiện bằng những thuật toán đặc biệt. Một vấn đề nữa là việc sao chép một văn bản cùng chữ ký. Nếu là văn bản cùng chữ ký viết tay thì dễ phân biệt bản gốc với bản sao, do đó khó mà dùng lại đƣợc một văn bản có chữ ký thật. Còn với văn bản điện tử cùng chữ ký điện tử thì có thể nhân bản sao chép tuỳ thích, khó mà phân biệt đƣợc bản gốc với bản sao, cho nên nguy cơ dùng lại nhiều lần là có thực, do đó cần có những biện pháp để tránh nguy cơ đó.

Một “chữ ký”, nếu muốn thể hiện đƣợc trách nhiệm của ngƣời gửi trên toàn văn bản, thì phải mang đƣợc một chút gắn bó nào đó với từng bit thông

tin của văn bản, vì vậy, theo hình dung ban đầu, độ dài của chữ ký cũng phải dài theo độ dài của văn bản; để có đƣợc “chữ ký ngắn” nhƣ trong trƣờng hợp viết tay ngƣời ta phải dùng một kỹ thuật riêng gọi là hàm băm mà ta sẽ trình bày ở cuối chƣơng. Bây giờ, trƣớc hết ta sẽ giới thiệu định nghĩa về sơ đồ chữ ký (điện tử).

Chữ ký điện tử (Digital Signature) dựa trên kỹ thuật sử dụng mã hóa khóa công khai. Trong đó, cả ngƣời gửi và ngƣời nhận, mỗi ngƣời có một cặp khóa là khóa bí mật, hay riêng tƣ (Private Key) và khóa công khai (Public Key).

Chữ ký điện tử hoạt động khi một ngƣời gửi một thông điệp, ngƣời đó dùng khóa riêng của mình để mã hóa thông điệp sang một dạng khó nhận dạng. Ngƣời nhận dùng khóa công khai của ngƣời gửi để mã hóa thông điệp. Tuy nhiên, để an toàn thật sự phải có các bƣớc bổ sung. Do đó, thuật toán băm MD5 và thuật toán mã hóa RSA có thể đƣợc áp dụng để xây dựng ứng dụng chữ ký điện tử.

2.3.2.2. Định nghĩa sơ đồ chữ ký

Định nghĩa 5.1. Một sơ đồ chữ ký S là một bộ năm

S = (P, A, K, S, V ),

trong đó: P là một tập hữu hạn các thông báo có thể có, A là một tập hữu hạn các chữ ký có thể có,

K là một tập hữu hạn các khoá, mỗi khoá K ∈ K gồm có hai

phần K =(K’,K''), K' là khoá bí mật dành cho việc ký, còn K'' là khoá công khai dành cho việc kiểm thử chữ ký.

Với mỗi K =(K’,K''), trong S có một thuật toán ký sigk: P → A, và

Một phần của tài liệu Phát hiện giả mạo bảng điểm tiếng việt cho các trường học luận văn thạc sĩ (Trang 36)