Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RSA暗号から学ぶ公開鍵暗号の仕組み
Search
Yusuke Inai
May 17, 2021
Programming
440
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RSA暗号から学ぶ公開鍵暗号の仕組み
Yusuke Inai
May 17, 2021
More Decks by Yusuke Inai
See All by Yusuke Inai
で、エンジニアになって1年経ったけどどう?
youliangdao
1
400
人よりアウトプットができるようになるためのコツ
youliangdao
0
250
Next.jsから見る Webフロントエンドの歴史
youliangdao
1
1.2k
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
530
個人開発で挫折する人を救いたい
youliangdao
2
3.9k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
4.7k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
280
PumaとUnicornって結局何なん!?
youliangdao
0
1.8k
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
440
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1k
The Rails Doctrine Decade
koic
2
440
SREの越境 / SRE Collaboration
y0hgi
2
290
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
230
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.2k
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
400
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
320
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.3k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.7k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
How to make the Groovebox
asonas
2
2.5k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
So, you think you're a good person
axbom
PRO
2
2.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
560
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Transcript
RSA暗号から学ぶ 公開鍵暗号の仕 組み 〜大切なことは全部、公開鍵警察から教わっ た〜
〜とある日〜
ワイ「おっしゃ、公開鍵暗号の仕組みなんとなく理 解でけた!」 ワイ「復習も兼ねてアウトプット代わりにちょっとツイー トでもすっか」
None
〜数分後〜
ワイ「お、こんな自己満ツイートに珍しくリプ来とる。 ありがたいなぁ。どんなリプやろ?」
None
None
None
※※警察からの注意喚起※※ ①「南京錠のイメージ」はやめろ! ②「鍵の意味」をちゃんと理解しろ!
①「南京錠のイメージ」はやめ ろ!
よくある公開鍵暗号のイメー ジ
None
None
None
一般的な「暗号」「鍵」のイメージに引っ張られてしまってい る
これは「機密性の担保」しか 示していない (「鍵」「暗号」が名前についているためそっち に引っ張られてしまう。。)
出典:「総務省 国民のための情報セキュリティサイト」より引用
これらもあくまで「機密性の担保」のイメージ!
残りのイメージを反映 できていない!!
公開鍵暗号の正しい認識 ①機密性を担保(盗聴防止) ②完全性を担保(改竄防止) ③真正性を担保(なりすまし防止) →正確には上記3つくらいの役割を担うことが可能
None
②「鍵の意味」をちゃんと理解 しろ!
公開鍵暗号
公開鍵暗号の歴史 ①1960年以前 共通鍵暗号が普及する中で「鍵配送問題」が出現 ②1960年代 イギリスの政府通信本部の暗号学者ジェームズ・エリスが鍵配送問 題の解決案を提示。 →公開鍵暗号の元アイデア ③1973年 エリスの後輩コックス、具体的案として「一方向関数の使用」を思い つく
④1976年 米国のホイットフィールド・ディフィーとマーティン・ヘルマンが、実用 的な一方向関数を見つけて、公開鍵暗号の具体的な理論を構築。 (=DH法) ⑤1977年 リベスト、シャミア、エーデルマンの3人が、素因数分解の困難性を元 に2種類の機能を実現する公開鍵暗号の方式を発表。 (=RSA暗号)。今でも ( 主に署名の方が ) 広く使われている
①鍵配送問題の出現
具体的問題点 鍵を受け渡したいなら、鍵に鍵をかけて送ればいいと思うが… •メッセージに鍵をかける ◦メッセージを守る鍵を安全に受け渡す必要がある •鍵に鍵をかける ◦鍵を守る鍵を安全に受け渡す必要がある ...…
None
②鍵配送問題の解決案=公開鍵暗号の元アイデ ア
「保護の仕組みは公開してはいけないもの」という発想から、「保護 を "解除する" 仕組みは公開してはいけないもの」という発想に転 換させることで、鍵配送問題を見事にクリア。
出典:「対称性 - Wikipedia」より引用
③−1 エリスのアイデア実現に必要なもの
③−2 一方向関数 相互に変換可能な関数であり、かつある方向への変換は簡単な のに、逆方向の変換は大変な関数 →具体例として、 ハッシュ関数・素因数分解・離散対数問題 etc……が存在
None
④公開鍵暗号の具体的理論の実装 具体的暗号方式 使用している一方向関数 DH法 離散対数問題 RSA暗号 素因数分解
RSA暗号
RSA暗号とは? 「『桁数が大きい合成数の素因数分解問題』が困 難であること」 を安全性の根拠とした公開鍵暗号の一つである。
素因数分解の困難性 【例題①】 (1) 125×227を計算しなさい。 (2) 221を素因数分解しなさい。 (3) 25651を素因数分解しなさい。
RSA暗号の仕組み 【例題②】 という2つの素数を用いて、X=8という情 報をRSA暗号化しなさい
フェルマーの小定理 を相異なる素数とすると、 が成り立つ。Xは任意の自然数。 (※ただし厳密には、少し条件が異なる)
p=3、q=2の場合(Xは任意の数をイメージ) 全ての数は0から5に集約 元の値 0 1 2 3 4 5 6で割った時の余り
6 12 18 … 7 13 19 … 8 14 20 … 9 15 21 … 10 16 22 … 11 17 23 … 元の値を各列の乗数した値を 6で割った余り 1 2 3 4 5 6 7 … 0 0 0 0 0 0 0 … 1 1 1 1 1 1 1 … 2 4 2 4 2 4 2 … 3 3 3 3 3 3 3 … 4 4 4 4 4 4 4 … 5 1 5 1 5 1 5 …
例題の解法の流れ Step1 2つの素数p,qを用意する Step2 受信側が を満たす整数P,Qを見つけ、Pを公 開鍵、Qを秘密鍵と決める Step3 送信側が
を送り、受信側が と複合して完了
Step1:2つの素数p,qを用意する 本問では予め と用意されているので、これを利用する。 (※ただし実際には、もっと大きな数の素数を準備する必要がある。 100桁以上が目安)
Step2:公開鍵と秘密鍵の設定 p=3、q=11であるので となる。 つまり、PQ=21を満たすような鍵のペアを決める。 今回は例として 公開鍵P→3、秘密鍵Q→7 とする
Step3:暗号化して情報を送信 送りたい情報がX=8、公開鍵がP=3なので と計算する。 次に、もう一つ公開されている情報のpq=33を用いて、合同式 を計算する。
つまり、X=8 という情報が X’=17 に暗号化された
Step3:復号化して情報を受け取る 受け取った情報 X’=17を復号する ここでは17を、最初に設定した秘密鍵Q(=7)乗してみると 最後に、pq=33 を法として計算すると となる
つまり、元の情報 X=8 が復号でき た
まとめ
補足(時間的に余裕があれば …)
RSA暗号の安全性 RSA暗号は前方秘匿性の問題が存在 =現実的時間で秘密鍵の解読が可能な場合がある。 (さっきの例だとpq=33の素因数分解が簡単にできる? …というイメージ) →そのため現在では ハイブリット暗号(共通鍵+公開鍵) が使用されている (また、ハイブリット暗号で用いられるものとしては DH法が多い)