数据随机化(Data Randomization),理学-计算机科学技术-信息安全-信息系统安全-软件安全-软件安全防御,一种在程序编译阶段引入的抵御缓冲区溢出攻击的技术。该技术是在编译阶段在原始程序的数据操作指令前后加入一系列处理指令,使得原始数据以加密形式存储到内存中,只有正确解密内存数据的指令才能够正常执行。因此,攻击者将因为不了解原始密钥,而无法正确改写数据(如,指针地址)或泄漏内存中的原始数据。例如,攻击者若采用控制流劫持攻击,其想要覆盖的内存地址值是密文,不知道密钥的攻击者便无法构造正确的内存地址因而无法篡改程序的控制流。2003年,C.考恩(Crispin Cowan)等人提出了PointGuard技术,是数据随机化技术的雏形。该技术将指针加密存储于内存中,仅在指针解引用(dereference)时才进行解密,使得攻击者无法直接覆盖指针以实现劫持程序的控制流。但该技术仅限于保护指针,而无法对抗非指针覆盖类型的攻击。2008年,微软研究院的C.查德尔(Cristian Cadar)等人首次正式提出数据随机化技术的概念,能够全面保护存储到内存中的数据。