Đồ án tốt nghiệp Nghiên cứu quy trình sản xuất snack từ rong nâu Sargassum po...
Integrity
1. Information Safe
Integrity
Van Hoang Nguyen
Mail: startnewday85@gmail.com
Department of Computer Science
Faculty of Information Technology – Hanoi University of Agriculture.
11. Encryption
• Sửa đổi trên bản mã sẽ không dự trù được
thay đổi trên bản giải mã.
• Khi giải mã sẽ dễ dàng thấy kết quả không phù
hợp về ngữ nghĩa.
Dễ thấy, phương pháp này khó có thể tự
động hóa được.
15. Hash function
• Định nghĩa:
Cho hai miền D và R,
Một ánh xạ h: D-> R với |D|>>|R|.
• Ứng dụng:
- Tìm kiếm nhanh(hash table).
- Error detection/correction.
- Cryptography: cryptographic hash funciton.
- Các ứng dụng khác.
• Các ứng dụng khác nhau yêu cầu loại
hàm băm khác nhau.
16. Hash function
• Trong bối cảnh này, hash function có thể
hiểu đơn giản là một ánh xạ từ một xâu bits
bất kỳ tới một xâu bits có độ dài cố định n.
• h: X ->Y với |X|>|Y|
h: (0,1)* -> (0,1)n
17. Hash function
Ví dụ: Một hàm băm đơn giản
• Input là m khối n-bit.
• Output là một xâu c độ dài n bits.
• Trong đó:
ci là bit thứ i của output c.
bij là bit thứ i của khối thứ j.
19. Cryptographic Hash function
• Hàm băm có thể được sử dụng cho mục đích
của khoa học mật mã.
• Với ứng dụng mật mã, h(m) được gọi là “dấu
vân tay số” của m(digital fingerprint).
• Ứng dụng truyền thống và phổ biến của hàm
băm mật mã là đảm bảo sự bí mật của password.
(user name, password) (username,h(password))
• Ngày nay được sử dụng nhiều trong phân phối
các gói phần mềm.
20. Cryptographic Hash function
Để đáp ứng được yêu cầu của ứng dụng mật mã,
hàm băm phải thỏa mãn các tính chất sau:
• Pre-image resistant hay one-way.
• Second Pre-image resistant hay weak
collision resistant.
• Collision resistant hay strong collision
resistant.
21. Cryptographic Hash function
• Trên cơ sở toán học, ta có:
collision resistant=> second pre-image resistant
=> pre-image resistant
• Định nghĩa: Một hàm băm được gọi là hàm băm
mật mã nếu nó chống được sự “đụng
độ”(collision).
22. • Collision resistant => Second Pre-image
resistant.
- Có thể tìm được 1 đụng độ <= Có thể tìm một second Pre-image.
- Nếu ta có thể tìm được m’ là second pre-image của h(m) thì m và
m’s là một đụng độ.
• Second pre-image resistant => pre-image
resistant.
- Có thể tìm được 1 second pre-image <= Có thể tìm 1 Pre-image.
- Đơn giản, giả thiết |h-1(y)|>1 với mỗi giá trị băm y. Có một thuật
toán xác suất A trả ra pre-image của m với xác suất không nhỏ là
p(với m đã cho).
- Bằng cách gọi A như một hàm con, chúng ta có thể tìm secod
pre-image m với xác suất ≥p/2(là một xác suất không nhỏ).
23. Cryptographic Hash function
Xây dựng một hàm băm mật mã như thế nào?
h: {0,1}* -> {0,1}n
• Về mặt lý thuyết, ta có thể xây dựng các hàm
băm chống đụng độ bằng các hàm hoán vị một
chiều.
• Trên thực tế, hàm băm mật mã được xây dựng
từ các hàm nén thông qua một tiến trình gọi là
Merkle-Damgard’s construction.
f: {0,1}n+r -> {0,1}n
24. Merkle-Damgard’s construction
Xây dựng một hàm băm mật mã từ hàm nén.
h: {0,1}* -> {0,1}n xây dựng từ f: {0,1}n+r -> {0,1}n
1. Với m{0,1}*, độn thêm các bits để độ dài m sau khi
độn là bội của r..
2. Tách m=m1m2…mk với |mi|=r.
3. Gán v0=IV và vi=f(vi-1||mi) với 1≤i≤k; IV là hằng(0n).
4. Giá trị băm h(m)=vk.
25. Cryptographic Hash function
Khi thiết kế hàm băm mật mã ta hướng tới các
tiêu chí sau:
1. Đầu vào là một xâu bits có cỡ “bất kỳ”.
2. Output phải có cỡ cố định(n).
3.Hàm phải có tính khả thi.
4. Strong collision resistant.
Trên thực tế, cỡ của xâu bits input thường có cỡ hữu hạn trong
một miền [0,2s]. Độ lớn của s nói chung càng lớn càng “tốt”.
26. Cryptographic Hash function
Khi thiết kế hàm băm mật mã ta phải quan tâm
tới cỡ của output(n).
• n phải đủ lớn để h có thể chống lại
birthday attack.
• Birthday attack: sinh ra một tập message
{m1,m2,..,mk} và kiểm tra h(mi)=h(mj).
• Birthday problem: trong một nhóm k người
thì xác suất bắt gặp ít nhất 2 người có cùng
ngày sinh là bao nhiêu?
Đâu là cơ sở cho sự thành công của birthday attack?
27. Cryptographic Hash function
Giải quyết vấn đề birthday.
k=23 thì p≈0,5073; k=100 thì p≈0,9999997.
=> Birthday pradox!
Giải quyết vấn đề birthday tổng quát.
P(N,k)≥0.5=>k=1,18 n .
=> Birthday attack thành công với k=2n/2.
29. Cryptographic Hash function
Cỡ của message digest
• n=64 => không an toàn. Năm 2004 đã
phát hiện đụng độ trong SHA-1.
• n tối thiểu là 128 bits.
• Ngày nay để đảm bảo an toàn, n được
khuyến cáo tối thiểu là 160 bits.
31. Secure hash algorithm
• SHA được phát triển bởi NIST.
• SHA được lấy là chuẩn và được công bố
trong các FIPS PUB 180,180-1,180-2 và
180-3.
• SHA là các hàm băm không khóa được sử
dụng để tạo các message digest.
• Các thuật toán SHA gồm có: SHA-1, SHA-
224, SHA-256, SHA-384, SHA-512.
32. Secure hash algorithm
Một số tính chất của SHA.
- Input được chia thành các khối có cùng Begin
độ dài để xử lý.
Pre- Padding
- Thuật toán được chia làm 2 pha: process
Parsing
+ Preprocess.
+ Hash computation. Initialization
Hash computation
End
35. SHA-512
Một số tính chất của SHA-512:
• Message size: 0≤l<2128.
• Block size: 1024 bits.
• Message digest size: 512 bits.
• Word size: 64 bits.
• Sử dụng 8 biến trung gian, mỗi biến là một
từ 64-bit.
36. SHA-512
Padding message:
• Mục đích: thêm x bits vào thông điệp để:
l+x=N*1024 bits
• Phương pháp:
- Thêm bit 1 vào cuối message.
- Thêm it 0 vào cuối, với k là số không âm
nhỏ nhất: k+l+1≡ 896 mod 1024.
- Gắn vào cuối khối 128 bits – là biểu diễn nhị
phân của l.
37. SHA-512
Parsing the added message:
• Thông điệp sau khi được độn thêm bit để
có độ dài là bội của 1024, sẽ được phân
tích thành các khối 1024 bits.
M1, M2, M3, …, Mn-1, Mn
• Mỗi khối được biểu diễn bằng 16 từ 64-
bit.
39. SHA-512
Hash computation:
• Lặp N lần để xử lý lần lượt N khối.
• Tại lần lặp thứ i(1≤i≤N).
- Message schedule: chuyển block thành 80 từ 64-bit.
- Thiết lập giá trị băm cho 8 biến trung gian.
- Thực hiện vòng lặp để biến đổi giá trị các biến trung
gian.
- Tính giá trị băm thứ i.
• Giá trị băm thứ N là giá trị băm của
thông điệp.
47. MDx
• MDx là các thuật toán tính
message-digest được phát triển bởi
Ronald L.Rivest.
• MDx bao gồm MD2, MD4, và MD5
được phát triển vào năm 1989, 1990
và 1991.
• MDx tạo ra message-digest dài
128-bits.
• Về phương diện lý thuyết MDx chấp nhận input có
chiều dài bất kỳ, tuy nhiên thực tế yêu cầu input nên
nhỏ hơn 264 bits.
53. SHA-1 vs MD5
• SHA mạnh hơn MD5:
- Tấn công vét cán birthday attacks yêu cầu 280
trong khi MD5 là 264.
• SHA-1 thực hiện 80 bước biến đổi và trả ra 160 bits
hash. MD5 tính toán ít hơn và trả ra 128 bits hash.
• MD5 thực hiện nhanh hơn SHA.
55. MAC
• MAC – mã xác thực thông điệp là một xâu bits được
sử dụng để xác thực tính toàn vẹn của thông điệp.
• Ý tưởng cơ bản của MAC:
- A và B chia sẻ một khóa bí mật k.
- A gửi cho B: (m,t) với t=MAC(k,m).
- B nhận được (m’,t’). B tính t’’ =MAC(k,m’).
- Nếu t’=t’’ thì B tin tưởng rằng m=m’ con không m≠m’.
56. MAC Shecma
• Lược đồ MAC là một bộ (G,MAC,V):
- G kà thuật toán sinh khóa.
- MAC là thuật toán tính mac: t=MAC(k,m)..
- V là thuật toán xác minh: V(k,m,t) =1 thì m được tin
tưởng là toàn vẹn còn không m đã bị xâm phạm tính toàn
vẹn.
• G và MAC có thể xác suất, nhưng V nhất định phải
đơn định.
• Lược đồ phải đảm bảo tính đúng đắn:
Với mọi k,m thì: V(k,m,MAC(k,m))=1
57. MAC(k,m)
Yêu cầu đối với hàm MAC(k,m):
- Output của MAC(k,m) phải có giá trị như một message
digest. MAC như một hàm băm có khóa.
- Để đảm bảo tính an toàn: việc tìm được một cặp
(m,MAC(k,m)) mà không có khóa là không thể(trên
phương diện lý thuyết tính toán).
59. l(n)-restricted MAC
• Một lược đồ MAC tổng quát có thể thực hiện trên các
thông điệp có chiều dài bất kỳ: M={0,1}*.
• Việc xây dựng MAC sẽ dễ dàng hơn nếu tất cả các
thông điệp vào được ràng buộc bởi một độ dài cố định
l(n).
• MAC với M={0,1}l(n) được gọi là l(n)-restricted MAC.
• Khi đó MAC có thể được xây dựng từ các hàm giả
ngẫu nhiên l(n)-bit.
• MAC(k,m)=f(k,m) với f là hàm giả ngẫu nhiên l(n)-bit
với khóa k.
60. l(n)-restricted MAC
• Fn={fk:{0,1}l(n) -> {0,1}l(n) | kЄ {0,1}n}nЄN là họ các hàm
ngẫu nhiên.
• Việc xây dựng lược đồ MAC: (G,MAC,V) như sau:
- k=G(1n), k được sinh ngẫu nhiên: kЄ{0,1}n..
- Với kЄ{0,1}n và mЄ{0,1}l(n) thì: t=MAC(k,m)=fk(m).
- Vk(k,m,t)=1 nếu fk(m)=t, bằng 0 với các trường hợp còn
lại.
• Người ta đã chứng minh được rằng lược đồ MAC được
xây dựng như trên là an toàn.
61. Hash-then-Authenticate
• Một lược đồ MAC tổng quát được xây dựng theo kiểu
hash-then-authenticate.
• hash-then-authenticate:
- Bước 1 tính m’=h(m) với h là một hàm băm mật mã trả
ra output có cỡ l(n)-bit..
- Với kЄ{0,1}n và mЄ{0,1}l(n) thì: t=MAC(k,m)=fk(m).
- Bước 2: Sử dụng l(n)-restricted MAC schema để tính
mã xác thực t. Bước này thực chất là sử dụng một hàm
ngẫu nhiên với khóa k.
• Như vậy:
62. MAC
• Như vậy để xây dựng lược đồ MAC tổng quát ta sử
dụng hàm băm và hàm giả ngẫu nhiên.
• Trên thực tế, MAC được xây dựng chỉ dựa trên hoặc
hàm băm hoặc hàm giả ngẫu nhiên. Có 2 cách tiếp cận
như sau:
- Tiếp cận truyền thống: Xây dựng hàm MAC từ các mã
khối . Các hàm MAC xây dựng theo cách này được gọi là
CMAC...
- Bổ xung thêm yếu tố khóa cho các hàm băm mật mã đã
có.(HMAC)..
64. CMAC
• CMAC là cách thức tiếp cận truyền thống và phổ biến
để xây dựng các hàm MAC.
• CMAC dựa trên yếu tố khóa và khối trong các mật mã
khối.
• CMAC dựa trên chế độ thi hành đặc biệt của các mật
mã khối. CMAC dựa trên chế độ CBC với IV=0.
65. CMAC
Các chế độ thi hành của mật mã khối:
• Một chế độ thi hành là một kỹ thuật nhằm nâng cao
hiệu quả của mật mã khối cho một loại ứng dụng cụ thể.
• Các chế độ thi hành được định nghĩa trong FIPS PUB
81 gồm có:
- Electronic code book.-ECB
- Cipher block chaining-CBC
- Cipher Feed Back .- CFB
- Counter-CTR.
66. CMAC
Bản chất của CMAC:
• CMAC dựa trên chế độ CBC của các mã khối.
• CMAC cũng được xây dựng dựa trên ý tưởng
hash-then-authenticate.
• CMAC có thể nhiều biến thể khác nhau. Mỗi biến
thể có cách xây dựng khác nhau.
67. CMAC
• Ở đây ta sẽ nghiên cứu một vài cách thức xây
dựng CMAC.
• Ta thống nhất sử dụng mã khối E để xây dựng
CMAC. E được định nghĩa như sau:
E: {0,1}n*{0,1}r -> {0,1}n
Trong đó:
- n là cỡ khối.
- r là cỡ khóa.
68. CMAC
Ý tưởng(1): m=m1||m2||…||ms với |mi|=n.
• Sinh ra hai khóa từ khóa k:
k1=Ek(1) và k2=Ek(2)
• Áp dụng E tới m trong chế đọ CBC với khóa k1:
c0=IV(thường là 0n)
For i=1 to s do ci=Ek1(xor(ci-1,mi))
• Áp dụng E lên block cs với khóa k2:
CMAC(k,m)=Ek2(cs)
• Hash-then-Authenticate:
69. CMAC
Ý tưởng(2): m=m1||m2||…||ms với |mi|=n.
• Sinh ra m’=m0||m với m0=|m|2.
• Áp dụng E tới m’ trong chế độ CBC với khóa k:
c0=IV(thường là 0n)
For i=1 to s’ do ci=Ek(xor(ci-1,m’i))
• Áp dụng E lên block cs với khóa k:
CMAC(k,m)=Ek(cs)
71. AES-XCBC-MAC-96
• Trong RFC 3566(Frankel&Herbert 2003), DES CBC
không an toàn cho các thông điệp có chiều dài thay
đổi(IP-datagrams)..
• AES-XCBC-MAC-96 là thuật toán sử dụng AES trong
chế độ CBC với những mở rộng để thay thế DES-CBC.
• RFC 3566 khuyến cáo nên sử dụng AES với 128 bits
khóa..
• AES-XCBC –MAC-96 cũng được gọi là CMAC...
72. AES-XCBC-MAC-96
Xét: k=128-bit; M=M1…Mn. Mi có cỡ 128-bit trừ Mn=1->128.
1. Sinh 3 khóa k1,k2,k3 bắt nguồn từ K.
2. Khởi tạo giá trị E[0](chính là IV).
3. Với Mi (1<i<n): E[i]=E(k1,xor(Mi,E[i-1])).
4. Với Mn :
- Mn là 128-bit: a=E(k2,xor(Mn,E[n-1])); E[n]= E(k1,a)
- Mn < 128-bit:
+) độn bit: Mn=Mn||10* để |Mn|=128.
+) a=E(k3,xor(Mn,E[n-1])); E[n]= E(k1,a)
5. 96 bits trái nhất của E[n] được lấy làm giá trị MAC.
73. AES-XCBC-MAC-96
• AES-XCBC-MAC-96 sinh ra 128-bit có thể lấy cả
làm mã xác thực(MAC).
• Nhưng chỉ lấy ra 96 bits trái nhất. Chiều dài 96 bits
được lựa chọn là để phù hợp với các giao thức ESP và
AH..
• AES-XCBC –MAC-96 được sử dụng trong IPsec.
74. AES-XCBC-MAC-96
Sự an toàn của CMAC phụ thuộc vào cách thức thực
hiện của hàm mã hóa E. CMAC được coi là an toàn nếu
E cư xử gần với cư xử của hàm ngẫu nhiên(hoán vị).
76. Keyed-Hash MAC
Động lực cho phát triển keyed-hash MAC:
• Các hàm băm mật mã(SHA,MDX) thực hiện nhanh hơn
DES..
• Thư viện code cài đặt cho các hàm băm mật mã rất
phong phú và tiện lợi.
Ngày nay với sự phát triển của AES, thư viện code cho
mã khối cũng rất phong phú, khiến những động lực trên
không còn sức thuyết phục.
77. Keyed-Hash MAC
Động lực cho phát triển keyed-hash MAC:
• Rõ ràng các hàm băm mật mã(SHA,MDX) thực sự
không thể sử dụng như một MAC bởi chúng không được
thiết kế cho mục đích này.
• Cần bổ xung yếu tố khóa bí mật vào các hàm băm mật
mã để biến chúng thành một hàm MAC.
Như vậy vấn đề đặt ra là bổ xung yếu tố khóa như thế
nào. Những yếu tố nào cần quan tâm khi đưa yếu tố
khóa bí mật vào hàm băm?
78. Keyed-Hash MAC
RFC-2104 đưa ra một danh sách các yếu tố cần quan tâm khi
thiết kế keyed-hash MAC:
1. Cần tránh phải sửa đổi những hàm băm mật mã đã có
nhất là các hàm đã được đánh giá là tốt.
2. Hàm băm được nhúng vào trong thiết kế phải có tính
linh động, dễ dàng được thay thế.
3. Cho phép sử dụng và quản lý khóa theo con đường
đơn giản nhất có thể.
4. Thiết kế phải có cấu trúc rõ ràng và tiện cho việc
phân tích và đánh giá nhất là sự đánh giá ảnh hưởng
của hàm băm tới toàn bộ thiết kế.
79. • Nhiều giải pháp khác nhau đã được đưa ra và HMAC
được đồng tình hơn cả.
• HMAC được đưa ra trong RFC-2104.
• HMAC được NIST lấy làm chuẩn và được miêu tả
trong FIPS PUB-198.
• HMAC được sử dụng trong rất nhiều giao thức mạng
như Ipsec, SSL.
80. HMAC
Ý tưởng cơ bản của HMAC(1):
• Vấn đề của ta là xây dựng một MAC hash-then-
authenticate từ các hàm băm mật mã.
• Trước tiên, các hàm băm mật mã được xây dựng
dựa trên Merkle-Damgard’s construction. Do đó nó
sẽ chứa IV(initial vector) và hàm nén f.
• Một hàm nén với IV khác nhau sẽ hành xử khác
nhau.
• Ta xây dựng một họ các hàm băm H như sau:
81. HMAC
Ý tưởng cơ bản của HMAC(1):
• Như vậy ta đã có họ các hàm băm H:.
• HMAC có thể được xây dựng như sau:
=> Như vậy ta đã sử dụng 2 hàm băm khác nhau:
hs1 và hs.
• Đáng tiếc là với SHA-1, IV lại là một hằng không
thể thay đổi.
82. HMAC
Ý tưởng cơ bản của HMAC(2):
• Cũng với họ hàm băm H:.
• Lần này ta chấp nhận hàm băm h với IV=IV0 là
một hằng. Ta sẽ tìm cách xây dựng một hàm ngẫu
nhiên hs từ h.
• Ta chọn một k ngẫu nhiên thuộc {0,1}r.
83. HMAC
Ý tưởng cơ bản của HMAC(2):
• Như vậy ta đã có thể xây dựng hàm hs ngẫu nhiên
từ hàm băm h:
• Giờ ta sẽ cài đặt:.
như:
85. HMAC
• Theo mô tả trong FIPS PUB 198, HMAC xây dựng
dựa trên hàm băm h như sau:.
• Trong đó kin và kout được sinh từ khóa k như sau:
• Với h là một hàm băm bất kỳ(SHA hoặc MDx).
86. HMAC
• Ta xét:.
• Cỡ của k tùy thuộc vào cài đặt cụ thể. Tuy nhiên nếu
cỡ của k nhỏ hơn cõ khối(B) của h thì cài đặt phải độn
thêm bit vào k, ngược lại k>B thì phải cắt bỏ bớt k.
• Theo như mô tả trong FIPS PUB 198-a(2002) thì:
Với B là cỡ khối của hàm băm h với đơn vị là byte.
87. Tính an toàn của HMAC
Dễ thấy tính an toàn của HMAC phụ thuộc vào:
• Khả năng chống xung đột của hàm băm mật mã h.
• Hàm nén f phải làm sao cư xử giống với một hàm ngẫu
nhiên.
88. Tính an toàn của HMAC
Cách thức xây dựng HMAC từ hàm băm cũng cho thấy những
yếu điểm. Chẳng hạn những cấu trúc sau::
89. Tính an toàn của HMAC
Sự không an toàn: MAC(k,m)=h(m) với IV=k.
Dễ làm giả ( m’,h(k,m’)) m’=m||ms+1.