PromleeBlog
サイトマップ
このブログについて
メニュー
学習
Security Theory
Public Enc
公開鍵暗号の概要
公開鍵暗号の概要
📅
公開鍵暗号とは?
公開鍵暗号の定義
公開鍵暗号の安全性モデル
公開鍵暗号とは? (What is Public Key Cryptography?)
🔗
暗号化に使う鍵と、復号に使う鍵が異なる方式です。
RSA、ElGamal、NTRUなどがあります。
長所:鍵を共有しやすく、必要な鍵の数が少なくなります。
短所:共通鍵暗号より低速です。
公開鍵暗号の定義 (Definition of Public Key Cryptography)
🔗
定義:公開鍵暗号PKEは、次のアルゴリズムで構成されます。
KeyGen(λ):セキュリティパラメーターλを入力し、(pk, sk)を出力します。
Enc(pk, M):公開鍵pkと平文Mを入力し、暗号文Cを出力します。
Dec(sk, C):秘密鍵skと暗号文Cを入力し、平文Mを出力します。
正当性
セキュリティパラメーターλとすべての平文Mについて、次が成立するとき、公開鍵暗号PKEは正しいといいます。
👨💻
D
e
c
(
s
k
,
E
n
c
(
p
k
,
M
)
)
=
M
Dec(sk, Enc(pk, M)) = M
Dec
(
s
k
,
E
n
c
(
p
k
,
M
))
=
M
ここで、(pk, sk)はKeyGen(λ)の出力です。
公開鍵暗号の安全性モデル (Security Model for Public Key Cryptography)
🔗
チャレンジャーCと攻撃者Aの間のゲームを考えます。
Aの目標は公開鍵暗号を破ること、つまり暗号文から平文Mを見つけることです。
Setup:チャレンジャーCは、セキュリティパラメーターλを入力し、(pk, sk)を出力します。
そのうち公開鍵pkをAへ渡します。
Phase1:AはCへ復号クエリを送ります。
つまり、Aは任意の暗号文
C
i
C_i
C
i
をCへ送り、Cは
D
e
c
(
s
k
,
C
i
)
=
M
i
Dec(sk, C_i) = M_i
Dec
(
s
k
,
C
i
)
=
M
i
を返します。
Challenge:Aは二つの平文
M
0
,
M
1
M_0, M_1
M
0
,
M
1
を選び、Cはその一方を選択して(
b
∈
{
1
,
2
}
b \in \{1, 2\}
b
∈
{
1
,
2
}
)、
E
n
c
(
p
k
,
M
b
)
=
C
b
Enc(pk, M_b) = C_b
E
n
c
(
p
k
,
M
b
)
=
C
b
を返します。
Aは、どちらの平文に対応する暗号文かを表す
b
b
b
を推測します。
Phase2:AはCへ復号クエリを送ります。
つまり、Aは任意の暗号文
C
i
C_i
C
i
をCへ送り、Cは
D
e
c
(
s
k
,
C
i
)
=
M
i
Dec(sk, C_i) = M_i
Dec
(
s
k
,
C
i
)
=
M
i
を返します。
Aが
b
b
b
を推測し、その推測が正しいかを確認します。
A
d
v
P
K
E
(
λ
)
=
P
r
[
b
=
b
′
]
−
1
2
Adv_{PKE}(\lambda) = Pr[b = b'] - \frac{1}{2}
A
d
v
P
K
E
(
λ
)
=
P
r
[
b
=
b
′
]
−
2
1
👍
攻撃者がセキュリティパラメーターに対して無視できない優位性を得られないとき、その公開鍵暗号方式はIND-XXX安全です。
XXXは、攻撃者に許される復号オラクルによって決まります。
CPA (Ciphertext Only Attack):暗号文のみを利用して平文を見つける攻撃です。
CCA (Chosen Ciphertext Attack):任意の暗号文を復号する攻撃です。
CCA2:暗号文を復号する攻撃と、復号オラクルを利用する攻撃です。
公開鍵暗号の概要 | PromleeBlog