Tags:
Node Thumbnail

Telegram เป็นแอปส่งข้อความความปลอดภัยสูงบนอุปกรณ์พกพาที่ได้รับความนิยมสูงมากในช่วงหลายปีที่ผ่านมา แต่มีงานวิจัยฉบับหนึ่งชื่อ On the CCA (in)security of MTProto เผยแพร่ในสมาคมนานาชาติเพื่อการวิจัย Cryptologic (International Association for Cryptologic Research) ซึ่งเขียนโดย Jakob Jakobsen และ Claudio Orlandi จากภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยฮอร์ฮูส ประเทศเดนมาร์ก

เนื้อหาเริ่มต้นของงานวิจัยพูดถึงคุณสมบัติทั่วไปที่เป็นจุดตั้งข้อสังเกตุคือ

  1. กล่าวถึงรูปแบบในการรับ-ส่งข้อความ 2 แบบ คือ Cloud Chat (ทั้งแบบคุยตัวต่อตัว และแบบคุยเป็นกลุ่ม) โดยรูปแบบนี้จะเป็นค่ามาตรฐานในการสื่อสาร โดยเก็บข้อมูลต่างๆ ที่สามารถอ่านได้ไว้ที่ฝั่ง Server เพื่อให้อุปกรณ์ทุกเครื่องที่เชื่อมต่อสามารถเห็นข้อมูลล่าสุดได้เหมือนๆ กัน และแบบ Secret Chat ที่เป็นรูปแบบ end-to-end encryption ที่สามารถรับ-ส่งข้อความได้เพียงเครื่องใดเครื่องหนึ่งและถอดรหัสได้เพียงเครื่องใดเครื่องหนึ่ง และ Server ที่ให้บริการไม่สามารถอ่านข้อความที่วิ่งรับ-ส่งได้เพราะเข้ารหัสจากต้นทาง และถอดรหัสที่ปลายทาง

  2. ตัว client ของ Telegram เป็นซอฟต์แวร์แบบเปิด (open source) ที่ยอมให้มีการตรวจสอบได้ทั้งหมด แต่สำหรับซอฟต์แวร์ฝั่ง server นั้นไม่สามารถใช้วิธีการนี้ได้ ทั้งนี้งานวิจัยนี้วิเคราะห์บนพื้นฐาน client จาก source code ของ Telegram รุ่น 2.7.0 ณ เดือนเมษายน 2015

ส่วนต่อมาของงานวิจัยฉบับนี้กล่าวถึงข้อมูลจุดที่มีปัญหาในตัว Telegram คือ

รูปแบบการเข้ารหัสแบบกุญแจสมมาตร (symmetric encryption scheme) ที่ชื่อ MTProto ซึ่งถูกใช้เข้ารหัสข้อมูลเพื่อรับ-ส่งข้อมูลของแอป Telegram ไม่เป็นไปตามคุณสมบัติ IND-CCA security เพราะ MTProto ใช้ block-cipher structure และมีการใส่ padding ลงไป เพื่อกำหนดความยาวของข้อมูลเพื่อใช้เช็คในระหว่างถอดรหัส นั้นหมายความว่า มีความเป็นไปได้ที่จะสร้างข้อความเข้ารหัสที่แตกต่างกันเพื่อที่จะถอดรหัสข้อความเดียวกันได้ (it is possible to turn any ciphertext into a different ciphertext that decrypts to the same message) แต่วิธีการโจมตีข้างต้นยังเป็นการโจมตีทางทฤษฎี ซึ่งยังไม่เห็นผลของการโจมตีนี้ว่าสามารถแปลงข้อมูลเข้ารหัสกลับมาเป็นข้อความเดิมได้จริงในตอนนี้ โดยนักวิจัยได้นำเสนอรูปแบบการโจมตีจากวิธีการเข้ารหัสดังกล่าวด้วยวิธี Padding-Length Extension และ Last Block Substitution ทางสมการ เพื่อพิสูจน์การโจมตีโปรโตคอล MTProto

นักวิจัยได้ให้ความเห็นสรุปว่า ไม่มีเหตุผลที่จะใช้โปรโตคอล MTProto เลย หากพบว่าการเข้ารหัสความปลอดภัยของ MTProto นั้นมีความปลอดภัยน้อยกว่ารูปแบบอื่นๆ ที่มีความปลอดภัยและมีประสิทธิภาพมากกว่า และยังคงยืนยันว่าไม่ควรออกแบบการเข้ารหัสเอง (Don't Roll Your Own Crypto)

สำหรับสมการ และข้อมูลอย่างละเอียดอ่านต่อได้ที่ Cryptology ePrint Archive: Report 2015/1177 - On the CCA (in)security of MTProto เพื่อศึกษาข้อมูลเชิงวิชาการ

ที่มา

Get latest news from Blognone

Comments

By: lew
FounderJusci's WriterMEconomicsAndroid
on 26 June 2016 - 23:38 #922067
lew's picture
  • ข้อ 1 และ 2 เป็นข้อมูลทั่วไปของ Telegram ครับ ไม่ใช่ยสิ่งที่พบจากการวิจัยแต่อย่างใด ไม่ควรเอาไว้ใน list เดียวกัน
  • Ciphertext indistinguishability เป็น "คุณสมบัติ" ของกระบวนการเข้ารหัสลับ ไม่ใช่ "มาตรฐาน"
  • IND-CCA หมายถึงว่า หากแฮกเกอร์สามารถกระตุ้นให้มีการเข้ารหัสข้อความใดๆ เพื่อสังเกตผลลัพธ์ได้ไปเรื่อยๆ จะสามารถเดาได้ว่าข้อความที่เข้ารหัสแล้ว มาจากข้อความ plaintext ใด (โดยความน่าจะเป็นดีกว่าการเดาสุ่ม) (อ่านเพิ่มเติม StackExchange: Crypto อธิบายไว้ดี) อาจจะนำไปถึงการเดาข้อความ plaintext จากข้อความที่เข้ารหัสแล้วได้
  • งานวิจัยระบุสองแนวทางในการเจาะ MPProto แนวทางหนึ่งคือ Padding-Length Extension มีโอกาสสำเร็จสูงแต่แก้ไขโดยง่าย อีกแนวทางคือ Last Block Substitution มีความน่าจะเป็นเพียง 2^(-32)

งานวิจัยนี้เก่าหลายเดือนแล้ว (เกินครึ่งปี) และทาง Telegram ก็ตอบประเด็นเหล่านี้ไว้แล้ว คงไม่มีประเด็นต้องเป็นข่าวอีกครับ ในทางหนึ่งแล้วงานวิจัยเช่นนี้เป็นไปได้ในทาง "ทฤษฎี" อย่างที่ Telegram ตอบตั้งแต่ตอนนั้น จนตอนนี้ยังไม่มีพัฒนาการข่าวอะไรเพิ่มเติม เช่นมีสคริปต์ถอดรหัสได้จริง

ถ้าจะเขียนประเด็นนี้อาจจะไม่ใช่ข่าวปกติ แต่เป็นบทความสำเสนอว่าช่องโหว่ที่เคยพูดถึงมีอะไรมาบ้าง ในความเป็นจริงมันโจมตีได้จริงแค่ไหน และ Telegram แก้อะไรไปแล้วบ้าง ครับ


lewcpe.com, @wasonliw

By: Ford AntiTrust
ContributorAndroidBlackberryUbuntu
on 27 June 2016 - 00:07 #922070 Reply to:922067
Ford AntiTrust's picture

ได้ครับ อาจจะเป็นโจทย์เพื่อเขียนเป็นบทความในอนาคตอีกทีครับ

แต่เพื่อให้เนื้อหาปรับปรุงเข้าใจตามที่ได้แย้งมา ผมขอปรับเพื่อให้ถูกต้องเพิ่มมากขึ้นครับ เผื่อ Google ค้นเจอจะได้เข้าใจตรงกันกับคอมเม้นข้างต้น

ข้อที่ 1.-2. นี่ผมยกเพื่องานวิจัยพูดถึงเพื่อนำไปสู่การอธิบายประเด็นสำคัญในข้อที่ 3. - 4. คิดว่าควรปรับใหม่เป็น โดยแยกส่วนที่เป็นเกริ่นนำ กับส่วนหลักที่งานวิจัยมองเป็นประเด็นหลัก

ขอบคุณครับ