SlideShare a Scribd company logo
1 of 10
Download to read offline
慶應義塾大学 環境情報学部
あかこう (@_akakou)
犬でもわかる
公開鍵暗号
盗聴のリスク
インターネットでは複数のコンピュータを中継して通信をする
➔ 通信が途中で盗聴される可能性がある
2
途中で盗聴可能
暗号
特定の人物に平文(秘密)を共有したい
➔ 見ても特別な知識なしでは、読めないように変換する
3
平文
暗号文
イブは暗号文を盗聴できる
➔ 暗号文を解読できないため、
平文を盗聴できない
アリス(送信者) ボブ(受信者)
イブ(盗聴者)
共通鍵暗号方式
暗号化と復号で同じ鍵を利用する暗号方式
送信者と受信者が事前に共通鍵(秘密鍵)を共有する必要がある
4
アリス(送信者) ボブ(受信者)
①暗号化 ③復号②送信
平文
暗号文
共通鍵暗号方式の例
シーザー暗号:平文をアルファベット順に共通鍵分ずらす暗号方式
5
ABC DEF
平文 暗号文
暗号化
(s=3)
復号
(s=3)
AES:現在標準的に利用されている共通鍵暗号方式
   名前は Advanced Encryption Standardの略
暗号化と復号に使う鍵sは、
どちらも3である。
共通鍵暗号方式の問題
● 相手ごとに鍵を作成する必要がある
○ n人が相互に暗号通信するのに
必要な共通鍵数は n(n-1)/2
● 漏洩せずに共通鍵を配送することは難しい
6
公開鍵暗号方式
公開鍵という漏洩しても構わない鍵を利用する暗号方式
パターン1:秘密の共有された値を作る方式
● Diffie-Hellman 鍵共有
パターン2:公開鍵で暗号化し、秘密鍵で復号する方式
● RSA 暗号方式
● ElGamal 暗号方式
7
パターン1:秘密の共有された値を作る方式
公開鍵と秘密鍵を用いて、
同じ秘密を作成(共有)する
➔ この秘密を共通鍵暗号方式
の共通鍵として利用する
8
アリス(送信者) ボブ(受信者)
①鍵ペア※の生成 ①鍵ペアの生成
②公開鍵の交換
③秘密の
生成
③秘密の
生成
※鍵ペア:公開鍵と秘密鍵のペア
公開鍵
秘密鍵
生成された秘密
1. 受信者側が鍵ペアを作り、公開鍵を公開する
2. 送信者は公開鍵で暗号化し、受信者はそれを秘密鍵で復号する
9
パターン2:公開鍵で暗号化し、秘密鍵で復号する方式
アリス(送信者) ボブ(受信者)
①鍵ペアの生成
②公開鍵の送信
④暗号文の送信
③暗号化 ⑤復号
公開鍵
秘密鍵
平文
暗号文
公開鍵暗号の利点
● 秘密鍵の数はユーザ数の数で良い
○ n人が相互に暗号通信するのに
必要な秘密鍵数は n
● 配送する公開鍵は、漏洩しても問題がない
10

More Related Content

What's hot

katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptotrmr
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)Shota Shinogi
 
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...whywaita
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようAtsushi Odagiri
 
ChatGPTの驚くべき対話能力 20230414APR.pdf
ChatGPTの驚くべき対話能力 20230414APR.pdfChatGPTの驚くべき対話能力 20230414APR.pdf
ChatGPTの驚くべき対話能力 20230414APR.pdfYamashitaKatsushi
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mclMITSUNARI Shigeo
 
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-zaki4649
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)NTT DATA Technology & Innovation
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 

What's hot (20)

katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
 
ChatGPTの驚くべき対話能力 20230414APR.pdf
ChatGPTの驚くべき対話能力 20230414APR.pdfChatGPTの驚くべき対話能力 20230414APR.pdf
ChatGPTの驚くべき対話能力 20230414APR.pdf
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 

犬でもわかる公開鍵暗号