1. Trang chủ
  2. » Luận Văn - Báo Cáo

Chữ ký số và ứng dụng bảo mật trang thông tin điện tử

78 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 1,92 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đối tƣợng và phạm vi nghiên cứu Đối tƣợng nghiên cứu: Nghiên cứu các giải pháp mã hóa để bảo mật thông tin và những phương pháp, kỹ thuật tạo chữ kí số trên các tài liệu, văn bản điện

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN THÀNH CHUNG

CHỮ KÝ SỐ VÀ ỨNG DỤNG BẢO MẬT

TRANG THÔNG TIN ĐIỆN TỬ

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - 2013

Trang 2

NGUYỄN THÀNH CHUNG

CHỮ KÝ SỐ VÀ ỨNG DỤNG BẢO MẬT

TRANG THÔNG TIN ĐIỆN TỬ

Chuyên ngành : Khoa học máy tính

Mã số : 60.48.01 LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN

Thái Nguyên - 2013

Trang 3

Tôi cam đoan luận văn này là do bản thân tự nghiên cứu và thực hiện theo sự

hướng dẫn khoa học của PGS.TS Đoàn Văn Ban

Tôi hoàn toàn chịu trách nhiệm về tính pháp lý quá trình nghiên cứu khoa học của luận văn này

Thái Nguyên, ngày tháng 8 năm 2013

Người Cam Đoan

Nguyễn Thành Chung

Trang 4

LỜI CẢM ƠN

Trước tiên tôi bầy tỏ lời cảm ơn chân thành đến các Thầy, Cô giáo đã giảng dạy, hướng dẫn và giúp đỡ tôi trong thời gian học tập và nghiên cứu hoàn thành luận văn này

Xin được bầy tỏ lòng biết ơn sâu sắc tới Thầy giáo PGS.TS Đoàn Văn Ban đã tận tình hướng dẫn, giúp đỡ và đóng góp cho tôi nhiều ý kiến quí báu

để hoàn thành luận văn này

Xin chân thành cảm ơn các Thầy, Cô giáo Trường Đại học Công nghệ thông tin & truyền thông Thái Nguyên và Viện Công nghệ thông tin đã giảng dạy, giúp đỡ và tạo điều kiện thuận lợi cho tôi trong thời gian học tập tại Trường

Tôi xin gửi lời cảm ơn đến các bạn đồng nghiệp và các bạn học viên lớp Cao học K10A khóa 2011 – 2013 đã giúp đỡ và tạo điều kiện thuận lợi cho tôi trong quá trình học tập và làm luận văn

Cuối cùng, xin chân thành cảm ơn gia đình và bạn bè đã động viên, quan tâm, giúp đỡ tôi hoàn thành khóa học và luận văn

Trang 5

MỞ ĐẦU

1 Lý do chọn đề tài

Trong sự phát triển không ngừng của ngành Công nghệ thông tin kéo theo là rất nhiều ứng dụng của nó vào đời sống của con người, tạo cho chúng ta sự thoái mái trong việc giao tiếp, trao đổi thông tin, tất cả những sự việc đều được cập nhật một cách nhanh chóng trên các phương tiện truyền thông Mọi thông tin của cá nhân, tập thể, doanh nghiệp, hay thậm chí của các bộ, ban ngành các cấp đều có thể được đưa lên mạng Internet Làm thế nào để có thể khẳng định những thông tin đó

là của ai? Để giải quyết vấn đề này không thể sử dụng con dấu hay chữ ký thông thường điều này dẫn đến sự ra đời của chữ ký số

Mặt khác sự bùng nổ phương thức truyền thông tin thông qua Internet và các phương tiện truyền thông khác đã đưa chúng ta đến việc cần phải đối mặt với việc bảo mật những thông tin cá nhân, thông tin riêng tư, các thông tin cá nhân riêng tư

có thể bị thay đổi khi đưa lên Internet

Vấn đề an toàn, an ninh mạng không mới nhưng càng ngày càng trở nên quan trọng cùng với sự phát triển theo chiều rộng và chiều sâu của xã hội thông tin

Ví dụ đơn giản như gần đây rất nhiều trang web, các hệ thống mạng ở Việt nam bị hacker tấn công gây hậu quả đặc biệt nghiêm trọng Việc xây dựng một số thuật toán tối ưu hóa nhằm tăng hiệu quả của chương trình bảo mật thông tin và ứng dụng vào chữ ký số là cơ sở nội dung trong đề tài luận văn này

2 Đối tƣợng và phạm vi nghiên cứu

Đối tƣợng nghiên cứu:

Nghiên cứu các giải pháp mã hóa để bảo mật thông tin và những phương pháp, kỹ thuật tạo chữ kí số trên các tài liệu, văn bản điện tử để xác thực nguồn gốc tài liệu hay văn bản của người gửi

Các hệ mật mã khóa công khai, trong đó hệ mật mã RSA được sử dụng làm đối tượng nghiên cứu chính của đề tài nhằm phát hiện các phép xử lý toán học cần tối ưu Từ các kết quả thu được bước đầu đề tài đưa ra một cách xây dựng thử nghiệm vào chữ ký số áp dụng được các kết quả tối ưu hóa

Trang 6

Luận văn sẽ tập trung nghiên cứu và làm rõ hơn về ý tưởng, cơ sở toán học, thuật toán và độ phức tạp của mã hóa nói chung và của mã hóa công khai nói riêng

Phạm vi nghiên cứu:

Đề tài thực hiện tối ưu hóa với một số phép tính toán với số nguyên lớn Ứng dụng thử nghiệm trong một hệ mã nhằm so sánh hiệu năng xử lý của hệ mã trước và sau khi tối ưu

Nghiên cứu các tài liệu về mã hóa, mật mã của các tác giả trong và ngoài nước, các bài báo, thông tin trên Internet,

Nghiên cứu ngôn ngữ lập trình hướng đối tượng Visual basic 6, Visual C#

2008 để viết một ứng dụng nhỏ về chữ ký số

3 Những nội dung chính nghiên cứu chính

Luận văn sẽ được chia thành 3 chương, phần kết quả và hướng phát triển

CHƯƠNG 1: CƠ SỞ TOÁN HỌC CỦA HỆ MẬT MÃ

CHƯƠNG 3: BẢO MẬT TRANG THÔNG TIN ĐIỆN TỬ

3.1 Giới thiệu trang thông tin điện tử

3.2 Bảo mật, an toàn thông tin

3.3 Bảo đảm hệ thống khỏi sự xâm nhập phá hoại từ bên ngoài

3.4 Giao thức bảo mật ứng dụng chữ ký số cho các văn bản pháp quy trên

Trang 7

3.5 Cài đặt thực nghiệm và đánh giá

e k Thuật toán mã hoá

d k Thuật toán giải mã

gcd Ước chung lớn nhất

lcm Bội chung nhỏ nhất

Sig k Thuật toán ký

Ver k Thuật toán kiểm tra chữ ký

Trang 8

CHƯƠNG 1: CƠ SỞ TOÁN HỌC CỦA HỆ MẬT MÃ

Trong chương này tôi xin trình bày một số cơ sở toán học, các khái niệm hệ

mã hóa dữ liệu, phân loại hệ mã hóa các ưu nhược điểm của hệ mã hóa, một số hệ

mã hóa khóa công khai, để xác định tính toàn vẹn an toàn dữ liệu là cơ sở hình thành và xây dựng các thuật toán mã hóa

1.1 Cơ sở toán học

1.1.1 Ước chung lớn nhất, bội chung nhỏ nhất

Số nguyên d được gọi là ước chung của các số nguyên a1, a2, …, an , nếu nó

là ước của tất cả các số đó

Một ước chung d > 0 của các số nguyên a1, a2, …, an, trong đó mọi ước chung của a1, a2, …, an đều là ước của d, thì d được gọi là ước chung lớn nhất (UCLN) của a1, a2, …, an Ký hiệu d = gcd (a1, a2, …, an) hay d = UCLN(a1, a2, …,

an) Nếu gcd (a1, a2, …, an) = 1, thì các số a1, a2, …, an được gọi là nguyên tố cùng nhau

Số nguyên m được gọi là bội chung của các số nguyên a1, a2, …, an , nếu nó

là bội của tất cả các số đó

Một bội chung m > 0 của các số nguyên a1, a2, …, an, trong đó mọi bội chung của a1, a2, …, an đều là bội của m, thì m được gọi là bội chung nhỏ nhất (BCNN) của a1, a2, …, an Ký hiệu m = lcm (a1, a2, …, an) hay m = BCNN (a1, a2, …, an)

Ví dụ: Cho a =20, b =25, gcd (20, 25) = 5, lcm (20, 25) = 100

Hai số 20 và 13 là số nguyên tố cùng nhau, vì gcd (20, 13) = 1

Thuật toán Euclide tìm ước chung lớn nhất

INPUT: Hai số nguyên không âm a và b, với a = b

OUTPUT: Ước số chung lớn nhất của a và b

1 Trong khi còn b > 0, thực hiện:

đặt r ← a mod b, a ←b , b ← r

2 Cho ra kết quả (a)

Ví dụ: Tìm gcd (528, 234) bằng thuật toán Euclide

Trang 9

Ta biết rằng nếu gcd (a,b) = d, thì phương trình bất định: a*x + b*y = d

có nghiệm nguyên (x,y), và một nghiệm nguyên (x,y) như vậy có thể tìm được bởi thuật toán Euclide mở rộng như sau:

Thuật toán Euclide mở rộng:

INPUT: Hai số nguyên không âm a và b với a = b

OUTPUT: d = gcd (a,b) và hai số x,y sao cho a*x + b*y = d

1 Nếu b = 0 thì đặt d ← a , x ←1, y ← 0, và cho ra (d, x, y)

3 Trong khi còn b > 0, thực hiện:

3.1 q←a div b, r ← a mod b , x ← x

2 , và cho ra kết quả (d, x, y)

Ví dụ: Dùng thuật toán Euclide mở rộng tính gcd (528, 234)

Trang 10

Khi kết thúc các vòng lặp (ứng với giá trị b = 0), thực hiện tiếp lệnh 4 ta được kết quả d = 6, x = 4 và y = -9, cặp số (4, -9) thoả mãn: 528*4 + 234*(-9) = 6

1.1.2 Số nguyên tố

Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có hai ước là 1 và chính nó

Số nguyên tố có vai trò và ý nghĩa to lớn trong số học và lý thuyết mật mã Bài toán kiểm tra tính nguyên tố của một số nguyên dương n và phân tích số n thành

thừa số nguyên tố là các bài toán rất được quan tâm “Phương pháp kiểm tra tính nguyên tố” Phương pháp „cổ điển‟ và phương pháp „xác suất‟

1.1.3 Quan hệ đồng dư [3,4]

Cho các số nguyên a, b, m (n > 0) Ta nói rằng a và b “đồng dư” với nhau

theo modulo m, nếu chia a và b cho m nhận được cùng một số dư (hoặc a – b chia hết cho m) Ký hiệu: a ≡ b (mod m)

và chỉ khi d = gcd (a,m ) / b, và khi đó nó có đúng d nghiệm theo modulo m

Bây giờ ta xét hệ thống các phương trình đồng dư tuyến tính

x

m a

x

m a

x

mod

mod

mod

2 2

1 1

Trang 11

Định lý: Giả sử n > 1 là số nguyên dương và m1, m2, , mn là n số nguyên lớn hơn 1 đôi một nguyên tố cùng nhau Đặt M = m1*m2* *mn Cho trước các số nguyên a1, a2, , an khi đó tồn tại duy nhất một số nguyên x (0x<M) thoả mãn các phương trình đồng dư sau đây:

x

m a

x

m a

x

mod

mod

mod

2 2

1 1

Bản chất của bài toán Hàn Tín điểm binh là việc giải hệ phương trình đồng dư bậc nhất:

x

m a

x

m a

x

mod

mod

mod

2 2

1 1

Hệ phương trình đồng dư nói trên có nghiệm duy nhất theo modun

M = m1*m2* *mk, trong đó m1, m2, , mn đôi một nguyên tố cùng nhau Trong bài toán Hàn Tín n = 3 và m1 = 3, m2 = 5, m3 = 7

Ta xét phương trình đồng dư bậc hai có dạng đơn giản sau:

x 2 ≡ a (mod m)

Trong đó m là một số nguyên dương, a là số nguyên với gcd (a,m) =1, và x là

ẩn số Phương trình đó không phải bao giờ cũng có nghiệm, khi nó có nghiệm thì ta nói a là một thặng dư bậc hai mod m:

Bây giờ ta xét việc giải phương trình đồng dư bậc hai: x2

≡ a (mod m) (2)

trong một trường hợp đặc biệt khi m = p là số nguyên tố có dạng p = 4*n +3, tức p đồng dư với 3 theo mod 4, và a là một số nguyên nguyên tố với p Theo tiêu chuẩn Euler ta biết phương trình (2) có nghiệm khi và chỉ khi a(p-1)/2

≡ 1 (mod p) Khi đó

ta có:

a(p-1)/2 ≡ a (mod p)

a2(n+1) ≡ a (mod p)

Trang 12

Do đó x = ±an +1 (mod p) là hai nghiệm của phương trình (2)

1.2 Hệ mã hóa

1.2.1 Khái niệm hệ mã hóa dữ liệu

Mã hoá dữ liệu là mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai, ngoại trừ những ai được phép đọc Mã hóa sử dụng thuật toán và khóa để biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext) sang hình thức mật mã vô nghĩa (code hay ciphertext) Chỉ có những ai có thông tin giải

mã thì mới giải mã và đọc được dữ liệu

1.2.2 Phân loại hệ mã hóa [4]

1.2.2.1 Hệ mã hóa khóa đối xứng

Hệ mã hoá khóa đối xứng là Hệ mã hóa mà biết được khóa mã hoá thì có thể

“dễ” tính được khóa giải mã và ngược lại

Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, 2 bên gửi và nhận phải thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã Sau đó, bên gửi sẽ mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và gửi thông điệp đã mã hoá cho bên nhận Bên nhận sau khi nhận được thông điệp đã mã hoá sẽ

sử dụng chính khoá bí mật mà hai bên thoả thuận để giải mã và lấy lại bản rõ (Plaintext)

Hình 1.1 Quá trình thực hiện cơ chế mã hóa

Mã hoá đối xứng có thể đƣợc phân thành hai loại:

Trang 13

Loại thứ nhất tác động trên bản rõ theo từng nhóm bits Từng nhóm bits này được gọi với một cái tên khác là khối (Block) và thuật toán được áp dụng gọi là mã hoá khối (Block Cipher) Theo đó, từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Đối với các thuật toán ngày nay thì kích thước chung của một khối là 64 bits

Loại thứ hai tác động lên bản rõ theo từng bit một Các thuật toán áp dụng được gọi là mã hoá dòng (Stream Cipher) Dữ liệu của văn bản được mã hoá từng bit một Các thuật toán mã hoá dòng này có tốc độ nhanh hơn các thuật toán mã hoá khối và nó thường được áp dụng khi lượng dữ liệu cần mã hoá chưa biết trước

Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple DES (3DES), RC4, AES… [1,2]

DES: viết tắt của Data Encryption Standard Với DES, bản rõ (Plaintext) được mã hoá theo từng khối 64 bits và sử dụng một khoá là 64 bits, nhưng thực tế thì chỉ có 56 bits là thực sự được dùng để tạo khoá, 8 bits còn lại dùng để kiểm tra tính chẵn, lẻ DES là một thuật toán được sử dụng rộng rãi nhất trên thế giới Hiện tại DES không còn được đánh giá cao do kích thước của khoá quá nhỏ 56 bits, và dễ dàng bị phá vỡ

Triple DES (3DES): 3DES cải thiện độ mạnh của DES bằng việc sử dụng một quá trình mã hoá và giải mã sử dụng 3 khoá Khối 64-bits của bản rõ đầu tiên

sẽ được mã hoá sử dụng khoá thứ nhất Sau đó, dữ liệu bị mã hóa được giải mã bằng việc sử dụng một khoá thứ hai Cuối cùng, sử dụng khoá thứ ba và kết quả của quá trình mã hoá trên để mã hoá

Trang 14

Hệ mã hoá khoá đối xứng “không an toàn” so với hệ mã hoá khoá công khai bởi lý do sau:

Người mã hoá và người giải mã phải có “chung” một khoá Khóa phải được giữ bí mật tuyệt đối, vì biết khoá này “dễ” xác định được khoá kia và ngược lại

Vấn đề thỏa thuận khoá và quản lý khóa chung là khó khăn và phức tạp Người gửi và người nhận phải luôn thống nhất với nhau về khoá Việc thay đổi khoá là rất khó và dễ bị lộ Khóa chung phải được gửi cho nhau trên kênh an toàn

1.2.2.2 Hệ mã hóa khóa công khai

Hệ mã hoá khoá công khai là hệ mã hoá có khoá lập mã và khoá giải mã khác nhau, biết được khoá này “khó” tính được khoá kia

Hệ mã hoá này được gọi là hệ mã hoá khoá công khai vì khoá lập mã được

công khai (gọi là khoá công khai – Public key), Khoá giải mã giữ bí mật (gọi là khoá riêng – Private key) Điều quan trọng đối với hệ thống là không thể tìm ra

khóa bí mật nếu chỉ biết khóa công khai

Hình 1.2 Quá trình thực hiện mã hóa khóa công khai

Quá trình truyền và sử dụng mã hoá khoá công khai được thực hiện như sau:

Bên gửi yêu cầu cung cấp hoặc tự tìm khoá công khai của bên nhận trên một server chịu trách nhiệm quản lý khoá

Sau đó hai bên thống nhất thuật toán dùng để mã hoá dữ liệu, bên gửi sử dụng khoá công khai của bên nhận cùng với thuật toán đã thống nhất để mã hoá thông tin được gửi đi

Khi nhận được thông tin đã mã hoá, bên nhận sử dụng khoá bí mật của mình

Nhận khóa công khai

Nhận khóa riêng

Trang 15

Vậy là với sự ra đời của Mã hoá công khai thì khoá được quản lý một cách linh hoạt và hiệu quả hơn Người sử dụng chỉ cần bảo vệ khoá bí mật

Một số hệ mã hóa khóa công khai phổ biến như RSA, Rabin, Elgaml,

Do đó hệ mã hoá khoá công khai có ƣu điểm và nhƣợc điểm sau:

a Ƣu điểm

Đơn giản trong việc lưu chuyển khóa: Chỉ cần đăng ký một khóa công khai

và mọi người sẽ lấy khóa này về để trao đổi thông tin với người đăng ký Vì vậy không cần kênh bí mật để truyền khóa

Mỗi người chỉ cần một cặp khóa công khai – khóa bí mật là có thể trao đổi thông tin với tất cả mọi người Là tiền đề cho sự ra đời của chữ ký điện tử và các phương pháp chứng thực điện tử

b Nhƣợc điểm

Mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng

1.2.2.3 Hệ mã hóa khối (Modern Block Ciphers)

Trong mã hóa khối hiện đại, một trong những thuật toán được sử dụng rộng rãi nhằm cung cấp các dịch vụ bảo mật hay xác thực

Tiến trình mã hóa khối truyền thông điệp đến các khối, mỗi khối sẽ thực hiện En/Decrypted sau khi nhận thông điệp Như mã hóa thay thế, nó sử dụng một block rất lớn 64 bit hay hơn

Tiến trình mã hóa dòng truyền thông điệp thành dòng từng bit hay byte ở một thời điểm khi En/Decryting

Hiện có rất nhiều thuật toán mã hóa khối được sử dụng như DES, MD4, MD5, SH1, SH2

a Ƣu điểm

Chỉ cần biết một cặp khối bản rõ và bản mã người ta có thể dễ dàng suy ra được khóa và dùng khóa để giải các khối bản mã khác

Trang 16

b Nhƣợc điểm

Khi kích thước khối lớn thì số dòng của bảng khóa cũng lớn và gây trở ngại cho việc lưu trữ cũng như trao đổi khóa giữa người gửi và nhận

1.3 Một số hệ mã hóa khóa công khai

1.3.1 Hệ mã hóa khóa công khai RABIN

+ P = C = Zn, trong đó n là một số nguyên Blum, tính n = p*q;

+ Chọn khóa công khai là n và b (0  b  n-1); chọn khóa bí mật là p và q;

+ Chọn p và q là hai số nguyên tố lớn khác nhau có tính chất sau: p  3 (mod 4);

2

b b

Trang 17

2 2

Trang 18

Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Z p là “khó” giải

Chọn phần tử nguyên thuỷ g Z p * Đặt P = Z p *, C = Z p*Z p*

Chọn khóa bí mật là a Z p * Tính khóa công khai h g a mod p

Định nghĩa tập khóa:  = {(p, g, a, h): h g a mod p} Các giá trị p, g, h được công khai, phải giữ bí mật a

Với Bản rõ x P và Bản mã y C, với khóa k   định nghĩa:

* Lập mã:

Chọn ngẫu nhiên bí mật r Z p-1 , bản mã là y = e k (x, r) = (y 1 , y 2)

Trong đó y 1 = g r mod p và y 2 = x * h r mod p

* Giải mã: dk (y 1 , y 2 ) = y 2 *(y 1 a) -1 mod p

1.3.3 Hệ mã hóa khóa công khai RSA [4]

Hệ mã hóa khóa công khai được đề xuất bởi Ron Rivest, Adi Shamir và Len Adleman (MIT) vào năm 1977

Hệ mã hóa sử dụng phương pháp mã hóa khối với mỗi khối là một số

nguyên < n: Thông thường kích cỡ n là 1024 bit ≈ 309 chữ số thập phân

Sơ đồ

Giả sử khối bản gốc của người gửi là M và khối bản mã của người nhận là C,

quá trình mã hóa và giải mã RSA là: C = M e mod n và M = C d mod n

Cả người gửi và người nhận phải biết giá trị n Người gửi biết giá trị e và chỉ người nhận biết giá trị d Đây là một thuật toán mã hóa khóa công khai với khóa công khai KU = {e,n} và khóa riêng KR = {d,n} Ta có sơ đồ biểu diễn thuật toán như sau:

Trang 19

Hình 1.3 Sơ đồ biểu diễn thuật toán mã hóa

1.4 Kết luận chương

Ngày nay vấn đề an toàn thông tin được xem là một trong những quan tâm hàng đầu của xã hội, có ảnh hưởng rất nhiều đến hầu hết các ngành, lĩnh vực, bao trùm toàn bộ các đối tượng tham gia giao dịch điện tử từ cá nhân, doanh nghiệp, tổ chức kinh tế, tổ chức chính trị - xã hội An toàn thông tin có mục đích là phải tổ chức việc xử lý, ghi nhớ và trao đổi thông tin đảm bảo tính bí mật, toàn vẹn, sẵn sàng và đáng tin cậy

Các giải pháp bảo mật an toàn thông tin phổ biến được biết đến hiện nay là che, giấu, bảo đảm toàn vẹn , xác thực thông tin ; kiểm soát lối vào ra của thông tin ; Phát hiện, xử lý các l ỗ hổng và phối hợp các giải pháp Một trong những kỹ thuật phổ biến trong các phương pháp bảo mật an toàn thông tin là “che” thông tin hay còn gọi là mã hoá thông tin Mã hoá thông tin có mục đích ngoại trừ những người được phép thì không ai có thể đọc được dữ liệu Các hệ mã hoá dữ liệu gồm: Hệ mã hóa khóa đối xứng và Hệ mã hóa khóa phi đối xứng Một số hệ mã hoá phi đối xứng (mã hoá khoá công khai) phổ biến đang áp dụng hiện nay là Hệ mã hoá khoá công khai RABIN, ELGAMAL, RSA, Trong đó, thuật toán RSA có đặc tính hấp dẫn:

Trang 20

một cặp khoá có thể cùng sử dụng cho cả hai mục đích đó là mã hoá (ví dụ sử dụng khi truyền một khoá đối xứng) và chữ ký số

Trong chương 1 đã trình bày những vấn đề mang tính cơ sở khoa học, nền tảng cho việc sử dụng chữ ký số vào việc bảo mật và xác thực thông tin Khái niệm chữ ký số, cách phân loại, thuật toán chữ ký số một số sơ đồ chữ ký hiện đang được

sử dụng phổ biến sẽ được trình bày trong nội dung của chương 2

Trang 21

CHƯƠNG 2: CHỮ KÝ SỐ

Các cơ sở toán học, các hệ mã hóa khóa bí mật, khóa công khai, một số hệ

mã hóa khóa công khai đã trình bày trong chương 1 là nền tảng cho việc sử dụng chữ ký số vào việc bảo mật và xác thực thông tin

Chương 2 trình bày các khái niệm như chữ ký số, chữ ký điện tử, dấu điện

tử, chữ ký sinh trắc học; cách phân loại chữ ký số, quy trình tạo và kiểm tra chữ ký

số, các ưu điểm của chữ ký số và thuật toán chữ ký số cùng một số sơ đồ chữ ký hiện đang được sử dụng phổ biến hiện nay và một số ứng dụng của chữ kí số cũng được giới thiệu trong chương này

2.1 Giới thiệu

Một trong những ứng dụng của kỹ thuật mã hoá khóa công khai là chữ ký số Chữ ký số được phát triển và ứng dụng rộng rãi hiện nay dựa trên một số thuật toán như RSA, DSA, ElGamal, SHA là cơ sở quan trọng để hình thành hạ tầng khóa công khai cho phép người sử dụng của một mạng công cộng không bảo mật như Internet trao đổi dữ liệu và tiền một cách an toàn, thông qua việc sử dụng một cặp khóa công khai và bí mật được cấp phát

Các khái niệm, quá trình thực hiện chữ ký số và thuật toán sử dụng trong chữ

ký số sẽ được giới thiệu chi tiết tại phần tiếp theo

2.1.1 Khái niệm

Chữ ký số là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử

dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa công khai thường được phân phối thông qua chứng thực khóa công khai Quá trình sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký

Chữ ký số là một dạng chữ ký điện tử (Electronic Signature) là dạng 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 đó

Chữ ký số chỉ là một tập con của chữ ký điện tử, là một dạng chữ ký điện tử dựa trên công nghệ mã hoá Để sử dụng chữ ký số thì người dùng phải có một cặp khoá gồm khoá công khai (public key) và khoá bí mật (private key) Khoá bí mật

Trang 22

dùng để tạo chữ ký số, khoá công khai dùng để thẩm định chữ ký số hay xác thực người tạo ra chữ ký số đó

2.1.2 Phân loại chữ ký số

Hai nhóm chính của Electronic Signature (Chữ ký điện tử) đã được phát

triển dựa trên 2 công nghệ cơ bản: Digital Signatures (Chữ ký số) và E-SIGN (Dấu điện tử)

Chữ ký số giúp người nhận thông điệp có thể tin tưởng ở nội dụng văn bản mình nhận được là của người quen biết Người gửi cũng không thể chối bỏ trách nhiệm là chính mình đã gửi văn bản đó đi, văn bản đã được số hóa là một chuỗi bit (vd email, contracts, được gửi thông qua những giao thức mã hóa)

2.1.2.2 E-SIGN (Dấu điện tử)

Dấu điện tử là một dạng chữ ký thông thường không sử dụng hạ tầng khóa công khai PKI ( Public Key Infrastructure) Chủ yếu quản lý dựa vào danh tính và nhận dạng Logs (Log – in)

Dấu điện tử có tính bảo mật không cao nên chỉ hợp cho các hệ thống đóng

2.1.2.3 Biometric Signatures (Chữ ký sinh trắc học)

Đôi khi ta cũng có thể sử dụng những dấu vân tay hoặc hình ảnh tròng đen của mắt như một kiểu chữ ký sinh trắc

Trang 23

Để xác nhận dạng chữ ký này đòi hỏi công nghệ cao và tốn kém đồng thời cũng có những lỗ hổng trong bảo mật (sao chép vân tay, )

2.1.3 Cách tạo chữ ký

2.1.3.1 Chữ ký số (digital signature) [5]

Là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa công khai thường được phân phối thông qua chứng thực khóa công khai

Quá trình sử dụng chữ ký số bao gồm 2 quy trình: tạo và kiểm tra chữ ký

Quy trình tạo chữ ký số

Dùng giải thuật băm để thay đổi thông điệp cần truyền đi, kết quả ta được một MD (message digest), dùng giải thuật MD5 ta được digest dài 128 bit, dùng giải thuật SHA () ta có chiều dài 160 bit

Sử dụng khóa private key của người để mã hóa message digest thu được ở trên, thông thường ta dùng giải thuật RSA thu được kết quả

Sơ đồ

Hình 2.1 Quy trình tạo chữ ký số

Trang 24

Quy trình kiểm tra chữ ký số

Dùng public key của người gửi để giải mã chữ ký số của thông điệp

Dùng giải thuật MD5 hoặc SHA băm thông điệp đính kèm

So sánh kết quả thu được ở trên, nếu thấy trùng nhau ta kết luận thông điệp này không bị thay đổi trong quá trình truyền và thông điệp này là của người gửi

Sơ đồ

Hình 2.2 Quy trình kiểm tra chữ ký số

Chữ ký số (digital signature) là một dạng chữ ký điện tử (là tập con của chữ

ký điện tử) được tạo ra bằng sự biến đổi một thông điệp dữ liệu sử dụng hệ thống mật mã công khai, theo đó người có thông điệp dữ liệu ban đầu và khóa công khai của người ký có thể xác định được

2.1.3.2 Chữ ký điện tử (electronic signature) [13]

Là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, âm thanh,…) nhằm mục đích xác định chủ nhân của dữ liệu đó

Chữ ký điện tử được tạo lập dưới dạng từ, chữ, số, ký hiệu, âm thanh hoặc các hình thức khác bằng phương tiện số, gắn liền hoặc kết hợp một cách logic với thông điệp số, có khả năng xác nhận người ký thông điệp dữ liệu và xác nhận sự chấp thuận của người đó đối với nội dung thông điệp đã ký

Trang 25

V là tập các thuật toán kiểm thử

Với mỗi khóa k K, có thuật toán ký Sig k S, Sig k : P A, có thuật toán kiểm tra chữ ký Ver k V, Ver k : P A đúng, sai, thoả mãn điều kiện

sau: Với mọi x P, y A:

Đúng, nếu y = Sig k (x) Ver k (x, y) =

Sai, nếu y Sig k (x) 2.1.5 Các ƣu điểm của chữ ký số

Khả năng xác định đƣợc nguồn gốc

Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà chỉ có người chủ của khóa biết Để sử dụng chữ ký số thì văn bản cần phải được mã hóa bằng hàm băm Sau đó dùng khóa bí mật của người chủ khóa

để mã hóa, khi đó ta được chữ ký số Khi cần kiểm tra, bên nhận giải mã để lấy lại chuỗi gốc (được sinh ra qua hàm băm ban đầu) và kiểm tra với hàm băm của văn bản nhận được Nếu 2 giá trị này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản xuất phát từ người sở hữu khóa bí mật

Tất nhiên là chúng ta không thể đảm bảo 100% là văn bản không bị giả mạo

vì hệ thống vẫn có thể bị phá vỡ Vấn đề xác thực đặc biệt quan trọng đối với các giao dịch tài chính

Tính toàn vẹn

Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay đổi và lập tức bị phát hiện

Trang 26

Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ 3 nhưng không ngăn cản được việc thay đổi nội dung của nó

Tính không thể phủ nhận

Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình gửi Để ngăn ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ

ký số với văn bản Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng

cứ để bên thứ ba giải quyết

Tuy nhiên, khóa bí mật vẫn có thể bị lộ và tính không thể phủ nhận cũng không thể đạt được hoàn toàn không ngăn cản được việc thay đổi nội dung của nó

2.1.6 Quá trình thực hiện chữ ký số khóa công khai

Chữ ký số dựa trên nền tảng mật mã hóa khóa công khai Để có thể trao đổi thông tin trong môi trường này, mỗi người sử dụng có một cặp khóa: một công khai và một bí mật

Khóa công khai được công bố rộng rãi còn khóa bí mật phải được giữ kín và khó có thể tìm được khóa bí mật trong thời gian chấp nhận được

Toàn bộ quá trình gồm 3 thuật toán:

Thuật toán tạo khóa bí mật, khoá công khai Thuật toán tạo chữ ký số bằng khoá bí mật Thuật toán kiểm tra chữ ký số bằng khóa công khai

Trang 27

Hình 2.4 Sơ đồ mô tả quá trình nhận các tệp văn bản

2.2 Các ứng dụng của chữ ký số

2.2.1 Ứng dụng trong giao dịch điện tử

Chữ ký số sử dụng trong các giao dịch để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến, chuyển tiền ngân hàng, thanh toán trực tuyến

Ngoài ra, Bộ tài chính cũng áp dụng chữ ký số vào kê khai, nộp thuế trực tuyến qua mạng Internet và các thủ tục hải quan điện tử như khai báo hải quan và thông quan trực tuyến mà không phải in các tờ khai, đóng dấu đỏ của công ty và đến cơ quan thuế chờ nộp tờ khai

2.2.2 Ứng dụng trong bỏ phiếu điện tử

Mỗi lá phiếu phải có thông tin định danh Nó có thể là một con số x nào đó

và phải khác nhau Trên mỗi lá phiếu phải có chữ ký trên số định danh x, thì là phiếu mới có giá trị để bầu cử Nếu cử tri chuyển ngay số định danh x cho ban kiểm phiếu ký thì họ đã xác định mối liên hệ giữa cử tri và x

Trang 28

Trong bỏ phiếu điện tử để tránh gian lận thông đồng với ban kiểm phiếu với

cử tri Hệ thống dùng “Đa chữ ký mù” để bảo đảm sự nhất trí cao khi cấp quyền bỏ phiếu cho cử tri

2.2.3 Ứng dụng trong ngân hàng

Một số giao dịch trong ngân hàng, chứng khoán hiện nay đang được dùng OTP (One Time Password) Chữ ký số là một loại chữ ký điện tử dựa trên hệ thống mật mã không đối xứng, chưa thông tin định danh người chủ sở hữu chữ ký đó

Các thông tin này có thể lưu trữ băng nhiều hình thức khác nhau dưới dạng file và lưu trữ trên máy tính; trên các thiết bị đặc biệt (USB token) trên thẻ (Smart card) hay trên sim điện thoại (SIM base CA) Tùy nhu cầu mà mỗi khách hàng chọn những hình thức lưu trữ khác nhau, tuy nhiên SIM base CA được đánh giá cao ở tính di động thuận tiện do gắn liền với điện thoại di động

2.2.4 Ứng dụng trong hệ thống tiền điện tử

Một đồng tiền điện tử C có hai thông tin quan trong là số Seri và giá trị của đồng tiền Hệ thống phải bảo đảm các yêu cầu là Ngân hàng phát hành đồng tiền C khó nhận biết đồng tiền này của người mua hàng đã rút ra từ tài khoản của họ Ngân hàng thu nạp đồng tiền C cũng khó biết đồng tiền C đã được nhận từ người bán Mặt khác người bán khó biết C được rút từ tài khoản nào Để thực hiện yêu cầu trên, chúng ta dùng “Chữ ký mù” để ký lên đồng tiền C

Như vậy tiền điện tử C không lưu lại dấu vết của những ai đã tiêu nó Thực

tế đồng tiền C không do một ngân hàng phát hành, nó có thể là đồng tiền chung của nhiều ngân hàng Vì vậy nó phải mang dấu anns của các ngân hàng liên quan Nên

tổ chức ngân hàng sẽ thống nhất một “Đa chữ ký mù” để ký lên đồng tiền C

2.2.5 Ứng dụng trong doanh nghiệp

Đối với doanh nghiệp, chữ ký số có thể được ứng dụng vào trong hầu hết các hoạt động của công ty như đăng nhập thẻ thông minh (smart card), windows security logon, trao đổi các tài liệu nhạy cảm, trao đổi email, truy cập từ xa VPN, việc triển khai một hệ thống PKI đối với các doanh nghiệp nhỏ là rất đơn giản, và lợi ích mà hệ thống đem lại rất lớn so với chi phí đầu tư ban đầu

Trang 29

2.3 Hàm băm

Ta có thể thấy rằng các sơ đồ chữ ký nói chung chỉ cho phép ký các bức điện nhỏ Thông thường khi sử dụng, chữ ký được sinh ra có độ dài lớn hơn so với văn bản ký, do vậy kích thước văn bản sau khi ký sẽ tăng lên

Một cách đơn giản để giải bài toán này là chia các bức điện dài thành nhiều đoạn, sau đó ký lên các đoạn đó độc lập nhau Điều này cũng tương tự như mã hóa một chuỗi dài bản rõ bằng cách mã hoá mỗi ký tự bản rõ độc lập nhau sử dụng cùng một bản khoá

Biện pháp này có một số vấn đề trong việc tạo ra các chữ ký số Trước hết với một bức điện dài, ta kết thúc bằng một chữ ký rất lớn

2.3.1 Khái niệm

Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ

“băm” thay cho “mã hóa”), nó có nhiệm vụ băm tài liệu và cho kết quả là một giá trị “băm” có kích thước cố định

Hình 2.5 Minh họa hàm băm Đặc tính quan trọng của hàm băm

Hàm băm h là hàm một chiều (one – way hash ) với các đặc tính sau:

Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất

Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thông điệp x‟ thì h(x‟) ≠ h(x) Cho dù chỉ có một sự thay đổi nhỏ hay chỉ là xóa đi một bit dữ liệu của thông điệp thì giá trị băm cũng vẫn thay đổi Điều này có nghĩa là: hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng hoàn toàn khác nhau Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm Nghĩa là với thông điệp

x thì dễ dàng tính được z = h(x), nhưng lại không thể tính (thực chất là khó) suy ngược lại được x nếu chỉ biết hàm băm h(x)

Văn bản cần

băm

(độ dài cố định)

Băm (Sử dụng hàm băm)

Trang 30

Tính chất của hàm băm

Việc đưa hàm băm h vào dùng trong sơ đồ chữ ký số không làm giảm sự an toàn của sơ đồ chữ ký số vì nó là bản tóm lược thông báo – bản đại diện cho thông điệp – được ký chứ không phải là thông điệp gốc Điều cần thiết đối với h là cần thỏa mãn một số tính chất sau để tránh bị giả mạo:

Tính chất 2.1: Hàm băm h không va chạm yếu: h là hàm băm không có tính va

chạm yếu nếu khi cho trước một bức điện x, không thể tiến hành về mặt tính toán để tìm ra một bức điện x‟ ≠ x mà h(x‟) = h(x)

Xét kiểu tấn công như sau: Thông tin cần phải truyền từ A đến B (Hình 2.6a)

Nhưng trên đường truyền, thông tin bị lấy trộm và bị thay đổi (Hình 2.6b)

Người A gửi cho B (x, y) với y = sigK(h(x)) Nhưng trên đường truyền, tin

bị lấy trộm Tên trộm bằng cách nào đó tìm được một bản thông điệp x‟ có h(x‟) = h(x) mà x‟ ≠ x Sau đó, hắn đưa x‟ thay thế x rồi truyền tiếp cho B Người B nhận được và vẫn xác thực thông tin đúng đắn

Người gửi

A

Người nhận

B (x, y)=sigK(h(x))

Hình 2.6a: Đường đi đúng của thông tin

Hình 2.6b: Thông tin bị lấy trộm và bị thay đổi trên đường truyền

Trang 31

Tính chất 2.2: Hàm băm h không va chạm mạnh: h là hàm băm không có tính va

chạm mạnh nếu không có khả năng tính toán để tìm ra hai bức thông điệp x và x‟

mà x ≠ x‟ và h(x‟) = h(x)

Xét một kiểu tấn công như sau: Đầu tiên, kẻ giả mạo tìm được hai bức thông điệp x‟ và x (x‟≠ x) mà có h(x‟) = h(x) (ta coi x là hợp lệ, còn x‟ là giả mạo) Tiếp theo kẻ này đưa cho A và thuyết phục A ký vào bản tóm lược h(x) để nhận được y Khi đó (x‟, y) là bức thông điệp giả mạo nhưng hợp lệ

Tính chất 2.3: Hàm băm h là hàm một chiều: h là một chiều nếu khi cho trước một

bản tóm lược thông báo z thì không thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z

Xét một kiểu tấn công như sau: Việc giả mạo chữ ký trên bản tóm lược z thường xảy ra với các sơ đồ chữ ký số Giả sử kẻ giả mạo tính chữ ký trên bản tóm lược z, sau đó tìm được bản thông điệp x‟ được tính ngược từ bản đại diện z = h(x)

Tên trộm thay thế bản thông điệp x hợp lệ bằng bản thông điệp x‟ giả mạo nhưng lại có z = h(x‟) Và ký số trên bản đại diện cho x‟ bằng đúng chữ ký hợp lệ

Và như vậy thì (x‟, y) là bức điện giả mạo nhưng hợp lệ

Ý nghĩa của việc dùng thông điệp và hàm băm

Hàm băm trợ giúp cho các sơ đồ chữ ký nhằm giảm dung lượng của dữ liệu cần thiết để truyền qua mạng (lúc này chỉ còn bao gồm dung lượng của bức thông điệp gốc và 256 bit (sử dụng MD) hay 320 bit (sử dụng SHA) của bức ký số được

ký trên bản đại diện của thông điệp gốc), tương đương với việc giảm thời gian truyền tin qua mạng

Hàm băm thường kết hợp với chữ ký số để tạo một loại chữ ký điện tử vừa

an toàn hơn (không thể cắt/dán) vừa dùng để kiểm tra tính toàn vẹn của thông điệp nên tạo được niềm tin của người dùng

Trang 32

Hàm băm an toàn SHA, phức tạp hơn nhiều, cũng dựa trên phương pháp

tương tự, được công bố trong Hồ sơ Liên bang năm 1992 Năm 1993 được chấp nhận làm tiêu chuẩn của Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) Giá trị

băm theo thuật toán này có độ dài cố định là 160 bit

2.3.2.1 Thuật toán hàm băm MD

a Thuật toán hàm băm MD4 [6]

Input: Thông điệp là xâu a có độ dài b bit

Output: Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128 bit

Tóm tắt thuật toán

Bước 1: Khởi tạo các thanh ghi

Có 4 thanh ghi để tính toán nhằm đưa ra các đoạn mã: A, B, C, D Đại diện thông điệp được xây dựng như sự kết nối của các thanh ghi Mỗi thanh ghi có độ dài

32 bit Các thanh ghi này được khởi tạo bằng giá trị dạng hecxa

word A := 67 45 23 01 word B := ef cd ab 89

word C := 98 ba dc fe word D := 10 32 54 76

Bước 2:

+ Tạo “Thông điệp đệm” M cho xâu a

+ Chia mảng M thành các khối 512 bit, đưa từng khối 512 bit vào mảng T[j] + Mỗi lần xử lý một khối 512 bit (16 word ), lặp lại N/16 lần

b Thuật toán hàm băm MD5 [6]

MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụng

phổ biến, được thiết kể bởi Giáo sư Ronald L Rivest tại trường MIT vào năm 1991

để thay thế cho hàm băm trước đó là MD4 (1990) Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin

Cũng như các hàm băm khác như MD4 và SHS (Secure Hash Standard), MD5 là phương pháp có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit

Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ

Trang 33

X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp Đơn vị xử lý trong MD5 là các

từ 32-bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ X[i] 32-bit sau: X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16

Dưới đây là các ví dụ mô tả các kết quả sau khi thực hiện hàm băm MD5

MD5("xin chao") = 2201c07c37755e663c07335cfd2f44c6

Chỉ cần một thay đổi nhỏ (chẳng hạn viết hoa chữ x thành X) cũng làm thay đổi hoàn toàn kết quả trả về:

MD5("Xin chao") = e05c1d9f05f5b9eb56fe907c36f469d8

Thuật toán cũng cho kết quả đối với chuỗi rỗng:

MD5(" ") = d41d8cd98f00b204e9800998ecf8427e

c Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4

Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ

4 để tăng mức độ an toàn

Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số “ti” phân biệt,

trong đó MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi

Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((XZ) (XY)  (YZ)) được thay thế bằng G(X,Y,Z) = (XZ) (Y(Z)) để giảm tính đối xứng

Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche)

Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm tăng tốc độ hiệu ứng lan truyền Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển khác nhau

Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng phương pháp MD4 có vẻ không an toàn Den Boer và Bosselaers đã chỉ ra các điểm yếu trong MD4 trong một bài báo được đăng vào năm 1991 và một tấn công xung đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996

2.3.2.2 Hàm băm SHS/ SHA

SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật

mã an toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-256,

Trang 34

SHA-384, SHA-512 do NIST (viện công nghệ quốc gia Mỹ) và NSA (National Security Agency/Central Security Service, viết tắt NSA/CSS: Cơ quan an ninh quốc

gia Hoa Kỳ/ Cục an ninh Trung ương xây dựng

Chuẩn hàm băm SHA phức tạp và chậm hơn dòng MD SHA được thiết kế

để chạy trên máy kiến trúc endian lớn hơn là trên máy endian nhỏ SHA tạo ra bản tóm lược thông điệp có kích thước 160 bit, sử dụng 5 thanh ghi 32 bit

INPUT : Thông điệp (văn bản) có độ dài tùy ý

OUTPUT : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 160 bit

Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng cơ sở với phương pháp MD4 và MD5 Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ thống Big-endian (lưu trữ các byte đầu tiên quan trọng nhất) thay vì Little-endian (lưu trữ các byte đầu tiên ít quan trọng) (endian chính là được đề cập đến trật tự của các địa chỉ cá nhân phụ trong các đại diện của một mục dữ liệu lớn hơn và được lưu trữ trong bộ nhớ bên ngoài (hoặc đôi khi gửi đi trên một kết nối, nối tiếp)) như phương pháp MD4 và MD5 Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có

độ dài 160 bit nên thường được sử dụng

Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp tóm tắt được tạo ra có độ dài 160 bit Sau là một số so sánh giữa MD5 và SHA-1:

Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn cho thuật toán Tuy nhiên, chu kỳ thứ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2

Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng một hàng số K[t] Trong khi đó, mỗi bước biến đổi trong cùng một chu kỳ của MD5 sử dụng các hằng số khác nhau

So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm giảm tính đối xứng Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4

Cả MD5 và SHA-1, mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền

Trang 35

Bảng 2.1: Đặc điểm của các thuật toán băm SHA 2.4 Thuật toán chữ ký số

2.4.1 Thuật toán chữ ký RSA [5,7]

2.4.1.1 Sơ đồ

Bước 1 Tạo cặp khóa (bí mật, công khai) (a, b)

Input: 2 số nguyên tố lớn phân biệt p và q

Output: Cặp (n,b) là khóa công khai

kỳ

Các thao tác

Đụng

độ

Độ

an toàn

?

Kết

quả

Trạng thái Khối

Thông điệp tối đa

Chưa 112/

128 SHA-

Chưa 192/

256

Trang 36

Khóa bí mật a là phần tử nghịch đảo của b theo mod (n) tức là

Khi Ki = 2, 5, 20 => a không nguyên => loại

5 Khoá công khai = (n, b) = (33, 3)

Trang 37

2.4.1.3 Độ an toàn của chữ ký RSA

Bài toán căn bản bảo đảm độ an toàn của Sơ đồ chữ ký RSA

Bài toán tách số nguyên n thành tích của 2 số nguyên tố: n = p*q Vì nếu giải

được bài toán này thì có thể tính được khóa mật a từ khóa công khai b và phần tử công khai n

Người gửi G gửi tài liệu x cùng chữ ký y đến người nhận N, có 2 cách xử lý

 Ký trước, Mã hóa sau:

G ký trước vào x bằng chữ ký y = Sig G (x), sau đó mã hoá x và y nhận được

z = e G (x, y) G gửi z cho N Nhận được z, N giải mã z để được x, y Tiếp theo kiểm tra chữ ký Ver N (x, y) = true ?

 Mã hóa trước, Ký sau:

G mã hoá trước x bằng u = e G (x), sau đó ký vào u bằng chữ ký v = Sig G (u) G gửi (u, v) cho N Nhận được (u, v), N giải mã u được x Tiếp theo kiểm tra chữ ký Ver N (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 ký trước, mã hoá sau H lấy được z Trong trường hợp mã hoá trước, ký sau H lấy được (u,v)

Để tấn công x trong 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 điều gì?

Trường hợp ký trước, mã hoá sau để tấn công chữ ký y, H phải giải mã z mới nhận được y

Trường hợp mã hoá trước, ký sau để tấn công chữ ký v, H đã sẵn có 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’= SigH(u), gửi (u,v’) đến N Khi 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 mã hoá trước, ký sau thì H có thể giả mạo chữ

ký mà không cần giải mã Vì thế có lời khuyên: Hãy ký trước, sau đó mã hoá cả chữ ký

Trang 38

2.4.2 Thuật toán chữ ký DSA/ DSS [1,5,7]

2.4.2.1 Sơ đồ

Bước 1 Tạo cặp khóa (bí mật, công khai) (a, h)

Input: 2 số nguyên tố lớn phân biệt p và q

Output: Cặp (a,h) là khóa công khai và khoá bí mật

Thuật toán

Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải Chọn q là ước nguyên tố của p -1 Tức là p -1 = t * q hay p = t * q + 1 (Số nguyên

tố p cỡ 512 bit, q cỡ 160 bit)

Chọn g  Zp* là căn bậc q của 1 mod p, (g là phần tử sinh của Zp* )

Tính  = g t, chọn khóa bí mật a  Zp*, tính khóa công khai h a

Bước 1 Tạo cặp khóa (bí mật, công khai) (a, h):

Chọn p = 7649, q = 239 là ước nguyên tố của p - 1, t = 32

Tức là p - 1 = t * q hay p = t * q + 1 = 32*q + 1 =32*239 + 1= 7649 Chọn g =3  Z7649 là phần tử sinh  =g t mod p = 3 32mod 7649= 7098 Chọn khóa mật a = 85,

Trang 39

2.4.2.3 Độ an toàn của chữ ký DSA

a Liên quan tới các tính toán cụ thể trong sơ đồ

Chú ý rằng phải có  0 (mod q) để bảo đảm có -1 mod q trong điều kiện kiểm thử (tương đương UCLN(, p-1) = 1) Vì vậy nếu chọn r mà không được điều kiện trên, thì phải chọn r khác để có  0 (mod q) Tuy nhiên khả năng  0 mod q

là 2-160 , điều đó hầu như không xảy ra Một chú ý là thay vì tính p trước rồi mới tính q, ta sẽ tính q trước rồi tìm p

b Liên quan chung tới DSS (1991)

Độ dài cố định của p là 512 bit Nhiều người muốn p có thể thay đổi lớn hơn

Vì thế NIST sửa đổi là p có độ dài thay đổi, là bội của 64: từ 512 đến 1024 bit

Nếu dùng chữ ký RSA với thành phần kiểm tra chữ ký là nhỏ, thì việc kiểm tra nhanh hơn việc ký Đối với DSS, ngược lại, việc ký nhanh hơn kiểm tra Điều này dẫn đến vấn đề

Một tài liệu chỉ được ký một lần, nhưng nó lại được kiểm tra nhiều lần, nên người ta muốn thuật toán kiểm tra nhanh hơn

Ngày đăng: 24/02/2021, 21:35

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Phan Đình Diệu, "Lý thuyết mật mã và an toàn thông tin", Đại Học Quốc Gia Hà Nội, năm 2002 Sách, tạp chí
Tiêu đề: Lý thuyết mật mã và an toàn thông tin
[2]. TS Dương Anh Đức, Trần Minh Triết, "Giáo trình mã hóa và ứng dụng", Đại Học quốc gia TP.HCM, 2005 Sách, tạp chí
Tiêu đề: Giáo trình mã hóa và ứng dụng
[3]. Phạm Huy Điển, Hà Huy Khoái, "Mã hóa thông tin cơ sở toán học và ứng dụng" , Viện toán học, năm 2004 Sách, tạp chí
Tiêu đề: Mã hóa thông tin cơ sở toán học và ứng dụng
[4]. Nguyễn Đình Thúc, Bùi Doãn Khanh, Hoàng Đức Hải "Giáo trình mã hóa thông tin Lý thuyết và ứng dụng ", NXB Lao động xã hội, năm 2006 Sách, tạp chí
Tiêu đề: Giáo trình mã hóa thông tin Lý thuyết và ứng dụng
Nhà XB: NXB Lao động xã hội
[5] Trịnh nhật Tiến, “Bài giảng về Mật mã và An toàn dữ liệu” tại khoa CNTT - Trường Đại học công nghệ, 2009.Tiếng Anh Sách, tạp chí
Tiêu đề: Bài giảng về Mật mã và An toàn dữ liệu
[9]. Nick Goots, Boris Izotoz, Alexander Moldovyan, Nick Moldovyan, “Modern Cryptography-Protect Your Data with Fast Block Ciphers”, 2003 Sách, tạp chí
Tiêu đề: Modern Cryptography-Protect Your Data with Fast Block Ciphers
[10]. Suranjan choudhury with Kartik Bhanagar, wasim Haque, NIIT, “Public key infarstructure – Implemetion and Design”, trang 29 – 32, 2002 Sách, tạp chí
Tiêu đề: Public key infarstructure – Implemetion and Design
[6] R. Rivest, The MD5 Message-Digest Algorithm, MIT Laboratory for Computer Science and RSA Data Security, Inc, April 1992 Khác
[7] R.L. Rivest, A. Shamir, and L. Adleman, A Method for Obtaining Digital Signatures and Public-Key Cryptosystems, Communications of the ACM, 21 (2), trang 120-126, Feb 1978 Khác
[8]. Dan Boneh, „„Twenty Years of Attacks on RSA Cryptosystem‟‟, Report, Standford University, 1999 Khác
[11]. I.A.Dhotre V.S.Bagad , Cryptography And Network Security, 2000. Tài liệu trên Internet Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w