HOME»情報処理安全確保支援士掲示板»初歩的な質問をお許しください(公開鍵と秘密鍵)
投稿する

[1203] 初歩的な質問をお許しください(公開鍵と秘密鍵)

 バリオスさん(No.1) 
こんにちは。SCの学習を始めて1ヶ月のものです。
恥を恐れずにご質問させていただきます。
公開鍵と秘密鍵は、実際に私達が使うアプリやサービスの中で意識できる場面が
どういうシーンなのかが気になります。
秘密鍵=パスワード  ではないことは理解できますが、
実際のリアルな場面がイメージできないでいます。
どの部分が公開鍵に該当し、秘密鍵が具体的にどう受け渡され、
ユーザがどのように復号化のときに秘密鍵を使うのかを、
製品やサービスの固有名詞で自分なりに掘り下げて理解したいと考えています。
愚直な質問失礼いたしした、お付き合いいただければ幸いです。
よろしくお願いいたします。
2023.09.05 23:23
pixさん(No.2) 
SC ダイヤモンドマイスター
先日APに類似の内容を投稿しましたので、内容を一部修正したものを掲載いたします。

公開鍵暗号技術はSCの暗号知識の中でもっとも基本となるものです。
確実に理解する必要があります。

公開鍵暗号技術の鍵ペア(公開鍵・秘密鍵)には以下の鉄則があります。
・公開鍵は広く公開されてもよい。不特定多数の人間が入手しても全く問題ない。
・秘密鍵は絶対に公開されてはいけない。秘密鍵を秘密として厳重に扱うことが
  公開鍵暗号技術の機密性の根本である。

公開鍵暗号技術ではいわゆる『4つの鍵』を意識・理解する必要があります。
・受信者の公開鍵
・受信者の秘密鍵
・送信者の秘密鍵
・送信者の公開鍵

これらの鍵の組み合わせで、以下2つの用途を実現します。
・公開鍵暗号(受信者の鍵ペアを使用 ※送信者の鍵ペアは使用しない)
    受信者の公開鍵(暗号化鍵)
    受信者の秘密鍵(復号鍵)
・デジタル署名(送信者の鍵ペアを使用 ※受信者の鍵ペアは使用しない)
    送信者の秘密鍵(署名作成)
    送信者の公開鍵(署名検証)

公開鍵暗号技術は用語としてまぎらわしい点があり、
技術名:
  公開鍵暗号技術
公開鍵暗号技術を利用した機能:
  公開鍵暗号
  デジタル署名
があります。
敢えて言うのであれば、
「公開鍵暗号は公開鍵暗号技術を利用した暗号」
「デジタル署名は公開鍵暗号技術を利用した署名」
ということになります。

ちなみにですが、暗号技術用語でしばしば以下の言葉の誤記・誤用が
見受けられます。
誤記:
  誤:「複合」-> 正:「復号」
誤用:
  誤:「復号化」
  説明:「復号化」という用語はありません。「復号」になります。
      「暗号化」という用語はあります。
      ペアで使うときは「暗号化・復号」というように使います。
      使い方として、『データを「暗号化」する』データが変【化】するので
      正しい使い方です。
      『暗号データを「復号」する』暗号化されたデータをもとのデータに
      もどすので【化】という漢字は不要です。
2023.09.05 23:45
まーぼさん(No.3) 
公開鍵暗号方式で代表的なRSA暗号の仕組みを紹介します。

RSA暗号は素因数分解の一意性や難しさを利用したものとなっています。「素因数分解が難しい」と聞くと違和感を覚えるかも知れません。現状、素因数分解のアルゴリズムは次々と数で割っていき、それが割り切れるか調べるという方法しか分かっていません。そのため、巨大な素数(500桁程度)の場合はコンピュータでもかなりの時間がかかるんですね。

まず、2つの異なる素数p,qを考えます。ここではp=3,q=11とします。
以下のようなnとxを求めます。
n = p×q = 33,x = (p-1)×(q-1)=20
(1<e<n)かつ(eとxは互いに素)を満たすeを適当に一つ求めます。
適当にe=3とすると1<3<20,3と20は互いに素なのでe=3とします。

送信する文字を数字に変換します。
ここでは10をベースにして、アルファベットのi番目だったら10+iと変換するようにしましょう。(例:a→11,b→12,r→28,s→29)

rsaを数字に変換すると282911のようになります。

これを暗号化します。
暗号化は
(平文)^e をnで割った余り
という方法で行います。
282911全体を一気に暗号化するのは大変なので二桁ずつ暗号化していきます。
e=3,n=33だったので
28を暗号化すると、28^3を33で割った余りで7。
29を暗号化すると、29^3を33で割った余りで2。
11を暗号化すると、11^3を33で割った余りで11。

元の文がrsaの場合、暗号化すると7 2 11となります。

これを復号したい場合は
e×dをxで割った余りが1になるようなdを使って、
(暗号文)^dをnで割った余りが復号した文になります。
e=3,x=20だったので3×dを20で割った余りが1になるのはd=7のときですね。

7を復号すると、7^7を33で割った余りなので28。
2を復号すると、2^7を33で割った余りなので29。
11を復号すると、11^7を33で割った余りなので11。

数字を文字に戻してrsaとなります。

このうちe,nが公開鍵、p,q,x,dが秘密鍵です。
p,qが分かっていれば、xとdは計算で求めることができます。dとn(nは公開鍵)が分かっていれば復号することができます。
2023.09.06 02:05
 バリオスさん(No.4) 
pixさん、まーぼさん
さっそくのご回答まことにありがとうございます。
  試験対策としておさえるべき箇所としての要約、
  誤用の指摘(復号に化はつかない)
  RSAのご説明
ところで、私の質問はそれ以前の部分でして、もっと初歩的です
(うまく説明ができなかったので、まずは国語力の問題でもありますが、、)
RSAやらAESやらという技術が応用されているサービスは、
私達が日常使っているITサービスのどの部分に応用されているでしょうか?
→  例えばAmazonのショッピングサイト、CiscoのWebexなどの会議ツールはどうでしょうか?
応用されているITサービスの中で「秘密鍵」に該当する情報はどういう形で受け渡しされているのでしょうか?
もしかして、これらはシステムに組み込まれている部分であり、
ユーザが目に触れる部分ではなく開発サイドの人間しか知り得ないのでしょうか?
試験範囲を逸脱しているような質問、かつ的はずれなご質問で恐縮です。
2023.09.06 07:34
pixさん(No.5) 
SC ダイヤモンドマイスター
長文失礼いたします。
>RSAやらAESやらという技術が応用されているサービスは、
>私達が日常使っているITサービスのどの部分に応用されているでしょうか?
>応用されているITサービスの中で「秘密鍵」に該当する情報はどういう形で
>受け渡しされているのでしょうか?
>もしかして、これらはシステムに組み込まれている部分であり、
>ユーザが目に触れる部分ではなく開発サイドの人間しか知り得ないのでしょうか?
はい。公開鍵暗号などの暗号化技術は一般のユーザには目に触れない形で常に
利用されています。
ちなみに
・RSA 公開鍵暗号
・AES 共通鍵暗号
です。

定本である「暗号技術入門 第3版 秘密の国のアリス」から引用すれば
暗号技術には以下の6つの要素があります
・共通鍵暗号
・公開鍵暗号
・デジタル署名
・メッセージ認証コード
・ハッシュ関数
・疑似乱数生成器
これらがパーツとなり、より高機能な仕組みを作り出します。

例として
■TLS(トランスポートレイヤーセキュリティ)
  暗号化通信する時に使用されるプロトコル
  OSI参照モデルの5、6に位置する
  この上でHTTP(HTTPS)やSMTP(SMTPS)が動作する

TLSは暗号技術として内部で
・共通鍵暗号
・公開鍵暗号
・デジタル署名
・ハッシュ関数
というように複数の機能を利用しています。
併せて、
・公開鍵証明書(デジタル証明書)
も利用しています。

TLS自体も暗号化通信をする際のパーツとして利用されます。
Amazonのショッピングサイト、CiscoのWebexなどの会議ツールがHTTPSで
通信しているのであれば、
HTTPS
  ->その下でTLS
    ->その中で公開鍵証明書(デジタル証明書)
        ->その中で公開鍵と秘密鍵
    ->その中で公開鍵暗号またはデジタル署名
        ->その中で公開鍵と秘密鍵
が利用されています。

この時、以下2種類の機能で公開鍵と秘密鍵が利用されますが
・公開鍵証明書(デジタル証明書)
    公開鍵と秘密鍵は事前に作成され、恒久的に利用される鍵
    公開鍵はデジタル証明書内部に存在し、サーバ内部に配置
    デジタル証明書は通信時にクライアントに渡される
    秘密鍵は事前にサーバ内部に配置
    秘密鍵はサーバ内部から絶対に外へでていくことはない
・公開鍵暗号またはデジタル署名
    公開鍵と秘密鍵はTLS通信時に一時的に作成され、TLS通信が
    終わると、削除されるという使い捨ての鍵
    公開鍵は通信時にクライアントに渡される
    秘密鍵はサーバ内部から絶対に外へでていくことはない
という真逆の性質があります。

そのほかに
S/MIME:メール暗号化(公開鍵暗号とデジタル署名)
SSH:セキュアログイン(公開鍵暗号またとデジタル署名)
クライアント証明書:ユーザ認証(公開鍵暗号とデジタル署名)
なども機能として存在します。
これらの公開鍵と秘密鍵はユーザに気付かないところで生成され、
サーバ内部やクライアント内部に配置されています。

長々と説明していまい恐縮ですが、暗号化技術は単体で利用されるのではないです。
いくつかの機能がブロックのように積み重ねられ、別の機能として利用されます。
特にTLSはかなり複雑なプロトコルで、理解するにはかなりの時間がかかります。
2023.09.06 09:02
通りすがりさん(No.6) 
pixさん、まーぼさん

有償級の内容ありがとうございます。
基礎的な所をしっかりとした説明(分かりやすく体型的に、しかも実際に使われる具体例まで挙げて頂いており)で、とても勉強・参考になりました!

この場を借りて御礼を申し上げます。
以上です、宜しくお願い致します。
2023.09.06 10:24
yepeslk2さん(No.7) 
pixさん
たいへん分かりやすく、また具体的な解説ありがとうございます。
実例まで記載いただいたのは初めてです。
ぐくっても、ここまでロジカルな答えにはたどり着けないと思います。
レイヤでいうと暗号化技術の応用分野の多くはTCP/IPの
アプリケーション層に該当しそうですが(多分)
そうなるとインターフェースがパソコンの操作画面を勝手に
イメージしてしまいます
暗号化技術は、実装、組み込みであり、
エンドユーザーが意識的に操作する対象ではないことを念頭に、
試験対策で混乱のないように励みます。
2023.09.06 11:59
ずっこけさん(No.8) 
私も上記の皆様にお礼を一言、言わせていただきます。
ありがとうございます。
試験も近づいてきて、どこか試験対策として技術を覚えてしまおうと
していたところがありましたが、今回の書き込みをみて本当に理解
している方と自分との差を痛感させらました。
どこかの誰かが苦労して編み出した技術を技術屋としてしっかり
理解出来るように改めて勉学に励みます。
2023.09.06 13:39
boyonboyonさん(No.9) 
スレ主様

>もしかして、これらはシステムに組み込まれている部分であり、
>ユーザが目に触れる部分ではなく開発サイドの人間しか知り得ないのでしょうか?

ブラウザのChromeの設定で:プライバシーとセキュリティ→セキュリティ→デバイス証明書の管理とたどるとインストールされている証明書が見られます。

pixさん、まーぼさん

いつも丁寧な解説ありがとうございます。大変参考になります。
ちょうど最近、秘密の国のアリスを読んでいるところです。
2023.09.06 17:44
pixさん(No.10) 
SC ダイヤモンドマイスター
No.5の書込みの以下の部分が曖昧なので訂正します。
>・公開鍵暗号またはデジタル署名
>    公開鍵と秘密鍵はTLS通信時に一時的に作成され、TLS通信が
>    終わると、削除されるという使い捨ての鍵
>    公開鍵は通信時にクライアントに渡される
>    秘密鍵はサーバ内部から絶対に外へでていくことはない
>という真逆の性質があります。

・TLSのデジタル署名の鍵ペアは公開鍵証明書の恒久的な鍵を利用する
・TLSの鍵交換に公開鍵暗号を利用する場合の鍵ペアは使い捨ての鍵
・TLSの鍵交換以外で公開鍵暗号がデータを暗号化するようなことはない(と思われる)
  通信の暗号化・復号は共通鍵暗号で行われる。いわゆるハイブリッド暗号方式。

TLSは本当に複雑なプロトコルです。いまだに迷うことが多々あります。
一般的にネットに乗っている情報もかなり端折られているので、実際のところは
実装レベルまで調べないとわからないことが多いです。
2023.09.06 17:52
momochanさん(No.11) 
バリオスさん

内閣サイバーセキュリティセンター(NISC)のWebサイトにある資料
「インターネットの安全・安心ハンドブック Ver5.00」
こちらのPDFは基本的なことを振り返るにはいいかもしれませんよ。
2023.09.06 23:27
 バリオスさん(No.12) 
多くの方のご協力大変感謝いたします。
またこのような場をご提供くださったサイト運営者の方に改めて感謝します。
pix様、まーぼ様
理解の促進にご助力ありがとうございます。
いただいた文面はメモに入れておきます

boyonboyon様
ブラウザ(Edge)でも確認できました。なにかのマニュアルで見たことはありますが、
PKIを意識すると目に入ってくる情報も違います。

momochanさん
経産省の案内ありがとうございます。
さっそくダウンロードしました。
IPADで立ち読み(?)します

ひとつ疑問が晴れるとなにか視界が広がった感があります。
いままで気になって、あまり意識に顕在化してこなかったことですが、
データの暗号化ってどうなってるんだろうとか
  秘文(日立) は  256bitのAES
  bitlocker 128か256bit のAES
ちょっと試験からは脱線してしまいましたが、またご相談するかもしれません。
それではあと1ヶ月あまりです、皆さんと実りある学習ができることを祈ります。
2023.09.07 00:25
橙色文書さん(No.13) 
大昔のNHK新電子立国でも公開鍵を用いた暗号方式が解説されていましたし、これからは義務教育レベルの一般常識になる可能性もあります。
合格するだけなら公開鍵の性質を暗記するだけで事足りますが、試験合格が目的ではなく目標であるのなら、受験が終わったあとに本当の基礎から取り組んではいかがでしょうか。

LinuxなどのUNIX系OSであれば、ssh-keygenコマンド1つでキーペアを作成できます。
GUIのユーティリティでも代替できますが、コマンドはリトライが容易で実行オプションも豊富です。
ssh-keygenで作成したキーペアは、サポート外になるまでSSHログインで使用できますからSSH公開鍵認証方式の理解にもつながります。
パスワード認証より優れている点も体感できるはずです。

Webサイトの証明書は最も身近な技術ですが基礎を組み合わせた応用です。
基礎が理解できなければその先の応用も理解できません。
知識止まりではなく理解に到達できるよう答えは自力で見つけましょう。
アオアシというスペシャリスト育成漫画ではカリスマ指導者の「自分でつかんだ答えなら一生忘れない」が至言として強調されています。
2023.09.07 20:44
バリオスさん(No.14) 
橙色文書さん
アドバイスありがとうございます。
合格は目的ではなく目標の一つであることを考えると、
合格後の道のりをイメージできなければいけませんね。
ここは試験対策のサイトなので詳細は割愛しますが、
何のために(WHY)は振り返る時間が大事だと思いました。
2023.09.09 11:15

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2014-2024 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop