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
暗号について
Search
Seiya
July 18, 2021
Technology
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
暗号について
大学サークルのイントロ用資料です
暗号とハッシュについての説明資料です
Seiya
July 18, 2021
More Decks by Seiya
See All by Seiya
ATProtocol ざっくり概要把握してみた @ DWeb Tokyo Meetup #2
silmin_
0
84
おうちGitLabのススメ
silmin_
4
2k
Git入門
silmin_
38
27k
LinuxCommand入門
silmin_
0
430
LinuxCommand入門2
silmin_
0
310
Webについて
silmin_
3
230
ネットワークとは
silmin_
0
290
コンピュータとは|初心者向け資料
silmin_
1
240
ビットについて|入門者向け資料
silmin_
0
250
Other Decks in Technology
See All in Technology
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
250
Harness Engineering on Rails
joelq
0
770
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
630
Azure Copilot Resiliency Agentをいろいろ試してみる
tomokusaba
0
140
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
The kernel report
ennael
PRO
1
160
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
530
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
280
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
160
KanaAI
shreyas1009
0
130
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
260
Featured
See All Featured
Leo the Paperboy
mayatellez
10
2.3k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
It's Worth the Effort
3n
188
29k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Claude Code のすすめ
schroneko
67
230k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
HDC tutorial
michielstock
2
930
A Soul's Torment
seathinner
8
3.7k
Building AI with AI
inesmontani
PRO
1
1.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
暗号について SecPrj Intro-phase
暗号とは 暗号とは、ある情報を特定の決まった人しか読めないように一定の手順に 基づいて無意味な文字や符号の列に置き換えたもの。情報の伝送や記録、 保存の際、第三者に盗み見られたり改竄されないようにするために作成される。 暗号(cryptograph)とは - IT用語辞典 e-Words https://e-words.jp/w/%E6%9A%97%E5%8F%B7.html
平文と暗号 平文 暗号文 暗号化
平文と暗号 平文 暗号文 暗号化 暗号 アルゴリズム
平文と暗号 平文 暗号文 暗号化 暗号 アルゴリズム 暗号鍵
平文と暗号 平文 暗号文 暗号化 暗号 アルゴリズム 暗号鍵 暗号化アルゴリズムと暗号鍵によって暗号化する
暗号化と復号 暗号文 平文 復号 復号 アルゴリズム 暗号鍵
暗号化と復号 暗号文 平文 復号 復号 アルゴリズム 暗号鍵 正当な手段で平文化することを復号という
平文通信
平文通信 盗聴
暗号通信 暗号鍵
暗号通信 暗号鍵 暗号化
暗号通信 暗号鍵 暗号化 復号
暗号通信 暗号化 復号 盗聴
鍵交換問題 それぞれのマシンで暗号化/復号するなら,鍵を共有しておく必要がある でも鍵を共有するタイミングで鍵ごと盗聴されたら終わり 暗号化と復号に同一の鍵を使う以上,鍵交換問題からは避けられない 暗号化と復号に同一の鍵を使わなければいいのでは?
暗号鍵と復号鍵を分離する 1ユーザごとに鍵を2つもつ 自分に送ってもらう際に,自分の暗号鍵を使って暗号化してもらう それを自分が持ってる復号鍵で復号する 暗号鍵 復号鍵 公開する 公開しない Data
暗号鍵と復号鍵を分離する 1ユーザごとに鍵を2つもつ 自分に送ってもらう際に,自分の暗号鍵を使って暗号化してもらう それを自分が持ってる復号鍵で復号する 暗号鍵 復号鍵 公開する 公開しない Data
暗号鍵と復号鍵を分離する 1ユーザごとに鍵を2つもつ 自分に送ってもらう際に,自分の暗号鍵を使って暗号化してもらう それを自分が持ってる復号鍵で復号する 暗号鍵 復号鍵 公開する 公開しない Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 公開鍵 公開鍵 秘密鍵 秘密鍵 A B
AからBへの送信を想定 Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 暗号鍵A
暗号鍵B A B Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 暗号鍵A
暗号鍵B A B Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B Data 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A 2.暗号化したデータを送信 Data Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A 2.暗号化したデータを送信 Data Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A 2.暗号化したデータを送信 Data 3.受け取ったデータをBの秘密鍵で復号 Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A 2.暗号化したデータを送信 3.受け取ったデータをBの秘密鍵で復号 Data Data
暗号鍵A 復号鍵A 暗号鍵B 復号鍵B 0.事前に公開鍵を交換 公開鍵 公開鍵 秘密鍵 秘密鍵 A
B 暗号鍵B 1.送るデータをBの公開鍵で暗号化 暗号鍵A 2.暗号化したデータを送信 3.受け取ったデータをBの秘密鍵で復号 Data Data 無事,B側でデータをみることができた どこで盗聴されても元の平文が漏れる心配はない 公開鍵暗号方式と呼ばれる方式
暗号アルゴリズムについて - Caesar暗号(シーザー暗号/カエサル暗号)(換字式暗号) - アルファベットを任意の数ずらして暗号化する - Caesar暗号は単換字式暗号 - AES暗号 -
128/192/256bitの鍵をもつブロック暗号アルゴリズム - RSA暗号 - 大きな2つの素数の素因数分解が困難なことを利用した暗号アルゴリズム - ECC(楕円曲線暗号) - 離散対数問題と素因数分解などの数学において難解な問題を利用した暗号アルゴリズム - など
Caesar暗号 平文文字列をアルファベット順に任意の数ずらして暗号化する o r a n g e r u
d p j h orange rudpjh +3 p q s t b c l o f g h i
Caesar暗号 平文文字列をアルファベット順に任意の数ずらして暗号化する o r a n g e r u
d p j h orange rudpjh +3 復号するにはCaesar暗号を使っているという事実と, いくつずらすかを特定する必要がある この暗号で13文字ずらすものをROT13という(Rotate by 13)
ハッシュ値(Hash value) ハッシュ値とは、元になるデータから一定の計算手順により求められた固定長 の値。その性質から暗号や認証、データ構造などに応用されている。 ハッシュ値を求めるための計算手順のことをハッシュ関数、要約関数、 メッセージダイジェスト関数などという。 ハッシュ値(ダイジェスト値)とは - IT用語辞典 e-Words
https://e-words.jp/w/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E5%80%A4.html 元になるデータから計算される固定長の値 同じデータからは全く同じハッシュ値が求められる ハッシュ化も広義では暗号化(基本は違う気がする)
ハッシュ関数(SHA256)にかけてみる
平文が少しでも違うと,ハッシュ値は全然違うものになる ハッシュ関数(SHA256)にかけてみる
平文が少しでも違うと,ハッシュ値は全然違うものになる ハッシュ関数(SHA256)にかけてみる -n オプションをつけると改行を末尾に入れない
SHA256の場合,平文の文字数に関係なく65文字の[a-z0-9]に写っている ハッシュ関数(SHA256)にかけてみる
つまりハッシュ値の方が表現の幅が狭い 平文空間 (ほぼ無限) ハッシュ空間 (SHA256) (36^65)
ハッシュの用途 ハッシュは重複しうるが実用上問題ないとされており,実際に使われている (実際には衝突回避や衝突してもいいように実装されている) - 改竄検出 - 平文が少しでも違うとハッシュ値は大きく異なることを利用 - 暗号化 -
適切なハッシュ関数を使えば平文を推測できない - 平文が必要ないデータに適用できる(パスワードなど) - 重複/類似文字列検索 - 文字列を細かく区切ってハッシュ化して,重複部分や類似部分を探す - ハッシュテーブル
まとめ 暗号 実際にやり取りされるものを隠蔽する仕組み 基本的には可逆で,元の平文に戻すことができる ハッシュ 平文の情報を捨てて保存することが可能 情報量を落として効率化したり整合性検査などに使われる