SlideShare a Scribd company logo
1 of 63
Download to read offline
Information Safe
              Confidentiality
                    Modern cipher
Van Hoang Nguyen
Mail: startnewday85@gmail.com
Department of Computer Science
Faculty of Information Technology – Hanoi University of Agriculture.
Modern Ciphers

Block cipher?

    Stream cipher?
Modern Block
  cipher?
Ý tưởng của block Ciphers
Mã hóa từng khối của plaintext một lần. Giả sử độ lớn
của mỗi khối là n bits, thì ứng với mỗi n bits đầu vào
sẽ cho ra n bits mã hóa
                         PlainText

       Block    Block                 Block    Block



                         Encrypt

       CBlock   CBlock                CBlock   CBlock

                         CipherText
Ý tưởng của block Ciphers
Block cipher
     =
Monoalphabetic
   cipher?
Block Ciphers ≈ Monoalphabetic cipher
Để chứng minh, trước hết ta giả sử mỗi khối có cỡ là n
bits. Khi đó:

   • Bảng chữ cái gốc chính là bảng chữ cái mà mỗi chữ
   cái là một bộ n bits

   • Quá trình mã hóa khối đơn giản có thể hiểu là thay
   thế n bits ban đầu bằng n bits mã hóa. Vậy nên nó
   cũng như là việc thay thế chữ cái này bằng chữ cái
   khác

   • Như vậy phương thức mã hóa có thể được diễn đạt
   thông qua một bảng chữ cái mã hóa mà ở đó mỗi chữ
   cái là một bộ n bits
Như vậy mã khối là “tương đương” với mã một bảng chữ cái!
Block cipher
có an toàn không?
Năm 800!!!




Abu Yusuf Ya'qub ibn Is-haq ibn as-
Sabbah ibn 'omran ibn Ismail al-Kindi
Confusion và Diffusion
                 • Hai thuật ngữ này được Claude
                 Shannon đề xuất vào năm 1949 trong ý
                 tưởng về mạng thế và hoán vị(S-P
                 Network)

                 • Confusion – Sự rối loạn là thuật ngữ
                 dùng để chỉ những kỹ thuật nhằm làm cho
                 quá trình tìm kiếm mối quan hệ thống kê
                 giữa khóa và bản mã trở nên “không thể”


                 • Diffusion – Sự khuyếch tán là thuật
                 ngữ dùng để chỉ những kỹ thuật nhằm làm
                 cho quá trình tìm kiếm mối quan hệ thống
                 kê giữa bản gốc và bản mã trở nên
                 “không thể”
Claude Shannon
Tính an toàn của block cipher
• Hàm mã hóa E phải là hàm có tính đảo ngược
được, tức E là một “song ánh”

• Gọi n là cỡ của khối. Khi đó ta sẽ có 2n! các
hàm E khác nhau
       - Với n nhỏ => dễ bị tấn công bởi phương pháp
       thống kê, và vét cạn(brute-force)

       - Với n lớn ?
             Không thể tìm ra mối liên hệ thống kê

             Không thể thực hiện vét cạn vì số lượng hàm E tăng rất
            nhanh theo n
Mã khối tổng quát
Nhược điểm của mã khối tổng quát
Mã khối tổng quát rõ ràng là an toàn với n lớn.
Nhưng n lớn chưa hẳn là khả thi với nhà lập mã:

    • Vì để tạo ra hàm E tổng quát => Khóa đơn giản
    chính là mô tả của hàm E


    • Khi n lớn, mô tả của hàm E sẽ rất phức tạp


Chẳng hạn: Với n=64:

         Để mô tả hàm E cần 64*264 bits ≈ 220 TB!!!
n lớn
  An toàn
Không khả thi
ý tưởng của Horst Feistel
Ý tưởng của Feistel là xấp xỉ ý tưởng mã khối. Cụ
thể là thay vì sử dụng mã khối tổng quát, ta chỉ sử
dụng một tập con trong tập các hàm tổng quát(những
hàm có thể mô tả một cách đơn giản hơn)
   • Hill cipher và các hàm tuyến tính là một ví dụ
       c1  p1k11  p2 k12  ...  pn k1n
       c  p k  p k  ...  p k
        2        1 21        2 22              n 2n

       .............................................
       
       
       .............................................
       cn 1  p1k( n 1)1  p2 k( n 1) 2  ...  pn k( n 1) n
       
       cn  p1k n1  p2 k n 2  ...  pn k nn
       
Hill cipher
Các hàm tuyến tính
    Dễ phá 
ý tưởng của Horst Feistel
• Horst Feistel đề nghị sử dụng mã tích thay vì
các hàm tuyến tính


• Ông đề nghị sử dụng luân phiên phép thế và
phép hoán vị


• Horst Feistel thực sự thành công trong việc
hiện thực hóa ý tưởng S-P Network của Claude
Shannon
Feistel cipher structure
Được xây dựng dựa trên ý tưởng của Feistel.
  • Một khối của plaitext(PB) sẽ chạy qua n vòng mã hóa
  để sinh ra một khối của ciphertext(CB)

  • Đầu tiên PB được chia làm 2 phần ký hiệu là: R0,L0

  • Khóa mã hóa K sẽ được sử dụng để sinh ra n khóa
  con(subkey): ki với 1≤i≤n

  • Tại vòng mã hóa i:
             - Input:    Ri-1, Li-1(là kết quả của vòng thứ i-1)

             - Output: Ri = F(Ri-1,ki) xor Li-1
                         Li = Ri-1
  • CB=Rn||Ln.
Feistel cipher structure
                      K1




                      Kn
Feistel cipher structure
Nhận xét:
   • Hàm thế được áp dụng trên nửa trái(F và phép xor)

   • Các vòng có cùng một cấu trúc nhưng được khác biệt
   hóa bởi khóa con ki

   • Cuối cùng phép hoán vị được thực hiện bằng cách đảo
   vị trí hai nửa

 Cấu trúc của Feistel bản chất là việc thực hiện luân phiên
 các chức năng confusion(rối loạn) và diffusion(khuyếch tán).
 Cấu trúc của Feistel là một cài đặt cụ thể cho ý tưởng của
 Claude Shannon.
Feistel decipher structure
Giống hệt với mã hóa nhưng thực hiện theo chiều
ngược lại:

  • Ciphertext được sử dụng làm input


  • Các khóa con ki được sử dụng theo trình tự ngược
  lại: kn,kn-1,…,k2,k1


 Sự đối xứng trong cấu trúc mã hóa và giải mã chính
    là nét đẹp trong cấu trúc của Feistel cipher.
Nguyên tắc thiết kế mã khối Feistel
Một số yếu tố cần quan tâm khi thiết kế:
      • Block size – Cỡ của khối

      • Key size – Cỡ của khóa

      • Số lượng vòng(n)
      • Thuật toán sinh khóa con
      • Hàm F

       Phần mềm mã hóa/giải mã phải “nhanh”
                Cấu trúc phải “clear”
Data Encryption
Standard(DES)
• Vì sao phải chuẩn hóa việc mã hóa dữ liệu?


• Cấu trúc mã hóa và giải mã của chuẩn mã
hóa dữ liệu DES?


• Tính an toàn của DES
Vì sao phải chuẩn
hóa việc mã hóa dữ
        liệu?
• Ngay trong thời kỳ đầu mã hóa, người ta đã thấy sự
cần thiết phải thống nhất với nhau phương pháp mã hóa


• Điều này càng được thấy rõ hơn trong chiến tranh
thế giới thứ II, khi mà những trao đổi thông tin bí
mật giữa các quốc gia trở nên phổ biến

• Những năm 1960, máy tính đã được sử dụng trong
các doanh nghiệp. Và mã hóa máy tính trở thành
phương tiện cho trao đổi thông tin bí mật

• Ngày 15/5/1973, Cục tiêu chuẩn quốc gia Hoa
Kỳ(NBS) lên kế hoạch chuẩn hóa việc mã hóa dữ liệu
Cấu trúc của DES?
Data Encryption Standard
• Năm 1977, NBS đưa ra chuẩn mã hóa dữ liệu –
DES(FIPS PUB 46)

• DES lập tức trở nên phổ biến trong công việc mã hóa

• DES là một mã khối với:
              - Block size : 64 bits

              - Key size   : 56 bits


• DES được dựa trên dự án Tuchman-Meyer – một phiên
bản cải tiến của Lucifer cho mục đích thương mại
Những tranh luận về thiết kế của
             DES
DES được đưa ra tranh luận vì DES là một chuẩn
công khai. Có 2 khía cạnh là:

   • Key size: theo đánh giá 56 bits là hơi nhỏ


   • Chi tiết thiết kế của S-Box


  Mặc cho những bàn cãi khác nhau về tính an toàn của
    DES. DES vẫn được sử dụng một cách rộng rãi!
DES Encryption
• DES có cấu trúc tương
                           64 bits
tự như cấu trúc của
Feistel nếu bỏ đi hàm IP      IP
và IP-1 ở đầu và cuối.
                           Round 1




                           Round 16

                            Swap

                             IP-1

                           64 bits
Initial permution(IP)
• IP là bước đầu tiên trong cấu trúc của DES


• Bản chất của hàm IP là tạo ra một hoán vị của input


• Hàm hoán vị được định nghĩa theo cấu trúc bảng


• Với một bảng mô tả hàm IP sẽ có bảng tương ứng mô
tả cho hàm IP-1
Initial permution(IP)
Bảng 8x8 sẽ mô tả hàm IP với input có chiều dài
64 bits.
      58   50   42   34   26   18   10   2
      60   52   44   36   28   20   12   4
      62   54   46   38   30   22   14   6
      64   56   48   40   32   24   16   8
      57   49   41   33   25   17   9    1
      59   51   43   35   27   19   11   3
      61   53   45   37   29   21   13   5
      63   55   47   39   31   23   15   7
IP-1

Bảng 8x8 sẽ mô tả hàm IP-1 với input có chiều
dài 64 bits.
      40   8   48   16   56   24   64   32
      39   7   47   15   55   23   63   31
      38   6   46   14   54   22   62   30
      37   5   45   13   53   21   61   29
      36   4   44   12   52   20   60   28
      35   3   43   11   51   19   59   27
      34   2   42   10   50   18   58   26
      33   1   41   9    49   17   57   25
Cấu tạo một vòng DES
• Input là một chuỗi 64 bits.




• Đầu tiên input được chia làm 2 nửa ký hiệu là L và R.
• Output là một chuỗi 64 bits, được xây dựng từ 2 nửa:
      output=L’||R’. Trong đó:
                    - L’=R
                    - R’=L xor F(R,K)
Cấu tạo một vòng DES
Hàm F được mô tả trong DES như sau:
• Input là một chuỗi 32 bits(là nửa phải                32 bits
trong input của vòng).
                                              Expansion/permutation
• Input đầu tiên được chạy qua hàm E
(Expansion/permuation) để thực hiện hoán                    48 bits

đổi và bổ xung thêm 16 bits. Kết quả trả      ki
                                                           xor
ra chuỗi 48 bits.

• Chuỗi 48 bits thu được đem xor với khóa
                                                   Substitution/choice
k.
                                                             32 bits

• Tiếp đến chạy qua hàm S-box để thực                 Permutation
hiện phép thế và chọn. Kết quả trả ra chuỗi
32 bits.
                                                        32 bits
• Cuối cùng chạy qua một hàm hoán vị P để
trả ra 32 bits output.
Cấu tạo một vòng DES
Hàm E(Expansion/permutation):
        32     1     2     3     4    5
         4     5     6     7     8    9
         8     9    10    11    12   13
        12    13    14    15    16   17
        16    17    18    19    20   21
        20    21    22    23    24   25
        24    25    26    27    28   29
        28    29    30    31    32    1
Hàm E được mô tả bằng một bảng hoán vị, có sự mở
rộng bằng cách lặp 16 bits.
Cấu tạo một vòng DES
Cấu tạo của S-box:
 • Hàm F chứa 8 S-box.
 • Input cho mỗi S-box là một chuỗi 6 bits.

 • Output cho mỗi S-box là một chuỗi 4 bits.

 • S-box được định nghĩa dưới dạng bảng, có cấu trúc như sau:

        14 4    13 1   2   15 11    8    3   10 6     12 5     9   0   7
        0   15 7   4   14 2     13 1     10 6     12 11    9   5   3   8
        4   1   14 8   13 6     2   11   15 12 9      7    3   10 5    0
        15 12 8    2   4   9    1   7    5   11   3   14 10 0      6   13

 • Phương thức hoạt động của S-box:
                   - Hai bits: đầu và cuối: chỉ số dòng.
                   - Bốn bits giữa: chỉ số cột.
Cấu tạo một vòng DES
Cấu tạo P(Permutation):

       16   7    20 21 29 12 28 17
        1   15   23 26 5 18 31 10
       2    8    24 14 32 27 3  9
       19   13   30 6 22 11 4 25

Cấu tạo hàm Swap:
    • Hàm Swap hoán đổi vị trí hai nửa của chuỗi
    bits input.
Key generation
• Đầu tiên khóa K được chạy                  K(64 bits)
qua hàm PC1 để lấy 56 bits.
                                                  PC1
• Kết quả được chia làm hai
nữa. Mỗi nửa được đưa qua                     C0    D0
hàm left shift.
                                     Left shift         Left shift
• Tiếp đến 2 nửa sẽ làm input
cho hàm PC2 để tính ra k1.                  Permutation/
                                          Contraction(PC2)
• Đồng thời 2 nửa cũng được
lưu lại để tính khóa cho vòng   C1                                   D1
tiếp theo.
Key generation
Hàm PC1:
       57   49   41   33   25   17   9
       1    58   50   42   34   26   18
       10   2    59   51   43   35   27
       19   11   3    60   52   44   36
       63   55   47   39   31   23   15
       7    62   54   46   38   30   22
       14   6    61   53   45   37   29
       21   13   5    28   20   12   4
Key generation
Hàm PC2:
        14     17    11   24     1        5     3        28
        15     6     21   10     23       19    12       4
        26     8     16   7      27       20    13       2
        41     52    31   37     47       55    30       40
        51     45    33   48     44       49    39       56
        34     53    46   42     50       36    29       32
Hàm Left shift:
Round number 1     2 3 4 5 6 7   8    9    10   11   12   13   14   15   16
Bits rotated   1   1 2 2 2 2 2   2    1    2    2    2    2    2    2    1
DES Decryption
• Giải mã đơn giản là áp dụng thuật toán mã
nhưng với các khóa được sử dụng theo chiều
ngược lại(k16->k1).


• DES gần giống như việc giữ thư bí mật bằng
cách bỏ thư vào hòm và khóa lại. Sau đó hòm
thư thu được lại bỏ vào hòm lớn hơn và khóa
lại, cứ như vậy cho đủ 16 hòm thì thu được
DES.
Tính an toàn của
     DES?
Hiệu ứng tuyết lở
               Avalanche Effect


• Là một tính chất mong muốn của các mật
mã.

• Nếu thay đổi một bít ở đầu vào hoặc khóa
thì đầu ra sẽ thay đổi trên nhiều bits(1/2).


• DES thể hiện rất tốt tính chất này.
Key size

• Với khóa cỡ 56 bits, ta có 256≈7.2x1016
khóa tiềm năng.


• DES có thể bị tấn công vét cạn:
       - Năm 1997, một mạng các máy tính.

       - Năm 1998, EEF và DES cracker.
       - Năm 1999, sử dụng kết hợp các biện pháp.
Cryptanalysis

• Có nhiều nghiên cứu thám mã trên
DES.


• Lợi dụng điểm yếu trong thiết kế của
DES(S-box).
Cryptanalysis

• Sử dụng kết quả thống kê => cần một
lượng thông tin lớn.


• Một số hình thức chính:
     - Thám mã sai phân-Differential cryptanalysis.

     - Thám mã tuyến tính-Linear cryptanalysis.

     - Tấn công khóa liên kết–related key attack.
Timing Attack

• Dựa trên cơ sở là: việc mã và giải mã
cần một lượng thời gian khác nhau với
những input khác nhau


• DES là hoàn hảo để đối phó với hình
thức tấn công này
Differential cryptanalysis
• Là một trong những thành tựu của thám mã
mới được công bố gần đây

• Tuy nhiên NSA đã nhận thấy vấn đề này từ
những năm 1970

• Được công bố năm 1990 bởi Murphy, Birham
và Shamir

• Là một phương pháp mạnh để tấn công các mã
khối
Differential cryptanalysis

• DES có thể kháng cự được với hình thức tấn
công này



• Việc sử dụng S-box và các hàm hoán vị(P) làm
cho DES mạnh hơn Lucifer trong việc đối phó
với thám mã sai phân
DES
Thực sự là không an
       toàn
Triple DES
Có tốc độ chậm!
Năm 1997
NIST kêu gọi tìm
  kiếm mã mới
Advanced Encryption Standard
                                    128 bits                 key
• Block size: “128 bits”          add round key     W[0,3]
                                  Substitue bytes




                       Round 1
• Key size: 128 bits                Shift rows
                                                        expand key
                                   Mix columns
                                                    W[4,7]
                                  add round key




                                  Substitue bytes

                       Round 9      Shift rows

                                   Mix columns
                                                    W[36,39]
                                  add round key

                                  Substitue bytes
                       Round 10




                                    Shift rows
                                                    W[40,43]
                                  add round key

                                    128 bits
AES Round’s structure
Add Round key
• XOR trạng thái với 128 bits khóa
• Xử lý theo từng cột
• Dễ tìm hàm ngược
• Thiết kế đơn giản nhất có thể:
   – Dạng mã Vernam với khóa mở rộng
   – Bổ xung một số bước nhằm tăng độ phức tạp/tính an toàn
Substitute bytes
• Là một phép thế các bytes đơn giản




• Sử dụng cách cài đặt dạng bảng(S-box)
Shift Row
• Dịch bits trên mỗi dòng




   – Dòng 1: không đổi
   – Dòng 2: dịch sang trái 1 byte
   – Dòng 3: dịch sang trái 2 bytes
   – Dòng 4: dịch sang trái 3 bytes
Shift Row

• Hàm ngược, đơn giản là dịch sang phải



• Add round key thực hiện theo cột, do đó
bước này thực hiện theo dòng nhằm hoán vị
các bytes trong các cột
Mix Column
Key Expansion
• Mở rộng khóa(128 bits) thành mảng gồm 44/52/60
từ 32 bits

• Copy khóa vào 4 từ đầu tiên của mảng

• Các nhóm 4 từ tiếp theo, mỗi từ được xây dựng dựa
trên từ đứng trước nó(wi-1) và từ cả nhóm trước có vị
trí tương ứng với nó(wi-4), theo công thức sau:
               xor(g(wi-1),wi-4) nếu wi là từ đầu tiên trong nhóm
        wi =
               xor(wi-1,wi-4)

• Hàm g thực hiện liên tiếp các phép: dịch trái, S-
box, cuối cùng là xor với một hằng số
Key Expansion

More Related Content

What's hot

Chapter1 basic structure of computers
Chapter1  basic structure of computersChapter1  basic structure of computers
Chapter1 basic structure of computers
jismymathew
 
Pre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si ValidationPre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si Validation
DVClub
 

What's hot (20)

Tutorial getting started with RISC-V verification
Tutorial getting started with RISC-V verificationTutorial getting started with RISC-V verification
Tutorial getting started with RISC-V verification
 
Two fish & Rijndael (AES) Encryption Algorithm
Two fish & Rijndael (AES) Encryption AlgorithmTwo fish & Rijndael (AES) Encryption Algorithm
Two fish & Rijndael (AES) Encryption Algorithm
 
Truyen du lieu, Haming, CRC,...
Truyen du lieu, Haming, CRC,...Truyen du lieu, Haming, CRC,...
Truyen du lieu, Haming, CRC,...
 
Introduction to Civil Infrastructure Platform
Introduction to Civil Infrastructure PlatformIntroduction to Civil Infrastructure Platform
Introduction to Civil Infrastructure Platform
 
Chapter1 basic structure of computers
Chapter1  basic structure of computersChapter1  basic structure of computers
Chapter1 basic structure of computers
 
ASIC Design Flow
ASIC Design FlowASIC Design Flow
ASIC Design Flow
 
Lab1_Nhom16-1.pptx
Lab1_Nhom16-1.pptxLab1_Nhom16-1.pptx
Lab1_Nhom16-1.pptx
 
XOR Cipher
XOR CipherXOR Cipher
XOR Cipher
 
Monitoring Dual Stack IPv4/IPv6 Networks
Monitoring Dual Stack IPv4/IPv6 NetworksMonitoring Dual Stack IPv4/IPv6 Networks
Monitoring Dual Stack IPv4/IPv6 Networks
 
Block Cipher
Block CipherBlock Cipher
Block Cipher
 
He thong truyen dan PDH va SDH
He thong truyen dan PDH va SDHHe thong truyen dan PDH va SDH
He thong truyen dan PDH va SDH
 
SSL TLS Protocol
SSL TLS ProtocolSSL TLS Protocol
SSL TLS Protocol
 
RISC-V-Day-Tokyo2018-suzaki
RISC-V-Day-Tokyo2018-suzakiRISC-V-Day-Tokyo2018-suzaki
RISC-V-Day-Tokyo2018-suzaki
 
IP security Part 1
IP security   Part 1IP security   Part 1
IP security Part 1
 
DES.ppt
DES.pptDES.ppt
DES.ppt
 
Xu ly am thanh va hinh anh
Xu ly am thanh va hinh anhXu ly am thanh va hinh anh
Xu ly am thanh va hinh anh
 
1524 elliptic curve cryptography
1524 elliptic curve cryptography1524 elliptic curve cryptography
1524 elliptic curve cryptography
 
Pre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si ValidationPre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si Validation
 
Computer Security Lecture 4: Block Ciphers and the Data Encryption Standard
Computer Security Lecture 4: Block Ciphers and the Data Encryption StandardComputer Security Lecture 4: Block Ciphers and the Data Encryption Standard
Computer Security Lecture 4: Block Ciphers and the Data Encryption Standard
 
Lattice Cryptography
Lattice CryptographyLattice Cryptography
Lattice Cryptography
 

Similar to Modern block cipher

Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.pptChannel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
novrain1
 
04 Des Aes
04 Des Aes04 Des Aes
04 Des Aes
meorambo
 
Ex 1 chapter06-i-pv4-tony_chen - tieng viet1
Ex 1 chapter06-i-pv4-tony_chen - tieng viet1Ex 1 chapter06-i-pv4-tony_chen - tieng viet1
Ex 1 chapter06-i-pv4-tony_chen - tieng viet1
Đô GiẢn
 
Chuong02
Chuong02Chuong02
Chuong02
na
 

Similar to Modern block cipher (20)

Slide c2 + c3
Slide   c2 + c3Slide   c2 + c3
Slide c2 + c3
 
01 ma hoa
01 ma hoa01 ma hoa
01 ma hoa
 
thực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòngthực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòng
 
Ch06
Ch06Ch06
Ch06
 
Ch06
Ch06Ch06
Ch06
 
Nhập môn Mạch số, Hà Lê Hoài Trung
Nhập môn Mạch số, Hà Lê Hoài TrungNhập môn Mạch số, Hà Lê Hoài Trung
Nhập môn Mạch số, Hà Lê Hoài Trung
 
Bert for question answering on SQuAD 2.0
Bert for question answering on SQuAD 2.0Bert for question answering on SQuAD 2.0
Bert for question answering on SQuAD 2.0
 
AES-DES.pptx
AES-DES.pptxAES-DES.pptx
AES-DES.pptx
 
Hệ mật mã Mcelice
Hệ mật mã MceliceHệ mật mã Mcelice
Hệ mật mã Mcelice
 
Hệ mật mã Mcliece
Hệ mật mã MclieceHệ mật mã Mcliece
Hệ mật mã Mcliece
 
Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.pptChannel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
 
04 Des Aes
04 Des Aes04 Des Aes
04 Des Aes
 
Giao trinh ctmt
Giao trinh ctmtGiao trinh ctmt
Giao trinh ctmt
 
Ex 1 chapter06-i-pv4-tony_chen - tieng viet1
Ex 1 chapter06-i-pv4-tony_chen - tieng viet1Ex 1 chapter06-i-pv4-tony_chen - tieng viet1
Ex 1 chapter06-i-pv4-tony_chen - tieng viet1
 
Modern stream cipher
Modern stream cipherModern stream cipher
Modern stream cipher
 
Chuong02
Chuong02Chuong02
Chuong02
 
Kỹ thuật số
Kỹ thuật sốKỹ thuật số
Kỹ thuật số
 
Dien tu so
Dien tu soDien tu so
Dien tu so
 
1 Tong quan máy tính
1 Tong quan máy tính1 Tong quan máy tính
1 Tong quan máy tính
 
Giáo trình kỹ thuật số chương 1-2.doc
Giáo trình kỹ thuật số chương 1-2.docGiáo trình kỹ thuật số chương 1-2.doc
Giáo trình kỹ thuật số chương 1-2.doc
 

More from Hoang Nguyen

SOME SECURITY CHALLENGES IN CLOUD COMPUTING
SOME SECURITY CHALLENGES  IN CLOUD COMPUTINGSOME SECURITY CHALLENGES  IN CLOUD COMPUTING
SOME SECURITY CHALLENGES IN CLOUD COMPUTING
Hoang Nguyen
 
Multiple processor systems
Multiple processor systemsMultiple processor systems
Multiple processor systems
Hoang Nguyen
 
Multiprocessor Systems
Multiprocessor SystemsMultiprocessor Systems
Multiprocessor Systems
Hoang Nguyen
 

More from 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
 
ORM in Django
ORM in DjangoORM in Django
ORM in Django
 
Introduction to Cross-platform App Development
Introduction to Cross-platform App DevelopmentIntroduction to Cross-platform App Development
Introduction to Cross-platform App Development
 
Conistency of random forests
Conistency of random forestsConistency of random forests
Conistency of random forests
 
Trust - Digital Signature
Trust - Digital SignatureTrust - Digital Signature
Trust - Digital Signature
 
Key Exchange
Key ExchangeKey Exchange
Key Exchange
 
SOME SECURITY CHALLENGES IN CLOUD COMPUTING
SOME SECURITY CHALLENGES  IN CLOUD COMPUTINGSOME SECURITY CHALLENGES  IN CLOUD COMPUTING
SOME SECURITY CHALLENGES IN CLOUD COMPUTING
 
Stream ciphers
Stream ciphersStream ciphers
Stream ciphers
 
Classical ciphers
Classical ciphersClassical ciphers
Classical 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
 

Modern block cipher

  • 1. Information Safe Confidentiality Modern cipher Van Hoang Nguyen Mail: startnewday85@gmail.com Department of Computer Science Faculty of Information Technology – Hanoi University of Agriculture.
  • 3. Modern Block cipher?
  • 4. Ý tưởng của block Ciphers Mã hóa từng khối của plaintext một lần. Giả sử độ lớn của mỗi khối là n bits, thì ứng với mỗi n bits đầu vào sẽ cho ra n bits mã hóa PlainText Block Block Block Block Encrypt CBlock CBlock CBlock CBlock CipherText
  • 5. Ý tưởng của block Ciphers
  • 6. Block cipher = Monoalphabetic cipher?
  • 7. Block Ciphers ≈ Monoalphabetic cipher Để chứng minh, trước hết ta giả sử mỗi khối có cỡ là n bits. Khi đó: • Bảng chữ cái gốc chính là bảng chữ cái mà mỗi chữ cái là một bộ n bits • Quá trình mã hóa khối đơn giản có thể hiểu là thay thế n bits ban đầu bằng n bits mã hóa. Vậy nên nó cũng như là việc thay thế chữ cái này bằng chữ cái khác • Như vậy phương thức mã hóa có thể được diễn đạt thông qua một bảng chữ cái mã hóa mà ở đó mỗi chữ cái là một bộ n bits Như vậy mã khối là “tương đương” với mã một bảng chữ cái!
  • 8. Block cipher có an toàn không?
  • 9. Năm 800!!! Abu Yusuf Ya'qub ibn Is-haq ibn as- Sabbah ibn 'omran ibn Ismail al-Kindi
  • 10. Confusion và Diffusion • Hai thuật ngữ này được Claude Shannon đề xuất vào năm 1949 trong ý tưởng về mạng thế và hoán vị(S-P Network) • Confusion – Sự rối loạn là thuật ngữ dùng để chỉ những kỹ thuật nhằm làm cho quá trình tìm kiếm mối quan hệ thống kê giữa khóa và bản mã trở nên “không thể” • Diffusion – Sự khuyếch tán là thuật ngữ dùng để chỉ những kỹ thuật nhằm làm cho quá trình tìm kiếm mối quan hệ thống kê giữa bản gốc và bản mã trở nên “không thể” Claude Shannon
  • 11. Tính an toàn của block cipher • Hàm mã hóa E phải là hàm có tính đảo ngược được, tức E là một “song ánh” • Gọi n là cỡ của khối. Khi đó ta sẽ có 2n! các hàm E khác nhau - Với n nhỏ => dễ bị tấn công bởi phương pháp thống kê, và vét cạn(brute-force) - Với n lớn ?  Không thể tìm ra mối liên hệ thống kê  Không thể thực hiện vét cạn vì số lượng hàm E tăng rất nhanh theo n
  • 13. Nhược điểm của mã khối tổng quát Mã khối tổng quát rõ ràng là an toàn với n lớn. Nhưng n lớn chưa hẳn là khả thi với nhà lập mã: • Vì để tạo ra hàm E tổng quát => Khóa đơn giản chính là mô tả của hàm E • Khi n lớn, mô tả của hàm E sẽ rất phức tạp Chẳng hạn: Với n=64: Để mô tả hàm E cần 64*264 bits ≈ 220 TB!!!
  • 14. n lớn An toàn Không khả thi
  • 15. ý tưởng của Horst Feistel Ý tưởng của Feistel là xấp xỉ ý tưởng mã khối. Cụ thể là thay vì sử dụng mã khối tổng quát, ta chỉ sử dụng một tập con trong tập các hàm tổng quát(những hàm có thể mô tả một cách đơn giản hơn) • Hill cipher và các hàm tuyến tính là một ví dụ c1  p1k11  p2 k12  ...  pn k1n c  p k  p k  ...  p k  2 1 21 2 22 n 2n .............................................   ............................................. cn 1  p1k( n 1)1  p2 k( n 1) 2  ...  pn k( n 1) n  cn  p1k n1  p2 k n 2  ...  pn k nn 
  • 16. Hill cipher Các hàm tuyến tính Dễ phá 
  • 17. ý tưởng của Horst Feistel • Horst Feistel đề nghị sử dụng mã tích thay vì các hàm tuyến tính • Ông đề nghị sử dụng luân phiên phép thế và phép hoán vị • Horst Feistel thực sự thành công trong việc hiện thực hóa ý tưởng S-P Network của Claude Shannon
  • 18. Feistel cipher structure Được xây dựng dựa trên ý tưởng của Feistel. • Một khối của plaitext(PB) sẽ chạy qua n vòng mã hóa để sinh ra một khối của ciphertext(CB) • Đầu tiên PB được chia làm 2 phần ký hiệu là: R0,L0 • Khóa mã hóa K sẽ được sử dụng để sinh ra n khóa con(subkey): ki với 1≤i≤n • Tại vòng mã hóa i: - Input: Ri-1, Li-1(là kết quả của vòng thứ i-1) - Output: Ri = F(Ri-1,ki) xor Li-1 Li = Ri-1 • CB=Rn||Ln.
  • 20. Feistel cipher structure Nhận xét: • Hàm thế được áp dụng trên nửa trái(F và phép xor) • Các vòng có cùng một cấu trúc nhưng được khác biệt hóa bởi khóa con ki • Cuối cùng phép hoán vị được thực hiện bằng cách đảo vị trí hai nửa Cấu trúc của Feistel bản chất là việc thực hiện luân phiên các chức năng confusion(rối loạn) và diffusion(khuyếch tán). Cấu trúc của Feistel là một cài đặt cụ thể cho ý tưởng của Claude Shannon.
  • 21. Feistel decipher structure Giống hệt với mã hóa nhưng thực hiện theo chiều ngược lại: • Ciphertext được sử dụng làm input • Các khóa con ki được sử dụng theo trình tự ngược lại: kn,kn-1,…,k2,k1 Sự đối xứng trong cấu trúc mã hóa và giải mã chính là nét đẹp trong cấu trúc của Feistel cipher.
  • 22.
  • 23. Nguyên tắc thiết kế mã khối Feistel Một số yếu tố cần quan tâm khi thiết kế: • Block size – Cỡ của khối • Key size – Cỡ của khóa • Số lượng vòng(n) • Thuật toán sinh khóa con • Hàm F Phần mềm mã hóa/giải mã phải “nhanh” Cấu trúc phải “clear”
  • 25. • Vì sao phải chuẩn hóa việc mã hóa dữ liệu? • Cấu trúc mã hóa và giải mã của chuẩn mã hóa dữ liệu DES? • Tính an toàn của DES
  • 26. Vì sao phải chuẩn hóa việc mã hóa dữ liệu?
  • 27. • Ngay trong thời kỳ đầu mã hóa, người ta đã thấy sự cần thiết phải thống nhất với nhau phương pháp mã hóa • Điều này càng được thấy rõ hơn trong chiến tranh thế giới thứ II, khi mà những trao đổi thông tin bí mật giữa các quốc gia trở nên phổ biến • Những năm 1960, máy tính đã được sử dụng trong các doanh nghiệp. Và mã hóa máy tính trở thành phương tiện cho trao đổi thông tin bí mật • Ngày 15/5/1973, Cục tiêu chuẩn quốc gia Hoa Kỳ(NBS) lên kế hoạch chuẩn hóa việc mã hóa dữ liệu
  • 29. Data Encryption Standard • Năm 1977, NBS đưa ra chuẩn mã hóa dữ liệu – DES(FIPS PUB 46) • DES lập tức trở nên phổ biến trong công việc mã hóa • DES là một mã khối với: - Block size : 64 bits - Key size : 56 bits • DES được dựa trên dự án Tuchman-Meyer – một phiên bản cải tiến của Lucifer cho mục đích thương mại
  • 30. Những tranh luận về thiết kế của DES DES được đưa ra tranh luận vì DES là một chuẩn công khai. Có 2 khía cạnh là: • Key size: theo đánh giá 56 bits là hơi nhỏ • Chi tiết thiết kế của S-Box Mặc cho những bàn cãi khác nhau về tính an toàn của DES. DES vẫn được sử dụng một cách rộng rãi!
  • 31. DES Encryption • DES có cấu trúc tương 64 bits tự như cấu trúc của Feistel nếu bỏ đi hàm IP IP và IP-1 ở đầu và cuối. Round 1 Round 16 Swap IP-1 64 bits
  • 32. Initial permution(IP) • IP là bước đầu tiên trong cấu trúc của DES • Bản chất của hàm IP là tạo ra một hoán vị của input • Hàm hoán vị được định nghĩa theo cấu trúc bảng • Với một bảng mô tả hàm IP sẽ có bảng tương ứng mô tả cho hàm IP-1
  • 33. Initial permution(IP) Bảng 8x8 sẽ mô tả hàm IP với input có chiều dài 64 bits. 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
  • 34. IP-1 Bảng 8x8 sẽ mô tả hàm IP-1 với input có chiều dài 64 bits. 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
  • 35. Cấu tạo một vòng DES • Input là một chuỗi 64 bits. • Đầu tiên input được chia làm 2 nửa ký hiệu là L và R. • Output là một chuỗi 64 bits, được xây dựng từ 2 nửa: output=L’||R’. Trong đó: - L’=R - R’=L xor F(R,K)
  • 36. Cấu tạo một vòng DES Hàm F được mô tả trong DES như sau: • Input là một chuỗi 32 bits(là nửa phải 32 bits trong input của vòng). Expansion/permutation • Input đầu tiên được chạy qua hàm E (Expansion/permuation) để thực hiện hoán 48 bits đổi và bổ xung thêm 16 bits. Kết quả trả ki xor ra chuỗi 48 bits. • Chuỗi 48 bits thu được đem xor với khóa Substitution/choice k. 32 bits • Tiếp đến chạy qua hàm S-box để thực Permutation hiện phép thế và chọn. Kết quả trả ra chuỗi 32 bits. 32 bits • Cuối cùng chạy qua một hàm hoán vị P để trả ra 32 bits output.
  • 37. Cấu tạo một vòng DES Hàm E(Expansion/permutation): 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 Hàm E được mô tả bằng một bảng hoán vị, có sự mở rộng bằng cách lặp 16 bits.
  • 38. Cấu tạo một vòng DES Cấu tạo của S-box: • Hàm F chứa 8 S-box. • Input cho mỗi S-box là một chuỗi 6 bits. • Output cho mỗi S-box là một chuỗi 4 bits. • S-box được định nghĩa dưới dạng bảng, có cấu trúc như sau: 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 • Phương thức hoạt động của S-box: - Hai bits: đầu và cuối: chỉ số dòng. - Bốn bits giữa: chỉ số cột.
  • 39. Cấu tạo một vòng DES Cấu tạo P(Permutation): 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 Cấu tạo hàm Swap: • Hàm Swap hoán đổi vị trí hai nửa của chuỗi bits input.
  • 40. Key generation • Đầu tiên khóa K được chạy K(64 bits) qua hàm PC1 để lấy 56 bits. PC1 • Kết quả được chia làm hai nữa. Mỗi nửa được đưa qua C0 D0 hàm left shift. Left shift Left shift • Tiếp đến 2 nửa sẽ làm input cho hàm PC2 để tính ra k1. Permutation/ Contraction(PC2) • Đồng thời 2 nửa cũng được lưu lại để tính khóa cho vòng C1 D1 tiếp theo.
  • 41. Key generation Hàm PC1: 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4
  • 42. Key generation Hàm PC2: 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Hàm Left shift: Round number 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Bits rotated 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
  • 43. DES Decryption • Giải mã đơn giản là áp dụng thuật toán mã nhưng với các khóa được sử dụng theo chiều ngược lại(k16->k1). • DES gần giống như việc giữ thư bí mật bằng cách bỏ thư vào hòm và khóa lại. Sau đó hòm thư thu được lại bỏ vào hòm lớn hơn và khóa lại, cứ như vậy cho đủ 16 hòm thì thu được DES.
  • 44. Tính an toàn của DES?
  • 45. Hiệu ứng tuyết lở Avalanche Effect • Là một tính chất mong muốn của các mật mã. • Nếu thay đổi một bít ở đầu vào hoặc khóa thì đầu ra sẽ thay đổi trên nhiều bits(1/2). • DES thể hiện rất tốt tính chất này.
  • 46. Key size • Với khóa cỡ 56 bits, ta có 256≈7.2x1016 khóa tiềm năng. • DES có thể bị tấn công vét cạn: - Năm 1997, một mạng các máy tính. - Năm 1998, EEF và DES cracker. - Năm 1999, sử dụng kết hợp các biện pháp.
  • 47. Cryptanalysis • Có nhiều nghiên cứu thám mã trên DES. • Lợi dụng điểm yếu trong thiết kế của DES(S-box).
  • 48. Cryptanalysis • Sử dụng kết quả thống kê => cần một lượng thông tin lớn. • Một số hình thức chính: - Thám mã sai phân-Differential cryptanalysis. - Thám mã tuyến tính-Linear cryptanalysis. - Tấn công khóa liên kết–related key attack.
  • 49. Timing Attack • Dựa trên cơ sở là: việc mã và giải mã cần một lượng thời gian khác nhau với những input khác nhau • DES là hoàn hảo để đối phó với hình thức tấn công này
  • 50. Differential cryptanalysis • Là một trong những thành tựu của thám mã mới được công bố gần đây • Tuy nhiên NSA đã nhận thấy vấn đề này từ những năm 1970 • Được công bố năm 1990 bởi Murphy, Birham và Shamir • Là một phương pháp mạnh để tấn công các mã khối
  • 51. Differential cryptanalysis • DES có thể kháng cự được với hình thức tấn công này • Việc sử dụng S-box và các hàm hoán vị(P) làm cho DES mạnh hơn Lucifer trong việc đối phó với thám mã sai phân
  • 52. DES Thực sự là không an toàn
  • 53. Triple DES Có tốc độ chậm!
  • 54. Năm 1997 NIST kêu gọi tìm kiếm mã mới
  • 55. Advanced Encryption Standard 128 bits key • Block size: “128 bits” add round key W[0,3] Substitue bytes Round 1 • Key size: 128 bits Shift rows expand key Mix columns W[4,7] add round key Substitue bytes Round 9 Shift rows Mix columns W[36,39] add round key Substitue bytes Round 10 Shift rows W[40,43] add round key 128 bits
  • 57. Add Round key • XOR trạng thái với 128 bits khóa • Xử lý theo từng cột • Dễ tìm hàm ngược • Thiết kế đơn giản nhất có thể: – Dạng mã Vernam với khóa mở rộng – Bổ xung một số bước nhằm tăng độ phức tạp/tính an toàn
  • 58. Substitute bytes • Là một phép thế các bytes đơn giản • Sử dụng cách cài đặt dạng bảng(S-box)
  • 59. Shift Row • Dịch bits trên mỗi dòng – Dòng 1: không đổi – Dòng 2: dịch sang trái 1 byte – Dòng 3: dịch sang trái 2 bytes – Dòng 4: dịch sang trái 3 bytes
  • 60. Shift Row • Hàm ngược, đơn giản là dịch sang phải • Add round key thực hiện theo cột, do đó bước này thực hiện theo dòng nhằm hoán vị các bytes trong các cột
  • 62. Key Expansion • Mở rộng khóa(128 bits) thành mảng gồm 44/52/60 từ 32 bits • Copy khóa vào 4 từ đầu tiên của mảng • Các nhóm 4 từ tiếp theo, mỗi từ được xây dựng dựa trên từ đứng trước nó(wi-1) và từ cả nhóm trước có vị trí tương ứng với nó(wi-4), theo công thức sau: xor(g(wi-1),wi-4) nếu wi là từ đầu tiên trong nhóm wi = xor(wi-1,wi-4) • Hàm g thực hiện liên tiếp các phép: dịch trái, S- box, cuối cùng là xor với một hằng số