Phân khối khóa (key) trong mã hóa

Phân khối khóa (key) trong mã hóa

Rate this post

Phân phối khoá an toàn là một trong ba vấn đề quan trọng của mật mã khoá công khai. Trong các bài trước chúng ta đã đề cập đến trường hợp, nếu người dùng nhận được một khoá công khai, nhưng không có cơ chế để kiểm tra chính xác chủ nhân thực sự của khoá đó là ai, thì có  thể sẽ bị tấn công lừa đảo “Man in the middle”. Trong chương này, chúng ta sẽ cùng nhau khảo sát các phương pháp cho phép phân khối khoá an toàn.

Các bài viết liên quan:

Công bố khóa công khai

Phân khối khóa (key) trong mã hóa

Chủ nhân của khoá công khai tuỳ ý công bố khoá công khai của mình. Khoá công khai có thể được công bố trên các phương tiện thông tin đại chúng như báo chí, truyền thanh, truyền hình, các công cụ Internet như mạng xã hội, thư điện tử, các trang web, blogs, các diễn đàn hoặc phát tán lên mạng với các phương pháp khác nhau. Chủ nhân khoá công khai cũng có thể dùng các phương pháp quảng cáo khác nhau để phổ biến thông tin khoá của mình. Như vậy, việc công bố khoá được thực hiện khá dễ dàng. Tuy nhiên, chính vì sự dễ dàng đó mà thông tin rất dễ bị thay đổi hoặc mạo danh.

Phương pháp công bố khoá công khai thường được sử dụng trong môi trường hạn chế hoặc khi thông tin về khoá không quá quan trọng.

Thư mục khóa công khai

Phân khối khóa (key) trong mã hóa

Thư mục khóa công khai được tạo ra trên mạng Internet. Thư mục chứa các thực thể gồm tên chủ nhân khoá và khóa công khai tương ứng. Chủ nhân khóa cần đăng ký với thư mục trước khi đưa các thông tin khoá công khai của mình lên thư mục. Chủ nhân khóa công khai có thể đăng nhập vào thư mục và thay đổi thông tin khóa của mình mọi lúc. Mọi người chỉ có thể thay đổi khoá công khai của chính mình.

Thư mục khoá công khai cần được công bố thường xuyên trên mạng và thư mục khoá công khai cần được truy cập bằng đường điện tử. Việc quản lý thư mục khoá công khai thường được thực hiện trên cơ sở tự nguyện và thư mục thường không thu phí.

Phương pháp này không an toàn và không ổn định. Kẻ gian vẫn có thể làm thay đổi hoặc giả mạo khoá công khai của người khác một cách không khó khăn. Hơn nữa, thư mục khoá công khai có thể bị tấn công từ chối dịch vụ hoặc, thậm chí, có thể bị xoá hoàn toàn nội dung thư mục.

Trung tâm quản lý khóa công khai

Phân khối khóa (key) trong mã hóa

Trung tâm quản lý khóa công khai lưu trữ khoá công khai của người dùng và sẽ cấp cho những ai có nhu cầu tra cứu khoá công khai của người khác một cách xác thực và an toàn.

Cơ chế hoạt động của trung tâm như sau:

  • Người dùng A gửi thông điệp cho trung tâm yêu cầu cấp thông tin khóa công khai của B: Request || Time1
  • Trung tâm gửi lại A khóa công khai của B:

EKRtt [KUB || Request || Time1 ]

  • B cũng làm tương tự như A để có được KUA
  • A gửi cho B: EKUB [IDA || N1], trong đó N1 dùng để xác thực thông điệp
  • B sau đó gửi cho A: EKUA [N1 || N2] – xác thực B đúng là chủ nhân của khóa KUB
  • Cuối cùng, A gửi cho B: EKUB [N2] – A tự xác định chính mình Quy trình (1)(2) và (4)(5) là tương tự nhau với mục tiêu yêu cầu khoá

công khai từ trung tâm quản lý khoá công khai. Trong quá trình gửi yêu cầu và nhận trả lời có giá trị time1time2 là các mốc thời gian nhằm phân biệt các yêu cầu khác nhau. EKRtt là quy trình mã hoá, sử dụng khoá cá nhân của trung tâm nhằm xác thực và bảo đảm tính toàn vẹn thông điệp trả lời.

Quy trình (3)(6)(7) chính là quy trình bắt tay (handshake) giữa A và B nhằm xác thực lẫn nhau. N1 N2 là các giá trị dùng để xác thực. IDA là định danh của A.

Ưu điểm của trung tâm quản lý khóa công khai là tăng cường bảo mật hơn so với thư mục phân phối khóa công khai; các khoá công khai đều được phân phối an toàn từ trung tâm. Ở đây, yêu cầu người dùng phải biết khóa công khai của trung tâm để có thể kiểm tra thông điệp trả lời từ trung tâm khi cần. Bằng phương pháp này, người dùng có thể liên lạc với trung tâm để lấy khóa công khai của đối tác một cách an toàn.

Nhược điểm của hệ thống là người dùng cần phải liên lạc trực tiếp với trung tâm mỗi khi cần khóa công khai và không phải lúc nào cũng có thể làm được ngay việc đó.

Chứng chỉ khóa công khai

Chứng chỉ khoá công khai do một trung tâm quản lý khoá công khai (Certificate Authority – CA) cấp.

Cơ chế hoạt động của hệ thống như sau:

  • A gửi thông điệp cho CA yêu cầu cấp chứng chỉ cho khóa công khai (KUA) của mình. (chứng chỉ này có thể do A tạo ra hoặc A uỷ quyền CA tạo ra cho mình)
  • CA cấp cho A chứng chỉ khoá công khai (CA):

CA = EKRauth [Time1 || IDA || KUA ]

  • B cũng làm tương tự như A để có chứng chỉ cho khóa ông khai của mình (KUB ) là CB
  • A gửi CA cho B và B gửi CB cho A
  • A và B sẽ đọc chứng chỉ nhận được để xác định khóa công khai của nhau
Phân khối khóa (key) trong mã hóa

Chứng chỉ CA có giá trị time1 là tổng hợp các mốc thời gian như ngày cấp, thời hạn có giá trị của chứng chỉ CA. IDA cho biết chứng chỉ này là của

A. KUA là khoá công khai của A. EKRAuth là mã hoá bằng khoá cá nhân của CA, dùng để xác thực thông tin mà CA cấp.

Như vậy, bản chất của chứng chỉ CA là tạo ra liên kết giữa IDA với KUA trong khoảng thời gian được xác định bởi Time1 và tất cả thông tin này được bảo đảm bởi một người thứ ba tin tưởng là CA.

Chứng chỉ khoá công khai có ưu điểm là cho phép trao đổi khóa công khai mà không cần truy cập với thời gian thực tới nơi quản lý khóa. Chứng chỉ khoá công khai xác thực người sở hữu của khóa công khai tương ứng. Chứng chỉ khoá công khai thường kèm theo các thông tin khác như: thời hạn có hiệu lực của khóa, thuật toán mã hóa, quyền sử dụng, …Tất cả nội dung trên được ký bởi thành phần tin tưởng được gọi là Certificate Authority (CA). Mọi người sẽ cần có khóa công khai của CA để kiểm tra những chứng chỉ do CA cấp.

Chứng chỉ khoá công khai hiện nay đang là phương pháp phân phối khoá công khai thuận tiện, an toàn và hiệu quả nhất.

Phân phối khóa bí mật

Quy trình mã hóa khóa công khai có thể được sử dụng để phân phối an toàn các khóa bí mật. Mặc dù có thể dùng mật mã khóa công khai để giữ bí mật thông tin nhưng vì mật mã khóa công khai thường chậm do đó người ta phải sử dụng mật mã khóa bí mật.

Để bảo đảm an toàn, khóa trong mật mã khóa bí mật cần được thay đổi thường xuyên. Mỗi khoá bí mật thông thường chỉ được sử dụng trong một khoảng thời gian ngắn. Nhiều khoá bí mật thay đổi theo từng phiên làm việc, và ta gọi những khoá như vậy là khoá phiên. Do các khoá phiên thay đổi thường xuyên nên chúng ta cần phải có phương pháp phân phối khoá phiên một cách an toàn.

Các phương pháp phân phối khoá phiên gồm có:

  • Phân phối khóa phiên đơn giản
  • Phân phối khóa phiên bí mật và có xác thực (sử dụng các thuật toán mã hóa khóa công khai)
  • Phân phối khóa phiên sử dụng nguyên lý mã hóa khóa công khai (thuật toán Diffie Hellman)

Phân phối khóa phiên đơn giản

Phân khối khóa (key) trong mã hóa

Quy trình tao và phân phối khóa như sau :

  • A tạo ra cặp khóa công khai tạm thời {KUA, KRA}
  • A gửi cho B khóa công khai cùng với tên của mình: KUA || IDA
  • B tạo ra khóa phiên KS, gửi nó cho A sau khi đã mã hóa nó bằng khóa công khai mà A cung cấp: EKUA [KS]
  • A sử dụng khoá cá nhân của mình (KRA) giải mã để nhận được khóa phiên KS và sau đó, cùng B sử dụng nó.

Đây là quy trình đơn giản,dễ thực hiện nhưng nguy cơ bị chặn thông tin và bị mạo danh trong quá trình trao đổi là rất cao.

Phân phối khóa phiên bí mật và xác thực

Phân khối khóa (key) trong mã hóa

Quy trình tao và phân phối khóa như sau :

  • A gƣ̉ i cho B thông điêp:̣ EKUB [N1 || IDA], N1 – dùng đểxác thựcB
  • B giải mã , gắn N2 vào và gƣ̉ i lại cho A: EKUA [N1 || N2], N2 – dùng để xác thực A
  • A nhận được N1 – xác thực được B. A trả lại N2 cho B: EKUB [N2]
  • B nhận được N2 – xác thực được A
  • A tao ra khóa phiên K  S, gửi nó  cho  B sau khi đã mã hóa hai lâǹ  :

EKUB [ EKRA [KS] ]

  • B giải mã, nhận được khóa phiên KS và sau đó, cùng A sử dụng nó. Quy trình này giống như quy trình bắt tay đã được trình bày trong phần trước. Phương pháp này tuy có phức tạp hơn so với phương pháp trên nhưng an toàn và bảo đảm được bí mật lẫn xác thực .

Phân phối khóa phiên theo Diffie Hellman

Nội dung của quy trình Diffie Hellman bao gồm các bước như sau:

  • Mỗi bên tạo ra một cặp khóa (công khai + cá nhân)
  • Các bên trao đổi cho nhau khóa công khai
  • Mỗi bên kết hợp khóa công khai nhận được với khóa cá nhân mà mình có để tạo ra khóa phiên
  • Các khóa phiên nhận được là giống nhau

Thuật toán an toàn vì từ hai khóa công khai trên đường truyền không thể suy ra được khóa phiên. Cơ sở toán học của thuật toán là phép lũy thừa trên trường Galoa: trong khi bài toán lũy thừa có độ phức tạp O((log n)3) (dễ) thì bài toán ngược lại là logarit rời rạc có độ phức tạp O(elog n log log n) (rất khó).

Thuật toán Diffie Hellman có khả năng bị tấn công dạng “Man in the middle”. Tuy nhiên, đây là thuật toán dùng khá phổ biến trong thương mại điện tử.

Ví dụ thuật toán Diffie Hellman:

Giả sử hai bạn Nam và Mai muốn trao đổi khóa trên kênh truyền  thông công cộng:

Phân khối khóa (key) trong mã hóa

Giả sử Dũng là người thám mã đã lấy được p, a, YN, YM. Để tìm khóa KMN, Dũng cần tính: XN = loga(YN) mod p = log550 mod 97 = 36 (khó); do đó, thuật toán an toàn.

Leave a Reply