SSLは暗号化、認証、改竄検出の機能を提供します。
具体的なアルゴリズムはそれぞれ複数の選択肢が定義されており、SSL通信の開始時に行われるネゴシエーション時に、双方が許容するアルゴリズムの中からそれぞれ一つが選択されます。
共通鍵は、クライアントとサーバの双方から提供される乱数に基づいて決定されます。
双方で生成した乱数を組み合わせて使用するので、リプレイ攻撃では同一の共通鍵を得ることはできません。
鍵の盗聴を防ぐ仕組みとして、サーバ証明書がRSA暗号を用いて署名されている場合は、クライアントから送る鍵情報の一部をサーバの公開鍵で暗号化することができます。
サーバの秘密鍵を知らない部外者は、この情報を復号できません。
あるいは(RSA暗号を使っていない場合などは)Diffie-Hellman鍵共有アルゴリズムを使うことも可能です。
。
SSLでは通常、サーバだけが証明書を提示して、クライアントがその正当性を確認します。
クライアント認証はオプションとなっており、必要な場合にサーバがクライアントに対して証明書の提示を求めます。
なりすましを防ぐため、証明書には認証局(CA;CertificationAuthority)による電子署名が必要となります。
またサーバ証明書には発行先サーバのホスト名が書き込まれており、クライアントは自分が接続しようとしているサーバのホスト名と一致するかどうか確認することができます。
SSLの各レコードには、データのハッシュ値が付加されています。
改竄されたデータはハッシュ値と一致しなくなるため、受信者は改竄を検出できます。
各レコードにはシーケンス番号が振られていて、このシーケンス番号も含めてハッシュ値が算出されているせいで、一部のレコードを重複して送りつける形のリプレイ攻撃も検出できる。
また、(アプリケーション層プロトコルによる代替手段がない限り)通信の終了を知らせるレコードを送り合うことになっており、これが送られないうちに接続が切断された場合には、強制切断攻撃による介入を受けたと判断することが可能になります。