1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các thuật toán mã hoá, chữ ký điện tử và ứng dụng

87 446 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 87
Dung lượng 13,16 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Việc sử dụng chữ ký số ngày càng có nhiều ứng dụng trong thực tế, không chỉ giới hạn trong ngành Công nghệ thông tin, ngành Mật mã mà còn được áp dụng trong một số lĩnh vực khác như tron

Trang 1

MỤC LỤC

LỜI NÓI ĐẦU 3

Chương 1 4

LÝ THUYẾT CHUNG VỀ MÃ HOÁ 4

1.1.Khái niệm mã hóa 4

1.2.Lý thuyết mã hoá 4

1.2.1.Mã hoá dùng nguồn 5

1.2.2.Mã hoá trên kênh truyền 5

1.3.Lý thuyết mật mã 6

1.3.1.Sự hình thành của khoa học mật mã 7

1.3.2.Sự tiến triển của các hệ mật mã hiện đại 7

1.4.Các phương thức mã hoá cơ bản 11

1.5.Các chức năng băm nhỏ mã hoá 12

1.6.Các phương thức tạo nên khoá mã hoá ngẫu nhiên 13

1.7.Sức mạnh của các thuật toán mã hoá 14

1.8.Phá mã và phá mã một hệ thống 15

Chương 2. 19

TỔNG QUAN VỀ CÁC HỆ MÃ CƠ BẢN 19

2.1.Mã hoá công khai 19

2.1.1.Khái niệm mã hoá công khai 19

2.1.2.Ứng dụng của mã hoá công khai 20

2.1.3.Độ an toàn 21

2.2.Thuật toán mã hoá RSA 23

2.2.1.Giới thiệu thuật toán mã hoá RSA 23

2.2.2.Hoạt động 24

2.2.3.Ví dụ 26

2.2.4.Quá trình chuyển đổi văn bản rõ 27

2.2.5.An ninh 28

2.3.Thuật toán mã hoá DES 29

2.3.1.Giới thiệu về thuật toán DES 29

2.3.2.Quy trình của thuật toán DES 30

2.3.3.An ninh và ứng dụng 32

2.4.Sơ đồ chữ kí Elgamal 34

2.4.1.Giới thiệu và định nghĩa sơ đồ chữ kí Elgamal 34

2.4.2.Các cách giả mạo chữ kí trong sơ đồ chữ kí Elgamal: 35

2.4.3.Cách tấn công sơ đồ chữ kí Elgamal 37

2.5.Hàm băm mật mã 38

2.5.1.Tổng quan về hàm băm 38

2.5.2.Ứng dụng 39

2.5.3.Các phương thức tạo nên khoá mã hoá ngẫu nhiên 40

Chương 3 42

CHỮ KÝ ĐIỆN TỬ VÀ CÁC VẤN ĐỀ LIÊN QUAN 42

3.1.Chữ ký điện tử 42

3.1.1.Lịch sử hình thành chữ ký điện tử 42

3.1.2.Mục đích của chữ ký điện tử 42

3.1.3.Đặc trưng của chữ ký 42

3.1.4.Các chuẩn của chữ ký số 42

3.1.5.Định nghĩa chữ ký điện tử 43

Trang 2

3.1.6.Những hàm hỗ trợ cho chữ ký số 45

3.1.7.Sự khác biệt của chữ ký điện tử với chữ ký tay 45

3.1.8.Các ưu điểm của chữ ký điện tử 46

3.1.9.Các yêu cầu của chữ ký 47

3.1.10.Mô tả toán học của chữ ký điện tử 48

3.2.Chứng chỉ số 49

3.2.1.Vì sao phải dùng chứng chỉ số? 49

3.2.2.Chứng chỉ số là gì? 50

3.2.3.Nhà cung cấp chứng thực số CA 52

3.2.4.Cơ sở hạ tầng khoá công khai – PKI 52

3.2.5.Nhà quản lý đăng ký – RA 53

3.2.6.Lợi ích của chứng chỉ số 53

3.3.Một số vấn đề đặt ra trong thực tế 56

3.3.1.Chọn mô hình nhà cung cấp chứng thực số (CA) 56

3.3.2.Chữ ký điện tử theo phương án ký một lần hay ký hai lần 57

3.3.3.Cấp chữ ký số có giá trị như con dấu được hay không? 59

3.3.4.Vấn đề cơ sở hạ tầng cho giao dịch điện tử nói chung và chữ ký số nói riêng……….59

3.3.5.Sự đồng bộ 60

3.3.6.Vấn đề nhận thức của người sử dụng 61

Chương 4 62

CÁC KẾT QUẢ CÀI ĐẶT 62

4.1.Ngôn ngữ sử dụng 62

4.1.1.Nền tảng Net 62

4.1.2.Ngôn ngữ C# 62

4.1.3.Giải thuật MD5 63

4.2.Dịch vụ truyền file 65

4.2.1.Giới thiệu 65

4.2.2.Cơ sở lý thuyết 66

4.2.3.Một số lệnh của FTP 67

4.2.4.Một số ưu điểm của FTP 68

4.3.Giao diện chương trình 69

4.3.1.Giao diện chính của chương trình 69

4.3.2.Giao diện tạo khoá RSA 70

4.3.3.Giao diện chương trình trước khi mã hoá tài liệu 70

4.3.4.Giao diện chương trình sau khi mã hoá tài liệu 71

4.3.5.Giao diện chương trình sau khi giải mã tài liệu 71

4.3.6.Giao diện chương trình trước khi truyền file 72

4.3.7.Giao diện chương trình sau khi truyền file 72

4.4.Kết quả 73

4.5.Phụ lục chương trình 73

1.Kết quả đạt được 86

2.Hạn chế 86

3.Hướng phát triển của đề tài 86

TÀI LIỆU THAM KHẢO 87 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Error! Bookmark not defined

Trang 3

LỜI NÓI ĐẦU

Trong những năm gần đây, sự phát triển vượt bậc của công nghệ thông tin

đã làm tăng số lượng giao dịch thông tin trên mạng Internet một cách đáng kể, đặc biệt là thư viện điện tử, tin tức điện tử, … Do đó mà số lượng văn bản xuất hiện trên mạng Internet cũng tăng theo với một tốc độ chóng mặt

Với lượng thông tin đồ sộ như vậy, một yêu cầu lớn đặt ra với chúng ta là làm sao để thông tin có thể được truyền tải một cách an toàn và đáng tin cậy Để giải quyết vấn đề này, người ta đưa ra một cách vừa đơn giản, vừa hiệu quả là sử dụng chữ ký số Việc sử dụng chữ ký số ngày càng có nhiều ứng dụng trong thực

tế, không chỉ giới hạn trong ngành Công nghệ thông tin, ngành Mật mã mà còn được áp dụng trong một số lĩnh vực khác như trong lĩnh vực ngân hàng để xác thực người gửi, người nhận, lĩnh vực Viễn thông để sử dụng các thẻ thông minh,…

Em đã tập trung thực hiện đề tài “Các thuật toán mã hoá, chữ ký điện tử và ứng dụng” nhằm tìm hiểu và thử nghiệm các phương pháp mã hoá dữ liệu Trong

đồ án này em tìm hiểu một số thuật toán mã hoá dữ liệu như RSA, DES, chữ ký điện tử,… và xây dựng chương trình mã hoá sử dụng chữ ký điện tử

Nội dung của đồ án bao gồm 4 chương:

- Chương 1: Lý thuyết chung về mã hoá

- Chương 2: Tổng quan về các hệ mã cơ bản

- Chương 3: Chữ ký điện tử và các vấn đề liên quan

- Chương 4: Các kết quả cài đặt

Trang 4

Chương 1

LÝ THUYẾT CHUNG VỀ MÃ HOÁ

1.1 Khái niệm mã hóa

Trong thực tế, một người muốn gửi thông điệp tới người nhận và không muốn cho một người nào khác biết được nội dung của nó Tuy nhiên sẽ xuất hiện trường hợp một người thứ 3 có thể mở được thông điệp và đọc được nội dung của nó

Trong thuật ngữ mã hoá, thông điệp được gọi là plaintext hay cleartext (tạm dịch là chữ thường) Mã hoá nội dung của thông điệp để che giấu đi nội dung của nó được gọi là thuật mã hoá Thông điệp đã được mã hoá gọi là văn bản

mã hoá (ciphertext) Quá trình lấy nội dung của ciphertext gọi là decryption (giải

mã) Mã hoá và giải mã thường sử dụng một key (chìa khoá) và phương thức mã hoá mà quá trình giải mã chỉ có thể thực hiện được bởi người biết chìa khoá

Thuật mã hoá là nghệ thuật hay khoa học để giữ cho thông điệp bí mật Phá mã là nghệ thuật lấy nội dung văn bản mã hoá mà không cần đến chìa khoá Người phá mã gọi là cryptographers và người mã hoá gọi là cryptanalysts

Thuật mã hoá đi liền với các phương thức bảo mật thông tin, chứng thực, chữ ký điện tử, tiền tệ điện tử và các ứng dụng khác Cryptology là một nhánh của toán học nghiên cứu về các phương thức mã hoá

1.2 Lý thuyết mã hoá

Lý thuyết mã hóa (tiếng Anh: coding theory) là một ngành của toán học (mathematics) và khoa học điện toán (computer science) nhằm giải quyết tình

trạng lỗi dễ xảy ra trong quá trình truyền thông số liệu trên các kênh truyền có độ

nhiễu cao (noisy channels), dùng những phương pháp tinh xảo khiến phần lớn

các lỗi xảy ra có thể được chỉnh sửa Nó còn xử lý những đặc tính của mã

(codes), và do vậy giúp phù hợp với những ứng dụng cụ thể

Trang 5

Có hai loại mã hiệu:

1 Mã hóa dùng nguồn (Mã hoá Entropy (Entropy encoding))

2 Mã hóa trên kênh truyền (Sửa lỗi ở phía trước (Forward error

correction))

Vấn đề thứ nhất chúng ta nói đến là mã hóa dùng nguồn Ý định của phương pháp này là nén dữ liệu từ chính nguồn của nó, trước khi truyền đi, giúp cho việc truyền thông có hiệu quả hơn Chúng ta chứng kiến thói quen này hằng ngày trên Internet, nhất là trong cách dùng "zip" nén dữ liệu để giảm lượng dữ liệu phải truyền, giảm nhẹ gánh nặng cho mạng lưới truyền thông, đồng thời thu nhỏ cỡ tập tin

Vấn đề thứ hai là mã hóa trên kênh truyền Bằng việc cộng thêm những bit

mới vào trong dữ liệu được truyền, còn gọi là bit chẵn lẻ (parity bits), kỹ thuật

này giúp cho việc truyền thông tín hiệu chính xác hơn trong môi trường nhiễu loạn của kênh truyền thông

Mỗi loại mã hóa nguồn sử dụng một kỹ thuật khác nhau hòng đạt được giới hạn entrôpi của nguồn C(x)  H(x), trong đó H(x) là entrôpi của nguồn (tần

số bit), và C(x) là tần số bit sau khi số liệu đã được nén Cụ thể là, không có phương pháp mã hóa nguồn nào có thể tốt hơn giới hạn entrôpi của ký hiệu (the entropy limit of the symbol)

1.2.2 Mã hoá trên kênh truyền

Mục đích của lý thuyết Mã hóa trên kênh truyền (channel encoding

theory) là tìm những mã có thể truyền thông nhanh chóng, chứa đựng nhiều mã

ký (code word) hợp lệ và có thể sửa lỗi (error correction) hoặc ít nhất phát hiện

Trang 6

các lỗi xảy ra (error detection) Các mục đích trên không phụ thuộc vào nhau, và

mỗi loại mã có công dụng tối ưu cho một ứng dụng riêng biệt Những đặc tính

mà mỗi loại mã này cần còn tuỳ thuộc nhiều vào xác suất lỗi xảy ra trong quá trình truyền thông

Từ "Lý thuyết mã hóa đại số" ám chỉ để một chi nhánh của lý thuyết mã hóa trên kênh truyền, trong đó đặc tính của mã được biểu hiện bằng các đại số và dựa vào đó mà nghiên cứu sâu hơn

Lý thuyết mã hóa đại số được chia ra làm hai loại mã chính

1 Mã khối tuyến tính (Linear block codes)

2 Mã kết hợp (Convolutional codes)

Chúng phân tích ba đặc tính sau của mã là:

Chiều dài của mã (code word length)

Tổng số các mã ký hợp lệ (total number of valid code words)

Khoảng cách Hamming tối thiểu giữa hai mã ký hợp lệ (the minimum

Hamming distance between two valid code words)

Mã khối tuyến tính mang tính năng tuyến tính (linearity), chẳng hạn tổng

của hai mã ký nào đấy lại chính là một mã ký; và chúng được ứng dụng vào các bit của nguồn trên từng khối một

Mã kết hợp (Convolutional codes) được sử dụng trong các modem dải tần

âm (voiceband modems) (V.32, V.17, V.34) và trong các điện thoại di động

GSM3, cũng như trong các thiết bị truyền thông của quân đội vũ trang và trong các thiết bị truyền thông với vệ tinh

1.3 Lý thuyết mật mã

Lý thuyết mật mã (bao gồm cả thám mã) là khoa học nghiên cứu về mã hoá và giải mã thông tin Đây là một trong những kỹ thuật đảm bảo an toàn cao nhất cho những khối lượng lớn dữ liệu trong các hệ thống máy tính cũng như trên các mạng truyền thông cần được bảo vệ nghiêm ngặt và có tính hiệu quả chống lại sự trộm và giả mạo thông tin Lý thuyết này sẽ giúp những kỹ sư và những kỹ thuật viên làm việc trong nhiều lĩnh vực liên quan tới xử lý thông tin, tìm hiểu,

Trang 7

nắm bắt được những nguyên lý, phương pháp và thuật toán cơ bản của lý thuyết mật mã

1.3.1 Sự hình thành của khoa học mật mã

Mật mã là nghệ thuật viết các thông báo dưới dạng mã hoá (còn gọi là cách viết bí mật), là một lĩnh vực khiến một số người liên tưởng tới một thế giới đen tối và bí hiểm của hoạt động gián điệp Với một số người khác, việc thao tác

và điều khiển các con số lại gợi nhớ tới khoa tướng số và nhiều lĩnh vực bí hiểm khác Ngay từ thời xa xưa, không có khả năng giải mã những bí mật của thiên nhiên, con người tìm thấy niềm vui trong việc thiết kế những hệ mật mã cũng như trong sự thách đố giải mã những thông tin được mã hoá bởi những người khác

Khoa học mật mã trong những năm gần đây trở nên quan trọng, được quan tâm nghiên cứu và ứng dụng trên nhiều góc độ khác nhau do sự kiện là các thông tin trên các mạng truyền dữ liệu công cộng thực sự có thể được mọi người truy cập Mật mã học hiện đại đã phát triển nhanh chóng, dựa trên những thành tựu của lý thuyết thông tin, lý thuyết độ phức tạp tính toán, và đặc biệt là lý thuyết số trong đó có những kết quả đã được thiết lập từ lâu, nay mới có cơ hội ứng dụng trong thực hành Cách đây không lâu, một số hệ mật mã tưởng như an toàn đã bị phá vỡ và phải huỷ bỏ (chẳng hạn các mã ma trận tuyến tính và các sách mã dựa trên một từ điển)

Ngày nay, khoa học mật mã đã được làm phong phú thêm với các phương pháp rất an toàn, chắc chắn, được nhiều nhà toán học và tin học nổi tiếng tham gia nghiên cứu, đã rời bỏ thế giới bí hiểm của những hoạt động tình báo, vượt qua những thành luỹ của công nghiệp, của thương nghiệp, của tài chính, của chiến lược chính trị và ngoại giao để thâm nhập mạnh mẽ vào những lĩnh vực này

1.3.2 Sự tiến triển của các hệ mật mã hiện đại

1.3.2.1 Năm mươi năm phát triển

Những người đã xây dựng những kỹ thuật mã hoá hiện được dùng cho các nhà tin học và cho sự an toàn của những dữ liệu của họ không phải là những

Trang 8

người, sau khi qua khỏi cuộc thế chiến thứ hai, đã có được nghệ thuật và kiến thức đầy đủ về khoa học mật mã Ngày nay, không thể chối cãi là phần lớn các công trình trong quân sự được thực hiện trong chiến tranh về truyền và ngăn chặn các thông báo được mã hoá vẫn còn được giữ kín, chưa công bố Từ đó tới nay, các nhà toán học thuộc nhiều quốc gia khác nhau đã bỏ nhiều công sức tìm các phương pháp và các công cụ ngày càng phức tạp và tin cậy hơn việc tìm ra những phương pháp mật mã với độ an toàn hầu như tuyệt đối vẫn là mối quan tâm của nhiều nhà nghiên cứu trên thế giới, làm việc không những trong quân đội

mà còn trong lĩnh vực ngân hàng và công nghiệp

Từ khi thuật toán RSA được thiết kế, sử dụng các số nguyên tố, lý thuyết mật mã hướng tới việc sử dụng các bài toán toán học phức tạp để xây dựng những thuật toán sao cho thời gian cần cho việc giải mã là quá lớn, không thể chấp nhận được Trong những năm 80 của thế kỷ trước, đã xuất hiện 2 hệ mật mã chuẩn cho tới nay chưa bị phá vỡ: các hệ DES và RSA Và cũng chỉ trong những năm gần đây, nhờ vào tốc độ tính toán nhanh của các máy vi tính mà khoa học mật mã mới trở thành một công cụ được nhiều người sử dụng

1.3.2.2 Mô tả không hình thức một hệ thống mật mã

Để gửi một thông tin bí mật tới một nơi nhận nào đó, ta chọn một thuật toán tin cậy (chắc chắn), một hay nhiều khóa an toàn và một môi trường truyền dẫn (một người, một lá thư, hay một mạng truyền thông điện tử công cộng hay riêng tư) Ta có thể tạo ra vô số các thuật toán mã hóa không khoá, với độ phức tạp chưa từng thấy và một độ an toàn hầu như hoàn toàn, chừng nào mà thuật toán còn chưa ai biết Một người, ít nhiều có am hiểu về mật mã, đều có thể đề xuất một phương pháp viết mật mã loại thường thường bậc trung” Và sự thực là trên thế giới có những lúc đã có rất nhiều những người làm mật mã không chuyên (tài tử) và bán chuyên nghiệp Sau này chúng ta sẽ có dịp làm quen với một số kỹ thuật cơ sở được kết hợp và tổ hợp với nhau để xây dựng những thuật toán rất tốt

Trong khi đó, thám báo là khoa học nghiên cứu các phương pháp giải mã để phá các hệ mật và không gì có thể chứng minh tính an toàn của các hệ mật, là sản

Trang 9

phẩm của những người làm mật mã không chuyên, chừng nào mà các chuyên gia trong lĩnh vực mật mã chưa tuyên bố gì về tính không thể bị phá của những hệ

- Ta có thể xáo trộn thông báo và hy vọng rằng kẻ thù không có khả năng sắp đặt lại nó về dạng ban đầu, và đó chính là mật mã (cryptography)

Đương nhiên che dấu thông tin và viết mật mã có thể được tổ hợp với nhau: thông báo có thể được xáo trộn và sau đó được che dấu (cất dấu) để có thêm an toàn

Mặt khác, cũng cần biết là mật mã có mối liên hệ chặt chẽ với một bộ phận của lý thuyết thông tin, cụ thể là lý thuyết mã hoá (coding theory) Lý thuyết mã hoá bao gồm việc dịch thông tin thuộc loại bất kỳ (văn bản, dữ liệu khoa học, hình ảnh, âm thanh, vv ) sang một dạng chuẩn cho việc truyền tin và bảo vệ thông tin đó chống lại sự bóp méo do tiếng ồn ngẫu nhiên Tuy nhiên, rõ ràng có một sự khác nhau lớn giữa nhiễu gây bởi tiếng ồn ngẫu nhiên và nhiễu gây bởi kẻ thù cố ý, và như vậy các kỹ thuật được sử dụng cũng hoàn toàn khác nhau

Theo truyền thống, hai bên cần liên lạc với nhau được gọi theo thứ tự là A (Alice) và B (Bob), còn kẻ trộm tin cố gắng tìm cách đọc thông báo của họ là E (Eve) A và B truy cập được tới khoá, còn E thì không thể Các hộp đen có đầu vào là bản rõ và khoá và có đầu ra là bản mã (trường hợp của A), hay có đầu vào

là bản mã và khoá và có đầu ra là bản rõ (trường hợp của B)

Ý nghĩa của các thuật ngữ như sau:

Bản rõ (Plaintext): Bản rõ không hoàn toàn giống như thông báo cần gửi

đi Thông báo có thể phải dịch sang một dạng chuẩn nào đó để mã hoá chẳng

Trang 10

hạn, nó bỏ qua các dấu chấm câu, chuyển thành mã ASCII, hoặc một dãy các số, vv nhưng không có bí mật gì trong giai đoạn này, và như vậy biết bản rõ tương đương với biết thông báo

Bản mã (Ciphertext), chính là cái thực sự được truyền đi Nói chung A và

B phải giả định là E có thể đặt tay lên bản mã, và họ phải thiết kế hệ thống sao cho E không có khả năng khôi phục lại được bản rõ

Khoá (Key): Việc mã hoá/lập mã sử dụng một thông tin thêm nào đó,

được gọi là khoá, có thể được thay đổi theo từng lần truyền Cả A và B phải có thông tin về khoá, có thể được thay đổi theo từng lần truyền Cả A và B phải có thông tin về khoá để có thể tiến hành mã hoá và giải mã

Có ba loại phương pháp mã hoá chính:

Dịch chuyển (Transposition): Thứ tự của các chữ trong bản rõ được sắp

xếp lại theo một cách có hệ thống Trong trường hợp này, khoá là phép hoán vị được áp dụng cho các vị trí

Thay thế (Substitution): Các chữ cá thể được thay thế bằng các chữ khác

theo một cách có hệ thống và như vậy có thể phức tạp hơn việc chỉ dùng đúng một phép hoán vị Ta có thể áp dụng các hoán vị khác nhau ở các vị trí khác nhau Trong trường hợp này khoá là dãy các hoán vị được áp dụng

Sách mã (Codebook): Các từ đầy đủ trong thông báo được thay thế bằng

các từ khác, với ý nghĩa hoàn toàn khác Khóa là sách mã, danh sách các từ và những thay thế của chúng

Đương nhiên các loại mật mã nêu trên không hoàn toàn tách biệt nhau và một số hoặc tất cả có thể được cùng dùng với nhau

Cần lưu ý thêm là từ “mã” trong lý thuyết truyền tin được dùng với nhiều nghĩa khác nhau Thường nó có nghĩa là một lược đồ cho việc dịch thông tin từ một khuôn dạng này sang một khuôn dạng khác Chẳng hạn như mã Morse (trước đây thường được dùng trong điện tín (telegraph) và liên lạc radio) sẽ dịch

từ “Code” thành một dãy gồm các dấu chấm và dấu gạch (thường đọc là tạch, tè)

Trang 11

Trong khi mã ASCII (được dùng trong truyền thông máy tính và biểu diễn

dữ liệu) sẽ dịch từ “Code” thành bốn số 67, 111, 100, 101, hay trong ký pháp nhị phân là dãy: 1000011110111111001001100101

Trong khi đó, thuật ngữ “mật mã” được chúng ta hiểu là một hệ mật mã, hoặc là bản mật mã, là kết quả của việc mã hoá một thông báo với việc sử dụng một hệ mật

Trong lý thuyết mật mã, một mã thay một số từ khoá trong thông báo bằng những từ khác hay bằng những tổ hợp của các ký tự, như được xác định trong sách mã Điều này đôi khi đối lập với một hệ mật mã (cách viết bí mật - cipher) lại thao tác trên các chữ hay các ký tự

Ví dụ chúng ta hãy xét hệ mật Pig-Latin là một dạng đơn giản của hệ mật chuyển dịch với các quy tắc lập mã sau:

Với các từ được bắt đầu với một phụ âm đơn, lấy phụ âm đó khỏi từ và thêm nó vào cuối từ Sau đó thêm ay vào sau phụ âm Sau đây là một số thí dụ:

cat = atcay

dog = ogday

Với các từ bắt đầu với hai hoặc nhiều phụ âm, lấy nhóm phụ âm đó khỏi

từ và thêm chúng vào cuối từ sau đó thêm ay vào cuối từ, ngay sau nhóm phụ

âm vừa được thêm vào Sau đây là một số thí dụ:

1.4 Các phương thức mã hoá cơ bản

Một phương thức mã hoá và giải mã được gọi là mật mã (cipher) Một vài phương thức mật mã dựa trên bí mật của thuật toán, những thuật toán này chỉ được chú ý về mặt lịch sử và không phù hợp với thực tại Một thuật toán mã hoá hiện đại sử dụng một khoá để điều khiển quá trình mã hoá và giải mã, một thông điệp có thể được giải mã chỉ khi khoá giải mã đúng với khoá mã hoá

Trang 12

Có 2 lớp của phương thức mã hoá là khoá đối xứng (khoá bí mật) và khoá không đối xứng (khoá public) Sự khác nhau là thuật toán đối xứng sử dụng cùng

1 khoá cho quá trình mã hoá và giải mã (hoặc khoá giải mã có thể nhận được dễ dàng từ khoá mã hoá), trong khi đó phương thức bất đối xứng sử dụng các khoá khác nhau cho quá trình mã hoá và giải mã, và khoá giải mã không thể nhận được từ khoá mã hoá

Khoá đối xứng có thể chia thành stream cipher (mã dòng) và block cipher (mã cụm) Mã dòng có thể mã hoá một bit đơn của plaintext tại một thời điểm, trong khi đó mã cụm mã hoá một nhóm các bit (thường là 64 bit trong các phương thức mã hoá hiện đại) và mã hoá chúng chung lại thành một đơn vị đơn

Mã hoá bất đối xứng (public) cho phép khoá mã được công khai (nó có thể được công bố trên báo), cho phép mọi người mã hoá với khoá này, trong đó chỉ có người nhận thực sự (người biết khoá giải mã) mới giải mã được thông điệp Khoá mã được gọi là khoá chung (public) và khoá giải mã được gọi là khoá riêng (private) hay khoá bí mật (secret key)

Phương thức mã hóa hiện đại không còn sử dụng mã hoá bút và giấy Các phương thức mã hoá mạnh được thiết kế để thực thi bởi các máy tính hoặc các thiết bị phần cứng đặc biệt Trong hầu hết các phương thức mã hoá hiện đại, mã hoá được thực hiện bởi các phần mềm

Thông thường mã hoá đối xứng thực thi nhanh hơn trên các máy tính so với mã hoá bất đối xứng Trong thực tế chúng thường được sử dụng cùng nhau, trong đó khoá public được sử dụng để tạo nên khoá mã hoá ngẫu nhiên, và khoá ngẫu nhiên được dùng để mã hoá thông điệp thực sự sử dụng một thuật toán đối xứng Đây thường được gọi là mã hoá lai

1.5 Các chức năng băm nhỏ mã hoá

Các chức năng băm nhỏ mã hoá được sử dụng trong nhiều trường hợp, ví

dụ như để tính toán trong việc sắp xếp các thông điệp khi tạo nên một chữ kí điện

tử Một hàm băm đưa các bit của thông điệp thành một giá trị băm có giá trị cố định Một hàm băm sẽ làm cho việc tìm lại một thông điệp đã bị băm trở nên cực

kì khó khăn

Trang 13

Các chức năng băm nhỏ thường tạo ra các giá trị băm 128 bit trỏ lên Con

số 2 mũ 128 lớn hơn rất nhiều số lượng các thông điệp được trao đổi trên toàn cầu Lí do tại sao lại cần thiết hơn 128 bit dựa trên birthday paradox Birthday paradox chỉ ra rằng sự xắp xếp của 128 bit sẽ gấp đôi so với trường hợp mã hoá

64 bit Việc bộ nhớ rẻ hơn khiến cho việc mã hoá lớn hơn 128 bit trở thành hiện thực như 160 bit hiện nay

Rất nhiều thuật băm nhỏ là miễn phí Thuật băm nhỏ miễn phí nổi tiếng nhất là họ MD, như MD4 và MD5 MD4 đã bị phá và MD5 mặc dù đang được dùng rộng rãi, cũng sẽ bị phá SHA-1 và RipeMD-160 là những ví dụ tốt khi bạn muốn nghiên cứu về mã hoá

1.6 Các phương thức tạo nên khoá mã hoá ngẫu nhiên

Phương thức mã hoá ngẫu nhiên tạo nên các số ngẫu nhiên được sử dụng trong các ứng dụng mã hoá, ví dụ như các khoá Các phương thức tạo nên số ngẫu nhiên trong các ứng dụng ngày nay không thể sử dụng để tạo nên số mã hoá ngẫu nhiên vì chúng chỉ tạo nên 1 con số ngẫu nhiên tĩnh, không thể chống lại được phương pháp đoán của những kẻ phá khoá

Trong trường hợp tối ưu, các số ngẫu nhiên được dựa trên tài nguyên vật lí thực tế ngẫu nhiên mà không thể đoán được Những nguồn này có thể là tín hiệu nhiễu trong một thiết bị bán dẫn, tín hiệu bit thấp nhất của một âm thanh đầu vào, hoặc thời gian trễ giữa các phiên ngắt của các thiết bị hoặc việc gõ bàn phím của người dùng Nhiễu từ thiết bị vật lý sau đó được chế thành hàm băm để tạo nên

sự lệ thuộc giữa các bit Thường là một lượng lớn bit (vài nghìn bít) được sử dụng để tạo nên sự ngẫu nhiên, và trong một thuật toán mã hoá mạnh mỗi bít trong nhóm này lại phụ thuộc vào mỗi bit trong nhiễu đầu vào và mọi bit của nhóm

Khi tính ngẫu nhiên vật lí không đảm bảo, số ngẫu nhiên giả được sử dụng Trường hợp này có thể phiền phức, nhưng thường được dùng trong các máy tính nói chung Chúng ta cần có được nhiễu của môi trường có thể là từ thiết

bị bên trong, trạng thái tài nguyên , trạng thái mạng, trễ bàn phím Điều mấu

Trang 14

chốt là dữ liệu không thể đoán được bởi một kẻ tấn công bên ngoài, để đạt được điều này nhóm số mã hoá phải gồm ít nhất 128 bit

Một hàm băm ngẫu nhiên mạnh thường bao hàm 1 lượng lớn pool ngẫu nhiên (nhóm số mã hoá) Các bit trả về từ pool bởi lấy dữ liệu từ pool, thường là chạy các dữ liệu thông qua hàm băm để tránh làm ảnh hưởng tới nội dung của pool Khi cần nhiều bit hơn, pool được trộn lẫn nội dung mã hoá của nó bởi một thuật mã hoá phù hợp với một khoá ngẫu nhiên (được lấy từ phần trả về của pool) Trong một chế độ mà mỗi bit của pool phụ thuốc vào mọi bit của pool Một nhiễu môi trường được trộn lẫn vào pool để đảm bảo việc đoán giá trị trước hoặc sau sau khi đã trộn sẽ trở nên khó thành hiện thực

Mặc dù thuật toán tạo số mã hoá ngẫu nhiên mạnh không phải là khó tạo nên nhưng thường là bị xem nhẹ và nếu như nó được thiết kế tồi thì sẽ trở thành điểm yếu đánh chú ý của hệ thống

1.7 Sức mạnh của các thuật toán mã hoá

Các hệ thống mã hoá tốt luôn luôn được thiết kế để càng khó bẻ gẫy càng tốt Trong thực tế có thể xây dựng nên một hệ thống không thể phá vỡ (mặc dù

nó không được phát triển) Sự quan tâm và trình độ luôn phải được chú ý tới Mọi kĩ sư cần phải hiểu rõ được các khái niệm về bảo mật và được đào tạo

Theo lý thuyết, một phương thức mã hoá với một khoá có thể bị bẻ bởi việc thử mọi khoá theo tuần tự.Nếu sử dụng cách bẻ khoá hàng loạt để thử mọi khoá, thì sự tính toán tăng lên nhiều lần theo sự tăng lên của độ dài khoá Một khoá 32 bit đòi hỏi 2 mũ 32 (khoảng 10 mũ 9) bước thử Điều này có thể được thực hiện tại một máy tính cá nhân Một khoá 40 bit đòi hỏi một máy tính cá nhân thử trong một tuần lẽ Một hệ thống mã hoá 56 bit (như DES) đòi hỏi nhiều máy tính cá nhân hợp tác trong vòng vài tháng nhưng có thể dễ dàng phá bởi một thiết bị phần cứng đặc biệt Giá của phần cứng này có thể chấp nhận được đối với một tổ chức tội phạm, một công ty hàng đầu hay một chính phủ Khoá 64 bit hiện nay có thể phá bởi một chính phủ Khoá 80 bit sẽ bị phá trong vòng vài năm tới, khoá 128 bit sẽ an toàn trong một tương lai gần Những khoá lớn hơn vẫn có thể được dùng hiện nay

Trang 15

Tuy nhiên độ dài khoá không phải là yếu tố duy nhất Nhiều mã hoá có thể

bị phá không bằng cách thử mọi khả năng (brute force) Nói chung, rất khó để thiết kế một thuật mã hoá mà không thể bị bẻ Tự thiết kế một thuật mã hoá của riêng bạn có thể là thú vị, nhưng không nên dùng trong các ứng dụng thực tế trừ khi bạn là chuyên gia và biết được chính xác điều bạn đang làm

Rất khó để giữ bí mật cho mật thuật toán mã hoá bởi một người nào đó quan tâm có thê thuê một tay bẻ khoá để dịch lại và khám phá ra phương pháp

mã hoá của ta Thực tế cho thấy đã có nhiều thuật toán mã hoá bị đưa ra công khai

Độ dài khoá sử dụng trong khoá public thường dài hơn so với khoá đối xứng do cấu trúc mở rộng của thuật mã hoá Vấn đề không phải ở việc đoán khoá đúng mà là nhận được khoá tương xứng từ khoá public Đối với RSA , điều này

có thể được thực hiện bằng cách phân tích một số nguyên lơn thành 2 thừa số Trong một số hệ thống mã hoá khác cần thiết phải tính toán một tổ hợp loga thành một số nguyên lớn

Để có được ý tưởng về sự phức tạp của hệ mã hoá RSA, một tổ hợp 256 bit có thể được phân thành thừa số tại nhà, và một khoá 512 bit có thể phá bởi 1 nhóm nghiên cứu của trường đại học trong vòng vài tháng Khoá 7689 bit không

an toàn trong một khoảng thời gian dài Khoá 1024 bit và lớn hơn sẽ là khá an toàn hiện nay trừ khi xuất hiện những nghiên cứu chống lại RSA, khoá 2048 bit được cho là an toàn cho những thập kỷ tới

Thường độ vững chắc của một hệ thống mã hoá bằng với sức mạnh của thuật toán mã hoá Thuật toán mã hoá và chính sách sử dụng là những điểm quan tâm nhất trong việc thử phá vỡ một hệ thống

1.8 Phá mã và phá mã một hệ thống

Phá mã là nghệ thuật giải mã một thông điệp đã bị mã hoá mà không cần biết khoá giải mã Có nhiều kĩ thuật phá mã khác nhau Dưới đây là những phương pháp quan trọng nhất:

- Tấn công thông điệp mã hoá: Đây là trường hợp kẻ tấn công không biết gì

về nội dung của thông điệp và chỉ làm việc với văn bản mã hoá Trong thực tế

Trang 16

thường có thể đoán được nội dung của văn bản thô, vì nhiều loại thông điệp có dạng trường đầu đề cố định Ngay cả những từ gốc và các tài liệu bắt đầu theo một cách có thể đoán được Ví dụ rất nhiều kiểu tấn công cổ điển sử dụng việc đánh giá tần số xuất hiện của các kí tự mã hoá, tuy nhiên cách này khó hữu dụng đối với các thuật mã hoá hiện đại

Các hệ thống mã hoá hiện đại không có điểm yếu đối với kiểu tấn công này, mặc dù đôi khi chúng có thể có một khuynh hướng tĩnh nào đó

- Kiểu tấn công know-plaintext: Kẻ tấn công biết hoặc có thể đoán được văn bản thô trong một vài phần của văn bản mã hoá Sau đó sẽ giải mã phần còn lại dựa trên thông tin này Thực hiện bằng cách xem xét khoá sử dụng để mã hoá dữ liệu hoặc thông qua các shorcut

Một trong những cách tấn công know-plaintext nổi tiếng nhất là phương pháp chia tuyến các khối mã hoá

- Phương pháp chọn văn bản thô: Kẻ tấn công có khả có được mọi văn bản anh ta muốn mã hoá với một khoá chưa biết Anh ta sẽ quyết định khoá sử dụng

mã hoá

Kiểu tấn công này rất nguy hiểm đối với một vài hệ thống, ví dụ như RSA , khi những thuật toán này được dùng, cần rất cẩn trọng để văn bản thô

- Kiểu tấn công man-in-the-middle (kẻ trung gian): Kiểu tấn công này liên

hệ đến giao thức trao đổi khoá và truyền thông mã hoá Khi 2 nhóm, A và B trao đổi khoá để bảo mật quá trình trao đổi thông tin (ví dụ sử dụng Diffie-Helllman), một đối thủ sẽ tự đưa anh ta vào A và B Anh ta bắt các tín hiệu A và B trao đổi với nhau và tạo nên một khóa trao đổi cho A và B riêng rẽ A và B sử dụng các khoá riêng rẽ này, mỗi khoá đều được biết bởi kẻ tấn công Kẻ tấn công có thể giải mã mọi thông điệp từ A và gửi tới B bằng cách mã hoá nó lần nữa với khoá

mà hắn trao đổi với B Cả A và B đều tin rằng họ đang truyền thông một cách bảo mật nhưng thực tế là kẻ tấn công đang nghe được tất cả

- Cách thông thường để ngăn chặn kiểu tấn công man-in-the-middle là sử dụng một khoá public có khả năng cung cấp chữ kí điện tử Để thiết lập, các bên phải biết được khoá public của nhau SaKu khi khoá bí mật chung được tạo ra,

Trang 17

các bên gửi chữ kí điện tử cho nhau Kẻ tấn công có thể thử giả mạo chữ kí nhưng không thành công bởi anh ta không thể giả mạo chữ kí

Giải pháp này phù hợp với các khoá public phân phối bảo mật Một ví dụ là các nhánh chứng thực như X.509 được sử dụng trong IPSec

- Tương quan giữa khoá bí mật và đầu ra của hệ thống mã hoá là nguồn thông tin cho kẻ phá mã Trong những trường hợp dễ nhất, thông tin về khoá bí mật bị rò rỉ trực tiếp bởi hệ thống mã hoá Các trường hợp phức tạp hơn đòi hỏi nghiên cứu sự tương quan giữa hệ thống mã hoá và thông tin đoán khoá mã hoá

Ví dụ, trong một kiểu tấn công chống lại mã hoá khối kẻ bẻ khoá sẽ thử các đoạn văn bản thô và các văn bản đã mã hoá Hắn sẽ đoán các bit khoá của hệ thống mã hoá dựa trên tương quan giữa chuỗi kí tự nhập vào và chuỗi mã hoá đầu ra, và sẽ đoán ra các bit khoá tuy nhiên có thể có rất nhiều biến thể khác nhau

- Kiểu tấn công sử dụng các phần mềm bên dưới: trong một vài năm trở lại đây càng ngày càng xuất hiện nhiều các thiết bị mã hoá di động nhỏ được sử dụng, một kiểu tấn công mới xuất hiện nhằm trực tiếp vào phần cứng thực thi của

hệ thống mã hoá

Kiểu tấn công sử dụng dữ liệu từ việc đo đạc chính xác các thiết bị mã hoá, sau đó tìm ra thuật toán mã hoá và khoá sử dụng từ sự đo đạc trên Ý tưởng này

về cơ bản gần giống như dạng tấn công tương quan Từ sự so sánh giữa kết quả

đo đạc đầu vào và chuỗi mã hoá đầu ra hắn sẽ đoán ra các bit khoá

Đã xuất hiện những kiểu tấn công dựa vào những đo đạc về bộ định thời của thiết bị, công suất sử dụng, và tần số bức xạ Những thông tin có thể được sử dụng để tìm ra khoá bí mật hay các thông tin khác lưu trữ trong thiết bị

Kiểu tấn công này nói chung độc lập với loại thiết bị và có thể ứng dụng trên mọi loại thiết bị có chế độ bảo vệ lỏng lẻo

Các thông tin thêm về kiểu tấn công này các bạn có thể tìm hiểu thêm tại http://www.cryptography.com

- Các lỗi trong hệ thống mã hoá có thể dẫn tới việc tay bẻ khoá có thể tìm ra được khoá bí mật Điều thú vị trong các thiết bị mã hoá dẫn tới một vài thuật toán

Trang 18

trở nên sai lệch với sự xuất hiện của những lỗi nhỏ trong cấu trúc tính toán bên trong

Ví dụ sự thực thi của khoá bí mật RSA rất nhậy cảm với lỗi Dù chỉ một lỗi nhỏ trong quá trình tính toán cũng sẽ dẫn tới việc lộ khoá bí mật

- Máy tính lượng tử: Những nghiên cứu của Peter Shor trong các chuỗi định thời và các thuật toán loga với máy tính lượng tử đã dẫn tới sự tăng chú ý trong tính toán lượng tử Máy tính lượng tử trong những nghiên cứu gần đây cho thấy sức mạnh rất lớn của nó so với các máy tính hiện nay Sức mạnh này nhận được

từ cấu trúc tính toán song song do đó thay vì chỉ thực hiện một tính toán tại một thời điểm nó có thể thực thi nhiều tính toán cùng lúc

Những nghiên cứu của Shor cho thấy sự đi vào lịch sử của các khoá mã hoá public tuy nhiên với trường hợp của các khoá private thì sự hiệu quả không cao Tính toán lượng tử cũng hứa hẹn nhiều về bảo mật và che giấu dữ liệu tuy nhiên nó vẫn đang trên đường thu hút sự chú ý hơn là được ứng dụng trong các application

- Mã hoá DNA: Với cấu trúc tính toán song song mã hoá DNA đòi hỏi những tính toán rất lớn trong việc bẻ khoá Cấu trúc song song tự nhiên khiến tính toán DNA đòi hỏi một tốc độ tính toán cực cao mà các máy tính serial hiện nay khó lòng thực hiện nổi

Một vấn đề đặt ra là mã hoá DNA cũng đòi hỏi tính toán lớn do đó nó tiêu tốn không ít tài nguyên của hệ thống vận hành

Có rất nhiều thuật toán mã hoá khác nhau, để hiểu sâu hơn các bạn tìm đọc các sách sau: “Handbook of Applied Cryptography” của Menezes, van Oorschot,

và Vanstone và quyển “Applied Cryptography” của Schneier

Trang 19

Chương 2

TỔNG QUAN VỀ CÁC HỆ MÃ CƠ BẢN

2.1 Mã hoá công khai

2.1.1 Khái niệm mã hoá công khai

Mã hoá công khai là một dạng mật mã hoá cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khoá chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khoá có quan hệ toán học với nhau là khoá công khai và khoá cá nhân (hay khoá bí mật)

Thuật toán mã hoá khoá bất đối xứng thường được dùng đồng nghĩa với mã hoá khoá công khai mặc dù hai khái niệm không hoàn toàn tương đương Có những thuật toán mật mã khoá bất đối xứng không có tính chất khoá công khai và

bí mật như đề cập ở trên mà cả hai khoá (cho mã hoá và giải mã) đều cần phải giữ bí mật

Trong mật mã hoá công khai, khoá cá nhân phải được giữ bí mật trong khi khoá công khai được phổ biến công khai Trong 2 khoá, một dùng để mã hoá và khoá còn lại dùng để giải mã Điều quan trọng đối với hệ thống là không thể tìm

ra khoá bí mật nếu chỉ biết khoá công khai

Mã hoá: giữ bí mật thông tin và chỉ có người có khoá bí mật mới giải mã

được

Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được trao đổi

thông tin một khoá bí mật nào đó hay không

Thoả thuận khoá: cho phép thiết lập khoá dùng để trao đổi thông tin mật

giữa hai bên

Thông thường, các kỹ thuật mật mã hoá khoá công khai đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hoá khoá đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng

Trang 20

2.1.2 Ứng dụng của mã hoá công khai

Ứng dụng rõ ràng nhất của mật mã hoá công khai là bảo mật: một văn bản được mã hoá bằng khoá công khai của một người sử dụng thì chỉ có thể giải mã với khóa bí mật của người đó

Chọn một số ngẫu nhiên lớn để sinh cặp khóa

Dùng khoá công khai để mã hóa, nhưng dùng khoá bí mật để giải mã

Các thuật toán tạo chữ ký số khoá công khai có thể dùng để nhận thức Một người sử dụng có thể mã hoá văn bản với khoá bí mật của mình Nếu một người khác có thể giải mã với khoá công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khoá công khai đó

Trang 21

Dùng khoá bí mật để ký một thông báo, dùng khoá công khai để xác minh

chữ ký

Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thoả thuận khoá

Tổ hợp khoá bí mật mình với khoá bí mật của người khác tạo ra khoá dùng

chung chỉ hai người biết

2.1.3 Độ an toàn

Tồn tại khả năng một người nào đó có thể tìm ra được khoá bí mật Không giống với hệ thống mật mã sử dụng một lần (one-time pad) hoặc tương đương, chưa có thuật toán mã hoá khoá bất đối xứng nào được chứng minh là an toàn trước các tấn công dựa trên bản chất toán học của thuật toán Khả năng một mối quan hệ nào đó giữa hai khoá hay điểm yếu của thuật toán dẫn tới cho phép giải

Trang 22

mã không cần tới khoá hay chỉ cần khoá mã hoá vẫn chưa được loại trừ An toàn của các thuật toán này đều dựa trên các ước lượng về khối lượng tính toán để giải các bài toán gắn với chúng Các ước lượng này lại luôn thay đổi tuỳ thuộc khả năng của máy tính và các phát hiện toán học mới

Mặc dù vậy, độ an toàn của các thuật toán mật mã hoá khoá công khai cũng tương đối đảm bảo Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn bộ) được ước lượng là 1000 năm thì thuật toán này hoàn toàn có thể dùng để mã hoá các thông tin về thẻ tín dụng – Rõ ràng là thời gian phá mã lớn hơn nhiều lần thời gian tồn tại của thẻ (vài năm)

Nhiều điểm yếu của một số thuật toán mật mã hoá khoá bất đối xứng đã được tìm ra trong quá khứ Thuật toán đóng gói ba lô là một ví dụ Nó chỉ được xem là không an toàn khi một dạng tấn công không lường trước bị phát hiện Gần đây, một số dạng tấn công đã đơn giản hoá việc tìm khóa giải mã dựa trên việc

đo đạc chính xác thời gian mà một hệ thống phần cứng thực hiện mã hoá Vì vậy, việc sử dụng mã hoá khoá bất đối xứng không thể đảm bảo an toàn tuyệt đối Đây là một lĩnh vực đang được tích cực nghiên cứu để tìm ra những dạng tấn công mới

Một điểm yếu tiềm tàng trong việc sử dụng khoá bất đối xứng là khả năng bị tấn công dạng kẻ tấn công đứng giữa (man in the middle attack): kẻ tấn công lợi dụng việc phân phối khoá công khai để thay đổi khoá công khai Sau khi đã giả mạo được khoá công khai, kẻ tấn công đứng ở giữa hai bên để nhận các gói tin, giải mã rồi lại mã hoá với khoá đúng và gửi đến nơi nhận để tránh bị phát hiện Dạng tấn công kiểu này có thể phòng ngừa bằng các phương pháp trao đổi khoá

an toàn nhằm đảm bảo nhận thức người gửi và toàn vẹn thông tin Một điều cần lưu ý là khi chính phủ quan tâm đến dạng tấn công này: họ có thể thuyết phục (hay bắt buộc) nhà cung cấp chứng thực số xác nhận một khoá giả mạo và có thể đọc các thông tin mã hoá

Trang 23

2.2 Thuật toán mã hoá RSA

2.2.1 Giới thiệu thuật toán mã hoá RSA

Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả

Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh này chỉ được công bố vào năm 1977 vì được xếp vào loại tuyệt mật

Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4,405,829) Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm

2000 Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên

sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký

Thuật toán RSA có hai khoá: khóa công khai (hay khoá công cộng) và khoá

bí mật (hay khoá cá nhân) Mỗi khoá là những số cố định sử dụng trong quá trình

mã hoá và giải mã Khoá công khai được công bố rộng rãi cho mọi người và được dùng để mã hoá Những thông tin được mã hoá bằng khoá công khai chỉ có thể được giải mã bằng khoá bí mật tương ứng Nói cách khác, mọi người đều có thể mã hoá nhưng chỉ có người biết khoá cá nhân (bí mật) mới có thể giải mã được

Ta có thể mô tả trực quan một hệ mật mã khoá công khai như sau: B muốn gửi cho A một thông tin mật mà B muốn duy nhất A có thể đọc được Để làm được điều này, A gửi cho B một chiếc hộp có khoá đã mở sẵn và giữ lại chìa khoá B nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khoá lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khoá ngay cả

B cũng không mở lại được – không đọc lại hay sửa thông tin trong thư được nữa) Sau đó B gửi chiếc hộp lại cho A A mở hộp với chìa khoá của mình và đọc

Trang 24

thông tin trong thư Trong ví dụ này, chiếc hộp với khoá mở đóng vai trò khoá

công khai, chiếc chìa khoá chính là khoá bí mật

Trong mật mã học, RSA là một thuật toán mật mã hoá khoá công khai Đây

là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc

mã hoá Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc

sử dụng khoá công cộng RSA đang được sử dụng phổ biến trong thương mại

điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khoá đủ lớn

2.2.2 Hoạt động

2.2.2.1 Quá trình tạo khoá

Giả sử A và B cần trao đổi thông tin bí mật thông qua một kênh không an

toàn (ví dụ như internet) Với thuật toán RSA, A đầu tiên cần tạo ra cho mình cặp

khoá gồm khoá công khai và khoá bí mật theo các bước sau:

1 Chọn 2 số nguyên tố lớn p và q với p  q, lựa chọn ngẫu nhiên và độc lập

 Các số nguyên tố thường được chọn bằng phương pháp thử xác suất

 Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem

x( 1)( 1)1

cũng là số tự nhiên Khi đó sử dụng giá trị

d mod (p-1)(q-1)

 Từ bước 3, PKCS#1 v2.1 sử dụng = LCM (p-1,q-1) thay cho = (p-1)(q-1)

Khóa công khai bao gồm:

 n, modun

 e, số mũ công khai (cũng gọi là số mũ mã hóa)

Trang 25

Khóa bí mật bao gồm:

 n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật

 d, số mũ bí mật (cũng gọi là số mũ giải mã)

Một dạng khác của khóa bí mật bao gồm:

 p and q, hai số nguyên tố chọn ban đầu,

 d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1),

 (1/q) mod p (thường được gọi là iqmp)

Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dư Trung Quốc (tiếng Anh: Chinese Remainder Theorem - CRT) Ở dạng này, tất cả thành phần của khóa bí mật phải được giữ bí mật

A gửi khóa công khai cho B, và giữ bí mật khóa cá nhân của mình Ở đây,

p và q giữ vai trò rất quan trọng Chúng là các phân tố của n và cho phép tính d khi biết e Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa

2.2.2.2 Quá trình mã hoá

Giả sử B muốn gửi đoạn thông tin M cho A Đầu tiên B chuyển M thành một

số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thoả thuận trước Quá trình này được mô tả ở phần chuyển đổi văn bản rõ

Lúc này B có m và biết n cũng như e do A gửi, B sẽ tính c là bản mã hoá của

m theo công thức:

C = me mod n Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo mođun) bằng thuật toán bình phương và nhân Cuối cùng B gửi c cho A

Trang 26

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:

Sau đây là một ví dụ với những số cụ thể Ở đây chúng ta sử dụng những

số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn Lấy:

p = 61 số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)

q = 53 số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)

n = pq = 3233 môđun (công bố công khai)

e = 17 số mũ công khai

d = 2753 số mũ bí mật

Khóa công khai là cặp (e, n) Khóa bí mật là d Hàm mã hóa là:

encrypt(m) = m e mod n = m17 mod 3233

với m là văn bản rõ Hàm giải mã là:

decrypt(c) = c d mod n = c2753 mod 3233

Trang 27

decrypt(855) = 8552753 mod 3233 = 123

Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ giải thuật bình phương và nhân

2.2.4 Quá trình chuyển đổi văn bản rõ

Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ

(chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã

không an toàn Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:

Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng

Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị

m e cũng nhận giá trị nhỏ (so với n) Như vậy phép môđun không có tác dụng và có thể dễ dàng tìm được m bằng cách khai căn bậc e của c (bỏ qua

môđun)

 RSA là phương pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên

kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm ra bản rõ tương ứng

Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn

với m là nhóm vài ký tự ASCII Một đoạn tin chỉ có 1 ký tự NUL sẽ được gán giá trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và N Tương tự, một ký tự

ASCII khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1 Với các hệ thống dùng

giá trị e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và 2553 nhỏ hơn giá trị n chấp nhận được Những

bản mã này sẽ dễ dàng bị phá mã

Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm

một hình thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa Quá trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn Sau khi

chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã Điều này làm giảm tính khả thi của phương pháp tấn công lựa chọn bản

rõ (một bản rõ sẽ có thể tương ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi)

Trang 28

Một số tiêu chuẩn, chẳng hạn như PKCS, đã được thiết kế để chuyển đổi bản rõ trước khi mã hóa bằng RSA Các phương pháp chuyển đổi này bổ sung thêm bít vào M Các phương pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công phức tạp tận dụng khả năng biết trước được cấu trúc của bản rõ Phiên bản ban đầu của PKCS dùng một phương pháp đặc ứng (ad-hoc)

mà về sau được biết là không an toàn trước tấn công lựa chọn bản rõ thích ứng (adaptive chosen ciphertext attack) Các phương pháp chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn công dạng này Tiêu chuẩn PKCS còn được bổ sung các tính năng khác để đảm bảo an toàn cho chữ

ký RSA (Probabilistic Signature Scheme for RSA - RSA-PSS)

2.2.5 An ninh

Độ an toàn của hệ thống RSA dựa trên hai vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên tố lớn và bài toán RSA Nếu hai bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn

Bài toán RSA là bài toán tính căn bậc e modun n (với n là hợp số): tìm số m sao cho me = e mod n, trong đó (e,n) chính là khóa công khai và e là bản mã Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được hai số nguyên tố p và q sao cho n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d từ e Chưa có một phương pháp nào tìm

ra trên máy tính để giải mã bài toán này trong thời gian đa thức (polynomial time) Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán)

Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA

có độ dài từ 1024 đến 2048 bít Một số chuyên gia cho rằng khóa 1024 bít có thể

Trang 29

bị phá vỡ Với khóa 4096 bít thì hầu như không có khả năng bị phá vỡ trong tương lai gần Do đó người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n được chọn đủ lớn Nếu n có độ dài 256 bít hoặc ngắn hơn thì nó có thể bị phân tích trong vài giờ với máy tính cá nhân dùng các phần mềm có sẵn Nếu n

có độ dài 512 bít, nó có thể bị phân tích bởi vài trăm máy tính tại thời điểm năm

1999 Một thiết bị lý thuyết có tên là TWIRL do Shamir và Tromer mô tả năm

2003 đã đặt ra câu hỏi về độ an toàn của khóa 1024 bít Vì vậy hiện nay người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít

Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng

tử (trên lý thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa

2.3 Thuật toán mã hoá DES

2.3.1 Giới thiệu về thuật toán DES

Năm 1972, Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (National Institute of Standards and Technology-NIST) đặt ra yêu cầu xây dựng một thuật toán mã hoá bảo mật thông tin với yêu cầu là dễ thực hiện, sử dụng được rộng rãi trong nhiều lĩnh vực và mức độ bảo mật cao Năm 1974, IBM giới thiệu thuật toán Lucifer, thuật toán này đáp ứng hầu hết các yêu cầu của NIST Sau một số sửa đổi, năm 1976, Lucifer được NIST công nhận là chuẩn quốc gia Hoa kỳ và được đổi tên thành Data Encryption Standard (DES)

DES là thuật toán mã hoá bảo mật được sử dụng rộng rãi nhất trên thế giới, thậm chí, đối với nhiều người DES và mã hoá bảo mật là đồng nghĩa với nhau ở thời điểm DES ra đời người ta đã tính toán rằng việc phá được khoá mã DES là rất khó khăn, nó đòi hỏi chi phí hàng chục triệu USD và tiêu tốn khoảng thời gian rất nhiều năm Cùng với sự phát triển của các loại máy tính và mạng máy tính có tốc độ tính toán rất cao, khoá mã DES có thể bị phá trong khoảng thời gian ngày càng ngắn với chi phí ngày càng thấp Dù vậy việc này vẫn vượt

xa khả năng của các hacker thông thường và mã hoá DES vẫn tiếp tục tồn tại

Trang 30

trong nhiều lĩnh vực như ngân hàng, thương mại, thông tin nhiều năm nữa đặc biệt với sự ra đời của thế hệ DES mới-"Triple DES"

Vậy DES hoạt động như thế nào, bài này sẽ giới thiệu nguyên tắc làm việc của DES, một số ứng dụng cụ thể của bảo mật DES trong bảo mật thông tin trên thế giới cũng như ở nước ta xin được giới thiệu trong các bài viết sau Kể từ khi DES ra đời, nhiều thuật toán mã hoá bảo mật khác cũng được phát triển tương tự DES hoặc dựa trên DES, một khi nắm được các nguyên tắc của DES bạn sẽ dễ dàng hiểu các thuật toán này

Yêu cầu đặt ra nếu muốn bảo mật tốt hơn là phải tìm được một thuật toán sao cho việc thực hiện không quá phức tạp nhưng xác suất tìm ra chìa khoá bằng cách thử tất cả các trường hợp (brute-force) là rất nhỏ (số lần thử phải rất lớn)

2.3.2 Quy trình của thuật toán DES

Về mặt khái niệm, thông thường thuật toán mã hoá DES là thuật toán mở, nghĩa là mọi người đều biết thuật toán này Điều quan trọng nhất là chìa khoá của DES có độ dài tới 56 bit, nghĩa là số lần thử tối đa để tìm được chìa khoá lên đến 2^56, trung bình là 2^55 = 36.028.797.018.963.968 lần, một con số rất lớn!

DES được thực hiện nhờ các phép dịch, hoán vị và các phép toán logic trên các bit Mỗi ký tự trong bức thư hay bản tin cần mã hoá được biểu diễn bởi 2

số hexa hay 8 bít DES mã hoá từng khối 64 bít tương đương 16 số hexa Để thực hiện việc mã hoá DES sử dụng một chìa khoá cũng dưới dạng 16 số hexa hay 64 bít tức 8 byte, nhưng các bít thứ 8 trong các byte này bị bỏ qua trong khi mã hoá

vì vậy độ lớn thực tế của chìa khoá là 56 bit Ví dụ, ta mã hoá một bản tin hexa

"0123456789ABCDEF" với chìa khoá là "5A5A5A5A5A5A5A5A" thì kết quả là

"72AAE3B3D6916E92" Nếu kết quả này được giải mã với cùng chìa khoá

"5A5A5A5A5A5A5A5A" thì ta sẽ thu lại được đúng bản tin

"0123456789ABCDEF"

DES bao gồm 16 vòng, nghĩa là thuật toán chính được lặp lại 16 lần để tạo

ra bản tin được mã hoá

Trang 31

2.3.2.1 Chuẩn bị chìa khoá

Bước đầu tiên là chuyển 64 bit chìa khoá qua một bảng hoán vị gọi là Permuted Choice hay PC-1 để thu được chìa khoá mới có 56 bit

Sau khi vệc chuẩn bị chìa khoá và dữ liệu mã hoá hoàn thành, thực hiện mã hoá bằng thuật toán DES Đầu tiên, khối dữ liệu đầu vào 64 bit được chia thành hai nửa, L và R L gồm 32 bit bên trái và R gồm 32 bit bên phải Quá trình sau đây được lặp lại 16 lần tạo thành 16 vòng của DES gồm 16 cặp L[0]-L[15] và R[0]-

R[15]:

1 R[r-1]- ở đây r là số vòng, bắt đầu từ 1- được lấy và cho qua bảng E (E-bit Selection Table), bảng này giống như một bảng hoán vị, có điều là một số bit được dùng hơn một lần do vậy nó sẽ mở rộng R[r-1] từ 32 bit lên 48 bit để chuẩn bị cho bước tiếp theo

2 48 bit R[r-1] được XOR với K[r] và được lưu trong bộ nhớ đệm, vì vậy R[r-1] không thay đổi

3 Kết quả của bước trước lại được chia thành 8 đoạn, mỗi đoạn 6 bit, từ B[1] đến B[8] Những đoạn này tạo thành chỉ số cho các bảng S (Substitution) được sử dụng ở bước tiếp theo Các bảng S, là một bộ 8 bảng (S[1]-S[8]) 4 hàng, 16 cột Các số trong bảng có độ dài 4 bit vì vậy có giá trị từ 0 đến 15

4 Bắt đầu từ B[1], bit đầu và cuối của khối 6 bit được lấy ra và sử dụng làm chỉ số hàng của bảng S[1], nó có giá trị từ 0 đến 3, và 4 bit giữa được dùng làm chỉ số cột, từ 0 đến 15 Giá trị được chỉ đến trong bảng S được lấy ra và lưu lại Việc này được lặp lại đối với B[2] và S[2] cho đến B[8] và S[8] Lúc này bạn có 8 số 4 bit, khi nối lại với nhau theo thứ tự thu được sẽ tạo ra một chuỗi 32 bit

5 Kết quả của bước trước được hoán vị bit bằng bảng hoán vị P (Permutation)

6 Kết quả thu được sau khi hoán vị được XOR với L[r-1] và chuyển vào R[r] R[r-1] được chuyển vào L[r]

Trang 32

7 Lúc này bạn có L[r] và R[r] mới Bạn tiếp tục tăng r và lặp lại các bước trên cho đến khi r= 17, đIều đó có nghĩa là 16 vòng đã được thực hiện và các chìa khoá phụ K[1]-K[16] đã được sử dụng

Khi đã có L[16] và R[16], chúng được ghép lại với nhau theo cách chúng

bị tách ra (L[16] ở bên trái và R[16] ở bên phải) thành 64 bit 64 bit này được hoán vị để tạo ra kết quả cuối cùng là dữ liệu 64 bit đã được mã hoá

2.3.2.2 Giải mã

Việc giải mã dùng cùng một thuật toán như việc mã hoá Để giải mã dữ liệu đã được mã hoá, quá trình như giống như mã hoá được lăp lại nhưng các chìa khoá phụ được dùng theo thứ tự ngược lạI từ K[16] đến K[1], nghĩa là trong bước 2 của quá trình mã hoá dữ liệu đầu vào ở trên R[r-1] sẽ được XOR với K[17-r] chứ không phải với K[r]

2.3.3 An ninh và ứng dụng

2.3.3.1 Tấn công theo kiểu duyệt toàn bộ

Mặc dù đã có nhiều nghiên cứu về phá mã DES hơn bất kỳ phương pháp mã hoá khối nào khác nhưng phương pháp phá mã thực tế nhất hiện nay vẫn là tấn công kiểu duyệt toàn bộ

Đối với bất cứ phương pháp mã hoá nào, kiểu tấn công cơ bản và đơn giản nhất là tấn công kiểu duyệt toàn bộ: thử lần lượt tất cả các khoá có thể cho đến khi tìm ra khoá đúng Độ dài của khoá sẽ xác định số lượng phép thử tối đa cần thực hiện và do đó thể hiện tính khả thi của phương pháp Trong trường hợp của DES, nghi ngờ về độ an toàn của nó được đặt ra ngay từ khi nó chưa trở thành tiêu chuẩn

2.3.3.2 Các kiểu tấn công khác hiệu quả hơn duyệt toàn bộ

Hiện nay có 3 kiểu tấn công có khả năng phá vỡ DES (với đủ 16 chu

trình) với độ phức tạp thấp hơn duyệt toàn bộ: phá mã vi sai (differential

cryptanalysis - DC), phá mã tuyến tính (linear cryptanalysis - LC) và phá mã

Davies (Davies' attack) Tuy nhiên các dạng tấn công này chưa thực hiện được

trong thực thế

Trang 33

Phá mã vi sai được Eli Biham và Adi Shamir tìm ra vào cuối những năm

1980 mặc dù nó đã được IBM và NSA biết đến trước đó Để phá mã DES với đủ 16 chu trình, phá mã vi sai cần đến 247 văn bản rõ DES đã được thiết kế để chống lại tấn công dạng này

Phá mã tuyến tính được tìm ra bởi Mitsuru Matsui và nó đòi hỏi 243 văn bản rõ (Matsui, 1993) Phương pháp này đã được Matsui thực hiện và là thực nghiệm phá mã đầu tiên được công bố Không có bằng chứng chứng

tỏ DES có khả năng chống lại tấn công dạng này Một phương pháp tổng

quát hơn, phá mã tuyến tính đa chiều (multiple linear cryptanalysis), được

Kaliski và Robshaw nêu ra vào năm 1994, Biryukov và cộng sự tiếp tục cải tiến vào năm 2004 Nghiên cứu của họ cho thấy mô phỏng tuyến tính

đa chiều có thể sử dụng để giảm độ phức tạp của quá trình phá mã tới 4 lần (chỉ còn 241 văn bản rõ) Kết quả tương tự cũng có thể đạt được với kiểu tấn công tuyến tính kết hợp với lựa chọn bản rõ (Knudsen and Mathiassen, 2000) Junod (2001) đã thực hiện một số thực nghiệm để tìm

ra độ phức tạp thực tế của phá mã tuyến tính và thấy rằng quá trình thực tế nhanh hơn dự đoán: 239×241

Phá mã Davies: trong khi phá mã vi sai và phá mã tuyến tính là các kỹ thuật

phá mã tổng quát, có thể áp dụng cho các thuật toán khác nhau, phá mã Davies là một kỹ thuật dành riêng cho DES Dạng tấn công này được đề xuất lần đầu bởi Davies vào cuối những năm 1980 và cải tiến bởi Biham

và Biryukov (1997) Dạng tấn công mạnh nhất đòi hỏi 250 văn bản rõ, độ phức tạp là 250 và có tỷ lệ thành công là 51%

2.3.3.3. Ứng dụng của DES

DES thường được dùng để mã hoá bảo mật các thông tin trong quá trình truyền tin cũng như lưu trữ thông tin Một ứng dụng quan trọng khác của DES là kiểm tra tính xác thực của mật khẩu truy nhập vào một hệ thống (hệ thống quản

lý bán hàng, quản lý thiết bị viễn thông…), hay tạo và kiểm tính hợp lệ của một

mã số bí mật (thẻ internet, thẻ điện thoại di động trả trước), hoặc của một thẻ thông minh (thẻ tín dụng, thẻ payphone…)

Trang 34

2.4 Sơ đồ chữ kí Elgamal

2.4.1 Giới thiệu và định nghĩa sơ đồ chữ kí Elgamal

Sơ đồ chữ kí Elgamal (E) được giới thiệu vào năm 1985 ở Mỹ Bản cải tiến của sơ đồ này đã được Viện Tiêu Chuẩn và Công Nghệ Quốc Gia Mỹ (NIST) chấp nhận làm chuẩn chữ kí số Sơ đồ chữ kí Elgamal dựa trên tính khó giải của bài toán tìm Logarithm rời rạc trên trường hữu hạn

Sơ đồ E là không tất định giống như hệ thống mã khoá công khai Elgamal Nghĩa là nhiều chữ kí hợp lệ trên bức điện cho trước bất kì Thuật toán xác minh phải có khả năng chấp nhận bất kì chữ kí hợp lệ nào khi xác thực chữ kí đó

Giá trị p,, là công khai ,còn a là mật

 Với K=(p,,a,) và với một số ngẫu nhiên (mật) k  Zp-1*

Ver(x,y,) = True    x (mod p)

Cho p là số nguyên tố sao cho bài toán Logarithm rời rạc trên Zp là khó và giả sử

Trang 35

B tính chữ kí bằng cách dùng cả giá trị mật a (là một phần của khoá ) lẫn số ngẫu nhiên mật k ( dùng để kí lên bức điện x ) Việc xác minh có thể thực hiện duy nhất bằng thông tin công khai

Ta xét một ví dụ sau :

Giả sử : Cho p =467 , =2 , a=127 khi đó:

 = a mod p = 2127 mod 467

= 132

Nếu B muốn kí lên bức điện x = 100 và chọn số ngẫu nhiên k = 213

( chú ý là USCLN(213,466) =1 và 213-1 mod 466 =431 ) Khi đó :

2.4.2 Các cách giả mạo chữ kí trong sơ đồ chữ kí Elgamal:

Giả sử, C thử giả mạo chữ kí trên bức điện x cho trước mà không biết a

Có 2 phương pháp có thể giả mạo chữ kí lên bức điện

 Phương pháp 1: Chọn đồng thời giá trị của , và x

Giả thiết i và j là các số nguyên 0  i  p-2 ,0  j  p-2 và USCLN (j ,p-1) =1

Khi đó thực hiện các tính toán sau :

Trang 36

Có thế xác minh qua phép kiểm tra sau:

Khi đó C có khả năng kí lên nhiều bức điện khác nhau

Giả sử i, j, h là các số nguyên , 0  h, j, i  p-2 và USCLN(h  - j ,p-1) =

Trang 37

 Độ an toàn của sơ đồ chữ kí Elgamal

ai khẳng định được rằng nó không thể giải được

2.4.3 Cách tấn công sơ đồ chữ kí Elgamal

Có thể phá được sơ đồ này nếu không áp dụng nó một cách cẩn thận

- Trường hợp 1: Giá trị k ngẫu nhiên được dùng để tính chữ kí phải được giữ kín không được để lộ Vì nếu k bị lộ , khá đơn giản để tính

Trang 38

p’ = ( p-1 ) / d Khi đó đồng dư thức trở thành :

16 Hàm băm tốt là hàm cho ra ít đụng độ băm (hash collision) trong các miền dữ liệu trông đợi Trong các bảng băm và việc xử lý dữ liệu, các đụng độ này dẫn đến chi phí cao hơn cho việc tìm kiếm các bản ghi trong cơ sở dữ liệu

Hoạt động của một hàm băm

Trang 39

Các phép toán trên các cấu trúc dữ liệu như danh sách, cây nhị phân… phần lớn được thực hiện bằng cách so sánh các phần tử của cấu trúc, do vậy thời gian truy xuất không nhanh và phụ thuộc vào kích thước của cấu trúc Một hàm băm tốt phải thoả mãn các điều kiện sau:

Bảng băm, một ứng dụng quan trọng của các hàm băm, cho phép tra cứu nhanh một bản ghi dữ liệu nếu cho trước khoá của bản ghi đó (Lưu ý: các khoá này thường không bí mật như trong mật mã học, nhưng cả hai đều được dùng để

mở khoá hoặc để truy nhập thông tin) Ví dụ, các khoá trong một từ điển điện tử Anh – Anh có thể là các từ tiếng Anh, các bản ghi tương ứng với chúng chứa các định nghĩa Trong trường hợp này, hàm băm phải ánh xạ các xâu chữ cái tới các chỉ mục của mảng nội bộ của bảng băm

Các hàm băm dành cho việc phát hiện và sửa lỗi tập trung phân biệt các trường hợp mà dữ liệu đã bị làm nhiễu bởi các quá trình ngẫu nhiên Khi các hàm băm được dùng cho các giá trị tổng kiểm, giá trị băm tương đối nhỏ có thể được dùng để kiểm chứng rằng một file dữ liệu có kích thước tuỳ ý chưa bị sửa đổi Hàm băm được dùng để phát hiện lỗi truyền dữ liệu Tại nơi gửi, hàm băm được

Trang 40

tính cho dữ liệu được gửi, giá trị băm này được gửi cùng dữ liệu Tại đầu nhận, hàm băm lại được tính lần nữa, nếu các giá trị băm không trùng nhau thì lỗi đã xảy ra ở đâu đó trong quá trình truyền Việc này được gọi là kiểm tra dư (redundancy check)

Các hàm băm còn được ứng dụng trong việc nhận dạng âm thanh, chẳng hạn như xác định xem một file MP3 có khớp với một file trong danh sách một loại file khác hay không

Thuật toán tìm kiếm xâu Rabin-Knarp là một thuật toán tìm kiếm xâu ký tự tương đối nhanh, với thời gian chạy trung bình O(n) Thuật toán này dựa trên việc sử dụng băm để so sánh xâu

Các chức năng băm nhỏ mã hoá được sử dụng trong nhiều trường hợp, ví dụ như để tính toán trong việc sắp xếp các thông điệp khi tạo nên một chữ ký điện

tử Một hàm băm đưa các bít của thông điệp thành một giá trị băm có giá trị cố định Một hàm băm sẽ làm cho việc tìm lại một thông điệp đã bị băm trở nên cực

kỳ khó khăn

Các chức năng băm nhỏ thường tạo ra các giá trị băm 128 bít trở nên Con số

2128 lớn hơn rất nhiều số lượng các thông điệp được trao đổi trên toàn cầu Lý do tại sao lại cần thiết hơn 128 bít dựa trên birthday paradox Birthday paradox chỉ

ra rằng sự sắp xếp của 128 bít sẽ gấp đôi so với trường hợp mã hoá 64 bít Việc

bộ nhớ rẻ hơn khiến cho việc mã hoá lớn hơn 128 bit trở thành hiện thực như 160 bit hiện nay

Rất nhiều thuật băm nhỏ là miễn phí Thuật băm nhỏ miễn phí nổi tiếng nhất

là họ MD, như MD4 và MD5

2.5.3 Các phương thức tạo nên khoá mã hoá ngẫu nhiên

Phương thức mã hoá ngẫu nhiên tạo nên các số ngẫu nhiên được sử dụng trong các ứng dụng mã hoá, ví dụ như các khoá Các phương thức tạo nên số ngẫu nhiên trong các ứng dụng ngày nay không thể sử dụng để tạo nên số mã hoá ngẫu nhiên vì chúng chỉ tạo nên một con số ngẫu nhiên tĩnh, không thể chống lại được phương pháp đoán của những kẻ phá hoại

Ngày đăng: 04/08/2016, 15:23

HÌNH ẢNH LIÊN QUAN

Sơ đồ tạo và kiểm tra chữ ký số - Các thuật toán mã hoá, chữ ký điện tử và ứng dụng
Sơ đồ t ạo và kiểm tra chữ ký số (Trang 48)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w