- CTR decrytption:
b) Khẳng định SHA – 512 được xâydựng dựa trên tưtưởng của Merkle – Damgard’s construction :
Chứng minh:
Do tư tưởng của Merkle – Damgard’s construction là : hàm băm mật mã SHA-512 được xây dựng từ các hàm nén thông qua một tiến trình:
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 của m sau khi độn là bội của r.
Padding=10…0|m| với|m| là biểu diễn nhị phân chiều dài của m. 2. Tách m= m 1 m 2 ...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 (On). 4. Giá trị băm h(m) = vk.
Câu 19: Trình MDx và MD5, So sánh SHA- 1 với MD5.
+) MDx.
- MDx là các thuật toán tính giá trị băm của thông điệp. - MDx bao gồm MD2, MD4,MD5.
- MDx tạo ra giá trị băm của thông điệp dai 128 bit.
- 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ỏ 264 bits.
+) MD5.
- MD5 xử lý một khối qua bốn vòng.
- Mỗi khối có 512 bit => Nếu chưa đủ thì độn thêm bít vào cho đủ
- Mỗi khối đưa vào MD5 kết hợp với giá trị khởi tạo cho ra output là 128 bit =>Tất cả là giá trị khởi tạo cho khối tiếp theo
- Các hàm được sử dụng :
Ti = int(232 * abs(sin(i))), 0<i<65. +) So sánh SHA – 1 với MD5.
• SHA-1:
- Được phát triển bởi NSA và được yêu cầu để sử dụng với thuật toán ký số(DSA).
- Có thể thực hiện với input có cỡ nhỏ hơn 64 bits. - Tạo ra giá trị băm có cỡ 160 bits.
- Cỡ của khối là 512 bits.
- Vòng lặp chính có 4 vòng với 20 toán tử.
- Xử lý toán tử không tuyến tính trên 3 trong năm biến a,b,c,d,e. • MD5.
- Được phát triển bởi Ronald Rivest vào năm 1991. - Có thể thực hiện với input có cỡ nhỏ hơn 64 bits. - Tạo ra giá trị băm có cỡ là 128 bits.
- Cỡ của khối là 512 bits.
- Vòng lặp chính có 4 vòng với 16 toán tử.
- Xử lý toán tử không tuyến tính trên 3 trong bốn biến a,b,c,d. 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.
Câu 20:MAC là gì và mục đích? Trình bày l(n) – restricted MAC.
Trả lời:
• 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.
+) Mục đích:
- Các mã xác thực thông điệp MAC cung cấp sự tin cậy cho người nhận là thông điệp không bị thay đổi từ đích danh người gửi.
- Mục đích sử dụng mã xác thực MAC kèm theo với việc mã hóa để bảo mật.
+) Ý 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ưtưởng rằng m = m’ còn không m ≠m’. - Lược đồ MAC là một bộ (G,MAC,V):
+ G là 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ể là 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. - 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ể.
+) Xây dựng MAC (k,m) như thế nào?( hay chính là câu hỏi trình bày l(n) – restricted MAC).
b)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.
- 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 rằng các lược đồ MAC xâydựng như trên là an toàn.
+) 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.
+ 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.
m thuộc { 0,1} * -> M’ thuộc {0,1}l(n) -> t.
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.
Câu 20: Đưa ra 2 ý tưởng xây dựng thuật toán MAC, so sánh 2 ý tưởng với nhau.
Trả lời:
Có 2 ý tưởng xây dựng thuật toán MAC là: - AES – XCBC – MAC- 96.
- Keyed – hash MAC.
+) AES – XCBC – MAC-96.
- Theo RFC 3566, DES-CBC không an toàn cho các thông điệp có chiều dài thay đổi.
- 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.
- 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 bits: a = E(k2,XOR(Mn,E[n-1])); E[n]=E(k1,a). + Mn < 128 bits:
độn bít: Mn=Mn||10* để|Mn|=128 bits. 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 MAC.
- 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. +) Keyed – hash MAC.
- Động lực cho phát triển keyed-hash MAC:
+ Các hàm băm mật mã(SHA,MD5) 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.
- Rõ ràng các hàm băm mật mã(SHA,MD5) 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 đưa 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.
- 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 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 đánh giá nhất là đánh giá sự ảnh hưởng của hàm băm tới toàn bộ thiết kế.
Câu 21: Trình bày CMAC?
Trả lời:
- 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. - 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: CBC, OFB, CTR, ECB. - 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ó nhiều biến thể khác nhau. Mỗi biến thể có cách thức xây dựng khác nhau.
- Ở đâ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.
Ý 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à On)
For i = 1 to s do ci = Ek1 (xor (ci-1,m)) + Áp dụng E lên block cs với khóa k2 CMAC(k,m) = Ek2(cs)
Ý 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à On)
For i = 1 to s do ci = Ek1 (xor (ci-1,m))
+ Áp dụng E lên block cs với khóa k2: CMAC(k,m) = cs. Tính an toàn của CMAC.
Sự an toàn của CMAC phục thuộc vào cách thức của hàm mã hóa E. CMAC đưđược coi là an toàn nếu cách thức E xử lý mã hóa một khối là gần như cư xử của một hàm ngẫu nhiên (hoán vị).
Câu 22: Trình bày HMAC?
- HMAC được đưa ra trong RFC-2104. +) Ý tưởng 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 và hàm nén f.
• Một hàm băm mật mã 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:
H={hs: s Є {0,1}n}. Ở đây hs chỉ h với IV=s. • Như vậy ta đã có họ các hàm băm H:
H={hs: s Є {0,1}n}. Ở đâyđây hs chỉ h với IV=s. • HMAC có thể được xây dựng như sau:
m Є{0,1}* hs1(m) hs2 (hs1(m))
=> Như vậy ta đã sử dụng 2 hàm băm khác nhau: hs1 và hs2. +) Ý tưởng cơ bản của HMAC(2):
• Cũng với họ hàm băm H:
H={hs: s Є {0,1}n}. Ở đây hs chỉ h với IV=s.
• 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. Hs(m) = h(k||m). Ta tính s=f(k,IV0).
• Như vậy ta đã có thể xây dựng hàm hs ngẫu nhiên từ hàm băm h:
hs(m) = h(k||m). Ta tính s=f(k,IV0). • Giờ ta sẽ cài đặt:
m Є{0,1}* hs1(m) hs2(hs1(m)) như:
m Є{0,1}* h(k1||m) h(k2||(h(k1||m)))
- HMAC xây dựng dựa trên hàm băm h như sau: HMAC(k,m) = h(kin||h(kout||m))
Trong đó kin và kout được sinh từ khóa k như sau: kin=XOR(k,opad)
kout=XOR(k,ipad)
Với h là một hàm băm bất kỳ(SHA hoặc MDx). Với opad và ipad là các hằng số.
- Ta xét :
HMAC(k,m) = h(kin||h(kout||m))
- 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ớt k.
- Theo như mô tả trong FIPS PUB 198-a(2002) thì: ipad là byte x‘36’ lặp B lần.
opad là byte x‘5c’ lặp B lần.
Với B là cỡ block của hàm băm h với đơn vị là byte. Tính an toàn của HMAC
Dễ thấy sự 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 giả ngẫu nhiên.
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:
MAC(k,m)=h(k||m).
MAC(k,m)=h(m) với IV=k
Sự không an toàn: MAC(k,m)=h(m) với IV=k. Dễ để làm giả: (m’,h(k,m’)) với m’=m||ms+1.
Câu 23: Trong ATTT , tính tin cậy là gì ? phải làm gì để đảm bảo tính tin cậy?
Trả lời:
+) Tính tin cậy là cơ chế để 2 bên tham gia không có xung đột với nhau. +) Để thực hiện đảm bảo tính tin cậy là phải có sự tham gia của một bên
trung gian , đó được coi như là chính phủ.
- ví dụ như có A và B, để A và B không có xung đột với nhau thì xuất hiện CA mà B tin cậy.
- để có được CA thì phải có public key và private key, public key phải được công bố một cách công khai, khi có public key thì chứng tỏ public key đó là của CA.
- để CA được tin tưởng thì chính phủ cấp cho 1 chương trình hay là 1 giấy phép trong giấy phép có public key và private key.