Integrity
Upcoming SlideShare
Loading in...5
×
 

Integrity

on

  • 4,005 views

Integrity Authentication Methods

Integrity Authentication Methods

Statistics

Views

Total Views
4,005
Views on SlideShare
3,943
Embed Views
62

Actions

Likes
1
Downloads
627
Comments
1

1 Embed 62

http://startnewday85.blogspot.com 62

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Integrity Integrity Presentation Transcript

  • Information Safe IntegrityVan Hoang NguyenMail: startnewday85@gmail.comDepartment of Computer ScienceFaculty of Information Technology – Hanoi University of Agriculture.
  • Integrity
  • Why must you care?
  • Dữ liệu có thể bịthay đổi ngoài ý muốn
  • Chúng ta có thể làm gì?
  • Tìm mọi cách ngăn cản?I think I can’t, And you?
  • Cần xác thực tính toàn vẹn
  • Xác thực bằng cách nào?
  • Các giải pháp
  • Encryption
  • Encryption• Sửa đổi trên bản mã sẽ không dự trù đượcthay đổ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.
  • Encryption• Symmetric encryption M E E M K E(K,M) K
  • Encryption• Asymmetric encryption M E E M PU PR Không giữ được tính bí mậtM E E E E M PRA PUB PRB PUA Đảm bảo tính bí mật
  • Hash function
  • 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ạihàm băm khác nhau.
  • 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 bitsbấ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
  • Hash functionVí 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.
  • Cryptographic hash function
  • Cryptographic Hash function• Hàm băm có thể được sử dụng cho mục đíchcủa khoa học mật mã.• Với ứng dụng mật mã, h(m) được gọi là “dấuvân tay số” của m(digital fingerprint).• Ứng dụng truyền thống và phổ biến của hàmbă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ốicác gói phần mềm.
  • 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.
  • 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ămmật mã nếu nó chống được sự “đụngđộ”(collision).
  • • Collision resistant => Second Pre-imageresistant. - 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-imageresistant. - 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ỏ).
  • Cryptographic Hash functionXâ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àmbăm chống đụng độ bằng các hàm hoán vị mộtchiều.• Trên thực tế, hàm băm mật mã được xây dựngtừ 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
  • Merkle-Damgard’s constructionXâ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}n1. 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.
  • Cryptographic Hash functionKhi thiết kế hàm băm mật mã ta hướng tới cáctiê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”.
  • Cryptographic Hash functionKhi thiết kế hàm băm mật mã ta phải quan tâmtớ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?
  • Cryptographic Hash functionGiả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.
  • Cryptographic Hash functionBirthday attack thành công là bởi xác suất có đụng độ tăng rất nhanh theo k.
  • Cryptographic Hash functionCỡ 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.
  • Secure Hash Algorithm (SHA)
  • 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.
  • Secure hash algorithmMộ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
  • Secure hash algorithm
  • SHA-512
  • SHA-512Mộ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.
  • SHA-512Padding 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.
  • SHA-512Parsing 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.
  • SHA-512Initialization: Khởi tạo giá trị băm ban đầu.
  • SHA-512Hash 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.
  • SHA-512Hash computation: Message schedule Tại lần lặp thứ i: Trong đó:
  • SHA-512Hash computation: thiết lập các biến trung gian Tại lần lặp thứ i:
  • SHA-512Hash computation: biến đối các biến trung gian Tại lần lặp thứ i: Trong đó: Kt là các hằng số.
  • SHA-51280 hằng số Kt 64-bit:
  • SHA-512Hash computation: biến đối các biến trung gian Một số hàm đã được sử dụng:
  • SHA-512Hash computation: tính giá trị băm thứ i:
  • Message digest algorithm
  • MDx• MDx là các thuật toán tínhmessage-digest được phát triển bởiRonald L.Rivest.• MDx bao gồm MD2, MD4, và MD5được phát triển vào năm 1989, 1990và 1991.• MDx tạo ra message-digest dài128-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ênnhỏ hơn 264 bits.
  • MD5MD5 được miêu tả trong RFC 1321 vào năm 1992
  • MD5MD5 xử lý một khối qua bốn bước(vòng)
  • MD5Các hàm được sử dụng:
  • SHA-1 vs MD5
  • 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 bitshash. MD5 tính toán ít hơn và trả ra 128 bits hash.• MD5 thực hiện nhanh hơn SHA.
  • MessageAuthentication code (MAC)
  • MAC• MAC – mã xác thực thông điệp là một xâu bits đượcsử 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’.
  • 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
  • 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).
  • Xây dựng MAC(k,m) như thế nào?
  • l(n)-restricted MAC• Một lược đồ MAC tổng quát có thể thực hiện trên cácthô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ácthông điệp vào được ràng buộc bởi một độ dài cố địnhl(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)-bitvới khóa k.
  • 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àmngẫ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 đượcxây dự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ểuhash-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:
  • 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ặchàm băm hoặc hàm giả ngẫu nhiên. Có 2 cách tiếp cậnnhư 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)..
  • Cipher-basedMessage Authentcation code
  • 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ậtmã khối. CMAC dựa trên chế độ CBC với IV=0.
  • CMACCá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 caohiệ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 PUB81 gồm có: - Electronic code book.-ECB - Cipher block chaining-CBC - Cipher Feed Back .- CFB - Counter-CTR.
  • CMACBả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.
  • CMAC• Ở đây ta sẽ nghiên cứu một vài cách thức xâydựng CMAC.• Ta thống nhất sử dụng mã khối E để xây dựngCMAC. E được định nghĩa như sau: E: {0,1}n*{0,1}r -> {0,1}nTrong đó: - n là cỡ khối. - r là cỡ khóa.
  • 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:
  • 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)
  • AES-XCBC- MAC-96
  • AES-XCBC-MAC-96• Trong RFC 3566(Frankel&Herbert 2003), DES CBCkhô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 trongchế độ 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 bitskhóa..• AES-XCBC –MAC-96 cũng được gọi là CMAC...
  • AES-XCBC-MAC-96Xé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.
  • 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.
  • AES-XCBC-MAC-96Sự an toàn của CMAC phụ thuộc vào cách thức thựchiện của hàm mã hóa E. CMAC được coi là an toàn nếuE cư xử gần với cư xử của hàm ngẫu nhiên(hoán vị).
  • Keyed-HashMessage Authentcation code
  • 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ơnDES..• Thư viện code cài đặt cho các hàm băm mật mã rấtphong phú và tiện lợi.Ngày nay với sự phát triển của AES, thư viện code chomã 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.
  • 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 đượcthiế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ậtmã để 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?
  • Keyed-Hash MACRFC-2104 đưa ra một danh sách các yếu tố cần quan tâm khithiế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ínhlinh độ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ệcphân tích và đánh giá nhất là sự đánh giá ảnh hưởngcủa hàm băm tới toàn bộ thiết kế.
  • • 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ạngnhư Ipsec, SSL.
  • 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:
  • 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. 
  • 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.
  • 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ư:
  • HMAC
  • HMAC• Theo mô tả trong FIPS PUB 198, HMAC xây dựngdự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).
  • HMAC• Ta xét:.• Cỡ của k tùy thuộc vào cài đặt cụ thể. Tuy nhiên nếucỡ của k nhỏ hơn cõ khối(B) của h thì cài đặt phải độnthê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.
  • Tính an toàn của HMACDễ 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ẫunhiên.
  • Tính an toàn của HMACCách thức xây dựng HMAC từ hàm băm cũng cho thấy nhữngyếu điểm. Chẳng hạn những cấu trúc sau::
  • Tính an toàn của HMACSự 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.