[Outline] Symmetric - Key Cryptography

  1. Symmetric - Key Cryptography
  • ทำเป็น Glossary
  1. Types of Symmetric - Key Cryptography
    แบ่งออกเป็น 2 Content คือ
  • Block Cipher ทำเป็น บทความ ประกอบด้วย

    • Block Cipher คืออะไร
    • กระบวนการทำงาน
    • ตัวอย่าง Block Cipher ที่เป็นที่นิยม เช่น Data Encryption Standard (DES) เป็นต้น (อธิบาย DES ในโพสแยก)
    • บทความ อื่น ๆ ที่เกี่ยวข้อง กับ Block Cipher
      • Electronic Codebook (ECB)
      • Feistel Network
  • Stream Cipher ทำเป็น บทความ ประกอบด้วย

    • Stream Cipher คืออะไร
    • กระบวนการทำงาน
    • ตัวอย่าง Stream Cipher ที่เป็นที่นิยม เช่น RC4 เป็นต้น

แยกเป็นอีก 1 บทความ Compare ระหว่าง Block Cipher และ Stream Cipher

  • Block Cipher VS Stream Cipher อธิบายความแตกต่างกันระหว่าง Block Cipher และ Stream Cipher

[STEP2] Draft Content : ==> CF ว่าประเด็นที่เราจะเล่าทั้งหมดครบถ้วนตามที่ต้องการไหม

  1. กำหนดหัวข้อหลักว่าจะเขียนเรื่องอะไร
  2. กำหนดรูปแบบที่จะเขียน เช่น แบบ Glossary หรือ แบบบทความยาว
  3. อธิบายถึงประเด็นที่จะเขียนเป็น outline ว่ามีอะไรบ้าง
  4. สรุปประเด็นเรื่อง Graphic ว่ามีรูปแบบอะไรบ้าง
  5. เพิ่ม Ref

คำถามที่อยากให้ Reviewer ช่วยตอบ

  1. ต้องการรู้ประเด็นไหนเพิ่มเติมไหม เพราะอะไร
  2. คิดว่าเรียงลำดับการนำเสนอได้ดีรึยัง ถ้าไม่ดี มีไอเดียอย่างไร
  3. มีประเด็นไหนควรตัดทิ้งไหม เพราะอะไร

[Glossary] Symmetric - Key Cryptography

Symmetric - Key Cryptography คือรูปแบบการเข้ารหัส (Encryption) ประเภทหนึ่ง ซึ่งเป็นแบบ “คีย์เดี่ยว” โดยผู้รับและผู้ส่งจะใช้คีย์ตัวเดียวกัน ที่เรียกว่า “คีย์ลับ ( Secret Key )” ในการเข้าและถอดรหัสข้อมูล

Block Cipher

  • คืออะไร : คือการเข้ารหัสแบบ Symmetric - Key Cryptography ที่มีรูปแบบการเข้ารหัสเป็น Block ซึ่งขนาดบล็อกปกติคือ 64 บิต 128 บิตและ 256 บิต ขนาดบล็อกที่ทำการเข้ารหัสจะมีขนาดคงที่ เช่น หากเราใช้ข้อความธรรมดาที่มีความยาว 64 บิต เป็น input ข้อความเข้ารหัสหรือ Output ที่ได้จะเป็น 64 บิต เช่นกัน

    Block Cipher

  • กระบวนการทำงาน : โดยปกติแล้วข้อความที่นำมาเข้ากระบวนการ Block Cipher จะมีขนาดความยาวไม่พอดีกับขนาดความยาวของบล็อก ดังนั้นในกรณีนี้จึงมีกระบวนการที่เรียกว่า “Padding” ซึ่งเป็นการเพิ่มความยาวของข้อความธรรมดาให้พอดีกับขนาดของบล็อก เช่น หากเรามีข้อความขนาดความยาว 150 บิต ใช้บล็อกที่มีขนาด 64 บิต จำนวน 2 บล็อก จะได้ 128 ซึ่งจะเหลืออีก 22 บิต ที่ยังไม่มีบล็อก เราจะต้องทำการเพิ่มบล็อกขนาด 64 บิต เข้าไปอีก 1 บล็อก แต่โดยปกติขนาดบล็อกกับข้อมูลจะต้องเท่ากัน ดังนั้น เราจึงต้องทำการเพิ่มค่าเริ่มต้น (Default Value) เช่น 0 เป็นต้น เข้าไปอีก 42 บิต (22+42=64) ในบล็อกสุดท้ายเพื่อให้ได้ 64 บิต พอดีกับขนาดของบล็อก

  • ตัวอย่าง Block Cipher ที่เป็นที่นิยม เช่น Data Encryption Standard (DES) เป็นต้น

Electronic Codebook (ECB)

คือรูปแบบการประมวลผลข้อมูลที่ง่ายที่สุดของ Block Cipher หลักการทำงานก็คือ จะแบ่งข้อมูลออกเป็นบล็อกละ 64 บิต โดยในการเข้ารหัสข้อมูลแต่ละชุด จะใช้คีย์เดียวกันทั้งหมด ซึ่งในกรณีที่บล็อกข้อมูลความยาว 64 บิตเป็นข้อมูลชุดเดียวกัน ข้อมูลเข้ารหัสที่ได้จะมีลักษณะเหมือนกัน ดังนั้นหากข้อมูลมีลักษณะที่เป็นโครงสร้างตายตัว ข้อมูลที่ได้มีลักษณะซ้ำ ๆ กัน การทำงานแบบ ECB จึงอาจจะไม่มีความปลอดภัยที่เพียงพอ

Feistel Network

A Feistel network is a cryptographic technique used in the construction of block cipher-based algorithms and mechanisms. Designed by IBM employees Horst Feistel and Don Coppersmith, the first use of the Feistel network was in Lucifer block cipher.
A Feistel network is also known as a Feistel cipher.

A Feistel network implements a series of iterative ciphers on a block of data and is generally designed for block ciphers that encrypt large quantities of data. A Feistel network works by splitting the data block into two equal pieces and applying encryption in multiple rounds. Each round implements permutation and combinations derived from the primary function or key. The number of rounds varies for each cipher that implements a Feistel network.
Moreover, as a reversible algorithm, a Feistel network produces the same output until the input is the same.

Stream Cipher

  • คืออะไร : คือการเข้ารหัสแบบ Symmetric - Key Cryptography ที่มีรูปแบบการเข้ารหัสที่ไม่ได้การจัดกลุ่มข้อมูล แต่จะนำข้อมูลมาเข้ารหัสทีละบิตหรือไบต์เรียงต่อกันไปเรื่อย ๆ เช่น หากเราใช้ข้อความธรรมดาที่มีความยาว 39 บิต เป็น input ข้อความเข้ารหัสหรือ Output ที่ได้จะเป็น 39 บิต

  • กระบวนการทำงาน : Stream Cipher จะมี Concept ของ Keystream คือ ข้อความธรรมดาแต่ละหลักจะถูกเข้ารหัสทีละตัวด้วยตัวเลขที่สอดคล้องกัน เช่น การเข้ารหัสแบบ Caeser Cipher แบบ เลื่อน 3 ตำแหน่ง (shift 3) จะมี Keystream คือ 333333… เป็นต้น

  • ตัวอย่าง Stream Cipher เช่น RC4 เป็นต้น

Block Cipher VS Stream Cipher

ความแตกต่างระหว่างการเข้ารหัสแบบ Block Cipher กับแบบ Stream Cipher คือ การเข้ารหัสแบบ Block Cipher จะเข้ารหัสข้อมูล เป็นบล็อกที่มีขนาดคงที่ เช่น 64 บิต และมีกระบวนการ Padding ซึ่งเป็นการเพิ่มความยาวของข้อความธรรมดาให้พอดีกับขนาดของบล็อก ในกรณีที่ข้อความธรรมดามีขนาดไม่เท่ากับขนาดของบล็อก ส่วน Stream Cipher เป็นการเข้ารหัสที่เข้ารหัสทีละบิตหรือไบต์เรียงต่อกันไปเรื่อย ๆ ไม่มีการแบ่งข้อมูลเป็นชุดหรือเป็นบล็อก