# 6. Block Cipher

**URL:** <https://discuss.hashpire.io/t/6-block-cipher/295>\
**Category:** กระดานเนื้อหา 📄\
**Tags:** in-review\
**Created:** [July 25, 2022, 3:07am UTC](https://discuss.hashpire.io/t/6-block-cipher/295 "2022-07-25T03:07:43Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Namtan](https://discuss.hashpire.io/user_avatar/discuss.hashpire.io/namtan/32/23_2.png) [@Namtan](https://discuss.hashpire.io/u/Namtan)\
**Post date:** [July 25, 2022, 3:07am UTC](https://discuss.hashpire.io/t/6-block-cipher/295/1 "2022-07-25T03:07:44Z")

</div>

1. Block Cipher

Block Cipher คือ การเข้ารหัส โดยการประมวลผลข้อมูลเป็นชุดหรือเป็นบล็อก ซึ่งขนาดบล็อกปกติคือ 64 บิต 128 บิตและ 256 บิต ขนาดบล็อกที่ทำการเข้ารหัสจะมีขนาดคงที่ เช่น หากเราใช้ข้อมูลที่มีความยาว 64 บิต เป็น input ข้อมูลเข้ารหัสหรือ Output ที่ได้จะเป็น 64 บิต เช่นกัน

![Block Cipher](https://discuss.hashpire.io/uploads/default/original/1X/7824235c90e26d64d7a07ddf073493642089ca42.png)

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

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

เนื่องจากกุญแจที่ใช้ใน Block Cipher มีความยาวมาก จึงสามารถทนทานต่อการโจมตีแบบ Brute-Force ( วิธีการโจมตีแบบเก่า ที่ใช้การลองผิดลองถูกเพื่อถอดรหัสรหัสผ่านข้อมูลและกุญแจที่ใช้ในการเข้ารหัส) แต่แม้ว่า Block Cipher จะปลอดภัย แต่ก็ยังเหมาะสำหรับการเข้ารหัสข้อมูล 1 บล็อกต่อ 1 ครั้ง โดยการใช้กุญแจแบบตายตัว นอกจากนั้น Block Cipher จะมีลักษณะในการเป็นส่วนประกอบสำคัญของโปรโตคอลการเข้ารหัสอื่น ๆ เช่น ฟังก์ชันแฮช (Hash Functions) และ ตัวสร้างตัวเลขสุ่ม (Random Number Generators) ส่วนของตัวอย่าง Block Cipher ที่เป็นที่นิยม เช่น Data Encryption Standard (DES) และ Advanced Encryption Standard (AES) เป็นต้น

Reference

> **[Block Cipher](https://www.tutorialspoint.com/cryptography/block_cipher.htm)**
>
> Block Cipher, The basic scheme of a block cipher is depicted as follows −

> **[Block cipher](https://en.wikipedia.org/wiki/Block_cipher)**
>
> In cryptography, a block cipher is a deterministic algorithm operating on fixed-length groups of bits, called blocks. They are specified elementary components in the design of many cryptographic protocols and are widely used to encrypt large amounts of data, including in data exchange protocols. It uses blocks as an unvarying transformation.
> Even a secure block cipher is suitable for the encryption of only a single block of data at a time, using a fixed key. A multitude of modes of operation hav...

* * *

Outline

- Block Cipher คืออะไร
- กระบวนการทำงานของ Block Cipher
- ตัวอย่าง Block Cipher ที่เป็นที่รู้จัก
