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 ể
có
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.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. 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. 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ệ. 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ệ. 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 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. 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 Đặ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 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. 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. 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. 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 .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 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. 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 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. 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 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 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. 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. 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. 85 Chương 7Xây dựng bộ thư viện SPDA Cryptolib 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 SymmetricAlgorithm AsymmetricAlgorithm KeyExchange DESStandardProvider TripleDESStandardProvider AESStandardProvider RSAStandardProvider ECCStandardProvider RSAKeyExchangeStandardProvider DHKeyExchangeStandardProvider ECCKeyExchangeStandardProvider Hash Signature Certificate MD5StandardProvider SHA1StandardProvider SHA256StandardProvider SHA512StandardProvider DSASignatureStandardProvider RSASignatureStandardProvider X509Certificate CryptographicException RandomNumberGenerator InvalidKeySizeException 87 Chương 7 Xây dựng bộ thư viện SPDA Cryptolib 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ử. 90 Chương 8 Xây dựng ứng dụng Pocket Secure Data 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. • 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.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. - 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 Manage User Admin Login Change Password Exchange Key < < Symmetric Cipher < < Manage Key Cipher User Generate Key Asymmetric Cipher Sign and Verify Manage Contact 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. 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 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 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 112 Chương 8 Xây dựng ứng dụng Pocket Secure Data 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 113 Chương 8 Xây dựng ứng dụng Pocket Secure Data Contact
Relationship Accounts Keys Contacts Settings 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.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 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 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 119 Chương 8 Xây dựng ứng dụng Pocket Secure Data 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. 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. 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. 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. 122 Chương 8 Xây dựng ứng dụng Pocket Secure Data 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 123 Chương 8 Xây dựng ứng dụng Pocket Secure Data 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. 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. 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 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. 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. 126 Chương 9 Cài đặt và triển khai ứng dụng 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 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 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 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 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. RSA - 1024
ECC - 163 17.7855744
2.0930096 2448.00
361.00 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 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 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 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.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 = 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.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.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.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.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.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ó : 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 : 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 153 154 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.com4.1.3. Giới thi ệu đề xu ất hàm b ăm mới AES–HASH c ủa Bram
Cohen
4.2. Chữ ký điện tử
4.2.1. Mô hình chữ ký điện tử theo RSA
4.2.2. Thuật toán chữ ký điện tử DSA
4.2.3. Thuật toán chữ ký điện tử trên Elliptic Curve (ECDSA)
Chương 5.
Tổng quan về PDA và môi trường phát
triển .NET Compact Framework
5.1. Tìm hi ểu thiết bị PDA
5.1.1. Đặc điểm của PDA
5.1.2. Các hạn chế của PDA
5.2. T ổng quan về WindowCE và Pocket PC
5.2.1. Giới thiệu hệ điều hành Windows CE
5.2.2. Giới thiệu Pocket PC
5.3. Gi ới thiệu .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
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
6.1.2. Khả năng lưu trữ
6.1.3. Khả năng tương tác giữa người sử dụng và thiết bị
6.1.4. Mức độ hỗ trợ của các thư viện lập trình
6.2. Các gi ải pháp cụ thể
6.2.1. CryptoAPI
6.2.2. Xây dựng bộ thư viện SPDA Cryptolib
Phần 3:
Ứng dụng
mã hóa
Chương 7. Xây d ựng bộ thư viện SPDA Cryptolib
7.1. Phát bi ểu bài toán
7.2. Ki ến trúc bộ thư viện
7.2.1. Sơ đồ kiến trúc bộ thư viện
Hình 7-1: Class diagram của thư viện SPDA Cryptolib .
7.2.2. Danh sách các lớp trong thư viện
Bảng 7-1: Danh sách các lớp trong thư viện SPDA Cryptolib .
Chương 8. Xây d ựng ứng dụng Pocket Secure Data
8.1. Phát bi ểu bài toán
8.2. Phân tích yêu cầu
8.2.1. Bảng chú giải
8.2.2. Các yêu cầu chức năng
8.2.3. Các yêu cầu phi chức năng
8.3. Sơ đồ Usecase
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
Bảng 8-1: Danh sách các Usecase.
8.3.2. Một số sơ đồ tuần tự chính
8.4. S ơ đồ lớp
8.4.1. Phân hệ client
Hình 8-2: Class diagram trên phân hệ client
8.4.2. Phân hệ server
Hình 8-3: Class diagram trên phân hệ server.
8.5. Thi ết kế dữ liệu
8.5.1. Sơ đồ dữ liệu
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.3. Ràng buộc toàn vẹn
8.6. Thi ết kế giao diện
8.6.1. Sơ đồ màn hình
Hình 8-5: Sơ đồ màn hình phân hệ server.
Hình 8-6: Sơ đồ màn hình phân hệ client.
8.6.2. Màn hình phân hệ server
Hình 8-7: Màn hình chính Server.
Hình 8-8: Màn hình User Registration.
Hình 8-9: Màn hình User Management
Hình 8-10: Màn hình Server Settings.
8.6.3. Màn hình phân hệ client
Hình 8-11: Màn hình chính Client.
Màn hình
Điều khiển
Ý nghĩa
Hình 8-12: Màn hình Cipher.
Hình 8-13: Màn hình KeyExchange.
Hình 8-14:Màn hình Signature
Hình 8-15: Màn hình Key Generator.
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.
Chương 9. Cài
đặt và triển khai ứng dụng
9.1. Môi tr ường cài đặt
9.2. Mô hình cài đặt
Hình 9-1:Mô hình cài đặt thư viện và ứ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)
Bảng 9-1: Kết quả mã hóa thử nghiệm trên Desktop và PDA.
Môi trường desktop
Môi trường PDA
Thuật toán –
kích thước khóa
Bảng 9-2: Kết quả thử nghiệm tạo khóa RSA và ECC
Chương 10. Tổng kết
10.1. Kết luận
10.2. Hướng phát triển
Phụ lục
A. Mở rộng khóa trong thuật toán Rijndael
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.2 Giá trị khởi tạo sử dụng trong SHA
C. Các đặc tả Usecase khác
C.1 Manage Key
C.2 Manage Contact
C.3 Manage User
C.4 Login
C.5 Change Password
D. Các mô hình sơ đồ tuần tự khác
D.1 Sign Signature
D.2 Verify Signature
D.3 Create Key Exchange
D.4 Decrypt Key Exchange
Tài liệu tham khảo

