Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

公開鍵基盤(PKI)の仕組みと証明書の役割について

投稿日:2023年5月6日 更新日:

 

<目次>

(1) 公開鍵基盤(PKI)の仕組みと証明書の役割について
 記事の「目的」と「前提」
 (1-0) STEP0:全体像
 (1-1) STEP1:証明書の正当性チェック
 (1-2) STEP2:鍵交換

(1) 公開鍵基盤(PKI)の仕組みと証明書の役割について

記事の「目的」と「前提」

(目的)
・公開鍵基盤(Public Key Infrastructure)を用いた「クライアント」と「サーバー」間の通信の流れを理解する
・その流れの中で「証明書」が果たす役割を理解する
 
(前提)
・サーバー側で「証明書」の発行と公開準備が完了しており、クライアントからのアクセスを受け付けられる状態であること

(1-0) STEP0:全体像

「クライアント」と「サーバー」が暗号化通信を始めるためには、ざっくり以下の流れの処理があります。
 
・STEP1:証明書の正当性チェック
→信頼できる相手かどうか?を最初にチェックします
 
・STEP2:鍵交換
→チェックがOKなら、実際にデータのやり取りを行うための「データ鍵」の交換を行います
 
(図111)
以降はSTEP1とSTEP2について、それぞれもう少し掘り下げてみます。
 

(1-1) STEP1:証明書の正当性チェック

●①「クライアント」→「サーバー」にブラウザ経由でリクエストを送る
・「https://xxx.com」宛てにHTTPSリクエストを送ります。
・http[s]で送る事により、暗号化通信を形成する事を要求します
●②「サーバー」→「クライアント(ブラウザ)に「サーバー証明書」を送る
・証明書はアドレスの正当性を証明する
●③「クライアント」→「CA局」→・・・→「ルートCA局」と信頼性・有効性の確認を行う
・証明書自体の信用を担保する上位のCA局を辿っていく。
・辿った結果「サーバー証明書」に事前に組み込まれた「ルートCA」局にたどり着いたら、検証OKと判断
●④「クライアント」→「CA局」にCRLチェック(失効リストチェック)を行う
・OCSPプロトコル(Online Certificate Status Protocol)を使用
●⑤チェック完了したら、暗号化チャネルを形成が可能になる
 
(図121)

(例)
・アクセスしようとするサイトの証明書
→3段階になっています。
(図122)
・ご自身のPythonに下記のようなファイルがあると思います(Windowsの例)
C:\Users\[ユーザー名]\AppData\Roaming\Python\Python310\site-packages\certifi\ cacert.pem
 
(図123)
 
これがご自身の端末として信頼済みの証明書群であり、各CAの証明書がずらー-っと連結されています。
 

(1-2) STEP2:鍵交換

●①「クライアント」側で「データ鍵」を生成
・「データ鍵」はセッションの間中だけ、データを暗号化/複合化するのに使う
・「公開鍵」と「秘密鍵」の処理は一定の処理負荷(CPU)が掛かる
・よって、セッションの間は「データ鍵」を使用し、「データ鍵自体の暗号化」に公開鍵と秘密鍵を使う
●②「クライアント」→「サーバー」に「データ鍵」を暗号化して送信する
・暗号化は「サーバー証明書」の「公開鍵」を使って行う
●③「サーバー」側で「復号」を行う
・復号は「サーバー証明書」の「秘密鍵」を使って行う
・復号によって「データ鍵」を取り出せる
●④以降の通信は「データ鍵」を使って行う
 
(図131)
 

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

CRUD図とは?の例や書き方のご紹介

  <目次> (1) CRUD図とは?の例や書き方のご紹介  (1-1) CRUD図とは?  (1-2) CRUD図の例&書き方  (1-3) なぜCRUD図を作るか? (1) CRUD図と …

OutlookからSlackにメールを転送する方法について

  <目次> (1) OutlookからSlackにメールを転送する方法について  (1-1) 方法1  (1-2) 方法2(Gmailの例)  (1-3) 方法3  (1-4) 方法4 ( …

no image

Slackでボットを開発する手順をご紹介(Python)

  <目次> (1) Slackでボットを開発する手順をご紹介(Python)  (1-0) やりたいこと  (1-1) STEP1:Slackアプリの作成と疎通  (1-2) STEP2: …

Celonis Snapの使い方を画像や動画でご紹介(導入編)

  <目次> (1) Celonis Snapの使い方を画像や動画でご紹介(導入編)  (1-1) STEP1:アカウント作成(仮登録→本登録→ログイン)  (1-2) STEP2:実際にデ …

システム開発における設計品質の分析の進め方(一例)について

  <目次> (1) システム開発における設計品質の分析の進め方(一例)について  (1-1) まえがき  (1-2) 前提事項  (1-3) 進め方  (1-4) 参考:分析の手法について …

  • English (United States)
  • 日本語
Top