Lời cảm ơn

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 toà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 quý thầy cô và các bạn.

Tp. H ồ Chí Minh, 07/2004

Nhóm sinh viên th ực hiện

i

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

Lời mở đầu

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.

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

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

toá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

ii

tử một cách nhanh chóng và thuận tiện.

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.

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

• 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

quy ước.

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

hóa khóa công khai.

• 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

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

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

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

triển .NET Compact Framework.

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

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

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

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

SPDA Cryptolib .

• Chương 8. Xây d ựng ứng dụng Pocket Secure Data : Giới thiệu ứng dụng

Pocket Secure Data.

• Chương 9. Cài đặt và triển khai ứng dụng

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

iii

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

Mục lục

Trang

iv

Lời cảm ơn ............................................................................................................... i Lời mở đầu ..............................................................................................................ii Mục lục .............................................................................................................iv Danh sách hình........................................................................................................vii Danh sách bảng........................................................................................................ix Một số khái niệm và thuật ngữ ................................................................................ x Chương 1. Tổng quan............................................................................................ 2 1.1. Giới thiệu..................................................................................................... 2 1.1.1. Khái niệm mật mã học.......................................................................... 2 1.1.2. Các định nghĩa...................................................................................... 2 1.1.3. Các loại mã hóa.................................................................................... 3 1.2. Mục tiêu của đề tài....................................................................................... 3 Chương 2. Mã hóa quy ước.................................................................................. 3 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 toá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 Chương 3. Mã hóa khóa công khai...................................................................... 3 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 So sánh giữa các phương pháp mã hóa khóa công khai....................... 3 3.4.2. Chương 4. Các thuật toán hàm băm và chữ ký điện tử..................................... 3 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

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

8.4.1. 8.4.2.

v

Chương 5. Tổng quan về PDA và môi trường phát triển .NET Compact Framework .............................................................................................................. 3 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 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 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 toá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 Chương 7. Xây dựng bộ thư viện SPDA Cryptolib............................................ 3 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 Chương 8. Xây dựng ứng dụng Pocket Secure Data.......................................... 3 8.1. Phát biểu bài toán......................................................................................... 3 8.2. Phân tích yê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 8.3. Sơ đồ Usecase.............................................................................................. 3 8.3.1. Một số đặc tả Usecase chính................................................................ 3 8.3.2. Một số sơ đồ tuần tự chính................................................................... 3 8.4. Sơ đồ lớp...................................................................................................... 3 Phân hệ client....................................................................................... 3 Phân hệ server....................................................................................... 3 8.5. Thiết kế dữ liệu............................................................................................ 3 8.5.1. Sơ đồ dữ liệu......................................................................................... 3 8.5.2. Mô tả dữ liệu......................................................................................... 3 8.5.3. Ràng buộc toàn vẹn.............................................................................. 3 8.6. Thiết kế giao diện......................................................................................... 3 Sơ đồ màn hình..................................................................................... 3 8.6.1.

10.1. 10.2.

vi

8.6.2. Màn hình phân hệ server...................................................................... 3 8.6.3. Màn hình phân hệ client....................................................................... 3 Chương 9. Cài đặt và triển khai ứng dụng......................................................... 3 9.1. Môi trường cài đặt........................................................................................ 3 9.2. Mô hình cài đặt............................................................................................ 3 9.3. Kết quả thử nghiệm...................................................................................... 3 Chương 10. Tổng kết............................................................................................... 3 Kết luận.................................................................................................... 3 Hướng phát triển...................................................................................... 3 Phụ lục .............................................................................................................. 3 Tài liệu tham khảo.................................................................................................... 3

Danh sách hình

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

Hình 8-7: Màn hình chính Server............................................................................... 3

Hình 8-8: Màn hình User Registration....................................................................... 3

Hình 8-9: Màn hình User Management...................................................................... 3

Hình 8-10: Màn hình Server Settings......................................................................... 3

Hình 8-11: Màn hình chính Client.............................................................................. 3

Hình 8-12: Màn hình Cipher....................................................................................... 3

Hình 8-13: Màn hình KeyExchange........................................................................... 3

Hình 8-14:Màn hình Signature................................................................................... 3

vii

Hình 8-15: Màn hình Key Generator.......................................................................... 3

Hình 8-16: Màn hình Group Management................................................................. 3

Hình 8-17: Màn hình Find Contact............................................................................. 3

viii

Hình 9-1:Mô hình cài đặt thư viện và ứng dụng........................................................ 3

Danh sách bảng

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 toán băm an toà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

ix

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

Một số khái niệm và thuật ngữ

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

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

FIPS Federal Information Processing Standard Publications

NSA National Security Agency.

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

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

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

ẩn băm an toàn – Secure Hash Standard. SHS Chu

ương pháp mã hóa theo đưòng cong elip - Elliptic ECC Ph 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 toà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ã hoá và giải mã.

x

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.

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 toà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.

xi

SPDA Security on Personal Digital Assistant.

Phần 1:

Mở đầu

1

Chương 1 Tổng quan

Chương 1.

Tổng quan

1.1. Gi ới thiệu

1.1.1. Khái niệm mật mã học

Mật mã học là ngành khoa h ọc ứng dụng toán học vào việc đảm bảo an toàn

thông tin. Mật mã học giữ vai trò quan tr ọng và có nhi ều ứng dụng trong đời sống

xã hội từ lĩnh vực an ninh quân sự , đến các lĩnh vực dân sự như kinh tế, ngân hàng,

thương mại....

Đố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.

1.1.2. Các định nghĩa

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

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

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 ể

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

4. Với mỗi khóa k˛ K, tồn tại lu ật mã hóa ek˛ E và lu ật gi ải mã dk˛ D tương

P là hai ánh x ạ th ỏa ứng. Lu ật mã hóa ek: P fi C và lu ật gi ải mã ek: C fi

mãn

)

(

( ) d exxx P="

,

k

k

˛ ( 1.1)

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 bảo đảm việc mã hóa một mẩu tin x˛ P bằng luật mã hóa ek˛ E có thể được giải mã chính xác bằng luật dk˛ D.

2

Chương 1 Tổng quan

Định nghĩa 1.2: Zm được định nghĩa là tập hợp {0, 1, ..., m-1}, được trang bị phép cộng (ký hi ệu +) và phép nhân (ký hi ệu là · ). Phép c ộng và phép nhân trong Zm

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

1.1.3. Các loại mã hóa

1.1.3.1. Mã hóa quy ước

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 toàn khi t ốc độ xử lý tính toá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 toán

Rijndael làm phương pháp mã hóa quy ước đại diện cho AES.

1.1.3.2. Mã hóa khóa công khai

Mã hoá 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ế

3

giới.

Chương 1 Tổng quan

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).

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

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.

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

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 toán mã hóa quy ước là ứng

viên của chuẩn mã hóa nâng cao AES, thu ật toá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 toá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

4

trên hai phân hệ: máy tính cá nhân để bàn và máy PDA.

Phần 2:

Lý thuyết

mã hoá

5

Chương 2 Mã hóa quy ước

Chương 2. Mã hóa quy ước

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

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 toá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.

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

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

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:

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

6

Chương 2 Mã hóa quy ước

Dữ liệu nguồn x được người gởi A mã hóa b ằng thuật toá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.

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 toà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.

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

Các thuật toá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.

2.1.2.1. Mã hóa theo ký t ự

Mã hóa theo ký t ự là ph ương pháp mã hóa b ằng cách thay th ế từng ký t ự

trong thông điệp nguồn thành một ký tự khác trong tập ký tự mã hóa.

Dạng mã hóa quy ước theo ký t ự đã xuất hiện từ thời đế chế La mã d ưới sự

chỉ huy c ủa Caesar. M ột số ph ương pháp mã hóa theo ký t ự được bi ết đến bao

gồm[8]:

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

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

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

• Substitution Cipher : Khóa k ˛ K là t ập hợp hoá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

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

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

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

7

tử trong Zn, nguyên tố cùng nhau với n, ta có n khả năng xác định b, f(n) khả năng xác định a nên không gian khóa K có n · f(n) phần tử.

Chương 2 Mã hóa quy ước

Giá trị y = ax + b chính là d ữ liệu sau khi mã hóa c ủa x tương ứng. Để giải mã, cần tìm giá trị a-1 ˛ Z sử dụng thuật toán Euclid mở rộng. Do đó:

= (a-1(y – b)) mod n. ( 2.1) x

• Multiplicative Cipher: Cho P = C = Zn, K = {k ˛ Zn: gcd(k, n) = 1}.

Với mỗi khóa k˛ Zn, định nghĩa:

ek(x) = kx mod n và dk(y) = k–1y mod n với x, y ˛ Zn ( 2.2)

Các phương pháp mã hóa quy ước theo ký t ự đơn giản, có không gian khóa t ương

đối nhỏ và các ký t ự trùng nhau r ất dễ bị phát hi ện . Do đó các ph ương pháp này

không còn được an toàn trong điều kiện tốc độ xử lý của máy tính t ăng nhanh nh ư

hiện nay.

2.1.2.2. Mã hóa theo kh ối

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.

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

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

chu kỳ.

• Hill Cipher: Mỗi phần tử x˛ P là một bộ m thành ph ần, tập nguồn P = Z n ·

Zn. 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 · m khả nghịch.

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

m

m

()( xe k

m

) , xx 1

2

1,2 

,2 

m

m

1,

2,

mm ,

(cid:230) (cid:246) (cid:231) (cid:247) (cid:231) (cid:247)  k 2,1  k 1,1 k k ,1 k = = ( 2.3) ,..., xk x (cid:231) (cid:247)  (cid:231) (cid:247) (cid:231) (cid:247)  k k k Ł ł

8

P với x=(x1, x2, ..., xm) ˛

Chương 2 Mã hóa quy ước

Để giải mã cần tìm ma tr ận nghịch đảo k-1 của khóa k và th ực hiện phép tính toán sau: dk(y) = yk–1. Lưu ý là tất cả các phép toán s ố học đều được thực hiện trên Zn.

• Permutation Cipher : Mỗi phần tử x˛ P là một bộ m thành ph ần, tập nguồn

K là t ập hợp hoán vị m thành ph ần trong ph ần tử x. P = Z n · Zn. Khóa k ˛

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.

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

• Data Encryption Standard (DES):

Khoảng nh ững năm 1970, ti ến sĩ Horst Feistel đã đặt nền móng đầu tiên cho

chuẩn mã hóa dữ liệu DES với phương pháp mã hóa Feistel Cipher. Vào n ăm 1976

cơ quan bảo mật quốc gia Hoa Kỳ (NSA) đã công nhận DES dựa trên Feistel Cipher

là chuẩn mã hóa dữ liệu. DES được công bố trong tài liệu FIPS của NIST[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. Quá trình mã hóa c ủa DES có th ể

được tóm tắt như sau:

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

hóa theo 3 giai đoạn:

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

- Thực hiện 16 vòng l ặp từ 64 bit thu được và 56 bit c ủa khoá k (chỉ sử dụng

48 bit của khoá k trong mỗi vòng lặp). 64 bit kết quả thu được qua mỗi vòng

lặp sẽ là đầu vào cho vòng lặp sau.

- Sau 16 vòng l ặp, áp d ụng hoán v ị ng ược IP -1 cho 64bit thu được. Kết qu ả

9

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

Chương 2 Mã hóa quy ước

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

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

trình mã hóa.

Do tốc độ tính toá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 toà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

10

24 giờ.[6]

Chương 2 Mã hóa quy ước

Trong quá trình tìm ki ếm các thu ật toán mới an toà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).

• Advanced Encryption Standard (AES):

Để tìm ki ếm một phương pháp mã hóa quy ước mới với độ an toàn cao h ơn DES,

NIST đã công bố một chuẩn mã hóa m ới, thay th ế cho chu ẩn DES. Thu ật toán đại

diện cho chu ẩn mã hóa nâng cao AES (Advanced Encryption Standard) s ẽ là thu ật

toán mã hóa quy ước, sử dụng miễn phí trên toàn thế giới. Chuẩn AES bao gồm các

yêu cầu sau[8]:

• Thuật toán mã hóa theo khối 128 bit.

• Chiều dài khóa 128 bit, 192 bit và 256 bit.

• Không có khóa yếu.

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

mềm khác.

• Thiết kế dễ dàng (hỗ trợ chiều dài khóa linh ho ạt, có thể triển khai ứng dụng

rộng rãi trên các nền và các ứng dụng khác nhau).

• Thiết kế đơn giản: phân tích đánh giá và cài đặt dễ dàng.

• Chấp nhận bất kỳ chiều dài khóa lên đến 256 bit.

• Mã hóa d ữ li ệu th ấp hơn 500 chu k ỳ đồng hồ cho m ỗi kh ối trên Intel

Pentium, Pentium Pro và Pentium II đối với phiên bản tối ưu của thuật toán.

• Có khả năng thiết lập khóa 128 bit (cho t ốc độ mã hóa t ối ưu) nhỏ hơn thời

gian đòi hỏi để mã hóa các khối 32 bit trên Pentium, Pentium Pro và Pentium

11

II.

Chương 2 Mã hóa quy ước

• Không chứa bất kỳ phép toán nào làm nó gi ảm khả năng trên các bộ vi xử lý

8 bit, 16 bit, 32 bit và 64 bit.

• Không bao hàm bất kỳ phần tử nào làm nó giảm khả năng của phần cứng. • Thời gian mã hóa dữ liệu rất thấp dưới 10/1000 giây trên bộ vi xử lý 8 bit. • Có thể thực hiện trên bộ vi xử lý 8 bit với 64 byte bộ nhớ RAM.

Sau khi th ực hiện 2 lần tuyển chọn, có 5 thu ật toán được vào vòng chung k ết,

gồm có: MARS, RC6, SERPENT, TWOFISH và RIJNDAEL. Các thu ật toán này

đều đạt các yêu c ầu của AES nên được gọi chung là các thu ật toán ứng viên AES.

Các thuật toán ứng viên AES có độ an toàn cao, chi phí thực hiện thấp.

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

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

2.2.1.1. MARS

Thuật toán Mars được đề xuất bởi đơn vị Tổ chức máy tính thương mại quốc

tế (International Business Machines Corporation) .[11]

MARS là thuật toán mã hóa khóa đối xứng hỗ trợ kích thước khối dữ liệu 128bit và

cho phép sử dụng mã khóa có kích th ước thay đổi được. Dữ liệu đầu vào và kết quả

trả về của MARS là 4 t ừ 32bit. Khóa c ủa MARS có kích th ước 128bit. Tất cả các

thao tác tính toán số học trong MARS đều được thực hiện trên các từ 32bit.

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..

12

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

Chương 2 Mã hóa quy ước

2.2.1.2. SERPENT

Thuật toán SERPENT được đề xuất bởi đơn vị Private, của các tác gi ả Ross

Anderson, Eli Biham and Lars Knudsen.[11]

SERPENT là một hệ thống 32 chu k ỳ thực hiện trên 4 t ừ 32 bit, do đó kích

thước khối của SERPENT là 128 bit. Các giá tr ị dùng trong vi ệc mã hóa được xem

như các dòng bit. Ứng với mỗi từ 32-bit, chỉ số bit được đánh từ 0 đến 31, các khối

128-bit có chỉ số từ 0 đến 127 và các khóa 256-bit có chỉ số từ 0 đến 255.

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 hoá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 hoán vị cuối.

Quá 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.

2.2.1.3. RC6

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]

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,

13

RC6 chọn giá trị các tham số là w = 32, r = 20 và b = 16 / 24 / 32 bytes.

Chương 2 Mã hóa quy ước

RC6 chia kh ối mã hóa thành 4 t ừ w-bit A, B, C, D và mã hóa v ăn bản qua các

giai đoạn:

• Khởi tạo và phân bố khóa chính thành 2 r + 4 khóa chu k ỳ được giữ lại trong

S[i] (0 £ i £ 2r + 4).

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

• 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ừ.

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

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

2.2.1.4. TWOFISH

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

14

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.

Chương 2 Mã hóa quy ước

2.2.2. Thuật toán Rijndael

Tháng 11/2001, NIST công b ố tài li ệu FIPS-197, công nh ận Rijndael là thu ật

toá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 toá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 toán Rijndael được xem là thu ật toán có độ an toà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 toá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 toán Rijndael để tăng độ an toà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 toá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

7

i

({b7b6b5b4b3b2b1b0}), dạng thập lục phân ({h1h0}) hay dạng đa thức có các

i xb

= 0i

. hệ số nhị phân (cid:229)

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

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ả

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

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ử

15

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

Chương 2 Mã hóa quy ước

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

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

Ý nghĩa STT Tên Phiên bản nguyên thủy Phiên bản mở rộng

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

2 SubBytes 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 InvSubBytes Phép biến đổi ngược của SubBytes.

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

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

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 InvShiftRows Phép biến đổi ngược của ShiftRows.

8 K

· Nk cột 8 dòng Nk cột

9 State

· Nb cột 8 dòng Nb cột

9 Nb

Mã khóa chính. Được biểu diễn bằng ma trận: 4 dòng · Trạng thái. Được biểu diễn bằng một ma trận : 4 dòng · Số lượng cột trong tr ạng thái. Nb ˛ {4,6,8}. (AES: Nb = 4)

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

10 Nk

Số lượng các t ừ 32bit trong Mã khóa chính K. Nk˛ {4,6,8} Nk = Độ dài khóa / 32 Nk = Độ dài khóa / 64

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

12 RotWord Dịch chuyển xoay vòng 4 bytes thành phần của từ 32 bit.

13 SubWord 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 XOR Phép toán Exclusive-OR

¯ 15

˜ Phép toán Exclusive-OR Phép nhân 2 đa thức (bậc < 4) modulo cho đa thức x4+1. 16

16

• Phép nhân trên trường hữu hạn. 17

Chương 2 Mã hóa quy ước

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

2.2.2.1. Quy trình mã hóa Rijndael:

• Thực hiện thao tác AddRoundKey đầu tiên tr ước khi th ực hiện các chu k ỳ

• 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

mã hóa.

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 toán mã hóa Rijndael :

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.

• Dữ liệu vào:

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

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

• Dữ liệu ra:

Thuật toán 2.1: Thuật toán mã hoá theo phương pháp Rijndael.

17

Chương 2 Mã hóa quy ước

2.2.2.2. Quy trình gi ải mã Rijndael

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

ngược hoàn toàn t ương đương với quy trình mã hóa[8]. Các thao tác ShiftRows,

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

18

bước InvMixColumns.

Chương 2 Mã hóa quy ước

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

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.

• Input:

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

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

• Output:

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

2.2.2.3. Đánh giá phương pháp Rijndael

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.

• Quá 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ù

19

hợp từng hệ thống cụ thể

Chương 2 Mã hóa quy ước

.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 quá trình gi ải mã và quá 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 quá 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ị.

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

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 toá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

toà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

toàn. Ngoà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ữ

20

khóa quy ước.

Chương 3 Mã hóa khóa công khai.

Chương 3. Mã hóa khóa công khai.

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

toán mã hoá khóa công khai RSA và ECC. Ch ương 3 đề cập đến lý thuyết toá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.

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

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

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

về bài toá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 toàn c ủa kênh liên l ạc nên khóa k vẫn có th ể bị

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

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 f –1 rất khó so với việc thực hiện ánh xạ f.[8]

Năm 1977, trên báo " The Scientific American ", 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 toàn th ế giới do tính an toàn và kh ả năng

21

ứng dụng của nó.

Chương 3 Mã hóa khóa công khai.

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

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

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.

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 hoàn toà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

22

công khai.

Chương 3 Mã hóa khóa công khai.

3.2. Ph ương pháp RSA

Phương pháp RSA là m ột phương pháp mã hóa khóa công khai ph ổ biến trên

thế giới hiện nay. RSA được xem là phương pháp an toàn, và có khả năng ứng dụng

rộng rãi trong các lĩnh vực. Dựa vào nền tảng lý thuyết về phân tích thừa số nguyên

tố của số nguyên lớn, phương pháp RSA được ứng dụng vào các mô hình mã hóa,

mô hình truy ền nhận khóa và mô hình ch ữ ký điện tử. Phương pháp RSA đòi hỏi

mỗi thực thể sở hữu một cặp khóa công khai – khóa riêng để sử dụng cho tất cả mô

hình mã hóa.

v Quá 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.

• Tính giá trị n = p·q và f(n) = (p–1) (q–1).

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

• Tính số mũ bí mật d sao cho e· d ” 1 (mod f(n)).

• Giá trị khóa công khai chính là (n, e). Giá trị khóa riêng là d.

trong đó :

n RSA modulus.

e số mũ mã hóa (encryption exponent)

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

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 k-

23

bit.

Chương 3 Mã hóa khóa công khai.

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

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.

v Quá trình mã hóa:

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

• 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 quá dài, chia m thành từng khối có kích th ước phù hợp để mã

hóa.

• Tính giá trị c = me mod n.

• A chuyển thông điệp đã mã hóa c cho B

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

• B nhận thông điệp c đã mã hóa.

• Sử dụng khóa riêng d để tính giá trị m = cd mod n.

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

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

e

= YK

n mod

RSA:

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

d

= KY

n mod

24

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

Chương 3 Mã hóa khóa công khai.

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

3.3.1. Lý thuyết Elliptic Curve

Hệ thống mã hóa khóa công khai dựa trên việc sử dụng các bài toá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 toá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 toá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 toán đó bao gồm: bài toán

logarit rời rạc (The discrete logarithm problem) và bài toán phân tích thừa số của số

nguyên.

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ị.1 Elliptic Curve được phát hiện lần đầu vào thế kỷ 17 dưới dạng công th ức Diophantine:y2 – x3 = c với c ˛ 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 toá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 toá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]

1 http://www.certicom.com/index.php?action=ecc_tutorial,ecc_tut_1_0

25

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

Chương 3 Mã hóa khóa công khai.

3.3.1.1. Công th ức Weierstrasse và Elliptic curve

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:

( 3.1) y2 + a1xy + a3y = x3 + a2x2 + a4x + a6

K. trong đó a1, a2, a3, a4, a6 ˛

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)

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

26

Chương 3 Mã hóa khóa công khai.

3.3.1.2. Elliptic Curve trên tr ường R2

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)

R thoả mãn công thức: ( 3.2) với x, y, a4,a6 ˛ y2 = x3 + a4x + a6

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 2 đượ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), +) bao gồm tập hợp các điểm (x, y) ˛ R với phép cộng + trên E(R). R ·

3.3.1.2.1. Phép cộng

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

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

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

3

+

Như vậy,." P = (x, y) ˛ E(R), P + O = O + P = P:

x

+ axa

4

6

" ( 3.3) P(x, y) ˛ E(R) : ±y =

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

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

27

P + (- P) = ( x, y) + (x, -y) = O ( 3.4)

Chương 3 Mã hóa khóa công khai.

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

Phép cộng trên E(R) đựợc định nghĩa theo phương diện hình học. Giả sử có 2 điểm

˛ phân bi ệt P và Q, P, Q E(R). Phép cộng trên nhóm elliptic curve là P+Q=R,

R˛ E(R).

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

28

Chương 3 Mã hóa khóa công khai.

Để 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

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.

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

x1, y1) x2, y2) ( 3.5) x3, y3) P = ( Q = ( R = P + Q = ( trong đó P, Q, R ˛ E(R) và:

( 3.6) x3 = q 2 – x1 – x2 y3 = q (x1 + x3) – y1

2

y x

2

y 1 x 1

2

a

3

4

- nếu P ≠ Q ( 3.7) q = -

x + 1 2 y 1

hoặc nếu P = Q ( 3.8) q =

INPUT: Đường elip E(R)với các tham số a4, a6 ˛ E(R) , Điểm P = (x1, y1)˛ E(R) và Q = (x2, y2)˛ E(R) OUTPUT: R=P+Q, R = (x3, y3)˛ E(R) 1. Nếu P = O , thì R < - Q và trả về giá trị R 2. Nếu Q = O , thì R <- P và trả về giá trị R 3. Nếu x1 = x2 thì

2

3.1 Nếu y1 = y2 thì 3

a

4

q <-

x + 1 2 y 1

3.2 Ng

ược lại nếu y1 = - y2 thì

R <- O và trả về R,

v Thuật toán cộng elliptic curve có thể được thể hiện như sau:

2

q <-

-

Ngược lại y x

2

y 1 x 1

4. x3 = q 2 – x1 – x2 5. y3 = q (x1 + x3) – y1 6. Trả về(x3, y3) = R

-

Thuật toán 3.1: Thuật toán cộng điểm Elliptic Curve.

29

Chương 3 Mã hóa khóa công khai.

3.3.1.2.2. Phép nhân đôi

Trong phép cộng, nếu cộng 2 điểm P, Q ˛ E(R) với P = Q thì đường thẳng L

sẽ là tiếp tuyến của elliptic curve tại điểm P. Tr ường hợp này điểm –R sẽ là giao

điểm còn lại của L với E. Lúc đó R = 2P.

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

3.3.1.3. Elliptic curve trên tr ường hữu hạn

Elliptic curve được xây dựng trên các trường hữu hạn. Có hai trường hữu hạn có thể được sử dụng: Trường hữu hạn Fq với q là số nguyên tố hoặc q là 2m (m là số

nguyên).

Tùy thu ộc vào tr ường hữu hạn Fq với mỗi bậc của q, tồn tại nhi ều elliptic

curve, do đó với một trường hữu hạn cố định có q phần tử và q lớn, có nhiều sự lựa

30

chọn nhóm elliptic curve.

Chương 3 Mã hóa khóa công khai.

3.3.1.3.1. Elliptic trên F p (p là số nguyên tố)

Cho p là số nguyên tố (p > 3), Cho a, b ˛ Fp sao cho 4 a3 + 27 b2 ≠ 0 trong

trường Fp. Một elliptic curve E(Fp) trên Fp (được định nghĩa bởi các tham số a và b) là một tập hợp các cặp giá trị (x, y) (x, y ˛ Fp) thỏa công thức

y2 = x3 + ax + b ( 3.9)

cùng với một điểm O – gọi là điểm tại vô cực. Số lượng điểm của E(Fp) là #E(Fp)

-+

++

thỏa định lý Hasse như sau:

p

21

p

(#

FE

)

p

21

p

p

£ £ ( 3.10)

Các phép toán của elliptic curve trên F p cũng tương tự với E(R), thay vì tính

toán trên số thực, các phép tính được thực hiện trên modulo s ố nguyên tố lớn. Tập

hợp các điểm trên E(Fp) tạo thành một nhóm tuân theo các luật như sau:

1. Tính đóng: " a, b ˛ G, a + b ˛ G.

2. Tính kết hợp: Các phép toán trong n hóm có tí nh kết hợp.

Do đó, (a + b) + c = a + (b + c).

3. Tính đồng nhất: có một giá trị 0 ˛ G sao cho a + 0 = 0 + a = a " a ˛ G.

" ˛ ˛ 4. Tính đối: a G, t ồn tại –a G gọi là số đối của a,

sao cho –a + a = a + -a = 0.

=

...

O

Bậc của một điểm A trên E(Fp) là một số nguyên dương r sao cho:

+++ AA A    r

( 3.11)

mF 2

3.3.1.3.2. Elliptic curve trên

2 được định nghĩa bởi các tham s ố a, b ˛ mF

mF 2 ) trên

Một elliptic curve E(

mF 2

mF 2

mF 2

thỏa công thức: , y ˛ , b≠ 0 là tập các điểm (x, y) với x ˛

31

y2 + xy = x3 + ax2 + b ( 3.12)

Chương 3 Mã hóa khóa công khai.

mF 2

) ký hi ệu cùng với điểm O là điểm tại vô c ực. Số lượng các điểm thu ộc E(

mF 2 ) thoả định lý Hasse:

-+

++

#E(

m

q

21

q

(#

)

q

21

q

FE 2

£ £ ( 3.13)

mF 2 ) là số chẵn.

trong đó q = 2m. Ngoài ra, #E(

mF 2 ) tạo thành một nhóm tuân theo các luật sau:

Tập hợp các điểm thuộc E(

1. O + O = O.

mF 2 ).

" 2. (x, y) + O = (x, y) (x, y) ˛ E(

mF 2 ). (Khi

" đó (x, x + y ) là điểm 3. (x, y) + (x, x + y) = O (x, y) ˛ E(

mF 2 )).

đối của (x, y) trên E(

Việc xử lý được thực hiện trên 2 hệ toạ độ khác nhau: hệ toạ độ affine và hệ

toạ độ quy chiếu. Với các hệ toạ độ khác nhau, việc tính toán trên đường cong cũng

khác nhau.

v Các phép toán Elliptic Curve trong hệ tọa độ Affine

mF 2 ) và các

Hệ mã hó a elliptic curve d ựa trên vấn đề logarit rời rạc trên E(

tính toán cơ bản trên elliptic curve . Phép nhân được thể hiện là một dãy các phép

cộng và phép nhân đôi các điểm của elliptic curve.Giống như EC trên số thực, phép

cộng và phép nhân đôi được định nghĩa trên hệ toạ độ.

mF 2

trong hệ toạ độ affine [23] và P, Q là 2 Xét đường elliptic curve E trên

mF 2 ). Cho P = (x1, y1), Q = (x 2, y2) thì điểm đối của P là – P = (x1, y1 +

điểm trên E(

mF 2 ).

E( x1) ˛

mF 2 ).

32

E( Nếu Q ≠ -P thì P + Q = R = (x3, y3) ˛

Chương 3 Mã hóa khóa công khai.

2

=

q

+ +

=

+

+

x

x

a

2

=

y y 1 x x 1 2 ++ 2 qq +

2 +

3 y

(

x

x

x 1 + ) q

3

x 1

3

3

y 1

(cid:236) (cid:239) (cid:239) (cid:239) (cid:237) ( 3.14) Nếu P ≠ Q: (cid:239) (cid:239) (cid:239) (cid:238)

=

+

q

x 1

=

++

x

=

y 1 x 1 2 qq +

a +

3 y

2 )1

x

( q

3

2 x 1

3

(cid:236) (cid:239) (cid:239) (cid:239) (cid:237) ( 3.15) Nếu P = Q thì (cid:239) (cid:239) (cid:239) (cid:238)

R=P+Q, R = (x3, y3) ˛ E ( mF2 )

INPUT: Đường cong elip E( mF2 )với các tham số a2,a6 ˛ mF2 , Điểm P = (x1, y1) ˛ E( mF2 ) và Q = (x2, y2) ˛ E( mF2 ) OUTPUT: 1. Nếu P = O , thì R <- Q và trả về giá trị R 2. Nếu Q = O , thì R <- P và trả về giá trị R 3. Nếu x1 = x2 thì

1

‹q

và x3 <- q 2 + q + a2

x 1

3.1 Nếu y1 = y2 thì y + x 1

3.2 Ng

ược lại nếu y2 = x1 + y1

R <- O và trả về R,

2

‹q

Ngược lại + +

y x

y 1 x 1

2

4. x3 <- q 2 + q + x1 + x2 + a2 5. y3 <- (x1 + x3)q + x3 + y1 6. Trả về (x3, y3) = R

Thuật toán:

Thuật toán 3.2: Thuật toán cộng điểm trong hệ toạ độ Affine.

33

Chương 3 Mã hóa khóa công khai.

v Các phép toán Elliptic Curve trong hệ tọa độ chiếu.

mF 2 )có thể được xem là tương đương với tập hợp các điểm

Đường cong E(

mF 2 ) thỏa mãn công thức:

2 ) trên mặt phẳng quy chiếu P2( mF

E'(

y2z + xyz = x3 + a2x2z2 + a6z3. ( 3.16)

Sử dụng hệ to ạ độ quy chi ếu [23], thao tác tính ngh ịch đảo cần cho phép

cộng và phép nhân đôi điểm trong hệ affine có thể được loại bỏ.

v Chuyển đổi giữa hệ toạ độ Affine và hệ toạ độ chiếu

mF 2 ) trong hệ toạ độ affine có thể được xem là bộ

Với mọi điểm (a, b) ˛ E(

mF 2 ) trong hệ quy chiếu với x = a, y = b, z = 1. H ơn nữa, một

ba (x, y, z) trong E'(

điểm (tx, ty, tz) trong hệ quy chiếu với t ≠ 0 được xem như trùng với điểm (x, y, z).

Như vậy, chuyển đổi giữa hệ affine và hệ quy chiếu như sau:

1,

,

,

a, b) = M'(a, b, 1) ( 3.17) M(

p r

q r

p r

q r

p, q, r) = N'( N( ) ( 3.18) ) = N(

v Các phép toán Curve trong hệ toạ độ chiếu

Phương pháp trình bày công th ức của phép cộng và nhân đôi trong h ệ quy

chiếu tương tự với hệ affine.

mF2 ), Q' = (x2 : y2 : z2) ˛

mF2 ) và P' ≠ - Q' trong

E'( E'( Cho P' = (x1: y1 : z1) ˛

đó P', Q' thuộc hệ toạ độ quy chiếu.

Do P' = ( x1 / z1 : y1 / z1 : 1), ta có thể áp dụng công th ức cộng và nhân cho

mF 2

) trong h ệ affine để tì m điểm P( x1/z1, y1/ z1) và Q (x2, y2) cho E(

34

P' + Q' = R' (x'3: y'3: 1)

Chương 3 Mã hóa khóa công khai.

2

=

+

+

+

x

a

'

2

3

2

B A

A z

B A

1

Từ đó ta có:

=

+

+

+

y

x

x

'

(

'

3

)' 3

3

B A

x 1 z

1

y 1 z 1

( 3.19)

Trong đó A = (x2z1 + x1) và B = (y2z1 + y1). Đặt z3 = A3z1 và x3 = x'3z3, y3 =

y'3z3, nếu P + Q = (x3: y3: z3) thì:

x3 = AD,

y3 = CD + A2(Bx1 + Ay1) ( 3.20)

z3 = A3z1

Với C = A + B và D = A2(A + a2z1) + z1BC.

Tương tự 2P = (x3 : y3 : z3) với

x3 = AB,

4A + B(x1

2 + y1z1 + A) ( 3.21)

y3 = x1

z3 = A3

4. Điểm kết quả có thể được chuyển trở lại 4 + x1 -1. Như vậy sẽ không có thao tác tính nghịch

Trong đó A = x1z1 và B = a6z1

sang hệ affine bằng cách nhân v ới z3

đảo trong h ệ quy chi ếu. Do đó ch ỉ cần 1 phép nghịch đảo sau m ột dãy các phép

cộng và nhân đôi để chuyển sang hệ affine.

Tọa độ affine Tọa độ chiếu Thao tác ESUM EDBL ESUM EDBL

Nhân 2 2 13 7

Nghịch đảo 1 1 0 0

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 .

35

Chương 3 Mã hóa khóa công khai.

3.3.1.3.3. Phép nhân Curve

...

Phép nhân được định nghĩa như một dãy các phép cộng và nhân đôi.

+++ PP P  c

( 3.22) Q = c· P =

i

INPUT: P ˛ E( mF2 ) and c ˛ mF2 OUTPUT: =

c

v Thuật toán cho hệ toạ độ affine

Q=c·P , bi ˛ {0, 1}, bn = 1

n 20 i b = i

1. 2. Q <- P 3. For i from n-1 downto 0

3.1 Set Q <- Q + Q (Affine EDBL)

i = 1 then

Set Q <- Q + P (Affine ESUM)

3.2 If b 4. Trả về Q

(cid:229)

Thuật toán 3.3: Thuật toán nhân điểm trong hệ toạ độ Affine.

v Thuật toán cho hệ toạ độ quy chiếu.

i

INPUT: P ˛ E( mF2 ) and c ˛ mF2 OUTPUT: =

c

Q=cP , bi ˛ {0, 1}, bn = 1

n 20 i b = i

1. 2. Biểu diễn P trong hệ tọa độ chiếu: P' 3. Set Q' <- P' 4. For i from n-1 downto 0

4.1 Q' <- Q' + Q' (Projective EDBL)

ếu bi = 1 thì

Q' <- Q' + P' (Projective ESUM)

4.2 N 5. Biểu diễn Q' trong hệ tọa độ affine Q 6. Trả về Q

(cid:229)

Thuật toán 3.4: Thuật toán nhân điểm trong hệ tọa độ chiếu.

36

Chương 3 Mã hóa khóa công khai.

3.3.1.4. Bài toán Logarit r ời rạc trên Elliptic Curve

Bài toán: Cho E là m ột đường elliptic curve và P ˛ E là m ột điểm có bậc n. Cho

E, tìm s ố nguyên dương m ( 2 <= m <= n - 2 ) th ỏa mãn công th ức Q = điểm Q ˛

m· P

Để giải bài toán này, hiện nay chưa có thuật toán nào được xem là hiệu quả.

Các thuật toán được đưa ra đều có chi phí về tốc độ tính toán rất lớn. Nói cách khác,

để giải bài toán logarit rời rạc trên Elliptic Curve cần phải kiểm tra tất cả các giá trị m˛ [2..n-2] (vét cạn). Nếu điểm P được chọn lựa cẩn thận với n rất lớn, việc giải bài

toán ECDLP được xem như không khả thi với thời gian cho phép. Việc giải quyết

ECDLP thật sự khó khăn hơn việc giải quyết bài toán logarit rời rạc trên trường số nguyên thông thường[24]1.

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

Các lý thuyết toán học nền tảng của Elliptic Curve được các nhà khoa h ọc áp dụng

khá hiệu quả vào lĩnh vực mã hóa, b ảo mật (Elliptic Curve Cryptography - ECC).

Elliptic Curve được sử dụng để mã hóa dữ liệu, trao đổi khóa, và ký nhận điện tử .

3.3.2.1. Mã hóa d ữ liệu với Elliptic Curve

Mô hình mã hóa d ữ li ệu với Elliptic Curve (Elliptic Curve Encryption

Scheme - ECES) bao gồm 2 thao tác: mã hóa và giải mã .

Trước khi thực hiện việc mã hóa dữ liệu với Elliptic Curve, ng ười gởi và người

nhận cần phải sở hữu một cặp khóa công khai – khóa riêng. Các giá tr ị sau được

quy ước chung gi ữa ng ười gởi và ng ười nh ận, gọi là các tham s ố chung c ủa hệ

thống mã hóa:

• Đưòng cong elliptic curve E.

1 trang 41, Digital Signatures – Mohan Atreya, Ben Hammond, Stephen Paine, Paul Starrett, Stephen Wu, RSA Press McGraw-Hill, 2002.

37

• Điểm P, P ˛ E. Điểm P có bậc n (n· P = O).

Chương 3 Mã hóa khóa công khai.

v Quá trình tạo khóa được thực hiện như sau:

• Chọn một số nguyên b ất kỳ d, d ˛ [2, n-2]. Số nguyên này chính là khóa

riêng

• Tính giá trị của điểm Q = d· P. Q˛ E. Q chính là khóa công khai.

3.3.2.1.1. Thao tác mã hóa

Thao tác mã hóa s ẽ mã hóa m ột thông điệp bằng khóa công khai c ủa người

nhận và các tham số đường cong đã được quy ước thống nhất chung giữa người gởi

(B) và người nhận (A).

v Trình tự mã hóa được thực hiện như sau:

1. B sử dụng khóa công khai của A (QA).

2. B chọn một số nguyên bất kỳ k ˛ [2, n-2].

3. B tính giá trị của điểm (x1, y1) = k· P.

4. B tính giá trị của điểm (x2, y2) = k·QA. x2 là giá trị bí mật sẽ được sử dụng để

tạo khóa mã hóa thông điệp.

5. B tạo mặt nạ (mask) Y t ừ giá tr ị bí mật x2. Giá tr ị của Y được tạo thành từ

một hàm mask generation. Tùy theo vi ệc cài đặt hàm mask generation mà Y

sẽ có giá trị khác nhau. Y chính là khóa quy ước để mã hóa thông điệp.

6. B tính giá trị C = Y ¯ M. C chính là thông điệp đã được mã hóa.

7. B gởi cho A thông điệp đã mã hóa C cùng với giá trị (x1, y1).

v Lưu ý:

• Giá trị k và (x1, y1) được tạo ra không ph ải khóa riêng và khóa công khai để giao dịch của B. Đây là cặp khóa công khai – khóa riêng được phát sinh nhất

thời (one-time key pair) nh ằm mã hóa thông điệp. Mỗi một thông điệp mã

hóa nên sử dụng một cặp khóa công khai – khóa riêng được phát sinh ng ẫu

38

nhiên.

Chương 3 Mã hóa khóa công khai.

• Việc mã hóa dữ liệu của ECES được thực hiện bằng toán tử eXclusive – OR

khóa và thông điệp. Điều này s ẽ làm gi ảm độ bảo mật của thu ật toán mã

hóa. Trên th ực tế các h ệ th ống mã hóa b ằng Elliptic curve thay b ước th ực

hiện XOR thông điệp bằng cách kết hợp với một thuật toán mã hóa quy ước

hiệu quả hơn (ví dụ ECAES: kết hợp ECES với AES).[22]

3.3.2.1.2. Thao tác gi ải mã

Bằng việc sử dụng các tham s ố quy ước kết hợp với khóa bí m ật của người

nhận (A) và giá tr ị (x1, y1), A th ực hi ện gi ải mã thông điệp được mã hóa b ằng

ECES (C) theo trình tự sau:

Trình tự giải mã:

1. A nhận giá trị (x1, y1).

2. A tính giá tr ị của điểm (x2, y2) = d· (x1, y1). x2 là giá tr ị bí m ật sẽ được sử

dụng để tạo khóa giải mã thông điệp.

3. Sử dụng cùng m ột hàm t ạo mặt nạ (mask function) nh ư đã sử dụng ở giai

đoạn mã hóa, A t ạo mặt nạ Y từ giá tr ị bí mật x2. Y chính là khóa bí m ật để

giải mã.

4. A giải mã thông điệp C để lấy thông điệp M ban đầu bằng cách tính giá tr ị

M = C ¯ Y

3.3.2.2. Trao đổi khóa theo ph ương pháp Diffie - Hellman s ử dụng

Elliptic Curve (ECDH)

v Mô hình trao đổi khóa Diffie-Hellman

Năm 1976, Whitfield Diffie và Martin Hellman đã đưa ra một giao th ức để

trao đổi các giá tr ị khóa quy ước giữa các đối tác trên đường truyền có độ bảo mật

trung bình. Sự ra đời của giao thức trao đổi khóa Diffie-Hellman được xem là bước

39

mở đầu cho lĩnh vực mã hóa khóa công khai.

Chương 3 Mã hóa khóa công khai.

Giao th ức này d ựa trên nguyên lý c ủa bài toán logarit r ời rạc trên tr ường số

nguyên hữu hạn. Các thao tác th ực hiện trao đổi khóa Diffie-Hellman gi ữa hai đối

tác A và B như sau:

1. A và B thống nhất các giá trị g và số nguyên tố p < g.

2. A chọn một số ngẫu nhiên m. A tính giá trị QA = gm và gởi QA cho B.

3. B chọn một số ngẫu nhiên n. B tính giá trị QB = gn và gởi QB cho A.

4. A nhận được QB và tính giá trị k = (QB)m = gn· m.

5. B nhận được QA và tính giá trị k = (QA)n = gm· n.

k chính là giá trị bí mật được quy ước chung.

v Mô hình trao đổi khóa Elliptic Curve Diffie - Hellman

Mô hình trao đổi khóa Elliptic curve Diffie-Hellman t ương tự mô hình trao

đổi khóa Diffie-Hellman. ECDH cũng dựa vào nguyên lý của bài toán logarit rời rạc

nhưng ápd ụng trên đường elliptic curve. Mô hình này dùng để thi ết lập một ho ặc

nhiều khóa quy ước chung giữa hai đối tác A và B.

Các thao tác để trao đổi khóa bằng ECDH được thực hiện như sau:

1. A và B th ống nh ất các tham s ố sẽ sử dụng như: đường elliptic curve E, và

điểm P(x, y)

2. A chọn một giá tr ị m ng ẫu nhiên. A tính giá tr ị điểm QA = m· P và gởi QA

cho B.

3. B chọn một giá trị n ngẫu nhiên. B tính giá tr ị điểm QB = n· P và gởi QB cho

A.

4. A nhận được QB và tính giá trị G = m·QB = m· n· P.

5. B nhận được QA và tính giá trị G = n· QA = n· m· P.

40

Giá trị G = m·n·P chính là giá trị bí mật được quy ước chung.

Chương 3 Mã hóa khóa công khai.

Giả sử có một người C tấn công vào đường truyền và lấy được các giá tr ị QA,

QB, E, P, C cần lấy được m hoặc n để tìm G = m·n·P. Điều đó chính là C ph ải giải

bài toán logarit rời rạc trên elliptic curve. Gi ải bài toán này đòi hỏi chi phí tính toán

tương đương với sử dụng thuật toán vét cạn trên elliptic curve.

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

Hệ thống mã hóa khóa công khai ra đời đã giải quyết các hạn chế của mã hóa

quy ước. Mã hóa khóa công khai s ử dụng một cặp khóa, một khóa (thông thường là

khóa riêng) dùng để mã hóa và m ột khóa (khóa riêng) dùng để gi ải mã. Mã hóa

khóa công khai giúp tránh b ị tấn công khi trao đổi khóa do khóa để giải mã (khóa

riêng) không cần phải truyền hoặc chia sẻ với người khác. Ngoài ra, m ỗi người chỉ

cần sở hữu một cặp khóa công khai – khóa riêng và ng ười gởi thông tin ch ỉ cần giữ

khóa công khai c ủa ng ười nh ận do đó số lượng khóa c ần ph ải qu ản lý gi ảm khá

nhiều. Mỗi người chỉ cần lưu trữ bảo mật một khóa riêng của chính mình.

Tuy nhiên, do nhu c ầu mã hóa và gi ải mã bằng hai khóa khác nhau trong cùng

một cặp khóa nên để đảm bảo bảo mật, kích thước khóa công khai – khóa riêng l ớn

hơn rất nhiều so với khóa công khai. Do đó tốc độ mã hóa khóa công khai chậm hơn

tốc độ mã hóa khóa quy ước. Tốc độ mã hóa b ằng phần mềm của thuật toán DES

nhanh hơn khoảng 100 lần so với mã hóa RSA với cùng mức độ bảo mật[26].

Kích thước khóa (tính bằng bit)

Khóa công khai 56 80 112 128 192 256

RSA/DSA 512 1K 2K 3K 7.5K 15K

ECC 160 224 256 384 512

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.

41

Chương 3 Mã hóa khóa công khai.

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

Với đặc điểm mã hóa và gi ải mã bằng hai khóa khác nhau, các ph ương pháp

mã hóa khóa công khai ngoài ch ức năng mã hóa thông tin còn được áp dụng trong

rất nhiều chức năng ứng dụng khác.

3.4.1.1. Trao đổi khóa

Trao đổi khóa là ứng dụng chính của mã hóa khóa công khai. M ục đích của

trao đổi khóa là s ử dụng mã hóa khóa công khai để chuyển tải một khóa quy ước

cho phương pháp giải mã bí mật. Do mã hóa khóa công khai có tốc độ mã hóa chậm

nên để mã hóa lượng thông tin lớn cần phải sử dụng phương pháp mã hóa quy ước.

Mã hóa khóa công khai mã hóa khóa quy ước được sử dụng có kích th ước khá nhỏ

nên tốc độ thực hiện sẽ nhanh hơn.

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

Mục đích chữ ký điện tử là đảm bảo tính ch ất chống chối bỏ trách nhi ệm và

xác nhận nguồn gốc thông tin. Chữ ký điện tử tương tự chữ ký viết tay có tính năng

đảm bảo nguồn gốc cho thông tin và xác nh ận nội dung cũng như trách nhi ệm trên

nội dung của thông tin. Ch ữ ký điện tử sử dụng mã hóa khóa công khai để mã hóa

và giải mã thông điệp rút gọn của dữ liệu nhằm xác thực dữ liệu được trao đổi. Phần

4.2 sẽ trình bày chi tiết hơn về chữ ký điện tử.

3.4.1.3. Ch ứng nhận điện tử

Trong mã hóa khóa công khai, khóa công khai được trao đổi rộng rãi gi ữa

các đối tác. Chính vì lý do này nên khi nhận được một khóa công khai do một người

khác gửi đến, ng ười nhận thường băn khoăn không bi ết đây có ph ải là khóa công

khai của chính ng ười mà mình mu ốn trao đổi hay không. Ch ứng nh ận khóa công

khai và tổ chức chứng nhận khóa công khai (Certificate Authority - CA) ra đời với

mục đích xác nhận tính hợp lệ và nguồn gốc của khóa công khai được sử dụng. Một

chứng nhận điện tử bao gồm các thông tin c ơ bản về khóa công khai, t ổ chức cấp

42

khóa công khai, ng ười sở hữu khóa và ngày h ết hạn của khóa. Vi ệc ch ứng nh ận

Chương 3 Mã hóa khóa công khai.

khóa công khai được thực hiện qua trung gian các t ổ chức chứng nhận theo 3 mô

CATrungöông

CAChinhaùnh

CAChinhaùnh

CA

CA

CA

CA

Ngöôøisöûduïng

hình: phân cấp, tập trung và Web of Trust[6].

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

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

B

A

F

C

E

D

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

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

Mã hóa khóa công khai d ựa trên hai v ấn đề lớn của toán h ọc là bài toán

logarit rời rạc và bài toán phân tích thừa số của số nguyên. Phương pháp RSA d ựa

trên bài toán phân tích th ừa số của số nguyên tố và đã được đưa ra từ cuối thập niên

70. Ph ương pháp ECC d ựa trên bài toán logarit r ời rạc trên tr ường số của đường

43

elliptic curve (ECDLP) chỉ mới được đưa ra từ năm 1985.

Chương 3 Mã hóa khóa công khai.

Một ưu điểm của ECC là khả năng bảo mật cao với kích thước khóa nhỏ dựa

vào mức độ khó gi ải quyết của vấn đề ECDLP. Đây chính là m ột tính ch ất rất hữu

ích đối với xu hướng ngày nay là tìm ra ph ương pháp tăng độ bảo mật của mã hóa

khóa công khai v ới kích th ước khóa được rút g ọn.[32] Kích th ước khóa nh ỏ hơn

giúp thu g ọn được kích th ước của ch ứng nh ận giao d ịch trên m ạng và gi ảm kích

thước tham s ố của hệ th ống mã hóa. Kích th ước khóa nh ỏ giúp các h ệ th ống bảo

mật dựa trên ECC giảm thời gian tạo khóa. Thời gian tạo khóa thường rất lớn ở các

hệ thống RSA[26].

Kích thước khóa Thời gian cần để tấn công vào khóa Kích thước khóa Tỉ lệ kích thước khóa RSA : ECC RSA / DSA (đơn vị: năm) ECC

104 512 106 5:1 108 768 132 6:1 1011 1024 160 7:1 1020 2048 210 10:1 1078 21000 600 35:1

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

COMPARISON OF SECURITY LEVELS of ECC and RSA / DSA

3000

2500

2000

RSA/DSA

1500

ECC

1000

) s t i b ( e z i S y e K

500

0

510004E+072E+124E+167E+23

Time to break key (MIPS years)

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

44

Chương 3 Mã hóa khóa công khai.

Do có kích th ước khóa nh ỏ và kh ả năng phát sinh khóa r ất nhanh nên ECC r ất

đưọc quan tâm để áp d ụng cho các ứng dụng trên môi tr ường gi ới hạn về thông

lượng truyền dữ liệu, giới hạn về khả năng tính toán, kh ả năng lưu trữ. ECC thích

hợp với các thi ết bị di động kỹ thuật số như handheld, PDA, điện thoại di động và

thẻ thông minh (smart card).

Các hệ thống ECC đã và đang được một số công ty l ớn về viễn thông và b ảo

mật trên thế giới quan tâm phát tri ển. Nổi bật trong số đó là Certicom (Canada) k ết

hợp với đại học Waterloo đã nghiên cứu và xem ECC nh ư là chi ến lược phát tri ển

bảo mật chính c ủa công ty. Certicom cung c ấp dịch vụ bảo mật dựa trên ECC.

Ngoài ra, một số công ty khác nh ư Siemens ( Đức), Matsushita (Nh ật), Thompson

(Pháp) cũng nghiên c ứu phát tri ển ECC. M ới đây, RSA Security Laboratory –

phòng thí nghi ệm chính c ủa RSA – đã bắt đầu nghiên c ứu và đưa ECC vào s ản

phẩm của mình.[31]

Tuy nhiên, ECC vẫn có một số hạn chế nhất định. Hạn chế lớn nhất hiện nay là

việc chọn sử dụng các tham số đường cong và điểm quy ước chung nh ư thế nào để

thật sự đạt được độ bảo mật cần thiết. Hầu hết các đường cong được đưa ra đều thất

bại khi áp dụng vào thực tiễn. Do đó hiện nay số lượng đường cong thật sự được sử

dụng không được phong phú. NIST đề xu ất một số đường cong elliptic curve đã

được ki ểm định là an toàn để đưa vào s ử dụng th ực tế trong tài li ệu FIPS 186-2.

Ngoài ra, đối với các tham s ố mang giá tr ị nh ỏ, mức độ bảo mật của ECC không

bằng RSA (khi e = 3). Đối với một số trường hợp RSA vẫn là lựa chọn tốt do RSA

đã chứng minh được tính ổn định trong một khoảng thời gian khá dài[12].

ECC vẫn còn non tr ẻ và c ần được ki ểm định trong t ương lai tuy nhiên ECC

cung cấp khả năng ứng dụng rất lớn trong lĩnh vực mã hóa khóa công khai trên các

thiết bị di động và smart card. Tương lai ECC sẽ được nghiên cứu đưa vào thực tiễn

45

phổ biến hơn.

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

Chương 4. Các thu

ật toán hàm băm và chữ ký điện tử

Dẫn nhập: Chương 4 trình bày v ề hàm băm và các thu ật toán hàm b ăm mới theo

chuẩn hàm băm an toàn SHS và giới thiệu về thuật toán băm AES-HASH. Chương 4

cũng trình bày về chữ ký điện tử và các thuật toán chữ ký điện tử phổ biến hiện nay

gồm RSA, DSA, ECDSA.

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

4.1.1. Gi

ới thiệu hàm băm

Hàm băm là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành

một dãy bit có độ dài cố định (độ dài cố định tùy thuộc vào thuật toán băm). Dãy bit

này được gọi là message digest (thông điệp rút g ọn) đại di ện cho thông điệp ban

đầu. Hàm b ăm là một hàm m ột chi ều (one-way function) do đó rất khó để lấy lại

thông điệp ban đầu từ message digest. Các thuật toán này cho phép xác định được

tính toàn vẹn dữ liệu của thông điệp: mọi thay đổi dù là nhỏ nhất của thông điệp đều

cho kết quả thông điệp rút gọn khác nhau. Tính ch ất này hữu ích trong vi ệc phát

sinh, kiểm tra ch ữ ký điện tử, các đoạn mã chứng nhận thông điệp và phát sinh số

ngẫu nhiên.

Hàm băm là n ền tảng cho nhi ều ứng dụng mã hóa. Có nhi ều thu ật toán để

thực hiện hàm băm, trong số đó SHA-1 và MD5 được sử dụng phổ biến và đáng tin

cậy. Ngày 26/08/2002, Học viện Quốc gia về Chuẩn hóa và Công ngh ệ của Hoa Kỳ

(National Institute of Standard and Technology - NIST) đã đề xuất hệ thống chuẩn

hàm băm an toàn (Secure Hash Standard) g ồm 4 thuật toán hàm băm SHA-1, SHA-

256, SHA-384, SHA-512. Đến 25/03/2004, NIST đã ch ấp nh ận thêm thu ật toán

hàm băm SHA-224 vào hệ thống chuẩn hàm băm. Các thuật toán hàm băm do NIST

46

đề xuất được đặc tả trong tài liệu FIPS180-2[19]

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

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)

Chuẩn SHS đặc tả 5 thu ật toán băm an toàn SHA-1, SHA-224 1, SHA-256,

SHA-384 và SHA-512.

Sự khá c bi ệt chính của các thu ật toán là số lượng bit bảo mật của dữ liệu

được băm – điều này có ảnh hưởng trực tiếp đến chiều dài của thông điệp rút gọn.

Khi một thuật toán băm đuợc sử dụng kết hợp với thuật toán khác đòi hỏi phải cho

kết quả số lượng bit tương ứng. Ví dụ, nếu một thông điệp được ký với thuật toán

chữ ký điện tử cung cấp 128 bit thì thuật toán chữ ký đó có thể đòi hỏi sử dụng một

thuật toán băm an toàn cung cấp 128 bit như SHA-256.

Ngoài ra, các thu ật toán khác nhau về kích thước khối và kích thước từ dữ

liệu (word size) được sử dụng. Bảng 4-1 thể hiện các tính chất cơ bản của bốn thuật

toán băm an toàn.

Kích thước (đơn vị: bit) Thuật

Thông điệp Khối Từ Độ an toàn2 (đơn vị: bit) toán Thông điệp rút gọn

SHA-1

SHA-224

SHA-256

SHA-384

< 264 512 32 160 80 < 264 512 32 224 112 < 264 512 32 256 128 < 2128 1024 64 384 192 < 2128 1024 64 512 256 SHA-512

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

1 Đây là thuật toán hàm băm vừa được NIST công nhận thành chuẩn hàm băm an toàn vào 02/2004. 2 "Độ an toàn" là việc sử dụng phương pháp tấn công vào thông điệp rút gọn kích thuớc n, đòi hỏi xử lý xấp xỉ 2n/2.

47

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

4.1.2.1. Ý tu ởng của các thuật toán hàm băm SHA

Các thuật toán hàm băm SHA gồm 2 buớc: tiền xử lý và tính toán giá trị băm.

o Mở rộng thông điệp (Padding Message)

• Bước tiền xử lý bao gồm các thao tác:

o Phân tích thông điệp đã mở rộng thành các khối m bit.

• Bước tính toán giá trị băm bao gồm các thao tác:

o Khởi tạo giá trị băm ban đầu.

§ Tạo bảng phân bố thông điệp (message schedule) từ khối thứ i.

o Làm N lần các công việc sau:

§ Dùng message schedule cùng v ới các hàm, h ằng số, các thao

tác trên word để tạo ra giá trị băm i.

o Sử dụng giá trị băm cuối cùng để tạo thông điệp rút gọn.

4.1.2.2. Các tham s ố, ký hiệu và các thuật ngữ được sử dụng trong

SHA.

v Tham số:

a, b,c , ...,h

Các bi ến là cá c từ w bit s ử dụng trong vi ệc tính toán giá tr ị băm H(i).

H(i) Giá trị băm thứ i. H(0) là giá tr ị băm khởi đầu. H(N) là giá tr ị

băm cu ối cùng và được sử dụng để xá c định thông điệp rút

gọn.

Hằng số sử dụng cho vòng lặp thứ t trong việc thực hiện băm. Kt

k Số lượng các số 0 thêm vào thông điệp trong giai đoạn mở

rộng thông điệp.

l Chi ều dài thông điệp M (tính bằng đơn vị bit).

48

m Số bit trong một khối thông điệp, M(t).

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

M(i) Kh ối thông điệp i, với giá trị m bit.

0 là từ cực trái của khối

Từ thứ j của khối thông điệp thứ i, M(t) M(i) j

thông điệp i.

n Số lượng bit được dịch chuyển khi xử lý một từ.

N Số lượng khối trong thông điệp mở rộng.

T w-bit từ tạm sử dụng trong việc thực hiện băm.

w Số lượng bit trong một từ.

Từ w-bit thứ t của bảng phân bố thông điệp. Wt

v Ký hiệu:

Các ký hiệu sau được sử dụng trong SHA và xử lý trên các từ w-bit.

^ Thao tác AND trên bit.

(cid:218) Thao tác OR trên bit.

¯ Thao tác XOR trên bit.

(cid:216) Thao tác đảo bit.

+ Thao tác cộng modulo 2w

<< Thao tác dịch trái, x << n lo ại bỏ n bit c ực trái của từ x và

thêm n bit 0 vào bên phải của kết quả.

>> Thao tác dịch phải, x >> n loại bỏ n bit cực phải của từ x và

thêm n bit 0 vào bên trái của kết quả.

v Thuật ngữ:

Các thuật ngữ liên quan đến chuỗi bit và số nguyên được sử dụng:

a. Một ký số thập lục (hexa) là một phần tử trong tập hợp {0, 1,..., 9, a, ..., f}.

Một ký số thập lục biểu diễn một chuỗi 4-bit. Ví dụ, ký số thập lục "7" biểu

49

diễn chuỗi 4-bit "0111", ký số hexa "a" biểu diễn chuỗi 4 bit "1010".

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

b. Một từ là một chuỗi w-bit có thể được biểu diễn dưới dạng một dãy các ký số

hexa. Để chuyển đổi một từ sang ký số hexa, mỗi chu ỗi 4-bit được chuyển

sand giá trị hexa tương ứng như phần (a). Ví dụ, chuỗi 32-bit

1010 0001 0000 0011 1111 1110 0010 0011

có thể được biểu diễn như sau "a103fe23", và chuỗi 64 bit

1010 0001 0000 0011 1111 1110 0010 0011

0011 0010 1110 1111 0011 0000 0001 1010

có thể được biểu diễn như sau "a103fe2332ef301a"

c. Quy ước "big-endian" được sử dụng trong tài liệu này khi biểu diễn từ có 32

và 64 bit . Do đó với mỗi từ, bit đầu tiên nằm ở vị trí cực trái.

d. Một số nguyên có thể được biểu diễn dưới dạng một từ hoặc một cặp từ. Một

từ biểu diễn độ dài thông điệp theo bit, l, được sử dụng trong thao tác mở

rộng thông điệp (phần 4.1.2.3.2).

Một số nguyên nằm trong khoảng 0 và 232-1 có thể được bi ểu di ễn

bằmg một từ 32-bit. 4 bit cuối cùng của số nguyên được biểu diễn bằng ký số hexa cực phải của từ. Ví dụ số nguyên 291 = 28 + 25 + 21 + 20 = 258 + 32 + 2

+ 1 được biểu diễn bằng từ hexa 0x00000123.

Tương tự, số nguyên trong khoảng 0 và 264-1 có thể biểu diễn bằng từ

64-bit. Nếu Z là một số nguyên, 0 <= Z < 2 64 thì Z = 232X + Y, trong đó 0 <= X < 232 và 0 <= Y < 2 32. Do X và Y có thể được biểu diễn bằng từ 32-bit x và y,

nên số nguyên Z cũng có thể biểu diễn bằng một cặp từ (x, y). Tính chất này

được sử dụng trong SHA-1 và SHA-256.

Nếu Z là một số nguyên, 0 <= Z < 2 128 thì Z = 2 64X + Y, trong đó 0 <= X < 264 và 0 <= Y < 2 64. Do X và Y có thể được biểu diễn bằng từ 64-bit

x và y, nên số nguyên Z cũng có thể biểu diễn bằng một cặp từ (x, y). Tính

50

chất này được sử dụng trong SHA-384 và SHA-512.

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

e. Trong thuật toán băm an toàn, kích thước của khối thông điệp m bit dựa vào

thuật toán sau:

i. Đối với SHA-1 và SHA-256, mỗi khối thông điệp có 512 bit biểu diễn

dưới dạng một dãy 16 từ 32-bit.

ii. Đối với SHA-384 và SHA-512, mỗi khối thông điệp có 1024 bit bi ểu

diễn dưới dạng một dãy 16 từ 64-bit.

Các thao tác xử lý dưới đây đuợc áp dụng cho từ w-bit trong cả 5 thuật toán:

SHA-1, SHA-224 và SHA-256 thao tác trên từ 32-bit (w = 32), SHA-384 và SHA-

512 thao tác trên từ 64-bit (w = 64).

a. Các phép toán luân lý trên bit: (cid:217) , (cid:218) , ¯ và (cid:216)

b. Phép cộng modulo 2w.

Phép cộng x + y được định nghĩa như sau. Từ x và y biểu diễn số nguyên X và Y trong đó 0 <= X < 2w và 0 <= Y < 2w.

w. ( 4.1)

Z = (X + Y) mod 2

thì 0 <= Z < 2w. Biến đổi số nguyên Z thành từ z, ta có z = x + y.

c. Phép toán dịch phải SHRn(x) với x là từ w-bit và n là số nguyên 0<= n

định nghĩa như sau

n(x) = x >> n. ( 4.2)

SHR

Phép toán này được sử dụng trong SHA-256, SHA-384 và SHA-512.

d. Phép toán quay phải ROTRn(x) với x là từ w-bit và n là số nguyên 0<=n

được định nghĩa như sau:

n(x) = (x >> n) (cid:218)

ROTR (x <

Như vậy, ROTRn(x) tương đương cho một thao tác xoay vòng từ x về

phía phải n vị trí.

51

Phép toán này được sử dụng trong SHA-256, SHA-384 và SHA-512.

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

e. Phép toán quay trái ROTL n(x) với x là từ w-bit và n là số nguyên 0<=n

được định nghĩa như sau:

n(x) = (x << n) (cid:218)

ROTL (x >>w – n) ( 4.4)

Như vậy, ROTLn(x) tương đương cho một thao tác xoay vòng từ x về

phía trái n vị trí. Phép toán này được sử dụng trong SHA-1.

f. Lưu ý rằng các phép toán sau là tương đương với w là không đổi.

ROTLn(x) » ROTRw-n(x)

n(x) »

ROTR ROTLw-n(x). ( 4.5)

4.1.2.3. Các thao tác ti ền xử lý trong các thuật toán hàm băm

4.1.2.3.1. Các hàm x ử lý

=

v SHA-1:

z

x

j

(

)

ch(

zyx ), ,

(

)

0

19

x y ¯= x

y

z

j

parity(

20

39

=

zyx ),

,(f j

y

x

z

y

z

j

zyx , ), = zyx ), ,

maj(

)

(

)

(

)

40

59

x ( ¯= x

y

z

j

parity(

zyx , ),

60

79

£ £ (cid:217) (cid:216) ¯ (cid:217) (cid:236) (cid:239) £ £ ¯ (cid:239) (cid:237) £ £ (cid:217) ¯ (cid:217) ¯ (cid:217) (cid:239) (cid:239) £ £ ¯ (cid:238)

v SHA-224 và SHA-256:

ch(

y)

(cid:217) (cid:216) ¯ (cid:217)

x, ,maj(

(

)

x( (

z) )

(

)

x

y

x

z

y

z

2

13

22

= (x z) y, = ), zyz =

(cid:217) ¯ (cid:217) ¯ (cid:217)

ROTR

ROTR

ROTR

)( x

)( x

)( x

)( x

256 0

6

11

25

=

¯ ¯ (cid:229)

ROTR

ROTR

ROTR

)( x

)( x

)( x

)( x

256 1

7

18

3

=

¯ ¯ (cid:229)

ROTR

ROTR

SHR

)( z

)( x

)( x

)( x

17

19

10

=

¯ ¯

ROTR

ROTR

SHR

)( z

)( x

)( x

)( x

256 s 0 256 s 1

52

¯ ¯

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

=

v SHA-384 và SHA-512:

ch(

y)

z)

(x =

(cid:217) (cid:216) ¯ (cid:217)

x, ,maj(

x( (

(

)

)

(

)

x

x

y

z

y

z

28

34

29

z) y, ), zyz =

(cid:217) ¯ (cid:217) ¯ (cid:217)

ROTR

ROTR

ROTR

)( x

)( x

)( x

)( x

512 0

14

18

41

=

¯ ¯ (cid:229)

ROTR

ROTR

ROTR

)( x

)( x

)( x

)( x

512 1

1

8

7

=

¯ ¯ (cid:229)

ROTR

ROTR

SHR

)( z

)( x

)( x

)( x

19

61

6

=

¯ ¯

ROTR

ROTR

SHR

)( z

)( x

)( x

)( x

512 s 0 512 s 1

¯ ¯

4.1.2.3.2. Mở rộng thông điệp

Thông điệp M được mở rộng trước khi th ực hiện băm. Mục đích của việc mở

rộng này là để đảm bảo thông điệp mở rộng có độ dài là bội số của 512 ho ặc 1024

bit tùy thuộc vào thuật toán.

v SHA-1, SHA-224 và SHA-256:

l

”++ k 1

448

(mod

512

)

Giả sử độ dài của thông điệp M là l bit. Thêm bit 1 vào cuối thông điệp, theo

. Sau đó sau là k bit 0 ( k là số không âm nhỏ nhất sao cho

thêm khối 64 bit là biểu diễn nhị phân của l .

Ví dụ, thông điệp (8-bit ASCII) " abc" có độ dà i 8x3=24, do đó thông điệp

được mở rộng bằng 1 bit "1", 448-(24+1) = 423 bit "0" và chiều dài thông điệp trở

1

 423 00..00

...

01100001  a

01100010  b

01100011  c

 64 00 011000  =l 24

thành thông điệp mở rộng 512 bit.

Chiều dài của thông điệp mở rộng đã trở thành một bội số của 512 bit.

v SHA-384 và SHA-512

”++ k

l

1

896

(mod

1024

)

Giả sử độ dài của thông điệp M là l bit. Thêm bit 1 vào cuối thông điệp, theo

. Sau đó sau là k bit 0 ( k là số không âm nhỏ nhất sao cho

53

thêm khối 128 bit là biểu diễn nhị phân của l .

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

Ví dụ, thông điệp (8-bit ASCII) "abc" có độ dà i 8x3=24, do đó thông điệp

được mở rộng bằng 1 bit "1", 896-(24+1) = 871 bit " 0" và chiều dài thông điệp trở

...

1

871  .. 00 00

01100001  a

01100010  b

01100011  c

128   00 011000  =l 24

thành thông điệp mở rộng 1024 bit.

Chiều dài của thông điệp mở rộng đã trở thành một bội số của 1024 bit.

4.1.2.3.3. Phân tích thông điệp đã mở rộng

Sau khi thông điệp đã mở rộng, thông điệp cần được phân tích thành N khối m-

bit trước khi thực hiện băm.

iM chứa 32 bit đầu của khối thông điệp i,

iM chứa 32 bit

Đối với SHA-1 và SHA-256, thông điệp mở rộng được phân tích thành N khối 512-bit M(1), M(2),..., M(N). Do đó 512 bit của khối dữ liệu đầu vào có thể được thể

)( 0

)( 1

hiện bằng 16 từ 32-bit,

kế tiếp...

Đối với SHA-384 và SHA-512, thông điệp mở rộng được phân tích thành N khối 1024-bit M(1), M(2),..., M(N). Do đó 1024 bit của kh ối dữ liệu đầu vào có thể

iM chứa 64 bit đầu của kh ối thông điệp i,

)( 0

iM chứa 64 bit kế tiếp...

)( 1

được th ể hiện bằng 16 t ừ 64-bit,

4.1.2.3.4. Kh ởi tạo giá trị băm

( )i

Giá trị băm là một chuỗi bit có kích th ước bằng kích th ước message digest

jH là word j trong giá tr ị băm ở

(trừ SHA-384) gồm các words ghép l ại. Trong đó

lần lặp i, với 0 <= i <= N (s ố block có được sau khi chia v ăn bản được đệm) và

0 <= j <= s ố word trong giá tr ị băm – 1. Tr ước khi th ực hiện băm, với mỗi thu ật toán băm an toàn, giá tr ị băm ban đầu H(0) ph ải được thi ết lập. Kích th ước và số lượng từ trong H(0) tùy thuộc vào kích thước thông điệp rút gọn.

Các giá tr ị băm ban đầu của các thu ật toán SHA được trình bày trong ph ần

54

phụ lục B.

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

4.1.2.4. Thu ật toán của bước tính toán giá trị băm:

<

v SHA-1

0

642

l

£ SHA-1 được sử dụng để băm thông điệp M dài l bit . Thuật toán sử

dụng

a. Một bảng phân bố thông điệp gồm 80 từ 32-bit

b. 5 biến 32 bit.

c. Một giá trị băm gồm 5 từ 32-bit.

Kết quả của SHA-1 là thông điệp rút gọn 160-bit.

,....,

H

Các từ của bảng phân bố thông điệp được ký hiệu W0, W1, ..., W79. 5 bi ến ký

)( i HH , 0

i )( 1

i )( 4

, H(0) giữ giá hiệu a, b, c, d, và e. Các từ của giá trị băm ký hiệu

trị băm ban đầu, được thay thế bằng các giá trị băm thành công H(i) sau khi mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N). SHA-1 cũng sử

dụng một từ đơn tạm T.

Với i = 1 đến N:

{

Chuẩn bị bảng phân bố thông điệp {Wt}:

0

15

M

t

=

W t

16

79

i )( t 1 ROTL

t

( W t

W t

W t

W t

3

8

14

16

(cid:236) £ £ (cid:239) (cid:237) (cid:239) £ £ ¯ ¯ ¯ - - - - (cid:238)

)1( 0

)1( 1 )1( 2 )1( 3

-iH -iH -iH -iH -iH

)1( 4

Khởi tạo 5 biến ban đầu a, b, c, d và e, với giá trị băm thứ i-1:

55

a = b = c = d = e =

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

Với t = 0 đến 79:

{

)( 0

)( 1 )( 2 )( 3

)1( 0 )1( 1 )1( 2 )1( 3

T = ROTL5(a) + ft(b,c,d) + e + Kt + Wt e = d d = c c = ROTL30(b) b = a a = T }

iH = a + iH = b + iH = c + iH = d + iH = e +

)( 4

)1( 4

Tính giá trị băm H(i) của vòng lặp thứ i -iH -iH -iH -iH -iH

} Sau khi lặp 4 bước trên N lần ( sau khi x ử lý M(N)), thông điệp rút gọn 160-bit của

N

)

N

)

N

)

N

)

N

)

H

H

H

H

H

( 0

( 1

( 2

( 3

( 4

thông điệp M là

Ký hiệu || chỉ phép nối chuỗi bit theo thứ tự đã định.

<

v SHA–224

0

l

642

£ SHA-224 được sử dụng để băm thông điệp M dài l bit . Thuật toán

sử dụng

a. Một bảng phân bố thông điệp gồm 64 từ 32-bit

b. 8 biến 32 bit.

c. Một giá trị băm gồm 8 từ 32-bit.

56

Kết quả của SHA-224 là thông điệp rút gọn 224-bit.

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

,....,

H

Các từ của bảng phân bố thông điệp được ký hiệu W0, W1, ..., W63. 8 bi ến ký

)( i HH , 0

i )( 1

i )( 7

hiệu a, b, c, d, e, f, g và h. Các từ của giá trị băm ký hiệu , H(0)

giữ giá trị băm ban đầu, được thay thế bằng các giá trị băm thành công H(i) sau khi mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N). SHA-

224 cũng sử dụng hai từ đơn tạm T1, T2.

Với i = 0 đến N

{

Chuẩn bị bảng phân bố thông điệp {Wt}

M

0

t

15

i )( t

=

W

t

256

}

256

}

+

+

+

W (

)

W

W (

)

W

16

t

63

{ s 1

t

2

t

{ s 0

7

t

15

t

16

(cid:236) £ £ (cid:239) (cid:237) (cid:239) £ £ - - - - (cid:238)

Khởi tạo 8 biến a, b, c, d, e, f, g, h với giá trị băm thứ i-1

a =

b =

c =

d =

e =

)1( 0 )1( 1 )1( 2 )1( 3 )1( 4 )1( 5

f =

-iH -iH -iH -iH -iH -iH -iH -iH

)1( 7

g = )1( 6

h =

Với t = 0 đến 63:

}

256

256

}

+

+

+

{

)( e

,( gfeCh

,

)

K

W

{ t

t

(cid:229)

{ 1 )(}

a +

cbaMaj ,( ),

(cid:229) T1 = h + { 256 T2 = 0

1

1 + T2

c = b b = a a = T }

57

h = g g = f f = e e = d + T d = c

)( 0

)1( 0

)1( 2

)( 1 )( 2 )( 3

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

)( 4 )( 5

)1( 4 )1( 5

)( 6

)1( 6

-iH -iH )1( 1 -iH -iH -iH -iH -iH -iH

)1( 3

)( 7

)1( 7

Tính giá trị băm H(i) của vòng lặp thứ i iH = a + iH = b + iH = c + iH = d + iH = e + iH = f + iH = g + iH = h +

}

Sau khi lặp 4 bước trên N lần ( sau khi x ử lý M(N)), thông điệp rút gọn 224-bit

N

)

N

)

N

)

N

)

N

)

N

)

N

)

H

H

H

H

H

H

H

( 0

( 1

( 2

( 3

( 4

( 5

( 6

của thông điệp M là

<

v SHA-256

0

l

642

£ SHA-256 được sử dụng để băm thông điệp M dài l bit . Thuật toán

sử dụng

a. Một bảng phân bố thông điệp gồm 64 từ 32-bit

b. 8 biến 32 bit.

c. Một giá trị băm gồm 8 từ 32-bit.

Kết quả của SHA-256 là thông điệp rút gọn 256-bit.

,....,

H

Các từ của bảng phân bố thông điệp được ký hiệu W0, W1, ..., W63. 8 bi ến ký

)( i HH , 0

i )( 1

i )( 7

hiệu a, b, c, d, e, f, g và h. Các từ của giá trị băm ký hiệu , H(0)

giữ giá trị băm ban đầu, được thay thế bằng các giá trị băm thành công H(i) sau khi mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N). SHA-

58

256 cũng sử dụng hai từ đơn tạm T1, T2.

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

0

t

15

M

i )( t

=

W t

}256

}256

+

+

+

)

)

16

t

63

W ( t

W t

W ( t

W t

{ s 1

2

{ s 0

7

15

16

Với i = 0 đến N { Chu ẩn bị bảng phân bố thông điệp {Wt} (cid:236) £ £ (cid:239) (cid:237) (cid:239) £ £ - - - - (cid:238)

Khởi tạo 8 biến a, b, c, d, e, f, g, h với giá trị băm thứ i-1

a =

b =

c =

d =

e =

)1( 0 )1( 1 )1( 2 )1( 3 )1( 4 )1( 5

f =

-iH -iH -iH -iH -iH -iH -iH -iH

)1( 7

256

}

}

256

+

+

+

g = )1( 6

)( e

,( gfeCh

,

)

K

W

{ t

t

(cid:229) h = Với t = 0 đến 63: {

cbaMaj ,( ),

{ 1 )(}

a +

(cid:229) T1 = h + { 256 T2 = 0

1

1 + T2

c = b b = a a = T }

)( 0

)1( 0

)( 1 )( 2 )( 3

)1( 1 )1( 2 )1( 3

)( 4 )( 5

)1( 4 )1( 5

)( 6

h = g g = f f = e e = d + T d = c

)1( 6

iH = a + iH = b + iH = c + iH = d + iH = e + iH = f + iH = g + iH = h +

)( 7

)1( 7

Tính giá trị băm H(i) của vòng lặp thứ i -iH -iH -iH -iH -iH -iH -iH -iH

59

}

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

Sau khi lặp 4 bước trên N lần ( sau khi x ử lý M(N)), thông điệp rút gọn 256-bit

N

)

N

)

N

)

N

)

N

)

N

)

N

)

N

)

H

H

H

H

H

H

H

H

( 0

( 1

( 2

( 3

( 4

( 5

( 6

( 7

của thông điệp M là

<

v SHA-384

0

l

1282

£ SHA-384 được sử dụng để băm thông điệp M dài l bit . Thuật toán

sử dụng

a. Một bảng phân bố thông điệp gồm 80 từ 64-bit

b. 8 biến 64 bit.

c. Một giá trị băm gồm 8 từ 64-bit.

Kết quả của SHA-384 là thông điệp rút gọn 384-bit.

,....,

H

Các từ của bảng phân bố thông điệp được ký hiệu W0, W1, ..., W79. 8 bi ến ký

i )( HH , 0

i )( 1

i )( 7

hiệu a, b, c, d, e, f, g và h. Các từ của giá trị băm ký hiệu , H(0)

giữ giá trị băm ban đầu, được thay thế bằng các giá trị băm thành công H(i) sau khi mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N). SHA-

384 cũng sử dụng hai từ đơn tạm T1, T2.

Với i = 1 đến N

{ Chu ẩn bị bảng phân bố thông điệp {Wt}

0

t

15

M

i )( t

=

W t

}512

}512

+

+

+

)

)

16

t

79

W ( t

W t

W ( t

W t

{ s 1

2

{ s 0

7

15

16

(cid:236) £ £ (cid:239) (cid:237) (cid:239) £ £ - - - - (cid:238)

Khởi tạo 8 biến a, b, c, d, e, f, g, h với giá trị băm thứ i-1

a =

b =

c =

d =

e =

)1( 0 )1( 1 )1( 2 )1( 3 )1( 4 )1( 5

f =

-iH -iH -iH -iH -iH -iH -iH -iH

g = )1( 6

)1( 7

60

h =

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

Với t = 0 đến 63:

}

512

512

}

+

+

+

{

)( e

,( gfeCh

,

)

K

W

{ t

t

(cid:229)

{ 1 )(}

a +

cbaMaj ,( ),

(cid:229) T1 = h + 512 { T2 = 0

1

1 + T2

c = b b = a a = T }

)( 0

)1( 0

)( 1 )( 2 )( 3

)1( 1 )1( 2 )1( 3

)( 4 )( 5

)1( 4 )1( 5

)( 6

f = e h = g g = f e = d + T d = c

)1( 6

iH = a + iH = b + iH = c + iH = d + iH = e + iH = f + iH = g + iH = h +

)( 7

)1( 7

Tính giá trị băm H(i) của vòng lặp thứ i -iH -iH -iH -iH -iH -iH -iH -iH

}

Sau khi lặp 4 bước trên N lần ( sau khi xử lý M(N)), thông điệp rút gọn 384-bit

N

)

N

)

N

)

N

)

N

)

N

)

H

H

H

H

H

H

( 0

( 1

( 2

( 3

( 4

( 5

của thông điệp M là

<

v SHA-512

0

l

1282

£ SHA-512 được sử dụng để băm thông điệp M dài l bit . Thuật toán

sử dụng

a. Một bảng phân bố thông điệp gồm 80 từ 64-bit

b. 8 biến 64 bit.

c. Một giá trị băm gồm 8 từ 64-bit.

61

Kết quả của SHA-512 là thông điệp rút gọn 512-bit.

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

,....,

H

Các từ của bảng phân bố thông điệp được ký hiệu W0, W1, ..., W79. 8 bi ến ký

)( i HH , 0

i )( 1

i )( 7

hiệu a, b, c, d, e, f, g và h. Các từ của giá trị băm ký hiệu , H(0)

giữ giá trị băm ban đầu, được thay thế bằng các giá trị băm thành công H(i) sau khi mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N). SHA-

512 cũng sử dụng hai từ đơn tạm T1, T2.

Với i = 1 đến N

{ Chu ẩn bị bảng phân bố thông điệp {Wt}

0

t

15

M

i )( t

=

W t

}512

}512

+

+

+

)

)

16

t

79

W ( t

W t

W ( t

W t

{ s 1

2

{ s 0

7

15

16

(cid:236) £ £ (cid:239) (cid:237) (cid:239) £ £ - - - - (cid:238)

Khởi tạo 8 biến a, b, c, d, e, f, g, h với giá trị băm thứ i-1

a =

b =

c =

d =

e =

)1( 0 )1( 1 )1( 2 )1( 3 )1( 4 )1( 5

f =

-iH -iH -iH -iH -iH -iH -iH -iH

)1( 7

g = )1( 6

512

}

512

}

+

+

+

h = Với t = 0 đến 63:

)( e

,( gfeCh

,

)

K

W

{ 1

{ t

t

(cid:229) { T1 = h +

)(}

a +

cbaMaj ,( ),

512 { 0

(cid:229) T2 =

1

1 + T2

c = b b = a a = T }

62

h = g g = f f = e e = d + T d = c

)( 0

)1( 0

)( 1 )( 2 )( 3

)1( 1 )1( 2 )1( 3

)( 4 )( 5

)1( 4 )1( 5

)( 6

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

)1( 6

iH = a + iH = b + iH = c + iH = d + iH = e + iH = f + iH = g + iH = h +

)( 7

)1( 7

Tính giá trị băm H(i) của vòng lặp thứ i -iH -iH -iH -iH -iH -iH -iH -iH

}

Sau khi lặp 4 bước trên N lần ( sau khi xử lý M(N)), thông điệp rút gọn 512-bit

N

)

N

)

N

)

N

)

N

)

N

)

N

)

N

)

H

H

H

H

H

H

H

H

( 0

( 1

( 2

( 3

( 4

( 5

( 6

( 7

của thông điệp M là

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

Cohen

4.1.3.1. Sơ lược về hàm băm của Davies-Mayer

Davies-Mayer Hash [15] là một cấu trúc hàm băm dựa trên việc mã hóa theo

khối trong đó độ dài của message digest (thông điệp rút gọn) tính theo bit b ằng với

kích thước kh ối thông điệp (block size) ứng với thuật toán mã hóa được sử dụng.

Davies-Mayer Hash là hàm b ăm mã hóa không c ần sử dụng khóa. Khóa ban đầu được thiết lập mặc định có giá tr ị chính là 2 k-1 với k là kích th ước khóa (key size)

của thuật toán tính bằng bit.

Gọi n, k lần lượt là kích th ước khối và kích th ước khóa của thuật toán được

sử dụng. Hàm mã hóa E sử dụng khóa K được ký hiệu là EK.

Thông điệp ban đầu được chia thành m kh ối có kích th ước n bit. Davies-

=

Mayer hash chính là thực hiện lần lượt m lần các công việc sau:

)

H

X

1

i

( HE X

i

i

i

¯ -

63

Kết quả Hm chính là message digest của thông điệp ban đầu.

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

4.1.3.2. Hàm AES-Hash c ủa Bram Cohen

Các thuật toán mã hóa được sử dụng chủ yếu với chức năng chính là để mã

hóa và giải mã dữ liệu, tuy nhiên các thu ật toán này còn có m ột khả năng ứng dụng

khác ít được đề cập đến đó là được sử dụng như một hàm băm. Bram Cohen đề xuất

việc sử dụng thu ật toán thu ộc chu ẩn AES để làm hàm b ăm (AES-Hash) vào

05/2001.

Theo Bram Cohen[13], AES-Hash là m ột hàm b ăm, có ngh ĩa là AES-Hash

đảm bảo các tính chất của một hàm băm: nhận vào thông điệp ban đầu là một chuỗi

bit có độ dài thay đổi và tr ả về một chu ỗi bit có độ dài c ố định gọi là message

digest(trong AES-Hash của Bram Cohen, độ dài của message digest là 256 bit). Mọi

sự thay đổi dù nh ỏ nh ất của thông điệp ban đầu sẽ làm message digest thay đổi

hoàn toàn. Việc tìm kiếm hai thông điệp ban đầu có thể cho ra cùng message digest 256 bit đòi hỏi ph ải th ực hi ện 2128 phép toán, và c ần 2255 phép toán để tìm thông

điệp ban đầu của một message digest 256 bit.

AES-Hash được mô tả dựa trên cấu trúc c ủa Davies-Mayer Hash. Nói cách

khác, AES-Hash chính là việc sử dụng một biến thể của Davies-Mayer Hash.

AES-Hash sử dụng thu ật toán Rijndael v ới kích th ước kh ối 256 bit, kích

thước khóa 256 bit để thực hiện.

Quá trình thực hiện AES-Hash gồm các bước:

• Mở rộng thông điệp.

Thông điệp được mở rộng để có kích th ước bằng một bội số chẵn nhỏ nhất (lớn

hơn kích thước thông điệp) của kích thước khối. Việc này được thực hiện bằng cách

thêm vào các bit zero vào cuối thông điệp sao cho kích thước đạt được là một bội số

lẻ nhỏ nhất (lớn hơn kích th ước thông điệp) của 128 bit. Sau đó thêm 128 bit ch ứa

64

giá trị chiều dài ban đầu của thông điệp.

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

Ví dụ:

Thông điệp ban đầu:

1110 1011 0010 0110 0011 0110 0111 1011 1001 1001 (40 bit).

Thông điệp mở rộng sẽ có độ dài: 40 bit ban đầu + (128 – 40) bit 0 m ở rộng + 128

bit thể hiện giá trị 101000 (= 40 decimal).

1110 1011 0010 0110 0011 0110 0111 1011 1001 1001 000....... ..000 0......001 0 1000           128 bits bits bits 40

88

Thông điệp mở rộng:

• Chia thông điệp thành n khối có kích th ước bằng kích th ước khối của thuật

toán.

Chia thông điệp đã mở rộng thành n khối x1, x2, ... xn, mỗi khối có kích th ước 256

bit.

256

=

• Áp dụng Davies-Mayer Hash bằng thuật toán Rijndael n lần cho n khối.

2

1

H

0

=

-

(

)

0(

)

HEH

H

£< i

n

1

1

i

X

i

i

i

¯ - -

• Áp dụng thao tác bổ sung cuối để thu được message digest.

)

H

H

=+

1

n

( HE H

n

n

n

¯

Hn+1 chính là message digest của thông điệp ban đầu.

4.1.3.3. So sánh Davies-Mayer Hash và AES-Hash

Davies-Mayer Hash được chứng minh rằng để tìm thông điệp ban đầu thứ 2 có

cùng kết qu ả message digest v ới thông điệp ban đầu cho tr ước (the second preimage) cần ph ải th ực hi ện 2n thao tác, để tìm hai thông điệp có cùng k ết qu ả message digest (collision) c ần thực hiện 2n/2 thao tác. Do đó, để đạt được mức độ

65

bảo mật có thể chấp nhận được thì kích th ước khối đòi hỏi phải lớn. Vào thời điểm

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

hiện tại (n ăm 2004), kích th ước kh ối ph ải lớn hơn 80 bit để tránh 2 nd preimage

attack và lớn hơn 160 bit để tránh collision attack. Điều này có ngh ĩa không th ể sử

dụng các thu ật toán mã hóa có kích th ước khối 64bit (ví d ụ như DES, IDEA...) để

thực hi ện Davies-Mayer Hash. M ột điều lưu ý khác là Davies-Mayer Hash được

xem là không an toàn khi sử dụng các thuật toán DES-X (Tripple DES).

AES-Hash áp d ụng Davies-Mayer Hash, s ử dụng thuật toán Rijndael 256 bit nên đảm bảo được độ an toàn đối với 2nd preimage attack và collision attack. Ngoài

ra, AES-Hash còn th ực hiện thao tác bổ sung cuối để tăng chi phí khi t ấn công hàm

băm. Do đó, mức độ an toàn b ảo mật của hàm b ăm AES-Hash sẽ được tăng đáng

kể.

Tuy nhiên AES-Hash ch ưa được NIST công nh ận là chu ẩn hàm băm an toàn.

Lý do được đưa ra là AES-Hash đòi hỏi phải thực hiện thuật toán Rijndael với kích

thước khối 256 bit, không ph ải 128 bit như trong chuẩn đề nghị Rijndael của NIST.

Tuy nhiên, NIST v ẫn đưa AES-Hash vào danh sách đề ngh ị chu ẩn hàm b ăm an

toàn[29] vì trong t ương lai, kích th ước khối của Rijndael sẽ không dừng ở 128 bit.

AES-Hash có thể phù hợp với chuẩn hàm băm và chuẩn AES trong tương lai.

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

Một trong các l ợi điểm chính của mã hóa khóa công khai chính là vi ệc cung

cấp một phương pháp để tạo chữ ký điện tử. Đối với văn bản trên giấy, người dùng

có thể sử dụng chữ ký tay để xác nh ận nội dung và ngu ồn gốc của thông tin trong

văn bản. Tuy nhiên đối với các văn bản điện tử rất dễ dàng sửa đổi nội dung thông

tin văn bản mà không để lại dấu vết. Nhờ vào việc áp dụng các tính chất của mã hóa

khóa công khai, ch ữ ký điện tử ra đời để đáp ứng nhu cầu xác nhận tính trung th ực

của nội dung văn bản điện tử. Chữ ký điện tử là một chuỗi nhị phân có khả năng xác

thực nguồn gốc dữ liệu, tính toàn vẹn dữ liệu và tránh sự phủ nhận trách nhiệm của

người gởi. Một chữ ký điện tử đóng vai trò t ương tự như chữ ký vi ết tay trên các

văn bản. Tuy nhiên, m ột chữ ký viết tay có th ể bị giả mạo trong khi ch ữ ký điện tử

66

gần như không thể giả mạo.

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

Cách th ức để tạo ch ữ ký điện tử dựa trên vi ệc mã hóa thông tin xác nh ận

bằng khóa riêng của người dùng. Nếu người nhận giải mã chính xác thông tin b ằng

khóa công khai của người gởi thì nội dung thông tin của văn bản được chứng thực.

Các văn bản cần được xác nh ận thông th ường có kích th ước khá l ớn trong

khi việc mã hóa bằng các thuật toán mã hóa khóa công khai l ại có tốc độ khá chậm.

Để tăng tốc độ ký nh ận và xác nh ận ch ữ ký điện tử đồng th ời gi ảm kh ối lượng

truyền tải, chữ ký điện tử được thực hiện trên message digest (thông điệp rút gọn)

của văn bản. Message digest thu được bằng cách s ử dụng các hàm b ăm đã đề cập

trong phần 4.1.

Chữ ký điện tử có ý ngh ĩa rất lớn trong thương mại điện tử do khả năng xác

nhận sự toàn vẹn và nguồn gốc của thông tin được trao đổi qua mạng. Đặc biệt, chữ

ký điện tử đóng vai trò r ất quan tr ọng trong vi ệc thanh toán tr ực tuyến và t ạo các

chứng nhận điện tử để giao dịch.

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

Phương pháp RSA có thể được áp dụng trong chữ ký điện tử. Khóa riêng được

dùng để tạo chữ ký. Khóa công khai được dùng để xác nh ận chữ ký. Để nâng cao

tốc độ xử lý, thu ật toán băm MD5 được sử dụng để tạo thông điệp rút gọn của văn

bản cần ký. Việc tạo và xác nhận chữ ký sẽ được thực hiện trên thông điệp rút gọn.

v Quá trình tạo chữ ký bằng RSA

• Giả sử A có khóa công khai là (n, e) và khóa riêng là d, gọi văn bản cần ký là

M, A tạo message digest của M bằng hàm băm H là H(M).

= YHM

()modd

n

• A dùng khóa riêng d để mã hóa H(M) bằng phương pháp RSA:

67

• Y chính là chữ ký điện tử của văn bản M.

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

v Quá trình xác nhận chữ ký bằng RSA

• Gọi M’ bản sao văn bản M mà B nhận được từ A, và Y là chữ ký điện tử của

M, B tạo message digest của M’ bằng hàm băm H là H(M’).

HMY

= ()mod e

n

• B dùng khóa công khai c ủa A là ( n, e) để gi ải mã ch ữ ký điện tử Y bằng

phương pháp RSA:

• Nếu H(M’) = H(M), chữ ký điện tử được xác nhận và người nhận có thể đảm

bảo văn bản được gởi là xác thực.

• Nếu H(M’) „ H(M), văn bản đã bị sửa đổi hoặc văn bản không được ký bằng

đúng chữ ký của người gởi. Thông tin văn bản được xem là không hợp lệ.

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

Thuật toán ch ữ ký điện tử DSA (Digital Signature Algorithm) là thu ật toán

được đề ngh ị trong chu ẩn ch ữ ký điện tử DSS (Digital Signature Standard) c ủa NIST1. Thuật toán DSA cung c ấp một trình t ự để tạo và xác nh ận ch ữ ký điện tử

trên văn bản điện tử. DSA s ử dụng một cặp khóa công khai – khóa riêng. Khóa

riêng sử dụng trong quá trình t ạo chữ ký, khóa công khai s ử dụng trong quá trình

xác nhận chữ ký. Trong cả hai giai đoạn ký và xác nh ận, văn bản được ký thể hiện

dưới dạng thông điệp rút gọn là kết quả của việc áp dụng hàm băm SHA-1 lên v ăn

bản cần ký.

4.2.2.1. Các tham s ố của DSA

p = giá trị nguyên tố modulus. Trong đó 2L-1 < p < 2L với 251 ≤ L ≤ 1024.

q = giá trị nguyên tố divisor của p -1. Trong đó 2159 < q < 2160.

g = h(p-1)/q mod p. Trong đó h là số nguyên bất kỳ 1 < h < p–1 sao cho

h(p-1)/q mod p > 1

1 Chuẩn chữ ký điện tử DSS (Digital Signature Standard) được mô tả và công bố trong tài liệu FIPS 186-2 của NIST.

68

x = một số nguyên ngẫu nhiên 0 < x < q.

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

y = gx mod p.

k = một số nguyên ngẫu nhiên 0 < k < q.

Các tham số p, q, g là các tham số chung công khai, có thể sử dụng cho nhiều

người dùng với nhiều chữ ký khác nhau.

Tham số x và y theo thứ tự là khóa riêng và khóa chung của người ký.

Tham số x và k là các tham số bí mật chỉ sử dụng để tạo chữ ký điện tử.

Tham số k phải được phát sinh ngẫu nhiên khác nhau đối với mỗi chữ ký.

4.2.2.2. Quá trình t ạo chữ ký bằng DSA

k

=

r

(

g

mod

p

)

Chữ ký điện tử của văn bản M là một cặp số r, s được tính như sau:

1

=

q mod +

s

(

k

(SHA

(1

M

)

xr

))

mod

q

-

Trong đó k-1 chính là ngh ịch đảo của k trên trường hữu hạn q: (k-1k) mod q =

1. Chữ ký điện tử sẽ được gởi kèm với thông điệp ban đầu đến người nhận.

4.2.2.3. Quá trình xác nh ận chữ ký bằng DSA

Ngược lại với quá trình tạo chữ ký điện tử là quá trình xác nh ận chữ ký điện

tử. Trong quá trình xác nh ận chữ ký điện tử, các tham số p, q, g và khóa công khai

của người gởi được sử dụng.

Gọi M', r' và s' là các phiên b ản nhận được của M, r, s. Gọi y là khóa công

khai của người gởi. Để xác nhận chữ ký, người nhận cần phải kiểm tra điều kiện 0 <

r' < q và 0 < s' < q. Nếu điều kiện trên bị vi phạm, chữ ký điện tử không hợp lệ sẽ bị

69

từ chối.

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

Người nhận tính các giá trị sau:

w = (s')-1 mod q

u1 = ((SHA1(M'))w) mod q.

u2 = ((r')w) mod q.

1 · v = ((gu

2) mod p) mod q.

yu

Nếu v = r', chữ ký điện tử được xác nhận và người nhận có thể đảm bảo văn

bản được gởi là xác thực.

Nếu v ≠ r', văn bản đã bị sửa đổi hoặc văn bản không được ký bằng đúng chữ

ký của người gởi. Thông tin văn bản được xem là không hợp lệ.

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

Do chữ ký điện tử phát triển trên nền tảng mã hóa bằng khóa công khai nên một

thuật toán ch ữ ký điện tử đã được phát tri ển trên đường elliptic curve (Elliptic

Curve Digital Signature Algorithm). Ch ữ ký điện tử trên ellipitic curve có ưu điểm

là kích th ước khóa nh ỏ nên dễ dàng tạo khóa để ký nh ận và gi ảm lượng thông tin

truyền tải.

4.2.3.1. Các tham s ố của ECDSA

Để thực hiện tạo và xác nh ận chữ ký điện tử bằng ECDSA, cần thống nhất các

tham số được sử dụng sau:

• Đưòng cong elliptic curve E.

• Điểm P, P ˛ E. Điểm P có bậc n (n· P = O).

• Chọn một số nguyên b ất kỳ d, d ˛ [2, n-2]. Số nguyên này chính là khóa

riêng .

• Tính giá trị của điểm Q = d· P. Q˛ E. Q chính là khóa công khai.

Các tham s ố E, P, Q được công khai, tham s ố d được gi ữ bí m ật và ch ỉ sử dụng

70

trong quá trình tạo khóa.

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

4.2.3.2. Quá trình t ạo chữ ký bằng ECDSA

Tạo message digest của văn bản cần ký M bằng hàm băm H. Message digest

của văn bản được chuyển thành một số nguyên e.

Chọn một số nguyên ng ẫu nhiên k ˛ [2, n – 2]. Đây là giá tr ị bí m ật khác

nhau cho mỗi lần tạo chữ ký.

Tính giá trị của điểm (x, y) = k· P và biểu diễn x dưới dạng số nguyên z.

Tính giá trị r = z mod n.

Tính giá trị s = k-1(e + dr) mod n.

Cặp số nguyên (r, s) chính là chữ ký của văn bản M và được gởi kèm với văn bản M

đến người nhận.

4.2.3.3. Quá trình xác nh ận chữ ký bằng ECDSA

Gọi M', r', s' là các phiên bản nhận được của M, r, s.

Tạo message digest c ủa M' bằng hàm băm H. Hàm băm H phải là hàm b ăm

được sử dụng trong quá trình t ạo chữ ký. Bi ểu diễn message digest thu được dưới

dạng một số nguyên e.

Tính giá trị c = (s')-1 mod n.

Tính giá trị u1 = e· c mod n

Tính giá trị u2 = r· c mod n

P + u2 ·

Q, biểu diễn x dưới dạng số nguyên z. Tính giá trị điểm (x, y) = u1·

Tính v = z mod n

Nếu v = r', chữ ký điện tử được xác nhận và người nhận có thể đảm bảo văn

bản được gởi là xác thực.

Nếu v ≠ r', văn bản đã bị sửa đổi hoặc văn bản không được ký bằng đúng chữ

71

ký của người gởi. Thông tin văn bản được xem là không hợp lệ.

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

Chương 5.

Tổng quan về PDA và môi trường phát

triển .NET Compact Framework

Dẫn nhập: Chúng ta đã tìm hiểu về lý thuyết mã hóa cùng các thu ật toán liên quan

trong các chương trước, chương 5 sẽ trình bày tổng quan và các đặc điểm của thiết

bị trợ giúp cá nhân kỹ thuật số PDA, những hệ điều hành sử dụng trên PDA và giới

thiệu sơ lược về môi trường phát triển .NET Compact Framework cho các ứng dụng

thực thi trên PDA.

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

Thuật ng ữ “Personal

Digital Assistant”(PDA) l ần

đầu tiên được công ty Apple

Computer đưa ra và gi ới

thiệu cho toàn th ế gi ới vào

tháng 01/1992 tại Comdex -

hội ch ợ hàng điện tử tiêu dùng Hoa K ỳ 1. PDA dùng

để ch ỉ tất cả các thi ết bị di

động có ch ức năng lưu tr ữ

thông tin, thực hiện tính toán

và các ch ức năng hỗ tr ợ cá

nhân khác nh ư: tổ ch ức lịch

1 Comdex – The Consumer Electronics Show.

72

hẹn, tổ chức sổ địa chỉ....

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

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

Đặc tính n ổi tr ội của PDA là nh ỏ gọn, PDA

thông thường có th ể nằm gọn trong lòng bàn tay và

cân nặng chỉ khoảng 4 o.z (~ 120 grams).

PDA thực hiện nhập liệu thông qua các thi ết bị bàn

phím và stylus.

• Bàn phím trong PDA được chia làm 2 lo ại:

bàn phím rời và bàn phím logic.

o Bàn phím r ời được thi ết kế nh ỏ và

tháo lắp dễ dàng giúp ng ười dùng có th ể gi ảm tối đa kích th ước và

trọng lượng khi cần.

o Bàn phím logic (còn g ọi là bàn phím ảo hay onscreen keyboard) là

một chương trình hi ển thị bàn phím tr ực tiếp trên màn hình c ảm ứng,

người dùng sử dụng stylus nhấn vào các ký tự để nhập thông tin.

• Stylus tương tác v ới màn hình c ảm ứng thay cho con tr ỏ chu ột. Một số hệ

điều hành trên PDA có ch ức năng nhận dạng chữ viết để người dùng có th ể

viết thông tin lên màn hình cảm ứng thay cho bàn phím.

Các thiết bị PDA sử dụng bộ xử lý RISC (Reduced Instruction Set Computer):

chỉ th ực hi ện 1 l ệnh trong 1 chu k ỳ CPU . M ỗi lệnh 32bit s ẽ có 32 bit d ữ li ệu đi

kèm. Vì vậy, bộ xử lý luôn biết được phải đọc bao nhiêu dữ liệu[10].

PDA sử dụng các Object Store là m ột vùng nh ớ trên RAM. Có 2 lo ại Object

Store là Storage Object Store dùng để lưu trữ dữ liệu và Program Object Store dùng

để lưu trữ chương trình th ực thi. Thông tin trên các Object Store không b ị mất khi

73

hết pin vì Object Store sử dụng pin dự trữ.

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

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

Nhược điểm chung của các thiết bị PDA là sự hạn chế về bộ nhớ, hạn chế về

xử lý và hạn chế về khả năng tương tác với người dùng.

Các thiết bị PDA ngày nay s ử dụng tối thiểu khoảng 32Mb bộ nhớ[6]. Vùng

nhớ này được sử dụng chung cho 2 m ục đích lưu tr ữ dữ li ệu và th ực thi ch ương

trình. Việc phân chia t ỉ lệ giữa hai vùng nh ớ này do h ệ điều hành quyết định, vùng

nhớ lưu trữ càng nhiều thì vùng nhớ thực thi chương trình càng ít.

Tốc độ xử lý của PDA hiện nay chỉ khoảng 200MHz - 400MHz, x ấp xỉ 1/10

tốc độ máy tính để bàn thông th ường. Các ứng dụng chạy trên PDA ph ải đảm bảo

thời gian chờ không quá dài và phải được cài đặt tối ưu về mặt xử lý.

Thiết bị PDA có gi ới hạn màn hình nh ỏ gây khó kh ăn cho vi ệc thiết kế giao

diện của các ứng dụng. Kích thu ớc màn hình nh ỏ cũng gây khó kh ăn để bố trí vi ệc

nhập liệu và tạo cảm giác không thân thiện cho người dùng. PDA sử dụng bàn phím

ảo chi ếm một ph ần màn hình có th ể che l ấp các ô nh ập li ệu. Sử dụng stylus trên

PDA không th ể gi ả lập vi ệc nh ấn nút ph ải chu ột nh ư trên máy tính để bàn thông

thường. Đồng th ời ng ười dùng c ũng không th ể th ực hi ện nh ững thao tác k ết hợp

giữa bàn phím và stylus cùng lúc.

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

Trong thời gian đầu, mỗi công ty cung c ấp thiết bị mua bản quyền hệ điều hành

chạy trên PDA (h ệ điều hành nhúng) c ủa một công ty s ản xu ất ph ần mềm khác

nhau. Do đó thiết bị PDA của các hãng s ản xuất khác nhau s ẽ sử dụng các hệ điều

hành khác nhau dẫn đến tình trạng ngăn cản sự phát triển đồng bộ của các ứng dụng

chạy trên PDA. Hiện nay, sự phân chia th ị trường của hệ điều hành nhúng đang có

khuynh hướng thu hẹp dần và thị phần tập trung nhiều vào các hệ điều hành của các

74

công ty lớn có uy tín trên thế giới như:

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

• Windows CE của công ty Microsoft

• Symbian OS (tiền thân là hệ điều hành EPOC) của công ty Symbian.

• Palm OS của công ty Palm Pilot.

• Embedded Linux

Trong khi th ị phần của các hệ điều hành khác nh ư Symbian OS, Palm OS đang

được gia tăng, hệ điều hành Windows CE của công ty Microsoft vẫn chiếm được ưu

thế do đây là một hệ điều hành thuộc họ Windows. Windows CE (và các s ản phẩm

kế thừa của Windows CE nh ư Pocket PC, SmartPhone...) đã trở nên quen thu ộc với

người sử dụng và lập trình viên.

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

Windows CE phiên b ản đầu tiên 1.0 được

công ty Microsoft đưa ra th ị tr ường vào tháng

11/1996. Windows CE là phiên b ản thu nh ỏ của hệ

điều hành Windows 32bit. Windows CE ban đầu

được thi ết kế để sử dụng trên thi ết bị Handheld PC

nhưng gi ờ đây, Windows CE m ở rộng ph ạm vi s ử

dụng đến các thi ết bị di động (handheld PC, palm-

size PC, mobile ....), các thi ết bị điều khiển công nghi ệp và các thi ết bị điện tử tiêu

dùng cao cấp (thiết bị giải trí, điều khiển trên xe hơi...).[6]

Windows CE có tính n ăng nhỏ gọn, có thể được điều chỉnh để thích hợp với

các thiết bị khác nhau. Nhà phát tri ển có th ể chọn lựa để sử dụng – cài đặt một số

tính năng của Windows CE để giảm kích th ước và giá thành cho phù h ợp với thiết

bị. Windows CE cung c ấp một ph ần các hàm API c ủa Windows. Có m ột số hàm

API trong Windows đã bị lược bớt. Windows CE không h ỗ trợ console application,

hook, sizing window (ch ỉ có maximize và minimize). Trong Windows CE, các

75

chuỗi được sử dụng đều là chuỗi Unicode.

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

Windows CE có kh ả năng quản lý bộ nhớ chính đến 1Gb, quản lý bộ nhớ ảo

theo từng block 64Kb. S ố lượng tiến trình (process) ch ạy đồng thời trên Windows

CE bị giới hạn ở 32 processes, và s ố lượng threads trong một process là không gi ới

hạn. Các process có độ ưu tiên ngang nhau, Windows CE th ực hiện điều phối dựa

trên độ ưu tiên c ủa các threads. Windows CE không có khái ni ệm th ư mục hi ện

hành nên tất cả tập tin phải được truy xuất bằng đường dẫn tuyệt đối.[10]

Phiên bản mới nh ất hi ện nay là Windows CE 4.2 (Windows CE .NET) có

tích hợp sẵn công nghệ .NET Compact Framework mới nhất của Microsoft.

5.2.2. Giới thiệu Pocket PC

Pocket PC là m ột bi ến th ể của hệ

điều hành nhúng Windows CE s ử dụng cho

thiết bị di động. Pocket PC được phát tri ển

trên nền Windows CE 3.0 v ới các tính n ăng

và giao di ện được thi ết kế đặc tr ưng để sử

dụng trên các thiết bị trợ giúp cá nhân PDA.

Phiên bản đầu tiên c ủa dòng Pocket PC là

Microsoft Pocket PC 2000 được tung ra th ị

trường vào 04/2000. Phiên b ản mới nhất và

hiện đang rất thông d ụng là Microsoft

Pocket PC 2003.

Pocket PC gi ải quy ết được vấn đề của

Windows CE trên PDA là giao di ện ph ức

tạp, có quá nhi ều tính năng làm giảm tốc độ

xử lý... Đồng thời Microsoft cũng đã tích hợp vào Pocket PC một số ứng dụng quen

thuộc đối với ng ười dùng nh ư Internet Explorer, Microsoft Reader, Word, Excel,

76

Outlook và Windows Media Player.

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

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

.NET Compact Framework (.NET CF) là m ột nền tảng phát triển cho các thiết

bị di d ộng. .NET CF là m ột ph ần của th ư vi ện .NET Framework trên desktop đã

được thiết kế lại để thích hợp với việc phát triển ứng dụng trên PDA. Các ứng dụng

viết trên nền .NET Compact Framework vẫn chạy tốt trên nền .NET Framework.

NET CF có đặc tính nh ỏ gọn, một số hàm trong th ư vi ện API c ủa .NET

Framework bị lược bỏ trong .NETCF. Do phát tri ển cho PDA nên m ột số hàm đồ

họa GDI, các hàm để mã hóa b ảo mật được loại bỏ khỏi .NET CF. .NET CF được

thiết kế với mục đích cho phép các ứng dụng .NET chạy trên tất cả các thiết bị PDA

với tất cả hệ điều hành tuy nhiên hi ện tại .NET CF chỉ có bản phát triển trên nền hệ

điều hành Windows CE.

.NET CF hoạt động tương tự một máy ảo, cho phép các ứng dụng được viết một

lần có th ể chạy trên bất kỳ loại CPU nào k ể cả máy tính để bàn bằng cách tạo các

bản release t ương ứng cho t ừng lo ại CPU. Tuy .NET CF ch ỉ mới phát tri ển trên

Windows CE nh ưng kế hoạch xây dựng .NET CF trên các h ệ điều hành khác đang

được tiến hành, bắt đầu từ Embedded Linux.

.NET CF s ử dụng bộ gom rác t ự động (auto garbage collector) giúp l ập trình

viên giảm thiểu các lỗi về rò rỉ bộ nhớ (vốn đã có gi ới hạn ở PDA) làm t ăng hiệu

quả hoạt động của các ứng dụng và giảm chi phí phát triển.

Các lập trình viên có th ể sử dụng các hàm s ẵn có trong b ộ thư viện của .NET

CF đã được kiểm tra ch ạy ổn định và tối ưu trên PDA. Đồng thời do các ứng dụng

chạy trên các phân hệ khác như Desktop, PDA, Mobile Web có th ể dễ dàng chia sẻ

mã nguồn nên lập trình viên có th ể tái sử dụng các ứng dụng đã phát tri ển trên các

phân hệ trên. Điều này làm gi ảm rất nhiều công sức, thời gian và chi phí phát tri ển

77

phần mềm.

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

Với nh ững ưu điểm nổi tr ội trên, xu h ướng hi ện nay là s ử dụng .NET CF để phát tri ển ứng dụng trên PDA 1, đặc bi ệt là các ứng dụng ch ạy trên Windows

1 Một trong những đối thủ lớn của .NET CF trong việc phát triển ứng dụng trên PDA là công nghệ J2ME của hãng Sun System, phát triển trên nền máy ảo Java.[32]

78

CE.NET các biến thể của nó như PocketPC, SmartPhone.

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

Chương 6. Xây d ựng ứng dụng bảo mật trên PDA -

vấn đề và giải pháp

Dẫn nhập: Chương 6 trình bày các v ấn đề lập trình viên sẽ gặp phải khi xây dựng

ứng dụng bảo mật trên PDA. Ch ương 6 cũng đề xuất các ph ương pháp nh ằm giải

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

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

6.1.1. Khả năng tính toán

Một trong các h ạn ch ế của PDA là kh ả năng

tính toán c ủa thi ết bị. Các thi ết bị có b ộ xử lý ch ậm

hơn nhi ều so v ới máy tính để bàn thông th ường. Các

vi mạch ph ổ bi ến trên PDA có t ốc độ bằng kho ảng

1/10 tốc độ của máy để bàn. Một vấn đề khác là thi ết

bị PDA sử dụng bộ xử lý RISC chỉ thực hiện một lệnh

trong một chu k ỳ CPU nên th ời gian tính toán s ẽ kéo

dài hơn.[6]

Các ứng dụng bảo mật thông th ường có yêu c ầu về tốc độ tính toán r ất lớn.

Để thực hiện mã hóa hoặc tạo chữ ký điện tử cần rất nhiều thao tác tính toán s ố học

khá ph ức tạp. Các phép tính được thao tác trên s ố nguyên r ất lớn, đồng th ời vi ệc

thực hiện lũy thừa hoặc kiểm tra số nguyên tố rất tốn tài nguyên bộ nhớ và bộ xử lý.

Do đó, việc xây dựng các ứng dụng bảo mật phải xem xét k ỹ và tối ưu hoá về mặt

xử lý tính toán để làm gi ảm thời gian ch ờ cho ng ười sử dụng. Ngoài ra, kh ả năng

tạo khóa trên máy PDA là khó có thể thực hiện do độ phức tạp cao làm bùng nổ thời

gian chờ.

Với các lý do trên, ứng dụng bảo mật phải có tốc độ thực hiện trong khoảng

thời gian chấp nhận được đối với người dùng. Khi t ạo ứng dụng bảo mật trên PDA

phải có các c ơ ch ế thông báo cho ng ười dùng r ằng ch ương trình đang được th ực

79

hiện và yêu cầu người dùng chờ chương trình thực hiện.

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

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

PDA có b ộ nh ớ lưu tr ữ nh ỏ và không

gian bộ nh ớ để th ực thi ch ương trình c ũng bị

hạn ch ế. Mặc dù đã có các thi ết bị th ẻ nh ớ để

làm tăng bộ nh ớ nh ưng vi ệc hạn ch ế về kh ả

năng lưu tr ữ của PDA c ũng gây khó kh ăn cho

lập trình viên xây dựng các ứng dụng. Điều này

dẫn đến vi ệc các ứng dụng chạy trên PDA ph ải được tối ưu về kích th ước tập tin

thực thi và l ượng bộ nh ớ sử dụng trong khi thi hành ch ương trình. L ập trình viên

cần phải quản lý cẩn thận mỗi khi cấp phát ho ặc hủy bộ nhớ sao cho l ượng bộ nhớ

được sử dụng phải nhỏ nhất và không gây đụng độ với các chương trình khác đang

thực hiện trong PDA.

Các ứng dụng bảo mật cần một lượng bộ nhớ để có thể lưu trữ các thông tin

về khóa của ng ười dùng. N ếu số lượng khóa liên l ạc người dùng c ần lưu trữ tăng

cao thì sẽ chiếm khá nhiều bộ nhớ của PDA. Do đó, các ứng dụng PDA cần phải tổ

chức cấu trúc lưu trữ khóa sao cho ít tốn bộ nhớ nhất, kích thước tập tin thực thi và

kích thước bộ nhớ chiếm dụng khi thực thi phải tối thiểu.

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

PDA sử dụng stylus và bàn phím ảo để thao tác trên màn hình c ảm ứng có kích th ước nh ỏ. Việc nhập liệu trên PDA khó kh ăn, lập trình viên cần thi ết kế các h ộp tho ại đơn gi ản, dễ thao tác. Một điều cần lưu ý là các control nh ập li ệu nên được đặt ở ph ần trên c ủa màn hình, tránh tr ường hợp bàn phím ảo sẽ che mất control.

Do PDA khó thao tác nh ập liệu nên việc nhập thông tin khóa trong ứng dụng

bảo mật cũng khá khó kh ăn. Lập trình viên c ần tránh vi ệc thực hiện nhập trực tiếp

khóa vào ứng dụng đồng thời cần có cơ chế che d ấu thông tin m ật kh ẩu khi nh ập

80

trực tiếp.

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

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

Do PDA chỉ vừa mới được công bố và đưa vào sử dụng trong khoảng 10 năm

trở lại đây nên hệ thống các th ư viện hàm để xây dựng ứng dụng trên PDA còn r ất

hạn chế về số lượng cũng như chức năng thực hiện. Hầu hết các ứng dụng hiện tại

đang chạy trên PDA đều được lập trình viên xây dựng từ đầu. Các công cụ để hỗ trợ

lập trình trên PDA c ũng chưa phong phú. Th ư viện lập trình tốt nhất đang được sử

dụng chính là h ệ thống hàm API Windows CE c ủa hãng Microsoft và b ộ thư viện

J2ME của Sun.

Năm 2001, Microsoft phát hành phiên b ản đầu tiên c ủa th ư vi ện lập trình

.NET Compact Framework. NET Compact Framework cung c ấp các hàm dựng sẵn

để hỗ trợ cho vi ệc phát tri ển ứng dụng trên PDA. .NET Compact Framework được

tích hợp sẵn trong bộ công cụ Visual Studio .NET 2003 và h ệ điều hành Windows

CE 4.x. T ừ đó số lượng lập trình viên nghiên c ứu xây d ựng ứng dụng PDA ngày

càng tăng.

Do thư viện lập trình trên PDA còn ít và vi ệc bảo mật ứng dụng trên PDA ch ỉ

mới được quan tâm gần đây nên các thư viện và hàm hỗ trợ chức năng bảo mật trên

PDA rất hạn chế. Nếu như .NET Framework phiên b ản trên Desktop cung c ấp một

số lượng lớn các hàm để mã hóa n ằm trong gói System.Security.Cryptography thì

trong .NET Compact Framework, gói Cryptography đã bị lo ại bỏ, ch ỉ còn l ại các

hàm về chứng nhận điện tử.

Windows CE có cung c ấp bộ thư viện CryptoAPI để thực hiện mã hóa thông

tin trên PDA nh ưng khả năng hỗ trợ và mức độ bảo mật của CryptoAPI ch ỉ ở mức

độ trung bình. J2ME có cung c ấp gói cryptography để mã hóa nh ưng việc sử dụng

khá ph ức tạp và t ốc độ xử lý r ất ch ậm nên ít đạt được sự quan tâm c ủa lập trình

81

viên.

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

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

Thực hiện xây dựng một ứng dụng về bảo mật trên PDA đòi hỏi ph ải có các tính

chất quyết định sau:

• Ứng dụng phải có tốc độ xử lý ch ấp nhận được đối với người sử dụng. Do

hạn chế về mặt xử lý của PDA và đặc tính của công vi ệc mã hóa đòi hỏi rất

nhiều thao tác tính toán nên t ốc độ xử lý sẽ là tính ch ất quyết định sự thành

công của một ứng dụng bảo mật trên PDA.

• Ứng dụng phải có độ bảo mật cao. Các thu ật toán được sử dụng trong ứng

dụng phải đảm bảo được mức độ bảo mật tương ứng. PDA rất dễ bị mất hoặc

bị đánh cắp do đó dữ liệu phải được mã hóa với độ bảo mật cao.

Các giải pháp có th ể đề cập đến trong quá trình xây d ựng ứng dụng bảo mật trên

PDA là sử dụng các thư viện sẵn có hoặc tự xây dựng thư viện mã hóa riêng.

6.2.1. CryptoAPI

CryptoAPI là b ộ th ư vi ện dựng sẵn của Microsoft dành cho h ệ điều hành

Windows (bao gồm Windows CE).

CryptoAPI cung c ấp cho lập trình viên các ch ức năng mã hóa quy ước, mã

hóa khóa công khai, t ạo và xác nh ận ch ữ ký điện tử, tạo và s ử dụng ch ứng nh ận

điện tử. CryptoAPI phiên bản 2.0 mới nhất hiện nay cung cấp 197 hàm phục vụ cho

mã hóa trong đó chỉ có 76 hàm được hỗ trợ trên Windows CE.

Ưu điểm của CryptoAPI là t ốc độ xử lý. Do CryptoAPI được viết hoàn toàn

chỉ để sử dụng trên hệ điều hành Windows nên mã ngu ồn của CryptoAPI đã được

tối ưu hóa với tốc độ cao nhất khi chạy trên nền Windows. Ngoài ra CryptoAPI còn

cung cấp khá đa dạng các thuật toán mã hóa phổ biến hiện nay như:

82

• Mã hóa quy ước: DES, TrippleDES, RC2, RC4. • Mã hóa khóa công khai: RSA • Hàm băm: MD5, SHA-1 • Chữ ký điện tử: DSA, RSA

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

Tuy CryptoAPI cung c ấp khá đa dạng các thu ật toán nh ưng các thu ật toán của

CryptoAPI chỉ hỗ trợ kích thước khóa nhỏ. Đối với RSA CryptoAPI chỉ hỗ trợ khóa

có chiều dài 128 bit. Ngoài ra CryptoAPI ch ưa hỗ trợ các thu ật toán mới và được

xem là an toàn vào thời điểm hiện tại.

Một đặc điểm nữa của CryptoAPI là CryptoAPI ch ỉ có th ể sử dụng trên nền

Windows. Do đó đối với các hệ thống không được xây dựng trên nền Windows thì

CryptoAPI không hỗ trợ.

Với các đặc điểm trên, CryptoAPI thích h ợp cho các ứng dụng xây dựng để

sử dụng trên h ệ điều hành Windows v ới mức độ bảo mật ở mức trung bình.

CryptoAPI đã giải quyết được một phần các nhu cầu về bảo mật trên thiết bị PDA.

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

Một giải pháp khác có th ể được xem xét đến chính là vi ệc xây dựng lại thư

viện bảo mật. Với các ứng dụng đòi hỏi độ bảo mật cao và có các tính năng quy ước

riêng, việc xây dựng lại thư viện mã hóa là cần thiết.

Thư viện mã hóa SPDA Cryptolib (Security – Personal – Digital – Assistant

Cryptography Library) được xây d ựng trên n ền .NET Compact Framework. Th ư

viện bao g ồm các hàm h ỗ tr ợ các ch ức năng mã hóa quy ước, mã hóa khóa công

khai, chữ ký điện tử, hàm băm, trao đổi khóa.

• Mã hóa quy ước: DES, Tripple DES, Rijndael, Serpent, Mars, RC6,

TwoFish.

• Mã hóa khóa công khai: RSA.

• Hàm băm: MD5, SHA-1, SHA256, SHA224, SHA384, SHA512.

• Chữ ký điện tử: RSA, DSA, ECDSA.

83

• Trao đổi khóa: Diffie-Hellman ,ECDH.

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

Ưu điểm của thư viện mã hóa t ự viết là có tính b ảo mật cao. Các thu ật toán

bảo mật mới nhất đều được cung cấp trong th ư viện SPDA Cryptolib Bên c ạnh đó,

các thuật toán còn hỗ trợ kích thước khóa lớn (RSA 2048, SHA512...). Một ưu điểm

khác của bộ thư viện tự viết SPDA Cryptolib là linh động, có thể sửa đổi hoặc thiết

lập lại cho phù h ợp với nhu cầu của lập trình viên. SPDA Cryptolib được viết trên

nền .NET Compact Framework nên có thể sử dụng tốt trên các môi trường có hỗ trợ

.NET Framework.

Tuy nhiên để xây dựng một thư viện mã hóa tự viết đòi hỏi chi phí cao và độ

84

phức tạp lớn. Đồng thời, tốc độ và độ tin cậy của thư viện cần phải được kiểm định.

Phần 3:

Ứng dụng

mã hóa

85

Chương 7Xây dựng bộ thư viện SPDA Cryptolib

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

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

Số lượng ứng dụng bảo mật trên các thi ết bị PDA hi ện nay không nhi ều. Một

trong các lý do chính là do các th ư viện lập trình hỗ trợ mã hóa bảo mật cho thiết bị

PDA hạn ch ế cả về số lượng lẫn ch ức năng. Tuy nhiên, trong giai đoạn bùng n ổ

thông tin nh ư hiện nay, nhu c ầu về bảo mật là rất cần thiết. Với lý do đó, cần xây

dựng một bộ thư viện mã hóa có th ể hoạt động trên các thiết bị PDA có bộ nhớ nhỏ

và khả năng xử lý chậm.

Bộ thư viện cung cấp các thu ật toán mã hóa quy ước và các thu ật toán mã hóa

khóa công khai, thuật toán hàm băm an toàn và mới nhất.

• Mã hóa khóa quy ước: DES, Tripple DES, Rijndael, MARS, Serpent, RC6,

TwoFish.

• Mã hóa khóa công khai: RSA.

• Hàm băm: MD5, SHA1, SHA-256, SHA224, SHA-256, SHA-384, SHA-

512.

Ngoài ra, các thông tin truy ền đi trên thiết bị cũng cần được xác nhận, do đó bộ

thư viện cũng cần cung cấp thuật toán để tạo và xác nhận chữ ký điện tử.

• Chữ ký điện tử: RSA, DSA, ECDSA

• Truyền khóa: Diffie-Hellman, ECDH

Bộ thư viện cần có tốc độ thực hiện nhanh, độ an toàn b ảo mật cao và d ễ sử dụng,

86

dễ mở rộng.

Chương 7Xây dựng bộ thư viện SPDA Cryptolib

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

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

SymmetricAlgorithm

AsymmetricAlgorithm

KeyExchange

DESStandardProvider

TripleDESStandardProvider

AESStandardProvider

RSAStandardProvider

ECCStandardProvider

RSAKeyExchangeStandardProvider

DHKeyExchangeStandardProvider

ECCKeyExchangeStandardProvider

Hash

Signature

Certificate

MD5StandardProvider

SHA1StandardProvider

SHA256StandardProvider

SHA512StandardProvider

DSASignatureStandardProvider

RSASignatureStandardProvider

X509Certificate

CryptographicException

RandomNumberGenerator

InvalidKeySizeException

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

87

Chương 7 Xây dựng bộ thư viện SPDA Cryptolib

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

Namespaces Class Ý nghĩa

CBCCipherModeHelper Lớp cụ thể cung cấp chế độ mã hóa CBC.

CFBCipherModeHelper Lớp cụ thể cung cấp chế độ mã hóa CFB.

CipherModeHelper Lớp cơ sở của các ch ế độ mã hóa.

CryptographicException Lớp cơ sở của các bi ệt lệ (exception) khi mã hóa.

ECBCipherModeHelper Lớp cụ thể cung cấp chế độ mã hóa ECB.

ECCParameters Lớp các tham số của ECC.

InvalidKeyException Lớp cơ sở cung c ấp bi ệt lệ khi sai khóa.

OFBCipherModeHelper spda.cryptolib Lớp cụ thể cung cấp chế độ mã hóa OFB.

PaddingSchemeHelper Lớp cơ sở của các mô hình mở rộng thông điệp.

PKCSPaddingSchemeHelper

Lớp cụ th ể cung c ấp mô hình mở rộng thông điệp theo PKCS.

RandomNumberGenerator Lớp cụ th ể tạo các s ố ng ẫu nhiên.

RSAParameters Cấu trúc tham số của RSA.

Utils

Lớp cụ th ể cung c ấp các công cụ để phục vụ chuyển đổi dữ liệu.

ZeroPaddingSchemeHelper

Lớp cụ th ể cung c ấp mô hình mở rộng thông điệp theo Zero.

AsymmetricAlgorithm ật

spda.cryptolib .cipher Lớp cơ sở cho các thu toán mã hóa khóa công khai.

88

DESStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa DES.

Chương 7 Xây dựng bộ thư viện SPDA Cryptolib

ECCStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa ECC.

MARSStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa MARS.

RC6StandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa RC6.

RijndaelStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa Rijndael.

RSAStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa RSA.

SerpentStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa Serpent.

SymmetricAlgorithm ật Lớp cơ sở cho các thu toán mã hóa quy ước.

TrippleDESStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa TrippleDES.

TwoFishStandardProvider Lớp cụ th ể cung c ấp thu ật toán mã hóa TwoFish.

Hash ật Lớp cơ sở cho các thu toán hàm băm.

MD5StandardProvider Lớp cụ th ể cung c ấp thu ật toán hàm băm MD5.

SHA1StandardProvider Lớp cụ th ể cung c ấp thu ật toán hàm băm SHA1.

SHA224StandardProvider spda.cryptolib .hash Lớp cụ th ể cung c ấp thu ật toán hàm băm SHA224.

SHA256StandardProvider Lớp cụ th ể cung c ấp thu ật toán hàm băm SHA256.

SHA384StandardProvider Lớp cụ th ể cung c ấp thu ật toán hàm băm SHA384.

SHA512StandardProvider Lớp cụ th ể cung c ấp thu ật toán hàm băm SHA512.

ECDHStandardProvider spda.cryptolib .keyexchange Lớp cụ th ể cung c ấp thu ật toán truyền khóa ECDH.

89

KeyExchange ật Lớp cơ sở cho các thu toán truyền khóa.

Chương 7 Xây dựng bộ thư viện SPDA Cryptolib

RSAKeyExchangeStandardProvider Lớp cụ th ể cung c ấp thu ật toán truyền khóa RSA.

DHStandardProvider

Lớp cụ th ể cung c ấp thu ật toán truy ền khóa Diffie - Hellman

DSAParameters Cấu trúc tham số của DSA.

DSASignatureStandardProvider Lớp cụ th ể cung c ấp thu ật toán chữ ký điện tử DSA.

ECDSAStandardProvider điện spda.cryptolib .signature Lớp cụ th ể cung c ấp thu ật toán ch ữ ký tử ECDSA.

RSASignatureStandardProvider Lớp cụ th ể cung c ấp thu ật toán chữ ký điện tử RSA.

Signature ật Lớp cơ sở cho các thu toán chữ ký điện tử.

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

90

Chương 8 Xây dựng ứng dụng Pocket Secure Data

Chương 8. Xây d ựng ứng dụng Pocket Secure Data

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

Trong thời đại ngày nay, khi máy tính và các thiết bị cầm tay trở nên phổ biến,

tính cơ động của các thiết bị di động đem lại rất nhiều lợi ích cho ng ười sử dụng.

Thiết bị trợ giúp cá nhân kỹ thuật số (Personal Digital Assistant – PDA) rất được ưa

chuộng vì đặc tính nh ỏ gọn, cơ động và kh ả năng lưu trữ thông tin cá nhân. PDA

ngày càng được sử dụng rộng rãi nh ưng đồng thời nó cũng mang đến những nguy

cơ rất lớn cho việc bảo mật các thông tin nhạy cảm một khi PDA bị mất hay bị lấy

cắp.

Trước nguy cơ đó, "người dùng" có nhu cầu về một công cụ bảo mật để mã

hóa thông tin l ưu gi ữ trên PDA. Công cụ nà y cần phải hỗ trợ cá c chu ẩn mã hoá

đáng tin cậy hiện đang được sử dụng trên th ế giới như: DES, 3DES (Triple–DES),

Rijndael (mã hoá quy ước), hay RSA ( mã hó a khóa công khai)... Thông tin mà

"người dùng" cần mã hó a được th ể hiện dưới dạng các tập tin v ăn bản ho ặc các

đoạn văn bản chứa trong clipboard. Ngoài ra, "người dùng" còn có nhu cầu sử dụng

phương pháp mã hóa khóa công khai để mã hoá khó a quy ước. Nhằm tăng độ bảo

mật, giảm không gian l ưu trữ và thời gian mã hóa, nội dung thông tin sẽ được nén

trước khi mã hóa và giải nén sau khi giải mã. Nội dung thông tin s ẽ được nén bằng

các thuật toán nén hiệu quả và thông dụng hiện nay như ZIP.

Thương mại điện tử đòi hỏi các văn bản số hó a cần phải được xác th ực. Để

làm công việc này, mỗi "người dùng" cần sở hữu các chữ ký điện tử được xác nhận.

Chương trình cần có khả năng tạo và xác nhận chữ ký điện tử trên một thông điệp

bất kỳ bằng các thu ật toán DSS, RSA, ECC, …. Thông điệp để tạo ch ữ ký được

"người dùng" cung cấp dưới dạng nội dung một tập tin hoặc nội dung văn bản trong

clipboard. Các thu ật toán thông d ụng nh ư: SHA-1, SHA-256, SHA-512, AES-

HASH...sẽ được sử dụng để tạo thông điệp rút gọn (băm) trong quá trình tạo chữ ký

91

điện tử.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

Với nhu cầu trao đổi thông tin một cách an toàn và tiện lợi hơn, "người dùng"

cũng cần một công cụ để tạo và quản lý khóa.

Công cụ này giúp ng ười dùng tạo ra các khóa bí m ật tương ứng với các thu ật

toán sử dụng trong quá trình mã hóa thông tin. Ngoài ra công cụ này cũng sẽ cung

cấp cho "ng ười dùng" các bộ khó a công khai – bí mật được phát sinh theo các

phương pháp RSA và ECC . Nh ững khóa công khai này chỉ có hiệu lực trong một

khoảng thời gian nhất định, "người dùng" sẽ thiết lập thời gian hết hạn cho khóa của

mình.

Khi trao đổi thông tin mã hóa, "người dùng" cần phải nắm giữ khóa quy ước

cũng như công khai của rất nhiều đối tượng khác nhau. Việc ghi nhớ, sắp xếp và tìm

kiếm danh sách khóa sẽ tốn rất nhiều thời gian. "Người dùng" cần một ứng dụng hỗ

trợ việc quản lý các khóa quy ước, các cặp khóa công khai – bí mật của mình và các

khóa công khai của người khác. "Ng ười dùng" sẽ nhập khóa công khai c ủa ng ười

khác dưới dạng tập tin văn bản vào cơ sở dữ liệu để quản lý và xuất khóa công khai

của mình ra tập tin văn bản để trao đổi.

Các thông tin contact và thông tin khóa tương ứng cho từng contact được quản

lý tập trung nhằm làm giảm khối lượng lưu trữ trên thiết bị PDA.

8.2. Phân tích yêu cầu

8.2.1. Bảng chú giải

• Người dùng: ng ười sử dụng ch ương trình để thực hi ện các công vi ệc bảo

mật.

• Quản trị: người quản trị hệ thống, đảm bảo hoạt động của hệ thống.

• Server: máy chủ lưu trữ dữ liệu, có thể là má y tính để bàn có cấu hình cao,

bộ nhớ lớn.

• Client: máy trạm thực thi chương trình và giao tiếp trực tiếp với ngưòi dùng.

92

• Cipher: các thao tác mã hóa / giải mã dữ liệu.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

• Encrypt: mã hóa dữ liệu.

• Decrypt: giải mã dữ liệu.

• Symmetric Cipher: mã hóa đối xứng. Đây là loại mã hóa sử dụng cùng một

khóa quy ước cho việc mã hóa và giải mã dữ liệu.

• Asymmetric Cipher: mã hóa bất đối xứng. Đây là loại mã hó a sử dụng cặp

khóa công khai – bí mật để mã hó a và giải mã dữ liệu. Sử dụng khóa công

khai để giải mã dữ liệu đã được mã hóa bằng khóa bí mật và ngược lại.

• Contact: cá nhân hoặc tổ chức(nhóm cá nhân) mà người dùng có nhu cầu lưu

giữ thông tin để liên lạc.

• Partner: cá nhân mà "người dùng" có nhu cầu lưu giữ thông tin để liên lạc.

• Group: nhóm cá nhân / tổ chức mà "người dùng" có nhu cầu lưu trữ thông tin

để liên lạc.

• Key - Khó a: dãy bit s ử dụng trong quá trì nh mã hó a để thực hi ện mã hó a

hoặc giải mã dữ liệu.

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

8.2.2.1. Yêu c ầu lưu trữ

- Thông tin tài khoản người dùng.

- Thông tin liên lạc của người dùng.

- Thông tin khóa của các liên lạc.

8.2.2.2. Yêu c ầu xử lý

- Mã hóa và gi ải mã dữ liệu bằng các thu ật toán đối xứng (DES, Triple-DES,

Rijndael, Mars, Twofish, Serpent, RC6) và bất đối xứng (RSA).

93

- Ký và xác nhận dữ liệu bằng các thuật toán chữ ký điện tử (DSA, ECDSA).

Chương 8 Xây dựng ứng dụng Pocket Secure Data

- Tạo khóa cho các thu ật toán mã hóa (DES, Triple-DES, Rijndael, Mars,

Twofish, Serpent, RC6, RSA, ECC, DSA).

- Trao đổi khóa b ằng các thu ật toán trao đổi khóa (RSA, Diffie-Hellman,

ECDH).

8.2.2.3. Yêu c ần tra cứu

- Thông tin tài khoản người dùng.

- Thông tin liên lạc của người dùng.

- Thông tin khóa của các liên lạc.

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

- Hệ th ống được phát tri ển theo mô hình Client – Server. Trong đó, Server

chạy trên Desktop thực hiện các yêu cầu sau:

o Quản lý tài khoản người dùng.

o Quản lý các liên lạc của người dùng.

o Quản lý khóa của các liên lạc.

o Tạo khóa.

o Trao đổi khóa.

Client chạy trên PDA thực hiện các yêu cầu sau:

o Mã hóa và giải mã dữ liệu.

o Ký và xác nhận dữ liệu.

- Cho phép người dùng đăng nhập vào hệ thống và đổi mật khẩu đăng nhập.

- Phát tri ển hệ th ống trên môi tr ường Microsoft Visual Studio.NET 2003, s ử

dụng chương trình giả lập Microsoft Pocket PC 2003 Emulator.

- Sử dụng hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2000 để quản lý dữ

liệu.

- Sử dụng Rational Rose 2000 để hỗ trợ quá trình phân tích thiết kế hệ thống.

94

- Giao diện đẹp, tiện dụng.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3. Sơ đồ Usecase

Manage User

Admin

Login

Change Password

Exchange Key

<>

<>

Symmetric Cipher

<>

<>

Manage Key

Cipher

User

Generate Key

Asymmetric Cipher

Sign and Verify

Manage Contact

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

8.3.1. Một số đặc tả Usecase chính

STT Usecase Ý nghĩa

1 Cipher Th 2 SymmetricCipher Th ực hiện mã hóa và giải mã dữ liệu. ực hiện mã hóa và giải mã dữ liệu bằng các thuật toán mã hóa quy ước.

3 AsymmetricCipher Th ực hiện mã hóa và giải mã dữ liệu bằng các thuật toán mã hóa khóa công khai.

T ạo bộ khóa mới cho người sử dụng.

4 Generate Key 5 Sign and Verify Ký và xác nh 6 Exchange Key Th 7 Manage Key Qu 8 Manage Contact Qu 9 Manage User Qu ận chữ ký điện tử. ực hiện trao đổi khóa hoặc xuất khóa. ản lý khóa của người sử dụng. ản lý các liên lạc. ản lý các tài kho ản ng ười dùng trên phân h ệ server.

10 Login Ch 11 Change Password ức năng đăng nhập vào chương trình. Đổi mật khẩu đăng nhập vào chương trình.

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

95

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.1.1. Cipher

8.3.1.1.1. Tóm tắt

"Người dùng" sử dụng chức năng này để mã hóa và giải mã dữ liệu theo các

loại mã hóa khác nhau như: mã hóa quy ước, mã hóa khóa công khai. "Người dùng"

sẽ cung cấp các thông tin nh ư thuật toán mã hóa, khóa, nội dung dữ liệu. Hệ thống

sẽ thực hiện mã hóa / giải mã dữ liệu sau khi đã nén / giải nén dữ liệu.

8.3.1.1.2. Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "người dùng" có yêu cầu mã hóa / giải mã dữ liệu.

"Người dùng" chọn loại mã hóa cần thực hiện

Tùy theo loại mã hóa, các luồng sự kiện phụ sau được thực hiện:

- Nếu "người dùng" chọn "Symmetric Cipher", chức năng "Symmetric Cipher"

được thực hiện.

- Nếu "ng ười dùng" chọn "Asymmetric Cipher", ch ức năng "Asymmetric

Cipher" được thực hiện.

• Dòng sự kiện khác

Không có

8.3.1.1.3. Yêu c ầu đặc biệt

Không có

8.3.1.1.4. Điều kiện tiên quyết

"Người dùng" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

8.3.1.1.5. Điều kiện hậu quyết

Không có

8.3.1.1.6. Điểm mở rộng.

96

Không có

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.1.2. SymmetricCipher

8.3.1.2.1. Tóm t ắt

"Người dùng" sử dụng chức năng này khi có yêu cầu mã hóa hoặc giải mã thông tin

theo mã hóa quy ước.

8.3.1.2.2. Dòng s ự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "người dùng" có yêu c ầu mã hóa ho ặc giải mã thông tin

theo mã hóa quy ước.

- "Người dùng" chọn ch ức năng cần th ực hi ện (Mã hó a thông tin, Giải mã

thông tin).

- Nếu "ng ười dùng" chọn ch ức năng "Symmetric Encrypt" để mã hó a thông

tin, luồng sự kiện phụ "Symmetric Encrypt" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Symmetric Decrypt" để gi ải mã thông

tin, luồng sự kiện phụ "Symmetric Decrypt" được thực hiện.

o Symmetric Encrypt

- "Người dùng" lựa chọn phương pháp mã hóa (DES, 3DES hoặc AES).

- "Người dùng"lựa chọn dạng dữ liệu (File hay Clipboard).

- "Người dùng" xác định nguồn dữ liệu.

- "Người dùng"chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa quy ước của đối tượng liên lạc.

- Hệ thống nén dữ liệu.

- Hệ thống mã hóa dữ liệu theo phương pháp và khóa đã chọn.

97

- Hệ thống sẽ trả về dữ liệu đã mã hóa theo dạng đã chọn.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

o Symmetric Decrypt

- "Người dùng"chọn lựa phương pháp giải mã (DES, 3DES hoặc AES).

- "Người dùng" lựa chọn dạng dữ liệu(File hay Clipboard).

- "Người dùng" xác định nguồn dữ liệu.

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa quy ước của đối tượng liên lạc.

- Hệ thống giải mã dữ liệu theo phương pháp và khóa đã chọn.

- Hệ thống giải nén dữ liệu.

- Hệ thống sẽ trả về dữ liệu đã giải mã theo dạng đã chọn.

• Dòng sự kiện khác

Không có

8.3.1.2.3. Yêu c ầu đặc biệt

Không có

8.3.1.2.4. Điều kiện tiên quyết

"Người dùng" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

8.3.1.2.5. Điều kiện hậu quyết

Không có

8.3.1.2.6. Điểm mở rộng.

98

Không có

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.1.3. AsymmetricCipher

8.3.1.3.1. Tóm tắt

"Người dùng" sử dụng ch ức năng này để mã hó a và gi ải mã dữ liệu theo mã hó a

khóa công khai.

8.3.1.3.2. Dòng sự kiện

• Dòng sự kiện chính

"Người dùng" chọn chức năng cần thực hiện (Mã hóa thông tin, Giải mã thông tin).

- Nếu "ng ười dùng"chọn ch ức năng "Asymmetric Encrypt" để mã hó a thông

tin, luồng sự kiện phụ "Asymmetric Encrypt" được thực hiện.

- Nếu "ng ười dùng"chọn ch ức năng "Asymmetric Decrypt" để gi ải mã thông

tin, luồng sự kiện phụ "Asymmetric Decrypt" được thực hiện.

o Asymmetric Encrypt

- "Người dùng" lựa chọn phương pháp mã hóa (RSA).

- "Người dùng" lựa chọn dạng dữ liệu (File hay Clipboard).

- "Người dùng" xác định nguồn dữ liệu.

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa công khai – bí mật của đối tượng liên lạc.

- Hệ thống nén dữ liệu.

- Hệ thống mã hóa dữ liệu theo phương pháp và khóa đã chọn.

- Hệ thống sẽ trả về dữ liệu đã mã hóa theo dạng đã chọn.

o Asymmetric Decrypt

- "Người dùng" chọn lựa phương pháp giải mã (RSA).

- "Người dùng" lựa chọn dạng dữ liệu(File hay Clipboard).

99

- "Người dùng" xác định nguồn dữ liệu.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa công khai – bí mật của đối tượng liên lạc.

- Hệ thống giải mã dữ liệu theo phương pháp và khóa đã chọn

- Hệ thống giải nén dữ liệu.

- Hệ thống sẽ trả về dữ liệu đã giải mã theo dạng đã chọn.

• Dòng sự kiện khác

Không có

8.3.1.3.3. Yêu c ầu đặc biệt

Không có

8.3.1.3.4. Điều kiện tiên quyết

"Người dùng" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

8.3.1.3.5. Điều kiện hậu quyết

Không có

8.3.1.3.6. Điểm mở rộng.

Không có

8.3.1.4. Generate Key

8.3.1.4.1. Tóm tắt

"Người dùng" sử dụng chức năng này để tạo khóa quy ước, khóa công khai – bí mật

100

cho việc mã hóa / giải mã.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.1.4.2. Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "ng ười dùng" có yêu cầu tạo khóa quy ước, khóa công

khai – bí mật một cách tự động cho việc mã hóa / giải mã.

"Người dùng" chọn chức năng cần thực hiện.

Tùy thuộc chức năng đã chọn, các luồng sự kiện phụ sau được thực hiện

- Nếu "người dùng" chọn "Taọ khóa quy ước", luồng sự kiện phụ "Tạo khóa

quy ước" được thực hiện.

- Nếu "người dùng" chọn "Tạo khóa công khai", lu ồng sự kiện phụ "Tạo khóa

công khai" được thực hiện.

o Tạo khóa quy ước

- "Người dùng" chọn phương pháp mã hóa.(DES, Triple-DES, Rijndael, Mars,

Twofish, Serpent, RC6)

- "Người dùng" chọn chiều dài khóa.

- Hệ thống phát sinh khóa ngẫu nhiên.

- Hệ thống lưu khóa vào CSDL.

o Tạo khóa công khai

- "Người dùng" chọn phương pháp mã hóa (RSA, ECC, DSA)

- "Người dùng" chọn chiều dài khóa phù hợp.

- "Người dùng" xác định ngày hết hạn của khóa

- Hệ thống phát sinh khóa ngẫu nhiên.

- Hệ thống lưu khóa vào CSDL

• Dòng sự kiện khác

101

Không có

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.1.4.3. Yêu c ầu đặc biệt

Không có

8.3.1.4.4. Điều kiện tiên quyết

"Người dùng" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

8.3.1.4.5. Điều kiện hậu quyết

Không có

8.3.1.4.6. Điểm mở rộng.

Không có

8.3.1.5. Sign and Verify

8.3.1.5.1. Tóm tắt

"Người dùng" sử dụng chức năng này để tạo hoặc xác nhận chữ ký điện tử.

8.3.1.5.2. Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "người dùng" có yêu cầu tạo hoặc xác nhận chữ ký điện

tử.

"Người dùng"chọn chức năng cần thực hiện

Tùy thuộc chức năng đã chọn, các luồng sự kiện phụ sau đây được thực hiện:

- Nếu "người dùng"chọn chức năng "Tạo chữ ký điện tử", luồng sự kiện phụ

"Tạo chữ ký điện tử" được thực hiện.

- Nếu "người dùng"chọn chức năng "Xác nhận chữ ký điện tử", luồng sự kiện

102

phụ "Xác nhận chữ ký điện tử" được thực hiện.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

o Tạo chữ ký điện tử

- "Người dùng" chọn dạng dữ liệu để tạo chữ ký (File hay Clipboard).

- "Người dùng" xác định nguồn dữ liệu.

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa công khai – bí mật của đối tượng liên lạc để tạo

chữ ký.

- "Người dùng" chọn hàm băm sẽ sử dụng. (MD5, SHS...)

- Hệ thống thực hiện tạo chữ ký điện tử trên dữ liệu bằng hàm băm đã chọn và

bộ khóa đã chọn.

- Hệ thống lưu chữ ký đã tạo dưới dạng tập tin.

o Xác nhận chữ ký điện tử

- "Người dùng" chọn dạng dữ liệu để xá c nh ận ch ữ ký điện tử (File hay

Clipboard).

- "Người dùng" xác định nguồn dữ liệu.

- "Người dùng" chọn hàm băm đã sử dụng (MD5, SHS...)

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa công khai của đối tượng liên lạc để xác nhận.

- Hệ thống xác nhận chữ ký.

- Hệ thống thông báo kết quả xác nhận cho "người dùng" .

• Dòng sự kiện khác

Không có

8.3.1.5.3. Yêu c ầu đặc biệt

Không có

8.3.1.5.4. Điều kiện tiên quyết

"Người dùng" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

8.3.1.5.5. Điều kiện hậu quyết

Không có

8.3.1.5.6. Điểm mở rộng.

103

Không có

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.1.6. Exchange Key

8.3.1.6.1. Tóm tắt

"Người dùng" sử dụng chức năng này để thực hiện trao đổi hoặc quy ước các khóa

được sử dụng.

8.3.1.6.2. Dòng sự kiện

• Dòng sự kiện chính

Người sử dụng chọn chức năng cần thực hiện (Mã hóa khóa, Giải mã khóa).

- Nếu "người dùng" chọn chức năng "Create Key Exchange" để mã hóa khóa,

luồng sự kiện phụ " Create Key Exchange " được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Decrypt Key Exchange" để gi ải mã

khóa, luồng sự kiện phụ "Decrypt Key Exchange" được thực hiện.

o Create Key Exchange

- "Người dùng" chọn khóa sẽ xuất.

- "Người dùng" nhập mật mã của khóa.

- "Người dùng" xác định nguồn xuất(File hay clipboard).

- "Người dùng" chọn ph ương pháp trao đổi khóa (Diffie Hellman, RSA,

ECDH, DES, 3DES, Rijndael)

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa cần mã hóa để truyền đi.

- "Người dùng" chọn khóa để mã hóa.

- "Người dùng" chọn xuất khóa.

- Hệ thống kiểm tra mật mã khóa hợp lệ.

- Hệ thống mã hóa khóa đã chọn bằng phương pháp mã hóa với khóa đã chọn.

104

- Hệ thống xuất khóa theo định dạng của chương trình với nguồn đã xác định.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

o Decrypt Key Exchange

- “Người dùng” nhập tên của khóa.

- "Người dùng" thiết lập mật mã cho khóa.

- "Người dùng" chọn loại khóa sẽ nhập (Khóa quy ước hay khóa công khai –

bí mật).

- Tùy thuộc loại khóa được chọn, các luồng sự kiện phụ sau được thực hiện:

- Nếu "ng ười dùng" chọn "Nh ập khóa quy ước", lu ồng sự kiện "Nh ập khóa

quy ước" được thực hiện.

- Nếu "ng ười dùng" chọn "Nh ập khóa công khai – bí mật", lu ồng sự kiện

"Nhập khóa công khai – bí mật" được thực hiện.

§ Nhập khóa quy ước

- "Người dùng" xác định nguồn của khóa (File hay clipboard).

- "Người dùng" chọn kiểu mã hóa khóa (Diffie Hellman, RSA, ECDH, DES,

3DES, Rijndael)

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa giải mã.

- Người dùng chọn lưu khóa vào cơ sở dữ liệu.

- Hệ thống kiểm tra định dạng nguồn nhập.

- Hệ thống giải mã khóa bằng phương pháp mã hóa với khóa đã chọn.

- Hệ thống mã hóa khóa với thông điệp rút gọn của mật mã khoá.

- Hệ thống lưu khóa vào cơ sở dữ liệu.

§ Nhập khóa công khai – bí mật

- "Người dùng" xác định nguồn của khóa công khai(File hay clipboard).

- "Người dùng" xác định nguồn của khóa bí mật(File hay clipboard hay không

105

có).

Chương 8 Xây dựng ứng dụng Pocket Secure Data

- "Người dùng" chọn kiểu mã hóa khóa (Diffie Hellman, RSA, ECDH, DES,

3DES, Rijndael)

- "Người dùng" chọn đối tượng liên lạc(contact) giao dịch.

- "Người dùng" chọn khóa giải mã.

- Người dùng chọn lưu khóa vào cơ sở dữ liệu.

- Hệ thống kiểm tra định dạng nguồn nhập.

- Hệ thống giải mã khóa bằng phương pháp mã hóa với khóa đã chọn

- Hệ thống mã hóa khóa với thông điệp rút gọn của mật mã khoá.

- Hệ thống lưu khóa vào cơ sở dữ liệu.

• Dòng sự kiện khác

o Mật mã khóa không hợp lệ.

Khi mật mã khóa nhập vào không hợp lệ, hệ thống sẽ thông báo "người dùng" có

thể nhập lại hoặc ra khỏi chức năng đang thực hiện.

o Định dạng nguồn nhập không hợp lệ

Khi định dạng nguồn nhập không hợp lệ, hệ thống sẽ thông báo và "người dùng" có

thể nhập lại thông tin khóa hợp lệ hoặc ra khỏi chức năng đang thực hiện.

8.3.1.6.3. Yêu c ầu đặc biệt

Không có

8.3.1.6.4. Điều kiện tiên quyết

"Người dùng" đăng nhập thành công vào hệ thống thông qua chức năng Login.

8.3.1.6.5. Điều kiện hậu quyết

Không có

8.3.1.6.6. Điểm mở rộng.

106

Không có

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.3.2. Một số sơ đồ tuần tự chính

107

8.3.2.1. Symmetric Encrypt

Chương 8 Xây dựng ứng dụng Pocket Secure Data

108

8.3.2.2. Symmetric Decrypt

Chương 8 Xây dựng ứng dụng Pocket Secure Data

109

8.3.2.3. Asymmetric Encrypt

Chương 8 Xây dựng ứng dụng Pocket Secure Data

110

8.3.2.4. Asymmetric Decrypt

Chương 8 Xây dựng ứng dụng Pocket Secure Data

111

8.3.2.5. Generate Key

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.4. S ơ đồ lớp

8.4.1. Phân hệ client

NetworkService

KeyClient

0..n 0..n

1 1

ContactClient

AccountClient

0..n 0..n

0..n 0..n

1 1

GroupContactClient

PersonContactClient

1..n 1..n

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

112

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.4.2. Phân hệ server

DataService

KeyServer

0..n 0..n

1 1

AccountServer

ContactServer

1 1

0..n 0..n

0..n 0..n

PersonContactServer

GroupContactServer

1..n 1..n

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

113

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.5. Thi ết kế dữ liệu

8.5.1. Sơ đồ dữ liệu

Contact Relationship

Accounts

Keys

Contacts

Settings

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

8.5.2. Mô tả dữ liệu

8.5.2.1. Danh sách ki ểu dữ liệu

STT Tên kiểu dữ liệu Ý nghĩa

1. Accounts Thông tin tài kho ản người dùng trên server.

2. Contact Relationship Quan h ệ giữa các contact.

3. Contacts Danh sách thông tin c ủa các cá nhân hoặc tổ chức người dùng cần liên lạc.

4. Keys Danh sách khóa được quản lý.

114

5. Settings Các tham s ố thiết lập của chương trình.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.5.2.2. Mô t ả kiểu dữ liệu

8.5.2.2.1. Accounts

STT Tên thuộc tính Kiểu dữ liệu Ý nghĩa

AutoNumber Mã s ố tài khoản (PK) 1. AccountID

2. Username nvarchar(20) Tên đăng nhập.

3. Password text Thông điệp rút gọn của mật khẩu người dùng.

4. Email nvarchar(50) Email ng ười dùng.

5. Fullname nvarchar(50) H ọ tên người dùng.

6. Address ntext Địa chỉ người dùng.

7. Phone nvarchar(20) Điện thoại của người dùng.

8. RegisteredDate datetime Ngày đăng ký tài khoản.

9. Deleted bool Tr ạng thái của tài khoản

(0: Active; 1: Deleted)

8.5.2.2.2. ContactRelationship

STT Tên thuộc tính Kiểu dữ liệu Ý nghĩa

AutoNumber Mã s 1. ParentID ố nhóm. (FK –> Contacts(ContactID) )

AutoNumber 2. ChildID Mã số contact (FK –> Contacts(ContactID) ).

8.5.2.2.3. Contacts

STT Tên thuộc tính Kiểu dữ liệu Ý nghĩa

AutoNumber Mã s ố liên lạc. (PK) 1. ContactID

2. AccountID AutoNumber Mã s ố tài khoản. (FK –> Accounts(AccountID) ).

3. ContactType int Loại contact

(0: Group / 1: Partner)

115

4. ContactName nvarchar(50) Tên liên l ạc.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

5. Email nvarchar(50) Email c ủa liên lạc.

6. Address ntext Địa chỉ liên lạc.

7. Phone nvarchar(20) Điện thoại liên lạc.

8. Notes ntext Thông tin ghi chú.

9. Deleted bool Tr ạng thái của liên lạc.

0 : Active, 1: Deleted

8.5.2.2.4. Keys

STT Tên thuộc tính Kiểu dữ liệu Ý nghĩa

AutoNumber Mã s ố khóa. (PK) 1. KeyID

2. ContactID AutoNumber Mã s ố contact. (FK –> Contacts(ContactID)).

3. KeyType int Lo ại khóa (0: Symmetric,

1: Asymmetric).

4. KeySize int Độ dài khóa tính bằng bit. (KeySize >= 0)

5. KeyPassword text Message digest c ủa mật mã bảo vệ khóa .

6. Algorithm int Thu ật toán sử dụng chung với bộ khóa.

D 7. PublicData text

ữ liệu khóa public. (nếu KeyType là Symmetric thì PublicData sẽ là rỗng).

D 8. PrivateData text ữ liệu khóa private / secret.

9. Validity int Tình tr ạng hợp lệ của khóa.

10. CreatedDate datetime Ngày t ạo khóa.

11. ExpiredDate datetime Ngày h ết hạn.

12. Deleted bool Tình tr ạng của khóa.

116

0: Active, 1: Deleted

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.5.2.2.5. Settings

STT Tên thuộc tính Kiểu dữ liệu Ý nghĩa

AutoNumber Mã tham s ố. (PK) 1. SettingID

2. SettingName nvarchar(50) Tên tham s ố.

3. Value ntext Giá tr ị.

8.5.3. Ràng buộc toàn vẹn

8.5.3.1. Ràng bu ộc 1

- Bối cảnh: Contacts, ContactRelationship.

- Biểu diễn: ParentID phải tham chiếu đến ContactID có loại là Group.

- Bảng tầm ảnh hưởng:

Quan hệ Thêm Xoá Sửa

Contacts - + + (Type, ContactID)

ContactRelationship + - + (Parent)

phải tham chiếu đến ContactID có loại

Create trigger tr_Contact_CntRelationship_1 on Contact for update as if update(Type) or update(ContactID) if exists (select * from ContactRelationship R, Contact C where R.ParentID = C.ContactID and C.Type <> 0) begin raiserror(ParentID là Group', 0, 1) rollback tran end go

117

- Cài đặt:

phải tham chiếu đến ContactID có loại

Create trigger tr_Contact_CntRelationship_2 on ContactRelationship for insert, update as if update(ParentID) if exists( (select * from ContactRelationship R, Contact C where R.ParentID = C.ContactID and C.Type <> 0) begin raiserror(ParentID là Group', 0, 1) rollback tran end go

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.5.3.2. Ràng bu ộc 2

- Bối cảnh: Keys.

- Biểu di ễn: Ngày tạo khóa (CreatedDate) p hải nhỏ hơn ngày hết hạn

(ExpiredDate) của khóa.

- Bảng tầm ảnh hưởng:

Quan hệ Thêm Xoá Sửa

Keys + - + (CreatedDate, ExpiredDate)

ạo khóa phải nhỏ hơn hoặc bằng ngày hết

Create trigger tr_Keys on Keys for insert, update as if update(CreatedDate) or update(ExpiredDate) if exists ( select * from Keys where CreatedDate > ExpiredDate) begin raiserror('Ngày t hạn', 0, 1) rollback tran end go

118

- Cài đặt:

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.6. Thi ết kế giao diện

8.6.1. Sơ đồ màn hình

Màn hình chính

Màn hình User Registration

Màn hình User Management

Màn hình Settings

8.6.1.1. Phân h ệ server

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

Màn hình Cipher

Màn hình Signature

Màn hình Key Generator

Màn hình chính

Màn hình Key Exchange

Màn hình Contact Management

Màn hình Connections

Màn hình Change Password

8.6.1.2. Phân h ệ client

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

119

Chương 8 Xây dựng ứng dụng Pocket Secure Data

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

8.6.2.1. Màn hình chính

• Mô tả: Phân hệ server c ủa ứng dụng Pocket Secure Data cung c ấp cho

người quản trị các chức năng về quản lý tài khoản người dùng và cấu hình hệ

thống. Phân hệ server cũng đồng thời thực hiện tạo khóa

Đăng ký tài khoản người dùng mới.

Quản lý tài khoản người dùng.

Cấu hình các thông số của server.

Khởi động / Tắt server.

Hình 8-7: Màn hình chính Server.

120

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.6.2.2. Màn hình User Registration

• Mô tả: Cung cấp chức năng đăng ký mới tài khoản người dùng. Người dùng

có thể tạo tài khoản trên server nhằm lưu trữ các thông tin khóa cần liên lạc.

Hình 8-8: Màn hình User Registration.

8.6.2.3. Màn hình User Management • Mô tả: Cung cấp các chức năng về quản lý tài kho ản người dùng đã được đăng

ký trên server. Quản trị có thể sửa đổi hoặc hủy thông tin tài khoản người dùng.

Hình 8-9: Màn hình User Management

121

Chương 8 Xây dựng ứng dụng Pocket Secure Data

8.6.2.4. Màn hình Settings

• Mô tả: Cung cấp chức năng thiết lập cấu hình của server và các thông số kết

nối với cơ sở dữ liệu.

Hình 8-10: Màn hình Server Settings.

122

Chương 8 Xây dựng ứng dụng Pocket Secure Data

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

Chức năng mã hóa / giải mã dữ liệu.

Chức năng ký / xác nhận chữ ký điện tử.

Chức năng tạo khóa.

Chức năng trao đổi khóa.

Chức năng quản lý khóa của các liên lạc.

Chức năng thiết lập thông số kết nối.

Chức năng đổi mật khẩu đăng nhập chương trình.

8.6.3.1. Màn hình chính

Hình 8-11: Màn hình chính Client.

123

Chương 8 Xây dựng ứng dụng Pocket Secure Data

Màn hình

Điều khiển

Ý nghĩa

Algorithm Ch

ọn thuật toán mã hóa.

Filename

Đường dẫn đến tập tin cần mã hóa/giải mã.

SaveAs

Đường dẫn đến vị trí lưu tập tin sau khi mã hóa / giải mã.

UserKey

Đường dẫn đến tập tin khóa / tên contact sở hữu khóa (nếu lấy khóa từ cơ sở dữ liệu).

Password

Mật mã bảo vệ của khóa.

Lấy khóa từ cơ sở dữ liệu.

Encrypt Th

ực hiện mã hóa.

Decrypt Th

ực hiện giải mã.

Clear Xóa tr

ắng các thông tin trên form.

Hình 8-12: Màn hình Cipher.

Algorithm Ch

ọn thuật toán trao đổi khóa.

Exchanged

Đường dẫn đến khóa cần trao đổi .

Password

Mật mã bảo vệ khóa.

UserKey

Đường dẫn đến khóa để thực hiện trao đổi khóa.

SaveAs

Đuờng dẫn đển tập tin lưu kết quả trao đổi.

Export Xu

ất khóa để trao đổi.

Import Nh

ập khóa đã được trao đổi.

Hình 8-13: Màn hình KeyExchange.

124

Algorithm

Thuật toán ký / xác nhận chữ ký điện tử.

Thuật toán để thực hiện băm.

Hash Function

Filename

Đường dẫn đến dữ liệu cần ký / xác nhận

Signature

Đường dẫn để xuất / lấy chữ ký điện tử.

User Key

Đường dẫn đến khóa để thực hiện ký / xác nhận

Password

Mật mã bảo vệ khóa.

Sign

Tạo chữ ký điện tử.

Verify Xác nh

ận chữ ký điện tử.

Chương 8 Xây dựng ứng dụng Pocket Secure Data

Hình 8-14:Màn hình Signature

Algorithm Thu

ật toán để tạo khóa.

KeySize Kích th

ước khóa cần tạo.

Generate Th

ực hiện tạo khóa.

Save

Lưu khóa cần tạo.

Hình 8-15: Màn hình Key Generator.

125

List

Danh sách các contact có trong cơ sở dữ liệu (tương ứng với tài khoản đăng nhập)

Name Tên contact.

Email Email c

ủa contact.

Notes Ghi chú.

Details Xem thông tin chi ti

ết của contact.

New

Tạo contact mới

Tools

Các chức năng khác: xóa contact, tìm kiếm...

Chương 8 Xây dựng ứng dụng Pocket Secure Data

Name Tên contact c

ần tìm.

Email Email c

ủa contact cần tìm.

Find Th

ực hiện tìm kiếm.

Result

Kết quả tìm kiếm

Properties

Thông tin chi tiết của contact tìm được.

Hình 8-16: Màn hình Group Management.

Hình 8-17: Màn hình Find Contact.

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

126

Chương 9 Cài đặt và triển khai ứng dụng

Chương 9. Cài

đặt và triển khai ứng dụng

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

Thư viện mã hóa SPDA Cryptolib được xây dựng bằng các công cụ và trên các môi

trường sau:

• Công cụ phân tích thiết kế: Rational Rose 2000.

• Môi trường lập trình:

o Visual Studio .NET 2003

o .NET Compact Framework version 1.0.5, .NET Framework version

1.1.

• Ngôn ngữ lập trình: C#

• Hệ quản trị cơ sở dữ liệu : Microsoft SQL Server 2000.

• Môi trường thử nghiệm và cài đặt:

o Windows XP Professional.

o PocketPC 2003 Emulator và PocketPC 2003.

• Thiết bị:

o PocketPC Toshiba e740 bộ nhớ 58.27 MB (Storage Card: 244.48 MB)

ộ nh ớ 61.64 MB (Storage Card: o Pocket PC HP Jornada 928 b

121.85MB)

• Các thư viện mã nguồn mở được sử dụng và tham khảo:

o Lớp BigInteger của Chew Keong TAN (Code Project).

o SharpZipLib của ICSharpCode.net

127

o bNb.Sec của brains-n-brawn.com

Chương 9 Cài đặt và triển khai ứng dụng

9.2. Mô hình cài đặt

spda.zip

spda.client

Ung dung Pocket Secure Data tren phan he client

spda.cryptolib

spda.util

spda.net

bnb.Sec

spda.server

Ung dung Pocket Secure Data tren phan he Server

Hình 9-1:Mô hình cài đặt thư viện và ứng dụng.

Thư viện mã hóa SPDA Cryptolib được biên dịch thành tập tin Cryptolib.dll,

ECLib.dll và bnb.Sec.dll.

Ứng dụng Pocket Secure Data s ử dụng các t ập tin dll c ủa th ư vi ện SPDA

Cryptolib để phục vụ cho các chức năng mã hóa bảo mật.

Thư viện spda.zip là b ản rút gọn dựa trên SharpZipLib được biên dịch thành

tập tin ZipLib.dll để thực hiện nén và giải nén thông tin.

Tập tin NetworkService.dll c ủa thư vi ện spda.net cung c ấp phương th ức để

trao đổi thông tin qua mạng sử dụng socket.

Tập tin IOService.dll, và Utilities.dll cung c ấp các phương thức về truy xu ất

tập tin và chuyển đổi dữ liệu trong thư viện spda.util.

Tập tin DataService.dll cung c ấp các phương thức để kết nối và thao tác trên

cơ sở dữ liệu.

Ứng dụng được đóng gói và cài đặt một cách đơn giản bằng các tập tin cài đặt

128

trên cả hai phân hệ client và server.

Chương 9 Cài đặt và triển khai ứng dụng

9.3. Kết quả thử nghiệm

Môi trường desktop

Môi trường PDA

Thuật toán – kích thước khóa

Thời gian mã hóa (giây)

Thời gian giải mã (giây)

Thời gian mã hóa (giây)

Thời gian giải mã (giây)

DES – 64bit 0.0300432 0.0300432 0.5 0.5.0

Rijndael – 128 bit 0.4105904 0.6809792 23.0 27.0

MARS – 128bit 0.0701008 0.0500720 26.0 27.0

Serpent – 128bit 2.0128944 2.0829952 228.0 263.0

RC6 – 128bit 0.0400576 0.0400576 29.0 29.0

TwoFish – 128bit 0.0901296 0.0801152 11.0 12.0

RSA – 1024bit 1.4721168 207.7787712 184.0 6h

ECC – 163bit 3.8755728 2.1030240 713.0 353.0

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

Các thuật toán được thử nghiệm trên hai môi trường:

• Môi trường desktop

o Hệ điều hành Windows XP, .NET Framework 1.1

o Bộ xử lý 2.4Ghz, 384MB RAM

• Môi trường PDA:

o Hệ điều hành PocketPC 2003, .NET Compact Framework 1.0

o Bộ xử lý 200MHz, 58.27 MB RAM (30.00 MB cho memory)

Bộ thử nghiệm được sử dụng cho t ất cả các thu ật toán là t ập tin d ữ liệu có

nội dung ngẫu nhiên, kích thước cố định 100.000 byte.

Môi trường desktop

Môi trường PDA

Thuật toán – kích thước khóa

RSA - 1024 ECC - 163

17.7855744 2.0930096

2448.00 361.00

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

129

Chương 9 Cài đặt và triển khai ứng dụng

Nhận xét:

Thời gian các thuật toán mã hóa thực hiện trên môi trường PDA chậm hơn so

với th ực hi ện trên môi tr ường desktop do s ự chênh l ệch về tốc độ của bộ xử lý,

chênh lệch tốc độ truy xuất bộ nhớ.

Đối với các thu ật toán mã hóa quy ước, đặc biệt là các thu ật toán ứng viên

AES như Rijndael, MARS, Serpent, TwoFish... có th ời gian th ực hiện trên PDA là

chấp nhận được.

Các thuật toán mã hóa khóa công khai có th ời gian th ực hiện chậm hơn mã

hóa quy ước.

Thuật toán RSA thực hiện quá trình giải mã rất lâu so với quá trình mã hóa.

Thuật toán ECC thực hiện mã hóa lâu hơn thực hiện giải mã.

Với cùng độ bảo mật, thu ật toán ECC có th ời gian th ực hiện rất nhanh so v ới

thuật toán RSA. Điều này phù h ợp với lý thuyết ECC đồng thời cũng cho th ấy khả

năng ứng dụng của ECC để thay thế RSA vào lĩnh vực mã hóa khóa công khai trên

130

các thiết bị PDA.

Chương 10 Tổng kết

Chương 10. Tổng kết

10.1. Kết luận

Dựa trên cơ sở tìm hi ểu về các ph ương pháp mã hóa quy ước, mã hóa khóa

công khai, chữ ký điện tử cùng với các thông tin kỹ thuật về thiết bị PDA, chúng em

đã thực hiện một thư viện mã hóa SPDA Cryptolib hoàn ch ỉnh để hỗ trợ lập trình

viên xây d ựng các ứng dụng mã hóa trên thi ết bị PDA trong môi tr ường .NET

Compact Framework. Đặc biệt, thư viện mã hóa này cung c ấp các thu ật toán băm

mới nhất hiện nay theo chu ẩn đã được công nh ận bởi NIST. Th ư viện mã hóa còn

cung cấp các mô hình ch ữ ký điện tử và truy ền khóa theo ph ương pháp ECC, m ột

phương pháp đang được sự chú ý nghiên c ứu của các nhà khoa h ọc trên thế giới do

khả năng ứng dụng vào các thiết bị di động, thiết bị nhúng...

Trên nền tảng bộ th ư vi ện được xây d ựng, chúng em th ực hi ện ứng dụng

Pocket Secure Data. Ứng dụng cung c ấp các ch ức năng về bảo mật thông tin trên

thiết bị PDA nh ư mã hóa, gi ải mã d ữ liệu, ký và xác nh ận chữ ký điện tử, tạo và

quản lý các khóa giao d ịch. Hơn nữa, do đặc thù của thiết bị PDA là có l ượng bộ

nhớ hạn chế và kh ả năng xử lý tính toán y ếu, chúng em đã xây dựng một phân hệ

Server để quản lý và t ạo khóa. Phân h ệ client và server liên k ết chặt chẽ, thông tin

trên đường truyền và thông tin lưu trữ đều được mã hóa.

Chúng em hy v ọng bộ thư viện và ứng dụng SPDA sẽ góp ph ần hỗ trợ người

sử dụng đảm bảo được an toàn thông tin dữ liệu được lưu trữ giao dịch bằng thiết bị

PDA một cách dễ dàng và thu ận tiện. Đồng thời chúng em cũng hy vọng ứng dụng

131

và thư viện sẽ được cài đặt hoàn chỉnh và nâng cao độ an toàn hơn trong tương lai.

Chương 10 Tổng kết

10.2. Hướng phát triển

v Tăng độ an toàn bảo mật của các thuật toán được cài đặt trong thư viện.

v Tăng tốc độ xử lý của các thuật toán.

v Tăng độ bảo mật truyền dữ liệu giữa hai phân hệ Client và Server.

v Thêm các chức năng về chứng nhận điện tử.

v Giao ti ếp với các h ệ th ống CA s ẵn có để th ực hi ện ch ứng nh ận điện tử trên

PDA.

v Truyền dữ liệu không dây giữa client và server.

132

v Cải tiến giao diện tiện dụng và thân thiện hơn với người sử dụng.

Phụ lục

Phụ lục

A. Mở rộng khóa trong thuật toán Rijndael

A.1 Mở đầu

Lưu ý rằng thủ tục AddRoundKey cần 2 tham số đầu vào:

- trạng thái hiện hành stater 4 dòng x Nb cột.

- khoá chu kỳ Wr được biểu diễn dưới dạng ma trận 4 dòng x Nb cột. (mỗi cột

là 1 word = 4 byte).

stater sẽ được XOR với Wr theo từng cột.

Có tất cả Nr + 1 lần thực hiện AddRoundKey

(cid:240) cần Nr + 1 khóa chu kỳ .

(cid:240) cần (Nr + 1)* Nb từ phát sinh từ khóa (Nk từ) ban đầu. Đưa (Nr + 1)* Nb từ

phát sinh vào mảng w[]

.

A.2 Các hàm được sử dụng

Key Expansion sử dụng 2 hàm sau:

v SubWord() :

a. input là 1 từ 4 bytes.

b. Sử dụng S-box (s ử dụng cùng S-box trong giai đoạn mã hoá) để thay

thế từng byte.

c. output là 1 từ 4 bytes sau khi đã thay thế.

v RotWord():

a. input là 1 từ 4 bytes có thứ tự là (a,b,c,d).

b. Xoay trái 4 bytes đi 1 vị trí.

133

c. output là 1 từ 4 bytes tương ứng là (b, c, d, a).

Phụ lục

A.3 Hằng số chu kỳ

Key Expansion sử dụng bảng hằng số chu kỳ RCon (viết tắt của Round Constant).

RCon là mảng 4-byte words được phát sinh như sau:

GF(28) và thoả: Rcon[i] = (RC[i], {00}, {00}, {00}) với RC[i] ˛

RC[1]=1 (= 0x01)

RC[i] =x • RC[i-1] = x(i–1)

* Cơ sở toán học:

Phép nhân • trên GF(2 8) (xét trên góc độ biểu di ễn bằng đa th ức ) t ương ứng với

phép nhân đa thức thông th ường rồi modulo cho đa thức 1 tối giản bậc 8. Đa thức tối giản được chọn là: m(x) = x8 + x4 + x3 + x + 1 (biểu diễn dưới dạng nhị phân là

00011011 = 0x1b).

Phép nhân • với x (00000010 = 0x02) biểu diễn dưới dạng nhị phân có thể thực

Ví dụ: x2 = x * x = (0x02 << 1) = 0x04

x9 = x8 * x = (0x80 << 1) XOR 0x1b = 0x1b.

hiện với 1 phép dịch trái và 1 phép XOR với 0x1b nếu bit cao nhất = 1

A.4 Quy trình mở rộng khóa:

Input: khóa ban đầu K, Nk

Output: mảng word w[] có (Nr + 1) * Nb phần tử.

Bước 1: Đưa Nk words của khóa ban đầu vào Nk vị trí đầu của w[]

134

w[i] = K[i] (0 £ i < Nk)

Phụ lục

Bước 2: Các vị trí còn lại của w[] ( Nk £ i < (Nr + 1) * Nb ):

Nếu i là bội số của Nk (i mod Nk = = 0)

w[i] = SubWord( RotWord( w[i-1] ) ) % RCon[i / Nk]; {

}

Ngược lại {

temp = w[i – 1]

Nếu (Nk = 8 và i mod Nk = 4)

{

temp = SubWord(temp)

}

w[i] = temp XOR w[i – Nk]

135

}

Phụ lục

B. Hằng số và giá tr ị kh ởi tạo sử dụng trong các thu ật

toán băm SHA

B.1 Hằng số sử dụng trong SHA

B.1.1 Hằng số của SHA-1

SHA-1 sử dụng dãy 80 từ 32 bit là hằng số K0, K1, ..., K79

t

5a82799

0

19

t

6ed9eba1

20

39

=

tK

t

8f1bbcdc

40

59

t

ca62c1d6

60

79

£ £ (cid:236) (cid:239) £ £ (cid:239) (cid:237) £ £ (cid:239) (cid:239) £ £ (cid:238)

B.1.2 Hằng số của SHA-224 và SHA-256

K

K,

,.....,

K

SHA-224 và SHA-256 s ử dụng dãy 64 t ừ 32 bit là hằng số

{ } 256 0

{ } 256 1

{ } 256 63

. Nh ững từ nà y bi ểu di ễn 32 bit đầu tiên của ph ần phân s ố

của căn bậc ba của 64 số nguyên tố đầu tiên. Các hằng số bao gồm (theo th ứ tự từ

428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5

d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174

e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da

27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c62e 92722c85

a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f4083585 106aa070

19a4c116 18376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3

748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2

trái sang phải)

B.1.3 Hằng số của SHA-384 và SHA-512

K

K,

,.....,

K

SHA-384 và SHA-512 sử dụng cùng dãy 80 t ừ 64 bit là hằng số

{ } 512 0

{ } 512 1

{ } 512 79

. Những từ này biểu diễn 64 bit đầu tiên của phần phân số

của căn bậc ba của 80 số nguyên tố đầu tiên. Các hằng số bao gồm (theo th ứ tự từ

136

trái sang phải)

428a2f98d728ae22 7137449123ef65cd b5c0fbcfec4d3b2f e9b5dba58189dbbc

3956c25bf348b538 59f111f1b605d019 923f82a4af194f9b ab1c5ed5da6d8118

d807aa98a3030242 12835b0145706fbe 243185be4ee4b28c 550c7dc3d5ffb4e2

72be5d74f27b896f 80deb1fe3b1696b1 9bdc06a725c71235 c19bf174cf692694

e49b69c19ef14ad2 efbe4786384f25e3 0fc19dc68b8cd5b5 240ca1cc77ac9c65

2de92c6f592b0275 4a7484aa6ea6e483 5cb0a9dcbd41fbd4 76f988da831153b5

983e5152ee66dfab a831c66d2db43210 b00327c898fb213f bf597fc7beef0ee4

c6e00bf33da88fc2 d5a79147930aa725 06ca6351e003826f 142929670a0e6e70

27b70a8546d22ffc 2e1b21385c26c926 4d2c6dfc5ac42aed 53380d139d95b3df

650a73548baf63de 766a0abb3c77b2a8 81c2c92e47edaee6 92722c851482353b

a2bfe8a14cf10364 a81a664bbc423001 c24b8b70d0f89791 c76c51a30654be30

d192e819d6ef5218 d69906245565a910 f40e35855771202a 106aa07032bbd1b8

19a4c116b8d2d0c8 1e376c085141ab53 2748774cdf8eeb99 34b0bcb5e19b48a8

391c0cb3c5c95a63 4ed8aa4ae3418acb 5b9cca4f7763e373 682e6ff3d6b2b8a3

748f82ee5defb2fc 78a5636f43172f60 84c87814a1f0ab72 8cc702081a6439ec

90befffa23631e28 a4506cebde82bde9 bef9a3f7b2c67915 c67178f2e372532b

ca273eceea26619c d186b8c721c0c207 eada7dd6cde0eb1e f57d4f7fee6ed178

06f067aa72176fba 0a637dc5a2c898a6 113f9804bef90dae 1b710b35131c471b

28db77f523047d84 32caab7b40c72493 3c9ebe0a15c9bebc 431d67c49c100d4c

4cc5d4becb3e42b6 597f299cfc657e2a 5fcb6fab3ad6faec 6c44198c4a475817

Phụ lục

B.2 Giá trị khởi tạo sử dụng trong SHA

=

H

67452301

)( 0 0

=

H

efcdab89

)( 0 1

=

H

98badcfe

)( 0 2

=

H

10325476

)( 0 3

=

H

c3d2e1f0

)( 0 4

137

B.2.1 Giá trị khởi tạo của SHA-1

Phụ lục

=

H

c1059ed8

)( 0 0

=

H

367cd507

)( 0 1

=

H

3070dd17

)( 0 2

=

H

f70e5939

)( 0 3

=

H

ffc00b31

)( 0 4

=

H

68581511

)( 0 5

=

H

64f98fa7

)( 0 6

=

H

befa4fa4

)( 0 7

B.2.2 Giá trị khởi tạo của SHA-224

=

H

6a09e667

)( 0 0

=

H

bb67ae85

)( 0 1

=

H

3c6ef372

)( 0 2

=

H

a54ff53a

)( 0 3

=

H

510e527f

)( 0 4

=

H

9b05688c

)( 0 5

=

H

1f83d9ab

)( 0 6

=

H

5be0cd19

)( 0 7

B.2.3 Giá trị khởi tạo của SHA-256

=

H

cbbb9d5dc1

059ed8

)0( 0

=

H

629a292a36

7cd507

)0( 1

=

H

9159015a30

70dd17

)0( 2

=

H

152fecd8f7

0e5939

)0( 3

=

H

67332667ff

c00b31

)0( 4

=

H

8eb44a8768

581511

)0( 5

=

H

db0c2e0d64

f98fa7

)0( 6

=

H

47b5481dbe

fa4fa4

)0( 7

138

B.2.4 Giá trị khởi tạo của SHA-384

Phụ lục

=

H

6a09e667f3

bcc908

)( 0 0

=

H

bb67ae8584

faa73b

)( 0 1

=

H

3c6ef372fe

94f82b

)( 0 2

=

H

a54ff53a5f

1d36f1

)( 0 3

=

H

510e527fad

e682d1

)( 0 4

=

H

9b05688c2b

3e6c1f

)( 0 5

=

H

1f83d9abfb

41bd6b

)( 0 6

=

H

5be0cd1913

7e2179

)( 0 7

139

B.2.5 Giá trị khởi tạo của SHA-512

Phụ lục

C. Các đặc tả Usecase khác

C.1 Manage Key

C.1.1 Tóm tắt

"Người dùng" sử dụng chức năng này để quản lý các khóa được sử dụng. Thông tin

khóa bao gồm : Tên khóa, Mật mã bảo vệ, Dữ liệu khóa, Ngày hết hạn

C.1.2 Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "ng ười dùng" có yêu cầu quản lý cá c khóa được sử

dụng.

"Người dùng" chọn chức năng cần thực hiện.

- Tùy thuộc chức năng đã chọn, các luồng sự kiện phụ sau được thực hiện:

- Nếu "ng ười dùng" chọn ch ức năng "Exchange Key", ch ức năng “Exchange

Key” được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Xóa khóa", lu ồng sự kiện phụ "Xóa

khóa" được thực hiện.

- Nếu "người dùng" chọn chức năng "Sửa thông tin khóa", luồng sự kiện phụ

"Sửa thông tin khóa" được thực hiện.

- Nếu "người dùng" chọn chức năng "Tạo khóa", luồng sự kiện phụ "Generate

Key" được thực hiện.

o Xóa khóa

- "Người dùng" chọn khóa cần xóa.

- "Người dùng" nhập mật mã của khóa.

- "Người dùng" chọn xóa khóa.

- Hệ thống mã hóa mật mã của khóa và kiểm tra mật mã hợp lệ.

140

- Hệ thống xóa thông tin khóa khỏi cơ sở dữ liệu.

Phụ lục

o Sửa thông tin khóa

- "Người dùng" chọn tên của khóa cần sửa.

- "Người dùng" nhập mật mã của khóa.

- Hệ thống hiện các thông tin hiện tại của khóa.

- Hệ thống kiểm tra mật mã khóa hợp lệ.

- "Người dùng" nhập các thông tin c ần sửa (nội dung khóa, thời gian hết hạn,

mật mã khóa...).

- "Người dùng" chọn sửa khóa.

- Hệ thống mã hóa khóa.

- Hệ thống lưu thông tin khóa đã sửa vào cơ sở dữ liệu.

• Dòng sự kiện khác

o Mật mã khóa không hợp lệ.

Khi mật mã khóa nhập vào không hợp lệ, hệ thống sẽ thông báo "người dùng" có

thể nhập lại hoặc ra khỏi chức năng đang thực hiện.

C.1.3 Yêu cầu đặc biệt

Không có

C.1.4 Điều kiện tiên quyết

"Người dùng" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

C.1.5 Điều kiện hậu quyết

Không có

C.1.6 Điểm mở rộng.

141

Không có

Phụ lục

C.2 Manage Contact

C.2.1 Tóm tắt

"Người dùng" sử dụng ch ức năng này để qu ản lý thông tin cá nhân và thông tin

khóa của các contact. Thông tin cá nhân c ủa một contact bao gồm: Tên contact, Địa

chỉ, Email, Điện thoại, Ghi chú (nếu có).

C.2.2 Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "người dùng" có yêu cầu tạo, xóa, sửa thông tin và thông

tin khóa của contact.

"Người dùng" chọn chức năng cần thực hiện.

Tùy thuộc chức năng đã chọn, các luồng sự kiện phụ sau đuợc thực hiện:

- Nếu "ng ười dùng" chọn ch ức năng "Tạo group", lu ồng sự kiện phụ "Tạo

group" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Xóa group", lu ồng sự kiện phụ "Xóa

group" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "S ửa group", lu ồng sự kiện phụ "Sửa

group" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Tạo partner", lu ồng sự kiện phụ "Tạo

partner" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Xóa partner", lu ồng sự kiện phụ "Xóa

partner" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "S ửa partner", lu ồng sự kiện phụ "Sửa

partner" được thực hiện.

- Nếu "ng ười dùng" chọn ch ức năng "Tìm contact", lu ồng sự kiện phụ "Tìm

142

contact" được thực hiện.

Phụ lục

o Tạo group

- "Người dùng" nhập tên group.

- "Người dùng" nhập thông tin mô tả về group.

- "Người dùng" chọn lưu thông tin group.

- Hệ thống kiểm tra thông tin nhập vào.

- Hệ thống sẽ lưu thông tin group vừa được tạo mới vào cơ sở dữ liệu.

o Xóa group

- "Người dùng" chọn group cần xóa.

- "Người dùng" chọn xóa thông tin group.

- Hệ thống yêu cầu người dùng xác nhận xóa thông tin.

- Hệ thống thực hiện xóa group và các liên lạc có trong group ra khỏi cơ sở dữ

liệu.

o Sửa group

- "Người dùng" chọn group cần sửa thông tin.

- "Người dùng" chọn sửa thông tin group.

- "Người dùng" nhập thông tin cần sửa.

- "Người dùng" có yêu cầu quản lý các liên lạc có trong nhóm, các luồng sự

kiện phụ "Tạo contact", "Xóa contact", "Sửa contact" được thực hiện.

- "Người dùng" có yêu cầu quản lý các khóa sử dụng chung cho nhóm, chức

năng "Key Management" được thực hiện.

- "Người dùng" chọn lưu thông tin group.

- Hệ thống kiểm tra thông tin nhập vào.

143

- Hệ thống thực hiện lưu các thay đổi vào cơ sở dữ liệu.

Phụ lục

o Tạo partner

- "Người dùng" nhập tên liên lạc.

- "Người dùng" nhập các thông tin cá nhân của liên lạc bao gồm Địa chỉ, Điện

thoại, Email, Ghi chú.

- "Người dùng" chọn lưu thông tin liên lạc.

- Hệ thống kiểm tra thông tin nhập vào.

- Hệ thống sẽ lưu thông tin liên lạc vừa được tạo mới vào cơ sở dữ liệu

o Xóa partner

- "Người dùng" chọn liên lạc cần xóa.

- "Người dùng" chọn xóa thông tin liên lạc.

- Hệ thống yêu cầu người dùng xác nhận xóa thông tin.

- Hệ thống thực hiện xóa liên lạc ra khỏi cơ sở dữ liệu.

o Sửa partner

- "Người dùng" chọn liên lạc cần sửa thông tin.

- "Người dùng" chọn sửa thông tin liên lạc.

- "Người dùng" nhập thông tin cần sửa.

- "Người dùng" có yêu cầu quản lý cá c khóa của liên lạc, ch ức năng "Key

Management" được thực hiện.

- "Người dùng" chọn lưu thông tin liên lạc.

- Hệ thống kiểm tra thông tin nhập vào.

- Hệ thống thực hiện lưu các thay đổi vào cơ sở dữ liệu.

o Tìm contact

- "Người dùng" nhập tiêu chí tìm kiếm bao gồm: Tên liên lạc, Email

- "Người dùng" chọn tìm kiếm thông tin.

- Hệ thống thực hiện tìm trong cơ sở dữ liệu những liên lạc thỏa mãn các tiêu

chí tìm kiếm.

144

- Hệ thống xuất ra kết quả cho "người dùng" .

Phụ lục

• Dòng sự kiện khác

o Thông tin group nhập vào không hợp lệ

Nếu thông tin group nh ập vào không hợp lệ, hệ thống đưa ra thông báo và quay trở

về đầu luồng sự kiện để "người dùng" nhập lại thông tin group.

o Thông tin partner nhập vào không hợp lệ

Nếu thông tin partnernhập vào không hợp lệ, hệ thống đưa ra thông báo và quay trở

về đầu luồng sự kiện để "người dùng" nhập lại thông tin partner.

C.2.3 Yêu cầu đặc biệt

Không có

C.2.4 Điều kiện tiên quyết

"Người dùng" đăng nhập thành công vào hệ thống thông qua chức năng Login.

C.2.5 Điều kiện hậu quyết

Không có

C.3 Manage User

C.3.1 Tóm tắt

"Quản trị" sử dụng chức năng này để quản lý thông tin tài khoản người dùng.

C.3.2 Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "qu ản tr ị" có yêu cầu thêm, xóa, sửa tài khoản ng ười

dùng.

"Quản trị" chọn chức năng cần thực hiện.

- Nếu "quản trị" chọn chức năng "Tạo tài khoản", luồng sự kiện phụ "Tạo tài

145

khoản" được thực hiện

Phụ lục

- Nếu "quản trị" chọn chức năng "Hủy tài khoản", luồng sự kiện phụ "Hủy tài

khoản" được thực hiện

- Nếu "quản trị" chọn chức năng "Sửa tài khoản", luồng sự kiện phụ "Sửa tài

khoản" được thực hiện.

- Nếu "quản trị" chọn chức năng "Tìm tài khoản", luồng sự kiện phụ "Tìm tài

khoản" được thực hiện.

o Tạo tài khoản

- "Quản tr ị" nh ập các thông tin tài khoản "ng ười dùng" bao g ồm: username,

Fullname, Email, Address, Phone

- Hệ thống tạo ra 1 c ặp khóa công khai – khóa riêng để là m password trên

server.

- Hệ thống kiểm tra thông tin nhập vào.

- Hệ thống lưu thông tin tài khoản vào cơ sở dữ liệu.

o Hủy tài khoản

- "Quản trị" chọn tài khoản.

- "Quản trị" yêu cầu xoá tài khoản.

- Hệ thống yêu cầu nhập mật khẩu của "quản trị".

- "Quản trị" nhập mật khẩu.

- Hệ thống th ực hi ện băm mật kh ẩu và so sánh với thông tin trong c ơ sở dữ

liệu.

- Hệ thống yêu cầu xác nhận xóa tài khoản.

146

- Hệ thống thực hiện xóa tài khoản.

Phụ lục

o Sửa tài khoản

- "Quản trị" nh ập các thông tin liên quan của tài khoản bao gồm:: username,

Firstname, Lastname, Email, Address, Phone

- "Quản trị" yêu cầu sửa thông tin.

- Hệ thống kiểm tra thông tin nhập vào.

- Hệ thống cập nhật thông tin vào cơ sở dữ liệu.

o Tìm tài khoản

- "Quản trị" nhập các tiêu chí tìm kiếm bao gồm:

o username, Firstname, Lastname, Email

- "Quản trị" yêu cầu tìm kiếm thông tin.

- Hệ thống tìm thông tin tài khoản tương ứng trong cơ sở dữ liệu.

- Hệ thống hiển thị kết quả tìm kiếm.

• Dòng sự kiện khác

o Mật khẩu quản trị không hợp lệ.

Khi mật mã khóa nhập vào không hợp lệ, hệ thống sẽ thông báo "quản trị" có thể

nhập lại hoặc ra khỏi chức năng đang thực hiện.

o Thông tin tài khoản nhập vào không hợp lệ

Khi thông tin tài khoản nhập vào không hợp lệ, hệ thống sẽ thông báo để "quản trị"

có thể nhập lại thông tin tài khoản hoặc ra khỏi chức năng đang thực hiện.

C.3.3 Yêu cầu đặc biệt

Không có

C.3.4 Điều kiện tiên quyết

"Quản trị" phải đăng nhập thành công vào hệ thống thông qua chức năng Login.

C.3.5 Điều kiện hậu quyết

Không có

C.3.6 Điểm mở rộng

147

Không có

Phụ lục

C.4 Login

C.4.1 Tóm tắt

"Người dùng" /"quản trị" sử dụng chức năng này để đăng nhập vào hệ thống và bắt

đầu sử dụng chương trình.

C.4.2 Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "ng ười dùng" ho ặc "quản trị" muốn đăng nhập vào h ệ

thống để bắt đầu sử dụng.

- Xuất hiện màn hình đăng nhập.

- "Người dùng" nhập vào mật khẩu.

- Hệ thống thực hiện băm mật khẩu và so sánh kết quả trong cơ sở dữ liệu để

kiểm tra mật khẩu hợp lệ.

- Hệ thống thông báo "người dùng" đăng nhập thành công.

• Dòng sự kiện khác

o Sai mật khẩu

Nếu "người dùng" nhập sai mật khẩu, Hệ thống sẽ phát hiện và đưa ra thông báo lỗi.

"Người dùng" có th ể trở về đầu dòng sự kiện chính để đăng nhập lại, hoặc hủy bỏ

thao tác đăng nhập.

C.4.3 Yêu cầu đặc biệt

Không có

C.4.4 Điều kiện tiên quyết

Không có

C.4.5 Điều kiện hậu quyết

148

"Người dùng" / "Quản trị" đăng nhập thành công vào hệ thống.

Phụ lục

"Người dùng" sau khi đăng nhập thành công vào h ệ thống sẽ tiếp tục sử dụng các

chức năng: "Change Password", "Key Management", "Cipher", "Signature",

"Contact Management."

Quản trị sau khi đăng nhập thành công vào h ệ thống sẽ tiếp tục sử dụng các ch ức

năng: "Change Password", "User Management".

C.4.6 Điểm mở rộng.

Không có

C.5 Change Password

C.5.1 Tóm tắt

"Người dùng" / "quản trị" sử dụng chức năng này để thay đổi mật khẩu đăng nhập.

C.5.2 Dòng sự kiện

• Dòng sự kiện chính

Chức năng này bắt đầu khi "ng ười dùng" hoặc "quản trị" muốn thay đổi mật khẩu

đăng nhập.

- "Người dùng" nhập mật khẩu cũ .

- "Người dùng" nhập vào mật khẩu mới.

- "Người dùng" nhập vào mật khẩu để xác nhận mật khẩu mới.

- "Người dùng" chọn đổi mật khẩu.

- Hệ thống thực hiện băm mật khẩu cũ và so sánh kết quả trong cơ sở dữ liệu

để kiểm tra mật khẩu hợp lệ.

- Hệ thống kiểm tra mật khẩu xác nhận và mật khẩu mới.

- Hệ thống thực hiện băm mật khẩu mới và lưu vào cơ sở dữ liệu của chương

149

trình.

Phụ lục

• Dòng sự kiện khác

o Mật khẩu mới và mật khẩu xác nhận không giống nhau.

Nếu mật khẩu mới và mật khẩu xác nhận không giống nhau, hệ thống sẽ thông báo

lỗi và quay lại đầu dòng sự kiện chính để "người dùng" nhập lại mật khẩu mới và

mật khẩu xác nhận hoặc hủy bỏ thao tác đổi mật khẩu.

o Sai mật khẩu cũ

Nếu "người dùng" nhập sai mật khẩu, hệ thống sẽ phát hiện và đưa ra thông báo lỗi.

"Người dùng" có th ể trở về đầu dòng sự kiện chính để đăng nhập lại, hoặc hủy bỏ

thao tác đổi mật khẩu.

C.5.3 Yêu cầu đặc biệt

Không có

C.5.4 Điều kiện tiên quyết

"Người dùng" đăng nhập thành công vào hệ thống thông qua chức năng Login.

C.5.5 Điều kiện hậu quyết

Không có

C.5.6 Điểm mở rộng.

150

Không có

D. Các mô hình sơ đồ tuần tự khác

D.1 Sign Signature

: ContactClient

: KeyClient

: Signature

: KeyServer

: frmKeyChooser

: frmMain

: frmSignature

: ClientUser

: ContactServer

1. //Start the application

1.1. showForm( )

2. //Choose Signature Function

2.1. showForm( )

3. //Input Data

4. //Click on "Contact " button

4.1. showForm( )

4.1.1. static sendGetList (integer)

4.1.1.1. static getList (integer)

5. static receiveGetList(object)

5.1. showContactList( )

6. //Click on a contact

6.1. static sendGetList (integer)

6.1.1. static getList (integer)

7. static receiveGetList(object)

7.1. showKeyList( )

8. //Click on a key

9. //Click OK

9.1. closeForm( )

10. //Click on "Sign" button

10.1. updateInputData( )

10.2. static sendGetInstance(integer)

10.2.1. static getInstance(integer)

11. static receiveGetInstance(object)

10.3. //Set Key

10.4. sign(byte[])

10.5. saveData( )

10.6. showMessage( )

151

D.2 Verify Signature

: ContactClient

: KeyClient

: Signature

: KeyServer

: frmKeyChooser

: frmMain

: frmSignature

: ClientUser

: ContactServer

1. //Start the application

1.1. showForm ( )

2. //Choose Signature Function

2.1. showForm ( )

3. //Click on "Contact" button

3.1. showForm ( )

3.1.1. static sendGetList (integer)

3.1.1.1. static getList(integer)

4. static receiveGetList(object)

4.1. showContactList( )

5. //Click on a contact

6. static sendGetList (integer)

6.1. static getList(integer)

7. static receiveGetList(object)

7.1. showKeyList( )

8. //Click on a key

9. //Click OK

9.1. closeForm ( )

10. //Click on "Verify" button

10.1. updateInputData( )

10.2. static sendGetInstance (integer)

10.2.1. static getInstance (integer)

11. static receiveGetInstance(object)

10.3. verify(byte[], byte[])

10.4. showMessage ( )

152

D.3 Create Key Exchange

153

D.4 Decrypt Key Exchange

154

Tài liệu tham khảo

Tài liệu tham khảo

§ Tiếng Việt

[1] Dương Anh Đức, Trần Minh Triết, Lương Hán Cơ, Chuẩn mã hóa mới AES,

Hội thảo Quốc gia “M ột số vấn đề chọn lọc của Công Ngh ệ Thông Tin” l ần

4, Hải Phòng, Việt Nam, tháng 6 năm 2001

[2] Duong Anh Duc, Tran Minh Triet, Luong Han Co, The extended Rijndael-

like Block Ciphers, Hội nghị Quốc tế về Công Nghệ Thông Tin (International

Conference on Information Technology): Coding and Computing – 2002,

The Orleans, Las Vegas, Nevada, USA, tháng 4 năm 2002

[3] Duong Anh Duc, Tran Minh Triet, Luong Han Co, The extended versions of

the Advanced Encryption Standard , Hội ngh ị về Mật mã Ứng dụng

(Workshop on Applied Cryptology), CODING THEORY AND DATA

INTEGRITY, Singapore, tháng 12 năm 2001

[4] Duong Anh Duc, Tran Minh Triet, Luong Han Co, The extended version of

the Rijndael Block Cipher , Tạp chí của Viện Toán Học và Tin H ọc (Journal

of Institute of Mathematics and Computer Sciences), India, Vol. 12, No. 2,

tháng 12 năm 2001.

[5] Dương Anh Đức, Tr ần Minh Tri ết, Lương Hán C ơ, The 256/384/512-bit

version of the Rijndael Block Cipher , Tạp chí Tin h ọc và Điều khi ển, Vi ệt

Nam, tập 17, số 4, tháng 12 năm 2001

[6] Lê Thụy Anh, Nhúng ứng dụng GIS vào thi ết bị PDA, Đại học Khoa hoc Tự

nhiên Tp. HCM, Luận án thạc sĩ tin học – 2004.

[7] Lương Vĩ Minh, Phan Th ị Minh Đức, Nghiên cứu một số vấn đề về ch ứng

nhận ch ữ ký điện tử - mã khóa và ứng dụng, Đại học Khoa h ọc Tự nhiên

155

Tp.HCM, Luận văn cử nhân tin học – 2003

Tài liệu tham khảo

[8] Trần Minh Tri ết, Lương Hán Cơ, Nghiên cứu các ph ương pháp mã hóa và

ứng dụng, Đại học Khoa học Tự nhiên Tp.HCM, Luận văn cử nhân tin học –

2001

[9] Trần Minh Triết, Nghiên cứu một số vấn đề về bảo vệ thông tin và ứng dụng,

Đại học Khoa h ọc Tự nhiên Tp.HCM, B ản th ảo lu ận án Th ạc sĩ Tin h ọc ,

2004

[10] Võ Sỹ Nam, Đỗ Lệnh Hùng Sơn, Xây dựng một ứng dụng bản đồ trên máy

Pocket PC 2002 (Windows CE 3.0) cho phép hi ển thị một bản đồ điện tử và

cung cấp một số chức năng tìm kiếm thông tin , Đại học Khoa học Tự nhiên

Tp.HCM, Luận văn cử nhân tin học – 2003

[11] Võ Văn Lữ, Đỗ Đình Thái, Nghiên cứu một số thu ật toán mã hóa ph ục vụ

cho thương mại điện tử, Đại học Khoa học Tự nhiên Tp.HCM, Lu ận văn cử

nhân tin học – 2002.

§ Tiếng Anh

[12] Alfred Menezes, Comparing the Security of ECC and RSA, University of

Waterloo, 2000

[13] Bram Cohen, AES-Hash, 2001

[14] Bruce Schneier, Applied Cryptography: Protocols, Algorithms, and Source

Code in C, 2nd Edition, John Wiley & Sons, Inc., 1995.

[15] Bart Preneel, K.U. Leuven, The Davies-Mayer Hash Function, 2004

[16] Eric Rescorla, SSL&TLS Designing and Building Secure Systems, 2001

[17] FIPS, Announcing the Advanced Encryption Standard (AES), 2001

[18] FIPS, Announcing the Digital Signature Standard (DSS), 2000

[19] FIPS, Announcing the Secure Hash Standard, 2004

156

[20] FIPS, Data Encryption Standard (DES), 1993

Tài liệu tham khảo

[21] Henna Pietilainen, Elliptic curve cryptography on smart card , Helsinki

University of Technology, 2000

[22] IEEE-P1363, Standard Specifications for Public Key Cryptography, 1999

[23] Leung Ka Ho Ivan, A Microcoded Elliptic Curve Cryptographic Processor ,

The Chinese University of HongKong, MPhil. Thesis, 2001

[24] Mohan Atreya, Ben Hammond, Stephen Paine, Paul Starrett, Stephen Wu,

Digtital Signatures, RSA, 2002

[25] NIST, Recommended elliptic curves for federal government use, 1999

§ Internet

[26] http://www.certicom.com

[27] http://www.cse.cuhk.edu.hk/~khleung/

[28] http://www.cs.umbc.edu/~wyvern/ta/encryption.html

[29] http://www.nist.gov/csrc

[30] http://www.pocketpcdn.com

[31] http://www.rsasecurity.com

157

[32] http://www.sun.com