SlideShare a Scribd company logo
1 of 151
Download to read offline
秘密の国のアリス
総集編
KMCID:taisei
自己紹介
 ID : taisei
 京都大学工学部情報学科2回生計算機科学コース
 第39代副会長
 競プロ2016Normal, CTF練習会2016の
プロジェクトリーダーやってました
この講座の内容
 CTF練習会2016で
「暗号技術入門 第3版 秘密の国のアリス 著:結城 浩」
を読んでいました
 プロジェクトでは半分くらい読破しました
 この本に沿って暗号技術に入門します
Contents
 暗号
 共通鍵暗号
 公開鍵暗号
 認証
 一方向ハッシュ
 メッセージ認証コード
 デジタル署名
 応用技術
 乱数
 SSL/TLS
登場人物
 Alice … 一般人
 Bob … 一般人
 Eve … 盗聴者
 Mallory … 能動的攻撃者
はじめに
 独自の暗号アルゴリズムを開発して、それを秘密に
してセキュリティを保つ行為(Security by Obscurity)
は、危険
はじめに
 暗号アルゴリズムを隠しても、歴史的には
すべて暴かれている
 DVD
 NXPの非接触型ICカードMIFARE Classic
 RSA社のRC4
はじめに
 一般に、暗号の強さを測るのは難しい
 暗号のプロが解読できないという事実が暗号の強さを
裏付けている
 公開されていて、暗号のプロによって強さが裏付け
された暗号アルゴリズムを使うのが安全
はじめに
 良い暗号アルゴリズムとは
 理解できない程複雑なアルゴリズム
 解析が難しいアルゴリズム
ではない
 むしろシンプルで解析のし易い方がよい
 暗号の強度が見積りやすい
暗号
 暗号アルゴリズムは繰り返し使いたいが、平文に
暗号アルゴリズムだけでは解読される可能性が高い
 アルゴリズムに変更可能な部分を用意し、
入力ごとに変える
 変更の仕方を鍵という
平文 暗号文
暗号
アルゴリズム
シーザー暗号
 平文のアルファベットをずらして暗号化する
 ずらす文字数が鍵となる
この場合は3文字ずらしている (画像:www.infonet.co.jp/ueyama/ip)
シーザー暗号
 暗号化するときは平文のアルファベットを
n文字だけ先にずらし、暗号文とする
 nを鍵として渡す
 復号化するときは暗号文のアルファベットを
n文字だけ後にずらし、平文とする
シーザー暗号
CaptureTheFlag FdswxuiWkhIodj
 この暗号に対しては、鍵は0~25の26通りしか存在
しないので、全探索で容易に解読される
 ブルート・フォース・アタックと呼ばれる
鍵:3
平文 暗号文
単一換字暗号
 平文のアルファベットを一対一で置換
 換字表が鍵となる
(画像:www.infonet.co.jp/ueyama/ip)
単一換字暗号
 鍵空間(鍵の取りうるパターン)が26! > 4x1026
 全通り列挙するのに120億年以上かかる
 ブルート・フォース・アタックは困難
 頻度分析と呼ばれる解読法で解読できるかもしれない
 二次大戦中のドイツで使われた暗号機械
 プラグボードは自由に繋ぎ変えられる
 ローターは自由に回転させられる
 打鍵ごとにローターは回転する
(画像:https://ja.wikipedia.org/wiki/エニグマ_(暗号機))
 プラグボードの配線とローターの初期の角度が鍵に相当
 国防軍鍵表による日替わり鍵と、通信鍵によって
鍵を設定する
 大戦中Enigma自体は鹵獲されて、敵軍は
暗号アルゴリズムを知っていたが、解読は困難だった
 1940年、アラン・チューリングが暗号解読機
「Bombe」を開発、解読に成功
共通鍵暗号
共通鍵暗号
 対称暗号とも呼ばれる
 暗号化と復号化の鍵が同じ
 DES (もう使えない)
 トリプルDES (DES-EDE3)
 AES
DES (Data Encryption Standard)
 IBMが開発し、1977年に連邦情報処理標準規格に
採用された対称暗号
 現在は計算機の進歩に敗北
DES (Data Encryption Standard)
 鍵長が実質56bitなので、鍵空間が256
しかない
 任意の平文から暗号文を得られるとき、選択平文攻撃
が有効となる
 差分読解法により247
程度の探索で解読できる
 線形解読法により243
程度の探索で解読できる
 ファイステルネットワークを採用
選択平文攻撃 (ChosenPlaintextAttack)
 差分読解法
 平文の変化と暗号文の変化の偏りを調べる
 線形読解法
 平文と暗号文のxorが0になる確率の偏りを調べる
ファイステルネットワーク
 入力を右と左に分割する
 右とサブ鍵をラウンド関数に
入力する
 ラウンド関数の出力と左の
xorを暗号化された左とする
左 右
ラウンド関数
サブ鍵
暗号化された左 右
ファイステルネットワーク
 この操作をラウンドと呼び、
左右を入れ替えて複数回行う
 復号化のときは、サブ鍵を
逆順に使うとよい
左 右
ラウンド関数
サブ鍵1
暗号化された左 暗号化された右
ラウンド関数
サブ鍵2
ラウンド関数
サブ鍵3
ファイステルネットワーク
 この操作をラウンドと呼び、
左右を入れ替えて複数回行う
 復号化のときは、サブ鍵を
逆順に使うとよい
左 右
ラウンド関数
サブ鍵3
暗号化された左 暗号化された右
ラウンド関数
サブ鍵2
ラウンド関数
サブ鍵1
ファイステルネットワーク
 ラウンドはいくらでも増やせる
 暗号化の本質をラウンド関数に集約できる
 ラウンド関数は逆関数がなくても良い
 暗号化と復号化を同じ構造でできる
DES (Data Encryption Standard)
 DESでは...
 ブロック長は64bitなので、右と左は32bit
 ラウンド関数は16段
 鍵は64bitだがうち8bitはパリティビット
 鍵をローテートしてサブ鍵を生成する
 ラウンド関数は、Sボックス(ルックアップテーブル)
トリプルDES (DES-EDE3)
 DESの鍵を3つ用意し、暗号化→復号化→暗号化の順
に行う(Encrypt-Decrypt-Encrypt)
 DESと互換がある
 3つの鍵に同じ鍵を使うとただのDES
 鍵長は56x3 = 168ビット
トリプルDES (DES-EDE3)
 現在でも銀行などで使われている
 処理速度はあまり早くない
 IPAは使用は2030年までにするよう勧告
 中間一致攻撃により2112
程度の探索で
突破できるかもしれない
(補足) 中間一致攻撃
 ダブルDESが使われない理由
 平文を全通りの鍵で暗号化したもの
と、暗号文を全通りの鍵で復号化したものを列挙する
 一致するものがあればそれが鍵
 ダブルDESなら257
の探索で済む
平文 暗号文
AES (Advanced Encryption Standard)
 NIST(アメリカ国立標準技術研究所)が公募で選定
 コンペ方式による標準化
 Rijndael(ラインダール)が最終的に選定され、
AESとなった
AES (Advanced Encryption Standard)
 ブロック長は128bit、鍵長は128/192/256bitから選べる
 アルゴリズムが単純で、軽量
 SPN構造 (Substitution Permutation Network Structure)
 Sボックスの結果をPボックスが並び替える
AES (Advanced Encryption Standard)
 128bitのブロックを1byteずつに分割、4x4の行列
として並べて処理する
 ラウンドは次の4つの処理から構成される
 SubBytes … Sボックスで変換
 ShiftRows … 行をシフト
 MixColumns … 列にビット演算
 AddRoundKey … ラウンド鍵とのxor
AES (Advanced Encryption Standard)
 SubBytes
a0,0
a0,1
a0,2
a0,3
a1,0
a1,1
a1,2
a1,3
a2,0
a2,1
a2,2
a2,3
a3,0
a3,1
a3,2
a3,0
Sボックス b0,0
b0,1
b0,2
b0,3
b1,0
b1,1
b1,2
b1,3
b2,0
b2,1
b2,2
b2,3
b3,0
b3,1
b3,2
b3,0
AES (Advanced Encryption Standard)
 ShiftRows
a0,0
a0,1
a0,2
a0,3
a1,0
a1,1
a1,2
a1,3
a2,0
a2,1
a2,2
a2,3
a3,0
a3,1
a3,2
a3,0
a0,0
a0,1
a0,2
a0,3
a1,1
a1,2
a1,3
a1,0
a2,2
a2,3
a2,0
a2,1
a3,3
a3,0
a3,1
a3,2
b0,0
b0,1
b0,2
b0,3
b1,0
b1,1
b1,2
b1,3
b2,0
b2,1
b2,2
b2,3
b3,0
b3,1
b3,2
b3,0
AES (Advanced Encryption Standard)
 MixColumns
a0,0
a0,1
a0,2
a0,3
a1,0
a1,1
a1,2
a1,3
a2,0
a2,1
a2,2
a2,3
a3,0
a3,1
a3,2
a3,0
行列計算
b0,0
b0,1
b0,2
b0,3
b1,0
b1,1
b1,2
b1,3
b2,0
b2,1
b2,2
b2,3
b3,0
b3,1
b3,2
b3,0
AES (Advanced Encryption Standard)
 AddRoundKey
a0,0
a0,1
a0,2
a0,3
a1,0
a1,1
a1,2
a1,3
a2,0
a2,1
a2,2
a2,3
a3,0
a3,1
a3,2
a3,0
k0,0
k0,1
k0,2
k0,3
k1,0
k1,1
k1,2
k1,3
k2,0
k2,1
k2,2
k2,3
k3,0
k3,1
k3,2
k3,0
AES (Advanced Encryption Standard)
 ラウンドは鍵長に応じて10~14回繰り返す
 少ないラウンド数でも十分ビットが撹拌される
 ファイステル構造とは違い、復号化には各ステップ毎に
逆変換が必要
 今のところ有効な攻撃方法は見つかっていない
ブロック暗号のモード
 DESやAESは平文を固定長のブロックに分けて暗号化
する
 しかし、固定長に区切った平文を暗号化した
ものをそのまま暗号文とするのは推奨されない
 平文と暗号文が一対一になる
 暗号文で一致する区画があると攻撃の対象
ブロック暗号のモード
 主に次のモードがある
 ECBモード (電子符号表モード)
 CBCモード (暗号ブロック連鎖モード)
 CFBモード (暗号フィードバックモード)
 OFBモード (出力フィードバックモード)
 CTRモード (カウンタモード)
ECBモード (Electronic CodeBook)
 平文ブロックを暗号化したものが
そのまま暗号ブロックになる
 暗号ブロックの順番を入れ替えて も
平文は復元される
 暗号文を解読できなくても平文を操作
できる
平文
ブロック
暗号文
ブロック
暗号化
CBCモード (Cipher Block Chaining)
 一つ前の暗号ブロックとxorをとる
平文
ブロック
暗号文
ブロック
暗号化
初期化
ベクトル
平文
ブロック
暗号文
ブロック
暗号化
平文
ブロック
暗号文
ブロック
暗号化
CBCモード (Cipher Block Chaining)
 最初の平文には1つ前の暗号文ブロックが存在しない
ので、初期化ベクトルが必要
 ランダムなビット列を用いる(BEAST Attack等)
 暗号文が破損すると2ブロック影響する
 途中の平文ブロックだけ暗号化はできない
(補足) BEAST Attack
平文
ブロック
暗号文
ブロック
暗号化
前の暗号文
ブロック
初期化
ベクトル
初期化ベクトル ⊕
トライする平文 ⊕
前の暗号ブロック
暗号文
ブロック
暗号化
平文
ブロック
暗号化
 観測できた通信
一致すれば
トライは成功
CBCモード (Cipher Block Chaining)
 平文がブロックサイズの整数倍でないとき、
最後のブロックにはパディングが行われる
 パディングは攻撃の対象になりうる
 パディングオラクル攻撃
 POODLE攻撃
平文 パディング
ブロック
(補足) パディングオラクル攻撃
平文
ブロック
暗号文
ブロック
暗号化
前の暗号文
ブロック
前の暗号文
ブロック
⊕
トライする
平文
⊕
パディング
暗号文
ブロック
複合化
パディング
チェック
※一番最後のブロックに挿入
平文
ブロック
暗号化
 観測できた通信
CFBモード (Cipher FeedBack)
 一つ前の暗号ブロックを暗号化していく
平文
ブロック
暗号文
ブロック
暗号化
初期化
ベクトル
平文
ブロック
暗号文
ブロック
平文
ブロック
暗号文
ブロック
暗号化 暗号化
CFBモード (Cipher FeedBack)
 復号化するときも暗号化を行う
平文
ブロック
暗号文
ブロック
暗号化
初期化
ベクトル
平文
ブロック
暗号文
ブロック
平文
ブロック
暗号文
ブロック
暗号化 暗号化
CFBモード (Cipher FeedBack)
 平文を直接暗号化はしない
 パディングを行う必要がない
 復号化の際も、暗号文ブロックの暗号化を行う
 再生攻撃が可能
OFBモード (Output FeedBack)
 OFBモードも復号化では暗号化を行う
暗号文
ブロック
暗号化
初期化
ベクトル
平文
ブロック
暗号文
ブロック
暗号化
平文
ブロック
暗号化
CTRモード (CounTeR)
 カウンタは、ランダムな値ノンスとブロック番号の結合
暗号文
ブロック1
暗号化
平文
ブロック1
カウンタ1
暗号文
ブロック2
暗号化
平文
ブロック2
カウンタ2
暗号文
ブロック3
暗号化
平文
ブロック3
カウンタ3
ブロック暗号のモード
 ECBモードは使うべきではない
 他のモードは一長一短
 CRYPTREC (電子政府推奨暗号リスト)では
CBC, CFB, OFB, CTRが推奨されている
公開鍵暗号
公開鍵暗号
 非対称暗号とも呼ばれる
 暗号化と復号化の鍵が別
 暗号化の鍵を公開鍵、復号化の鍵をプライベート鍵という
 RSA
 Rivest, Shamir, Adlemanが開発
RSA
Alice Bob
公開鍵 プライベート鍵平文 公開鍵
暗号文 暗号文
平文
AliceからBobへ平文を送ることが可能
公開鍵では暗号化
だけができる
RSA
 N, L, E, Dを求める
 Nは素数p,qを用いてN = p x q
 フェルマーテスト、ミラーラビンテストなどを使う
 LはL = lcm(p-1, q-1)
 Eは1 < E < Lで、Lと互いに素な数
 乱数を使って探索
 Dは1 < D < Lで、E x D mod L = 1な数
 拡張ユークリッドの互除法を使う
RSA
 N, L, E, Dを求める
 N, Eが公開鍵、 N, Dは秘密鍵となる
 暗号文は、 平文 E
mod N で求まる
 平文は、 暗号文 D
mod N で求まる
RSA
 aED
≡ a mod N の軽い証明
(与式) a⇔ ED
≡ a mod p a∧ ED
≡ a mod q である
aED
≡ a mod p を考える
aがpの倍数のときは自明
定義より、ED=m(p-1)+1とおける
よって、 aED
≡ am(p-1)
x a ≡ 1m
x a mod p
(∵フェルマーの小定理)
RSA
 RSAはNのビット数は1024 ~ 4096で選べる
 RSAチャレンジで、2009年にはRSA-768が解読された
 RSA-1024は新規には使えない
 NISTは2048ビットのRSAは2030年までにする方針
他の公開鍵暗号
 ElGamal方式
 mod Nの離散対数を求めることの難しさを利用
 Rabin方式
 mod Nの平方根を求めることの難しさを利用
 楕円曲線暗号(ECC)
中間者攻撃 (MITM攻撃)
Alice Mallory Bob
Bobの
公開鍵
Malloryの
公開鍵
Malloryの鍵の
暗号文
Bobの鍵の
暗号文
解読
改竄
ハイブリッド暗号
 RSAなど、公開鍵暗号は共通鍵暗号に比べて
とても遅い
 共通鍵暗号の鍵はそのまま送ることはできない
 両者のいいとこ取りをする
ハイブリッド暗号
 平文を共通鍵暗号で暗号化する
 共通鍵暗号で使った鍵を公開鍵暗号で暗号化
 共通鍵暗号の鍵をセッション鍵という
 セッション鍵は乱数で与える
 セッション鍵は公開鍵暗号にとっては平文
 公開鍵は予め知っておく必要がある
ハイブリッド暗号
暗号文共通鍵
暗号化
平文
セッション鍵
公開鍵
暗号化
暗号化された
セッション鍵
公開鍵
一方向ハッシュ関数
一方向ハッシュ関数
 任意の入力を固定長のハッシュ値に変換する関数
 メッセージの正真性を検証するのに使われる
 ハッシュ値が衝突するような異なるメッセージの組を
見つけるのが非常に困難である必要がある
(衝突が存在しないハッシュ関数は存在しない)
一方向ハッシュ関数
メッセージA メッセージB
一方向
ハッシュ関数
一方向
ハッシュ関数
ハッシュ値A ハッシュ値B比較
一方向ハッシュ関数
 弱衝突耐性
 そのハッシュ値を持つ別のメッセージを見つけ出す
のが困難
 強衝突耐性
 ハッシュ値が一致するような異なる2つのメッセージを
見つけ出すのが困難
一方向ハッシュ関数
 一方向ハッシュ関数は強衝突耐性をもつ必要 がある
 強衝突耐性がないと、ハッシュ値が一致するように
メッセージを改竄できるかもしれない
一方向ハッシュ関数
 用途
 ソフトウェアの改竄検出
 パスワードを元にした暗号化(PBE)
 デジタル署名
 擬似乱数生成器
一方向ハッシュ関数
 md4
 強衝突耐性が破られている
 md5
 強衝突耐性が破られている
 SHA-1
 強衝突耐性が破られている
 最近Googleが衝突攻撃を成功させた
一方向ハッシュ関数
 SHA-2
 SHA-256, SHA-384, SHA-512はすべてSHA-2
 まだ強衝突耐性は破られていない
 NISTが開発
 SHA-3
 コンペによる標準化で選定
 SHA3-224, SHA3-256, SHA3-384, SHA3-512がある
SHA-3
 コンペによる標準化で選ばれたKECCAKという
アルゴリズムである
 解析しやすい、クリーンな構成をしている
 複数のラウンドを回すことやマトリョーシカ構造より、弱いKECCAKを
容易に実装でき、それを攻撃することで強度が見積もれる
 SHA-2と全く異なる構造をしている
SHA-3 (スポンジ構造)
入力 パディング
入力ブロック
0
0
f f f f
内
部
状
態
f f f
出力ブロック
出力
吸収フェーズ 搾出フェーズ
SHA-3
 KECCAKの内部状態は5x5xzの直方体
 SHA-3ではz = 64で、状態は1600bit
 θ, ρ, π, χ, ιの5つのステップで1ラウンドである
 SHA-3では24ラウンド繰り返す
(画像:http://keccak.noekeon.org/)
SHA-3
θステップ
● 2つの行の各ビットのxorを足す
(画像:http://keccak.noekeon.org/)
SHA-3
ρステップ
 z方向へビットシフトする
(画像:http://keccak.noekeon.org/)
SHA-3
πステップ
 レーンを移動させる
(画像:http://keccak.noekeon.org/)
SHA-3
χステップ
 列に対し右図のような
ビット演算を行う
ιステップ
 ラウンド定数と状態の
xorをとる
(画像:http://keccak.noekeon.org/)
一方向ハッシュ関数
 原像攻撃
 あるハッシュ値をもつメッセージを探索する
 第二原像攻撃
 あるメッセージと同じハッシュ値を持つ別のメッセージ
を探索する
 どちらも弱衝突耐性を破ろうとする攻撃
一方向ハッシュ関数
 誕生日攻撃 (衝突攻撃)
 同じハッシュ値を持つ2つのメッセージを探索する
 強衝突耐性を破ろうとする攻撃
 誕生日のパラドックスに由来
 誕生日攻撃の試行回数はブルート・フォース・アタック
よりずっと少なくて済む
誕生日のパラドックス
 誕生日が同一の2人が50%以上の確率で存在するには、
何人集めればよいでしょうか?
誕生日のパラドックス
 誕生日が同一の2人が50%以上の確率で存在するには、
何人集めればよいでしょうか?
 23人いればよい
 H個の値の集合からn個を無造作に選んだとき、同じ値
が2度以上選ばれる確率が50%以上になるには、
Hが大きいときおよそn √H≒
メッセージ認証コード
メッセージ認証コード (MAC)
 Message Authentication Code 略してMAC
 なりすましや改竄を検出できる
 メッセージと共通鍵から計算されるMAC値を比較して
認証する
 一方向ハッシュ関数、ブロック暗号を使って実現される
メッセージ認証コード (MAC)
Alice Bob
メッセージ
MAC値
メッセージ
認証コード
共通鍵
メッセージ
MAC値
メッセージ
認証コード
共通鍵
MAC値
比較
メッセージ認証コード (MAC)
 共通鍵暗号で暗号化した文章を送るのと違うのか?
メッセージ認証コード (MAC)
 共通鍵暗号で暗号化した文章を送るのと違うのか?
 共通鍵暗号だけでは
 ランダムなビット列を正しい鍵で暗号化したもの
 適当なビット列を誤った鍵で暗号化したもの
の区別ができない
メッセージ認証コード (MAC)
 利用例
 SWIFT (国際銀行間通信協会)
 IPsec
 IPにセキュリティの機能を加えたもの
 SSL/TLS
メッセージ認証コード (MAC)
 GMAC
 認証付き暗号(AEAD)のGCMで使われる
 暗号化と認証を同時に行う仕組み
 HMAC
 MACとしてSHA-1やSHA-2を選べる
HMAC
 HMACは
hash(opadkey + hash(ipadkey + message))
但し、
 ipadkey = key ipad⊕ (ipadは00110110の繰返し)
 opadkey = key opad⊕ (opadは01011100の繰返し)
 keyは鍵に、hashのブロック長まで0でパディング
したもの
メッセージ認証コード (MAC)
 再生攻撃
 盗聴したメッセージとMAC値を送りつける
 次のような対策がある
 シーケンス番号を振る
 タイムスタンプを埋め込む
 使い捨てのランダムな値ノンスを用いる
メッセージ認証コード (MAC)
 メッセージの否認防止ができない
 つまり第三者に対する証明ができない
 MAC値を計算可能なのは、アリスとボブの2人存在する
 アリスが作成したメッセージではなく、ボブ自身が作成
したメッセージかもしれない
デジタル署名
デジタル署名
 改竄、なりすましの検出、否認の防止ができる
 MACでは鍵が共通だったので否認防止が出来なかった
 非対称の鍵を使えば否認防止が出来るのでは?
公開鍵暗号
Alice Bob
公開鍵 プライベート鍵平文 公開鍵
暗号文 暗号文
平文
デジタル署名
Alice Bob
公開鍵 プライベート鍵平文 公開鍵
暗号文 暗号文
平文
平文を暗号化できるのはBobだけ
デジタル署名
 Bobだけが平文の暗号化をできる
 暗号文を署名として扱う
 公開鍵を使えばBobが署名したことを誰でも検証できる
 実際にはメッセージのハッシュに署名を行う
デジタル署名
Alice Bob
メッセージメッセージ
ハッシュ値
署名
公開鍵
プライベート鍵
ハッシュ値
署名
Aliceが署名した
ハッシュ値
比較
デジタル署名
 利用例
 セキュリティ情報のアナウンス
 メッセージが暗号化されないクリア署名がなされる
 ソフトウェアのダウンロード
 署名付きアプレット
 証明書
 SSL/TLS
デジタル署名
 RSA
 ElGamal方式
 DSA (Digital Signature Algorithm)
 ElGamal方式の変種
 楕円曲線DSA (Elliptic Curve Digital Signature Algorithm)
 Rabin方式
デジタル署名
 潜在的偽造
 あるビット列Sを公開鍵で暗号化し、Mとする
 SはMのデジタル署名である
 RSA-PSSはこれに耐性がある
デジタル署名
 中間者攻撃
 デジタル署名では予め公開鍵を入手する
 この公開鍵は本物なのか?
→ 別の信頼できる人に公開鍵を署名してもらう
 デジタル署名された公開鍵を証明書という
 この署名にも公開鍵が必要...
証明書
 公開鍵証明書 (PKC) を 認証局 (CA) が署名
 認証局には誰でもなることができる
 公開鍵を運用するために多くの規格や仕様がある
 総称して公開鍵基盤 (PKI) という
公開鍵基盤 (Public-Key Infrastructure)
Alice Bob
Bobの
公開鍵
信頼できる第三者Trent
認証局リポジトリ
署名
Bobの
公開鍵
Trentの
署名
証明書
ダウンロード 登録
証明書
 利用者のプライベート鍵が盗まれたりした場合
公開鍵を破棄する必要がある
 認証局は証明書破棄リスト (CRL) を作成する
 破棄された証明書の一覧に署名したもの
 CRLは最新のものなのか、しっかり確認する必要がある
証明書
 認証局の署名にも公開鍵が使われる
 認証局の公開鍵の証明書を別の認証局が作成する
 認証局の署名は階層になる
 階層の最上位をルートCAという
 ルートCAはセルフ署名をする
証明書
 似た人間を登録する攻撃
 BobはCAに名前をBobで登録
 MalloryはCAに名前をBOBで登録
 AliceはBOBをBobと誤認してしまうかもしれない
 CAの運用規定を確認する必要がある
証明書
 攻撃者自身がCAになる攻撃
 いわゆるオレオレ認証局
 正しい証明書でも、CAが信用できなければ意味がない
証明書
 CRLの隙を突く攻撃
 BobがAliceにメールを送ってから、CAに公開鍵を
破棄してもらう通知をする
 AliceはメールをBobのものだと思う
 BobはAliceに届いたメールを否認する
 これを完全に防ぐのは無理
擬似乱数生成器
乱数
 鍵の生成、初期化ベクトルなど、予測不可能な値が
必要な場合がしばしばある
 乱数には次の性質がある
 無作為性… 統計的な偏りがない
 予測不可能性 … 過去の数列から次の値が予測できない
 再現不可能性 … 同じ数列を再現できない
乱数
 ソフトウェアだけでは、再現不可能性を満たすことは
できない
 コンピューターの内部状態は有限
 同じ内部状態のコンピューターからは同じ値が生成される
 そのうち数列は繰り返しになる
乱数
 乱数を生成するソフトウェアを擬似乱数生成器 (PRNG)
とよぶ
 擬似乱数生成器には種(seed)が必要
 ハードウェアからの情報を使えば再現不可能性を
満たすことができるかもしれない
 そのようなハードウェアを乱数生成器とよぶ
乱数
 線形合同法
 R0
= (seed) とする
 Rn+1
= (A x Rn
+ C) mod M で乱数を生成する
 うまくA, C, Mを選べば無作為性は満たされる
 過去の数列があればA, C, Mは逆算できる
 予測不可能性を持たないので暗号技術には使えない
乱数
 一方向ハッシュを使う方法
 counter = (seed) で初期化する
 Rn
= hash(counter) で乱数を得て、counterに1を足す
 乱数を予測するにはhashの一方向性を破る必要がある
乱数
 暗号を使う方法
 seedはカウンタ初期化用と鍵用の2つに分ける
 counter = (seed1) で初期化する
 Rn
= encrypt(counter, seed2) で乱数を得て、
counterに1を足す
 乱数を予測するには暗号を解読する必要がある
乱数
 擬似乱数生成器の種は予測されてはいけない
 種には、種を必要としない乱数が必要
 ランダムプールに蓄えている
 Unix系OSは/dev/randomで得られる
暗号技術の活用
SSL/TLS (Secure Socket Layer/Transport Layer security)
 世界で最も利用されている暗号通信の方法(プロトコル)
 httpsで用いられている
 httpsでは、SSL/TLSの上にhttpが乗っている
 http以外にもプロトコルを乗せられる
 例えばメールのプロトコルSMTP, POP3
SSL/TLS (Secure Socket Layer/Transport Layer security)
 SSLはNetScape社(現Mozilla)の作ったプロトコル
 TLSはSSL3.0を元にIETFによって作られたプロトコル
 TLS1.0はSSL3.1に相当する
 SSL3.0まではPOODLE攻撃より使用を推奨されない
SSL/TLS (Secure Socket Layer/Transport Layer security)
 TLSは暗号通信の枠組みを提供する
 使用する暗号技術を選択できる
 実際には暗号スイートから選ばれることが多い
SSL/TLS (Secure Socket Layer/Transport Layer security)
 TLSプロトコルは
 TLSハンドシェイクプロトコル
 TLSレコードプロトコル
からなる
SSL/TLS (Secure Socket Layer/Transport Layer security)
 TLSハンドシェイクプロトコル
 以下のサブプロトコルがある
 ハンドシェイクプロトコル
 暗号仕様変更プロトコル
 警告プロトコル
 アプリケーションデータ
プロトコル TLSレコード
プロトコル
TLSプロトコル
ハ
ン
ド
シ
ェ
イ
ク
プ
ロ
ト
コ
ル
暗
号
仕
様
変
更
プ
ロ
ト
コ
ル
警
告
プ
ロ
ト
コ
ル
ア
プ
リ
ケ
ー
シ
ョ
ン
デ
ー
タ
プ
ロ
ト
コ
ル
TLSハンドシェイクプロトコル
SSL/TLS (Secure Socket Layer/Transport Layer security)
 TLSレコードプロトコル
 TLSハンドシェイクプロトコルのデータを分割、圧縮し、
MACをつけて共通鍵暗号で暗号化する
 初期化ベクトル、共通鍵暗号とMACの鍵は
マスターシークレットから生成する
 暗号文にヘッダをつけて送信データとする
SSL/TLS (Secure Socket Layer/Transport Layer security)
 ハンドシェイクプロトコル
 使用する暗号を合意する
 証明書を交換する
 マスターシークレットを得る
 最初のハンドシェイクでは「暗号化なし」という
暗号化スイートを使っている
SSL/TLS (Secure Socket Layer/Transport Layer security)
 暗号仕様変更プロトコル
 暗号を切り替える合図をする
 警告プロトコル
 エラーを伝える
 アプリケーションデータプロトコル
 httpなどのデータが乗る
SSL/TLS (Secure Socket Layer/Transport Layer security)
 既知の主な脆弱性
 OpenSSLのHeartBleed脆弱性
 POODLE攻撃
 FREAK攻撃
おわりに
おわりに
 暗号技術はセキュリティの一部でしかない
 SSL/TLSは通信経路で第三者から読まれることはない
が、通信前と通信後は分からない
 サービス拒否攻撃をすると暗号技術は無意味
 人間はパスワードを漏らすかもしれない
 人間はマルウェアを動かすかもしれない
(Option) 暗号通貨
暗号通貨
 中本哲史という謎の人物の論文が元
 “Bitcoin: A Peer-to-Peer Electronic Cash System”
 ビットコインは通貨というよりは、P2Pネットワーク上
で動作する決済システム
 ビットコインの最小単位0.00000001 BTCは筆者の名前
にちなんで1 satoshi と名付けられた
暗号通貨
 出来ること
 通貨の送金
 通貨の採掘
暗号通貨の送金
 通貨はビットコイン・アドレス間で取引される
 ビットコイン・アドレスは公開鍵をSHA-256と
RIPEMD-160の2つのハッシュ関数を通したもの
 暗号アルゴリズムは楕円曲線暗号
 使われている楕円曲線はx2
= y3
+ 7
暗号通貨の送金
 送金する人が、「どのアドレスからどのアドレスに
いくら送金するか」を決める
 この取引をトランザクションと呼ぶ
 送金する人はトランザクションにデジタル署名をして
公開鍵とともにP2Pネットワークに送信する
暗号通貨の送金
 P2Pネットワークにはトランザクションが流れてくる
 未検証のトランザクションはトランザクションプールに
蓄えられる
 採掘者がトランザクションプールのトランザクションを
検証、承認する
暗号通貨の送金
採掘者
P2P Network
トランザクション
アドレスA
アドレスB
n BTCを送金
+ 手数料
デジタル署名
ブロード
キャスト
プール
検証
ブロック
Aの公開鍵
暗号通貨の送金
 採掘者はトランザクションプールの中から好きな
トランザクションを検証し、ブロックを作成する
 採掘者は作成したブロックが承認されると
一定の報酬と手数料を得ることができる
 手数料が多いほうが検証されやすい
 少ないとトランザクションが成立するのに時間がかかる
暗号通貨の採掘
 ビットコインの取引は全てブロックチェーンという
公開取引簿に記録されている
 ブロックチェーンを参照することで任意のアドレスの
残高が求まる
 ブロックチェーンはブロックが連鎖したものである
暗号通貨の採掘
 ブロックチェーンに新たなブロックを繋ぐ競争
 直前のブロックのハッシュ値
 検証したトランザクション全体のハッシュ値
 あるノンス
からなるヘッダでハッシュ値を計算すると、上位
ビットに0が一定個数並ぶようなノンスを探索する
(
暗号通貨の採掘
ブロック
前のブロックの
ヘッダのハッシュ値
トランザクション集合
のハッシュ値
ノンス
ヘッダ
トランザクション
トランザクション
集合
トランザクション
トランザクション
︙
暗号通貨の採掘
ブロック
ヘッダ
トランザクション
集合
ブロック
ヘッダ
トランザクション
集合
ブロック
ヘッダ
トランザクション
集合
ブロックチェーン
暗号通貨の採掘
 ビットコインではハッシュ関数にSHA-256を2重にし
て使用する
 平均で10分に1つのブロックが追加されるように、0
の並ばないといけない数(difficulty)を調整する
 2016ブロック毎に、平均10分を超えているかで判断
暗号通貨の採掘
 このようなハッシュ値の計算は、ビットコインの偽造
を防ぐために行われる
 Proof of Work; PoWとよぶ
 過去のトランザクションを改竄するには、その
ブロックから全てのハッシュ値を計算し直す必要が
あるが、追いつくのは厳しい
暗号通貨の採掘
 ある採掘者がノンスを見つけてブロックを作成
 追加されるブロックがP2Pネットワークに
ブロードキャストされる
 他の採掘者はそのブロックが正しいか検証、承認する
暗号通貨の採掘
 ノンスが同時に見つけられることもある
 両方のブロックがブロードキャストされ、P2Pネット
ワーク上では両方保持される
 最終的に、長く繋がったブロックチェーンが
承認される
暗号通貨の採掘
 ブロックを生成、承認しているのは採掘者
 採掘者の過半数が善良な採掘者であることが前提
 採掘者の過半数の計算資源を掌握できれば
 少数派のブロックを拒否できる
 不正なトランザクションを含んだブロックを
承認させられる
などの攻撃が可能 (51%攻撃)
暗号通貨まとめ
 暗号通貨は
 デジタル署名による取引の正当性の証明
 ハッシュ関数の一方向性を利用したPoWによる
偽造、改竄の防止
といった、暗号技術に裏付けられたシステムである
おしまい

More Related Content

What's hot

GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなしMITSUNARI Shigeo
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]DeNA
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)Shota Shinogi
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話mariydi1
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Hyperleger Tokyo Meetup
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
Optimistic Rollupとは何か
Optimistic Rollupとは何かOptimistic Rollupとは何か
Optimistic Rollupとは何かSyuhei Hiya
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)Kentaro Minami
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料SECCON Beginners
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 

What's hot (20)

GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなし
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
Optimistic Rollupとは何か
Optimistic Rollupとは何かOptimistic Rollupとは何か
Optimistic Rollupとは何か
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 

Viewers also liked

FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったCHY72
 
数値解析と物理学
数値解析と物理学数値解析と物理学
数値解析と物理学すずしめ
 
タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]. きぷ
 
フォントの選び方・使い方
フォントの選び方・使い方フォントの選び方・使い方
フォントの選び方・使い方k maztani
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
ひまわり本7章
ひまわり本7章ひまわり本7章
ひまわり本7章CHY72
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回kyoto university
 
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016kyoto university
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringYahoo!デベロッパーネットワーク
 

Viewers also liked (20)

Altseed
AltseedAltseed
Altseed
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
 
数値解析と物理学
数値解析と物理学数値解析と物理学
数値解析と物理学
 
タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]
 
フォントの選び方・使い方
フォントの選び方・使い方フォントの選び方・使い方
フォントの選び方・使い方
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
 
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
 
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
 
ひまわり本7章
ひまわり本7章ひまわり本7章
ひまわり本7章
 
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回
 
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
 
Pietのエディタを作った話
Pietのエディタを作った話Pietのエディタを作った話
Pietのエディタを作った話
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 

Similar to 暗号技術入門 秘密の国のアリス 総集編

20120922 勉強会スライド
20120922 勉強会スライド20120922 勉強会スライド
20120922 勉強会スライドYasuhiro Kinoshita
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコルMITSUNARI Shigeo
 
公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号Joe Suzuki
 
暗号化の歴史と技術  〜古代の暗号から次世代の暗号技術について〜
暗号化の歴史と技術          〜古代の暗号から次世代の暗号技術について〜暗号化の歴史と技術          〜古代の暗号から次世代の暗号技術について〜
暗号化の歴史と技術  〜古代の暗号から次世代の暗号技術について〜ssuser4a1300
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃trmr
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化suno88
 
公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号Joe Suzuki
 
One time verifiably encrypted signatures a.k.a. adaptor signatures
One time verifiably encrypted signatures a.k.a. adaptor signaturesOne time verifiably encrypted signatures a.k.a. adaptor signatures
One time verifiably encrypted signatures a.k.a. adaptor signaturesIchiro Kuwahara
 

Similar to 暗号技術入門 秘密の国のアリス 総集編 (8)

20120922 勉強会スライド
20120922 勉強会スライド20120922 勉強会スライド
20120922 勉強会スライド
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号公開鍵暗号(1): RSA暗号
公開鍵暗号(1): RSA暗号
 
暗号化の歴史と技術  〜古代の暗号から次世代の暗号技術について〜
暗号化の歴史と技術          〜古代の暗号から次世代の暗号技術について〜暗号化の歴史と技術          〜古代の暗号から次世代の暗号技術について〜
暗号化の歴史と技術  〜古代の暗号から次世代の暗号技術について〜
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
 
公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号
 
One time verifiably encrypted signatures a.k.a. adaptor signatures
One time verifiably encrypted signatures a.k.a. adaptor signaturesOne time verifiably encrypted signatures a.k.a. adaptor signatures
One time verifiably encrypted signatures a.k.a. adaptor signatures
 

More from 京大 マイコンクラブ

かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話京大 マイコンクラブ
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換京大 マイコンクラブ
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会京大 マイコンクラブ
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」京大 マイコンクラブ
 
Google Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込むGoogle Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込む京大 マイコンクラブ
 

More from 京大 マイコンクラブ (20)

テキストファイルを読む💪 第1回
テキストファイルを読む💪  第1回テキストファイルを読む💪  第1回
テキストファイルを読む💪 第1回
 
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
 
Common Lisp入門
Common Lisp入門Common Lisp入門
Common Lisp入門
 
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
Geometry with Unity
Geometry with UnityGeometry with Unity
Geometry with Unity
 
セミコロンレスc++
セミコロンレスc++セミコロンレスc++
セミコロンレスc++
 
エンジニアと健康
エンジニアと健康エンジニアと健康
エンジニアと健康
 
女の子になれなかった人のために
女の子になれなかった人のために女の子になれなかった人のために
女の子になれなかった人のために
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったらもし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
 
文字コード基礎論A
文字コード基礎論A文字コード基礎論A
文字コード基礎論A
 
Ultra piet
Ultra pietUltra piet
Ultra piet
 
Google Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込むGoogle Photosにネットで拾ったイラストを溜め込む
Google Photosにネットで拾ったイラストを溜め込む
 
CUI3D
CUI3DCUI3D
CUI3D
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Recently uploaded (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

暗号技術入門 秘密の国のアリス 総集編