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

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

関連記事

Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)

  <目次> (1) Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)  (1-0) やりたいこと  (1-1) STEP1:Slackボットの開発(所要時間:60分)  ( …

ユーザーストーリーマッピングとは?

  <目次> (1) ユーザーストーリーマッピングとは?  (1-1) 「ユーザーストーリーマッピング」の概要  (1-2) 「ユーザーストーリーマッピング」の利点  (1-3) 「ユーザー …

Anaplanとは?コネクテッドプランニング(コンセプト)と絡めてご紹介

  <目次> (1) Anaplanとは?コネクテッドプランニング(コンセプト)と絡めてご紹介  (1-1) Anaplanとは?  (1-2) Anaplanで実現する「コネクテッドプラン …

no image

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

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

画面設計の項目一覧の書き方とサンプルのご紹介

  <目次> (1) 画面設計の項目一覧の書き方とサンプルのご紹介  (1-1) 項目一覧とは?  (1-2) 項目一覧の書き方は?  (1-3) 項目一覧のサンプル (1) 画面設計の項目 …

  • English (United States)
  • 日本語
Top