Các bước thực hiện của thuật toán RSA

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số giải pháp an toàn và bảo mật cơ sở dữ liệu ứng dụng cho sở giáo dục và đào tạo tỉnh quảng ninh​ (Trang 32 - 42)

Vấn đề cốt lõi của thuật toán RSA là hai số nguyên tố p và q, hai số này cần phải được giữ bí mật tuyệt đối. Mặt khác, có thể tính toán được khóa bí mật D nếu phân tích được n thành hai số nguyên tố p và q. Nhưng điều này là không khả thi vì phải đối mặt với bài toán khó.

Sinh khóa:  Chọn p, q là 2 số nguyên tố  Tính n = p.q  Tính Ø (n) = (p-1)(q-1)  Chọn e: USCLN[e, Ø(n)] =1  Tính d: d=e-1 mod Ø(n)  Khóa công khai: KU={e,n}  Khóa bí mật: KR={d,n}

Mã hóa: Bản tin gốc: P, bản mã: C=Pe(mod n)

Giải mã: Bản tin mã: C, bản giải mã: P=Cd(mod n)

Các hệ thống mã hóa khóa công khai khắc phục được nhược điểm phân phối khóa phải được giữ một cách an toàn. Tuy nhiên thì khi công khai các khóa dùng để mã hóa thì lại nảy sinh vấn đề một người nào đó giả danh sử dụng để mã hóa các thông báo gửi đến bên nhận làm cho họ không thể phân biệt được thông báo đó là hợp lệ hay không. Và có nhiều phương pháp giải quyết được vấn đề này, điển hình là chữ ký số.

2.3.3.2. Phân phối khóa công khai

Các hệ mã công khai chúng ta đã biết yêu cầu mỗi người phải có một giá trị công khai. Để phân phối các giá trị đó cho người dùng đảm bảo tính xác thực, ta có thể sử dụng một trong các kỹ thuật sau:

Phân phối điểm - điểm trên kênh truyền tin cậy: Khóa công khai của các bên thu được thông qua việc tra đổi trược tiếp với nhau trên mật kênh tin cậy. Phương pháp này phù hợp với hệ thống không thường xuyên sử dụng hoặc hệ thống đóng và nhỏ.

Truy nhập trực tiếp tới các tệp dùng chung: Sử dụng một cơ sở dữ liệu công khai lưu trữ tên và khóa công khai được xác thực mỗi người dùng hệ thống. Truy cập

từ xa trên những kênh truyền công cộng có thể tránh được những tấn công bị động, còn muốn chống lại những tấn công chủ động ta sử dụng những kênh truyền tin cậy.

Sử dụng phục vụ ủy quyền trực tuyến: Một phục vụ tin cậy cho phép các truy nhập như khi truy nhập tới tệp dùng chung, khi các bên có nhu cầu khóa công khai, nó sẽ được phục vụ gửi cho và chữ ký của phục vụ trên đó. Mỗi người sử dụng đều có thể kiểm thử được chữ ký của phục vụ đó.

Sử dụng phục vụ ủy quyền ngoại tuyến và chứng chỉ: Phục vụ được gọi là CA (ủy quyền chứng chỉ). Mỗi người sử dụng chỉ phải liên lạc với phục vụ một lần để đăng ký khóa công khai của mình và nhận khóa kiểm thử chữ ký của CA. CA sẽ chứng nhận khóa công khai của người sử dụng rồi rằng buộc giá trị này với xâu xác định danh tính của người sử dụng, đó là nội dung chứng chỉ của người sử dụng.

2.4. Xác thực thông tin

Việc xác thực thông tin liên quan đến việc sau khi thông tin được truyền trên mạng bao gồm có:

 Bảo vệ tính toàn vẹn của thông tin, tức là bảo vệ thông tin không bị thay đổi hoặc có thể phát hiện ra nếu thông tin có sự thay đổi trên đường truyền.

 Kiểm chứng danh tính nguồn gốc thông tin, tức là kiểm tra xem thông tin có đúng là người gửi hay bị kẻ khác mạo danh.

 Chống từ chối bản tin gốc, tức là bản thân thông tin có chứa định danh người gửi và không ai có thể làm việc đó.

 Có thể bổ sung thêm việc bảo mật như mã hóa.

Do đó để đáp ứng được những yêu cầu đó thì có ba cách mã hóa được lựa chọn là:

 Thông tin được mã hóa bằng khóa đối xứng hoặc công khai.

 Sử dụng mã xác thực bản tin, dùng khóa với hàm nén thông tin cần gửi để nhận được một đặc trưng đính kèm với thông tin và người gửi đó.

 Sử dụng hàm băm nén thông tin thành dấu vân tay cho thông tin.

Yêu cầu bảo mật thông tin khi truyền thông tin trên mạng bao gồm có [4]: Giữ bí mật thông tin, chỉ cho phép người có quyền biết nắm được thông tin đó, không cho phép theo dõi hoặc cản trở việc truyền tin, tránh việc giả mạo lấy danh nghĩa của người khác để truyền tin, ngăn chặn việc nội dung thông tin bị cắn xén và sửa đổi, tránh việc thay đổi thứ tự bản tin truyền, chống chối cãi.

2.4.1. Bảo vệ tính toàn vẹn của thông tin

Đảm bảo tính toàn vẹn của thông tin, tức là thông tin chỉ được phép xóa hoặc sửa bởi những đối tượng được phép và phải đảm bảo rằng thông tin vẫn còn chính xác khi được lưu trữ hay truyền đi. Về điểm này, nhiều người thường hay nghĩ tính toàn vẹn (integrity) đơn giản chỉ là đảm bảo thông tin không bị thay đổi (modify) là chưa đẩy đủ [8].

Trong an toàn thông tin, toàn vẹn có nghĩa rằng dữ liệu không thể bị chỉnh sửa mà không bị phát hiện. Nó khác với tính toàn vẹn trong tham chiếu của cơ sở dữ liệu, mặc dù nó có thể được xem như là một trường hợp đặc biệt của tính nhất quán như được hiểu trong hô hình cổ điển ACID (tính nguyên tử (Atomicity), tính nhất quán (Consistency), tính tính cách ly (Isolation), tính lâu bền (Durability) - là một tập các thuộc tính đảm bảo rằng cơ sở dữ liệu đáng tin cậy) của xử lý giao dịch. Tính toàn vẹn bị xâm phạm khi một thông điệp bị chỉnh sửa trong giao dịch. Hệ thống thông tin an toàn luôn cung cấp các thông điệp toàn vẹn và bí mật [5].

Ngoài ra, một giải pháp toàn vẹn dữ liệu (data integrity) có thể bao gồm thêm việc xác thực nguồn gốc của thông tin này (thuộc sở hữu của đối tượng nào) để đảm bảo thông tin đến từ một nguồn đáng tin cậy và ta gọi đó là tính xác thực (Authenticity) của thông tin.

Sau đây là một số trường hợp tính toàn vẹn của thông tin bị phá vỡ:  Thay đổi giao diện trang chủ của một website.

 Chỉnh sửa trái phép các file được lưu trữ trên máy tính.

 Do có sự cố trên đường truyền mà tín hiệu bị nhiễu hoặc suy hao dẫn đến thông tin bị sai lệch.

2.4.2. Kiểm chứng danh tính nguồn gốc thông tin

Xác thực nguồn gốc dữ liệu còn được gọi là xác thực thông báo, liên quan nhiều tới nguyên vẹn dữ liệu. Tuy nhiên, đây là hai khái niệm khác nhau, chúng có thể được phân biệt rõ ràng qua một số khía cạnh sau đây [2]:

 Thứ nhất, xác thực nguồn gốc dữ liệu gắn liền với liên lạc. Nó có mục đích kiểm tra xem thông báo có phải đến từ nguồn đã khai báo hay không. Còn nguyên vẹn dữ liệu không cần đến đặc tính liên lạc mà nó có thể được cung cấp ngay trên dữ liệu lưu trữ.

 Thứ hai, xác thực nguồn gốc dữ liệu phải bao gồm sự nhận biết nguồn gốc của thông báo, còn nguyên vẹn dữ liệu với tư cách là một dịch vụ an toàn có thể được cung cấp, không cần nhận biết nguồn gốc thông báo.

 Thứ ba và có ý nghĩa hơn cả là xác thực nguồn gốc dữ liệu bao gồm sự thiết lập “tính tươi” của thông báo trong khi đó nguyên vẹn dữ liệu lại không cần làm như vậy: Một đoạn dữ liệu cũ cũng có thể có tính nguyên vẹn hoàn hảo.

 Trong dịch vụ xác thực nguồn gốc dữ liệu, bên nhận thông báo phải kiểm tra xem thông báo này có đủ mới hay không (tức là khoảng thời gian giữa phát và thu thông báo là đủ nhỏ). Thông báo mà bên nhận cho là mới thường được đề cập đến như là một thông báo “tươi”. Việc đòi hỏi thông báo phải tươi có ý nghĩa phổ biến là, thông báo tươi kéo theo sự đáp ứng tốt giữa những thực thể liên lạc và điều này có thể suy luận đến tình huống ít khả năng hơn là khi những thực thể liên lạc, máy móc, những hệ thống hay bản thân thông báo có thể đã bị phá hoại rồi.

Khoảng thời gian để xác định tính tươi của thông báo được xác định bởi các ứng dụng cụ thể. Một số ứng dụng đòi hỏi khoảng thời gian đó dao động trong khoảng vài giây. Một số ứng dụng cho phép chu kỳ tươi dài hơn. Chẳng hạn, thời gian sống

(lifetime) của séc ngân hàng là khoảng thời gian giữa ngày phát hành séc và ngày chi trả séc. Đa số các ngân hàng cho phép khoảng thời gian ba tháng là thời gian sống hợp lệ của séc.

Cuối cùng, cần chỉ ra rằng một sự xác nhận nặc danh nào đó được tạo bởi một vài sơ đồ mật mã (ví dụ chữ ký mù) cũng giúp phân biệt rõ ràng giữa xác thực nguồn gốc dữ liệu và nguyên vẹn dữ liệu. Người sử dụng được cấp một “giấy” xác nhận nặc danh để chứng minh tư cách thành viên với hệ thống. Tại đây, bằng chứng về sự nguyên vẹn dữ liệu có thể được trình diễn theo cách hợp lý, sống động, tuy nhiên hành động của hệ thống nhằm nhận biết nguồn gốc dữ liệu sẽ bị ngăn chặn.

2.4.3. Chống từ chối bản tin gốc

Khi sử dụng một chứng chỉ số, người gửi phải chịu trách nhiệm hoàn toàn về những thông tin mà chứng chỉ số đi kèm. Trong trường hợp người gửi chối cãi, phủ nhận một thông tin nào đó không phải do mình gửi (chẳng hạn qua mạng) chứng chỉ số mà người nhận có được sẽ là bằng chứng khẳng định người gửi là tác giả của thông tin đó. Trong trường hợp chối bỏ, CA cung cấp chứng chỉ số cho hai bên sẽ chịu trách nhiệm xác minh nguồn gốc thông tin, chứng tỏ nguồn gốc thông tin được gửi [6].

Trong các ứng dụng, Chữ ký chống chối từ có tác dụng bảo vệ lợi ích riêng của người ký. Nó bảo đảm cho việc chữ ký không bị bên nhận dùng sai mục đích, cũng như những việc làm của bên nhận để thuyết phục người khác về sau này. Nó cũng thuyết phục bên nhận rằng tất cả những người giữ Chữ ký chống chối từ đều có thể yêu cầu sự hợp tác của người ký và người ký không thể trả lời sai vì họ luôn luôn thuyết phục một người bất kì rằng một chữ ký tin cậy là đáng tin cậy và một chữ ký không tin cậy là không tin cậy.

Ví dụ rõ ràng nhất về tác dụng của Chữ ký chống chối từ là chống sự sao chép trái phép phần mềm. Sản phẩm phần mềm của A có kèm theo Chữ ký chống chối từ được bán cho B. Sau đó B không thể giả danh A để bán cho C vì khi C thực hiện kiểm

tra chữ ký, sự hợp tác của B là vô nghĩa (nếu B chịu hợp tác thì câu trả lời trong giao thức sẽ là “chữ ký không tin cậy”). Chỉ có sự hợp tác của A mới mang lại sự khẳng định tin cậy cho C.

Đối với người nhận, các Chữ ký chống chối từ có ưu thế hơn so với phép Chứng minh tri thức không ở chỗ bên nhận nắm được điều gì đó mà sau này, trong những hoàn cảnh nhất định, có thể được sử dụng để thuyết phục người khác. Mặc dù vậy, điều này phụ thuộc vào sự đáp ứng của người ký trong việc tiếp tục xác nhận chữ ký. Nếu người ký không thể đáp ứng đầy đủ các điều kiện trong giao thức hoặc từ chối hợp tác thì bên nhận không thể sử dụng chữ ký [9]. Việc từ chối hợp tác xác nhận chữ ký có thể do người ký muốn chối bỏ trách nhiệm của mình hoặc cũng có thể do người ký quá bận rộn với công việc. Chẳng hạn, nếu chữ ký chống chối từ trên sản phẩm phần mềm là của Giám đốc công ty thì Giám đốc không thể thường xuyên cộng tác với khách hàng để kiểm tra chữ ký được.

Người ta đã đề xuất Lược đồ chữ ký người xác nhận được chỉ định để giải quyết điểm yếu này và nâng cao độ tin cậy của lược đồ chữ ký chống chối từ. Giao thức này đòi hỏi có ba bên tham gia: người nhận, người ký và người xác nhận. Người ký và người xác nhận có khoá công khai và chúng được người nhận chấp thuận. Ở giao thức ký, người ký đã tạo ra được một Chữ ký chống chối từ như là nó được ký bởi người xác nhận. Nếu giao thức kiểm tra được tiến hành với sự cộng tác của người ký, người nhận bị thuyết phục rằng chữ ký này do người ký tạo ra và chữ ký đó có thể được kiểm tra bởi người xác nhận [2].

Trong giao thức xác nhận, với sự hợp tác của người xác nhận, người kiểm tra (có thể là chính người nhận hoặc là một người khác. Trong tình huống B gửi cho A thông báo cho phép rút một số tiền ở tài khoản của B thì người kiểm tra có thể là nhân viên của ngân hàng) bị thuyết phục rằng chữ ký là tin cậy, nhưng cũng không cho phép người kiểm tra một mình tiếp tục đi thuyết phục người khác.

Trong Lược đồ chữ ký người xác nhận, người xác nhận có khả năng xác nhận hoặc từ chối chứng thực độ tin cậy của chữ ký gốc nhưng họ không có khả năng giả mạo chữ ký.

Tuy nhiên, trong nhiều lược đồ Chữ ký người xác nhận, bản thân người ký không thể xác nhận chữ ký của mình là tin cậy. Nếu người xác nhận từ chối cộng tác thì dẫn đến việc không thể kiểm tra chữ ký. Trong thực tế, sự tin cậy của các bên tham gia giữ vai trò rất quan trọng, vì vậy giảm sự rắc rối cho các bên là cần thiết cả về phương diện kỹ thuật cũng như tiết kiệm chi phí trong giao dịch.

Lược đồ chữ ký người xác nhận không thể chối từ gắn cả chức năng kiểm tra chữ ký của cả người ký và của cả người xác nhận. Lược đồ này là sự biến đổi của lược đồ chữ ký người xác nhận. Nó đem lại sự linh hoạt đối với người ký, người nhận cũng như người xác nhận được chỉ định - người thường được tin cậy trong thực tế. Ở đây, người nhận có thể kiểm tra chữ ký thông qua sự hợp tác của người ký hoặc của người xác nhận. Hơn nữa, lược đồ này còn có thể phát triển thành lược đồ chữ ký người xác nhận không thể chối từ “mù” (nghĩa là người ký không quan tâm đến nội dung cần ký).

Các Chữ ký số này đem lại lợi ích trong nhiều ứng dụng, ví dụ như thiết kế hệ thống trả tiền trước (micropayment) đối với các mạng lớn bao gồm nhiều dịch vụ. Trong mô hình này, giấy chứng nhận trả tiền trước (thường là số tiền nhỏ) có chữ ký người xác nhận không thể chối từ mù của người quản lý liên hợp các công ty (thuộc tính “mù” được đưa vào để đảm bảo tính riêng tư của người sử dụng). Để truy cập tới các dịch vụ trực tuyến, người sử dụng phải chứng minh giấy chứng nhận trả tiền trước là tin cậy đối với người cung cấp dịch vụ - người có vai trò người xác nhận trong lược đồ chữ ký [2].

2.5. Hàm băm

Hàm băm chính là một biến thể của mã xác thực thông điệp. Với hàm băm, đầu vào là một thông điệp M có kích thước bất kì, nhưng đầu ra H(M) có kích thước

cố định. Mã băm chính là hàm của tất cả các bit trong một thông điệp, đồng thời cũng cung cấp khả năng phát hiện ra lỗi. Tức là nếu người nào đó thay đổi một bit bất kì hay một chuỗi bit trong một thông điệp thì giá trị băm cũng sẽ bị thay đổi. Do đó, để đáp ứng yêu cầu về xác thực thì hàm băm phải thỏa mãn những yêu cầu sau:

 Có thể áp dụng cho mọi thông điệp có kích thước tùy ý, nhưng đầu ra H phải có kích thước cố định thường là 128 hay 1024 bit.

 Dễ tính được giá trị h=H(M) cho mọi bản tin M và hàm băm H tính toán nhanh, phụ thuộc vào bản tin và không thể tính toán ngược lại, nói cách khác chính là hàm một chiều.

 Nếu cho một giá trị x thì không thể tìm được y sao cho H(x)=H(y) và cũng không thể tìm được x, y sao cho H(x)=H(y).

 Hàm băm sẽ tạo nên dấu vân tay hay chính là thông tin đặc trưng của

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số giải pháp an toàn và bảo mật cơ sở dữ liệu ứng dụng cho sở giáo dục và đào tạo tỉnh quảng ninh​ (Trang 32 - 42)