📒
Book of VanLuong
  • 👨‍💻About the Author
  • Cryptography
    • Cryptanalysis
      • RSA & RSA ATTACK
      • DES (Data Encryption Standard)
      • AES (Advanced Encryption Standard)
      • ECC ( Elliptic Curve of Cryptography)
      • Group-based Cryptography
      • Lattice-based Cryptography
      • ChaCha20-Poly1305
      • Hash Function
      • Wargame CTF
  • C2
    • Practical with Havoc Framework
  • Blue Teaming
    • SIEM & SOC
      • SIEM
      • SOC
      • Splunk
    • Cybersecurity Lab & Threat Intelligence
      • Build ELK Lab
        • Configure Elasticsearch and Kibana setup in ubuntu
        • Fluent Bit – Sending Logs to ELK with Fluent Bit
        • Winlogbeat – Collecting and Forwarding Windows Event Logs.
        • Filebeat – Collecting and Forwarding Windows Event Logs.
        • Send Logs from Winlogbeat through Logstash to ELK
        • Audit policy & Winlogbeat
      • Sysmon configuration
    • PowerShell in Incident Response and Threat Hunting
      • PowerShell For Incident Response
      • PowerShell For Threat Hunting
  • Techniques used in malware
    • DLL side loading
    • DLL Unhooking
    • Call stack spoofing
  • Wazuh App Dashboards for Splunk
  • Windows
    • 70 Vital Windows Commands
    • Windows Registry Forensics
  • Guide to Installing Kali Linux, DVWA, and bWAPP
    • Phần 1. CÀI ĐẶT HỆ ĐIỀU HÀNH KALI LINUX
    • Phần 2. CÀI ĐẶT DVWA
    • Phần 3. CÀI ĐẶT BWAPP
  • CTF
    • CTF-writeup-in-KCSC
Powered by GitBook
On this page
  • DES (Data Encryption Standard)
  • Khái niệm
  • Cơ chế hoạt động
  • Triple DES
  • Khái niệm
  • Cơ chế hoạt động

Was this helpful?

  1. Cryptography
  2. Cryptanalysis

DES (Data Encryption Standard)

PreviousRSA & RSA ATTACKNextAES (Advanced Encryption Standard)

Last updated 8 months ago

Was this helpful?

DES (Data Encryption Standard)

Khái niệm

DES(Data Encryption Standard) là thuật toán mã hóa theo khối, nó xử lý từng khối thông tin của bản rõ có độ dài xác định là 64 bit. Trước khi đi vào 16 chu trình chính, khối dữ liệu cần bảo mật sẽ được tách ra thành từng khối 64 bit, và từng khối 64 bit này sẽ lần lượt được đưa vào 16 vòng mã hóa DES để thực hiện. Tiền thân của nó là Lucifer, một thuật toán do IBM phát triển. Cuối năm 1976, DES được chọn làm chuẩn mã hóa dữ liệu của nước Mỹ, sau đó được sử dụng rộng rãi trên toàn thế giới. DES cùng với mã hóa bất đối xứng đã mở ra một thời kỳ mới trong ngành mã hóa thông tin. Trước DES, viện nghiên cứu và sử dụng mã hóa dữ liệu chỉ giới hạn trong chính phủ và quân đội.

Đầu vào của DES là khối 64 bit, đầu ra cũng là khối 64 bit. Khóa mã hóa có độ dài 56 bit, nhưng thực chất ban đầu là 64 bit, được lấy đi các bit ở vị trí chia hết cho 8 dùng để kiểm tra tính chẵn lẻ.

Cơ chế hoạt động

Thuật toán sinh khóa con

Sơ đồ tổng quát:

Thực hiện hoán vị

PC1K=PC1(K)PC1K = PC1(K)PC1K=PC1(K)

Gọi C_0 là nửa trái của PC1K

Gọi D_0 là nửa phải của PC1K

Sau khi thực hiện PC1 như hình ảnh trên và bỏ các bit kiểm tra 8, 16, 24, 32, 40, 48, 56, 64 thì PC1K có độ dài 56 bit

Tính các giá trị dịch vòng C_i, D_i

Ci=RotleftShift(Ci−1,Si)Di=RotleftShift(Di−1,Si)C_i = RotleftShift(C_{i-1}, S_i) \\ D_i = RotleftShift(D_{i-1}, S_i)Ci​=RotleftShift(Ci−1​,Si​)Di​=RotleftShift(Di−1​,Si​)

Chúng ta có thể nhìn bảng trên để dễ hình dung.

Thực hiện hoán vị PC2 và gán khóa con K_i

Ki=PC2(CiDi)K_i = PC2(C_iD_i)Ki​=PC2(Ci​Di​)

Sau khi thực hiện hoán vị PC2 khóa K_i có độ dài 48 bit

Quá trình mã hóa DES

Giai đoạn 1

Plaintext 64bit được đưa vào IP , 1 chuỗi C sẽ được tạo ra bằng cách thực hoán vị các bit của plaintext theo hoán vị IP

Tiếp theo C sẽ được chia làm 2 phần L_0 (32 bit đầu) và R_0 ( 32 bit cuối)

C = IP(plaintext)=L0R0C \ = \ IP (plaintext) = L_0R_0C = IP(plaintext)=L0​R0​

Giai đoạn 2

Lấy R_0 đi qua hàm Feistel, Với giá trị đầu vào R_{i-1} (32 bit), K_i (48 bit)

R_{i-1} khi đi qua hoán vị E sẽ tăng độ dài từ 32 -> 48 bit để cùng độ dài và thực hiện XOR với K_i

Tính

E(Ri)⊕KiE(R_i) ⊕ K_iE(Ri​)⊕Ki​

Tách kết quả của phép tính trên thành 8 khối, mỗi khối 6 bit và đưa lần lượt vào bảng S-box : S1, S2, S3, S4, ..., S8 .

Với mỗi S-box sẽ có 6bit đầu vào và 4 bit đầu ra

Kết quả từ 8 khối 6bit sẽ cho ra 8 khối 4 bit C_i

Mỗi 4 bit đầu ra của các S-box sẽ được ghép lại, theo thứ tự các và được đem vào P-box.

Ri=F(Ri−1,Ki)⊕Li−1(0<i<17)Li=Ri−1R_i = F(R_{i-1}, K_i) ⊕ L_{i-1} (0 < i < 17) \\ L_i = R_{i-1}Ri​=F(Ri−1​,Ki​)⊕Li−1​(0<i<17)Li​=Ri−1​

Giai đoạn 3

Áp dụng hoán vị kết thúc FP cho R_{16}L_{16} ta thu được bản mã

C = FP(R16L16)C \ = \ FP(R_{16}L_{16})C = FP(R16​L16​)

Quá trình giải mã của DES cũng tương tự quá trình mã hóa. Chỉ khác nhau ở: Li = Ri-1. Ri = Li-1 ⊕ f(Ri-1, K16-i+1). Như vậy khóa K của hàm F sẽ đi từ khóa K16 -> K1.

Hàm Feistel(F)

Đầu vào hàm f có 2 biến:

  1. Biến thứ nhất: Ri-1 là xâu bit có độ dài 32 bit. - Biến thứ hai: Ki là xâu bit có độ dài 48 bit. Đầu ra của hàm f là xâu có độ dài 32 bit. Quy trình hoạt động của hàm f như sau:

  2. Biến thứ nhất Ri-1 được mở rộng thành một xâu có độ dài 48 bit theo một hàm mở rộng hoán vị E (Expansion permutation). Thực chất hàm mở rộng E(Ri-1) là một hoán vị có lặp trong đó lặp lại 16 bit của Ri-1.

  3. Tính

E(Ri−1)⊕KiE\text{}(R_i \text{}-1) ⊕ K_i \text{}E(Ri​−1)⊕Ki​
  1. Tách kết quả của phép tính trên thành 8 xâu 6 bit B1, B2, …, B8.

  2. Đưa các khối 8 bit Bi vào 8 bảng S1, S2, …, S8 (được gọi là các hộp S-box). Mỗi hộp S-Box là một bảng 4*16 cố định có các cột từ 0 đến 15 và các hàng từ 0 đến 3. Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6 ta tính được Si(Bi) như sau: hai bit b1b6 xác định hàng r trong hộp Si, bốn bit b2b3b4b5 xác định cột c trong hộp Si. Khi đó, Si(Bi) sẽ xác định phần tử Ci = Si(r,c), phần tử này viết dưới dạng nhị phân 4 bit. Như vậy, 8 khối 6 bit Bi (1 ≤ i ≤ 8) sẽ cho ra 8 khối 4 bit Ci với (1 ≤ i ≤ 8).

  3. Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị theo phép toán hoán vị P (P-Box). Kết quả P(C ) sẽ là kết quá của hàm f(Ri-1,Ki).

Với sự phát triển của khoa hoạc kỹ thuật, DES không được xem là an toàn do độ dài 56 bít của khóa là quá nhỏ, nhiều kết quả nghiên cứu, phân tích cho thấy việc mã hóa có thể bị phá khóa, thuật toán 3DES có tính an toàn cao hơn và được sử dụng trong thực tế nhiều hơn. Năm 2002 tiêu chuẩn mã hóa tiên tiến AES (Advanced Encryption Standard) được đề xuất thay thế cho tiêu chuẩn DES và 3DES, song vẫn có nhiều lĩnh vực áp dụng sử dụng DES, 3DES sau này.

Có nhiều khóa được xem là khóa yếu trong thuật toán DES, đó là các khóa dễ có khả năng bị đối tượng phá khóa do một số bits của khóa lặp lại và dễ dự đoán trước. Việc sử dụng khóa yếu có thể làm giảm tính bảo mật của DES, do đó tránh sử dụng các khóa yếu này. Cụ thể là:

01010101  01010101

FEFEFEFE  FEFEFEFE 

E0E0E0E0  F1F1F1F1 

1F1F1F1F  0E0E0E0E

Triple DES

Khái niệm

Triple DES (3DES) là một phương pháp mã hóa dữ liệu, được phát triển để tăng cường bảo mật của thuật toán DES (Data Encryption Standard) truyền thống. Thay vì chỉ sử dụng một khóa như trong DES, Triple DES thực hiện ba lần mã hóa với ba khóa khác nhau, hoặc hai khóa trong một số phiên bản. Điều này giúp tăng độ mạnh của mã hóa, làm cho việc tấn công trở nên khó khăn hơn.

Cơ chế hoạt động

Quá trình mã hóa

Ciphertext=EK3(DK2(EK1(Plaintext))\boxed{Ciphertext = E_{K3}(D_{K2}(E_{K1}(Plaintext))}Ciphertext=EK3​(DK2​(EK1​(Plaintext))​

Trước tiên, thực hiện mã hóa DES với khóa K1, tiếp tục giải mã DES với khóa K2 và cuối cùng mã hóa DES với khóa K3 (E – Encryption: quá trình mã hóa; D - Decryption: quá trình giải mã; Bản rõ: Dữ liệu đầu vào của phép mã hóa hoặc dữ liệu đầu ra của phép giải mã; Bản mã: Dữ liệu đầu ra của phép mã hóa hoặc dữ liệu đầu vào của phép giải mã).

Quá trình giải mã

Plaintext=DK1(EK2(DK3(Ciphertext)))\boxed{Plaintext = D_{K1}(E_{K2}(D_{K3}(Ciphertext)))}Plaintext=DK1​(EK2​(DK3​(Ciphertext)))​

Quá trình giải mã với việc giải mã với khóa K3, sau đó mã hóa với khóa K2, và cuối cùng giải mã với khóa K1...

3DES mã hóa một khối dữ liệu có giá trị 64 bít (bản rõ) thành một khối dữ liệu mới có giá trị 64 bít (bản mã). Các tiêu chuẩn chỉ ra phương thức lựa chọn nhóm khóa (K1, K2, K3) như sau:

Với K1, K2, K3 là các khóa độc lập. Là phương thức mã hóa mạnh nhất với 168 bit khóa độc lập (168=3x56)

Với K1, K2 là hai khóa độc lập và K3 = K1. Ít bảo mật hơn với 112 bit khóa ( 2x56=112 bit)

Với K1=K2=K3. Chỉ tương đương với việc mã hóa DES 1 lần với 56 bít khóa

Mỗi khóa DES thông thường được lưu trữ và truyền đi trong 8 byte, vì vậy một nhóm khóa yêu cầu 8 hoặc 16, 24 byte cho việc lưu trữ khóa.

Ưu và nhược điểm của 3DES

Ưu điểm: Khác với DES, thuật toán mã hoá 3DES được mã hoá 3 lần DES với kích cỡ không gian khoá 168 bit cho nên an toàn hơn rất nhiều so với DES.

Nhược điểm: Vì 3DES sử dụng 3 lần mã hoá DES cho nên tốc độ mã hoá sẽ chậm hơn rất nhiều so với DES. Phần mềm ứng dụng tỏ ra rất chậm đối với hình ảnh số và một số ứng dụng dữ liệu tốc độ cao vì kích thước khối 64 bit vẫn còn là một nhược điểm đối với những hệ có tốc độ của thế kỷ 21.

Khóa yếu

Một số cặp khóa yếu nên tránh sử dụng

011F011F010E010E 1F011F010E010E01

01E001E001F101F1 E001E001F101F101

01FE01FE01FE01FE FE01FE01FE01FE01

1FE01FE00EF10EF1 E01FE01FF10EF10E

1FFE1FFE0EFE0EFE FE1FFE1FFE0EFE0E

Ngoài ra còn có 48 khóa được coi là “có thể yếu” nên hạn chế sử dụng

01011F1F01010E0E 1F1F01010E0E0101 E0E01F1FF1F10E0E

0101E0E00101F1F1 1F1FE0E00E0EF1F1 E0E0FEFEF1F1FEFE

0101FEFE0101FEFE 1F1FFEFE0E0EFEFE E0FE011FF1FE010E

011F1F01010E0E01 1FE001FE0EF101FE E0FE1F01F1FE0E01

011FE0FE010EF1FE 1FE0E01F0EF1F10E E0FEFEE0F1FEFEF1

011FFEE0010EFEF1 1FE0FE010EF1FE01 FE0101FEFE0101FE

01E01FFE01F10EFE 1FFE01E00EFE01F1 FE011FE0FE010EF1

FE01E01FFE01F10E 1FFEE0010EFEF101 FE1F01E0FE0E01F1

01E0E00101F1F101 1FFEFE1F0EFEFE0E FE1FE001FE0EF101

01E0FE1F01F1FE0E E00101E0F10101F1 FE1F1FFEFE0E0EFE

01FE1FE001FE0EF1 E0011FFEF1010EFE FEE0011FFEF1010E

01FEE01F01FEF10E E001FE1FF101FE0E FEE01F01FEF10E01

01FEFE0101FEFE01 E01F01FEF10E01FE FEE0E0FEFEF1F1FE

1F01011F0E01010E E01F1FE0F10E0EF1 FEFE0101FEFE0101

1F01E0FE0E01F1FE E01FFE01F10EFE01 FEFE1F1FFEFE0E0E

1F01FEE00E01FEF1 E0E00101F1F10101 FEFEE0E0FEFEF1F1

Kết luận

Hiện nay, với nhu cầu bảo mật thông tin, đặc biệt là bảo mật thông tin truyền trên mạng internet, việc úng dụng các thuật toán mật mã nói chung hay cụ thể là sử dụng các sản phẩm mật mã trong các lĩnh vực dân sự, an ninh quốc phòng và vô cùng cần thiết. Thuật toán DES với độ dài khóa 56 bít đã không còn an toàn, tuy nhiên thuật toán 3DES vẫn đang được sử dụng trong nhiều sản phẩm mật mã dân sự. Bài viết tổng hợp các khuyến nghị để ứng dụng an toàn thuật toán 3DES trong bảo vệ bí mật, an ninh, thông tin. Người sử dụng cần kết hợp giữa các nhu cầu về bảo mật, yêu cầu hệ thống và các khuyến nghị trong phần 3 để đảm bảo an toàn, bí mật thông tin khi sử dụng thuật toán 3DES.