Key length ขนาดบิต
- sudapha2312
- Jan 20, 2014
- 2 min read
Key length หรือ Key size คือ ความยาวของคีย์ที่เรียกว่า Public Key (RSA) หรือ Private Key ที่จะทำการ generate key pair ออกมา
ตอนที่ผู้ขอใบรับรอง SSL ทำการ Generate CSR ที่ต้องการติดตั้ง SSL Certificate คือ รหัสข้อความชุดหนึ่ง ที่ผู้ขอใบรับรอง SSL จะต้องทำการ generate ออกมาผ่านระบบแอพพลิเคชั่นเซิร์ฟเวอร์ CSR และ Private Key ที่เป็นเสมือนรหัสลับของเซิร์ฟเวอร์เครื่องนั้นๆ
ผู้ขอใบรับรอง SSL จะต้องเก็บสำรองไฟล์ Private Key ไว้ในระบบเซิร์ฟเวอร์ให้ปลอดภัย พร้อมกับส่งไฟล์ CSR ดังกล่าวแก่ผู้ให้บริการ SSL ออกใบรับรอง SSL เพื่อร้องขอให้ผู้ให้บริการ SSL ใช้ในการสร้างคู่คีย์ให้เข้ากันในระหว่างการเข้ารหัส - ถอดรหัสข้อมูลสำคัญผ่านระบบเซิร์ฟเวอร์ ด้วยการเรียกใช้ https:// ซึ่งจะแสดงให้เห็นใน Certificate path เวลาที่มีการติดตั้ง SSL Certificate เรียบร้อยแล้ว
symmetric Encryption
วิธีการของ Secret Key
ทั้งผู้เข้าและถอดรหัส ต่างก็ต้องรู้ key ตัวเดียวกัน การส่งรับ key จึงต้องมีความปลอดภัยไม่รั่วไหล จึงเรียก key นั้นว่า secret key เพราะโดยปกติอัลกอริธึมในการเข้าถอดรหัสมักเป็นที่เปิดเผย cipher text ก็ถูกดักได้ ถ้า secret key ยังมาถูกดักอีก ข้อความก็จะถูกถอดได้
เอา plain text และ secret key มาเข้ารหัสด้วยอัลกอริธึม จะได้ ciphertext ออกมา
ผู้เข้ารหัสส่ง/แจกจ่าย secret key ให้ผู้รับ อย่างเป็นความลับ
ผู้รับได้ cipher text มา ก็ใช้อัลกอริธึมพร้อม secret key ที่มีอยู่ถอดรหัส จะได้ plain text ออกมา
โดยทั่วไปในการออกแบบอัลกอริทึมในการเข้ารหัสนั้น จะถือว่าประสบความสำเร็จในการรักษาความปลอดภัย เมื่อรหัสที่สร้างขึ้นมาโดยอัลกอริทึมนั้น สามารถบรรลุข้อกำหนดใดใน 2 ข้อกำหนดต่อไปนี้
ค่าใช้จ่ายที่ต้องใช้ในการถอดรหัสจะต้องมากกว่ามูลค่าของข้อมูลที่เข้ารหัส
เวลาที่ใช้ในการถอดรหัส จะต้องมากกว่าอายุการใช้งานของข้อมูลนั้น
ค่าใช้จ่ายนั้นประเมินได้ยาก จึงจ้องประเมินจากเวลา โดยมีสมมติฐานเรื่องการพยายามถอดรหัสด้วย Brute Force ลองทุกๆ ค่าของ key ที่เป็นไปได้
ในการเข้ารหัสแบบ Block Cipher
มีอัลกอริทึมอยู่หลายตัวที่มีการออกแบบและใช้งานในปัจจุบัน โดยอัลกอริทึมที่มีความสำคัญ และใช้งานมากที่สุด คือ DES (Data Encryption Standard) และ 3DES (Triple Data Encryption Standard) ซึ่งถือว่าเป็นรากฐานของระบบเข้ารหัสที่ใช้ในปัจจุบัน และแบบที่ออกมาใหม่คือ AES (Advanced Encryption Stabdard)
1) DES
DES เป็นอัลกอริทึมแบบ Block Cipher ที่มีการใช้งานมากที่สุด โดย DES เป็นมาตรฐานของ NIST
Block Size = 64 บิต
Key = 56 บิต
การเข้ารหัสกับบล็อกข้อมูล ก็จะได้ออกมาเป็น Ciphertext ที่มีความยาวเท่ากับ Plaintext ที่เข้าไปคือ 64 บิต
2) 3DES
เริ่มแรกเป็นมาตรฐานของ ANSI จากนั้น NIST ได้นำมาใช้ใน 3DES
จะใช้อัลกอริทึมเดียวกับ DES แต่จะใช้คีย์จำนวน 3 คีย์และทำ DES จำนวน 3 ครั้ง ดังนั้นคีย์ทั้งหมดจะมีความยาว Key = 56*3 = 168 บิต
อย่างไรก็ตาม FIPS PUB 46-3 ยอมให้ใช้คีย์เพียง 2 คีย์ คือ กำหนดให้คีย์ K1 เท่ากับ K3 ได้ ดังนั้นความยาวคีย์จะเหลือเท่ากับ 112 บิต
3) AES (Rijndael)
3DES ถูกออกแบบมาให้ง่ายต่อการสร้างด้วยฮาร์ดแวร์มากกว่าซอฟต์แวร์ และการทำ DES ถึง 3 ครั้ง ทำให้เข้ารหัสช้า และบล็อกข้อมูลขนาด 64 บิต ถือว่าเล็กเกินไปในปัจจุบัน จึงมีการนำอัลกอริธึมใหม่ Rijndael มาใช้ เรียกว่า AES
อัลกอริทึมนี้จะยังคงเป็นแบบ Block Cipher
ใช้ Block size = 128 บิต 196 บิต และ 256 บิต
Key = ได้ยาวถึง 128 บิต 196 บิต และ 256 บิต
โดยอัลกอริทึมนี้ได้รับการออกแบบให้มีการทำงานที่เหมาะสมกับโพรเซสเซอร์รุ่นใหม่ ๆ และสามารถใช้งานกับ Smart Card ได้ เพราะใช้หน่วยความจำน้อย
และใช้ฟังก์ชัน Round ที่สามารถเลือกได้ว่าจะทำ 10, 12 หรือ 14 ครั้ง
4) IDEA
ใช้ Key = 128 บิต
ใช้งานกับโปรแกรมยอดฮิตและลงลายมือชื่ออิเล็กทรอนิกส์ในระบบอีเมล์ที่มีชื่อว่า PGP
แต่ติดปัญหาลิขสิทธิ์ คนเลยไม่ค่อยใช้
5) Blowfish
อัลกอริทึมที่มีความรวดเร็วในการทางาน มีขนาดเล็กกระทัดรัด ไม่ได้จดสิทธิบัตร
ใช้ Key ที่มีการเปลี่ยนค่าความยาวตั้งแต่น้อยๆ จนถึง 448 บิต (แต่ปกติใช้ 128 บิต)
วนรอบ 16 ครั้ง มีความเร็วในการทำงานสูง
ออกแบบรองรับหน่วยประมวลผลขนาด 32 หรือ 64 บิต
6) CAST-128
Key = 40 – 128 บิต โดยเพิ่มทีละ 8 บิต
ฟังก์ชันแบบ Non-Linear ทำให้แกะรหัสยาก
ใช้ฟังก์ชัน Round แต่ละรอบที่แตกต่างกันไป
7) RC4
อัลกอริทึมแบบสตรีม (ทำงานกับข้อมูลทีละไบต์)
สามารถใช้ขนาดความยาวของ Key ตั้งแต่ 1 – 2048 บิต
ได้รับการพัฒนาขึ้นมาโดย Ronald Riverst และถูกเก็บเป็นความลับทางการค้าโดยบริษัท RSA Data Security ในภายหลังอัลกอริทึมนี้ได้รับการเปิดเผยใน Usenet เมื่อปี ค.ศ. 1994 และเป็นที่ทราบกันว่าเป็นอัลกอริทึมที่มีความแข็งแกร่ง
8) One-time Pads
ถูกยอมรับว่าเป็นอัลกอริทึมที่ไม่มีใครสามารถเจาะความแข็งแกร่งของอัลกอริทึมได้
ใช้ Key ที่มีขนาดความยาวซึ่งอาจจะมากกว่าขนาดความยาวของข้อความที่ต้องการเข้ารหัส
สร้าง Key ออกมาแบบสุ่ม และโดยปกติจะใช้งานแค่เพียงครั้งเดียวแล้วทิ้งไป
แต่ละไบต์ของข้อความที่ต้องการส่งไปจะถูกเข้าและถอดรหัสโดยหนึ่งไบต์ (ชนิดไบต์ต่อไบต์) ของกุญแจที่ถูกสร้างขึ้นมาใช้งาน
ข้อจำกัด คือขนาดของ Key ที่อาจมีขนาดยาวกว่าข้อความที่ต้องการส่ง ทำให้การส่งมอบกุญแจที่มีขนาดใหญ่ทำได้ไม่สะดวกนัก รวมทั้งการสร้างกุญแจให้มีความสุ่มสูงไม่ใช่เป็นสิ่งที่ทาได้ง่ายนัก อย่างไรก็ตามอัลกอริทึมนี้ก็ยังมีการใช้งานในระบบเครือข่ายที่ต้องการความปลอดภัยสูง
Asymmetric Encryption
อัลกอริทึมแบบกุญแจสาธารณะ (ซึ่งเป็นแบบอสมมาตร) ช่วยแก้ปัญหาข้่างต้นได้ทั้งหมด ผู้ใช้ที่ถือกุญแจส่วนตัวและต้องการให้บุคคลอื่นที่ตนติดต่อด้วยส่งเอกสารหรือข้อความที่เข้ารหัสมาหาตน สามารถเผยแพร่กุญแจสาธารณะของตนไว้บนเว็บไซต์หรือในที่สาธารณะซึ่งผู้อื่นสามารถเข้ามาดาวน์โหลดไปใช้งานได้
วิธีการใช้งานการเข้ารหัส
1. เรามีกุญแจ 2 ดอก เอา Private key ไว้กับตัว เอา Public Key ไปวางในที่สาธาณะไว้แจก
2. คนที่ต้องการจะส่งข้อความเข้ารหัสมาให้เรา ให้เค้ามาดาวน์โหลดกุญแจสาธารณะนั้น ไปทำการเข้ารหัสข้อความที่ต้องการส่งด้วยกุญแจสาธารณะ แล้วจึงส่งข้อความที่เข้ารหัสไปให้กับเราผู้เป็นเจ้าของกุญแจสาธารณะ
3. วิธีนี้จะไม่มีผู้อื่นสามารถเปิดดูข้อความที่เข้ารหัสนั้นได้ยกเว้นเราที่เป็นผู้ที่ถือกุญแจส่วนตัว (ที่เป็นคู่ของกุญแจสาธารณะนั้น) จึงจะสามารถเปิดข้อความนี้ดูได้
ข้อดี
ลดความยุ่งยากในการแลกเปลี่ยนกุญแจกัน
ผู้ที่ต้องรับผิดชอบเหลือเพียงผู้เดียว กล่าวคือ ผู้ถือกุญแจส่วนตัว ซึ่งห้ามให้ผู้อื่นล่วงรู้โดยเด็ดขาด
ใช้จานวนกุญแจที่ประหยัดกว่า เนื่องจากกุญแจสาธารณะ 1 กุญแจของกลุ่มๆ หนึ่งจะสามารถเผยแพร่ให้กับกี่กลุ่มก็ได้ที่เราต้องการติดต่อด้วย (แทนที่จะเป็น 1 กุญแจลับต่อสองกลุ่มที่ต้องการติดต่อกัน) ดังนั้นถ้ามีกลุ่มที่ต้องติดต่อกันจำนวน n กลุ่ม จำนวนกุญแจส่วนตัวที่ต้องระวังรักษาก็คือเพียง n กุญแจ

Comments