・各設問には発展問題を追加で設定してありますが, 解いていなくても減点はされません. 「適当に全部を埋めた応募用紙より, 丁寧に書かれた発展なしの応募用紙のほうが高評価」と思ってもらって構いません. ・フォームに書ききれない場合, Gist, Zenn, Qiita, 個人ブログ等の外部サービスに回答を書いてもらっても構いません. なお, 限定公開にするよう注意してください.  ・文字数制限は存在しません. 気の済むまで熱意を込めてください. ・ただ調べたことを書くだけではなく, 「どんなRFC, NIST規格, 論文, 本, Webサイト等を参照したか」のリストも書いてください. 「どの部分はどれのどこを参考にした」まで書かれている場合, これは加点対象になりますが, 無くても減点はされません.  ・これに限らず, 評価は原則として加点方式です.  ・正しく道筋を辿れている証跡があれば, 完全な正答でなくとも部分点的な評価はなされる可能性があります.  ・ChatGPTやGemini等のLLMを利用しても構いませんが, その場合「なぜその出力が正しいと判断できたのか・誤りだと判定したか」をプロンプト・出力と共に追加記述してください. ・実装問題の実装言語は問いません. ただし, 後から第三者が読んで理解できる程度のコメントを残してください. ・知らない単語ばかりに見えてしまうかもしれませんが, 「知らない」ということは「伸び幅がそこにある」ということでもあります. 是非これをきっかけとしてチャレンジしてみてください.  ・逆に, 簡単だと思える内容が実は奥深いものかもしれません. この応募課題はいくらでも深堀りできるように書いていますので, 好きなだけ掘って頂ければと思います. ■ Q1. RSA暗号は最も著名な公開鍵暗号であることに異論はないでしょう. その安全性はRSA-2048やRSA-4096のようにビット数として表現されています. CRYPTRECの「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準」によると, RSA-7680は192ビットセキュリティをもち, 2022年時点では, 保管用途で2070年までの利用が許可されているようです. 以下について, 根拠となる事実を具体的に示しながら記述してください. 1. 「保管用途では」という但し書きがついていることからわかるように, CRYPTRECは鍵共有や保管といった用途ごとにビット数の基準を個別に設けています. どのような用途があり, それぞれどのような差がありますか? 2. 128ビットセキュリティをもつRSA-3072と192ビットセキュリティのRSA-7680の間に存在するRSA-4096は, ChatGPT-4によると150ビットセキュリティをもつそうです. このChatGPTの出力した数値は妥当だと言えるでしょうか? また, "署名用途では"何年頃まで使えるものと考えられますか? 3. 2050年までに稼働終了予定のソフトウェアにおいて, 署名用途にRSA-4096を利用しています. この場合このビット長は安全だと言えるでしょうか? 4. CRYPTRECの「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」(CRYPTREC LS-0001-2022)では, RSA単体での利用は認可されておらず, RSA-OAEP等の組み合わせで利用することが規定されています. これはなぜでしょうか. [参考資料] * 電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト) - https://www.cryptrec.go.jp/list/cryptrec-ls-0001-2022.pdf * 暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準 - https://www.cryptrec.go.jp/list/cryptrec-ls-0003-2022r1.pdf ■ Q1 (発展). TLS1.3では, 利用可能な暗号方式からCamelliaが外されています. Camelliaは2024年時点においても完全な解読がなされたとは言えない状態にありますが, なぜ外されたのでしょうか. 「2024年3月時点で有効な解読手法が存在しないこと」「TLS1.3で外された理由の推測」「仮に継続して利用可能であった場合, どのようなメリットがあり, どのようなデメリットがあるか」の三点を軸としてそれぞれ論じてください. なお「どれか一点 or 二点に注目して詳しく調査した」でも良いものとします. ■ Q2. あなたが面白いと感じた暗号プリミティブを一つ取り上げ, 説明・実装してください. ■ Q2 (発展). その暗号プリミティブは応募段階で安全ですか? 安全だとすればその理由を, 解読手法が存在するのであればどのような場合に解読されるのかを記述してください. 余裕があれば, その解読手法を実装してください. ■ Q3. あなたが面白いと感じた暗号プロトコルを一つ取り上げ, その根拠となる規格文書を探し, それをもとにしてそのプロトコルを説明してください. 説明というだけではよくわからないかもしれません. そこで「その暗号プロトコルはどんな手順を踏むのか」「その暗号プロトコルは何を守っているのか」「その暗号プロトコルにはどんな道具が使われているのか」「その暗号プロトコルが破られる条件はなにか」をそれぞれテーマとして例示します. オリジナルのテーマについて説明していただいても構いませんし, これらのテーマのうち一つを深堀りしてもらってもよいです. SSHやTLSといった規格はしばしば複数の規格文書に分かれて記述されています. 膨大な量の英文を右往左往しながら読むこととなり, 途方に暮れるかもしれませんが, その場合は先に(Q4のように)実物を観察してみるのも一手です. RFCやNIST等の文書を初めて読む場合, 以下も参考になるかもしれません: * https://speakerdeck.com/ayokura/openid-summit-tokyo-2024 * https://tex2e.github.io/rfc-translater/html/ ■ Q4. そのプロトコルの通信をWireshark等を用いてキャプチャ・解析してみたり, その暗号プロトコルの一部を実装してみたりといった形で, 実際にそのプロトコルが動いている様子を観察し, 規格と照らし合わせつつレポートしてください. 実装する場合, 暗号プロトコルはしばしば巨大な規格になりますので, 「少しだけでもお話できた」というレベル感で十分です. パケットキャプチャを実施した場合, 個人情報やMACアドレス等, 公開されたくない情報があれば, 適宜マスクしてください. パケット情報を記載する際, スクリーンショットの貼り付けや, キャプチャファイルを上げたDropbox / Google Drive等のリンクを記載するなどして頂いても構いません. ただし, その場合は画像やファイルの公開範囲に注意してください. ■ Q5. 自己アピールできることがあれば, ここに書いてください. これまでの実績や, 本課題を進める過程で実装した他のスクリプト等が存在するgithubリポジトリ, はたまた学んだ結果を書いたブログ記事など, なんでもいいので書いてみてください. 何もなければ美味しいカレーの作り方でも研究室の話などでもOKです.