Protecting Private Keys against Memory Disclosure Attacks Using Hardware Transactional Memory