Tải bản đầy đủ (.pdf) (168 trang)

Nghiên cứu và xây dựng ứng dụng bảo mật trên PDA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.26 MB, 168 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Lời cảm ơn </b>

Chúng em cảm ơn khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên Thành phố Hồ Chí Minh đã tạo điều kiện cho chúng em thực hiện đề tài.

Chúng con gởi tất cả lòng biết ơn và sự kính trọng của chúng con đến cha mẹ cùng tồn thể gia đình, những người đã sinh thành, dưỡng dục và là chỗ dựa vững chắc cho chúng con vượt qua mọi khó khăn.

Chúng em trân trọng biết ơn thầy Dương Anh Đức, thầy Trần Minh Triết đã tận tình hướng dẫn, chỉ bảo chúng em để chúng em thực hiện tốt đề tài luận văn tốt nghiệp.

Chúng em cảm ơn quý thầy cô đã giảng dạy, trang bị những kiến thức quý báu cho chúng em trong những năm học vừa qua.

Xin chân thành cảm ơn các anh chị, bạn bè đã nhiệt tình giúp đỡ, động viên chúng tơi trong thời gian học tập và nghiên cứu.

Mặc dù chúng em đã nỗ lực hoàn thành luận văn trong phạm vi và khả năng cho phép nhưng chắc chắn luận văn vẫn cịn nhiều thiếu sót. Chúng em rất mong nhận được sự thơng cảm, góp ý và tận tình chỉ bảo của q thầy cơ và các bạn.

Tp. Hồ Chí Minh, 07/2004 Nhóm sinh viên thực hiện

Văn Đức Phương Hồng – Nguyễn Minh Huy

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Lời mở đầu </b>

Ngày nay, công nghệ thông tin và các sản phẩm cơng nghệ thơng tin đã góp phần giúp cuộc sống của con người thoải mái hơn. Liên lạc giữa các cá nhân và tổ chức trở nên thuận tiện, từ đó lượng thơng tin, dữ liệu giao dịch tăng nhanh về số lượng lẫn chất lượng.

Trước sự bùng nổ thông tin, việc bảo mật các dữ liệu nhạy cảm giữ vai trò rất quan trọng. Với sự ra đời của các thiết bị di động cầm tay và các thiết bị hỗ trợ cá nhân kỹ thuật số, thơng tin có thể được quản lý dễ dàng ở mọi lúc mọi nơi. Sự cơ động của các thiết bị đem lại nhiều tiện lợi cho người sử dụng nhưng đồng thời cũng mang lại những rủi ro cao khi dữ liệu trong các thiết bị bị mất hoặc bị lấy cắp. Do đó nhu cầu về ứng dụng mã hóa và bảo mật trên các thiết bị là cần thiết.

Trên thực tế, việc bảo mật trên thiết bị di động chưa được quan tâm rộng rãi. Các hệ thống bảo mật trên thiết bị di động chỉ giới hạn ở các chức năng bảo mật được cung cấp tích hợp trong phần cứng thiết bị. Một số ít ứng dụng phần mềm mã hóa bảo mật trên thiết bị di động có giá thành cao nhưng độ bảo mật ở mức trung bình.

<b>Với lý do trên, chúng em đã thực hiện đề tài "Nghiên cứu và xây dựng ứng </b>

<b>dụng bảo mật trên PDA" nhằm nghiên cứu, thử nghiệm về các phương pháp, thuật </b>

tốn mã hóa bảo mật đồng thời cũng nghiên cứu khả năng đưa chức năng mã hóa vào ứng dụng trên thiết bị hỗ trợ cá nhân kỹ thuật số. Dựa trên cơ sở lý thuyết đã nghiên cứu, chúng em thực hiện xây dựng bộ thư viện SPDA Cryptolib với các thuật toán được xem là mới và hiệu quả hiện nay. Bộ thư viện là công cụ giúp các lập trình viên có thể thực hiện mã hóa bảo mật trên thiết bị. Sử dụng thư viện đã xây dựng, chúng em thực hiện ứng dụng Pocket Secure Data với các chức năng giúp người dùng có thể thực hiện mã hóa, giải mã thông tin, tạo và xác nhận chữ ký điện tử một cách nhanh chóng và thuận tiện.

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Nội dung luận văn được trình bày trong 10 chương; trong đó, 6 chương đầu trình bày các vấn đề về lý thuyết mã hóa và giới thiệu về thiết bị trợ giúp cá nhân kỹ thuật số; 4 chương cuối tập trung vào bộ thư viện SPDA Cryptolib và ứng dụng Pocket Secure Data.

·<b> Chương 1. Tổng quan: Giới thiệu về mã hóa và xác định mục tiêu đề tài. </b>

·<b> Chương 2. Mã hóa quy ước: Giới thiệu tóm tắt một số phương pháp mã hóa </b>

quy ước.

·<b> Chương 3. Mã hóa khóa cơng khai.: Trình bày một số phương pháp mã </b>

hóa khóa cơng khai.

·<b> Chương 4. Các thuật toán hàm băm và chữ ký điện tử: Trình bày các </b>

thuật tốn trong chuẩn hàm băm an tồn và giới thiệu về chữ ký điện tử

·<b> Chương 5. Tổng quan về PDA và môi trường phát triển .NET Compact </b>

<b>Framework: Giới thiệu về thiết bị PDA và trình bày về môi trường phát </b>

triển .NET Compact Framework.

·<b> Chương 6. Xây dựng ứng dụng bảo mật trên PDA - vấn đề và giải </b>

<b>pháp: Trình bày các vấn đề gặp phải khi xây dựng ứng dụng bảo mật trên </b>

PDA và các giải pháp đề nghị.

·<b> Chương 7. Xây dựng bộ thư viện SPDA Cryptolib: Giới thiệu bộ thư viện </b>

SPDA Cryptolib .

·<b> Chương 8. Xây dựng ứng dụng Pocket Secure Data: Giới thiệu ứng dụng </b>

Pocket Secure Data.

·<b> Chương 9. Cài đặt và triển khai ứng dụng </b>

·<b> Chương 10. Tổng kết: Tóm tắt vấn đề đã nghiên cứu thực hiện và hướng </b>

phát triển trong tương lai.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Mục lục </b>

1.2. Mục tiêu của đề tài... 3

<b>Chương 2.Mã hóa quy ước ... 3</b>

2.1. Giới thiệu mã hóa quy ước... 3

2.1.1. Hệ thống mã hóa quy ước... 3

2.1.2. Các thuật tốn mã hóa quy ước ... 3

2.2. Các thuật toán ứng viên AES và Rijndael ... 3

2.2.1. Các thuật toán ứng viên AES ... 3

2.2.2. Thuật toán Rijndael ... 3

2.3. Đánh giá các phương pháp mã hóa quy ước... 3

<b>Chương 3.Mã hóa khóa cơng khai. ... 3</b>

3.1. Giới thiệu mã hóa khóa cơng khai ... 3

3.2. Phương pháp RSA ... 3

3.2.1. Mơ hình mã hóa dữ liệu với RSA... 3

3.2.2. Mơ hình trao đổi khóa theo RSA... 3

3.3. Phương pháp ECC (Elliptic Curve Cryptography)... 3

3.3.1. Lý thuyết Elliptic Curve ... 3

3.3.2. Áp dụng lý thuyết Elliptic Curve vào mã hóa ... 3

3.4. Đánh giá các phương pháp mã hóa khóa cơng khai ... 3

3.4.1. Ứng dụng của mã hóa khóa cơng khai ... 3

3.4.2. So sánh giữa các phương pháp mã hóa khóa cơng khai... 3

<b>Chương 4.Các thuật toán hàm băm và chữ ký điện tử... 3</b>

4.1. Các thuật toán hàm băm... 3

4.1.1. Giới thiệu hàm băm ... 3

4.1.2. Giới thiệu các chuẩn thuật toán hàm băm Secure Hash Standard(SHS) trong FIPS180-2 (02/2004) ... 3

4.1.3. Giới thiệu đề xuất hàm băm mới AES–HASH của Bram Cohen... 3

4.2. Chữ ký điện tử... 3

4.2.1. Mơ hình chữ ký điện tử theo RSA... 3

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

4.2.2. Thuật toán chữ ký điện tử DSA... 3

4.2.3. Thuật toán chữ ký điện tử trên Elliptic Curve (ECDSA) ... 3

<b>Chương 5.Tổng quan về PDA và môi trường phát triển .NET Compact Framework ... 3</b>

5.1. Tìm hiểu thiết bị PDA... 3

5.1.1. Đặc điểm của PDA ... 3

5.1.2. Các hạn chế của PDA ... 3

5.2. Tổng quan về WindowCE và Pocket PC ... 3

5.2.1. Giới thiệu hệ điều hành Windows CE ... 3

5.2.2. Giới thiệu Pocket PC ... 3

5.3. Giới thiệu .NET Compact Framework... 3

<b>Chương 6.Xây dựng ứng dụng bảo mật trên PDA - vấn đề và giải pháp .... 3</b>

6.1. Các vấn đề khi xây dựng ứng dụng bảo mật trên PDA ... 3

6.1.1. Khả năng tính tốn... 3

6.1.2. Khả năng lưu trữ... 3

6.1.3. Khả năng tương tác giữa người sử dụng và thiết bị ... 3

6.1.4. Mức độ hỗ trợ của các thư viện lập trình ... 3

6.2. Các giải pháp cụ thể... 3

6.2.1. CryptoAPI... 3

6.2.2. Xây dựng bộ thư viện SPDA Cryptolib ... 3

<b>Chương 7.Xây dựng bộ thư viện SPDA Cryptolib... 3</b>

7.1. Phát biểu bài toán... 3

7.2. Kiến trúc bộ thư viện ... 3

7.2.1. Sơ đồ kiến trúc bộ thư viện ... 3

7.2.2. Danh sách các lớp trong thư viện ... 3

<b>Chương 8.Xây dựng ứng dụng Pocket Secure Data... 3</b>

8.1. Phát biểu bài tốn... 3

8.2. Phân tích u cầu ... 3

8.2.1. Bảng chú giải ... 3

8.2.2. Các yêu cầu chức năng ... 3

8.2.3. Các yêu cầu phi chức năng ... 3

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

8.6.2. Màn hình phân hệ server ... 3

8.6.3. Màn hình phân hệ client ... 3

<b>Chương 9.Cài đặt và triển khai ứng dụng ... 3</b>

9.1. Môi trường cài đặt... 3

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Danh sách hình </b>

Hình 2-1: Mơ hình hệ thống mã hóa quy ước. ... 3

Hình 2-2: Sơ đồ quá trình mã hóa dữ liệu bằng phương pháp DES... 3

Hình 3-1: Mơ hình hệ thống mã hóa khóa cơng khai. ... 3

Hình 3-2: Một ví dụ về elliptic curve. ... 3

Hình 3-3: Điểm ở vơ cực. ... 3

Hình 3-4: Phép cộng trên elliptic curve... 3

Hình 3-5: Phép nhân đơi trên elliptic curve... 3

Hình 3-6: Mơ hình CA tập trung. ... 3

Hình 3-7: Mơ hình CA phân cấp. ... 3

Hình 3-8: Mơ hình CA Web of Trust. ... 3

Hình 3-9: So sánh mức độ bảo mật giữa ECC, RSA / DSA... 3

Hình 7-1: Class diagram của thư viện SPDA Cryptolib ... 3

Hình 8-1: Usecase diagram của ứng dụng Pocket Secure Data. ... 3

Hình 8-2: Class diagram trên phân hệ client ... 3

Hình 8-3: Class diagram trên phân hệ server. ... 3

Hình 8-4: Sơ đồ thiết kế dữ liệu của Pocket Secure Data. ... 3

Hình 8-5: Sơ đồ màn hình phân hệ server. ... 3

Hình 8-6: Sơ đồ màn hình phân hệ client. ... 3

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Hình 8-16: Màn hình Group Management. ... 3Hình 8-17: Màn hình Find Contact... 3Hình 9-1:Mơ hình cài đặt thư viện và ứng dụng. ... 3

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Danh sách bảng </b>

Bảng 2-1: Các hàm và ký hiệu sử dụng trong phương pháp Rijndael... 3

Bảng 3-1: So sánh các phép toán trên elliptic trên tọa độ Affine và tọa độ chiếu . ... 3

Bảng 3-2: So sánh kích thước khóa giữa mã hóa quy ước và mã hóa khóa cơng khai với cùng mức độ bảo mật. ... 3

Bảng 3-3: So sánh kích thước khóa RSA và ECC với cùng độ bảo mật... 3

Bảng 4-1:Các tính chất của các thuật tốn băm an tồn... 3

Bảng 7-1: Danh sách các lớp trong thư viện SPDA Cryptolib ... 3

Bảng 8-1: Danh sách các Usecase. ... 3

Bảng 8-2: Chi tiết các màn hình ở phân hệ client... 3

Bảng 9-1: Kết quả mã hóa thử nghiệm trên Desktop và PDA. ... 3

Bảng 9-2: Kết quả thử nghiệm tạo khóa RSA và ECC ... 3

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Một số khái niệm và thuật ngữ </b>

PDA Thiết bị trợ giúp cá nhân kỹ thuật số - Personal Digital Assistant.

NIST Viện Tiêu chuẩn và Công nghệ Hoa Kỳ - National Institute of Standard and Technology.

FIPS Federal Information Processing Standard Publications NSA National Security Agency.

DES Chuẩn mã hóa dữ liệu – Data Encryption Standard.

AES Chuẩn mã hóa nâng cao – Advanced Encryption Standard.

SHA Thuật toán băm an toàn – Secure Hash Algorithm. SHS Chuẩn băm an toàn – Secure Hash Standard.

ECC Phương pháp mã hóa theo đưịng cong elip - Elliptic Curve Cryptography

ECDH Elliptic Curve Diffie – Hellman.

DSA Thuật toán chữ ký điện tử - Digital Signature Algorithm. ECDSA Elliptic Curve Digital Signature Algorithm.

SSL Giao thức kết nối an tồn - Socket Secure Layer.

Khóa cơng khai Public key – khóa được cơng bố rộng rãi cho mọi người, sử dụng trong mã hóa khóa cơng khai.

Khóa riêng Private key – khóa của một cá nhân được giữ bí mật, có quan hệ với khóa cơng khai, sử dụng trong mã hóa khóa cơng khai.

Khóa bí mật Secret key – khóa quy ước sử dụng trong mã hóa quy ước.

Mã hóa quy ước Conventional cryptography - Còn gọi là mã hóa đối xứng (symmetric cryptography), hệ thống mã hóa sử dụng cùng một khóa cho mã hóa và giải mã.

Mã hóa khóa cơng khai Public key cryptography – cịn gọi là mã hóa bất đối xứng (asymmetric cryptography), hệ thống mã hóa sử dụng một cặp khóa để mã hố và giải mã.

Trao đổi khóa Key exchange – phương pháp để trao đổi các thông tin khóa bí mật giữa các đối tác.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Chữ ký điện tử Digital Signature - dãy bit phát sinh từ dữ liệu và khóa gởi kèm với dữ liệu khi trao đổi nhằm để xác nhận nguồn gốc dữ liệu, xác nhận tính tồn vẹn của dữ liệu.

ECDLP Bài toán logarit rời rạc trên Elliptic curve - Elliptic Curve Discrete Logarithm Problem.

CryptoAPI Bộ thư viện các hàm mã hóa ứng dụng trên Windows CE - Cryptographic Application Programming Interface. .NET CF .NET Compact Framework.

SPDA Security on Personal Digital Assistant.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Phần 1: </b>

<b>Mở đầu </b>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Đối tượng nghiên cứu của mật mã học là các kỹ thuật để mã hóa và bảo mật thông tin.

<i><b>1.1.2. Các định nghĩa </b></i>

<i><b>Định nghĩa 1.1: Một hệ thống mã hóa (cryptosystem) [8] là một bộ-năm (P, C, K, </b></i>

<i>E, D) thỏa mãn các điều kiện sau: </i>

<i>1. Tập nguồn P là tập hợp hữu hạn tất cả các mẩu tin nguồn cần mã hóa có thể </i>

<i>2. Tập đích C là tập hợp hữu hạn tất cả các mẩu tin có thể có sau khi mã hóa 3. Tập khóa K là tập hợp hữu hạn các khóa có thể được sử dụng </i>

<i>4. Với mỗi khóa k</i>Ỵ<i>K, tồn tại luật mã hóa e<small>k</small></i>Ỵ<i>E và luật giải mã d<small>k</small></i>Ỵ<i>D tương </i>

<i>ứng. Luật mã hóa e<small>k</small>: P </i>®<i> C và luật giải mã e<small>k</small>: C </i>®<i> P là hai ánh xạ thỏa </i>

Tính chất 4 là tính chất chính và quan trọng của một hệ thống mã hóa. Tính chất này

<i>bảo đảm việc mã hóa một mẩu tin x</i>Ỵ<i>P bằng luật mã hóa e<small>k</small></i>Ỵ<i>E có thể được giải mã </i>

<i>chính xác bằng luật d<small>k</small></i>Ỵ<i>D. </i>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<i><b>Định nghĩa 1.2: Z</b><small>m</small> được định nghĩa là tập hợp {0, 1, ..., m-1}, được trang bị phép </i>

cộng (ký hiệu +) và phép nhân (ký hiệu là ´<i>). Phép cộng và phép nhân trong Z<small>m </small></i>

<i>được thực hiện tương tự như trong Z, ngoại trừ kết quả tính theo modulo m. </i>

<i><b>1.1.3. Các loại mã hóa </b></i>

<b>1.1.3.1. Mã hóa quy ước </b>

Mã hóa quy ước (hay cịn gọi mã hóa đối xứng ) là hệ thống mã hóa sử dụng cùng một khóa gọi là khóa bí mật (secret key / symmetric key) để thực hiện mã hóa hay giải mã thông tin. Việc bảo mật thông tin tùy thuộc vào việc bảo mật khóa bí mật.

Phương pháp mã hóa quy ước DES được đưa vào sử dụng từ năm 1977 đã khơng cịn được xem là an tồn khi tốc độ xử lý tính tốn của các bộ vi xử lý ngày càng tăng nhanh chóng. Tháng 10/2000, Viện Tiêu chuẩn và Công nghệ Hoa Kỳ NIST đã công bố chuẩn mã hóa mở rộng AES và quyết định chọn thuật tốn Rijndael làm phương pháp mã hóa quy ước đại diện cho AES.

<b>1.1.3.2. Mã hóa khóa cơng khai </b>

Mã hố khóa cơng khai (hay cịn gọi mã hóa bất đối xứng) là hệ thống mã hóa sử dụng một cặp khóa để mã hóa và giải mã thơng tin. Một khóa được cơng bố rộng rãi (khóa cơng khai) để mã hóa thơng tin, khóa tương ứng cịn lại được giữ bí mật (khóa riêng ) để giải mã thơng tin.

Lợi ích lớn nhất của mã hóa khóa cơng khai chính là giúp người sử dụng tránh các rủi ro khi trao đổi khóa. Một số hệ thống mã hóa khóa cơng khai bao gồm: Diffie-Hellman (Whitfield Diffie - Martin Hellman ), RSA (Rivest – Shamir – Adleman), Elgamal (Tahel Elgamal), DSA (David Kravitz) và ECC (Neal Koblitz - Victor Miller). Trong số đó, RSA được sử dụng rộng rãi nhất và những năm gần đây, ECC đang thu hút được sự quan tâm nghiên cứu của các nhà khoa học trên thế giới.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Mã hóa khóa công khai là nền tảng của nhiều ứng dụng bảo mật có ý nghĩa quan trọng trong đời sống xã hội như: chữ ký điện tử, chứng nhận điện tử, an toàn trong truyền dữ liệu trên mạng (SSL).

<b>1.2. Mục tiêu của đề tài </b>

Ngày nay, các thiết bị trợ giúp cá nhân kỹ thuật số đang dần trở nên quen thuộc và được người sử dụng ưa chuộng. Tuy nhiên, mức độ bảo mật của các thiết bị phụ thuộc rất nhiều vào nhà cung cấp phần cứng. Dữ liệu của người sử dụng chưa được đảm bảo an toàn. Những giải pháp phầm mềm cho công việc bảo mật trên PDA hiện tại trên thế giới có chi phí rất cao cùng với độ bảo mật chỉ ở mức trung bình.

<i><b>Đề tài "Nghiên cứu và xây dựng ứng dụng bảo mật trên PDA" được thực </b></i>

hiện với mục đích tìm hiểu, nghiên cứu và thử nghiệm các phương pháp mã hóa quy ước và mã hóa khóa cơng khai cùng với các phương pháp ký và xác nhận chữ ký điện tử. Đồng thời, chúng em cũng tìm hiểu các thuật tốn mã hóa quy ước là ứng viên của chuẩn mã hóa nâng cao AES, thuật tốn mã hóa khóa cơng khai ECC và các thuật toán hàm băm mới SHA-224, AES-Hash đang nhận được sự quan tâm của các nhà khoa học trong thời gian gần đây.

Trên cơ sở lý thuyết nghiên cứu được, chúng em thực hiện xây dựng một bộ thư viện mã hóa SPDA Cryptolib trên thiết bị PDA. Bộ thư viện SPDA Cryptolib sẽ cung cấp các thuật tốn mã hóa thơng dụng và mới nhất hiện nay bên cạnh khả năng hỗ trợ lập trình trên thiết bị PDA. Sử dụng thư viện mã hóa SPDA Cryptolib, chúng em đã thực hiện ứng dụng Pocket Secure Data cung cấp các chức năng về mã hóa, chữ ký điện tử và quản lý khóa cho người sử dụng PDA. Ứng dụng sẽ hoạt động trên hai phân hệ: máy tính cá nhân để bàn và máy PDA.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>KHOA CNTT – </b>

<b>ĐH KHTN Phần 2: </b>

<b>Lý thuyết mã hoá </b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b>Chương 2. Mã hóa quy ước </b>

<i><b>Dẫn nhập: Chương 1 chúng ta đã tìm hiểu tổng quan về mật mã học, nội dung </b></i>

<i>chương 2 sẽ giới thiệu chi tiết hơn về hệ thống mã hóa quy ước với các thuật tốn mã hóa quy ước. Đặc biệt chương 2 sẽ đề cập cụ thể hơn về chuẩn mã hóa quy ước mở rộng AES và các thuật toán ứng viên của AES. Chương 2 cũng sẽ trình bày đánh giá về các phương pháp mã hóa quy ước. </i>

<b>2.1. Giới thiệu mã hóa quy ước </b>

<i><b>2.1.1. Hệ thống mã hóa quy ước </b></i>

Hệ thống mã hóa quy ước là hệ thống mã hóa trong đó quy trình mã hóa và giải mã đều sử dụng chung một khóa gọi là khóa bí mật. Việc bảo mật thơng tin phụ thuộc vào việc bảo mật khóa.

Xét mơ hình hệ thống mã hóa quy ước sau:

<b><small>Hình 2-1: Mơ hình hệ thống mã hóa quy ước. </small></b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<i>Dữ liệu nguồn x được người gởi A mã hóa bằng thuật tốn mã hóa quy ước với khóa bí mật k được thống nhất trước giữa người gởi A và người nhận B. Dữ liệu sau khi mã hóa y sẽ đuợc truyền cho người nhận B. Người nhận B sử dụng khóa bí mật k để giải mã y để có được thơng điệp nguồn x ban đầu. </i>

<i>Nếu một người C có được khóa bí mật k thì C sẽ có khả năng giải mã tất cả dữ liệu A mã hóa bằng khóa k và gởi cho B. Do đó vấn đề an tồn bảo mật thơng tin được mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa k. </i>

<i><b>2.1.2. Các thuật tốn mã hóa quy ước </b></i>

Các thuật tốn mã hóa quy ước được phân thành 2 loại: mã hóa theo ký tự và mã hóa theo khối.

·<b> Shift Cipher: Thông điệp được mã hóa bằng cách dịch chuyển (xoay vịng) </b>

<i>từng ký tự đi k vị trí trong Z</i><small>n</small><i>. Trong trường hợp đặc biệt k = 3, phương pháp </i>

Shift Cipher được gọi là phương pháp mã hóa Caesar.

·<i><b> Substitution Cipher: Khóa k </b></i>Ỵ K là tập hợp hốn vị các phần tử trong tập nguồn P. Hàm mã hóa thực hiện ánh xạ một ký tự trong thơng điệp nguồn

<i>vào khóa k. Hàm giải mã là ánh xạ ngược của hàm mã hóa. </i>

·<i><b> Affine Cipher: Khoá k là một bộ (a, b) sao cho ax + b = y (mod n) có </b></i>

<i>nghiệm duy nhất. Trong đó a và n nguyên tố cùng nhau. Gọi f(n) là số phần </i>

tử trong Z<small>n</small><i>, nguyên tố cùng nhau với n, ta có n khả năng xác định b, f(n) khả </i>

<i>năng xác định a nên không gian khóa K có n </i>´<i>f(n) phần tử. </i>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>2.1.2.2. Mã hóa theo khối </b>

Mã hóa theo khối là phương pháp chia thơng điệp cần mã hóa thành những khối thơng điệp có độ dài cố định. Một hàm mã hóa sẽ thao tác trên từng khối thơng điệp để trả về thơng điệp đã mã hóa.

·<b> Vigenere Cipher: Sử dụng từ khoá k là một dãy có m phần tử. Phương pháp </b>

Vigenere Cipher chính là áp dụng m phép Shift Cipher luân phiên nhau theo chu kỳ.

·<i><b> Hill Cipher: Mỗi phần tử x</b></i>Ỵ<i>P là một bộ m thành phần, tập nguồn P = Z</i><small>n</small> ´

Z<small>n</small><i>. Khóa k gồm m tổ hợp tuyến tính của m thành phần trong mỗi phần tử x. Như vậy khơng gian khóa K chính là tập hợp các ma trận m </i>´<i><b> m khả nghịch. </b></i>

Thao tác mã hóa là thực hiện phép nhân ma trận:

<small>1</small>, ,...,

( 2.3)

<i>với x=(x</i><small>1</small><i>, x</i><small>2</small><i>, ..., x<small>m</small></i>) Ỵ<i> P </i>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<i>Để giải mã cần tìm ma trận nghịch đảo k</i><sup>-1</sup> của khóa k và thực hiện phép tính

<i>toán sau: d<small>k</small>(y) = yk</i><sup>–1</sup>. Lưu ý là tất cả các phép toán số học đều được thực hiện trên Z<small>n</small>.

·<i><b> Permutation Cipher: Mỗi phần tử x</b></i>Ỵ<i>P là một bộ m thành phần, tập nguồn </i>

P = Z<small>n</small> ´ Z<small>n. </small><i>Khóa k </i>Ỵ<i> K là tập hợp hoán vị m thành phần trong phần tử x. Hàm mã hóa thực hiện ánh xạ một ký tự trong thơng điệp nguồn vào khóa k. </i>

Hàm giải mã là ánh xạ ngược của hàm mã hóa.

·<b> Data Encryption Standard (DES): </b>

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[20]. 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.[6]

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. Q trình mã hóa của DES có thể được tóm tắt như sau:

<i>Biểu diễn thơng điệp nguồn x</i>Ỵ<i>P bằng dãy 64bit. Khóa k có 56bit. Thực hiện mã </i>

hóa theo 3 giai đoạn:

<i>- Tạo dãy 64 bit bằng cách hoán vị x theo hốn vị IP. </i>

<i>- 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 </i>

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<sup>-1</sup> cho 64bit thu được. Kết quả

<i>cuối cùng chính là khối dữ liệu đã mã hóa y. </i>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b><small>Hình 2-2: Sơ đồ quá trình mã hóa dữ liệu bằng phương pháp DES. </small></b>

Q 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 q trình mã hóa.

Do tốc độ tính tốn của máy tính ngày càng tăng cao và DES đã được sự quan tâm chú ý của các nhà khoa học lẫn những người phá mã (cryptanalyst) nên DES nhanh chóng trở nên khơng an tồn. Năm 1997, một dự án đã tiến hành bẻ khóa DES chưa đến 3 ngày với chi phí thấp hơn 250.000 dollars. Và vào năm 1999, một mạng máy tính gồm 100.000 máy có thể giải mã một thư tín mã hóa DES chưa đầy 24 giờ.[6]

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Trong quá trình tìm kiếm các thuật tốn mới an tồn hơn DES, Tripple DES ra đời như một biến thể của DES. Tripple DES thực hiện 3 lần thuật toán DES với 3 khoá khác nhau và với trình tự khác nhau. Trình tự thực hiện phổ biến là EDE (Encrypt – Decrypt – Encrypt), thực hiện xen kẽ mã hóa với giải mã (lưu ý là khóa trong từng giai đoạn thực hiện khác nhau).

·<b> Advanced Encryption Standard (AES): </b>

Để tìm kiếm một phương pháp mã hóa quy ước mới với độ an tồ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 tốn mã hóa quy ước, sử dụng miễn phí trên tồn thế giới. Chuẩn AES bao gồm các u cầu sau[8]:

· Thuật tố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.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

· Không chứa bất kỳ phép tố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 2 lần tuyển chọn, có 5 thuật tố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 tồn cao, chi phí thực hiện thấp.

<b>2.2. Các thuật toán ứng viên AES và Rijndael </b>

<i><b>2.2.1. Các thuật toán ứng viên AES </b></i>

Quá trình mã hóa của MARS bao gồm các cơng việc:

- Cộng khóa: cộng các từ của khóa với các từ của khối dữ liệu. - 8 chu kỳ trộn tới khơng khóa.

- 8 chu kỳ trộn tới có khóa. - 8 chu kỳ trộn lùi có khóa. - 8 chu kỳ trộn lùi khơng khóa.

- Trừ khóa: trừ các từ của khóa với các từ của khối dữ liệu sau khi đã thực hiện trộn..

Quá trình giải mã của MARS là nghịch đảo của q trình mã hóa.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

SERPENT mã hóa một văn bản ban đầu P 128 bit thành một văn bản mã hóa C 128 bit qua 32 chu kỳ với sự điều khiển của 33 khóa chu kỳ 128 bit. Quy trình mã hóa SERPENT được thực hiện như sau:

· Khởi tạo và phân bố khóa ban đầu thành 33 khóa chu kỳ.

· Thực hiện phép hốn vị đầu

· Thực hiện 32 chu kỳ, mỗi chu kỳ bao gồm một phép trộn khóa, một lần áp dụng các S–box và một phép biến đổi tuyến tính (cho tất cả các chu kỳ trừ chu kỳ cuối). Ở chu kỳ cuối cùng, phép biến đổi tuyến tính này được thay thế bằng một phép trộn khóa

· Thực hiện phép hốn vị cuối.

Q trình giải mã SERPENT sử dụng các Sbox nghịch đảo, thực hiện các phép biến đổi tuyến tính nghịch đảo và các khóa chu kỳ được sử dụng cũng theo thứ tự ngược lại.

<b>2.2.1.3. RC6 </b>

Thuật toán RC6 được đề xuất bởi Phòng thí nghiệm RSA (RSA Laboratories), của các tác giả Ronald L. Rivest, Matt Robshaw, Ray Sidney, Yiqun Lisa Yin.[11]

<i>RC6 sử dụng các tham số hệ thống w bit từ, r chu kỳ mã hóa và kích thước khóa b (tính theo đơn vị byte). Tuy nhiên để phù hợp với các tiêu chuẩn của AES, RC6 chọn giá trị các tham số là w = 32, r = 20 và b = 16 / 24 / 32 bytes. </i>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

·<i> Cộng khóa chu kỳ S[0] và S[1] vào các từ B, C. </i>

· Thực hiện 20 chu kỳ mã hóa gồm các phép toán quay trái, phép cộng, nhân và xor giá trị từ.

·<i> Cộng khóa chu kỳ S[2r + 2] và S[2r + 3] vào các từ A, D. </i>

Quy trình giải mã của RC6 là nghịch đảo của quy trình mã hóa.

<b>2.2.1.4. TWOFISH </b>

Thuật toán TWOFISH được đề xuất bởi Counterpane Systems, của các tác giả Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall and Niels Ferguson.[11]

TWOFISH được thiết kế để thỏa mãn các tiêu chuẩn của AES. TWOFISH hỗ trợ kích thước khóa tối đa 256 bit.

Tóm tắt quy trình mã hóa TWOFISH:

· Khởi tạo và phân bố khóa: tạo 40 khóa chu kỳ và 4 Sbox, các Sbox phụ thuộc khóa.

· Input Whitening: Khối dữ liệu ban đầu đựợc chia thành 4 từ 32 bit A,B,C,D. Thực hiện XOR 4 khóa chu kỳ đầu tiên với A, B, C, D.

· Thực hiện 16 vòng lặp, trong mỗi vòng lặp thực hiện các thao tác XOR, quay trái, quay phải dữ liệu đồng thời sử dụng các Sbox phụ thuộc khóa.

· Output Whitening: XOR các từ dữ liệu với 4 khóa chu kỳ mở rộng.

Quy trình mã hóa và giải mã của thuật toán TWOFISH tương tự như nhau. Tuy nhiên, quy trình giải mã địi hỏi áp dụng các khóa chu kỳ theo thứ tự đảo ngược.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<i><b>2.2.2. Thuật tốn Rijndael </b></i>

Tháng 11/2001, NIST cơng bố tài liệu FIPS-197, cơng nhận Rijndael là thuật tốn đại diện cho chuẩn mã hóa mở rộng AES.[17] Rijndael đã vượt qua 4 thuật toán ứng viên còn lại (RC6, MARS, SERPENT, TWOFISH) để trở thành chuẩn mã hóa quy ước mới nhất hiện nay. Thuật tốn Rijndael do hai nhà khoa học Vincent Rijmen và Joan Daeman cung cấp.

Phương pháp Rijndael mã hóa theo khối. Kích thước khối và kích thước khóa thay đổi linh hoạt 128, 192, 256 bit nhờ vậy Rijndael thích hợp với nhiều hệ thống mã hóa khác nhau từ các máy tính cá nhân đến smart-cards.

Thuật tốn Rijndael được xem là thuật tốn có độ an tồn rất cao và có nhiều ưu điểm nhưng với sự phát triển mạnh mẽ của ngành cơng nghiệp máy tính khơng loại trừ nguy cơ thuật tốn Rijndael bị phá vỡ. Do đó hiện nay các nhà khoa học đang tìm cách cải tiến mở rộng thuật tốn Rijndael để tăng độ an tồn. Các phiên bản mở rộng 256/384/512-bit[1][2][3][4][5] và phiên bản mở rộng 512/768/1024-bit đều được xây dựng trên cở sở lý thuyết của thuật toán Rijndael nguyên thủy nhưng có khả năng xử lý khóa và khối dữ liệu lớn hơn nhiều lần so với phiên bản gốc.[7]

Đơn vị thông tin được xử lý trong thuật tốn Rijndael là byte. Mỗi byte có thể được biểu diễn bằng nhiều cách khác nhau: dạng nhị phân

<i>({b</i><small>7</small><i>b</i><small>6</small><i>b</i><small>5</small><i>b</i><small>4</small><i>b</i><small>3</small><i>b</i><small>2</small><i>b</i><small>1</small><i>b</i><small>0</small><i>}), dạng thập lục phân ({h</i><small>1</small><i>h</i><small>0</small>}) hay dạng đa thức có các hệ số nhị phân

å

<i><small>iiixb</small></i> .

Các thao tác tính tốn của thuật tốn AES được thực hiện trên các ma trận hai

<i><b>chiều gọi là trạng thái (state). Mỗi state gồm 4 hàng Nb cột trong đó Nb là kết quả </b></i>

<i>của phép chia kích thước khối dữ liệu cho 32. Đối với AES, Nb = 4. </i>

<i>Khóa cũng được biểu diễn dưới dạng ma trận hai chiều gồm 4 hàng Nk cột trong đó Nk là kết quả chia kích thước khóa cho 32. Mỗi chu kỳ mã hóa / giải mã sử dụng một khóa phát sinh từ khóa chính gọi là khóa chu kỳ. Có tất cả Nr + 1 khóa </i>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

chu kỳ. Hàm phát sinh bảng mã khóa mở rộng (KeyExpansion) phụ thuộc vào

<i>giá trị Nk, chi tiết hàm KeyExpansion được mô tả trong phụ lục A. </i>

<b>Ý nghĩa </b>

<b>Phiên bản nguyên thủy Phiên bản mở rộng </b>

1 <i>AddRoundKey Thực hiện việc cộng mã khóa của chu kỳ vào trạng thái </i>

hiện hành.

2 <i>SubBytes </i> Thay thế phi tuyến từng byte trong trạng thái hiện hành. Dùng bảng thay thế SBox.

3 <i>InvSubBytes </i> Phép biến đổi ngược của SubBytes.

4 <i>MixColumns </i> Trộn thông tin từng cột trong trạng thái hiện hành. 5 InvMixColumn

<i>s </i>

Phép biến đổi ngược của MixColumn.

6 ShiftRows Dịch chuyển xoay vòng từng dòng của trạng thái hiện hành với di số tương ứng khác nhau.

7 <i>InvShiftRows </i> Phép biến đổi ngược của ShiftRows.

Mã khóa chính. Được biểu diễn bằng ma trận: 8 <i>K </i>

<i>Nb = độ dài khối / 32 Nb = độ dài khối / 64 </i>

Số lượng các từ 32bit trong Mã khóa chính K.

<i>Nk</i>Ỵ{4,6,8} 10 <i>Nk </i>

<i>Nk = Độ dài khóa / 32 Nk = Độ dài khóa / 64 </i>

11 <i>Nr Số lượng chu kỳ. Nr = max(Nb, Nk) + 6 </i>

12 <i>RotWord </i> Dịch chuyển xoay vòng 4 bytes thành phần của từ 32 bit. 13 <i>SubWord </i> Nhận vào một từ 4 byte. Áp dụng phép thay thế dựa vào

SBox cho từng byte. Trả về từ 4 byte đã được thay thế. 14 <i>XOR </i> Phép toán Exclusive-OR

15 Å Phép toán Exclusive-OR

16 Ä <i>Phép nhân 2 đa thức (bậc < 4) modulo cho đa thức x</i><sup>4</sup>+1. 17 · Phép nhân trên trường hữu hạn.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b><small>Bảng 2-1: Các hàm và ký hiệu sử dụng trong phương pháp Rijndael. </small></b>

<b>2.2.2.1. Quy trình mã hóa Rijndael: </b>

· Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ mã hóa.

<small>·</small> <i>Nr–1 chu kỳ mã hóa bình thường: mỗi chu kỳ bao gồm 4 bước biến đổi liên </i>

tiếp nhau: SubBytes, ShiftRows, MixColumns, và AddRoundKey.

· Thực hiện chu kỳ mã hóa cuối cùng: trong chu kỳ này thao tác MixColumns được bỏ qua.

v Thuật tốn mã hóa Rijndael :

·<i><b> Dữ liệu vào: </b></i>

inputBlock: khối dữ liệu cần mã hóa.

inputBlockSize: kích thước khối dữ liệu cần mã hóa.

cipherKey: khóa chính.

cipherKeySize: kích thước khóa chính.

·<i><b> Dữ liệu ra: </b></i>

outputBlock: khối dữ liệu đã được mã hóa.

<b><small>Thuật toán 2.1: Thuật toán mã hoá theo phương pháp Rijndael. </small></b>

state = inputBlock

cycleCount = max(inputBlockSize, cipherKeySize) + 6 AddRoundKey(state, createCycleKey(cipherKey, 1)) For i = 1 to cycleCount - 1 do

SubBytes(state) ShiftRows(state) MixColumns(state)

AddRoundKey(state, createCycleKey(cipherKey, i)) end for

SubBytes(state) ShiftRows(state)

AddRoundKey(state, createCycleKey(cipherKey, cycleCount)) outputBlock = state

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b>2.2.2.2. Quy trình giải mã Rijndael </b>

Quy trình giải mã có thể được thực hiện theo với trình tự các phép biến đổi

<i><b>ngược hồn tồn tương đương với quy trình mã hóa[8]. Các thao tác ShiftRows, </b></i>

MixColumns, SubBytes lần lượt được thay thế bằng các thao tác InvShiftRows, InvMixColumns, InvSubBytes.

Quá trình giải mã được tóm tắt như sau:

· Thực hiện AddRoundKey

· Thực hiện Nr-1 chu kỳ giải mã bình thường, mỗi chu kỳ gồm 4 bước biến đổi liên tiếp sau: InvShiftRows, InvSubBytes, AddRoundKey, InvMixColumns.

· Thực hiện chu kì mã hóa cuối cùng, giống Nr-1 chu kỳ trên nhưng bỏ qua bước InvMixColumns.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

v Thuật toán giải mã Rijndael

·<i><b> Input: </b></i>

inputBlock: khối dữ liệu cần giải mã.

inputBlockSize: kích thước khối dữ liệu cần giải mã.

cipherKey: khóa chính.

cipherKeySize: kích thước khóa chính.

·<i><b> Output: </b></i>

outputBlock: khối dữ liệu đã được giải mã.

<b><small>Thuật toán 2.2: Thuật toán giải mã theo phương pháp Rijndael. </small></b>

<b>2.2.2.3. Đánh giá phương pháp Rijndael </b>

Phương pháp Rijndael có các ưu điểm sau[8]:

· Mã chương trình ngắn gọn, ít tốn bộ nhớ nên dễ dàng áp dụng vào các thiết bị có lượng bộ nhớ giới hạn như thẻ thơng minh.

· Q trình mã hóa và giải mã có thể chạy tốt trên các hệ thống xử lý song song.

· Kích thước khối dữ liệu linh hoạt 128 / 192 / 256 bit, có thể thay đổi cho phù hợp từng hệ thống cụ thể

state = inputBlock

cycleCount = max(inputBlockSize, cipherKeySize) + 6

AddRoundKey(state, createCycleKey(cipherKey, cycleCount)) For i = cycleCount - 1 to 1 do

InvShiftRows(state) InvSubBytes(state)

AddRoundKey(state, createCycleKey(cipherKey, i)) MixColumns(state)

end for

InvShiftRows(state) InvSubBytes(state)

AddRoundKey(state, createCycleKey(cipherKey, 1)) outputBlock = state

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

.Phương pháp Rijndael vẫn còn một số hạn chế:

· Thời gian giải mã dài hơn thời gian mã hóa.

· Bảng Sbox của q trình giải mã và q trình mã hóa khác nhau nên cần tốn bộ nhớ để lưu.

· Không tận dụng được các đoạn mã của quá trình mã hóa vào q trình giải mã. Điều này dẫn đến hạn chế khi cài đặt phương pháp Rijndael sử dụng phần cứng thiết bị.

<b>2.3. Đánh giá các phương pháp mã hóa quy ước </b>

Mã hóa quy ước sử dụng cùng một khóa để mã hóa và giải mã thơng tin, do đó để đảm bảo bảo mật thơng tin chỉ những người có liên quan mới được biết khóa bí mật. Mặc dù hệ thống mã hóa quy ước cung cấp khá nhiều thuật tốn mã hóa có độ bảo mật rất cao nhưng mã hóa quy ước có các hạn chế sau:

· Hạn chế về khả năng trao đổi khóa: Do khóa để giải mã và mã hóa cần phải được biết giữa người gởi và người nhận thông tin nên phát sinh vấn đề an tồn khi truyền khóa. Nếu khóa quy ước bị lấy cắp trong quá trình truyền khóa thì thơng tin được mã hóa bằng khóa đó khơng cịn được bảo mật an tồn. Ngồi ra với mã hóa quy ước khơng thể đảm bảo nguồn gốc thông tin được gởi đến do không thể biết được khóa có bị mất cắp hay khơng.

· Hạn chế về khả năng quản lý khóa: Đối với từng người cần liên lạc và với từng nội dung thơng tin cần phải có một khóa quy ước để mã hóa và giải mã. Do đó nếu trên một mạng liên lạc lớn, số lượng khóa cần phải lưu giữ rất nhiều nên nảy sinh vấn đề quản lý khóa quy ước và bảo mật thiết bị lưu trữ khóa quy ước.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b>Chương 3. Mã hóa khóa cơng khai. </b>

<i><b>Dẫn nhập: Chương 3 giới thiệu về hệ thống mã hóa khóa cơng khai với hai thuật </b></i>

<i>tốn mã hố khóa cơng khai RSA và ECC. Chương 3 đề cập đến lý thuyết tốn học nền tảng của phương pháp mã hóa cơng khai Elliptic Curve cùng với việc ứng dụng lý thuyết này vào mã hóa. Chương 3 cũng trình bày phần đánh giá, so sánh và ứng dụng của các phương pháp mã hóa khóa cơng khai. </i>

<b>3.1. Giới thiệu mã hóa khóa cơng khai </b>

<i>Vấn đề phát sinh trong mã hóa quy ước là việc quy ước chung khóa bí mật k </i>

giữa người gởi A và người nhận B. Như vậy, bài toán bảo mật dữ liệu sẽ được đưa

<i>về bài tốn bảo mật khóa bí mật k khi liên lạc truyền khóa giữa A và B. Tuy nhiên, rất khó có thể bảo đảm được sự an tồn của kênh liên lạc nên khóa k vẫn có thể bị </i>

phát hiện bởi người C.

Ý tưởng về khóa cơng khai được Martin Hellman, Ralph Merkle, and Whitfield Diffie tại Đại học Stanford vào năm 1976. Một hệ thống khóa cơng khai sử dụng hai loại khóa trong cùng một cặp khóa: khóa cơng khai được cơng bố rộng rãi và được sử dụng trong mã hóa thơng tin, khóa bí mật chỉ do một người nắm giữ và được sử dụng để giải mã thông tin đã được mã hóa bằng khóa cơng khai. Các

<i>phương pháp mã hóa này khai thác những ánh xạ f mà việc thực hiện ánh xạ ngược </i>

<i>f </i><sup>–1</sup><i> rất khó so với việc thực hiện ánh xạ f.[8] </i>

<i>Năm 1977, trên báo "The Scientific American"</i><small>, </small>Ronald L. Rivest, Adi Shamir và Leonard M. Adleman đã giới thiệu phương pháp RSA là một phương pháp mã hóa khóa cơng khai sử dụng trong mã hóa và chữ ký điện tử. RSA nhanh chóng trở thành chuẩn mã hóa khóa cơng khai trên tồn thế giới do tính an tồn và khả năng ứng dụng của nó.

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Xét mơ hình mã hóa khóa cơng khai sau:

<b><small>Hình 3-1: Mơ hình hệ thống mã hóa khóa cơng khai. </small></b>

<i>Người gởi A sử dụng khóa cơng khai pk của người nhận B để mã hóa dữ liệu gốc x. Dữ liệu sau khi được mã hóa y được truyền cho B. Người nhận B sau khi nhận được y sẽ sử dụng khóa riêng sk của mình để giải mã dữ liệu và nhận lại dữ liệu nguồn x ban đầu. </i>

<i>Nếu một người C có được dữ liệu đã mã hóa y và khóa cơng khai pk thì C vẫn khơng thể giải mã được y. Do khóa riêng sk được giữ bí mật hồn tồn, chỉ có người B biết được sk và sk không được giao dịch hay truyền đi nên rủi ro dẫn đến việc khóa riêng sk bị đánh cắp là rất thấp. Đây chính là ưu điểm nổi bật của mã hóa khóa </i>

cơng khai.

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

v Q trình tạo khóa cơng khai như sau:

· Tạo ngẫu nhiên hai giá trị số nguyên tố lớn khác nhau p và q.

·<i> Tính giá trị n = p´q và f(n) = (p–1) (q–1). </i>

·<i> Chọn số mũ công khai e (1 < e < f(n)) nguyên tố cùng nhau với f(n). </i>

·<i> Tính số mũ bí mật d sao cho e</i>´<i>d </i>º 1 (mod <i>f(n)). </i>

·<i> Giá trị khóa cơng khai chính là (n, e). Giá trị khóa riêng là d. </i>

trong đó :

<i>n </i> RSA modulus.

<i>e </i> số mũ mã hóa (encryption exponent)

<i>d </i> số mũ giải mã (decryption exponent)

<i>Nếu hệ thống RSA sử dụng số n có chiều dài k bit thì được gọi là hệ thống RSA </i>

k-bit.

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<i><b>3.2.1. Mơ hình mã hóa dữ liệu với RSA </b></i>

<i>Gọi (n, e) là khóa cơng khai, d là khóa riêng của người nhận B. Người gởi A có nhu cần mã hóa và gởi thơng điệp m cho người nhận B. </i>

v Q trình mã hóa:

· A nhận giá trị khóa cơng khai của B

·<i> Biểu diễn thông điệp m dưới dạng một số nguyên trong khoảng [0..n-1]. Nếu thông điệp m q dài, chia m thành từng khối có kích thước phù hợp để mã </i>

hóa.

·<i> Tính giá trị c = m<sup>e</sup> mod n. </i>

·<i> A chuyển thông điệp đã mã hóa c cho B </i>

v Quá trình giải mã:

·<i> B nhận thơng điệp c đã mã hóa. </i>

·<i> Sử dụng khóa riêng d để tính giá trị m = c<small>d</small> mod n. </i>

<i><b>3.2.2. Mơ hình trao đổi khóa theo RSA </b></i>

Một trong những ứng dụng của phương pháp RSA là dùng nó trong việc trao đổi khóa. Trong mơ hình này, giả sử A cần trao đổi khóa bí mật K với B, A sẽ tiến hành các bước như sau:

· A nhận khóa cơng khai (n, e) từ B.

· A dùng khóa cơng khai này để mã hóa khóa bí mật K bằng phương pháp RSA:

<i>Y</i> = <i>Kn</i>

· Khóa bí mật đã được mã hóa Y được chuyển cho B.

· B dùng khóa riêng d để giải mã Y bằng phương pháp RSA: mod

<i>K Y</i>= <i>n</i>

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b>3.3. Phương pháp ECC (Elliptic Curve Cryptography) </b>

<i><b>3.3.1. Lý thuyết Elliptic Curve </b></i>

Hệ thống mã hóa khóa cơng khai dựa trên việc sử dụng các bài tốn khó giải quyết. Vấn đề khó ở đây chính là việc số lượng phép tính cần thiết để tìm ra một lời giải cho bài tốn là rất lớn. Trong lịch sử 20 năm của ngành mã hóa quy ước đã có nhiều đề xuất khác nhau cho dạng bài tốn như vậy, tuy nhiên chỉ có hai trong số các đề xuất đó cịn tồn tại vững đến ngày này. Hai bài tốn đó bao gồm: bài toán logarit rời rạc (The discrete logarithm problem) và bài tốn phân tích thừa số của số ngun.

Cho đến năm 1985, hai nhà khoa học Neal Koblitz và Victor S. Miller đã độc lập nghiên cứu và đưa ra đề xuất ứng dụng lý thuyết toán học elliptic curve (đường cong elip) trên trường số hữu hạn (finite field)[21].

Elliptic curve – cũng như đại số hình học – được nghiên cứu rộng rãi trong vịng 150 năm trở lại đây và đã đạt được một số lý thuyết có giá trị.<sup>1</sup> Elliptic Curve

<i>được phát hiện lần đầu vào thế kỷ 17 dưới dạng công thức Diophantine:y</i><sup>2</sup><i> – x</i><sup>3</sup><i> = c với c </i>Ỵ Z.

Tính bảo mật của hệ thống mã hóa sử dụng elliptic curve dựa trên điểm mấu chốt là độ phức tạp của bài toán logarit rời rạc trong hệ thống đại số. Trong suốt 10 năm gần đây, bài toán này nhận được sự quan tâm chú ý rộng rãi của các nhà toán học hàng đầu trên thế giới. Khơng giống như bài tốn logarit rời rạc trên trường hữu hạn hoặc bài toán phân tích thừa số của số nguyên, bài toán logarit rời rạc trên elliptic curve chưa có thuật tốn nào có thời gian thực hiện nhỏ hơn cấp lũy thừa. Thuật toán tốt nhất được biết cho đến hôm nay tốn thời gian thực hiện cấp lũy thừa.[22]

Nội dung phần này đề cập đến một số lý thuyết về elliptic curve.

<small>1 class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b>3.3.1.1. Công thức Weierstrasse và Elliptic curve </b>

Gọi K là một trường hữu hạn hoặc vô hạn. Một đường cong elliptic curve được định nghĩa trên trường K bằng công thức Weierstrass:

<i>y</i><sup>2 </sup><i>+ a</i><small>1</small><i>xy + a</i><small>3</small><i>y = x</i><sup>3</sup><i> + a</i><small>2</small><i>x</i><sup>2</sup><i> + a</i><small>4</small><i>x + a</i><small>6 </small> ( 3.1)

<i>trong đó a</i><small>1</small><i>, a</i><small>2</small><i>, a</i><small>3</small><i>, a</i><small>4</small><i>, a</i><small>6</small> Ỵ K.

Elliptic curve trên trường K được ký hiệu E(K). Số lượng các điểm nguyên trên E ký hiệu là #E(K), có khi chỉ đơn giản là #E. Đối với từng trường khác nhau, cơng thức Weierstrass (1) có thể được biến đổi và đơn giản hóa thành các dạng khác nhau. Một đường elliptic curve là tập hợp các điểm thỏa công thức ( 3.1)

<b><small>Hình 3-2: Một ví dụ về elliptic curve. </small></b>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

<b>3.3.1.2. Elliptic Curve trên trường R<sup>2</sup></b>

<i>Elliptic curve E trên trường số thực R là tập hợp các điểm dưới dạng (x, y) với x, y, a</i><small>4</small><i>,a</i><small>6</small>Ỵ R thoả mãn công thức: <i>y</i><sup>2</sup><i> = x</i><sup>3</sup><i> + a</i><small>4</small><i>x + a</i><small>6 </small> ( 3.2) cùng với một điểm đặc biệt O được gọi là điểm tại vô cực (cũng là phần tử identity). Cặp giá trị x, y đại diện cho một điểm trên elliptic curve và tạo nên mặt phẳng tọa độ 2 chiều (affine) R´R. Elliptic curve E trên R<sup>2</sup> được gọi là định nghĩa trên R, ký hiệu là E(R). Elliptic curve trên số thực có thể dùng để thể hiện một nhóm (E(R), +)

<i>bao gồm tập hợp các điểm (x, y) </i>Ỵ R ´ R với phép cộng + trên E(R).

<i><b>3.3.1.2.1. Phép cộng </b></i>

Phép cộng điểm (ESUM, cũng được gọi là phép cộng curve) được định nghĩa

<i>trên tập E(R) của các điểm (x, y). Điểm tại vô cực O là điểm cộng với bất kỳ điểm </i>

nào cũng sẽ ra chính điểm đó.

Như vậy,."<i> P = (x, y) </i>Ỵ E(R), P + O = O + P = P:

"<i> P(x, y) </i>Ỵ<i> E(R) : ±y = x</i><small>3</small> +<i>a</i><sub>4</sub><i>x</i>+<i>a</i><sub>6</sub> <sub> </sub> ( 3.3)

<i>Như vậy, với 1 giá trị x ta sẽ có 2 giá trị toạ độ y. </i>

<i>Điểm (x, -y) ký hiệu là -P</i>ỴE(R), được gọi là điểm đối của P với:

<i>P + (- P) = (x, y) + (x, -y) = O </i> ( 3.4)

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<b><small>Hình 3-4: Phép cộng trên elliptic curve. </small></b>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<b>KHOA CNTT – </b>

<b>ĐH KHTN </b>

Để tìm điểm R, ta nối R và Q bằng đường thẳng L. Đường thẳng L sẽ cắt E

<i>tại 3 điểm P, Q và -R(x, y). Điểm R(x, -y) sẽ có tung độ là giá trị đối của y. </i>

Thể hiện phép cộng elliptic curve dưới dạng đại số, ta có:

<i>P = (x</i><small>1</small><i>, y</i><small>1</small>)

<i>Q = (x</i><small>2</small><i>, y</i><small>2</small>) ( 3.5)

<i>R = P + Q = (x</i><small>3</small><i>, y</i><small>3</small>) trong đó P, Q, R Ỵ E(R) và:

x<small>3</small> = <i>q</i><small>2</small><i> – x</i><small>1</small><i> – x</i><small>2</small>

<i>y</i><small>3</small> = <i>q (x</i><small>1</small><i> + x</i><small>3</small><i>) – y</i><small>1 </small> ( 3.6)

<i>q</i> =

nếu P ≠ Q ( 3.7)

<i>hoặc q</i> =

<i>yax</i> +

nếu P = Q ( 3.8) v Thuật tốn cộng elliptic curve có thể được thể hiện như sau:

<b><small>Thuật toán 3.1: Thuật toán cộng điểm Elliptic Curve. </small></b>

INPUT: Đường elip E(R)với các tham số a<small>4</small>, a<small>6</small> Ỵ E(R) , Điểm P = (x<small>1</small>, y<small>1</small>)ỴE(R) và Q = (x<small>2</small>, y<small>2</small>)ỴE(R) OUTPUT: <i> R=P+Q, R = (x</i><small>3</small>, y<small>3</small>)ỴE(R)

<small>1. </small>Nếu<small> </small>P = O<small> , </small>thì<small> </small>R < - Q<small> </small>và trả về giá trị<small> R </small>

2. Nếu Q = O , thì R <- P và trả về giá trị R 3. Nếu x<small>1</small> = x<small>2</small> thì

3.1 Nếu y<small>1</small> = y<small>2</small> thì

q <-

<i>yax</i> +

3.2 Ngược lại nếu y<sub>1</sub> = - y<sub>2</sub> thì R <- O và trả về R, Ngược lại

q <-

4. x<small>3</small> = q<small>2</small> – x1 – x2 5. y<small>3</small> = q(x<small>1</small> + x<small>3</small>) – y1

6. Trả về(x<small>3</small>, y<small>3</small>) = R

</div>

×