Baitap Matmahoc

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Bài tập Mật mã học nâng cao

Bài tập số 1
Cho một hệ mã hóa dịch được định nghĩa trên bộ (K, M, C), trong đó
M = {A,…, Z}l, với l là độ dài thông báo, tuy nhiên ta sẽ ký hiệu mỗi chữ cái mi của thông báo
m = [m1,…, ml] như một số nguyên trong tập {0,…, 25}.
K = {0,…, 25} xác định số bước dịch (với hệ mã hóa Caesar k = 3)
C = E(k, [m1,…, ml]) = [(m1 + k mod 26),…, (ml + k mod 26)]
Ví dụ với m = “HELLO”, k = 1 thì c = “IFMMP”
Chứng minh hệ mã hóa đã cho có tính bí mật hoàn toàn với trường hợp đặc biệt l = 1, và
không có tính bí mật hoàn toàn với l ≥ 2.
Bài tập số 2
Xét một tập S gồm có 3 chuỗi 2 bit S = {00, 01, 10}.
Xét ba biến thể dưới đây của hệ mã hóa độn một lần (OTP). Trong tất cả các biến thể, khóa
k được chọn hoàn toàn ngẫu nhiên với đồng xác suất từ K, các phép mã hóa và giải mã
được thực hiện giống như với hệ mã hóa độn một lần, có nghĩa là E(k, m) = k  m và D(k,
c) = k  c.
1. M = Sl và K = {0, 1}2l, có nghĩa là cả thông báo và khóa đều là những chuỗi bit có độ
dài 2l. Tuy nhiên không phải chuỗi 2l bit nào cũng có thể là một thông báo hợp lệ.
Chẳng hạn, với l = 3, ta có thể có m = [00, 01, 00] = 000100, nhưng m = [11, 00, 11]
 M vì 11  S.
2. M = {0, 1}2l và K = Sl
3. M = K = Sl
Với mỗi biến thể OTP trên đây, hãy xác định hệ mã hóa tương ứng có an toàn hoàn toàn
hay không và chứng minh.
Bài tập số 3
Cho F là một hàm số giả ngẫu nhiên (PRF) an toàn định nghĩa trên bộ (K, X, Y): F: K x X →
Y, trong đó K = X = Y = {0, 1}n.
Xét các cách thức sau đây xây dựng một bộ sinh số giả ngẫu nhiên (PRG) từ F. Với mỗi
cách thức, hoặc chứng minh bộ sinh số giả ngẫu nhiên xây dựng được là an toàn hoặc
chứng minh nó không an toàn bằng cách tìm ra một giải thuật có khả năng phân biện các
đầu ra của nó với các số thực sự ngẫu nhiên.

1. G1(k) = [F(k, 0n) | F(k, 1n)] k  {0, 1}n


2. G2(k) = [F(0n, k) | F(1n, k)] k  {0, 1}n

Lưu ý là trong cả hai trường hợp |Gi(k)| = 2|k| i = 1, 2.


Bài tập số 4
Cho F vẫn là hàm số giả ngẫu nhiên an toàn như trên. Từ hàm F xây dựng một hàm F’ : {0,
1}n x {0, 1}n → {0, 1}2n, theo đó các đầu ra của F’ có độ dài lớn hơn gấp đôi các đầu ra của
F.
Với mỗi cách thức xây dựng F’ dưới đây, hoặc chứng minh F’ cũng là một hàm số giả ngẫu
nhiên an toàn, hoặc tìm ra một giải thuật có thể phá nó, tức là có khả năng phân biệt F’ với
một hàm số thực sự ngẫu nhiên.
1. F’(k, x) = [F(k, 0n) | F(k, x)]
2. F’(k, x) = [F(0n, x) | F(k, x)]
3. F’(k, x) = [F(k, x) | F(k, x’)] (x’ là nghịch đảo bit của x)
4. F’(k, x) = [F(k, 0x) | F(k, 1x)]

You might also like