セキュリティ・キャンプ全国大会2022 オンライン 開発コース L1【暗号解読チャレンジゼミ】応募課題 暗号解読の手法は多数ありますが、特に公開鍵暗号では理論的手法が、秘密鍵暗号では アルゴリズム的手法が多いです(※注1)。この分け方をした場合、理論的な共通部分が 少ないですから、両方をこのゼミで実施するにはとてもではありませんが時間が足りま せん。それゆえ、今回はこのうちどちらか一つに絞って応募いただきたいと思います。 ・応募に際し文字数は気にしません。フォームへの文字数を超過した場合は Qiita や  gist、個人ブログを活用していただいて構いません(※注2)し、それによる減点をす  ることはありません。好きなだけ、調べたこと/理解できていないことを書きたいだ  け書いてください。多少誤っていても問題ありません。 ・コピペをしようが、ほとんど理解できていないまま覚え込んだことを書こうが構い  ませんが、できれば理解したものを書いてください。そして理解できていないこと  は理解できていないと明確に書いてよいです。理解できていないことは恥ずべきこ  とではありませんし、わからなければ今から学べばよいのです。  このことから、応募課題に対して完全に正答する必要はありません。 ・参考資料は(最後にまとめてでも構わないので)明記してください。そして、可能な  限り、より一次資料(具体的には提案論文)に近い資料にチャレンジしてください。  いずれにせよ、最終的には提案論文を読んで実装するところまでを1日でできるよう  になれると思います。 ・難しい課題に関してはチャレンジ枠に入れてあります。専門用語を容赦なく書いて  いることもあり飛ばしがちになってしまうかと思いますが、知らない専門用語につ  いて学び、その結果学べたことを書き出すだけに終わってもよいので、ぜひとも  チャレンジしてみてください。 ※注1:公開鍵暗号に対するアルゴリズム的な手法、秘密鍵暗号に対する理論的手法も    当然ながら存在しますから、実際には各自調べて頂いた所感で選んでもらえれ    ばと思います。 ※注2:他の方に見えないよう、private gistや限定公開機能を利用してください。 ■問1:あなたは公開鍵・秘密鍵暗号のどちらで応募しますか。理由も併記してください。  以降、問n = 2、3、4 に対し、公開鍵暗号を選択した方は問n-P、秘密鍵暗号を選択し  た方は問n-Sに進んでください。 ------------------------- ▼選択問題 <公開鍵暗号> ------------------------- ■問2-P(1):Cramer-Shoup暗号について解説し、実装してください。 ■問2-P(2):Cramer-Shoup暗号は、チャレンジにおいても取り上げているように  かなり『安全』な暗号であると思われますが、しかし完全というわけではありません。  Cramer-Shoup暗号が安全でなくなるような場面を考え、そのシナリオを書いてみて  ください。思考過程やシナリオ各所にその理由が書かれていればなおよしです。 ■問2-P(チャレンジ): 『Cramer-Shoup暗号以前の暗号はランダムオラクルという仮定  のもとでしかIND-CCA2安全であることを証明できませんでしたが、Cramer-Shoup暗号は  初めて標準モデルにおいてもIND-CCA2安全であることを証明した暗号です。』という  Cramer-Shoup暗号に関する記述に関して、あなたの言葉で説明を試みてください。 ■問3-P:あなたの好きな公開鍵暗号を一つ取り上げ、解説し、実装してください。  実装言語は問いませんが、あなた以外の人が読んで理解できる程度のコメントを書いてく  ださい (理解できるのであればなしでもOKです)。 ■問4-P:問3-Pで取り上げた暗号は応募時点で「安全」ですか?  解読手法があればそれを一つ解説し、安全ならばその理由を解説してください。 ------------------------- ▼選択問題 <秘密鍵暗号> ------------------------- ■問2-S:AES暗号に対する解読手法を一つ取り上げ、解説してください。簡単なものでも  構いませんが、可能な限り自分の理解の限界に挑戦してもらえると嬉しいです。 ■問2-S(チャレンジ): ラウンド数の少ないAES暗号に対して有用な手法の一つに  Integral cryptanalysisがあります。この手法は応用の幅が広く、たとえばMISTY-1  暗号を解読するのに用いられたDivision propertyと呼ばれる手法の元になっている  ような手法です。4ラウンドのAESを題材に、このIntegral cryptanalysisの説明・実装  にチャレンジしてみてください。 ■問3-S:あなたの好きな秘密鍵暗号を一つ取り上げ、解説し、実装してください。  実装言語は問いませんが、あなた以外の人が読んで理解できる程度のコメントを書いてく  ださい (理解できるのであればなしでもOKです)。 ■問4-S:問3-Sで取り上げた暗号は応募時点で「安全」ですか?  解読手法があればそれを一つ解説し、安全ならばその理由を解説してください. ---------------------------- ■問4(P・S共通補足):解読手法があり、余裕があるならば、それを実装してください. ■問5:自己アピール可能な事柄があればここに書いてください. ■問5(補足):これまでの実績や本課題を進める過程で実装した他のスクリプト等が存在  するgithubリポジトリや学んだ結果を書いたブログ記事があればそれも掲載いただいて  構いません。何もなければ美味しいカレーの作り方でも研究室の話でもなんでもOKです。