1. A method of protecting data of variable protection levels, the method comprising: for each leaf node, determining a protection level for the leaf node; for each non-leaf node, determining a protection level for each non-leaf node based on a maximum of the protection levels of each child of each of the non-leaf nodes; protecting each of the leaf nodes at the protection level determined for each of the leaf nodes; and protecting each of the non-leaf nodes at the protection level determined for each of the non-leaf nodes.