Possibly the most powerful tool for providing privacy, authentication and integrity. A major difficulty (and cost issue) in using cipher systems is key management. Encryption can be used to secure end-to-end communication between two host systems or applications, or to protect traffic flowing between intermediate nodes (point-to-point). At the application level encryption can provide data privacy, data integrity and authentication. Encipherment and decipherment are often computationally intensive operations. Algorithm inversion should be computationally infeasible, just as brute force attacks on key spaces.