Critical elements of computer software security