Giao thức lai

Một phần của tài liệu tìm hiểu các giao thức tạo lập khóa bí mật và các kỹ thuật quản trị khóa (Trang 42 - 78)

Không chỉ thuần sử dụng một hệ mật mã nào đó, đôi khi có những giao thức sử dụng mã khóa đối xứng trong cả mã khóa công khai và chữ ký điện tử, giao thức Beller-Yacobi là một ví dụ như thế. Những giao thức sử dụng cả kỹ thuật mã khóa đối xứng và mã khóa công khai được gọi là giao thức lai.

2.4.3.1. Giao thc Beller-Yacobi 4 - ln qua (4-pass)

Giao thc

Khi hai bên tham gia vào quá trình truyền tin có sự chênh lệch về khả năng xử lý thì ngoài yêu cầu giao thức đảm bảo việc chuyển khóa an toàn nó còn phải hạn chế đến mức ít nhất các phép toán cần thực hiện tại bên yếu hơn (ít tài nguyên hơn, khả năng xử lý, tính toán kém hơn).

Về cơ bản trong giao thức, U tự xưng danh với V bằng cách ký trên một văn bản ngẫu nhiên m, trong khi V xưng danh với U thông qua việc chứng tỏ những hiểu biết của mình về khóa K mà chỉ có V mới xác định được. Để thuận tiện cho việc trình bày ta sẽ sử dụng RSA với giá trị mũ công khai e = 3, mặc dù trong thực tế người ta thường dùng Rabin vì tính hiệu quả của nó.

Ký hiệu EK(y) là bản mã khóa đối xứng của y bằng thuật toán E sử dụng khóa K, PX(y) tương ứng với bản mã bằng khóa công khai của X trên y, ngược lại SX(y) là

kết quả giải mã bằng khóa bí mật của X trên y. IX là xâu bit xác định danh tính của X. h(y) là giá trị băm y.

Ủy quyền T chọn số nguyên tố nS, phần tử sinh α nhóm nhân modulo nS, số nguyên tố p, q, công khai n = pq và eT = 3, giữ bí mật dT thỏa mãn eTdT ≡1 mod (p-1)(q-1). Mỗi bên (U và V) được T gửi khóa công khai có xác thực và một xâu xác định danh tính nT,(nS,α), IX.

Ta quy ước bên U là bên yếu hơn. Hoạt động của giao thức được mô tả như trong Hình 2.12 dưới đây:

Hình 2.12 Giao thức Beller-Yacobi 4-lần qua

Trước khi thực hiện giao thức U lấy ngẫu nhiên số a thỏa mãn

2

1≤anS − , tính a S

U α modn

ν = là chữ ký ElGamal rồi chuyển νU cho T, T xây dựng và gửi chứng chỉ cho U: certU =(IUU,GU) bao gồm danh tính IU của U, khóa công khai ký ElGamal, chữ ký RSA GU của T trên các

thông tin đó: d T U U T U S I h IU U n G = ( ,ν )=( ( ,ν ) T mod .

1. U lấy ngẫu nhiên x sao cho 1≤ xnS −2 và giữ bí mật, rồi tính:

S xmodn α ϑ= ; −1mod( −1) S n x ; avmod(nS −1). (x phải được lấy mới trong mỗi lần ký đảm bảo tính an toàn của ElGamal, và nguyên tố cùng nhau với nS −1 để tồn tại x−1). 2. V gửi U ) , , ( V V V V I G cert = ν (1) 3. U kiểm tra tính xác thực của nVbằng: h(IV,nV)=GV3 modnT. U lấy

khóa ngẫu nhiên K sao cho 1<K <nV −1 và gửi cho V

Y = PV(K)=K3modnV (2) 4. V giải mã thu được K = SV(Y) = YdV mod nV sau đó lấy ngẫu nhiên m

∈ Z, nối thêm vào m t (t≈50) số 0, mã hóa bằng khóa K, rồi gửi cho U { }0 ) || ( t K m E (3)

5. U nhận được gói tin thì giải mã ra rồi kiểm tra xem nó có dạng t bit 0 ở cuối hay không; nếu đúng, U biết là V có khóa K. U tạo ra M = m||IV, tính w≡(Maϑ)x−1 mod nS-1, rồi gửi cho V ) || ) , (( U K w cert E ϑ (4)

(Ở đây (ϑ,w) là chữ ký theo sơ đồ ElGamal của U trên M, và

) , ,

( U U U

U I G

cert = ν . Danh tính IU trong M được dùng để loại trừ khả năng bị tấn công giữa dòng.) 6. V giải mã văn bản nhận được từ U, kiểm tra lại tính xác thực của rU: T U U U G n I

h( ,ν )= 3 mod , V xây dựng được M = m || IV với m đã lấy ở trên cùng với định danh của nó, sau đó kiểm thử chữ ký của U trên m bằng cách kiểm tra: αM ≡νUϑϑWmodnS. Nếu đúng, V chấp nhận U với danh tính IU chính là bên sinh ra K.

Vn đề an toàn khóa ca giao thc

Trong giao thức mỗi bên phải thực hiện ít nhất một phép toán mã hóa với khóa bí mật chứng tỏ sự hiểu biết của mình về khóa, và một hoặc hai phép toán với khóa công khai (kiểm thử danh tính) vì thế mà cho phép xác thực lẫn nhau.

2.4.3.2. Giao thức Beller-Yacobi 2 - lần qua

Giao thc

Thay đổi giao thức Beller-Yacobi 4-lần qua ta sẽ được giao thức 2-lần qua như trong Hình 2.13 dưới đây:

Vn đề an toàn khóa ca giao thc

So với Beller-Yacobi 4-lần qua khả năng xác thực của giao thức 2-lần qua có yếu hơn, nhưng không đáng kể: V nhận được xác thực về U và khóa K chỉ có U biết, trong khi U cũng chắc chắn rằng khóa K chỉ có V biết. Nếu muốn U cũng nhận được xác thực về V thì giao thức cần thêm vào một gói tin nữa.

Ởđây có thể sẽ xảy ra hiệu ứng không mong muốn nếu lấy khóa phiên K = t, khi đó U không thể tác động lên giá trị khóa, giao thức sẽ trở thành thỏa thuận khóa. Vì thế thay vào đó U sẽ chọn ngẫu nhiên x, lấy K = x, rồi mã hóa x gửi đi cùng w.

Hình 2.13 Giao thức Beller-Yacobi 2-lần qua

1. V chọn ngẫu nhiên m rồi gửi m, certV =(IVV,GV) cho U

2. U xây dựng chữ ký ElGamal (t, w) trên M = (m, IV), lấy t làm khóa phiên K = t rồi gửi cho V: PV(t), Er(certU || w).

3. V giải mã gói tin U gửi cho để thu được t (= K), sau đó lấy giá trị này để giải mã certU và w, rồi kiểm thử certU và chữ ký (t, w) trên M = m||IV.

Chương 3 - KỸ THUẬT QUẢN TRỊ VÀ KIỂM TRA VIỆC SỬ DỤNG KHÓA 3.1.Quản trị khóa

Quan hệ khóa là trạng thái trong đó các thực thể truyền thông chia sẻ dữ liệu chung (chất liệu khóa) để làm thuận tiện cho các kỹ thuật mã hóa. Dữ liệu này có thể các khóa công khai, bí mật, các giá trị khởi tạo, các tham số công khai khác.

Quản trị khóa là các kỹ thuật hay thủ tục hỗ trợ cho việc thiết lập và duy trì một quan hệ khóa giữa các bên được phép. Cụ thể là các công việc:

1. tạo người dùng hệ thống mới trong vùng; 2. tạo sinh, phân phối, cài đặt chất liệu khóa; 3. điều phối việc sử dụng chất liệu khóa; 4. cập nhật, thu hồi, huỷ bỏ chất liệu khóa; 5. lưu giữ, sao lưu, phục hồi chất liệu khóa.

Lý do phi qun tr khóa

Quản trị khóa đóng vai trò quan trọng trong hệ thống mã hóa, nó là nền tảng để thực hiện được các kỹ thuật nhận thực thực thể, xác nhận nguồn gốc dữ liệu, toàn vẹn dữ liệu, và chữ ký điện tử một cách an toàn. Nếu hệ thống có sử dụng các kỹ thuật quản trị khóa một cách hợp lý, nó có thể kháng lại các mối đe dọa sau:

1. lộ khóa bí mật

2. không còn đảm bảo tính xác thực của khóa bí mật & công khai. Tính xác thực ởđây được xem là những hiểu biết và khả năng kiểm thửđược định danh của bên nhận đối với bên gửi.

3. thực hiện những thao tác không được phép trên khóa công khai & khóa bí mật.

3.2.Các kỹ thuật quản trị

Khóa bí mật mà ta nói đến ởđây là các khóa của hệ mã khóa đối xứng và các khóa riêng trong hệ mã khóa công khai. Trong phần này chúng ta sẽ nghiên cứu hai kỹ thuật phân phối khóa bí mật phổ biến nhất một dựa trên việc phân lớp sử dụng khóa, một dựa trên chứng chỉ và Trung tâm chuyển khóa.

3.2.1.1. Phân lp khóa

Người ta phân loại khóa dựa trên mức độ quan trọng của chúng như sau:

1. khóa chính (master key): khóa ở mức cao nhất trong cây phân cấp, thông thường không bảo vệ bằng mã hóa. Chúng thường được phân phối bằng tay, hoặc thông qua các thủ tục, các phần cứng vật lý.

2. khóa mã hóa khóa (key - encrypting keys): khóa đối xứng hay các khóa công khai dùng để chuyển vận hay lưu giữ các khóa khác, sự an toàn của các khóa đó phụ thuộc vào chúng.

3. khóa d liu (data keys): dùng trong các phép toán mã hóa (hay xác thực) trên dữ liệu. Chúng có thể là các khóa phiên (trong hệ mã đối xứng). Khóa riêng trong sơ đồ chữ ký cũng có thể là khóa dữ liệu (tuy nhiên loại này thường được dùng trong thời gian dài).

Khóa ở mức cao được sử dụng để bảo vệ khóa ở mức thấp hơn. Mục đích chính của việc làm này để tăng thêm độ khó cho các tấn công, và hạn chế bớt thiệt hại khi có khóa nào đó bị lộ. Chẳng hạn khi khóa mã hóa khóa bị lộ, tệ hơn nữa là khóa chính thì sẽảnh hưởng tới sự an toàn của tất cả các khóa ở mức dưới, nhưng khi khóa mã hóa dữ liệu nào đó bị lộ thì không ảnh hưởng tới các khóa ở mức trên.

Ngoài ra người ta có thể phân chia khóa dựa trên khoảng thời gian còn hợp lệ của chúng thành khóa vĩnh cửu (dùng mãi mãi) và khóa phiên (chỉ dùng trong một phiên giao dịch hoặc trong khoảng thời gian nhất định). Khóa vĩnh cửu thường được dùng trong những ứng dụng lưu trữ dữ liệu, còn khóa phiên thường được dùng trong những ứng dụng truyền thông. Khóa dùng lâu dài chủ yếu được dùng để bảo vệ khóa phiên.

3.2.1.2. Chng ch và Trung tâm chuyn khóa

ƒ Trung tâm chuyển khóa KTC

Trung tâm chuyển khóa KTC (Key Translation Center) T là một phục vụ được ủy quyền cho phép hai bên U và V truyền thông an toàn thông qua việc sử dụng các giá trị khóa KUT và KVTđã thống nhất trước với T. Nếu U muốn gửi cho V văn bản M thì anh ta có thể sử dụng giao thức có sự tham gia của KTC như trong Hình 3.1 dưới đây. Trong trường hợp văn bản M chính là khóa K cần chuyển cho nhau, thì giao thức có thể được coi là giao thức chuyển khóa; vì thế KTC được gọi là trung tâm chuyển khóa hay văn bản.

Trong giao thức E là thuật toán mã khóa đối xứng. Giá trị M là văn bản U muốn gửi cho V. Trước khi thực hiện giao thức U chia sẻ KUT với T, còn V là KVT.

Với giao thức trên thì chỉ một trong hai U hoặc V là truyền thông trực tiếp với T. Ngoài ra có thể thay đổi giao thức đi bằng cách U gửi văn bản cho T, sau đó T sẽ

Hình 3.1 Giao thức chuyển văn bản có KTC

1. U mã hóa M (cùng với danh tính của bên nhận V) bằng KUT, rồi gửi cho T cùng với danh tính của mình (cho phép T kiểm tra KUT)

U→T: U,E (V ||M)

UT

K (1)

2. Sau khi giải mã văn bản, T xác định được đây là thông tin U cần gửi cho V, T sẽ tìm khóa KVT của V, mã hóa văn bản M bằng khóa này rồi gửi cho V.

T trả lại văn bản đã được mã hóa bằng khóa của V cho U (hoặc có thể gửi tới một site công cộng) để U gửi cho V. (hoặc có thể trực tiếp gửi cho V) T→U: E (M ||U) VT K (2) U→V: E (M ||V) VT K (3)

mã hóa và trực tiếp gửi cho V. Nó được gọi là “chuyển văn bản” vì T chỉ làm nhiệm vụ chuyển M mà U muốn gửi cho V.

Tính an toàn ca giao thc:

- Danh tính mà (1) sử dụng khóa công khai của U để mã hóa, được đưa vào trong (2) nhằm chỉ rõ nguồn gốc dữ liệu tránh tấn công tráo khóa.

- Thứ tự của hai trường danh tính và văn bản trong (1) và (2) ngược nhau nhằm không cho kẻ tấn công dùng lại (1) để gửi trở lại U.

- Tấn công dùng lại văn bản hoàn toàn bị loại bỏ khi ta sử dụng thêm tem thời gian hoặc số tuần tự. Giao thức trên không cung cấp xác thực thực thể.

- Nên sử dụng kỹ thuật kiểm tra tính toàn vẹn dữ liệu trên bản mã để T có thể phát hiện được sự giả mạo danh tính U trong (1), cũng như trong (2) và (3).

- Có thể sử dụng mã hóa CBC [6] để ngăn ngừa kiểu tấn công chọn bản rõ trên khóa KVT trong (2), và thêm vào phần đầu một số ngẫu nhiên.

ƒ Chứng chỉ khóa đối xứng

Nếu KTC không muốn luôn luôn phải duy trì CSDL các bí mật của người dùng (có khi phải có thêm các bản sao trên nhiều phục vụ khác nhau) và thực hiện các giao dịch truy xuất tới các giá trịđó khi có yêu cầu chuyển khóa thì sử dụng chứng chỉ là một giải pháp thay thế.

Giờ đây khóa của mỗi cá thể V, KVT được mã hóa bằng khóa KT chỉ có T biết khi đưa vào trong chứng chỉ EK (KVT ||V)

T . Ngoài ra chứng chỉ cũng có thể thêm khoảng thời gian còn hợp lệ của nó. Khi đó (1) trong Giao thức 3.1 sẽđược thay bằng

U→T: SCertU EK V M SCertV UT( || ),

, (1)

trong đó SCertU =EKT(KUT ||U), SCertV = EKV(KVT ||V)

Hệ thống sẽ có một CSDL công khai gồm nhiều mục dữ liệu, mỗi mục có tên người dùng và chứng chỉ tương ứng của người đó. Để xây dựng được (1), U lấy chứng chỉ

của V và đưa vào văn bản gửi cho T cùng với thông tin về mình. T sử dụng khóa KT của mình thu được KUT và KVT từ chứng chỉ của U, V. Ngoài ra T còn phải thử lại rằng người dùng V mà U muốn truyền thông mô tả trong E (V ||M)

UT

K có đúng là định danh trong SCertV hay không.

3.2.2Kỹ thuật phân phối khóa công khai

Các hệ mã khóa công khai chúng ta đã biết yêu cầu mỗi người phải có một giá trị khóa 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 tránh được tấn công giữa dòng nhưđã chỉ ra trong chương 1 ta có thể sử dụng một trong các kỹ thuật dưới đây:

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 trao đổ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ệ đóng và nhỏ.

Nhược điểm lớn nhất của phương pháp này là rất bất tiện khi cần một giá trị khóa để cho người dùng mới tham gia vào hệ thống. Lý do chính là tính không tựđộng của hệ thống. Hơn nữa để sử dụng phương pháp này phải có thêm chi phí để duy trì những kênh truyền tin cậy.

Truy nhập trực tiếp tới các tệp dùng chung (đăng ký khóa công khai). Sử dụng một CSDL công khai lưu trữ tên và khóa công khai được xác thực của mỗi người dùng hệ thống. Truy nhập từ xa qua 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 nếu muốn kháng lại những tấn công chủđộng phải dùng những kênh truyền tin cậy. Phương pháp này thường sử dụng cây xác thực để xác thực các giá trị công khai đó.

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

Trở ngại chính của phương pháp này là phục vụ luôn luôn phải trực tuyến (on- line), điều này có thể dẫn đến tình trạng thắt nút cổ chai. Ngoài ra phương pháp còn yêu cầu đường truyền thông nối giữa phục vụ với các bên, và giữa hai bên với nhau.

Sử dụng phục vụ uỷ quyền ngoại tuyến & chứng chỉ. Trong trường hợp này phục vụđược gọi là CA (uỷ quyền chứng chỉ). Mỗi cá thể U 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 (để kiểm thử chứng chỉ của người khác). CA sẽ chứng nhận (công chứng) khóa công khai của U rồi ràng buộc giá trị này với xâu xác định danh tính của U, đó sẽ là nội dung chứng chỉ của U.

Sử dụng hệ xác thực ẩn các tham số hệ thống.Đó là các hệ dựa trên danh tính có

Một phần của tài liệu tìm hiểu các giao thức tạo lập khóa bí mật và các kỹ thuật quản trị khóa (Trang 42 - 78)

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

(78 trang)