はじめに
本記事の目的
本記事は「SSL/TLS」と「RSA暗号」について、初心者にも分かりやすく体系的に解説することを目的としています。専門用語は必要最小限に抑え、具体例を交えて説明します。
誰に向けた記事か
ウェブの安全性に関心がある方、運用担当者、開発者や学生が対象です。暗号の専門家でなくても理解できるよう配慮します。
本記事で学べること
- SSL/TLSの基本概念と役割
- RSA暗号の仕組みの概略(例と図解の代わりに平易な説明)
- SSL/TLSでRSAがどのように使われるか
- RSAと他の暗号方式との違いと使い分け
- 実務での使い方と運用ポイント
読み方のヒント
章ごとに独立して読み進められます。初めての方は第2章から順に読むと理解が深まります。具体的な導入例は後半にまとめました。
SSL/TLSとは何か
簡単な定義
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、インターネット上の通信を安全にする仕組みです。Webブラウザとサーバ間のやり取りを暗号化し、第三者に内容を見られたり改ざんされたりするのを防ぎます。鍵マークやhttpsで始まるURLが使われます。
何を守るのか(イメージ)
封筒に手紙を入れて送ることを想像してください。内容が見えないよう封をするのが暗号化、差出人を証明するのが証明書、封筒を受け取ったときに改ざんがないか確認するのが整合性の役割です。
基本の流れ(わかりやすく)
- ブラウザがサーバに接続を要求します。
- サーバは証明書を送って正当性を示します。
- ブラウザが証明書を確認したら、安全な通信のための共通鍵を決めます。
- 以後はその共通鍵で速く暗号化された通信を続けます。
利用場面と重要性
オンラインの買い物、ログイン、個人情報の送信などで必ず使われます。通信が暗号化されると盗聴やなりすましのリスクを大幅に下げられます。
RSA暗号とは何か
基本のしくみ
RSAは公開鍵と秘密鍵のペアで動作する暗号です。公開鍵は誰でも使ってデータを暗号化できます。秘密鍵だけで復号できます。安全性は、2つの大きな素数を掛け合わせた値(モジュラスN)を素因数分解するのが難しい点に基づきます。
鍵の作り方(簡単な例)
- 2つの素数pとqを選びます。例:p=61、q=53
- N=p×q=3233を作ります。
- 公開指数eを選び、秘密指数dを計算します。例ではe=17、d=2753。
この公開鍵(N,e)で暗号化し、秘密鍵(N,d)で復号します。
使われ方と特徴
RSAはデータの暗号化だけでなく、電子署名にも使います。署名は「その人が作った」と証明する仕組みです。RSAは処理が重めなので、大きなデータは速い対称鍵暗号で暗号化し、その鍵をRSAで安全に渡す使い方が一般的です。
安全性と鍵長
鍵が長いほど安全です。現在は少なくとも2048ビットが推奨されます。秘密鍵は厳重に管理することが最も重要です。
SSL/TLSでのRSAの役割
概要
SSL/TLSではRSAが主に二つの目的で使われます。一つはサーバ認証のための証明書署名、もう一つはセッション鍵を安全に共有するための手段でした。ここではそれぞれを分かりやすく説明します。
1)サーバ認証(証明書の署名と検証)
認証局(CA)がサーバ証明書に署名します。署名はRSAの秘密鍵で行い、通信相手は公開鍵で検証します。たとえば、ウェブサイトにアクセスするとブラウザが証明書の署名を確認し、正しければ接続を続けます。RSAはこの署名で今も広く使われます。
2)セッション鍵の交換(過去の手法と現在)
かつてRSAでプレマスター鍵を直接暗号化して送る「RSA鍵交換」が一般的でした。サーバの公開鍵で暗号化されたデータをサーバが復号して共通鍵を得ます。これにより鍵交換は簡単でしたが、長所と短所があります。
なぜRSA鍵交換は非推奨か
RSA鍵交換は通信の秘密を将来の漏えいから守れない点が問題でした。秘密鍵が漏れると過去の通信が解読される恐れがあります。したがって、現在は一時的な鍵を使うECDHE等の方式が推奨され、TLS 1.3ではRSA鍵交換を禁止しています。しかし、証明書の署名アルゴリズムとしてのRSAは依然として使われています。
RSAと他の暗号技術の比較
概要
RSAとECDSA(楕円曲線署名)はSSL/TLSで使われる主要な公開鍵方式です。RSAは歴史が長く互換性に優れ、広い環境で動作します。一方、ECDSAは短い鍵で同等の安全性を実現し、効率が良い点が特徴です。
鍵長と安全性
例として、RSAの2048ビットはECDSAのP-256と同等の安全性と見なされます。RSAは鍵を大きくすると安全性が上がりますが、鍵長が増すほど処理負荷と通信量が増えます。
性能とリソース
ECDSAは署名計算と通信コストが小さく、モバイルやIoT向けに向きます。RSAは計算が重めですが、サーバーやデスクトップでは十分に高速です。
互換性と導入
古いソフトや組織ではRSAのサポートが確実です。しかし、新しい環境やリソース制約のある機器ではECDSAを選ぶ利点が大きいです。
選び方の目安
- 互換性優先:RSA
- リソース効率優先:ECDSA
移行時は証明書チェーンやクライアント対応状況を確認してください。
RSAの安全性と今後
現在の安全性
RSAは長年にわたり広く使われ、安全性は高いと評価されています。実務では公開鍵の大きさ(鍵長)が安全性に直結します。短い鍵を使うと解読のリスクが高まるため注意が必要です。
鍵長の目安
現代の基準では2048ビット以上を推奨します。例えば、2048ビットは多くのウェブサービスで最低ラインとなっており、将来の安全性を考えると3072ビット以上を検討する場合もあります。鍵を短くすると攻撃に対して脆弱になります。
量子コンピュータとポスト量子暗号
量子コンピュータの進展が進めば、RSAの基礎となる因数分解の難しさが損なわれる可能性があります。そのためポスト量子暗号への移行が議論されています。現在は研究と標準化が進んでおり、実務では段階的な準備が望まれます。
実務上の推奨
RSAによる鍵交換は避け、TLS1.2以降ではDHやECDHEを使用してください。署名や証明書でRSAを使う場合は鍵長に注意し、将来的にはポスト量子対応や楕円曲線署名への移行計画を立てることをおすすめします。
SSL/TLS証明書でのRSAの使い方
概要
SSL/TLS証明書の秘密鍵を作る際、RSAを選び鍵長は2048ビット以上が一般的です。署名にはRSA-SHA256などが広く使われます。以下では実務でよく使う手順と注意点を分かりやすく説明します。
鍵の生成(例)
opensslでの一般的な手順は次の通りです。まず2048ビットの秘密鍵を作成します。
openssl genpkey -algorithm RSA -out privkey.pem -pkeyopt rsa_keygen_bits:2048
続いてCSR(証明書署名要求)を作ります。
openssl req -new -key privkey.pem -out request.csr
証明書発行時はCAがRSA-SHA256などで署名します。
秘密鍵の保護
秘密鍵はファイル権限で厳重に管理し、可能ならパスフレーズやHSM(鍵の専用機器)を使います。バックアップは暗号化して別箇所に保管してください。
運用上の注意
・鍵長は2048bit以上を優先し、将来を見越すなら3072bitや4096bitも検討します。
・古いクライアント互換性が必要な場合、鍵長や署名アルゴリズムの制約を確認します。
・定期的に鍵をローテーションし、期限切れ・漏洩リスクを下げます。
確認方法
発行後はopensslで証明書内容を確認します。
openssl x509 -in cert.pem -text -noout
この手順を守れば、RSAを用いたSSL/TLS運用が安全で確実になります。
RSAの実際の導入例と応用
概要
RSAはSSL/TLSに限らず、身元確認、データ整合性、機密性の確保で広く使われます。ここでは実際の導入例と、現場での使われ方を具体的に示します。
電子メール(S/MIME)
企業や個人のメールで、送信者の身元確認と内容の改ざん防止に使います。送信者は自分の秘密鍵で署名し、受信者は公開鍵で検証します。署名付きメールは受信側が送信元を確認でき、安全性が上がります。
デジタル署名(ソフトウェア配布や文書)
ソフトウェア配布で配布元が本物か確認する目的で使います。配布ファイルに署名を付け、受け手は公開鍵で署名を検証します。改ざんがあれば検出できます。
電子商取引と決済
オンライン決済や会員サイトの本人確認で、RSAは鍵交換や署名に利用されます。安全な通信の初期段階で鍵をやり取りし、その後のやり取りを暗号化します。
VPNとリモートアクセス
企業のVPNでは認証や鍵交換に使います。クライアント証明書やサーバー証明書の署名により、安全な接続を確立します。
IoT・スマートカード
スマートカードや一部のIoT機器でRSAが使われます。個体ごとの鍵で認証を行い、不正な機器の混入を防ぎます。
実務でのポイント
- 鍵長を適切に選ぶ(少なくとも2048ビット推奨)。
- 秘密鍵の保護とバックアップを徹底する。ハードウェアセキュリティモジュール(HSM)を使うことが望ましいです。
- 互換性を確認する。古い機器は大きな鍵や新しいアルゴリズムを扱えない場合があります。
簡単な導入例(OpenSSL)
秘密鍵の生成例:
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
公開鍵の抽出例:
openssl rsa -pubout -in private.pem -out public.pem
現場では、これらを証明書発行や署名、検証のワークフローに組み込みます。
SSL/TLSの安全運用ポイント
はじめに
SSL/TLSを安全に運用するには、設定と管理の両方を日常的に見直す必要があります。ここでは実務で役立つ具体的なポイントを分かりやすく説明します。
鍵長と鍵の保護
- RSA鍵長は最低2048ビットを使用し、長期運用は3072ビット以上を検討してください。短い鍵は安全性が低下します。
- 秘密鍵はサーバー内の限定された場所に保管し、アクセス権を最小化します。可能ならHSM(ハードウェアセキュリティモジュール)を使います。
TLSバージョンと暗号設定
- TLS1.2以上を利用し、TLS1.3が使える環境なら優先してください。TLS1.0/1.1は無効にします。
- 鍵交換は前方秘匿のある方式(例:ECDHE)を組み合わせ、弱い暗号やSHA-1は無効にします。
証明書の管理
- 有効期限を把握し、自動更新(例:ACMEプロトコル)を導入します。
- 失効時の対応を決め、OCSPやCRLの動作を確認します。
運用と監視
- 定期的に設定をテスト(例:TLSのスキャンツール)し、脆弱性や弱い構成を早期に修正します。
- ログを収集し、不審な接続や証明書エラーを監視します。
インシデント対策と教育
- 秘密鍵漏えい時の手順を整え、即時に証明書を再発行・失効します。
- 運用担当者に基本的なTLSの知識と手順を共有します。
補足:RSA以外の検討
- ECDSAやTLS1.3での鍵交換を導入すると、前方秘匿や性能面で利点があります。環境に応じて段階的に移行してください。
日々の管理を丁寧に行うことで、TLSの安全性は大きく向上します。












