Hệ mã khóa công khai có ưu điểm hơn hệ mã khóa đối xứng ở chỗ: có thể công khai thuật toán mã hóa và khóa mã hóa khóa công khai cho nhiều người sử dụng, và cần phải quản lí tốt khóa công
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CNTT & TT
THANH TOÁN ĐIỆN TỬ
Thái Nguyên - 2015
Trang 2ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CNTT&TT
THANH TOÁN ĐIỆN TỬ
Chuyên ngành: Khoa h ọc máy tính
Mã số chuyên ngành: 60.48.01
NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS.TS TR ỊNH NHẬT TIẾN
Trang 3Công trình được hoàn thành tại:
Trường ĐH Công nghệ thông tin và Truyền thông – ĐH Thái Nguyên
Người hướng dẫn khoa học: PGS.TS Trịnh Nhật Tiến
Trang 4L ỜI CAM ĐOAN
Tôi xin cam đoan luận văn này của tự bản thân tôi tìm hiểu, nghiên cứu dưới sự hướng dẫn của PGS.TS Trịnh Nhật Tiến Các chương trình thực nghiệm
do chính bản thân tôi lập trình, các kết quả là hoàn toàn trung thực Các tài
liệu tham khảo được trích dẫn và chú thích đầy đủ
TÁC GIẢ LUẬN VĂN
Nông Th ị Lệ Quyên
Trang 5L ỜI CẢM ƠN
Tôi xin bày tỏ lời cảm ơn chân thành tới tập thể các thầy cô giáo Viện
công nghệ thông tin – Viện Hàn lâm Khoa học và Công nghệ Việt Nam, các
thầy cô giáo Trường Đại học Công nghệ thông tin và truyền thông - Đại học Thái
Nguyên đã dạy dỗ chúng em trong suốt quá trình học tập chương trình cao học
tại trường
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo PGS.TS Trịnh
Nhật Tiến, Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội đã quan
tâm, định hướng và đưa ra những góp ý, gợi ý, chỉnh sửa quí báu cho em trong
quá trình làm luận văn tốt nghiệp
Cuối cùng, em xin chân thành cảm ơn các bạn bè đồng nghiệp, gia đình
và người thân đã quan tâm, giúp đỡ và chia sẻ với em trong suốt quá trình làm
luận văn tốt nghiệp
HỌC VIÊN
Nông Th ị Lệ Quyên
Trang 6M ỤC LỤC
L ỜI CAM ĐOAN I
L ỜI CẢM ƠN II
M ỤC LỤC III DANH M ỤC CÁC HÌNH VẼ V DANH M ỤC CÁC TỪ VIẾT TẮT VI
M Ở ĐẦU 1
CHƯƠNG 1 CÁC KHÁI NIỆM CƠ BẢN 3
1.1 V ẤN ĐỀ MÃ HÓA 3
1.1.1 Mã hóa khóa đối xứng (mã hóa khóa riêng) 6
1.1.2 Mã hóa khóa bất đối xứng (mã hóa khóa công khai) 14
1.2 V ẤN ĐỀ V Ề CH Ữ KÍ ĐIỆN T Ử 16
1.2.1 Chữ kí điện tử 17
1.2.2 Chữ kí số 17
1.3 V ẤN ĐỀ QU ẢN LÍ KHÓA 25
1.3.1 Khóa và một số khái niệm 25
1.3.2 Vấn đề quản lí khóa bí mật 26
1.3.3 Vấn đề quản lí khóa công khai 27
CHƯƠNG 2 MỘT SỐ SƠ ĐỒ THỎA THUẬN KHÓA BÍ MẬT 29
2.1 TH ỎA THU ẬN KHÓA BÍ M ẬT B ẰNG CÁCH G ỬI KHÓA BÍ M ẬT 29
2.2 TH ỎA THU ẬN KHÓA BÍ M ẬT B ẰNG CÁCH KHÔNG G ỬI KHÓA 29
2.2.1.Sơ đồ thỏa thuận khóa Blom 30
2.2.2 Sơ đồ thỏa thuận khóa Diffie – Hellman 33
2.2.3 Sơ đồ thỏa thuận khóa “Trạm tới Trạm” 36
2.2.4 Sơ đồ thỏa thuận khóa MTI 41
2.3 TH ỎA THU ẬN KHÓA BÍ M ẬT B ẰNG CÁCH CHIA S Ẻ KHÓA THÀNH NHI ỀU M ẢNH 43
CHƯƠNG 3 ỨNG DỤNG TRONG “THANH TOÁN ĐIỆN TỬ” 47
3.1 THANH TOÁN ĐIỆN T Ử LÀ GÌ 47
3.2 CÁC MÔ HÌNH THANH TOÁN ĐIỆN T Ử 47
3.2.1 Các mô hình thanh toán điện tử 47
3.2.2 Rủi ro về an toàn thông tin trong thanh toán điện tử 49
3.2 BÀI TOÁN: TH ỎA THU ẬN KHÓA BÍ M ẬT ĐỂ TH ỰC HI ỆN VI ỆC MÃ HÓA S Ử D ỤNG TRONG THANH TOÁN ĐIỆN T Ử 53
3.2.1 Bài toán: Bảo mật hợp đồng thanh toán điện tử 53
3.2.2 Bài toán: Bảo toàn hợp đồng thanh toán điện tử 54
Trang 73.2.3 Bài toán: Xác thực hợp đồng thanh toán điện tử 55
3.2.4 Bài toán: Phòng tránh chối cãi hợp đồng thanh toán 55
3.3 GI ẢI QUY ẾT BÀI TOÁN TH ỎA THU ẬN KHÓA BÍ M ẬT ĐỂ TH ỰC HI ỆN VI ỆC MÃ HÓA S Ử D ỤNG TRONG THANH TOÁN ĐIỆN T Ử 56
3.3.1 Giải quyết bài toán: Bảo mật hợp đồng thanh toán điện tử 56
3.3.2 Giải quyết bài toán bảo toàn hợp đồng trong thanh toán điện tử 56
3.3.3 Giải quyết bài toán: Xác thực hợp đồng thanh toán điện tử 58
3.3.4 Giải quyết bài toán: Phòng tránh chối cãi hợp đồng thanh toán 599 3.4 CHƯƠNG TRÌNH TH Ử NGHI ỆM 59
3.4.1 Thỏa thuận khóa 59
3.4.2 Mã hóa bản hợp đồng điện tử bằn hệ mã hóa DES 61
3.4.3 Tạo chữ ký số bằng chữ ký số RSA 62
K ẾT LUẬN 63
TÀI LI ỆU THAM KHẢO 64
Trang 8DANH MỤC CÁC HÌNH VẼ
2 Hình 1.2: Sơ đồ hoạt động của mã hóa khóa đối xứng 6
3 Hình 1.3: Quy trình mã hóa của hệ mã hóa DES 7
5 Hình 3.3: Sơ đồ tính khóa con trong hệ mã hóa DES 10
6 Hình 1.5: Sơ đồ tính hàm f trong hệ mã hóa DES 12
7 Hình 1.6: Sơ đồ hoạt động của mã hóa khóa bất đối xứng 14
8 Hình 1.7: Sơ đồ mã hóa dữ liệu của hệ mã hóa khóa công khai RSA 16
9 Hình 1.8: Sơ đồ giải mã dữ liệu của hệ mã hóa khóa công khai RSA 16
10 Hình 2.1: Thỏa thuận khóa Diffie – Hellman 34
11 Hình 2.2: Kẻ xâm nhập giữa cuộc trong giao thức Diffie-Hellman 35
12 Hình 2.3: Thỏa thuận khóa trạm tới trạm 37
13 Hình 2.4: Giao thức trạm tới trạm có sự xâm nhập giữa đường 38
15 Hình 2.6: Giao thức MTI có sự xâm nhập giữa đường 42
Trang 10MỞ ĐẦU
Khi nhu cầu trao đổi thông tin dữ liệu qua mạng Internet ngày càng lớn và đa dạng, các tiến bộ về điện tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin
dữ liệu:
Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp Các thông tin dữ liệu nằm ở kho dữ liệu hay đang trên đường truyền đều cần được bảo vệ, tuy nhiên môi trường khó bảo vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xâm nhập nhất đó là môi trường mạng và quá trình truyền tin
“Mật mã” có lẽ là một kỹ thuật được dùng lâu đời nhất trong việc đảm bảo
“An toàn thông tin” Trước đây “mật mã” chỉ được dùng trong ngành an ninh quốc phòng, ngày nay việc đảm bảo “An toàn thông tin” là nhu cầu của mọi ngành, mọi người (do các thông tin chủ yếu được truyền trên mạng công khai), vì vậy kỹ thuật
“mật mã” là công khai cho mọi người dùng Điều bí mật nằm ở “khóa” của mật mã
Vì vậy với bất kì hệ mã hóa nào người ta cần phải quản lí tốt “khóa”
Hiện nay có hai loại hệ mã hóa chính: mã hóa khóa đối xứng (hệ mã hóa khóa riêng) và mã hóa khóa bất đối xứng (mã hóa khóa công khai) Với hệ mã khóa đối xứng, nếu biết được khóa này thì “dễ” tính được khóa kia và ngược lại Hệ mã khóa công khai có ưu điểm hơn hệ mã khóa đối xứng ở chỗ: có thể công khai thuật toán mã hóa và khóa mã hóa (khóa công khai) cho nhiều người sử dụng, và cần phải quản lí tốt khóa công khai
Trang 11Do đó việc sử dụng hệ mã hóa khóa công khai cho cặp người dùng thỏa thuận khóa bí mật của hệ mã khóa riêng sẽ làm cho hệ mã khóa riêng trở nên an toàn vì khi đó ta chỉ thỏa thuận cách tính khóa trên mạng chứ không truyền khóa trên mạng, thuật toán mã hóa và giải mã sẽ nhanh hơn
Được sự gợi ý của giáo viên hướng dẫn và nhận thấy tính thiết thực của vấn
đề, em đã chọn đề tài “Tìm hiểu một số sơ đồ thỏa thuận khóa bí mật và ứng
dụng trong thanh toán điện tử” để làm nội dung cho luận văn tốt nghiệp của
mình
Luận văn này tập trung vào tìm hiểu cơ sở lý thuyết toán học và một số kỹ thuật mật mã để thực hiện thỏa thuận khóa bí mật của hệ mã khóa riêng, sau đó áp dụng giải quyết một số bài toán về an toàn thông tin trong “Thanh toán điện tử” Nội dung chính của luận văn gồm có ba chương
Chương 1: Các khái niệm cơ bản
Trong chương này luận văn trình bày các kiến thức cơ bản về mã hóa, vấn đề chữ kí số, vấn đề quản lí khóa
Chương 2: Một số sơ đồ thỏa thuận khóa bí mật
Nội dung chương 2 trình bày về vấn đề thỏa thuận khóa bí mật và một số sơ
đồ thỏa thuận khóa bí mật
Chương 3: Ứng dụng trong thanh toán điện tử
Nội dung chương 3 tập trung và trình bày một số bài toán ứng dụng thỏa thuận khóa bí mật trong thanh toán điện tử và xây dựng chương trình kiểm thử cho bài toán “Bảo toàn hợp đồng thanh toán điện tử”, chương trình kiểm thử được viết bằng ngôn ngữ lập trình java
Trang 12CHƯƠNG 1 CÁC KHÁI NIỆM CƠ BẢN 1.1 VẤN ĐỀ MÃ HÓA
Mã hoá là phần rất quan trọng trong vấn đề bảo mật Mã hoá ngoài nhiệm vụ chính là làm cho tài liệu an toàn hơn, nó còn có một lợi ích quan trọng là: thay vì truyền đi tài liệu thô (không được mã hoá) trên một đường truyền đặc biệt, được canh phòng cẩn mật không cho người nào có thể “xâm nhập” vào lấy dữ liệu, người
ta có thể truyền một tài liệu đã được mã hoá trên bất cứ đường truyền nào mà không
lo dữ liệu bị đánh cắp vì nếu dữ liệu có bị đánh cắp đi nữa thì dữ liệu đó cũng không dùng được
Theo nghĩa hẹp thì “mật mã” chủ yếu dùng để bảo mật dữ liệu, người ta quan niệm “Mật mã học” là khoa học nghiên cứu mật mã bao gồm tạo mã và phân tích
mã (là kỹ thuật, nghệ thuật phân tích mật mã, kiểm tra tính bảo mật của nó hoặc phá vỡ sự bí mật của nó)
Theo nghĩa rộng, “mật mã” là một trong những công cụ hiệu quả đảm bảo an toàn thông tin nói chung: bảo mật, bảo toàn, xác thực, chống chối cãi,…
M ột số khái niệm liên quan:
dữ liệu mã hoá hoặc ngược lại Thuật toán mã hóa/ giải mã là công khai
mã thông tin Mỗi khi một thông tin đã được mã hoá thì chỉ có những người có khoá thích hợp mới có thể giải mã Nếu không thì dù dùng cùng một thuật toán giải
mã nhưng cũng không thể phục hồi lại thông tin ban đầu Đây là đặc điểm quan trọng của khoá: mã hoá chỉ phụ thuộc vào khoá mà không phụ thuộc vào thuật toán
mã hóa/ giải mã Điều này giúp cho một thuật toán mã hóa/ giải mã có thể được sử dụng rộng rãi
Trang 13H ệ mã hóa [3]: Việc mã hóa phải theo quy tắc nhất định, quy tắc đó gọi là hệ
mã hóa Hệ mã hóa được định nghĩa là bộ năm P C K E D, , , , , trong đó:
Ở đây x được gọi là bản rõ, e k e x được gọi là bản mã
Sơ đồ mã hóa và giải mã dữ liệu:
Trong sơ đồ này, người gửi G có khóa lập mã k e , người nhận N có khóa giải
mã k d
Người gửi G muốn gửi bản tin x cho người nhận N Để đảm bảo bí mật, G
mã hóa bản tin x bằng khóa lập mã k e được bản mã C và gửi C cho N Tin tặc có thể bắt chặn giữa đường lấy bản mã C, nhưng cũng “khó” hiểu được bản tin gốc x
vì không có khóa giải mã k d
Người nhận N nhận được bản mã C, họ dùng khóa giải mã k d để giải mã C sẽ nhận được bản tin gốc ( )
Trang 14Với hình thức khá phổ biến hiện nay là truyền tin qua thư điện tử và không sử dụng các công cụ mã hoá, bảo mật cũng như chữ ký điện tử thì các tình huống sau
có thể xảy ra:
- Không chỉ nguời nhận mà người khác cũng có thể đọc được thông tin
- Thông tin mà ta nhận được có thể không phải là của người gửi đúng đắn
- Thông tin nhận được đã bị người thứ ba sửa đổi
- Bị nghe/xem trộm: thông tin được truyền đi trên đường truyền có thể bị ai đó
“xâm nhập” vào lấy ra, tuy nhiên vẫn đến được người nhận mà không bị thay đổi
- Bị thay đổi: thông tin bị chặn lại ở một nơi nào đó trên đường truyền và
bị thay đổi Sau đó thông tin đã bị thay đổi này được truyền tới cho người nhận như không có chuyện gì xảy ra
- Bị lấy cắp: thông tin bị lấy ra nhưng hoàn toàn không đến được người nhận
Để giải quyết vấn đề này, thông tin trước khi truyền đi sẽ được mã hoá và khi
tới người nhận, nó sẽ được giải mã trở lại
Để đảm bảo rằng chỉ người cần nhận có thể đọc được thông tin mà ta gửi khi biết rằng trên đường đi, nội dung thông tin có thể bị theo dõi và đọc trộm, người ta
sử dụng các thuật toán đặc biệt để mã hoá thông tin Trong trường hợp này, trước khi thông tin được gửi đi, chúng sẽ được mã hoá lại và kết quả là ta nhận được một nội dung thông tin “không có ý nghĩa”
Khi thông điệp bị theo dõi hoặc bị bắt giữ trên đường đi, để hiểu được thông tin của thông điệp, kẻ tấn công phải làm một việc đó là giải mã nó
Thuật toán mã hoá càng tốt thì chi phí cho giải mã đối với kẻ tấn công càng cao Khi chi phí giải mã cao hơn giá trị thông tin thì coi như đã thành công trong vấn đề bảo mật
Các thuật toán mã hoá thông tin khá đa dạng nhưng có thể chia ra làm hai hướng chính là mã hóa với khóa đối xứng và mã hóa với khóa bất đối xứng
Trang 151.1.1 Mã hóa khóa đối xứng (mã hóa khóa riêng)
Hệ mã hóa khóa đối xứng là hệ mã hóa có khóa lập mã và khóa giải mã là
“giống nhau”, theo nghĩa biết được khóa này thì “dễ” tính được khóa kia Vì vậy phải giữ bí mật cả hai khóa Đặc biệt có một số hệ mã hóa có khóa lập mã và khóa
giải mã trùng nhau (k d k e), như hệ mã hóa “dịch chuyển” hay DES
1.1.1.1 Ưu điểm
- Tốc độ mã hóa/ giải mã nhanh Đây là ưu điểm nổi bật của mã hóa khóa đối xứng
- Sử dụng đơn giản: dùng một khoá cho cả 2 bước mã và giải mã
1.1.1.2 Nhược điểm:
- Đòi hỏi khoá phải được 2 bên gửi/ nhận trao tận tay nhau vì không thể truyền khoá này trên đường truyền mà không được bảo vệ Điều này làm cho việc sử dụng khoá trở nên không thực tế
- Không an toàn: càng nhiều người biết khoá thì độ rủi ro càng cao
- Trong trường hợp khoá mã hoá thay đổi, cần thay đổi đồng thời ở cả người gửi và
người nhận, khi đó rất khó có thể đảm bảo được là chính bản thân khoá không
bị đánh cắp trên đường đi
- Không xây dựng được các dịch vụ về chữ kí điện tử, hay thanh toán điện tử
1.1.1.3 Nơi sử dụng hệ mã khóa đối xứng
Hệ mã khóa đối xứng thường được sử dụng trong môi trường mà khóa chung
có thể dễ dàng trao chuyển bí mật, chẳng hạn trong cùng một mạng nội bộ Hệ mã hóa khóa đối xứng thường dùng để mã hóa những bản tin lớn, vì tốc độ mã hóa và giải mã nhanh hơn hệ mã hóa khóa công khai
Trang 161.1.1.4 M ột số thuật toán mã hoá khóa đối xứng
- Hệ mã hóa cổ điển là hệ mã khóa đối xứng: dễ hiểu, dễ thực thi nhưng độ an toàn không cao Vì giới hạn tính toán chỉ nằm trong bảng chữ cái, sử dụng trong bản tin cần mã hóa, ví dụ là Z26 nếu dùng các chữ cái tiếng Anh Với hệ mã hóa cổ điển, nếu biết khóa lập mã hay thuật toán lập mã, có thể “dễ” xác định được bản rõ,
vì “dễ” tìm được khóa giải mã
- Hệ mã hóa DES (1973) là hệ mã hóa khóa đối xứng hiện đại, có độ an toàn cao
- RC2, RC4, RC5: Độ dài khoá có thể lên tới 2048 bit
- IDEA (International Data Encryption Algorithm): Khóa có độ dài 128 bit, thường dùng trong các chương trình email
- Blowfish: Khóa có độ dài 448 bit
1.1.1.5/ Mã hóa DES
Mã hóa bản thanh toán hợp đồng điện tử (vì bản hợp đồng điện tử thường dài nên không thể mã hóa bằng RSA)
+ Quy trình mã hóa bằng hệ mã hóa DES:
(1) (2)
(3)
(5) (4)
Bản rõ số, dạng nhị phân Các đoạn 64 bit rõ số
Các đoạn 64 bit
mã số Bản mã số
Bản mã chữ Bản rõ chữ
Trang 18- Th ực hiện mã hóa DES theo sơ đồ
+ Bản rõ là xâu x , bản mã là xâu y , khóa là xâu K , đều có độ dài 64 bit
+ Thuật toán mã hóa DES thực hiện qua ba bước chính như sau:
Bước 1: Bản rõ x được hoán vị theo phép hoán vị IP thành IP x
0 0
IP x L R , trong đó L0 là 32 bit đầu (Left), R0 là 32 bit cuối (Right) (IP x tách thành L R0 0 )
Bước 2: Thực hiện 16 vòng mã hóa với những phép toán giống nhau Dữ liệu được
kết hợp với khóa thông qua hàm f :
k k k là các khóa con (48 bit) được tính từ khóa gốc K
Bước 3: Thực hiện phép hoán vị ngược 1
IP cho xâu R L16 16 , thu được bản mã y
1
16, 16
Bit 1 của IP x là bit 58 của x 58 50 42 34 26 18 10 2
Bit 2 của IP x là bit 50 của x 60 52 44 36 28 20 12 4
Trang 193/ Tính khóa con k k1, , ,2 k16 t ừ khóa gốc K
Khóa K là xâu dài 64 bit, trong đó 56 bit là khóa, 8 bit để kiểm tra tính chẵn
lẻ nhằm phát hiện sai, các bit này không tham gia vào quá trình tính toán
Trang 20Các bit kiểm tra tính chẵn lẻ nằm ở vị trí 8, 16, 24,…, 64 được xác định sao cho mỗi byte chứa một số lẻ các số 1 Bởi vậy mỗi sai sót đơn lẻ được xác định trong mỗi nhóm 8 bit
4 / Tính khóa k i như sau:
Với khóa K độ dài 64 bit, ta loại bỏ các bit kiểm tra tính chẵn lẻ, hoán vị 56 bit còn lại theo phép hoán vị PC1 : PC1 K C D0 0 , trong đó C0 là 28 bit đầu,
0
D là 28 bit cuối của PC1 K
Với i 1, 2, ,16 ta tính C i LS C i i1 ,D i LS D i i1 , trong đó LS i là phép chuyển vị vòng sang trái: dịch 1 vị trí nếu i 1,2,9,16 , dịch 2 vị trí với những vị trí
Trang 22- Mở rộng xâu R i1 (32 bit) thành xâu 48 bit, theo hàm mở rộng
E R bit E R bit E R i1 gồm 32 bit cũ của R i1 và 16 bit R i1
xuất hiện lần thứ hai
- Tính E R i1 k i trong đó E R i1 (48 bit) và k i (48 bit)
Kết quả gồm 8 xâu B j mỗi xâu B j có 6 bit (8*6 48 ):
b b b b xác định biểu diễn nhị phân cột c trong S j0 c 15
Xâu C j (4 bit) được định nghĩa là biểu diễn nhị phân của phần tử S r c j , Thực hiện 8 lần (3), ta nhận được xâu CC C1 2 C8 (32 bit)
Sau hoán vị P cho kết quả P C , đó chính là hàm f R k ,
+ Quy trình giải mã DES
Quy trình giải mã DES tương tự như quy trình lập mã, nhưng dùng các khóa theo thứ tự ngược lại: k16 ,k15 , ,k1
Trang 231.1.2 Mã hóa khóa bất đối xứng (mã hóa khóa công khai)
Hệ mã hóa khóa bất đối xứng là hệ mã hóa có khóa lập mã và khóa giải mã
là khác nhau (k d k e), biết được khóa này cũng khó tính được khóa kia Hệ mã này còn được gọi là hệ mã hóa khóa công khai
Khóa lập mã là khóa công khai Khóa giải mã là khóa bí mật
và gửi tới cho A Dĩ nhiên là chỉ mình A với khoá bí mật của mình mới có thể giải
mã được thông điệp của B Như vậy kẻ tấn công, cho dù có biết khoá công khai và nội dung của thông tin đã bị mã hoá vẫn không thể giải mã được thông tin Lý do
là tính ngược khoá bí mật từ khoá công khai là rất khó khăn, nếu không nói là không thể Điều này đạt được trên nguyên tắc sử dụng các hàm một chiều trong toán học khi tính hàm y = f(x) là đơn giản nhưng ngược lại việc tính giá trị x khi
Khóa giải
mã Kd
Trang 241.1.2.2 Nh ược điểm
Tốc độ mã hoá chậm: tốc độ mã hoá nhanh nhất của loại mã bất đối xứng vẫn chậm hơn nhiều lần so với hệ mã khóa đối xứng Do đó người ta thường kết hợp 2 loại mã hoá để nâng cao tốc độ mã hoá
1.1 2.3 Nơi sử dụng hệ mã hóa khóa bất đối xứng
Hệ mã hóa khóa bất đối xứng thường được sử dụng chủ yếu trên các mạng công khai như Internet, khi mà việc trao chuyển khóa bí mật tương đối khó khăn
Đặc trưng nổi bật của hệ mã hóa khóa bất đối xứng là khóa công khai (public key) và bản mã (criphertext) đều có thể gửi đi trên một kênh truyền tin không an toàn Có biết cả khóa công khai và bản mã thì thám mã cũng không dễ để khám phá được bản rõ
1.1.2.4 Một số thuật toán mã hoá khóa bất đối xứng
- RSA: Loại mã này được dùng nhiều nhất cho web và chương trình email
Độ dài khoá thông thường là từ 512 đến 1024 bit
- ElGamal: độ dài khóa từ 512 đến 1024 bit
Chọn khóa công khai b < Φ(n) và nguyên tố cùng nhau với Φ(n)
Khóa bí mật a là nghịch đảo của b theo modulo n : *a b1 mod n Tập cặp khóa (bí mật, công khai) K a b, / ,a bZ a b n, * 1 mod n
n b, công khai, a p q, , bí mật
Trang 25a
Trang 26Vì lý do đó, bạn không thể quét chữ ký của mình cũng như con dấu tròn của công ty để chứng tỏ rằng tài liệu mà bạn truyền đi đúng là của bạn
Khi bạn cần “ký” một văn bản hoặc một tài liệu nào đó, thủ tục đầu tiên là tạo ra chữ ký và thêm nó vào trong thông điệp Có thể hình dung thủ tục này như sau: Phần mềm mã hoá mà bạn sử dụng sẽ đọc nội dung văn bản và tạo ra một chuỗi thông tin đảm bảo chỉ đặc trưng cho văn bản đó mà thôi Bất kỳ một thay đổi nào trong văn bản sẽ kéo theo sự thay đổi của chuỗi thông tin này
Sau đó phần mềm đó sẽ sử dụng khoá bí mật của bạn để mã hoá chuỗi thông tin này và thêm nó vào cuối văn bản như một động tác ký (Bạn có thể thấy là chúng ta hoàn toàn không mã hoá nội dung văn bản, chỉ làm động tác ký mà thôi) Khi nhận được văn bản, người nhận lặp lại động tác tạo ra chuỗi thông tin đặc trưng, sau đó sử dụng khoá công khai mà bạn đã gửi để kiểm tra chữ ký điện tử có đúng là của bạn không và nội dung thông điệp có bị thay đổi hay không Thuật toán mã hoá khóa bất đối xứng đầu tiên và nổi tiếng hơn cả có tên gọi là RSA (được ghép từ chữ cái đầu tiên của tên ba tác giả là Rivest, Shamir, Adleman)
1.2.1 C hữ kí điện tử
Chữ kí điện tử (Electronic signture) là thông tin đi kèm dữ liệu (văn bản, hình ảnh, video…) nhằm mục đích xác định người chủ của dữ liệu đó [3] Chữ kí điện tử thường được sử dụng trong các giao dịch điện tử Xuất phát từ thực tế, chữ
kí điện tử cũng cần đảm bảo các chức năng : xác định được người gửi, dữ liệu có bị thay đổi hay không
1.2.2 C hữ kí số
Trong môi trường mạng, bất cứ dạng thông tin nào được sử dụng để nhận biết một con người đều được coi là chữ kí điện tử, ví dụ: một đoạn âm thanh, hình ảnh được chèn vào cuối e-mail
Trang 271.2.2.1 Khái ni ệm chữ kí số
Chữ kí số là một dạng chữ kí điện tử, an toàn nhất và cũng được sử dụng rộng rãi nhất, chữ kí này hình thành dựa trên kĩ thuật mã hoá công khai, theo đó mỗi người sử dụng cần có một cặp khoá bao gồm khoá bí mật và khoá công khai Người chủ chữ kí sử dụng khoá bí mật để tạo chữ kí số (trên cơ sở kết hợp với nội dung thông tin gửi), ghép nó với thông tin cần gửi và gửi đi Người nhận dùng
mã công khai giải mã chữ kí số để biết được có phải là người đó gửi hay không [3] Điểm quan trọng là các cặp khoá trên do những nhà cung cấp dịch vụ chứng thực chữ kí số (Certification Authority – CA) cấp (hoặc xác minh là đủ điều kiện an toàn) sau khi đã kiểm tra thực tế Đồng thời nhà cung cấp dịch vụ cũng giao cho cá nhân, tổ chức đó một chứng thư số - tương đương như chứng minh thư nhân dân hay giấy xác nhận sự tồn tại của cơ quan, tổ chức trên môi trường mạng Chứng thư
đó có chứa khoá công khai của chủ sở hữu và được duy trì tin cậy trên cơ sở dữ liệu
của nhà cung cấp dịch vụ chứng thực, do vậy người nhận có thể truy cập vào cơ sở
dữ liệu đó để xác minh
1.2.2.2 Sơ đồ chữ kí số:
Một sơ đồ chữ kí số thường chứa hai thành phần: thuật toán kí và thuật toán xác minh A có thể kí bức điện x dùng thuật toán kí an toàn, chữ kí ysig x nhận được có thể kiểm tra bằng thuật toán xác minh công khai ver , x y Khi cho trước cặp x y, , thuật toán xác minh có giá trị TRUE hay FALSE tuỳ thuộc vào chữ kí được thực hiện như thế nào Sau đây là định nghĩa hình thức của chữ kí:
Trang 28Với mỗi kk k1, 2, trong S có một thuật toán kí sig k1:PA, và trong V
có một thuật toán xác minh ver :k2 PxATRUE FALSE, thoả mãn điều kiện sau đây đối với mọi thông báo xP và mọi chữ kí
2: erk ,
yA v x y TRUE khi và chỉ khi ysig k1 x
- S là tập các thuật toán kí
- V là tập các thuật toán kiểm thử
Với sơ đồ trên, mỗi chủ thể sở hữu một bộ khoá kk k1, 2, công khai khoá
2
k để mọi người có thể xác minh chữ kí của mình, và giữ bí mật khoá k1 để thực hiện chữ kí trên các thông điệp mà mình muốn gửi đi Các hàm verk2 và sig k1 (khi biết k1) phải tính được một cách dễ dàng (trong thời gian đa thức), tuy nhiên hàm
1
k
ysig x là khó tính được nếu không biết k1 – điều đó đảm bảo bí mật cho việc
kí cũng tức là đảm bảo chống giả mạo chữ kí
Như vậy “ký số” trên “tài liệu số” là ký trên từng bit tài liệu Kẻ gian khó có thể giả mạo chữ ký số nếu không biết khóa lập mã
Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của tài liệu, mặt mạnh của chữ ký số hơn chữ ký tay ở chỗ người ta có thể ký vào tài liệu từ rất xa trên mạng công khai Hơn thế nữa có thể ký bằng các thiết bị cầm tay (ví dụ như điện thoại di động) tại khắp mọi nơi miễn là kết nối được mạng, đỡ tốn thời gian và chi phí,
Ký số thực hiện trên từng bit tài liệu, nên độ dài của chữ ký số ít nhất cũng bằng độ dài của tài liệu Do đó thay vì kí trên tài liệu dài, người ta thường dùng hàm băm để tạo đại diện cho tài liệu, sau đó mới ký số lên đại diện này
Trang 29Chọn khóa công khai b n và nguyên tố cùng nhau với n
Khóa bí mật a là nghịch đảo của b theo modulo n :ab 1 mod n
ký không Thuật toán và khóa kiểm thử chữ ký là công khai, ai cũng có thể kiểm thử chữ ký được
Nhận được z, N giải mã z để được x y,
Tiếp theo kiểm tra chữ ký verN x y, true?
Trang 30b) Mã hóa trước, ký sau:
G mã hóa x trước bằng ue G x , sau đó ký vào u bằng chữ ký vsig G u
G gửi u v, cho N
N nhận được u v, , N giải mã u được x
Tiếp theo kiểm tra chữ ký verN u v, true?
* Giả sử H lấy trộm được thông tin trên đường truyền từ G đến N
- Trong trường hợp a) H lấy được z Trong trường hợp b) H lấy được u v,
- Để tấn công x, trong cả hai trường hợp H đều phải giải mã thông tin lấy được
- Để tấn công vào chữ ký, thay bằng chữ ký giả mạo thì xảy ra hai trường hợp như sau:
+ Trường hợp a), để tấn công chữ ký y, H phải giải mã z mới nhận được y
+ Trường hợp b), để tấn công chữ ký v, H đã có sẵn v, H chỉ việc thay v bằng v'
H thay chữ ký v trên u bằng chữ ký của H là v'sig H u và gửi u v, ' đến N
Khi N nhận được v', N kiểm thử thấy sai, gửi phản hồi lại G G có thể chứng minh chữ ký đó là giả mạo G gửi chữ ký đúng v cho N, nhưng quá trình truyền tin sẽ bị chậm lại Như vậy trong trường hợp thứ hai H có thể giả mạo chữ ký
mà không cần giải mã Vì thế các chuyên gia về mật mã luôn khuyên rằng hãy ký
trước sau đó mã hóa cả chữ ký
Trang 311.2.2.5 Ch ữ ký ElGamal
Sơ đồ chữ kí ElGamal được đề xuất năm 1985, gần như đồng thời với sơ đồ
hệ mật mã ElGamal, cũng dựa trên độ khó của bài toán logarit rời rạc Sơ đồ được thiết kế đặc biệt cho mục đích kí trên các văn bản điện tử
a./ Sinh khóa
Cho plà số nguyên tố sao cho bài toán logarit rời rạc trên Z p là khó giải Đặt
1/ Vấn đề giả mạo chữ ký ElGamal
H cố gắng giả mạo chữ ký trên x, mà không biết khóa bí mật a Như vậy H phải tính được và
- Nếu chọn trước , H phải tính qua đẳng thức * x mod
h g p (E2) Tức là x mod
Trang 32- Nếu chọn trước , H phải tính qua phương trình * x mod
h g p Tuy nhiên hiện nay chưa có cách hữu hiệu cho hai trường hợp trên, nhưng các chuyên gia mật mã phỏng đoán là khó hơn bài toán logarit rời rạc
- Nếu chọn trước , , sau đó tính x , H phải đương đầu với bài toán logarit rời rạc
H có thể ký trên tài liệu ngẫu nhiên bằng cách chọn trước đồng thời x, ,
- Cách 1:
+ Chọn x, , thỏa mãn điều kiện kiểm thử như sau:
Chọn các số nguyên ,i j sao cho 0i j, p 2, ,j p 2 1 và tính
Trang 332/ V ấn đề phá khóa theo sơ đồ ElGamal
Khóa bí mật a có thể bị phát hiện, nếu việc ký không thận trọng, chẳng hạn như khóa ngẫu nhiên r bị lộ hay dùng r cho hai lần ký khác nhau
Nếu r bị lộ, thám mã sẽ tính được khóa mật a x r 1modp1
Giả sử dùng r cho hai lần ký trên x1 và x2
là chữ ký trên , 1 x1, là chữ ký trên , 2 x2, khi đó thám mã có thể tính a như sau:
Trang 341.3 VẤN ĐỀ QUẢN LÍ KHÓA
1.3.1 Khóa và một số khái niệm
Trong một mạng thông tin liên lạc dữ liệu, giả sử rằng một người dùng ở một máy tính đang liên lạc với một chương trình ứng dụng hay một người dùng ở một máy tính khác ở trong cùng một vùng hay ở một vùng khác, những người dùng này dùng chung một khoá (khoá chính K) Khoá K này có thể là một khoá bí mật được cung cấp và được chấp nhận trước bởi các người dùng hoặc một khoá được cấp phát động bởi hệ thống và gán cho các người dùng này, được gọi là khoá mã hoá dữ liệu hoặc khoá giải mã dữ liệu
Ngày nay “an toàn thông tin” là nhu cầu của mọi ngành, mọi người, do các thông tin chủ yếu được truyền trên mạng công khai, vì vậy kỹ thuật mật mã là công khai cho mọi người dùng, điều bí mật ở đây là nằm ở khóa của mật mã
Sự phân phối khoá (key distribution) được định nghĩa là cơ chế một nhóm
chọn khoá mật và sau đó truyền nó đến các nhóm khác [3]
Thoả thuận khoá (key agreement) là giao thức để hai nhóm (hoặc nhiều hơn) liên kết với nhau cùng thiết lập một khoá mật bằng cách liên lạc trên một kênh truyền thông công khai [3]
TA (Trust Authority) có nhiệm vụ xác minh danh tính của người dùng, chọn
và gửi khoá đến người dùng [3]
Đối phương bị động (passive adversary) là người dùng có dụng ý xấu mà hoạt
động của anh ta chỉ hạn chế ở mức nghe trộm bức điện truyền trên kênh [3]
Đối phương chủ động (active adversary) nguy hiểm hơn đối phương bị động
vì có thể làm nhiều hành vi xấu như:
- Thay đổi bức điện mà anh ta quan sát khi nó đang được truyền trên mạng
- Lưu bức điện cho việc sử dụng lại ở lần sau
- Cố gắng giả dạng làm người dùng khác trên mạng
Trang 35M ục tiêu của đối phương chủ động là:
- Lừa người dùng U và V chấp nhận 1 khoá “không hợp lệ” như là một khoá hợp
lệ ( khoá không hợp lệ có thể là khoá cũ đã hết hạn sử dụng hoặc khoá do đối phương chọn)
- Làm cho U và V tin rằng họ có thể trao đổi khoá với người kia khi họ không có khoá
1.3.2 Vấn đề quản lí khóa bí mật
Với hệ mã hóa khóa đối xứng, nếu biết được khóa mã hóa thì có thể dễ tính được khóa giải mã và ngược lại (một số hệ mã hóa khóa đối xứng có khóa lập mã
và khóa giải mã trùng nhau)
Hai bên muốn liên lạc bí mật với nhau bằng hệ mã hóa khóa đối xứng phải thỏa thuận trước một khóa bí mật Đồng nghĩa với việc hai người cùng có khóa bí mật, thông thường thì càng nhiều người nắm giữ bí mật thì độ rủi ro về an toàn thông tin càng cao
Nếu trên mạng có n người dùng thì theo phương pháp thông thường mỗi người dùng sẽ phải quản lí n1 khóa, và tổng số khóa bí mật giữa hai người dùng nhiều nhất là 1 2 2 1 1
Trang 361.3.3 Vấn đề quản lí khóa công khai
Hệ mã hóa khóa công khai (hệ mã hóa khóa bất đối xứng) có ưu điểm hơn hệ
mã hóa khóa bí mật ở chỗ là có thể công khai thuật toán mã hóa và khóa lập mã (khóa công khai) cho nhiều người sử dụng, khóa bí mật (khóa giải mã) chỉ do một người quản lí, cho nên không cần kênh an toàn để thống nhất khóa bí mật (bằng phân phối khóa hay thỏa thuận khóa) Tuy nhiên hầu hết các hệ mã hóa khóa công khai đều chậm hơn các hệ mã hóa khóa bí mật Vì thế hệ mã hóa khóa đối xứng dùng để mã hóa các bản tin dài, hệ mã hóa khóa công khai dùng để thống nhất khóa
bí mật (của hệ mã hóa khóa đối xứng)
Hơn thế nữa, hệ mã hóa khóa công khai còn được dùng để tạo ra sơ đồ chữ kí
số hay các giao thức phục vụ bảo đảm an toàn thông tin
Khác với hệ mã hóa khóa bí mật, với hệ mã hóa khóa công khai, hai đối tác truyền tin an toàn không phải thống nhất khóa mật, do đó không cần phải quản lí khóa mật mà từng người dùng tự bảo vệ khóa mật của mình, nhưng họ lại có nỗi lo chung là quản lý tốt khóa công khai
Tại sao phải quản lý tốt khóa công khai? Để hiểu rõ hơn điều này ta lấy ví dụ như sau:
B xem trộm, nếu đối tác của A vẫn dùng khóa công khai b (tương ứng với a) để
mã hóa các bản tin gửi cho A thì Bcó thể xem được bản tin này (vì Bcó khóa mật
a để giải mã) Trong trường hợp này, người dùng A phải báo với các đối tác của mình rằng khóa mật a đã bị lộ, không dùng khóa công khai b để mã hóa nữa, kẻ xem trộm a sẽ xem được các bản tin mật đã mã hóa bởi khóa b Người dùng A
phải chọn cặp khóa a b, mới và công khái khóa b mới