V8 ปรับปรุงคุณภาพเลขสุ่ม จับรูปแบบได้ยากขึ้น เริ่มใช้ใน Chrome 49

หัวข้อกระทู้ ใน 'เทคโนโลยี' เริ่มโพสต์โดย iPokz, 17 ธันวาคม 2015.

  1. iPokz

    iPokz ~" iPokz "~ Staff Member

    เอนจินจาวาสคริปต์ V8 ที่เป็นพื้นฐานสำคัญของโครม อิมพลีเมนต์ฟังก์ชั่น Math.random() ด้วยฟังก์ชั่น MWC1616 มาโดยตลอด แต่หลังจากรุ่น 4.9.41.0 จะปรับเป็นฟังก์ชั่น xorshift128+

    ฟังก์ชั่น MWC1616 ทำงานได้เร็วและเรียบง่าย แต่ปริมาณเลขสุ่มที่ผลิตได้ก่อนจะเริ่มซ้ำไม่มากนัก ในกรณีที่ดีที่สุดอาจจะได้ถึง 2^32 บิต แต่บางสถานะเริ่มต้นก็สร้างเลขซ้ำหลังจากสุ่มไปเพียง 40 ล้านบิต ในแง่สถิติแล้วก็มีคุณสมบัติิไม่ดีนัก ขณะที่ฟังก์ชั่น xorshift128+ มีคุณบัติที่ดีกว่ามาก สามารถสร้างเลขสุ่มได้ถึง 2^128 - 1 บิต และคุณบัติทางสถิติก็ดีกว่า

    ทาง V8 ย้ำกว่า xorshift128+ ยังไม่ดีพอสำหรับการใช้งานเพื่อการเข้ารหัส และหากใช้เพื่อสร้างกุญแจเข้ารหัส ควรใช้ฟังก์ชั่น window.crypto.getRandomValues ที่สร้างเลขสุ่มได้ดีกว่าแทน โดยจะแลกกับระยะเวลาสร้างเลขสุ่มที่นานขึ้น

    ที่มา - V8 Project

    ภาพแสดงรูปแบบของเลขสุ่มที่ได้จาก Math.random ใน V8 ก่อนและหลังจากเปลี่ยนฟังก์ชั่น โดย Mike Malone

    [​IMG]

    Chrome, Open Source
     

แบ่งปันหน้านี้