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
Seiya
July 18, 2021
Technology
180
0
Share
暗号について
大学サークルのイントロ用資料です
暗号とハッシュについての説明資料です
Seiya
July 18, 2021
More Decks by Seiya
See All by Seiya
ATProtocol ざっくり概要把握してみた @ DWeb Tokyo Meetup #2
silmin_
0
36
おうちGitLabのススメ
silmin_
3
1.7k
Git入門
silmin_
32
21k
LinuxCommand入門
silmin_
0
390
LinuxCommand入門2
silmin_
0
280
Webについて
silmin_
3
200
ネットワークとは
silmin_
0
250
コンピュータとは|初心者向け資料
silmin_
1
200
ビットについて|入門者向け資料
silmin_
0
220
Other Decks in Technology
See All in Technology
OpenClawでPM業務を自動化
knishioka
2
360
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
130
タスク管理も1on1も、もう「管理」じゃない - KiroとBedrock AgentCoreで変わった“判断の仕事”
yusukeshimizu
0
150
OCI技術資料 : 証明書サービス概要
ocise
1
7.2k
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
130
互換性のある(らしい)DBへの移行など考えるにあたってたいへんざっくり
sejima
PRO
0
510
第26回FA設備技術勉強会 - Claude/Claude_codeでデータ分析 -
happysamurai294
0
300
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
240
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2k
Databricks Appsで実現する社内向けAIアプリ開発の効率化
r_miura
0
220
Embeddings : Symfony AI en pratique
lyrixx
0
440
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
260
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
98
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
140
Done Done
chrislema
186
16k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
460
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
How to train your dragon (web standard)
notwaldorf
97
6.6k
The SEO Collaboration Effect
kristinabergwall1
0
410
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
120
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
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)
ハッシュの用途 ハッシュは重複しうるが実用上問題ないとされており,実際に使われている (実際には衝突回避や衝突してもいいように実装されている) - 改竄検出 - 平文が少しでも違うとハッシュ値は大きく異なることを利用 - 暗号化 -
適切なハッシュ関数を使えば平文を推測できない - 平文が必要ないデータに適用できる(パスワードなど) - 重複/類似文字列検索 - 文字列を細かく区切ってハッシュ化して,重複部分や類似部分を探す - ハッシュテーブル
まとめ 暗号 実際にやり取りされるものを隠蔽する仕組み 基本的には可逆で,元の平文に戻すことができる ハッシュ 平文の情報を捨てて保存することが可能 情報量を落として効率化したり整合性検査などに使われる