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

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

関連記事

no image

P2P(Procure to Payment)とは?概要や流れをご紹介

  <目次> (1) P2P(Procure to Payment)とは?概要や流れをご紹介  (1-1) 概要  (1-2) 流れ   ●①必要性チェック(Indentify Needs) …

Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)

  <目次> (1) Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)  (1-1) 概要  (1-2) STEP1:Numpyのインストール  (1-3) S …

LinkedIn APIの使い方について(PythonでAPIコール疎通させるまで)

  <目次> (1) LinkedIn APIの使い方について(PythonでAPIコール疎通させるまで)  (1-1) STEP1:【任意】企業・団体ページの作成  (1-2) STEP2 …

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

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

Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法について

  <目次> (1) Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法につ …

  • English (United States)
  • 日本語
Top