CƠ SỞ LÝ THUYẾT
SỐ HỌC CÁC SỐ NGUYÊN
Ta ký hiệu Z là tập các số nguyên và Z + là tập các số nguyên không âm Trong mục này ta sẽ nhắc lại một số kiến thức về số học của các số nguyên cần cho việc trình bày lý thuyết mật mã
1.1.1 Tính chia hết của các số nguyên
Tập Z là đóng kín đối với các phép cộng, trừ và nhân, nhưng không đóng kín đối với phép chia Vì vậy khi một số nguyên a chia cho một số nguyên b được thương là một số nguyên q có một ý nghĩa rất đặc biệt, khi đó ta nói a chia hết cho b, a là bội số của b, b là ước số của a, và ký hiệu là b|a
Dễ thấy rằng 1 là ước số của mọi số nguyên, 0 là bội số của mọi số nguyên, và moi số nguyên a là ước số, đồng thời là bội số của chính nó
Số nguyên d được gọi là ước số chung của hai số nguyên a và b nếu d|a và d|b Số nguyên d được gọi là ước số chung lớn nhất của a và b nếu d > 0, d là ước số chung của a và b, và mọi ước số chung của a và b đều là ước số của d Ta ký hiệu ước số chung lớn nhất của a và b là gcd(a, b)
Dễ thấy rằng với mọi số nguyên dương a ta có gcd(a, 0) = a, ta cũng quy ước là gcd(0, 0) = 0
Số nguyên a > 1 được gọi là số nguyên tố nếu a không có ước số nào ngoài 1 và chính a Số a là hợp số nếu không phải là nguyên tố
Số nguyên n > 1 bất kỳ đều có thể viết dưới dạng: n = p 1 α1 p 2 α2 … pk αk
Trong đó p 1 , p 2 , …, pk là các số nguyên tố khác nhau, α 1 , α2, …, αk là các số mũ nguyên dương Nếu không kể thứ tự của các thừa số nguyên tố thì dạng biểu diễn đó là duy nhất, ta gọi đó là dạng khai triển chính tắc của n Định lý 1.1
Nếu a = bq + r thì gcd(a, b) = gcd(b, r)
Số nguyên m được gọi là bội số chung của a và b nếu m chia hết cho cả a và b Số m được gọi là bội số chung nhỏ nhất của a và b ký hiệu là lcm(a, b), nếu m là bội số chung của a và b, và mọi bội số chung của a và b đều là bội của m
Với mọi số nguyên dương a và b ta có quan hệ Lcm(a, b).gcd(a, b) = a.b
Thuật toán Euclide tìm ước số chung lớn nhất:
INPUT: hai số nguyên không âm a và b, với a ≥ b
OUTPUT: ước số chung lớn nhất của a và b
Ta biết rằng nếu gcd(a, b) = d, thì phương trình bất định a.x + b.y = d
Có nghiệm nguyên (x, y), và một nghiệm nguyên như thế có thể tìm được bởi thuật toán Euclide mở rộng như sau:
INPUT: hai số nguyên không âm a và b với a ≥ b
OUTPUT: d = gcd(a, b) và hai số x, y sao cho a.x + b.y = d
1 Nếu b = 0 thì đặt d ← a, x ← 1, y ← 0, và cho ra (d, x, y)
3 While b > 0 do Begin q := a div b ; r :=a mod b ; x := x 2 – qx 1 ; y := y 2 – qy 1 ; a := b ; b := r ; x 2 := x 1 ; x 1 := x ; y 2 := y 1 ; y 1 :=y ; End ;
4 Đặt d := a, x := x2, y := y 2 , và cho ra kết quả (d, x, y)
1.1.2 Đồng dư và phương trình đồng dư tuyến tính
Cho n là một số nguyên dương Ta nói hai số nguyên a và b là đồng dư với nhau theo modul n, và viết a ≡ b (mod n), nếu n|(a – b)
Cho a Zn Số nguyên x Zn được gọi là nghịch đảo của a theo mod n, nếu a.x ≡ 1 (mod n) Khi đó ta nói a là khả nghịch và ký hiệu x là a -1 mod n
Ta định nghĩa phép chia trong Zn như sau:
Phép chia chỉ thực hiện được khi b là khả nghịch theo mod n
* Phương trình đồng dư tuyến tính :
Phương trình đồng dư tuyến tính có dạng : a x ≡ b (mod n)
Trong đó a, b, n là các số nguyên, x là ẩn số
Phương trình đó có nghiệm khi và chỉ khi d = gcd(a, n)|b Khi đó có đúng d nghiệm theo mod n
Ta xét hệ các phương trình đồng dư tuyến tính : x 1 ≡ a1 (mod n 1 ) x 2 ≡ a2 (mod n 2 ) ……… x k ≡ ak (mod n k )
Ký hiệu: n = n 1 n 2 …nk, N i = n / n i Định lý 1.2 (định lý số dƣ Trung Quốc)
Giả sử các số nguyên n 1 , n 2 …, n k là từng cặp nguyên tố với nhau Khi đó, hệ phương trình đồng dư tuyến tính trên có một nghiệm duy nhất theo mod n là : x = ∑ i=1 k a i N i M i mod n, Trong đó Mi = N i -1 mod n i (Có M i vì N i và n i nguyên tố với nhau)
1) Tập thặng dư thu gọn
Tập Zn = {0, 1, 2, …, n - 1} thường được gọi là tập các thặng dư đầy đủ theo mod n, vì mọi số nguyên đều có thể tìm được trong Zn một số đồng dư với mình theo mod n Tập Zn đóng đối với các phép cộng, trừ và nhân, nhưng không đóng với phép chia
Tập Z * n = { a Z n : gcd(a, n) = 1}, tức Z * n là tập con của Z n bao gồm tất cả các phần tử nguyên tố với n Tập đó được gọi là tập các thặng dư thu gọn theo mod n
Mọi số nguyên nguyên tố với n đều có thể tìm thấy trong Z * n một đại diện đồng dư với mình theo mod n Chú ý rằng nếu p là số nguyên tố thì Z*p {1, 2, …, p – 1}
Tập Z * n lập thành nhóm con đối với phép nhân của Z n , vì trong Z * n phép chia theo mod n bao giờ cũng thực hiện được, Gọi Z * n là nhóm nhân của
2) Khái niệm cấp của một phần tử
Ta gọi số các phần tử trong một nhóm là cấp của nhóm đó Ký hiệu θ(n) là số các số nguyên dương bé hơn n và nguyên tố với n Như vậy Z * n có cấp là θ(n) Nếu p là số nguyên tố thì nhóm Z * p có cấp là p – 1
Ta nói phần tử g Z * n có cấp m, nếu m là số nguyên dương bé nhất sao cho g m = 1 trong Z * n
Theo một định lý trong Đại số, ta có m | θ(n) Vì vậy với mọi b Z * n ta luôn có b θ(n) ≡ 1 mod n
Nếu p là số nguyên tố, thì do θ(p) = p – 1, ta có với mọi b Z * p b p-1 ≡ 1 (mod p) Nếu b có cấp p – 1, thì các phần tử b, b 2 , …, b p-1 đều khác nhau và theo mod p, chúng lập thành Z * p Khi đó ta nói Z * p là nhóm cyclic và b là phần tử sinh, hay phần tử nguyên thuỷ của nhóm đó
Người ta đã chứng minh được tính chất sau:
1 Với mọi số nguyên tố p, Z * p là nhóm cyclic, có θ(p-1) phần tử nguyên thuỷ
p2 α2… ps αs là khai triển chính tắc của p – 1, và nếu: a p-1/p1 ≡ 1 (mod p), …, a p-1/ps ≡ 1 (mod p), thì a là phần tử nguyên thuỷ của Z * p theo mod p
3 Nếu g là phần tử nguyên thuỷ theo mod p, thì β = g i mod p với mọi i mà gcd(i, p – 1) = 1, cũng là phần tử nguyên thuỷ theo mod p.
XÁC SUẤT VÀ THUẬT TOÁN XÁC SUẤT
Ta xét tập hợp Ω, được gọi là không gian các sự kiện sơ cấp (hay không gian mẫu) Các phần tử của Ω có thể xem như các kết quả có thể có (và loại trừ lẫn nhau) của một thực nghiệm nào đó Ta chỉ xét các không gian rời rạc, hữu hạn, Ω = {s1, s2, …, sn}
Một phân bố xác suất P trên Ω được định nghĩa là tập các số thực không âm P = {p1, p 2 , …, pn} có tổng ∑pi = 1 Số p i được gọi là xác suất của sự kiện sơ cấp si
Một tập con L của Ω được gọi là một sự kiện Xác suất của sự kiện L được định nghĩa bởi p(L) = ∑ s L p (s)
1.2.2.Tính bí mật hoàn toàn của một hệ mật mã
Năm 1949, C Shannon công bố công trình Lý thuyết truyền thông của các hệ bí mật, đưa ra nhiều quan niệm làm cơ sở cho việc đánh giá tính bí mật của các hệ mật mã, trong đó có khái niệm tính bí mật hoàn toàn
Theo Shannon một hệ mật mã là bí mật hoàn toàn, nếu việc biết xác suất bản rõ là như nhau dù biết hay không biết bản mã, hay nói cách khác là việc biết bản mã cũng không đem lại thêm bất kỳ thông tin gì về bản rõ
Gọi P là tập không gian các bản rõ, C là tập không gian các bản mã, K là tập không gian các khóa, E là giải thuật mã hóa, D là giải thuật giải mã Định lý 1.3
Giả sử S = (P, C, K, E, D) là hệ mã với điều kiện |P| = |C| = |K|, tức các tập P, C, K có số các phần tử bằng nhau
Hệ mã S là bí mật hoàn toàn, nếu và chỉ nếu mỗi khoá k K được dùng với xác xuất bằng nhau là 1/|K|, và với mọi x P, y C có khoá duy nhất k K sao cho E k (x) = y
Thuật toán xác suất là thuật toán mà cùng với dữ liệu đầu vào, ta bổ sung thêm giá trị của một đại lượng ngẫu nhiên tương ứng nào đó
Thuật toán xác suất được chia làm hai loại: thuật toán Monte Carlo và thuật toán Las Vegas Thuật toán Monte Carlo luôn kết thúc với kết quả có hoặc không đối với mọi dữ liệu đầu vào bất kỳ Thuật toán Las Vegas tuy cũng kết thúc với mọi dữ liệu, nhưng có thể kết thúc với một thông báo không có trả lời có hoặc không.
ĐỘ PHỨC TẠP TÍNH TOÁN
Độ phức tạp tính toán (về không gian hay về thời gian) của một tiến trình tính toán là số ô nhớ được dùng hay số các phép toán sơ cấp được thực hiện trong tiến trình tính toán đó Độ phức tạp tính toán (trong trường hợp xấu nhất) của thuật toán A được hiểu là một hàm số fA(n) sao cho với mỗi số n, fA(n) là số ô nhớ, hay số phép toán sơ cấp tối đa mà A cần để thực hiện tiến trình tính toán của mình trên các dữ liệu vào có độ dài ≤ n
Thuật toán A có độ phức tạp thời gian đa thức, nếu có một đa thức P(n) sao cho với mọi n đủ lớn ta có fA(n) ≤ P(n), trong đó fA(n) là độ phức tạp tính toán theo thời gian của A
Về sau khi nói đến các bài toán, ta hiểu đó là các bài toán quyết định, mỗi bài toán P như vậy được xác định bởi:
Một tập các dữ liệu vào I
Một câu hỏi Q trên các dữ liệu vào, sao cho với mỗi dữ liệu vào x I, câu hỏi Q có một trả lời đúng hoặc sai
Ta nói bài toán quyết định P là giải được, nếu có thuật toán để giải nó, tức là thuật toán làm việc có kết thúc trên mọi dữ liệu vào của bài toán, và cho kết quả đúng hoặc sai tuỳ theo câu hỏi Q trên dữ liệu đó có trả lời đúng hoặc sai Bài toán P là giải được trong thời gian đa thức, nếu có thuật toán giải nó với độ phức tạp thời gian đa thức
1.3.2 Hàm một phía và Hàm một phía có cửa sập
Hàm số y = f(x) được gọi là hàm một phía (one – way function), nếu việc tính thuận từ x ra y là “dễ”, nhưng việc tính ngược từ y tìm lại x là “khó”
Tính từ “dễ” và “khó” không có các định nghĩa chính xác, mà được hiểu một cách thực hành, chẳng hạn “dễ” là có thể tính được trong thời gian đa thức (với đa thức bậc thấp), “khó” là không tính được trong thời gian đa thức
Cho đến nay việc tìm và chứng minh một hàm số nào đó là không tính được trong thời gian đa thức còn là việc khó khăn, cho nên “khó” thường chỉ được hiểu là chưa tìm được thuật toán tính nó trong thời gian đa thức Với cách hiểu tương đối như vậy thì các bài toán về phân tích thừa số nguyên tố, logarit rời rạc, … có thể được xem như là các hàm một phía
Hàm y = f(x) được gọi là hàm một phía có cửa sập (trapdoor one-way function), nếu việc tính thuận từ x ra y là “dễ”, việc tính ngược từ y tìm lại x là “khó”, nhưng có cửa sập z để với sự trợ giúp của nó, thì việc tính x từ y lại trở thành “dễ”.
MỘT SỐ PHƯƠNG PHÁP THÁM MÃ
PHƯƠNG PHÁP THÁM MÃ
2.1.1 Thám mã chỉ biết bản mã
Thám mã chỉ biết bản mã (Ciphertext only attack) (COA) là mô hình thám mã, trong đó giả sử rằng thám mã chỉ biết duy nhất tập các bản mã
Xảy ra trường hợp này khi (như thời ngày xưa) bắt được kẻ đưa thư, hoặc (thời ngày nay) chặn được thông tin truyền trên mạng
Thám mã là thành công hoàn toàn nếu như các bản rõ tương ứng có thể được suy ra, hay tốt hơn là có thể tìm được khoá giải mã Khả năng để tìm được bất kì thông tin gì về bản rõ cơ sở cũng được xem là thành công
Những hệ mã hoá trước đây thực hiện bằng bút và giấy, thường bị phá bởi việc dùng bản mã đơn độc Đối với hệ mã cổ điển đơn giản, nhà lập mã đã phát triển kỹ thuật thống kê cho việc tấn công bản mã như “phân tích tần số”(frequency analysis)
Các hệ mã hiện đại cố gắng cung cấp khả năng bảo vệ chống lại tấn công dạng này, bằng cách sử dụng giả thuyết giải bản mã tương ứng với việc giải bài toán “khó”, quá trình kiểm tra khả năng của hệ mã mới thường kéo dài nhiều năm, bao gồm việc kiểm tra toàn bộ mọi khía cạnh của một số lượng lớn các bản mã từ bất kì một sự thống kê ngẫu nhiên nào
Ví dụ như hệ mã RSA, để tìm ra bản rõ từ bản mã thì phải giải bài toán
“khó” là bài toán RSA
2.1.2 Thám mã biết bản rõ
Thám mã biết bản rõ (Known plaintext attack) (KPA) là một mô hình tấn công để giải mã, trong đó thám mã biết cả bản rõ và bản mã, và tự do dùng chúng để tìm kiếm những thông tin khác về hệ mã, đặc biệt là khoá bí mật
Tuy nhiên bản mã và bản rõ là biết được một cách ngẫu nhiên ngoài ý muốn của thám mã, ví dụ thông tin được cắt thành nhiều bản rõ để mã hoá thành nhiều bản mã tương ứng, nhiều người đưa thư khác nhau mang đến một đích nào đó, thám mã vô tình bắt được kẻ đưa thư cầm một bản mã và một bản rõ tương ứng với nó, sự bắt được này là hoàn toàn vô tình, thám mã không thể lựa chọn trước được
Nhiều hệ mã hoá cổ điển dễ bị tấn công đối với thám mã loại này Ví dụ như với hệ mã chuyển dịch (shift cipher) (hệ mã Caesar) , nếu biết một cặp bản mã và bản rõ bất kỳ, tức là biết được khoảng chuyển dịch hay sẽ biết được khoá K, lúc đó ta sẽ giải mã được toàn bộ hệ mã
Những file lưu trữ dạng ZIP cũng dễ bị tấn công theo kiểu này Ví dụ, thám mã với file Zip đã được mã hoá chỉ cần biết một file Zip chưa mã hoá (được hiểu là biết bản rõ (Known plaintext)), sau đó dùng một số phần mềm sẵn có, họ có thể tính ngay được khoá để giải mã toàn bộ Để tìm được file chưa mã hoá này, thám mã có thể tìm kiếm trên Website một file thích hợp, tìm kiếm nó từ một kho lưu trữ, hoặc cố gắng xây dựng lại một file rõ (plaintext file) với những tri thức của tên file từ kho lưu trữ đã được mã hoá
2.1.3 Thám mã với bản rõ đƣợc chọn
Thám mã với bản rõ được chọn (Chosen plaintext attack) (CPA) là mô hình tấn công để giải mã, trong đó giả sử rằng thám mã có khả năng chọn một bản rõ tuỳ ý và biết bản mã tương ứng Điều này có thể xảy ra khi thám mã chiếm được tạm thời máy lập mã, với hệ mã hoá công khai điều này là hiển nhiên, vì biết được khoá công khai thì thám mã có thể mã hoá bất kỳ bản rõ nào mà họ chọn Đối với các hệ mã đối xứng thì như mô hình trên, thám mã có “quyền” bắt được bất kỳ kẻ đưa thư nào mà họ muốn, ta đừng hiểu theo nghĩa là thám mã bắt tất cả các kẻ đưa thư có cặp bản rõ bản mã tương ứng, hợp lại sẽ được bản rõ đầy đủ, mà phải hiểu là nếu thám mã có một bản rõ bất kỳ nào đó, thì có thể “bắt” được kẻ đưa thư mang bản mã tương ứng với bản rõ đó
Ta thấy thám mã ở trường hợp này có “năng lực mạnh” hơn hẳn thám mã ở mục trên, vì ở trên chỉ biết được cặp bản rõ bản mã một cách ngẫu nhiên, còn ở đây có thể biết được do thám mã chọn trước
Một cách hình thức, thám mã có một plaintext checking oracle (máy tư vấn kiểm tra bản rõ) nhận đầu vào là cặp (m, c) và trả lời xem c có phải là bản mã của m không Trong trường hợp xấu nhất, thám mã với bản rõ được chọn có thể khám phá ra khoá bí mật của hệ mã
Thám mã với bản rõ được chọn trở nên rất quan trọng trong các hệ mã hoá công khai, tại vì các khoá mã hoá được công bố và thám mã có thể mã hoá bất kì bản rõ nào mà họ chọn
Bất kì hệ mã nào an toàn đối với “thám mã với bản rõ được chọn” , thì cũng an toàn với “thám mã biết bản rõ” (Known plaintext attack) và “thám mã chỉ biết bản mã” (Ciphertext only attack), đây là vấn đề an toàn kéo theo
Có hai kiểu phân biệt “thám mã với bản rõ được chọn”:
“Thám mã với bản rõ được chọn” theo khối, trong đó thám mã chọn tất cả các bản rõ trước, rồi sau đó mới mã hoá
“Thám mã với bản rõ được chọn” thích hợp, trong đó thám mã tạo ra một chuỗi các bản rõ (queries) liên quan lẫn nhau, việc chọn các bản rõ tiếp theo dựa trên thông tin về những mã hoá trước đó
Những giải thuật mã hoá khoá công khai không ngẫu nhiên (tất định) (ví dụ như RSA dùng thuật toán mã hoá tất định, một bản rõ có duy nhất một bản mã), dễ bị xâm phạm bởi các kiểu thám mã “từ điển” đơn giản Đó là thám mã xây dựng một bảng các bản rõ và bản mã tương ứng có thể, biết bản mã để tìm ra bản rõ tương ứng, thám mã chỉ cần tìm kiếm trên bảng bản mã, ánh xạ sang bản rõ tương ứng, tất nhiên là với yêu cầu rằng không gian của các bản rõ là “đủ nhỏ”, hoặc thám mã có thể đoán trước được tập bản rõ nằm trong khoảng đủ nhỏ nào, mà người lập mã sẽ sử dụng
Vì vậy việc định nghĩa bí mật hoàn toàn cho hệ mã hoá công khai dưới
“sự thám mã với bản rõ được chọn” yêu cầu hệ mã phải là hệ mã xác xuất (ví dụ mã hoá ngẫu nhiên) ([13])
2.1.4 Thám mã với bản mã đƣợc chọn 2.1.4.1 Kiểu tấn công CCA
TÍNH AN TOÀN CỦA HỆ MÃ
2.2.1 An toàn một chiều (One – Wayness ) Đây là yêu cầu cơ bản về tính an toàn của hệ mã hóa khóa công khai
Khi Bob dùng khóa công khai của Alice mã hóa thông tin của mình và gửi cho Alice, thám mã bằng cách nào đó lấy được bản mã, thì cũng “khó” thể giải được bản mã (việc giải bản mã là không thể thực hiện được trong thời gian chấp nhận), nếu không biết khóa bí mật mà Alice nắm giữ
Một cách hình thức với bất kỳ thám mã A trong việc tìm ra bản rõ từ bản mã cho trước, mà không có khóa bí mật, thì xác suất thành công là “không đáng kể” trên không gian xác xuất M , trong đó M là không gian các bản rõ (message) và là không gian những thành phần ngẫu nhiên r
Ký hiệu Succ ow (A) là xác xuất thành công của kẻ thám mã A sử dụng giải thuật thời gian đa thức để tìm ra bản rõ m
Gk là giải thuật tạo cặp khóa công khai và bí mật (pk và sk), có đầu vào là chuỗi z {0,1} k , có nghĩa z là chuỗi có độ dài k bit, mỗi bit có thể là bit 0 hoặc bit 1
E là giải thuật mã hóa, E (m ) p k là bản mã của m A là kẻ thám mã dùng giải thuật thời gian đa thức có hai đầu vào là khóa công khai pk và bản mã E (m ) p k
Succ ow (A) = Pr[G k (z) (p k , s k ), M R m: A(p k , E (m ) p k ) = m] є , trong đó є là lượng không đáng kể
Nếu giải thuật mã hóa là đơn định (một đầu vào có duy nhất một đầu ra), thì = Nếu = thì để đảm bảo tính an toàn, không gian M phải lớn Đôi khi M lớn, nhưng nếu thám mã đoán trước được tần xuất của không gian con trong M, hay được dùng làm bản rõ, thì cũng dễ gây nguy hiểm
Thực tế những hệ mã có = (không phải là hệ mã xác xuất), thì có tính an toàn không cao, và ít được dùng trong thực tế
2.2.2 An toàn ngữ nghĩa (Semantic Security)
Một cách không hình thức, một hệ thống được gọi là an toàn ngữ nghĩa (Semantic Security), nếu bất cứ khi nào thám mã có thể tính toán bản rõ với bản mã cho trước, thì cũng có thể làm việc đó mà không cần biết trước bản mã Nói cách khác, việc biết bản mã cũng không đưa lại dù chỉ là một bit thông tin cho thám mã
Semantic Security cũng tương đương với khái niệm an toàn đa thức (Polynomial Security)
An toàn đa thức ([13]) có nghĩa là cho trước bản mã, không thể tính toán được bất cứ thứ gì về bản rõ trong thời gian đa thức
Gọi f là một hàm bất kì được định nghĩa trên không gian các bản tin
M Chúng ta nói f(m) là bao gồm những thông tin về bản tin m M Những hàm f điển hình được quan tâm như hàm băm, hàm xác thực, …
Chúng ta muốn rằng việc trích rút bất kì thông tin nào của những bản tin từ sự mã hóa của chúng là “khó”, thậm chí ngay cả khi xác xuất phân bố của không gian bản tin được biết
Với tất cả m M, đặt Prm = Prob(x = m | x M) là xác suất mà x = m với x M
Xét tập V = f(M), định nghĩa Pr M = max ( Pr )
V m v và v M là giá trị thuộc V = f(M) mà ở đó đạt xác xuất lớn nhất Pr M Gọi E là giải thuật mã hóa
Xét ba trường hợp sau với E là công khai được thám mã biết trước
Trường hợp 1: Chọn ngẫu nhiên m M (mỗi x M có xác xuất là
Pr x ) Trong trường hợp này thám mã phải dự đoán f(m) (thông tin về bản rõ m) mà không được biết m
Nếu thám mã luôn luôn dự đoán f(m) = v M thì dự đoán đó sẽ luôn đúng với xác xuất là Pr M , và theo định nghĩa ở trên ta thấy rằng sẽ không có cách nào khác cho thám mã có thể dự đoán với xác xuất cao hơn
Trường hợp 2: Chọn ngẫu nhiên m M Tính bản mã E(m) Cho
Trường hợp 3: Cho thám mã chọn hàm fE được định nghĩa trong M
Chọn ngẫu nhiên m M Tính bản mã E(m) Cho thám mã biết Bây giờ thám mã phải dự đoán f(m) Ở đây f(m) là tập hợp những “thông tin” về bản rõ m, ở trường hợp tốt nhất đó chính là bản rõ m
Ký hiệu Gk là giải thuật tạo khóa công khai và bí mật, E là giải thuật mã hóa, D là giải thuật giải mã
Một cách không hình thức, chúng ta nói rằng lược đồ = (Gk, E , D) là lược đồ mã hóa khóa công khai an toàn ngữ nghĩa, nếu thám mã trong trường hợp 3 dự đoán giá trị f(m) với xác xuất không lớn hơn trong trường hợp 1
Một hệ thống an toàn ngữ nghĩa là một hệ thống mà cho kẻ thám mã biết bản mã thì cũng không đem lại dù chỉ một bit thông tin cho kẻ thám mã
Ví dụ trong một chiến dịch quân sự bản rõ bao gồm: thông tin về số quân, giờ đánh, vị trí đánh, vũ khí hạng nặng có những gì
An toàn ngữ nghĩa có nghĩa là cho kẻ thám mã biết bản mã của bản rõ trên, thì cũng không thể tìm ra một chút thông tin gì về bản rõ, ví dụ như không thể biết được về số quân chẳng hạn
Thông thường trong định nghĩa an toàn cổ điển, hệ mã được gọi là an toàn nếu cho trước bản mã không tìm được bản rõ tương ứng Nhưng ở đây định nghĩa chặt hơn là, chẳng những không tìm được bản rõ tương ứng mà chỉ một phần nhỏ (một bit), thông tin của bản rõ tương ứng cũng không thể tìm được, như ở trường hợp trên chỉ thông tin về số quân cũng không biết được
2.2.3 Tính không phân biệt đƣợc (Indistinguishability : IND)
Mục tiêu của mã hoá là duy trì tính bí mật của thông tin: Thám mã sẽ khó thể dùng bản mã để biết được thông tin về bản rõ tương ứng ngoại trừ độ dài của bản rõ đó Chúng ta định nghĩa như sau:
Giả sử A = (A1, A2) là hai giai đoạn tấn công của thám mã Giải thuật
A 1 chạy trên đầu vào là khoá công khai p k , cho đầu ra là bộ ba (x 0 , x 1 , s), hai thành phần đầu tiên x0 và x 1 là những thông tin có cùng độ dài, và thành phần cuối cùng s là thông tin về trạng thái mà thám mã muốn duy trì (có thể bao gồm pk ) Chọn ngẫu nhiên x 0 hoặc x 1 , gọi là xb Mã hóa x b dùng khóa công khai p k ta thu được bản mã y
Giải thuật A2 với đầu vào là y, s, x 0 , x 1 cho đầu ra là b (có nghĩa là xác định xem bit b là 1 hay là 0)
PHÂN TÍCH ĐÁNH GIÁ MỘT SỐ HỆ MÃ HOÁ
HỆ MÃ HOÁ ELGAMAL
Sơ đồ hệ mã Elgamal:
Tập bản rõ P = Z*p , tập bản mã C = Z* p Z*p , p là số nguyên tố
Khóa công khai là bộ (p, , ), khóa bí mật là a, trong đó a mod p,
Z*p là phần tử sinh của Z* p Thuật toán lập mã:
Chọn r ngẫu nhiên thuộc Zp-1
Hệ mã Elgamal có tính chất xác suất (do việc chọn r ngẫu nhiên thuộc
Z p-1 ), tức là một bản rõ có thể có nhiều bản mã tùy thuộc vào việc ta chọn số ngẫu nhiên r
Do p là số nguyên tố lớn, nên việc chọn ngẫu nhiên r bằng nhau giữa hai lần lập mã của cùng một bản rõ là xảy ra với xác xuất không đáng kể, vì vậy việc biết bản mã cũng không mang lại chút thông tin gì về bản rõ, nếu như giả thiết toán học của hệ mã là đúng đắn Độ khó của hệ mã dựa trên độ khó của bài toán Logarit rời rạc, hay giả thuyết Diffe-Hellman, cho đến nay cũng như bài toán RSA, vẫn chưa có lời giải với thời gian chấp nhận được Theo định nghĩa, hệ Elgamal đảm bảo an toàn ngữ nghĩa
3.2.2 Hệ mã ELGAMAL an toàn trước tấn công KPA, COA, CPA
ELGAMAL là hệ mã hóa công khai, nên hiển nhiên mô hình tấn công CPA (Chosen plaintext attack) là luôn luôn thỏa mãn, và thám mã có thể mã hóa bất kỳ bản rõ nào mà họ chọn
Việc giải mã để tìm bản rõ tương đương với việc giải bài toán Logarit rời rạc, mà ta đã biết cho đến nay vẫn chưa có phương pháp để giải bài toán Logarit rời rạc trong thời gian chấp nhận được Đến nay người ta vẫn tin rằng, hệ mã ELGAMAL là an toàn trong mô hình tấn công CPA, và do vậy kéo theo là an toàn trong các mô hình tấn công yếu hơn như COA (Ciphertext only attack) và KPA (Known plaintext attack)
3.2.3 Hệ mã ELGAMAL không đạt an toàn trước tấn công CCA
Xét hai bản rõ m1 và m 2 , theo hệ mã Elgamal ta có E(m 1 ) = ( r1 , m 1 r1 ), E(m 2 ) = ( r2 , m 2 r2 ) Với r1 , r 2 là hai số ngẫu nhiên
E(m1m2) chính là một sự mã hóa của bản rõ m1m2 dưới số ngẫu nhiên r
Nói cách khác giải mã bản mã E(m 1 ) E(m 2 ) ta sẽ thu được bản rõ là m 1 m 2
Nếu thám mã nhận bản mã c = (c 1 , c 2 ) trong mô hình tấn công CCA, nó có thể chọn một bản rõ m‟ và bằng cách gửi bản mã c E(m‟) = E(m) E(m‟) tới máy tư vấn giải mã (trong mô hình tấn công CCA thám mã hoàn toàn có quyền này, vẫn thỏa điều kiện không truy vấn máy tư vấn giải mã trực tiếp trên bản mã c) Máy tư vấn giải mã sẽ trả kết quả về bản rõ mm‟ Rõ ràng thám mã có thể thu về bản rõ m cần tìm, tức là hệ mã đã bị phá
Vậy Elgamal không an toàn dưới mô hình tấn công CCA.
HỆ MÃ HOÁ CRAMER-SHOUP (1998)
Những hệ mã có thể đạt an toàn trước tấn công mạnh nhất hiện nay CCA2 (có nghĩa là hệ mã đạt an toàn IND-CCA), hầu hết là những hệ mã không khả thi trong thực tế (vì sử dụng những giả thiết phức tạp và khó cài đặt trong thực tế)
Ta sẽ giới thiệu hệ mã Cramer-Shoup (do Ronald Cramer và Victor Shoup đưa ra) là hệ mã đầu tiên có cả hai tính chất, vừa đạt an toàn IND-CCA, vừa có tính khả thi trong thực tế Yêu cầu duy nhất là độ an toàn của hệ mã dựa trên giả thuyết Decisionnal Diffie-Hellman
3.3.1 Vấn đề Decisionnal Diffie-Hellman Cho G là nhóm Abelian cấp q, trong đó q là số nguyên tố lớn
Ta xét hai phân bố sau:
Phân bố R của nhóm 4 phần tử ngẫu nhiên (g1, g 2 , u 1 , u 2 ) G 4 ;
Phân bố D của nhóm 4 phần tử (g1, g 2 , u 1 , u 2 ) G 4 , trong đó g 1 , g 2 là ngẫu nhiên, và u1 = g 1 r và u 2 = g 2 r với r ngẫu nhiên thuộc Z q Vấn đề Decisionnal Diffie-Hellman là bài toán phân biệt hai nhóm : (g1, g2, u1, u2) G 4 trong đó g1, g2, u1, u2 là ngẫu nhiên G
Và (g 1 , g 2 , u 1 , u 2 ) G 4 trong đó g 1 , g 2 là ngẫu nhiên thuộc G và u 1 g1 r và u2 = g2 r với r ngẫu nhiên thuộc Zq Nếu ta thay thế như sau: g 1 → g, g 2 → g x , u 1 → g y , u 2 → g xy ,
Ta thấy rằng nó tương đương với sự phân biệt bộ ba Diffie-Hellman (g x , g y , g xy ) từ bộ ba bất kỳ (g x , g y , g z )
Có nghĩa là nó cũng liên hệ với vấn đề Diffie-Hellman (cho trước g, g x và g y tính g xy ), hay vấn đề logarithm rời rạc (cho trước g và g x tính x)
Có sự quy dẫn thời gian đa thức từ giả thuyết Decisionnal Diffie- Hellman tới giả thuyết Diffie-Hellman và từ giả thuyết Diffie-Hellman tới bài toán Logarithm rời rạc, nhưng quy dẫn theo chiều ngược lại thì cho đến nay vẫn chưa được biết
Có nhiều chứng minh Heuristic cho độ khó của cả ba giả thuyết này ([12]) Quả thực cho đến nay vẫn chưa có giải thuật thời gian đa thức để giải quyết cả ba giả thuyết trên, vì thế ta vẫn tin rằng hệ mã xây dựng dựa trên độ khó của một trong ba giả thuyết trên là an toàn
Hệ mã Cramer-Shoup có độ „khó‟ dựa trên giả thuyết Decisionnal Diffie-Hellman
Một họ hàm băm được gọi là không va chạm mạnh, nếu cho trước hàm băm H ngẫu nhiên từ họ hàm băm, thì thám mã „khó„ có thể tìm được hai đầu vào x và y khác nhau mà H(x) = H(y)
Một khái niệm yếu hơn là họ hàm băm không va chạm yếu, nếu cho phép thám mã chọn truớc x, và H được chọn một cách ngẫu nhiên, thì thám mã „khó‟ thể tìm được y sao cho H(x) = H(y)
Một trường hợp đặc biệt của họ hàm băm không va chạm yếu này được gọi là „target collision resistant‟ (TCR) : x được chọn ngẫu nhiên trước, sau đó chọn ngẫu nhiên tiếp hàm băm H, thì thám mã "khó" thể tìm được y sao cho H(x) = H(y)
Ví dụ SHA-1, MD5 đều thỏa mãn là hàm băm TCR Giả sử rằng G là nhóm Abelian cấp q, q là số nguyên tố lớn Giả sử rằng bản rõ là một phần tử thuộc G Dùng họ hàm băm TCR, ánh xạ những chuỗi bit dài tới những phần tử của Zq
Chọn ngẫu nhiên g1 , g 2 G và x 1 , x 2 , y 1 , y 2 , z Zq Tính: c g 1 x 1 g 2 x 2 , d g 1 y 1 g 2 y 2 , h = g1 z
Hàm băm H được chọn từ họ hàm băm TCR
Khoá công khai là (g1, g2, c, d, h, H), khoá bí mật là (x1 , x2 , y1 , y2 , z)
Cho bản rõ m G Chọn r ngẫu nhiên Z q Tính u 1 = g 1 r , u 2 = g 2 r , e = h r m , α = H(u1, u 2 , e), v = c r d r.α Bản mã là (u1, u2, e, v)
Cho bản mã (u1, u2, e, v) Tính α = H(u1, u2, e), và kiểm tra u 1 x 1 y 1 * u 2 x 2 y 2 * = v
Nếu điều kiện kiểm tra là sai, thì giải thuật cho kết quả đầu ra là thông báo không có kết quả (reject) Ngược lại, giải thuật cho đầu ra là m = e / u1 z
Chúng ta kiểm tra đây đúng là một hệ mã, có nghĩa giải mã bản mã sẽ cho kết quả là bản rõ
Vì u1 = g 1 r và u 2 = g 2 r nên: u 1 x 1 u 2 x 2 = g 1 r * x 1 g 2 r * x 2 = c r Mặt khác u 1 y 1 u 2 y 2 = d r và u 1 z = h r Vì thế điều kiện kiểm tra thoả mãn, và đầu ra sẽ là m = e / h r
Khoá công khai là (g1=2, g 2 =1, c=4, d=2, h=8, SHA-1), khoá bí mật là (x 1 =2, x 2 =3, y 1 =1, y 2 =2, z=3)
Mã hóa : bản rõ m = 5, thành phần ngẫu nhiên r = 2
Giải mã : Tính α = SHA-1(4, 1, 320), và kiểm tra u 1 x 1 y 1 * u 2 x 2 y 2 * = v = 4 2+1.11 1 2+2.11 = 1073741824 đúng
3.3.3 Độ an toàn của hệ mã hoá Định lý 3.1 (Ronald Cramer - Victor Shoup):
Hệ mã trên là đạt an toàn IND-CCA2 với giả thuyết rằng H là hàm băm TCR và giả thuyết Decisionnal Diffie-Hellman là „khó‟ trong nhóm G (G là nhóm Abelian cấp q, q là số nguyên tố lớn)
Từ định lý trên ([6]) ta thấy rõ hệ mã Cramer – Shoup đạt an toàn IND- CCA2, vì cho đến nay vẫn chưa có giải thuật thời gian đa thức nào giải quyết được vấn đề Decisionnal Diffie-Hellman
Do vậy kéo theo hệ mã an toàn trước các mô hình tấn công KPA, COA, CPA cũng như đảm bảo an toàn ngữ nghĩa
3.3.4 Cài đặt hệ mã hoá Để cài đặt hệ mã trong thực tế, có thể chọn p là số nguyên tố lớn sao cho p – 1 = 2q, trong đó q cũng là số nguyên tố lớn
Nhóm G là nhóm con cấp q trong Z * p Ta giới hạn bản rõ là một phần tử nằm trong tập {1, …, q}, và có thể thay đổi (encode) nó bằng cách bình phương bản rõ theo modulo p, sẽ cho kết quả là một phần tử trong nhóm G
Ta có thể khôi phục lại bằng cách lấy căn bậc hai theo modulo p để được một phần tử duy nhất nằm trong tập {1, …, q}
Bản rõ m là một phần tử nằm trong tập {1, 2, 3, 4, 5}, bây giờ ta tính tập G, bằng cách bình phương từng phần tử trong tập {1, 2, 3, 4, 5} theo modulo 11, ta được tập G ={1, 4, 9, 5, 3}
Bây giờ nếu ta muốn mã hóa bản rõ m thuộc tập {1, 2, 3, 4, 5}, ví dụ m
= 4, ta tính tương ứng với nó trong tập G là 4 2 mod 11 = 5 Ta lấy giá trị m‟= 5 đi mã hóa
Còn sau khi giải mã ta nhận lại được m‟ = 5, ta tính ngược lại bản rõ m ban đầu của ta bằng cách, lấy căn bậc hai của nó theo mod 11, để được một phần tử nằm trong tập {1, 2, 3, 4, 5} Công thức là 5 k * 11 , vấn đề là chọn k phù hợp để được một giá trị nằm trong tập {1, 2, 3, 4, 5}, ở trường hợp này k = 1, nên giá trị của m = 4
HỆ MÃ HOÁ LAI (Hybrid Encryption)
Hệ mã Cramer và Shoup ở trên yêu cầu giới hạn bản rõ là một phần tử
G, nhưng trong thực tế bản rõ có thể là tuỳ ý Để đạt điều này chính Cramer và Shoup đã đưa ra hệ mã mới dựa vào chính hệ mã trên, gọi là mã hoá lai (Hybrid Encryption)
Trong hệ mã hoá lai cơ bản gồm hai phần, phần thứ nhất là hệ mã hoá công khai, tạm gọi là "cơ chế đóng gói khoá" (key encapsulation mechanism) viết tắt là KEM
Phần thứ hai ta tạm gọi là hệ mã hoá khoá đối xứng một lần (one-time symmetric-key encryption scheme) viết tắt là SKE
3.4.1 Hệ mã hoá KEM 3.4.1.1 Sơ đồ mã hoá
Về cơ bản KEM bao gồm những giải thuật sau:
Một giải thuật xác xuất thời gian đa thức để tạo khóa KEM.KeyGen Đầu vào là chuỗi {0, 1} λ với λ Z và λ ≥ 0 Đầu ra là cặp khoá công khai và bí mật (Pk, S k ) Cấu trúc của Pk và S k phụ thuộc vào từng hệ mã cụ thể
Một giải thuật mã hoá xác xuất thời gian đa thức KEM.Encrypt Đầu vào là {0, 1} λ với λ Z và λ ≥ 0, và khoá công khai Pk Đầu ra là cặp (K, ψ), trong đó K là khoá mã hoá trong hệ mã hoá đối xứng SKE, và ψ là bản mã của K
Khoá K là chuỗi bit có độ dài là KEM.KeyLen (λ),trong đó KEM.KeyLen (λ ) là tham số khác của KEM
Một giải thuật giải mã đơn định thời gian đa thức KEM.Decrypt Đầu vào là {0, 1} λ với λ Z và λ ≥ 0, bản mã ψ của K, và khoá bí mật S k Đầu ra hoặc là khoá K hoặc là thông báo không có kết quả hợp lệ (reject)
3.4.1.2 Xây dựng sơ đồ mã hoá
Ta ví dụ về cách xây dựng KEM như sau bằng việc thay đổi một chút hệ mã ElGamal:
Gọi G và q như ở trên, g là phần tử sinh của tập G Đặt H là hàm băm (như SHA-1 chẳng hạn)
Giải thuật thứ nhất của KEM :
Khoá công khai là h = g z , trong đó z Z q được chọn ngẫu nhiên, khoá bí mật là z
Giải thuật thứ hai của KEM : Để tạo khoá công khai K cho hệ mã SKE và bản mã của K ta làm như sau:
Giải thuật cuối cùng của KEM : Để giải bản mã ψ = a, nhằm tìm ra khoá K, ta làm như sau: a z b; H(b) K;
3.4.2 Hệ mã hoá SKE 3.4.2.1 Sơ đồ mã hoá
Về cơ bản SKE gồm hai giải thuật sau:
Một giải thuật mã hoá đơn định thời gian đa thức SKE.Encrypt Đầu vào là {0, 1} λ với λ Z và λ ≥ 0, khoá K và bản rõ m Đầu ra là bản mã χ
Khoá K là chuỗi bit có độ dài là SKE.KeyLen(λ) Ở đây SKE.KeyLen(λ) là tham số khác của lược đồ, có thể tính bằng một giải thuật đơn định thời gian đa thức với đầu vào là {0, 1} λ
Bản rõ m là chuỗi bit ngẫu nhiên, không giới hạn độ dài (đây chính là ưu điểm so với hệ mã Cramer-Shoup đã trình bày trước đây)
Bản mã χ là chuỗi bit có độ dài tuỳ ý
Một giải thuật giải mã đơn định thời gian đa thức SKE.Decrypt Đầu vào là {0, 1} λ với λ Z và λ ≥ 0, khóa K và bản mã χ Đầu ra là bản rõ m hay ký hiệu „reject‟
Khoá K là chuỗi bit có độ dài là SKE.KeyLen(λ)
Bản mã χ là chuỗi bit có độ dài tuỳ ý
Tất nhiên ta yêu cầu rằng SKE phải thoả mãn điều kiện đúng đắn của hệ mã hoá, tức là phải thoả mãn:
Với mọi λ Z, λ ≥ 0, Với mọi K {0, 1}SKE.KeyLen(λ), Với mọi m {0, 1} * (có nghĩa là m có độ dài tuỳ ý) luôn có:
3.4.2.2 Xây dựng sơ đồ mã hoá
Vì SKE là hệ mã hoá đối xứng, như ta biết hệ mã hoá đối xứng thì bị phá bởi kiểu tấn công CPA (Chosen plaintext attack) Nhưng SKE là hệ mã hoá đối xứng mã hoá một lần, tức là khoá K chỉ được dùng để mã hoá một lần,
(chỉ được dùng một lần trên bản rõ m cụ thể), khả năng dùng lại khoá K là rất nhỏ (ví dụ như cách cài đặt trên do ta chọn z, u ngẫu nhiên Z q ), cho nên khả năng bị phá bởi kiểu tấn công CPA là không xảy ra
Ta nói một tấn công là "bị động" đối với một hệ mã, nếu hệ mã đó đạt an toàn IND (2.2.3) trước tấn công này
Việc xây dựng SKE để an toàn trước kiểu tấn công bị động là đơn giản và có nhiều cách Ví dụ như để mã hoá bản rõ m, ta có thể khai triển khoá K bằng việc dùng bộ tạo bit giả ngẫu nhiên, để tạo ra chuỗi α có độ dài |m|, và sau đó tính bản mã χ = m α
Bộ tạo bit giả ngẫu nhiên có thể được xây dựng từ hàm một phía ([9], [10], [11])
Hệ mã SKE như trên an toàn với kiểu tấn công bị động, nhưng không an toàn trước kiểu tấn công CCA2 Do vậy Cramer và Shoup đã đề xuất hệ mã cải tiến của SKE gọi là SKE2, bằng cách kết hợp SKE như trên và MAC (one
– time message authentication code) (mã xác thực thông tin một lần)
MAC bao gồm các thành phần sau:
Với mọi λ Z, λ ≥ 0, MAC.KeyLen(λ) là tham số độ dài khoá, và MAC.OutLen(λ) là tham số độ dài đầu ra
Ta giả sử rằng MAC.KeyLen(λ) có thể được tính toán bằng giải thuật đơn định thời gian đa thức, với đầu vào cho trước là {0, 1} λ
Một họ những hàm được đánh chỉ mục (phân biệt) bởi λ Z, λ ≥ 0 và chuỗi {0, 1}MAC.KeyLen(λ)
, trong đó mỗi hàm MAC(λ, {0, 1}MAC.KeyLen(λ) , α ) ánh xạ chuỗi bit α có độ dài tuỳ ý tới chuỗi bit có độ dài xác định là MAC.OutLen(λ)
Nghĩa là một giải thuật đơn định thời gian đa thức với đầu vào là λ , chuỗi {0, Để định nghĩa tính an toàn của MAC, ta định nghĩa một kịch bản tấn công sau (attack game):
Một thám mã A là giải thuật thời gian đa thức, có đầu vào là {0, 1} λ trong đó λ Z, λ ≥ 0 là tham số an toàn Thám mã A đầu tiên chọn chuỗi bit α, và gửi α tới máy tư vấn Máy tư vấn tạo ngẫu nhiên khoá là chuỗi bit {0, 1}MAC.KeyLen(λ)
, sau đó tính MAC(λ, {0, 1}MAC.KeyLen(λ) , α ) = β và gửi trả β cho A
Thám mã A biết cặp (α , β ) nhưng không biết khóa {0, 1}MAC.KeyLen(λ)
Thám mã A sau đó cho đầu ra là một danh sách những cặp chuỗi bit:
Ta nói rằng A đã tạo ra một sự giả mạo, nếu tồn tại một i nào đó
[1, k] mà α i ≠ α và MAC(λ, {0, 1}MAC.KeyLen(λ) , αi) = β i
Ta ký hiệu AdvForgeMAC,A(λ) là xác xuất mà A tạo ra một sự giả mạo như trường hợp trên
Ta nói rằng MAC là an toàn nếu:
Với tất cả những thám mã A sử dụng giải thuật thời gian đa thức, AdvForge MAC,A (λ) có giá trị không đáng kể
MAC an toàn như trên, có thể được xây dựng bằng việc dùng một họ hàm băm TCR, mà không cần dựa trên giả thuyết toán học “khó” nào Cũng đã có nhiều cách xây dựng MAC trong thực tế, nhưng độ an toàn của những cách này chưa được chứng minh đầy đủ
Bây giờ ta trình bày cách kết hợp SKE và MAC, để tạo ra SKE2 Đầu tiên SKE2.KeyLen(λ) của SKE2 sẽ được tính như sau:
SKE2.KeyLen(λ) = SKE.KeyLen(λ) + MAC.KeyLen(λ)
Khoá lúc này là cặp (K1, K2), trong đó K1 là chuỗi bit có độ dài SKE.KeyLen(λ) và K2 là chuỗi bit có độ dài MAC.KeyLen(λ)
Thuật toán mã hoá như sau: Để mã hoá thông tin m dưới khoá (K1, K 2 ), giải thuật SKE2.Encrypt tính:
SKE.Encrypt({0, 1} λ , K 1 , m) χ; MAC(λ, K2 , χ) tag; χ‟ ← χ || tag;
Ký hiệu || có nghĩa là ghép chuỗi Đầu ra là bản mã χ‟ Thuật toán giải mã như sau: Để giải mã χ‟ dưới khoá (K1, K2), giải thuật SKE2.Decrypt phân tích χ‟ thành χ‟ = χ || tag, trong đó tag là chuỗi bit có độ dài MAC.OutLen(λ)
Nếu sự phân tích này thất bại (độ dài χ‟ quá ngắn), giải thuật cho đầu ra là reject
Ngược lại giải thuật tiếp tục tính:
Nếu tag ≠ tag‟, thì giải thuật cho đầu ra là reject
Ngược lại giải thuật tính:
SKE.Decrypt({0, 1} λ , K 1 , χ) m Đầu ra là bản rõ m Định lý 3.2 (Ronald Cramer - Victor Shoup):