PromleeBlog
サイトマップ
このブログについて
メニュー
学習
Security Theory
Digital Sign
デジタル署名の定義
デジタル署名の定義
📅
デジタル署名の概要
メッセージ認証
デジタル署名
検証
デジタル署名の安全性モデル
デジタル署名の概要 (Overview of Digital Signature)
🔗
メッセージ認証 (Message Authentication)
🔗
BobがAliceへメッセージを送るとき、Aliceは、そのメッセージが本当にBobから来たものかを確認する必要があります。
→
\rightarrow
→
デジタル署名
を使います。
Bobは、自分の秘密鍵で署名を生成します。
Aliceは、Bobの公開鍵で署名を検証します。
Bobの秘密鍵がなければ、誰もBobの署名を生成できません。
送信元(Bob)とデータの完全性(メッセージ)の両面で認証します。
デジタル署名 (Digital Signature)
🔗
デジタル署名方式は、次の三つの多項式時間アルゴリズムで構成されます。
KeyGen
(
λ
\lambda
λ
)
→
\rightarrow
→
(pk, sk):鍵生成アルゴリズムです。
セキュリティパラメーター
λ
\lambda
λ
を入力し、公開鍵(pk)と秘密鍵(sk)を生成します。
Sign
(sk, m)
→
\rightarrow
→
σ
\sigma
σ
:署名アルゴリズムです。
秘密鍵(sk)とメッセージ(m)を入力し、デジタル署名(
σ
\sigma
σ
)を生成します。
Verify
(pk, m,
σ
\sigma
σ
)
→
\rightarrow
→
{0, 1}:検証アルゴリズムです。
公開鍵(pk)、メッセージ(m)、デジタル署名(
σ
\sigma
σ
)を入力し、署名が有効かを検証します。
有効であれば1、そうでなければ0を返します。
検証 (Verification)
🔗
正当性
:検証アルゴリズムは、次の条件を満たさなければなりません。
すべてのセキュリティパラメーター
λ
\lambda
λ
と、すべてのメッセージ
m
m
m
について、
Verify
(
p
k
,
Sign
(
s
k
,
M
)
)
=
1
\text{Verify}(pk, \text{Sign}(sk, M)) = 1
Verify
(
p
k
,
Sign
(
s
k
,
M
))
=
1
が成立する必要があります。
ここで、
(
p
k
,
s
k
)
←
KeyGen
(
λ
)
(pk, sk) \leftarrow \text{KeyGen}(\lambda)
(
p
k
,
s
k
)
←
KeyGen
(
λ
)
です。
まとめ:デジタル署名
🔗
デジタル署名は、メッセージ認証とデータの完全性を提供します。
デジタル署名は、
KeyGen
、
Sign
、
Verify
という三つの多項式時間アルゴリズムで構成されます。
デジタル署名は、正当性(
Verify
(
p
k
,
Sign
(
s
k
,
M
)
)
=
1
\text{Verify}(pk, \text{Sign}(sk, M)) = 1
Verify
(
p
k
,
Sign
(
s
k
,
M
))
=
1
)を満たす必要があります。
デジタル署名の安全性モデル (Security Model of Digital Signature)
🔗
チャレンジャー
C
C
C
と攻撃者
A
A
A
の間のゲームを考えます。
Setup:
C
C
C
がKeyGen(
λ
\lambda
λ
)を実行して
(
p
k
,
s
k
)
(pk, sk)
(
p
k
,
s
k
)
を生成し、公開鍵
p
k
pk
p
k
を
A
A
A
へ渡します。
Signing Queries:
A
A
A
は、メッセージ
M
i
M_i
M
i
について、多項式回の署名クエリを要求します。
各
M
i
M_i
M
i
について、
C
C
C
は
Sign
(
s
k
,
M
i
)
→
σ
i
\text{Sign}(sk, M_i) → \sigma_i
Sign
(
s
k
,
M
i
)
→
σ
i
を実行して署名
σ
i
\sigma_i
σ
i
を生成し、
A
A
A
へ返します。
Output:
A
A
A
が
(
M
,
σ
)
(M, \sigma)
(
M
,
σ
)
を返します。
M
M
M
は
C
C
C
が署名していないメッセージであり、
A
A
A
が署名を要求したメッセージとは異なります。
A
A
A
が
M
M
M
に対する有効な署名
σ
\sigma
σ
を生成できた場合、
A
A
A
の成功です。
A
A
A
の成功確率は、次のように定義します。
Pr
[
Verify
(
p
k
,
Sign
(
M
,
σ
)
)
=
1
]
\Pr[\text{Verify}(pk, \text{Sign}(M, \sigma)) = 1]
Pr
[
Verify
(
p
k
,
Sign
(
M
,
σ
))
=
1
]
この署名方式は、適応的選択メッセージ攻撃(Adaptive Chosen Message Attack)に対して、強い偽造不可能性を持ちます。
多項式時間の攻撃者
A
A
A
が上のゲームに成功する確率が無視できるほど小さければ、その署名方式は強く
偽造不可能
です。
デジタル署名の定義 | PromleeBlog