Xem mẫu
- Đồ án chuyên ngành
Tìm hiểu và cài đặt một số thuật
toán mã hoá
- M ỤC L ỤC
LỜI NÓI ĐẦU ................................ ................................ ................................ ................ 1
MỤC LỤC ................................ ................................ ....... Error! Bookmark not defined.
CHƯƠNG I. TỔNG QUÁT VỀ ĐỀ TÀI ................................ ................................ ...... 5
1) Lý do chọn đề tài ................................ ................................ ................................ 5
2) Mục đích đề tài ................................ ................................ ................................ ... 5
3) Nội dung đề tài ................................ ................................ ................................ ... 5
CHƯƠNG II. SƠ LƯỢC VỀ MÃ HÓA ................................ ................................ ....... 6
1) Lịch sử mật mã học ................................ ................................ ............................ 6
2) Ứng dụng mã hóa ................................ ................................ ............................... 6
3) Các thành phần của một hệ mã ................................ ................................ ........... 7
CHƯƠNG III. TÌM HIỂU THUẬT TOÁN MÃ HÓA ................................ ................ 10
1) Mã hóa bảng băm (Hashing) ................................ ................................ ............. 10
2) Mã hóa đối xứng................................ ................................ ............................... 11
3) Mã hóa bất đối xứng ................................ ................................ ......................... 14
CHƯƠNG IV. TÌM HIỂU THUẬT TOÁN ................................ ................................ 18
1) Thuật toán MD5 (Message Digest 5) ................................ ................................ 18
2) Thuật toán RSA ................................ ................................ ................................ 25
CHƯƠNG V. KẾT LUẬN ................................ ................................ ......................... 29
CHƯƠNG VI. TÀI LIỆU THAM KHẢO: ................... Error! Bookmark not defined.
- DANH MỤC HÌNH ẢNH
Hình 1. Cây gậy mã hóa của người Hy Lạp ................................ ................................ .. 6
Hình 2. Trường hợp nghe không hợp pháp này được gọi là nghe trộm ........................ 12
Hình 3. Trường hợp nghe trộm khi Alice mã hoá thông tin gửi cho Bob ...................... 12
Hình 4. Mã hoá công khai với khoá Public và giải mã với Private ............................... 16
Hình 5. Mã hoá công khai với khoá Private và giải mã với Public ............................... 16
Hình 6. Sơ đồ 1 vòng mã hoá MD5 ................................ ................................ ............. 22
Hình 7. Trước khi mã hoá MD5................................ ................................ ................... 24
Hình 8. Sau khi mã hoá với MD5 ................................ ................................ ................ 25
Hình 9. Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA ................................ ... 26
Hình 10. Form tạo khoá ................................ ................................ ................................ . 26
Hình 11. Trước khi mã hoá với RSA ................................ ................................ ............. 27
Hình 12. Sau khi mã hoá với RSA với khoá riêng tư ................................ .................... 27
Hình 13. Sau khi giải mã với khoá công khai................................ ................................ . 28
- LỜI NÓI ĐẦU
Từ khi con người có nhu cầu trao đổi thông tin, thư từ cho nhau thì nhu cầu giữ bí
mật và bảo vệ tính riêng tư của những thông tin được trao đổi từ đó cũng nảy sinh. Từ
trước công nguyên con người đã phải quan tâm tới việc làm thế nào để đảm bảo an
toàn bí mật cho các tài liệu văn bản đặc biệt là các thông tin nhạy cảm trong các lĩnh
vực như quân sự, ngoại giao hay kinh doanh. Ngày nay cùng với sự xuất hiện của máy
tính, các tài liệu văn bản giấy tờ và các thông tin quan trọng đều được số hoá và xử lý
trên máy tính, được truyền đi trong một môi trường mặc định là không an toàn. Do đó
yêu cầu cần phải có ít nhất một cơ chế, giải pháp để bảo vệ sự an toàn và bí mật của
các thông tin nhậy cảm, quan trọng ngày càng trở nên cấp thiết. Mã hoá là một trong
những giải pháp tốt cho những vấn đề này. Hiện nay việc sử dụng mã hoá trong các
ứng dụng tin học là điều không thể thiếu và đã hình thành rất nhiều các thuật toán mã
hoá cho việc mã hoá như các thuật toán đối xứng và bất đối xứng, các hàm băm, ….
Trong đồ án môn học “ Tìm hiểu và cài đặt một số thuật toán mã hoá” sẽ đi tìm
hiểu chi tiết về các thuật toán mã hoá như hàm băm, hệ mã đối xứng và hệ mã bất đối
xứng nhằm đưa ra các đánh giá về các thuật toán và thực hiện cài đặt một số thuật toán
như MD5, RSA trên ngôn ngữ C#.
Trong thời gian qua dù đã cố gắng hết sức song mã hoá là một chủ đề hết sức rộng
lớn và khó trong khi thời gian có hạn nên khi thực hiện đồ án không tránh khỏi những
sai xót, khiếm khuyết nên em mong nhận được sự đóng góp, giúp đỡ của mọi người để
đồ án trở này có thể hoàn thiện hơn.
Cũng qua đồ án môn học này em xin chân thành cảm ơn sự hướng dẫn của Giảng
viên Ths. Huỳnh Ngọc Thọ cùng các Thầy cô khác trong khoa đã nhiệt tình hướng dẫn
để em có thể hoàn thành đồ án này.
Đà Nẵng, Ngày 1 tháng 12 năm 2011
Sinh viên thực hiện
Vũ Đình Huy
- CHƯƠNG I. TỔNG QUÁT VỀ ĐỀ TÀI
1) Lý do chọn đề tài
Trong thời đại của công nghệ thông tin như hiện nay,tất cả các dữ liệu, thông tin
trên thế giới đã, đang và sẽ được số hóa. Việc này tạo rất nhiều thuận lợi trong việc tìm
kiếm, tổ chức lưu trữ cũng như chia sẻ tri thức nhân loại, tăng mức độ trao đổi thông
tin. Nhưng bên cạnh đó việc bảo mật dữ liệu được số hóa hiện đang là một vấn đề rất ít
được quan tâm đến dẫn đến các tài liệu mang tính riêng tư được công khai dẫn đến
nhiều tổn thất trong nhiều mặt. Nhận thức được vấn đề này nên em quyết định chọn đồ
án chuyên ngành là “Tìm hiểu và cài đặt một số thuật toán mã hoá”.
2) Mục đích đề tài
Đề tài tập trung nghiên cứu, tìm hiểu các vấn đề cơ bản trong việc mã hóa thông
tin, các khái niệm cơ bản trong mật mã học các phương pháp mã hóa thông tin cơ bản,
các giao thức mật mã.
Tìm hiểu các phương thức mã hóa cơ bản Bảng Băm, Mã hóa đối xứng và bất đối
xứng.
Cài đặt thuật toán một số thuật toán mã hóa với ngôn ngữ C#.
3) Nội dung đề tài
Trong bản báo cáo này trình bày các vấn đề cơ bản trong việc mã hoá như:
Chương II Trình bày sơ lược về mã hoá như: lịch sử ngành mật mã học, các ứng
dụng của mã hoá trong thực tế, các thành phần trong mã hoá thông tin.
Chương III Trình bày một số loại thuật toán mã hoá như hàm băm, mã hoá đối
xứng, mã hoá bất đối xứng.
Chương IV Trình bày cài đặt các thuật toán và đưa ra một số đánh giá về thuật
toán mã hoá như MD5 và RSA.
Chương V Trình bày kết luận của báo cáo.
- CHƯƠNG II. SƠ LƯỢC VỀ MÃ HÓA
1) Lịch sử mật mã học
Mật mã học là một ngành có lịch sử từ hàng nghìn năm. Trong phần lớn lịch sử
phát triển lịch sử mật mã học chính là của phương pháp mã hóa cổ điển – Các phương
pháp mã hóa với bút và giấy hay đôi khi sử dụng một vài dụng cụ cơ khí đơn giản.
Hình 1. Cây gậy mã hóa của người Hy Lạp – Dụng
cụ mã hoá đầu tiên trong ngành mật mã học
Đến thế kỷ XX, cùng với sự xuất hiện cuarcasc cơ cấu cơ khí và điện cơ đã cung
cấp những cơ chế phức tạp và hiệu quả hơn cho việc mật mã hóa. Sự ra đời và phát
triển mạnh mẽ của ngành điện tử và máy tính đã làm cho mật mã học phát triển nhảy
vọt lên một tầm cao mới. Tuy nhiên cùng với các kỹ thuật mã hóa thì các kỹ thuật phá
mã (hay thám mã) cũng phát triển song hành. Các kỹ thuật phá mã trong một số trường
hợp đã có ảnh hưởng đáng kể đến các sự kiện lịch sử như việc phát hiện ra “Bức điện
Zimmermann”đã khiến Hoa Kỳ tham gia thế chến I và việc phá mã thành công hệ
thống mật mã của ĐỨc Quốc xa đã góp phần đẩy nhanh thời điểm kết thúc của thế
chiến II.
Cho tới thập kỷ 70 của thế kỷ XX các kỹ thuật mã hóa hầu như nằm trong tay của
các chính phủ. Hai sự kiện đã khiến mật mã học trở nên thích hợp cho mọi người là sự
xuất hiện của tiêu chuẩn mật mã hóa DES (Data Encryption Standard) và sự ra đời của
các kỹ thuật “Mật mã hóa khóa công khai”.
2) Ứng dụng mã hóa
Ngày nay khó có thể tìm thấy các ứng dụng trên máy tính mà lại không sử dụng
tới các thuật toán và các giao thức mật mã học. Từ các ứng dụng cho các máy tính cá
- nhân cho tới các chương trình hệ thống như hệ điều hành, các ứng dụng mạng hay các
hệ cơ sở dữ liệu đều có sử dụng thuật toán mã hóa mật khẩu người dùng bằng một hệ
mã hoặc một hàm băm nào đó. Đặc biệt với sự phát triển mạnh mẽ của thương mại
điện tử, các mô hình chữ ký điện tử ngày càng đóng vai trò tích cực cho môi trường an
toàn cho người sử dụng. Tuy vậy chúng ta vẫn có thể chia các lĩnh vực ứng dụng của
mật mã học thành một số lĩnh vực như sau:
Bảo mật (Confidentiality): Che giấu nội dung của thông điệp được trao
đổi trong một phiên truyền thông hoặc giao dịch các thông điệp trên một
hệ thống máy tính
Xác thực hóa(Authentication: Đảm bảo nguồn gốc của một thông điệp,
người dùng
Toàn vẹn (Integrity): Đảm bảo chỉ có các tổ chức đã được xác thực hóa
mới có thể thây đổi các tài sản của hệ thống cũng như các thông tin trên
đường truyền
Dịch vụ không thể chối từ( Non-Repudiaton): Các bên đã xác thực không
thể phủ nhận việc tham gia một giao dịch hợp lệ
Các lĩnh vực khác: Như chữ ký điện tử, dịch vụ chứng minh danh tính
cho phép thay thế hình thức xác thực hóa người dùng dựa trên các mật
khẩu bằng cá kỹ thuật mạnh hơn hoặc dịch vụ thương mại điện tử cho
phép tiến hành các giao dịch các giao dịch an toàn các kênh truyền
thông không an toàn như môi trường Internet
3) Các thành phần của một hệ mã
3.1 Định nghĩa
Một hệ mật là một bộ (P,C,K,E,D) thỏa mãn các điều kiện sau:
P là một tập hợp hữu hạn các bản rõ (Plain text), nó còn được gọi là
không gian bản rõ.
C là tập hữu hạn các bản mã (Crypto),nó còn được gọi là không gian
các bản mã. Mỗi phần tử trong C có thể nhận được bằng cách áp dụng
phép mã hóa Ek lên một phần tử của P với k K.
K là một tập hợp hữu hạn các khóa hay còn gọi là không gian khóa. Đối
với mỗi phần tử k của K được gọi là một khóa (Key). Số lượng của không
- gian khóa phải đủ lớn để “kẻ địch” không có đủ thời gian để thử mọi
khóa có thể (phương pháp vét cạn).
Đối với mỗi k K có một quy tắc mã eK :P->C và một quy tắc giải mã
tương ứng dK D. Mỗi eK:P -> C và dK:C -> P là những hàm mã
3.2 Phân loại hệ mật mã
Có nhiều cách để phân loại hệ mật mã nhưng dựa vào cách truyền khóa có thể
phân hệ mật mã thành hai loại:
Hệ mật đối xứng (hay còn gọi là khóa bí mật) là những hệ mật dùng
chung một khóa trong cả quá trình mã hóa d ữ liệu và giải mã dữ liệu.
Do đó khóa phải được giữ bí mật tuyệt đối
Hệ mã bất đối xứng (hay còn gọi là mã hóa công khai) Các hệ mật này
dùng một khóa để mã hóa và mọt khá khác để giải mã, nghĩa là khóa để
mã và giải mã là hoàn toàn khác biệt.Các khóa này tạo nên từng cặp
chuyển đổi ngược nhau và không có khóa nào có thể suy ra được từ khóa
kia. Khóa dùng để mã hóa là công khai nhưng khóa để giải mã là bí mật.
3.3 Tiêu chuẩn đánh giá một hệ mật mã.
Để đánh giá một hệ mã người ta thường đánh giá thông qua các tính chất sau:
a. Độ an toàn:
Một hệ mật mã được đưa vào sử dụng điều đầu tiên phải có độ an toàn cao. Ưu
điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán mà
không cần phải cài đặt. Một hệ mật được coi là an toàn nếu để phá mật mã này cần
phải dùng tới n phép toán. Để giải quyết được n phép toán này cần một thời gian vô
cùng lớn, khó có thể chấp nhận được.
Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn như:
Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các
khóa và công khai thuật toán
Khi cho khoá công khai e K và bản rõ P thì chúng ta dễ dàng tính được
eK(P) = C. Ngược lại khi cho dK và bản mã C thì dễ dàng tính được
dK(M)=P. Khi không biết dK thì không có khả năng để tìm được M từ C,
nghĩa là khi cho hàm f: X → Y thì việc tính y=f(x) với mọi x∈ X là dễ
còn việc tìm x khi biết y lại là vấn đề khó và nó được gọi là hàm một
chiều.
- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ..
b. Tốc độ mã hóa và giải mã
c. Phân phối khóa
Một hệ mật mã phụ thuộc vào khóa, khóa này được truyền công khai hay truyền
khóa bí mật. Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật có khóa
công khai. Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã.
- CHƯƠNG III. TÌM HIỂU THUẬT TOÁN MÃ HÓA
1) Mã hóa bảng băm (Hashing)
1.1 Khái niệm:
Hashing là một phương thức mã hóa nhưng mà nó không phải là một thuật toán
mã hóa. Hashing sử dụng một chứng chỉ số duy nhất được biết đến với tên như:
hashing value (Giá trị hashing), Hash (Bảng Băm), Message Authencation Code (Đoạn
mã chứng thực), fingerprint (Vân tay) hay chỉ là môt đoạn massage.
Không như các phương thức mã hóa khác, Hashing sử dụng một hash value và
không thay đổi dữ liệu ban đầu, quá trình Hashing có thể sử dụng để bảo vệ và kiểm
tra tính toàn vẹn của dữ liệu khi một tiến trình copy được thực hiện và đảm bảo tính
chính xác của dữ liệu khi chúng được copy. Thông số Hash-Value để phát hiện ra dữ
liệu có còn toàn vẹn trong quá trình mã hóa và giải mã thông tin hay không
Dữ liệu đầu vào của Hashing có thể là một file text, một chuỗi string, một bức thư
điện tử…. có độ dài bất kỳ, dữ liệu đầu ra của hashing là một chuỗi có chiều dài cố
định.
1.2 Ví dụ : Chuỗi:
The quick brown fox jumps over the lazy dog
=e107d9d372bb6826bd81d3542a419d6
Và chỉ cần thêm 1 chữ nó sẽ hoàn toàn khác:
The quick brown foxjumps over the lazy doga
= ccb0962bd083791df15cd2bc1846afc7
Thậm chí là một chuỗi rỗng cũng có kết quả:
= d41d8cd98f00b204e9800998ecf8427e
1.3 Đặc tính hàm băm:
Hàm Băm là thuật toán một chiều nên nó chỉ mã hoá một chuỗi có chiều dài bất kỳ
thành một chuỗi có chiều dài cố định mà không có thuật toán giải mã nên nó sử dụng
chủ yếu trong các hoạt động mã hoá mật khẩu để chứng thực vì có chiều dài cố định
128bit nên tốc độ so sánh của nó rất nhanh.
Một vấn đề cần phải bàn đó là sự đụng độ của hàm Băm. Theo nguyên lý Diricle
“Nếu có n+1 con thỏ cho vào n cái chuồng thì phải tồn tại ít nhất một cái chuồng mà
- trong đó có ít nhất là hai con thỏ ở chung”. Rõ ràng với không gian giá trị giới hạn của
hàm băm nhỏ hơn rất nhiều so với không gian về mặ kích thwowcjsthif chắc chắn sẽ
tồn tại đụng độ nghĩa là sẽ có hai tin x khác x’ mà có h(x) = h(x’).
1.4 Ứng dụng của hàm băm
Các hàm băm được ứng dụng trong khá nhiều lĩnh vực, chúng thường được thiết
kế phù hợp với từng ứng dụng. Ví dụ như trong mật mã học để giả thiết sự tồn tại của
một đối phương – người có thể cố tình tìm các dữ liệu cùng với một giá trị băm. Một
hàm băm tốt là một phép biến đổi một chiều, nghĩa là không có một phương pháp thực
tiễn nào để tính toán được dữ liệu vào nào đó tương ứng với giá trị băm mong muốn.
Khi đó việc giả mạo sẽ rất khó khăn.
Bảng băm là một ứng dụng của hàm băm cho phép tra cứu nhanh một bản ghi dữ
liệu nếu cho trước một khoá nào đó của bản ghi đó.
Các hàm băm còn được sử dụng trong việc phát hiện và sửa lỗi tập trung phân biệt
các trường hợp mà dữ liệu đã bị làm nhiễu bởi các quá trình ngẫu nhiên.
Các hàm băm còn được sử dụng trong các ứng dụng nhận dạng âm thanh như việc
xác định một file mp3 có khớp với một file trong danh sách một loại file khác hay
không.
2) Mã hóa đối xứng
2.1 Tìm hiểu mã hoá đối xứng
Chương trình mã hóa đối xứng còn được gọi là chương trình hay thuật toán một
khóa, khóa bí mật hoặc khóa đối xứng.
Có thể dễ dàng hiểu được đặc điểm của công nghệ mã hóa đối xứng thông qua ví
dụ sau: Có hai người sử dụng, Alice và Bob, muốn giao tiếp trên một kênh không an
toàn (Internet, WIFI, điện thoại di động...).
Vấn đề thực sự bắt đầu khi có một cô gái xấu tên là Eve truy cập vào kênh đó, ví
dụ bằng cách xâm nhập vào một bộ định tuyến Internet hoặc nghe tín hiệu phát sóng
của liên lạc Wi-Fi.Hiển nhiên, trong nhiều tình huống Alice và Bob sẽ muốn liên lạc
mà bị Eve nghe trộm.
Trường hợp nghe không hợp pháp này được gọi là nghe trộm.
- Hình 2. Trường hợp nghe không hợp pháp này được gọi là nghe trộm của nhân vật Eve
Ví dụ, nếu Alice và Bob đại diện cho hai văn phòng của một nhà sản xuất xe hơi,
và họ đang truyền đạt cho nhau các tài liệu nói về chiến lược kinh doanh để giới thiệu
các mẫu xe mới trong vài năm tới, những tài liệu này không nên bị rơi vào tay các đối
thủ cạnh tranh của họ. Trong trường hợp này, công nghệ mã hóa sẽ đưa ra một giải
pháp hiệu quả: Alice phải mã hóa thông điệp của mình bằng cách sử dụng thuật toán
đối xứng, tạo ra văn bản mật mã. Bob sẽ nhận văn bản mật mã đó và giải mã thông
điệp của Alice. Do vậy, giải mã là quá trình nghịch đảo của mã hóa. Điều này đem lại
lợi ích gì? Nếu chúng ta có một thuật toán mã hóa mạnh thì đối với Eve văn bản mật
mã đó chỉ giống như những bit ngẫu nhiên và không chứa bất cứ thông tin hữu ích
nào.
Hình 3. Trường hợp nghe trộm của nhân vật Eve khi Alice mã hoá thông tin gửi cho Bob
Hệ thống mã hóa đối xứng khi có hai thuộc tính sau:
1. Sử dụng cùng một khóa bí mật để mã hóa và giải mã.
- 2. Hàm mã hóa và giải mã giống hệt nhau.
Trong trường hợp trên, có một điều quan trọng và cũng phản trực là cả hai thuật
toán mã hóa và giải mã đều được công khai.
Dường như việc giữ bí mật cho các thuật toán mã hóa sẽ làm cho toàn bộ hệ thống
khó bị phá vỡ. Tuy nhiên, các thuật toán bí mật cũng có nghĩa là chưa được kiểm tra:
Cách duy nhất để tìm hiểu xem một phương pháp mã hóa có mạnh hay không, tức là
không thể bị phá vỡ bởi một kẻ tấn công có chủ ý, là để nó công khai cho người khác
phân tích.
Trước khi có máy vi tính, mật mã học bao gồm các thuật toán dựa trên ký tự. Các
thuật toán mã hóa đó thường thay ký tự này bằng một ký tự khác hoặc hoán vị các ký
tự cho nhau. Thuật toán tốt hơn hết là thực hiện cả hai điều đó nhiều lần.
Ngày nay mọi thứ đều đã phức tạp hơn nhưng triết lý vẫn tương tự như trước đây.
Chỉ có điểm thay đổi cơ bản là các thuật toán hoạt động theo bit thay vì các ký
tự. Điều này thực sự chỉ là sự thay đổi về kích thước bảng chữ cái: từ 26 yếu tố đến hai
yếu tố. Các thuật toán mã hóa hiệu quả nhất vẫn là kết hợp các yếu tố thay thế và hoán
vị.
2.2 Một số thuật toán mã hoá
Thuật toán mã hoá Caesar: nổi tiếng là thuật toán thay thế theo cách
đơn giản mà mỗi ký tự văn bản gốc sẽ được thay thể bởi ký tự th ứ
ba tính từ bên phải nó trong bảng 26 chữ cái (“A” được thay thế
bởi “D,” “B” được thay thế bởi “E,”..., “W” được thay thế bởi
“Z,” “X” được thay thế bởi “A,” “Y” được thay thế bởi “B,” and
“Z” được thay thế bởi “C”).
Thuật toán mã hoá chuyển vị Đây là một phương pháp mã hóa mà
những vị trí được tổ chức bởi các đơn vị của văn bản gốc (thường là các
ký tự hoặc nhóm ký tự) được chuyển dịch theo một hệ thống có quy tắc,
như vậy văn bản mã hóa tạo nên sự hoán vị của văn bản gốc. Đó chính
là sự thay đổi thứ tự của các đơn vị.
Thuật toán mã hoá luồng: mã hóa từng bit, hết bít này đến bít khác.. Có
thể thực hiện điều này bằng cách thêm một bit từ luồng khóa vào một bit
- văn bản gốc. Những loại thuật toán mã hóa luồng đồng bộ là luồng khóa
chỉ phụ thuộc vào khóa đó và loại không đồng bộ là luồng khóa còn phụ
thuộc vào văn bản mật mã. Một số thuật toán mã hoá luồng mạnh như
RC4, RC5…
Thuật toán mã hoá khối: mã hóa cả khối bit của văn bản thường cùng
một lúc và với cùng một khóa. Điều này có nghĩa là sự mã hóa bất kỳ bit
nào trong khối đã cho cũng phụ thuộc vào mọi bit khác trong cùng khối.
2.3 Đánh giá mức độ an toàn của thuật toán:
Độ dài khóa Ước tính độ an toàn
An toàn trong thời gian ngắn: vài giờ hoặc vài ngày
56-64 bit
An toàn trong thời gian dài: nhiều thập kỷ nếu không có sự
112-128 bit
tồn tại của máy tính lượng tử
An toàn trong thời gian: nhiều thập kỷ, ngay cả khi máy tính
lượng tử vận hành các thuật toán máy tính lượng tử đang được
256 bit
biết đến hiện nay
3) Mã hóa bất đối xứng
Trong mô hình mật mã cổ điển mà cho tới nay vẫn còn đang được nghiên cứu:
Người gửi (A) và người nhận (B) bằng cách chọn một khoá bí mật K. Sau đó A dùng
khoá K để mã hoá theo quy luật eK và B dùng khoá K đó để giải mã theo quy luật dK.
Trong hệ này, dk hoặc giống như eK hoặc dễ dàng nhận được từ nó vì quá trình giải mã
hoàn toàn tương tự quá trình mã hoá, nhưng thủ tục khoá thì ngược lại. Nhược điểm
lớn của hệ mật này là nếu ta để lộ eK thì làm cho hệ thống mất an toàn, chính vì thế
nên chúng ta tạo cho hệ mật một kênh an toàn mà kinh phí để tạo một kênh an toàn
không phải là rẻ.
Ý tưởng xây dựng một hệ khoá công khai là tìm được một hệ mật không có khả
năng tình toán để xác định dK dù có biết được eK . Nếu thực hiện như vậy thì quy tắc eK
có thể được sử dụng công khai công bố nó ra ngoài, và khi người gửi muốn gửi một
bản tin cho người nhận thì người đó không phải thông tin trước với người nhận về
khoá mật, và người gửi sẽ mã hoá thông tin bằng cách dùng luật mã hoá công khai eK.
- Khi bản tin này được chuyển cho người nhận thì chỉ duy nhất người nhân mới có thể
giải được bản tin này bằng cách sử dụng luật giải mã bí mật dK.
Ý tưởng về hệ mật này đã được Diffie và Heliman đưa ra vào năm 1976. Còn việc
thực hiện hệ mã công khai thì được Rivest, Shamin và Adieman đưa ra lần đầu tiên
năm 1977. Họ tạo nên hệ mật RSA nổi tiếng. Sau đó đã có rất nhiều hệ mật khác ra đời
như:
Hệ mật xếp ba lô
Hệ mật McEliece
Hệ mật ElGamal
Hệ mật Chor – Rivest
Hệ mật trên các đường cong Elliptic
3.1 Định nghĩa:
Mật mã bất đối xứng (astmmetric cryptography) còn có tên gọi khác là mật mã
hoặc mật mã hai khoá ( two key
khoá công khai (public key crytography)
crytography).
Đặc trưng của kỹ thuật mã hoá bất đối xứng là dùng 2 khoá riêng biệt cho hai việc
mã hoá và giải mã. Một trong hai khoá được phổ biển công khai là khoá public dùng
để mã hoá, khoá còn lại là khoá riêng hay còn gọi là khoá bí mật (private key hay PR)
dùng để giải mã.
- Hình 4. Mã hoá công khai với khoá Public và giải mã với Private
Hình 5. Mã hoá công khai với khoá Private và giải mã với Public
Nhìn chung mã hoá đối xứng không phải là một mã hoá có tính an toàn cao hơn
các hệ mã khác. Như phần trên đã trình bày, độ an toàn của một thuật toán phụ thuộc
vào hai yếu tố: độ dài của khoá và mực độ phức tạp khi thực hiện thuật toán trên máy
tính. Hơn nữa mặc dù ra đời sau song không có nghĩa rằng mật mã bất đối xứng hoàn
toàn ưu điểm hơn và sẽ thay thế cho mật mã đối xứng. Mỗi kỹ thuật mã hoá có thế
mạnh riêng và mật mã đối xứng vẫn rất thích hợp cho các hệ thống nhỏ và đơn giản.
Ngoài ra, vấn đề phân phối khoá trong mật mã bất đối xứng cũng được đánh giá là một
trong những vấn đề phức tạp khi triển khai kỹ thuật này trên thực tế.
3.2 Nguyên tắc hoạt động
Các thành phần của một hệ thống mật mã bất đối xứng tương tự như một hệ thống
mật mã quy ước, chỉ khác ở chi tiết dùng 2 khoá K khác nhau cho hai bước mã hoá và
giải mã. Khi người dùng muốn gửi thông tin cho một người dùng khác thì phải có một
trong hai khoá của user nhận, do vậy mỗi user phải lưu trữ sẵn một danh sách các khoá
của nhiều user khác có quan hệ trao đổi dữ liệu. Một cơ chế để quản lý các khoá này
trên máy tính là key ring.
Các bước cơ bản của một hệ thống mật mã dùng khoá công khai bao gồm:
- Mỗi thực thể thông tin (user) tạo ra một cặp khoá public/private để dùng
cho việc mã hoá và giải mã.
Mỗi user thông báo một trong 2 khoá của mình cho các user khác muốn
trao đổi thông tin biết. Khoá này gọi là khoá công khai. Khoá còn lại
được giữ khoá bí mật còn gọi là khoá riêng.
Nếu một user A muốn gửi một thông tin cho user B, user A thực hiện việc
mã thông tin cần gửi bằng khoá công khai của user B.
Khi nhận được thông tin mã hoá từ user A, user B thực hiện việc giải mã
thông tin đó bằng khoá riêng của mình. Do khoá riêng không phổ biến
công khai nên chỉ có một mình user B có khả năng giải mã được.
3.3 Ứng dụng của mật mã đối xứng
Mật mã bất đối xứng dùng cho các mục đích như: Ứng dụng rõ ràng nhất của mật
mã hóa khóa công khai là bảo mật: một văn bản được mã hoá bằng khóa công khai của
một người sử dụng thì chỉ có thể giải mã với khoá bí mật của người đó.
Các thuật toán tạo chữ ký số khoá công khai có thể dùng chứng thực. Một người
sử dụng có thể mã hoá văn bản với khoá bí mật của mình. Nếu một người khác có
thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất
phát từ người gắn với khóa công khai đó.
- CHƯƠNG IV. TÌM HIỂU THUẬT TOÁN
1) Thuật toán MD5 (Message Digest 5)
1.1 Thuật toán Mã Hóa
Ronald Rivest là người đã phát minh ra thuật toán MD2, MD4(1990) và
MD5(1991). MD5 là một cả tiến của MD4 và cũng là hàm được sử dụng rộng rãi nhất.
Các nguyên tắc thiết kế của hàm này cũng là nguyên tắc chung cho rất nhiều các hàm
băm khác. MD5 từng có thời gian được xem là một chuẩn trên internet, được sử dụn
rộng rãi trong các ch ương trình an ninh mạng và cũng để kiểm tra tính nguyên vẹn của
tập tin.
a. Miêu tả MD5:
Đầu vào là những khối 512 bit được chia thành 16 khối con 32 bit, đầu ra của thuật
toán là thiết lập của 4 khối 32 bit để thạo thành một hàm băm 128 bit duy nhất.
Đầu tiên ta đưa thông điệp cần mã hoá ra chia thành các kh ối 512bit với khối cuối
cùng đặt là x (x
- đó các bit “0“ được thêm vào để có một độ dài đồng dư với 448 môđun 512. Trong tất
cả các trường hợp, có ít nhất 1 và nhiều nhất 512 bit được thêm vào.
Bước 2 : Gắn thêm độ dài
Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả
của bước 1. Trong trường hợp b lớn hơn 2^64 thì chỉ có 64 bit thấp của b được sử
dụng. ( Các bit này được thêm vào phía sau dưới dạng 2 word 32 bit, gắn word thấp
trước theo quy ước ở trên )
Bước 3 : Khởi tạo bộ đệm MD
Một bộ đệm 4 word (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi
A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá
trị hex sau ( các byte thấp trước ) :
word A : 01 23 45 67
word B : 89 ab cd ef
word C : fe dc ba 98
word D : 76 54 32 10
Bước 4 : Xử lý thông điệp theo từng khối 16 word
Trước hết ta định nghĩa các hàm phụ, các hàm này nhận đầu vào là 3 word 32 bit
và tạo ra một word 32 bit.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z)= XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Với mỗi bit, F hoạt động như một điều kiện : nếu X thì Y nếu không thì Z. Hàm F
có thể định nghĩa bằng phép + thay vì v bởi vì XY và not(X)Z không bao giờ có “1“ ở
cùng 1 vị trí bit.Các hàm G,H và I tương tự như F, ở chỗ chúng tác động theo từng bit
tương ứng để tạo ra kết quả từ các bit của X,Y và Z
Bước này sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T[i] là
phần tử thứ i của bảng, thì T[i]là phần nguyên của 4294967296*|sin(i)| , i được tính
theo radian.
Làm như sau :
- /* Xử lý mỗi khối 16 word */
For i = 0 to N/16-1 do
/* Copy block i into X. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end /* of loop on j */
/* Lưu A vào AA, B vào BB, C vào CC, D và DD . */
AA = A
BB = B
CC = C
DD = D
/* Vòng 1. */
/* Ký hiệu [abcd k s i] nghĩa là thực hiện như sau :
a = b + ((a + F(b,c,d) + X[k] + T[i])
nguon tai.lieu . vn