Các thuật toán và kỹ thuật mã hóa sử dụng thương mại điện tử – Phần 2

thuattoanavatar

2.1.4.2. Các ứng dụng

Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:

– Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.

thuattoan211– Tạo chữ ký số (xác thực thông tin): cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không.

thuattoan212– Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên.

2.1.5. Chữ ký số (Digital Signature)

2.1.5.1. Giới thiệu chữ ký số

Chữ ký số là một dạng chữ ký điện tử được dựa trên công nghệ khóa công khai (PKI). Mỗi người cần 1 cặp khóa gồm khóa công khai & khóa bí mật.

– Khóa bí mật dùng để tạo chữ ký số

– Khóa công khai dùng đểthẩm định chữ ký số -> xác thực

2.1.5.2. Tạo chữ ký số

thuattoan21Mục đích của việc thẩm định chữ ký số:

thuattoan22– Xác thực được người gửi: 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 không cần phải được mã hóa mà chỉ cần mã hóa hàm băm của văn bản đó (thường có độdài cố định và ngắn hơn văn bản). Khi cần kiểm tra, bên nhận giải mã (với khóa công khai) đểlấy lại hàm băm 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 đề nhận thực đặc biệt quan trọng đối với các giao dịch tài chính. Chẳng hạn một chi nhánh ngân hàng gửi một gói tin vềtrung tâm dưới dạng (a,b), trong đó a là sốtài khoản và b là sốtiền chuyển vào tài khoản đó. Một kẻ lừa đảo có thể gửi một số tiền nào đó để lấy nội dung gói tin và truyền lại gói tin thu được nhiều lần đểthu lợi (tấn công truyền lại gói tin).

– Chống 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.

– Xác thực sự toàn vẹn của thông tin: 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ú!

2.1.6. RSA

2.1.6.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ả. RSA là thuật toán mã khối có kích thước khối thay đổi được. Thuật toán RSA có hai khóa: khóacô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.1.6.2. Thuật toán

Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:

  • Chọn 2 sốnguyên tố lớn và với lựa chọn ngẫu nhiên và độc lập.
  • Tính: .
  • Tính: giá trị hàm số Ơle .
  • Chọn một số tự nhiên e sao cho và là sốnguyên tốcùng nhau với .
  • Tính: d sao cho

Một số lưu ý:

– Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.

– Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem thêm: số học môđun).

– Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho cũng là số tự nhiên. Khi đó sử dụng giá trị

– Từ bước 3, PKCS#1 v2.1 sử dụng thay cho ).

Khóa công khai bao gồm:

– n, môđun, và

– e, số mũ công khai (cũng gọi là số mũ mã hóa).

Khóa bí mật bao gồm:

– n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và

– d, số mũ bí mật (cũng gọi là số mũ giải mã).

Một dạng khác của khóa bí mật bao gồm:

– p and q, hai số nguyên tốchọn ban đầu,

– d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1),

– (1/q) mod p (thường được gọi là iqmp)

Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dư. Ở dạng này, tất cả thành phần của khóa bí mật phải được giữ bí mật.

Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở đây, p và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính d khi biết

  1. Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa.

2.1.7. Hạ tầng khóa công khai (Public key Infrastructure)

2.1.7.1. Giới thiệu hạ tầng khóa công khai

Trong mật mã học, hạ tầng khóa công khai “public key infrastructure”, viết tắt PKI là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thực số) cung cấp và xác thực định danh các bên tham gia vào quá trình trao đổi thông tin. Cơ chế này cũng cho phép gán cho mỗi người sửdụng trong hệ thống một cặp khóa công khai/khóa bí mật. Các quá trình này thường được thực hiện bởi một phần mềm đặt tại trung tâm và các phần mềm phối hợp khác tại các địa điểm của người dùng. Khóa công khai thường được phân phối trong chứng thực khóa công khai.

Khái niệm hạ tầng khóa công khai (PKI) thường được dùng để chỉ toàn bộ hệ thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan đồng thời với toàn bộ việc sử dụng các thuật toán mật mã hóa khóa công khai trong trao đổi thông tin. Tuy nhiên phần sau được bao gồm không hoàn toàn chính xác bởi vì các cơ chế trong PKI không nhất thiết sửdụng các thuật toán mã hóa khóa công khai.

PKI cho phép những người tham gia xác thực lẫn nhau và sửdụng thông tin từ các chứng thực khóa công khai đểmật mã hóa và giải mã thông tin trong quá trình trao đổi. Thông thường, PKI bao gồm phần mềm máy khách (client), phần mềm máy chủ (server), phần cứng (như thẻthông minh) và các quy trình hoạt động liên quan. Người sử dụng cũng có thể ký các văn bản điện tử với khóa bí mật của mình và mọi người đều có thể kiểm tra với khóa công khai của người đó. PKI cho phép các giao dịch điện tử được diễn ra đảm bảo tính bí mật, toàn vẹn và xác thực lẫn nhau mà không cần phải trao đổi các thông tin mật từ trước.

2.1.7.2. Chứng chỉ số

Chứng chỉ số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một máy chủ, một công ty, hoặc một vài đối tượng khác và gắn chỉ danh của đối tượng với một khoá công khai (public key). Giống như bằng lái xe, hộ chiếu, chứng minh thư hay những giấy tờ nhận diện cá nhân thông thường khác, chứng chỉsốcung cấp bằng chứng cho sự nhận diện của một đối tượng. Hệ mã khoá công khai sửdụng chứng chỉ số để giải quyết vấn đềmạo danh. Để lấy được bằng lái xe, bạn cần phải đăng ký với Phòng cảnh sát giao thông. Họ sẽ cấp cho bạn bằng lái xe sau khi đã xác định các thông tin vềbạn như: có khả năng lái xe, họvà tên, địa chỉ, và những thông tin cần thiết khác. Để lấy được chứng chỉ số bạn cũng cần phải thực hiện các công việc đăng ký tương tự như vậy. Nơi có thể chứng nhận những thông tin của bạn là chính xác được gọi là nhà cấp chứng chỉ số (Certificate Authority viết tắt là CA), một tổ chức có thẩm quyền xác nhận chỉdanh và cấp các chứng chỉ số. Họ có thể là một thành phần thứ ba đứng độc lập hoặc các tổ chức tự vận hành phần mềm cấp chứng chỉ số của mình. Các phương pháp đểxác định chỉ danh phụt huộc vào các chính sách mà CA đặt ra. Chính sách lập ra phải đảm bảo việc cấp chứng chỉ số phải đúng đắn, ai được cấp và mục đích dùng vào việc gì. Thông thường, trước khi cấp một chứng chỉsố, CA sẽ công bố các thủ tục cần phải thực hiện cho các loại chứng chỉ số.

Trong chứng chỉ số chứa một khoá công khai được gắn với một tên duy nhất của một đối tượng (như tên của một nhân viên hoặc server). Chứng chỉ số giúp ngăn chặn việc sửdụng khoá công khai cho việc giả mạo. Chỉc ó khoá công khai được chứng thực bởi chứng chỉsốmới làm việc với khoá riêng (private key) tương ứng được sở hữu bởi đối tượng mà có chỉdanh đã được chứng thực nằm trong chứng chỉ số.

thuattoan23Ngoài khoá công khai, một chứng chỉ số còn chứa thêm tên của đối tượng mà nó nhận diện, hạn dùng, tên của CA cấp chứng chỉ số đó, mã số thứ tự, và những thông tin khác. Điều quan trọng nhất là một chứng chỉ số luôn luôn chứa chữ ý số của CA đã cấp chứng chỉ số đó. Nó cho phép chứng chỉ số như đã được đóng dấu để cho người sử dụng biết và tin cậy vào CA. Chứng chỉ số là một tệp tin điện tử được sửdụng để nhận diện một cá nhân, một máy chủ, một công ty, hoặc một vài đối tượng khác và gắn chỉ danh của đối tượng đó với một khoá công khai (public key).

Các thông tin trong chứng chỉ số bao gồm:

– Nhận dạng của thực thểthông tin (tên user, địa chỉ IP, địa chỉ email, URL, của website,…)

– Khóa công khai của thực thểthông tin

– Chữký sốcủa “người” xác nhận

– Một số thông tin phụ trợ khác

2.1.7.3. Cấu trúc chứng chỉ theo X.509

X.509 là một đề ngh ịcủa ITU (International Telecommunication Union) định nghĩa một framework về chứng thực (certificate). X.509 dựa trên X.500, mà bản thân X.500 còn chưa được định nghĩa hoàn hảo. Kết quả là chuẩn X.509 đang được diễn giải theo một sốcách, tùy theo công ty cung cấp quyết định sử dụng như thếnào. X.509 lần đầu tiên được công bố vào năm 1988, và các phiên bản tiếp theo đã được đưa ra để giải quyết các vấn đề an toàn, đây cũng là sựcốxảy ra bất ngờ ngay lần công bố đầu tiên. X.509 hỗ trợ cả hai mã bí mật (mã đơn) và mã công khai. X.509 định nghĩa các nội dung về một chứng thực, bao gồm số phiên bản, số serial, ID chữ ký, tên công bố, thời điểm có hiệu lực, định nghĩa chủ đề, phần mở rộng và chữ ký trên các trường trên.

Chứng chỉ sốtheo cấu trúc của X.509

thuattoan24

Về cơ bản, một người có trách nhiệm chứng nhận sẽ đặt khóa công khai của một người nào đó có nhu cầu chứng thực vào thủtục chứng thực và sau đó xác thực lại bằng khóa riêng.

2.1.7.4. Cơ sở hạ tầng khóa công khai

Hệ thống bao gồm các thành phần cần thiết thực hiện các chức năng:

– Tạo ra các chứng chỉkhóa công khai

– Phân phối chứng chỉ

– Thu hồi chứng chỉ

– Quản lý các chứng chỉ

PKI là thành phần nền tảng đểtriển khai các ứng dụng bảo mật dựa trên khóa công khai.

2.1.7.5. Các thành phần của PKI

thuattoan25

– End Entity: người sửdụng, một phần mềm hoặc thiết bịtham gia vào quá trình trao đổi thông tin.

– Certification Authority (CA): thực thể tin cậy trong cộng đồng, có chức năng tạo ra chứng chỉ.

– Registration Authority (RA): thực hiện các chức năng xử lý hỗ trợ cho CA.

– Repository: kho lưu trữ các chứng chỉ, cúng cấp chứng chỉ cho user khi có yêu cầu.

– CRL Issuer (CertificateRevocation List): thực thểquản lý việc thu hồi chứng chỉ đã hết hạn hoặc vi phạm các vấn đề về bảo mật.

2.1.7.6. Chứng thực chéo

– CA chứng thực cho End Entity.

– CA cũng có thểchứng thực cho CA khác trong mô hình phân cấp tạo thành đường dẫn chứng thực (Certification Path).

– Tính tin cậy (trust) của các CA cũng được thiết lập thông qua mô hình phân cấp.

Mô hình CA nhiều cấp:

thuattoan26Ví dụ về chứng thực chéo:

thuattoan27Ký hiệu: A<<X>>: A chứng nhận cho X

còn tiếp phần 3

Comments

comments