You are on page 1of 46

BẢO MẬT DỮ LIỆU & ĐỘ PHỨC TẠP-

Mật mã học
Bảo mật hoàn thiện
 Định lý. Cho hệ mã ( P , C , K , E , D ) có tính chất | K | = | C | = | P | . Khi
đó hệ mã bảo mật tuyệt đối khi và chỉ khi mọi khoá mã được dùng với
xác suất như nhau là 1/ | K | , và x  P , y  C có một khoá K duy nhất
thoả eK(x) = y
 Định lý. Trong hệ thống bảo mật tuyệt đối, số lượng khoá có thể (độ
lớn không gian khoá) phải lớn hơn hoặc bằng số lượng bản rõ có thể
(độ lớn không gian bản rõ)
Entropy
 Độ đo lượng thông tin - độ không chắc chắn - độ bất định
 Khái niệm entropy
• Biến ngẫu nhiễn, nhận hữu hạn giá trị, phân phối xác suất p(X)
• Độ bất định/lượng tin/entropy của X:
• Định nghĩa: Giả sử X là biến ngẫu nhiên có thể nhận hữu hạn giá trị với phân
phối xác suất p(X). Entropy của phân phối xác suất đó là giá trị

nếu các giá trị có thể của X là xi

Quy ước chỉ xét xi  0


Có thể lấy cơ số bất kỳ. Với cơ số 2: đơn vị đo lượng tin là bit
Entropy
 Chú ý
• thì

• H(X) = 0 khi và chỉ khi và
 Ví dụ
a b
• với hệ mã như mô tả ở bên pP = 1/4 pP = 3/4
• H(P)
k1 1 2
(pK = 1/2)
• H(C), H(K)
k2 2 3
(pK = 1/4)
k3 3 4
(pK = 1/4)
Entropy
 Một số tính chất khác
• Giả sử X là biến ngẫu nhiên với phân phối xác suất khi đó:
, dấu = khi và chỉ khi
• Giả sử X, Y là hai biến ngẫu nhiên, khi đó:
, dấu = khi X, Y độc lập

• , dấu = khi X, Y độc lập
Khoảng cách duy nhất - unicity distance
 Nhận xét: với mã một bảng thế
• Thông điệp mã ngắn: có thể tồn tại nhiều khóa - giải mã ra nhiều bản rõ (có
nghĩa)
shift cipher: bản mã = WNAJW
vét cạn: k=5 bản rõ = river
k=22 = arena
• Thông điệp mã dài hơn: số lượng khóa có thể đúng sẽ giảm => 1
• Unicity distance - khoảng cách duy nhất:
n0 là độ dài tối thiểu của bản mã để xác định khóa duy nhất
khoảng cách duy nhất - unicity distance
 Unicity distance:
• N0 là độ dài tối thiểu của bản mã để xác định khóa duy nhất

 Entropy có điều kiện H(K|C) dùng để đo lượng thông tin về khóa do từ


mã đem lại
• Với hệ mã :
Khoảng cách duy nhất - unicity distance
 Đánh giá số lượng khóa có thể (giải được thông điệp có nghĩa)
• Độ bất định của từng ký tự cho ngôn ngữ L, ký hiệu :
• Với bảng chữ N ký tự, nếu mỗi ký tự xuất hiện với xác suất 1/N, entropy là

• Với bảng chữ tiếng Anh: 26 ký tự, entropy của từng ký tự trong xâu ngẫu
nghiên:
• Với entropy cho từng ký tự của bản rõ: có thể ước lượng xấp xỉ
• Với tiếng Anh: 4.19
Ký tự Xác Ký tự Xác Ký tự Xác Ký tự Xác Ký tự Xác
suất suất suất suất suất
A 0.082 F 0.022 K 0.008 P 0.019 U 0.028
B 0.15 G 0.020 L 0.040 Q 0.001 V 0.010
C 0.028 H 0.061 M 0.024 R 0.060 W 0.023
D 0.043 I 0.070 N 0.067 S 0.063 X 0.001
E 0.127 J 0.002 O 0.075 T 0.091 Y 0.020
Z 0.001
Khoảng cách duy nhất - unicity distance
 Đánh giá số lượng khóa có thể (giải được thông điệp có nghĩa)
• Với thông điệp bản rõ - trong ngôn ngữ tự nhiên: các ký tự liên tiếp nhau kh phải
độc lập
=> tương quan giữa các ký tự làm giảm entropy
• Nếu gọi là biến ngẫu nhiên có phân phối của tổ hợp chuỗi n ký tự, định nghĩa
• entropy của ngôn ngữ L là

• độ dư thừa thông tin của ngôn ngữ L là

• Tiếng Anh: , nếu thì


Khoảng cách duy nhất - unicity distance
 Đánh giá số lượng khóa có thể (giải được thông điệp có nghĩa)
• Từ phân phối xác suất trên không gian K, Pn, tính xác suất trên Cn :
Cn tập từ mã độ dài n. với từ mã :

K(y): tập các khóa mà: y là từ mã của xâu từ hiện có nghĩa (độ dài n) x
• Có thể ước lượng được số lượng khóa trung bình là

Với hệ mã có và các khóa được chọn với xác suất như


nhau. là độ dư thừa của ngôn ngữ được dùng. Khi đó nếu xâu bản mã y có độ
dài n đủ lớn, số lượng khóa thỏa:

• Từ đó, xác định khoảng cách duy nhất n0 :


Khoảng cách duy nhất - unicity distance
 Ví dụ - khảo sát mức độ an toàn theo unicity distance
• Mã một bảng thế, có:
|K|=26!
|P|=26
ngôn ngữ tiếng Anh:
Khi đó: khoảng cách duy nhất
có nghĩa: nếu xâu bản mã độ dài 25, khi đó giải mã nói chung là duy nhất
• Mã one-time-pad, với từ mã độ dài k
|K|=26k
|P|=26
ngôn ngữ tiếng Anh:
Khi đó:
. ∗ . ∗ .
Tích các hệ mã
 Tăng tính mật của hệ mã
• tăng độ lớn không gian khóa
• chèn thêm đoạn văn bản ngẫu nhiên S2
ek2()
ek1()

 Kết hợp nhiều hệ mã qua tích x z


y
 Giả sử các hệ mã có P= C
S1
 Tích hai hệ mã
• Xét 2 hệ mã và
Hệ mã tích: được xác định
• Khóa k là cặp
• Hàm mã hóa là hàm hợp ,
• Hàm giải mã ,
Tích các hệ mã
 Nhận xét
• Phân bố xác suất của khóa

• Nếu S1 = S2: mã lặp
• Nếu thì S gọi là lũy đẳng
• Tránh lũy đẳng: có thể tích của các hệ mã khác nhau
• Nếu tích không lũy đẳng: độ bảo mật của mã tích tăng
• Không gian khóa
Mã Huffman
 Mã Huffman
• Là một mã độ dài biến đổi, thường dùng để nén không mất thông tin
• Dựa trên phân bố xác suất

• Biến ngẫu nhiên X, có thể lấy hữu hạn giá trị xi , có phân bố xác suất p(X)
• Gọi sự tạo mã (encoding) là ánh xạ phần tử x tương ứng xâu nhị phân
 : X  {0, 1}*
• Cho từ x1x2..xn , mở rộng ánh xạ 
 (x1 .. xn) =  (x1) ..  (xn)
là phép nối các chuỗi ký tự. Theo đó ta có ánh xạ:
: X*  { 0, 1}*
• Để giải mã không nhập nhằng => ánh xạ  là đơn ánh.
Mã Huffman

 Ví dụ: Giả sử X = {a, b, c, d}, xem xét các mã hoá sau


 (a) = 1  (b) = 10  (c) = 100  (d) = 1000
g(a) = 0 g(b) = 10 g(c) = 110 g(d) = 111
h(a) = 1 h(b) = 01 h(c) = 10 h(d) = 11
• hàm h: không là đơn ánh
• hàm f , g là đơn ánh
• hàm f : không giải mã tức thời (khi nhận được đoạn thông điệp mã ứng với mã của
ký tự bản rõ - chưa thể giải mã ngay)
• hàm g: giải mã tức thời (khi nhận được đoạn thông điệp mã ứng với mã của ký tự
bản rõ - giải mã được ngay)
Thuật toán xây dựng ánh xạ mã Huffman
 Gán nhãn cho phần tử
 Lặp
• chọn 2 phần tử xác xuất nhỏ nhất
• Gộp thành 1 phần tử mới
• Gán nhãn cho 2 phần ban đầu
• 0: phần tử xác xuất nhỏ hơn
• 1: phần tử xác xuất lớn hơn
Thuật toán xây dựng ánh xạ mã Huffman
 Ví dụ:
• Bảng chữ có phân bố xác suất bên:
• Xây dựng ánh xạ mã Huffman

• e = 1, d=011, c=010, b=001 và a=000


3. Mã đại số
Hình thức hóa
Một số khái niệm
 Nửa nhóm - semigroup:
Tập khác rỗng S được trang bị phép toán hai ngôi kết hợp.
Phép toán thường được gọi là phép nhân và ký hiệu đơn giản bằng cách đặt cạnh nhau,
u = vw thể hiện tích của v và w.
 Nửa nhóm con - subsemigroup
• Tập con T của nửa nhóm S được gọi là nửa nhóm con của S nếu nó là đóng đối với
phép toán của S

• Nửa nhóm cùng với phần tử đơn vị tạo thành một vị nhóm (monoid). Phần tử đơn vị
thường ký hiệu là 1.
• Nửa nhóm con N của vị nhóm M được gọi là vị nhóm con (submonoid) nếu N chứa
phần tử đơn vị của M.
Một số khái niệm
 Bảng chữ
Giả sử A là tập hữu hạn (hoặc vô hạn) các ký hiệu (symbol), A được gọi là bảng chữ
cái (alphabet)
 Từ
Dãy hữu hạn w tạo nên từ chữ cái trên bảng chữ A gọi là từ (word)

Từ rỗng  - từ không chứa chữ cái nào


Một số khái niệm
 Ghép nối từ - phép nhân
Phép toán kết hợp trên từ được xác định bằng phếp ghép 2 xâu

Phép toán là kết hợp, ta có thể viết


từ rỗng  (hay 1) là phần tử trung hòa w = w = w
Độ dài từ: số chữ cái, thì |w|=n , |  |=0
Một số khái niệm
 A*:
Gọi tập tất cả các từ w trên bảng chữ A (gồm cả từ rỗng ) là A*
Tập tất cả các tử w khác rỗng trên bảng chữ A là A+
A+=A*  (hay A* 1)

• A* được trang bị phép nhân (ghép nối xâu), phần từ đơn vị 1, gọi là vị nhóm tự do
(free monoid) sinh bởi A
• A+=A* 1 gọi là nửa nhóm tự do (free semigroup) được sinh bởi A
Một số khái niệm
 Quan hệ giữa các từ trên bảng chữ
• Khúc con /thừa số (factor)
từ wA* gọi là khúc con của xA* nếu tồn tại u,vA*: x=uwv
w
w là thừa số thực sự nếu wx u v
• Khúc con trái/thừa số trái (prefix)
x
từ wA* gọi là khúc con trái của xA* nếu tồn tại uA*: x=wu w
w là thừa số thực sự nếu wx u
quan hệ prefix, ký hiệu: w  x, w < x nếu w  x và w  x
x
• Khúc con phải (suffix)
Một số khái niệm
 Quan hệ giữa các từ trên bảng chữ
• Bảng chữ A, hai từ x, y  A*
• thương trái:

• thương phải

 Ngôn ngữ
• Tập X  A* gọi là ngôn ngữ trên bảng chữ A
• Cho 2 ngôn ngữ X, Y  A*
• Tập thương trái
vd: X={ab,b}, Y={aab,baa,ab}:
• Tập thương phải
Ngôn ngữ và mã
 Ngôn ngữ X trên bảng chữ A
• Bảng chữ A
• Tập X  A* gọi là ngôn ngữ trên bảng chữ A

 Ngôn ngữ X  A* ,
• X* là vị nhóm con (submonoid) sinh bởi X

• X+ là nửa nhóm con (subsemigroup) sinh bởi X

∗ nếu 1X
• ∗
ngược lại
Ngôn ngữ và mã
 Phân tích (factorization) của từ
• Bảng chữ A
một phân tích của từ w  A* là chuỗi gồm n từ  A* sao cho

• Bảng chữ A, ngôn ngữ X  A*


một phân tích của từ w  X* là chuỗi gồm n từ  X sao cho
Ngôn ngữ và mã
 Ngôn ngữ là mã
• Cho bảng chữ A, X  A*
X được gọi là tập mã (code) nếu  m, n  1 và x1 , .. , xn ; y1 , .. , ym  X,
từ
suy ra

• tập X là mã nếu mọi từ trong X+ có chỉ một phân tích duy nhất bởi các từ trên X
• Mọi mã X không chứa từ rỗng 1
• Nếu X là mã, mọi tập con Y  X cũng là mã
Một số lớp mã cơ bản
Đồng cấu mã
 Liên hệ giữa mã và đồng cấu vị nhóm
Mệnh đề
• Nếu tập con X của A* là mã thì mọi đồng cấu (morphism) : B*  A* , cảm sinh
một song ánh từ bảng chữ cái B nào đó lên X, sẽ là đơn ánh.
• Ngược lại, nếu tồn tại một đơn ánh đồng cấu : B*  A* sao cho (B) = X thì X là
mã .
CM:
• Giả thiết X là mã, : B*  A* là đồng cấu, cảm sinh song ánh B lên X.
Giả sử u,vB* là từ thỏa (u)= (v).
nếu u=1 thì v=1, thật vậy, do (b)1 với mọi chữ b do X là mã-không chứa 1.
nếu u 1 và v 1, đặt u = b1 ... bn ; v = b'1 ... b'm . Do  là đồng cấu nên
(b1)... (bn) =(b'1) ... (b'm)
để ý (bi), (b'j) X và X là mã do đó n=m và (bi)= (b'i) i=1..n. Lại có  là đơn
ánh trên B nên bi = b'i , i=1..n, u=v. Chứng tỏ  là đơn ánh
Đồng cấu mã
Mệnh đề
• Nếu tập con X của A* là mã thì mọi đồng cấu (morphism) : B*  A* , cảm sinh
một song ánh từ bảng chữ cái B nào đó lên X, sẽ là đơn ánh.
• Ngược lại, nếu tồn tại một đồng cấu đơn ánh : B*  A* sao cho (B) = X thì X là
mã .
CM:
• Ngược lại, nếu : B*  A* là đơn ánh đồng cấu, và nếu trên X = (B) có
x1 ... xn = x'1 ... x'm với n,m ≥ 1 nào đó,
Ta xét các ký tự bi , b'j trên B mà (bi)= xi , (b'j)= x'j , i=1..n, j=1..m.
Do  là song ánh đồng cấu nên từ x1 ... xn = x'1 ... x'm v kéo theo
b1 ... bn = b'1 ... b'm , dẫn đến m=n và bi = b'i , từ đây xi = x'i với i=1..n
Vậy X là mã
• Đồng cấu đơn ánh  ở trên gọi là đồng cấu mã
Đồng cấu mã

• Đồng cấu đơn ánh  ở trên gọi là đồng cấu mã cho X


• Với tập mã X ⊂ A* , chỉ ra đồng cấu mã đơn giản là: chọn song ánh từ tập B (bảng
chữ nào đó) lên X và mở rộng thành đồng cấu từ B* sang A*

• B chính là bảng chữ bản rõ, từ trong X là từ mã hóa chữ cái trong B.
Quá trình mã hóa là thực hiện ánh xạ từ bản rõ b1 ... bn
thành thông điệp mã (b1)... (bn) =(b'1) ... (b'n) dùng đồng cấu mã 
 là đơn ánh đảm bảo việc giải mã là duy nhất.

• Giả sử ∗ ∗ là đồng cấu đơn ánh. Nếu X là mã trên bảng chữ A thì (X) là
mã trên C. Ngược Nếu Y là mã trên C thì là mã trên A
Đồng cấu mã
 Ví dụ
• Ví dụ 1 Với mọi bảng chữ cái A, tập X = A luôn là tập mã. Tổng quát hơn với mọi
số nguyên p  1, X = Ap là tập mã, được gọi là mã uniform tạo bởi các từ độ dài p
• Ví dụ 2 Tập X = {bb,abb,ab} trên bảng chữ cái A = {a, b} là tập mã.

• Ví dụ 3 Tập X = {b, aba, ba} từ bảng chữ cái A = {a, b} không là mã


từ w=baba=(b)(aba)=(ba)(ba)
• Tích của 2 tập mã X, Y chưa chắc là mã
ví dụ X = {a; ba} and Y = {a; ab} là mã nhưng
Z=XY={aa; aab; baa; baab } kh là mã: w = (aa)(baab) = (aab)(aab)
Mã Prefix
 Tập prefix
• Tập prefix: Cho tập X  A*, khi đó X gọi là tập prefix nếu không có từ nào trong x
là thừa số trái thật sự (proper left factor) của từ khác trong X. Nói cách khác, tập
X là prefix nếu với mọi từ x, y trong X:
x  y  x = y.
• Hoặc: X là tập prefix nếu X-1 X =  .
 Ví dụ
• X = {abb , bb , bab} trên A={a , b} là tập prefix
• Y = {acc , bac , ca , ba} trên A={a , b , c} không là prefix
Mã prefix
 Mã prefix
• Tập mã X là prefix nếu mọi từ mã không phải là prefix của từ mã khác trong X
• Mệnh đề: Mọi tập prefix khác {1} đều là mã.
 Biểu diễn cây cho tập prefix
• Biếu diễn cây cho A* tập prefix: phần tử là nút lá
Mã suffix
 Đối ngẫu với prefix - ta có suffix
 Tập suffix
• Tập suffix: Cho tập X  A*, khi đó X gọi là tập suffix nếu không có từ nào trong x
là thừa số phải thật sự (proper right factor) của từ khác trong X.

 Mã suffix
• Mọi tập suffix khác {1} đều là mã
Kiểm tra tính chất mã
 Ví dụ:
Cho A = {a, b} và tập X = {b, abb, abbba, bbba, baabb}.
X không là mã vì có từ w = abbbabbbaabb có hai phân tích:
w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb)
(abbba) = (abb)ba
(abbba) = (abb)(b)a
(abbba)bb = (abb)(b)(abb)
(abbba)(bbba) = (abb)(b)(abb)ba
(abbba)(bbba)abb = (abb)(b)(abb)(baabb)
(abbba)(bbba)(abb) = (abb)(b)(abb)(baabb)

Trong thuật toán kiểm tra, tính tất cả các phần dư trên tất cả các bước tạo phân
tích kép.
Thuật toán xác định phân tích kép qua sự kiện từ rỗng nằm trong tập các phần dư
Kiểm tra tính chất mã
 Thuật toán Sardinas-Patterson
• Đầu vào: tập XA+ , đầu ra: kết luận X có là mã hay không.
B1 U1 = X-1X 1
B2 Un+1 = Un1X  X1Un .
B3
If 1  Un+1 then goto B5
If Un =  or Uk = Un   (với k < n nào đó) then goto B4
else goto B2
B4 X là mã. Kết thúc
B5 X không là mã. Kết thúc
Kiểm tra tính chất mã
 Thuật toán Sardinas-Patterson
• Giả sử X  A+ và Un (n  1) được xác định như trên.
Với n  1 tuỳ ý, với mọi k  {1, 2, .. ,n},
ta có 1  Un khi và chỉ khi tồn tại u  Uk và 2 số nguyên i, j  0 sao cho:
u Xi  Xj   , và i + j + k = n

• X  A+ là mã khi và chỉ khi không có tập Un nào chứa từ rỗng 1.


Kiểm tra tính chất mã
 Ví dụ cho tập X = {ab,abb,baab,bbab}. Kiểm tra tính chất mã
• Ta tính các tập Ui
U1 = {b}
U2 = {aab,bab}
U3 = 
X là mã
Độ trễ giải mã
 Độ trễ
• Nếu mã X là prefix - giải mã phân tách tức thời
• Nếu mã X không là prefix

• chẳng hạn: X={ab,abb,baab}


• nhận được thông điệp mã: ab...
Độ trễ giải mã
 Độ trễ

• Giả sử X là tập con của A*. Khi đó ta nói X có độ trễ giải mã hữu hạn nếu tồn tại số
nguyên d  0 sao cho:
 x , x’  X;  y  X d ;  u  A*, xyu  x’X*  x = x’

• Nếu X có độ trễ giải mã hữu hạn thì số nguyên nhỏ nhất thoả hệ thức trên gọi
là độ trễ giải mã của X
Độ trễ giải mã
 Thuật toán tính độ trễ
• Y = X, V0 = Y
• U0 = Y1X  1
• U0 = U0 + Y  U0
• V1 = U01 Y + X1 V0

• Vi+2 = Ui+11 Y + X1 Vi+1 :

• Ui+1 = Vi+11X
• Ui+1 = Ui+1 + Y Ui+1

• Tập X có độ trễ giải mã hữu hạn d khi và chỉ khi Vd+1 = .


Độ trễ giải mã
 Thuật toán tính độ trễ giải mã

B0. Y = X; V0 = Y
B1. U0 = Y1X  1
U0 = U0 + Y U0
V1 = U01 Y + X1 V0
B2. Biết Ui , Vi+1 xác định Ui+1 , Vi+2 như sau
Ui+1 = Vi+11X
Ui+1 = Ui+1 + Y Ui+1
Vi+2 = Ui+11 Y + X1 Vi+1 .
B3. Nếu Uk = Un hoặc Vk = Vn khác rỗng thì X là mã có độ trễ giải mã vô hạn.
Kết thúc
B4. Nếu Vd+1 =  thì X có độ trễ giải mã hữu hạn d. Kết thúc
Độ trễ giải mã
 Ví dụ Cho X={ab,abb,baab}, tính độ trễ giải mã của X
• Ta có

U0 = {b} V1 ={aab,b}; U1 = {aab} V2 =.


X có độ trễ giải mã d=1.

You might also like