DES (Data Encryption Standard)

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)

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)

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)

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_0

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_i

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}

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})

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{}
  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Γ :

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))}

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)))}

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

NgoΓ i ra cΓ²n cΓ³ 48 khΓ³a được coi lΓ  β€œcΓ³ thể yαΊΏu” nΓͺn hαΊ‘n chαΊΏ sα»­ dα»₯ng

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.

Last updated