Định nghĩa

Một phần của tài liệu Nghiên cứu chữ ký số trong ứng dụng quản lý tài liệu lưu trữ quốc gia (Trang 30)

Hàm băm là một giải thụât nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu. Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu

Bảng 2.4: Ảnh minh họa làm việc của một hàm băm 2.2.2. Phân loại hàm băm

- Hàm băm một chiều (one-way hash functions): Là hàm băm mang chất với mọi mã băm biết trước, không thể tính toán để tìm được chuỗi bit ban đầu vào có mã băm bằng với mã băm đã cho

- Hàm băm kháng xung đột (collision resistant hash funtions): là hàm băm mang tính chất không thể tính toán để tìm ra hai chuỗi bit có cùng giá trị băm

2.2.3. Họ hàm băm SHA 2.2.3.1. Đặc điểm 2.2.3.1. Đặc điểm

Thuật toán SHA là thuật toán băm mật được phát triển bởi cục an ninh quốc gia Mỹ (NSA: National Security Agency) và được xuất bản thành chuẩn của chính phủ Mỹ bởi viện công nghệ và chuẩn quốc gia Mỹ (NIST: National Institute of Standards and Technology). Họ hàm băm SHA bao gồm 5 thuật toán băm là: SHA - 1, SHA - 224, SHA - 256, SHA - 384 và SHA - 512. Bốn thuật giải sau thường được gọi chung là SHA - 2. Bảng 2.5 dưới đây thể hiện các tính chất cơ bản của năm thuật toán băm.

Kích thước (đơn vị: bit) Độ an toàn (đơn vị:

bit) Thuật toán Thông điệp Khối Thông điệp

rút gọn SHA-1 <264 512 32 160 80 SHA-224 <264 512 32 224 112 SHA-256 <264 512 32 256 128 SHA-384 <2128 1024 64 384 192 SHA-512 <2128 1024 64 512 256

Bảng 2.5: Các tính chất cơ bản của thuật toán băm 2.2.3.2. Nhận xét về họ hàm băm SHA

Ưu điểm: SHA là họ hàm băm được coi là an toàn bởi:

- Cho một giá trị băm nhất định được tạo nên bởi một trong những thuật giải SHA, việc tìm lại được đoạn dữ liệu gốc là không khả thi.

- Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi một trong những thuật giải SHA là không khả thi. Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn toàn khác với xác suất rất cao. SHA - 1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau.

Nhược điểm: Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba nhà mật mã học người Trung Quốc đã phát triển thành công một thuật toán dùng để tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra

bởi SHA-1. Mặc dù chưa có ai làm được điều tương tự với SHA-2, nhưng vì thuật toán, SHA-2 không khác biệt mấy so với SHA-1 nên nhiều nhà khoa học đã bắt đầu phát triển một thuật toán khác tốt hơn SHA. NIST cũng đã khởi đầu một cuộc thi phát triển thuật toán băm mới an toàn hơn SHA, giống như quy trình phát triển chuẩn mã hóa nâng cao AES.

2.3. Chữ ký số

2.3.1. Định nghĩa

Chữ ký số là mô hình sử dụng các kỹ thuật mã hóa để gắn một người sử dụng một cặp khóa bí mật – công khai 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 công khai. Quá trình sử dụng chữ ký số bao gồm: tạo chữ ký và kiểm tra chữ ký.

2.3.2. Các ưu điểm của chữ ký số

2.3.2.1. Khả năng xác định 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 (văn bản được "băm" ra thành chuỗi, thường có độ dài cố định và ngắn hơn văn bản) sau đó dùng khóa bí mật để mã hóa, khi đó ta được chữ ký số. Khi cần kiểm tra, bên nhận giải mã (với khóa công khai) để 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ị (chuỗi) 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ỡ.

2.3.2.2. 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. 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ó. Một ví dụ cho trường hợp này là tấn công đồng hình (homomorphism attack): tiếp tục ví dụ như ở trên, một kẻ lừa đảo gửi 1.000.000 đồng vào tài khoản của a, chặn gói tin (a,b) mà chi nhánh gửi về trung tâm rồi gửi gói tin (a,b3

) thay thế để lập tức trở thành triệu phú!Nhưng đó là vấn đề bảo mật của chi nhánh đối với trung tâm ngân hàng không hẳn liên quan đến tính toàn vẹn của thông tin gửi từ người gửi tới chi nhánh, bởi thông tin đã được băm và mã hóa để gửi đến đúng

đích của nó tức chi nhánh, vấn đề còn lại vấn đề bảo mật của chi nhánh tới trung tâm của nó

2.3.2.3. Tính không thể chối bỏ

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.

2.3.3. Thực hiện chữ ký số khóa công khai

Chữ ký số khóa công khai 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 khaivà 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ông thể tìm được khóa bí mật nếu chỉ biết khóa công khai.

Toàn bộ quá trình gồm 3 thuật toán: - Thuật toán tạo khóa;

- Thuật toán tạo chữ ký số; - Thuật toán kiểm tra chữ ký số; 2.3.4. Chữ ký số RSA

2.3.4.1. Giới thiệu

Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.

Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả.

Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật.

Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4.405.829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký.

2.3.4.2. Hoạt động

Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.

Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.

2.3.4.3. Tạo cặp khóa

- Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, - Sao cho việc tách n thành p, q là bài toán khó. đặt P = C = Zn - Tính bí mật (n) = (p-1).(q-1).

- Chọn khóa công khai b < (n), nguyên tố cùng nhau với (n).

- Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n).

- Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b Zn , a*b 1 (mod (n)) .

2.3.4.4. Ký số

2.3.4.5. Kiểm tra chữ ký

Verk (x, y) = đúng x y b (mod n). 2.3.5. Lược đồ ký số RSA

Dữ liệu cần ký được băm thông qua một hàm băm (SHA-1 hoặc SHA-2). Dữ liệu băm được ký bởi khóa bí mật của người ký; khóa bí mật được lưu trong thiết bị lưu khóa. Để thuận tiện cho người xác thực dữ liệu, chứng thư số của người ký cũng được ghép với chữ ký đầu ra để người xác thực không phải tìm kiếm chứng thư số của người ký khi xác thực chữ ký.

-Người dùng truy câp vào khóa bí mật được lưu trực tiếp thiết bị lưu khóa (USB token). Để truy cập được vào thiết bị này người dùng phải tiến hành xác thực bằng mã số PIN.

-Áp dụng hàm băm lên tài liệu số.

-Mã hóa giá trị băm thu được bằng khóa bí mật để tạo chữ ký số cho tài liệu số.

-Gắn chữ ký số lên tài liệu số và gửi đi.

Bảng 2.6: Lược đồ ký số RSA 2.3.6. Lược đồ xác thực chữ ký RSA

Dữ liệu gốc

Thuật toán băm

Dữ liệu tóm lược

Chữ ký số

Hàm băm RSA Chứng thư số

người ký ID người ký Khóa bí mật PKI Token Chứng thư số Kho chứng thư Ký số RSA Băm

Bảng 2.7: Lược đồ xác thực chữ ký RSA

2.3.7. Đánh giá độ chi phí, tốc độ và độ an toàn của thuật toán RSA 2.3.7.1. Chi phí và tốc độ thực hiện của thuật toán RSA 2.3.7.1. Chi phí và tốc độ thực hiện của thuật toán RSA

Chi phí: Để thực hiện thuật toán RSA phần lớn phải tốn chi phí thực hiện các phép tính cơ bản như: tạo khoá, mã hoá, giải mã. Quá trình mã hoá và giải mã tương đương với chi phí thực hiện các phép tính luỹ thừa module n. Để đảm bảo cho khoá bí mật được an toàn thì thường chọn số mũ công khai e nhỏ hơn nhiều so với số mũ bí mật d, do đó chi phí thời gian để thực hiện mã hoá dữ liệu nhỏ hơn nhiều so với thời gian giải mã.

Tốc độ của hệ RSA: Tốc độ của RSA là một trong những điểm yếu của RSA so với các hệ mã đối xứng, so với hệ mã DES thì RSA chậm hơn từ 100 đến 1000 lần, vì vậy RSA không được dùng để mã hoá khối lượng dữ liệu lớn mà thường dùng để mã hoá những dữ liệu nhỏ.

2.3.7.2. Độ an toàn

Độ an toàn của RSA được thiết kế dựa trên độ khó giải bài toán phân tích ra thừa số nguyên tố n = p*q với 2 số nguyên tố bí mật lớn p, q. Nếu ta chọn các số p, q khoảng 100 chữ số thập phân thì nó sẽ có khoảng 200 chữ số thập phân. Để phân tích một số nguyên cỡ lớn như thế với các thuật toán nhanh nhất hiện nay cùng với những máy tính hiện đại nhất cũng mất hàng triệu năm. Như vậy việc phân tích số nguyên n thành các thừa số nguyên tố

Dữ liệu gốc Dữ liệu tóm lược

mới

Chữ ký số

Hàm băm SHA Chứng thư số người ký ID người ký

Kho chứng thư

Chứng thư số người ký Khóa công khai

người ký Tóm lược gốc So sánh Xác thực Yes No Băm

p, q nhằm mục đích bẻ gãy hệ mật mã RSA là điều khó có thể tính toán nổi nếu như trong quá trình thiết kế hệ RSA ta chọn số nguyên N lớn.

Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA. Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn.

Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho me

=c mod n, trong đó (e, n) chính là khóa công khai và c là bản mã. Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán. Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d từ e. Chưa có một phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức (polynomial-time). Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán).

Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới 2048 bít. Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ (cũng có nhiều người phản đối việc này). Với khóa 4096 bít thì hầu như không có khả năng bị phá vỡ trong tương lai gần. Do đó, người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n được chọn đủ lớn. Nếu n có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài giờ với máy tính cá nhân dùng các phần mềm có sẵn. Nếu n có độ dài 512 bít, nó có thể bị phân tích bởi vài trăm máy tính tại thời điểm năm 1999. Một thiết bị lý thuyết có tên làTWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra câu hỏi về độ an toàn của khóa 1024 bít. Vì vậy hiện nay người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít.

Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng tử (trên lý thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức. Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa.

Năm 2010, các nhà khoa học thuộc Đại học Michigan đã công bố phát hiện một kẽ hở trong hệ thống mật mã hoá RSA. Cách phá vỡ hệ thống, lấy khoá bí mật RSA 1024 bit chỉ trong vài ngày thay vì vài năm nếu tấn công theo cách

thông thường - tấn công bằng brute force (dò tìm lần lượt). Các nhà khoa học tạo

Một phần của tài liệu Nghiên cứu chữ ký số trong ứng dụng quản lý tài liệu lưu trữ quốc gia (Trang 30)

Tải bản đầy đủ (PDF)

(61 trang)