基本は共通鍵暗号ですね.
共通鍵暗号を主に研究する人も公開鍵暗号を主に研究する人も,共通鍵暗号と公開鍵暗号のどちらもしっかり学んでおく必要はあります.
共通鍵暗号の人が何を言っているかと思いますが,暗号理論を学ぶときはまずは公開鍵暗号から学んだほうが早いかと思われます.
公開鍵暗号は数式ばかりで難しいとか, mod ばかりでよくわかりにくいとか言いますが,そんなものは調べれば問題ありません.
Diffie-Hellmanの鍵共有法とかRSA暗号から調べていって,ElGamal暗号とかも学んでいけば暗号の世界は楽しめるかと思います.
それでもわからなかったら,換え字式暗号とか転置式暗号とかからやってもよいでしょう.
調べながら学んでいくのが遠いようで近道でしょう.
公開鍵暗号は数式ばかりで難しいとか, mod ばかりでよくわかりにくいとか言いますが,そんなものは調べれば問題ありません.
Diffie-Hellmanの鍵共有法とかRSA暗号から調べていって,ElGamal暗号とかも学んでいけば暗号の世界は楽しめるかと思います.
それでもわからなかったら,換え字式暗号とか転置式暗号とかからやってもよいでしょう.
調べながら学んでいくのが遠いようで近道でしょう.
IACR公式からです.
こちらがCRYPTO 2012で発表されたときのです.
関数型暗号を正規言語に対して定義しています.
状態機械をパラメータとして復号鍵を生成するという概念です.
論文はePrint 2012/384からダウンロードできます.
こちらは,CRYPTO 2013で発表された時のものです.
関数型暗号の新たな見方と安全性証明のモデルについてです.
論文はePrint 2012/468からダウンロードできます.
こちらがCRYPTO 2012で発表されたときのです.
関数型暗号を正規言語に対して定義しています.
状態機械をパラメータとして復号鍵を生成するという概念です.
論文はePrint 2012/384からダウンロードできます.
こちらは,CRYPTO 2013で発表された時のものです.
関数型暗号の新たな見方と安全性証明のモデルについてです.
論文はePrint 2012/468からダウンロードできます.
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp
![]()
ブログランキングのクリックもお願いします!
関数型暗号に引き続き,式で説明してみましょう.
関数型暗号に限らず,公開鍵暗号の定式化は論文ではだいたいこんな手順です.
1. 公開鍵とマスター秘密鍵生成
λをセキュリティパラメータとして,次のように公開鍵 pk とマスター秘密鍵 mskを生成します.
(pk, msk) = setup(1^λ) .
公開鍵 pk は暗号化する人が見える場所に置いておきます.
マスター鍵 msk は当然ですが厳重保管です.
2. 復号鍵生成
マスター鍵 msk にパラメータ k を与えて復号鍵 sk を生成します.
sk = keygen(msk, k) .
これを復号したいユーザーに配ります(それ以外の人には漏れないように注意!).
3. 暗号化
公開鍵 pk で平文 M を暗号化します.
C = encrypt(pk, M) .
送信者は暗号文 C を受信者に送ります.
4. 復号
受信者は暗号文 C を作ってもらった秘密鍵 sk で復号します.
M = decrypt(sk, C) .
このとき,関数 F(k, M) が設定した条件を満たせば復号に成功して平文を出力します.
しかし,満たさなかった場合,復号に失敗して平文として受け取れません.
手順2.でパラメータ k を変えることで復号鍵 sk が複数生成できます.
最後の手順4.で関数 F(k, M) に通して条件に合致するかどうかを確認するので,関数型暗号と呼ばれるゆえんです.
インターネット家庭教師Netty
参考資料
Amit Sahai, Brent Waters: Fuzzy Identity-Based Encryption. EUROCRYPT 2005: 457-473
Dan Boneh, Amit Sahai, Brent Waters: Functional Encryption: Definitions and Challenges. TCC 2011: 253-273
Functional Encryption
関数型暗号に限らず,公開鍵暗号の定式化は論文ではだいたいこんな手順です.
1. 公開鍵とマスター秘密鍵生成
λをセキュリティパラメータとして,次のように公開鍵 pk とマスター秘密鍵 mskを生成します.
(pk, msk) = setup(1^λ) .
公開鍵 pk は暗号化する人が見える場所に置いておきます.
マスター鍵 msk は当然ですが厳重保管です.
2. 復号鍵生成
マスター鍵 msk にパラメータ k を与えて復号鍵 sk を生成します.
sk = keygen(msk, k) .
これを復号したいユーザーに配ります(それ以外の人には漏れないように注意!).
3. 暗号化
公開鍵 pk で平文 M を暗号化します.
C = encrypt(pk, M) .
送信者は暗号文 C を受信者に送ります.
4. 復号
受信者は暗号文 C を作ってもらった秘密鍵 sk で復号します.
M = decrypt(sk, C) .
このとき,関数 F(k, M) が設定した条件を満たせば復号に成功して平文を出力します.
しかし,満たさなかった場合,復号に失敗して平文として受け取れません.
手順2.でパラメータ k を変えることで復号鍵 sk が複数生成できます.
最後の手順4.で関数 F(k, M) に通して条件に合致するかどうかを確認するので,関数型暗号と呼ばれるゆえんです.
インターネット家庭教師Netty
参考資料
Amit Sahai, Brent Waters: Fuzzy Identity-Based Encryption. EUROCRYPT 2005: 457-473
Dan Boneh, Amit Sahai, Brent Waters: Functional Encryption: Definitions and Challenges. TCC 2011: 253-273
Functional Encryption