Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
暗号について
Search
mina
July 18, 2021
Technology
0
120
暗号について
大学サークルのイントロ用資料です
暗号とハッシュについての説明資料です
mina
July 18, 2021
Tweet
Share
More Decks by mina
See All by mina
おうちGitLabのススメ
silmin_
3
1k
Git入門
silmin_
23
14k
LinuxCommand入門
silmin_
0
300
LinuxCommand入門2
silmin_
0
210
Webについて
silmin_
3
140
ネットワークとは
silmin_
0
180
コンピュータとは|初心者向け資料
silmin_
1
120
ビットについて|入門者向け資料
silmin_
0
160
GitLab-CIとGoogleCloudRunで作るSandBox環境
silmin_
2
230
Other Decks in Technology
See All in Technology
MCP Documentation Server @AI Coding Meetup #1
yyoshiki41
1
1.2k
AIエージェントの地上戦 〜開発計画と運用実践 / 2025/04/08 Findy W&Bミートアップ #19
smiyawaki0820
17
4.2k
Tokyo dbt Meetup #13 dbtと連携するBI製品&機能ざっくり紹介
sagara
0
240
チームビルディング「脅威モデリング」ワークショップ
koheiyoshikawa
0
180
Tirez profit de Messenger pour améliorer votre architecture
tucksaun
1
180
AIエージェント開発における「攻めの品質改善」と「守りの品質保証」 / 2024.04.09 GPU UNITE 新年会 2025
smiyawaki0820
0
130
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
0
130
30 代子育て SRE が考える SRE ナレッジマネジメントの現在と将来
kworkdev
PRO
0
170
開発現場とセキュリティ担当をつなぐ脅威モデリング
cloudace
0
130
Restarting_SRE_Road_to_SRENext_.pdf
_awache
1
210
「それはhowなんよ〜」のガイドライン #orestudy
77web
9
2.2k
「ラベルにとらわれない」エンジニアでいること/Be an engineer beyond labels
kaonavi
0
220
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
Music & Morning Musume
bryan
46
6.4k
Into the Great Unknown - MozCon
thekraken
36
1.7k
Bash Introduction
62gerente
611
210k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
102
19k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Code Reviewing Like a Champion
maltzj
522
39k
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)
ハッシュの用途 ハッシュは重複しうるが実用上問題ないとされており,実際に使われている (実際には衝突回避や衝突してもいいように実装されている) - 改竄検出 - 平文が少しでも違うとハッシュ値は大きく異なることを利用 - 暗号化 -
適切なハッシュ関数を使えば平文を推測できない - 平文が必要ないデータに適用できる(パスワードなど) - 重複/類似文字列検索 - 文字列を細かく区切ってハッシュ化して,重複部分や類似部分を探す - ハッシュテーブル
まとめ 暗号 実際にやり取りされるものを隠蔽する仕組み 基本的には可逆で,元の平文に戻すことができる ハッシュ 平文の情報を捨てて保存することが可能 情報量を落として効率化したり整合性検査などに使われる