SlideShare uma empresa Scribd logo
1 de 89
Baixar para ler offline
Information Safe
                    Integrity
Van Hoang Nguyen
Mail: startnewday85@gmail.com
Department of Computer Science
Faculty 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ù đượ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.
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ật


M    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ại
hà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 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
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.
Cryptographic
 hash function
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.
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ăm
mật mã nếu nó chống được sự “đụng
độ”(collision).
• 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ỏ).
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
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.
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”.
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?
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.
Cryptographic Hash function
Birthday attack thành công là bởi xác suất có
       đụng độ tăng rất nhanh theo k.
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.
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 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
Secure hash algorithm
SHA-512
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.
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.
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.
SHA-512
Initialization: Khởi tạo giá trị băm ban đầu.
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.
SHA-512
Hash computation: Message schedule
   Tại lần lặp thứ i:




   Trong đó:
SHA-512
Hash computation: thiết lập các biến trung gian

   Tại lần lặp thứ i:
SHA-512
Hash 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-512
80 hằng số Kt 64-bit:
SHA-512
Hash computation: biến đối các biến trung gian

   Một số hàm đã được sử dụng:
SHA-512
Hash computation: tính giá trị băm thứ i:
Message digest
  algorithm
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.
MD5
MD5 được miêu tả trong RFC 1321 vào năm 1992
MD5
MD5 xử lý một khối qua bốn bước(vòng)
MD5
Cá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 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.
Message
Authentication code
      (MAC)
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’.
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á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.
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.
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:
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)..
Cipher-based
Message 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ật
mã khối. CMAC dựa trên chế độ CBC với IV=0.
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.
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.
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.
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 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...
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.
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-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ị).
Keyed-Hash
Message 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ơ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.
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?
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ế.
• 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.
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ự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).
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.
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.
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::
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.

Mais conteúdo relacionado

Mais procurados

Ôn tập an toàn thông tin
Ôn tập an toàn thông tinÔn tập an toàn thông tin
Ôn tập an toàn thông tinMozzila Rosa
 
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTBài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTMasterCode.vn
 
Mạng neuron, trí tuệ nhân tạo
Mạng neuron, trí tuệ nhân tạoMạng neuron, trí tuệ nhân tạo
Mạng neuron, trí tuệ nhân tạoKien Nguyen
 
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTú Cao
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu sốHao Truong
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Nhóc Nhóc
 
7. tìm hiểu hàm băm md5 và ứng dụng
7. tìm hiểu hàm băm md5 và ứng dụng7. tìm hiểu hàm băm md5 và ứng dụng
7. tìm hiểu hàm băm md5 và ứng dụngSai Lemovom
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhJojo Kim
 
Mã hóa đồng cấu
Mã hóa đồng cấuMã hóa đồng cấu
Mã hóa đồng cấuLE Ngoc Luyen
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)realpotter
 
Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926
Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926
Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926nataliej4
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Nguyễn Công Hoàng
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITNguynMinh294
 
Bài giảng ký thuật theo dõi giám sát mạng PTIT
Bài giảng ký thuật theo dõi giám sát mạng PTITBài giảng ký thuật theo dõi giám sát mạng PTIT
Bài giảng ký thuật theo dõi giám sát mạng PTITNguynMinh294
 

Mais procurados (20)

Ôn tập an toàn thông tin
Ôn tập an toàn thông tinÔn tập an toàn thông tin
Ôn tập an toàn thông tin
 
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTBài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
 
Phan1.3
Phan1.3Phan1.3
Phan1.3
 
Mạng neuron, trí tuệ nhân tạo
Mạng neuron, trí tuệ nhân tạoMạng neuron, trí tuệ nhân tạo
Mạng neuron, trí tuệ nhân tạo
 
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu số
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
 
Chia subnetmask
Chia subnetmaskChia subnetmask
Chia subnetmask
 
7. tìm hiểu hàm băm md5 và ứng dụng
7. tìm hiểu hàm băm md5 và ứng dụng7. tìm hiểu hàm băm md5 và ứng dụng
7. tìm hiểu hàm băm md5 và ứng dụng
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tính
 
Mã hóa đồng cấu
Mã hóa đồng cấuMã hóa đồng cấu
Mã hóa đồng cấu
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)
 
Hệ mật mã Mekle-Hellman
Hệ mật mã Mekle-HellmanHệ mật mã Mekle-Hellman
Hệ mật mã Mekle-Hellman
 
Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926
Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926
Xây dựng, thiết kế hệ thống mạng cục bộ (Thực tế) 2225926
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
 
Bài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTITBài giảng mật mã học cơ sở PTIT
Bài giảng mật mã học cơ sở PTIT
 
Bài giảng ký thuật theo dõi giám sát mạng PTIT
Bài giảng ký thuật theo dõi giám sát mạng PTITBài giảng ký thuật theo dõi giám sát mạng PTIT
Bài giảng ký thuật theo dõi giám sát mạng PTIT
 
Hệ mật mã Rabin
Hệ mật mã RabinHệ mật mã Rabin
Hệ mật mã Rabin
 
firewall
firewallfirewall
firewall
 
Đề tài: Thiết kế hệ thống mạng cho một công ty, HOT, 9đ
Đề tài: Thiết kế hệ thống mạng cho một công ty, HOT, 9đĐề tài: Thiết kế hệ thống mạng cho một công ty, HOT, 9đ
Đề tài: Thiết kế hệ thống mạng cho một công ty, HOT, 9đ
 

Destaque

Trust - Digital Signature
Trust - Digital SignatureTrust - Digital Signature
Trust - Digital SignatureHoang Nguyen
 
Introduction to Cross-platform App Development
Introduction to Cross-platform App DevelopmentIntroduction to Cross-platform App Development
Introduction to Cross-platform App DevelopmentHoang Nguyen
 
Conistency of random forests
Conistency of random forestsConistency of random forests
Conistency of random forestsHoang Nguyen
 
SOME SECURITY CHALLENGES IN CLOUD COMPUTING
SOME SECURITY CHALLENGES  IN CLOUD COMPUTINGSOME SECURITY CHALLENGES  IN CLOUD COMPUTING
SOME SECURITY CHALLENGES IN CLOUD COMPUTINGHoang Nguyen
 
Software Testing without Requirements: Survival Guide
Software Testing without Requirements: Survival GuideSoftware Testing without Requirements: Survival Guide
Software Testing without Requirements: Survival GuideOleksandr Lutsaievskyi
 

Destaque (8)

Classical ciphers
Classical ciphersClassical ciphers
Classical ciphers
 
Key Exchange
Key ExchangeKey Exchange
Key Exchange
 
Trust - Digital Signature
Trust - Digital SignatureTrust - Digital Signature
Trust - Digital Signature
 
Introduction to Cross-platform App Development
Introduction to Cross-platform App DevelopmentIntroduction to Cross-platform App Development
Introduction to Cross-platform App Development
 
ORM in Django
ORM in DjangoORM in Django
ORM in Django
 
Conistency of random forests
Conistency of random forestsConistency of random forests
Conistency of random forests
 
SOME SECURITY CHALLENGES IN CLOUD COMPUTING
SOME SECURITY CHALLENGES  IN CLOUD COMPUTINGSOME SECURITY CHALLENGES  IN CLOUD COMPUTING
SOME SECURITY CHALLENGES IN CLOUD COMPUTING
 
Software Testing without Requirements: Survival Guide
Software Testing without Requirements: Survival GuideSoftware Testing without Requirements: Survival Guide
Software Testing without Requirements: Survival Guide
 

Semelhante a Integrity

Chuong 6 xac thuc va toan ven thong tin
Chuong 6  xac thuc va toan ven thong tinChuong 6  xac thuc va toan ven thong tin
Chuong 6 xac thuc va toan ven thong tinnp_thanh
 
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)ducmanhkthd
 
2021. Chương 2 3. Cơ sở toán học của blockchain
2021. Chương 2 3. Cơ sở toán học của blockchain2021. Chương 2 3. Cơ sở toán học của blockchain
2021. Chương 2 3. Cơ sở toán học của blockchainNhường Lê Đắc
 
Mã hóa: hash
Mã hóa: hashMã hóa: hash
Mã hóa: hashNam Vu
 
B4-Ma hoa khoa cong khai.ppt
B4-Ma hoa khoa cong khai.pptB4-Ma hoa khoa cong khai.ppt
B4-Ma hoa khoa cong khai.pptKhnhH59
 
Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hungLuu Tuong
 
Tiểu+luận+antoan
Tiểu+luận+antoanTiểu+luận+antoan
Tiểu+luận+antoanBùi Quân
 
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngTìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngtNguynMinh11
 
Slide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpenSlide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpenTai Tran
 
MATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiMATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiSai Lemovom
 
Baocaoattt
BaocaoatttBaocaoattt
Baocaoatttngng139
 
Bảo mật dữ liệu
Bảo mật dữ liệuBảo mật dữ liệu
Bảo mật dữ liệuSon Nguyen
 
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdfChuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdfDuyNguyn856183
 

Semelhante a Integrity (20)

Chuong 6 xac thuc va toan ven thong tin
Chuong 6  xac thuc va toan ven thong tinChuong 6  xac thuc va toan ven thong tin
Chuong 6 xac thuc va toan ven thong tin
 
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
 
Hệ mật mã Mcelice
Hệ mật mã MceliceHệ mật mã Mcelice
Hệ mật mã Mcelice
 
Hambam
HambamHambam
Hambam
 
2021. Chương 2 3. Cơ sở toán học của blockchain
2021. Chương 2 3. Cơ sở toán học của blockchain2021. Chương 2 3. Cơ sở toán học của blockchain
2021. Chương 2 3. Cơ sở toán học của blockchain
 
Hệ mật mã Mcliece
Hệ mật mã MclieceHệ mật mã Mcliece
Hệ mật mã Mcliece
 
Ma hoa.pdf
Ma hoa.pdfMa hoa.pdf
Ma hoa.pdf
 
Mã hóa: hash
Mã hóa: hashMã hóa: hash
Mã hóa: hash
 
B4-Ma hoa khoa cong khai.ppt
B4-Ma hoa khoa cong khai.pptB4-Ma hoa khoa cong khai.ppt
B4-Ma hoa khoa cong khai.ppt
 
Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hung
 
Tiểu+luận+antoan
Tiểu+luận+antoanTiểu+luận+antoan
Tiểu+luận+antoan
 
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngTìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
 
Ch09
Ch09Ch09
Ch09
 
Slide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpenSlide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpen
 
Encryptions
EncryptionsEncryptions
Encryptions
 
MATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiMATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhai
 
Baocaoattt
BaocaoatttBaocaoattt
Baocaoattt
 
Bảo mật dữ liệu
Bảo mật dữ liệuBảo mật dữ liệu
Bảo mật dữ liệu
 
Ipsec_Vietnamese
Ipsec_VietnameseIpsec_Vietnamese
Ipsec_Vietnamese
 
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdfChuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
 

Mais de Hoang Nguyen

GANs and Applications
GANs and ApplicationsGANs and Applications
GANs and ApplicationsHoang Nguyen
 
Scrum - An introduction
Scrum - An introductionScrum - An introduction
Scrum - An introductionHoang Nguyen
 
Information, Data and Decision Making
Information, Data and Decision MakingInformation, Data and Decision Making
Information, Data and Decision MakingHoang Nguyen
 
Multiple processor systems
Multiple processor systemsMultiple processor systems
Multiple processor systemsHoang Nguyen
 
Multiprocessor Systems
Multiprocessor SystemsMultiprocessor Systems
Multiprocessor SystemsHoang Nguyen
 
Introduction to AOS course
Introduction to AOS courseIntroduction to AOS course
Introduction to AOS courseHoang Nguyen
 
Background Knowledge
Background KnowledgeBackground Knowledge
Background KnowledgeHoang Nguyen
 
Introduction to Information Security Course
Introduction to Information Security CourseIntroduction to Information Security Course
Introduction to Information Security CourseHoang Nguyen
 
Introduction to CNS Course
Introduction to CNS CourseIntroduction to CNS Course
Introduction to CNS CourseHoang Nguyen
 
Testing in the lifecycle
Testing in the lifecycleTesting in the lifecycle
Testing in the lifecycleHoang Nguyen
 
Fundamentals of Testing 2
Fundamentals of Testing 2Fundamentals of Testing 2
Fundamentals of Testing 2Hoang Nguyen
 
Fundamentals of testing 1
Fundamentals of testing 1Fundamentals of testing 1
Fundamentals of testing 1Hoang Nguyen
 
Why the Semantic Web will nerver work
Why the Semantic Web will nerver workWhy the Semantic Web will nerver work
Why the Semantic Web will nerver workHoang Nguyen
 

Mais de Hoang Nguyen (20)

GANs and Applications
GANs and ApplicationsGANs and Applications
GANs and Applications
 
Scrum - An introduction
Scrum - An introductionScrum - An introduction
Scrum - An introduction
 
Stream ciphers
Stream ciphersStream ciphers
Stream ciphers
 
Confidentiality
ConfidentialityConfidentiality
Confidentiality
 
Information, Data and Decision Making
Information, Data and Decision MakingInformation, Data and Decision Making
Information, Data and Decision Making
 
Multiple processor systems
Multiple processor systemsMultiple processor systems
Multiple processor systems
 
Multiprocessor Systems
Multiprocessor SystemsMultiprocessor Systems
Multiprocessor Systems
 
Introduction to AOS course
Introduction to AOS courseIntroduction to AOS course
Introduction to AOS course
 
Background Knowledge
Background KnowledgeBackground Knowledge
Background Knowledge
 
Introduction to Information Security Course
Introduction to Information Security CourseIntroduction to Information Security Course
Introduction to Information Security Course
 
Introduction to CNS Course
Introduction to CNS CourseIntroduction to CNS Course
Introduction to CNS Course
 
Dynamic Testing
Dynamic TestingDynamic Testing
Dynamic Testing
 
Nosql intro
Nosql introNosql intro
Nosql intro
 
Static Testing
Static TestingStatic Testing
Static Testing
 
Testing in the lifecycle
Testing in the lifecycleTesting in the lifecycle
Testing in the lifecycle
 
Fundamentals of Testing 2
Fundamentals of Testing 2Fundamentals of Testing 2
Fundamentals of Testing 2
 
Fundamentals of testing 1
Fundamentals of testing 1Fundamentals of testing 1
Fundamentals of testing 1
 
Why the Semantic Web will nerver work
Why the Semantic Web will nerver workWhy the Semantic Web will nerver work
Why the Semantic Web will nerver work
 
IS sum up 2011
IS sum up 2011IS sum up 2011
IS sum up 2011
 
XSLT
XSLTXSLT
XSLT
 

Integrity

  • 1. Information Safe Integrity Van Hoang Nguyen Mail: startnewday85@gmail.com Department of Computer Science Faculty of Information Technology – Hanoi University of Agriculture.
  • 3. Why must you care?
  • 4. Dữ liệu có thể bị thay đổi ngoài ý muốn
  • 5. Chúng ta có thể làm gì?
  • 6. Tìm mọi cách ngăn cản? I think I can’t, And you?
  • 7. Cần xác thực tính toàn vẹn
  • 8. Xác thực bằng cách nào?
  • 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.
  • 13. Encryption • Asymmetric encryption M E E M PU PR Không giữ được tính bí mật M E E E E M PRA PUB PRB PUA Đảm bảo tính bí mật
  • 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.
  • 28. Cryptographic Hash function Birthday attack thành công là bởi xác suất có đụng độ tăng rất nhanh theo k.
  • 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.
  • 38. SHA-512 Initialization: Khởi tạo giá trị băm ban đầu.
  • 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.
  • 40. SHA-512 Hash computation: Message schedule Tại lần lặp thứ i: Trong đó:
  • 41. SHA-512 Hash computation: thiết lập các biến trung gian Tại lần lặp thứ i:
  • 42. SHA-512 Hash 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ố.
  • 44. SHA-512 Hash computation: biến đối các biến trung gian Một số hàm đã được sử dụng:
  • 45. SHA-512 Hash computation: tính giá trị băm thứ i:
  • 46. Message digest algorithm
  • 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.
  • 48. MD5 MD5 được miêu tả trong RFC 1321 vào năm 1992
  • 49. MD5 MD5 xử lý một khối qua bốn bước(vòng)
  • 50.
  • 51. MD5 Các hàm được sử dụng:
  • 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).
  • 58. Xây dựng MAC(k,m) như thế nào?
  • 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ư:
  • 84. HMAC
  • 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.