ぺんぎんさんのおうち

日記です。たまに日記じゃないこともあります。

サイボウズ・ラボユースを修了しました

ykm11です.2019年の初夏にサイボウズ・ラボユースの活動を始め,2020年6月9日にラボユース9期生を修了しました(若干10期に食い込んでいます).

成果物はこちらです https://github.com/ykm11/lab-youth/tree/master/ellipticCurve.


応募のきっかけ

セキュリティ・キャンプ2018全国大会に参加したときにラボユースの卒業生である緑川さんと出会い,そのときに紹介していただきました.ちょうど2019年の春から東京の方へ移り住むので,いいタイミングだと思い応募しました.


活動内容

メンターは光成さんです. C++を書くのは初めてですと言っても過言ではないという状態だったので,最初は練習としてC++でchacha20を実装しました(いま見返してみると直したほうがいい箇所が結構ありそうですね).それからは楕円曲線を,特に高速に動作することを目指して実装していました.高速化には楕円曲線代数学)の知識も要求されます,数学的な話でも光成さんにはお世話になりました.

最終的に,既存のライブラリ(sage v8.8)での実行と比較して,256bitsの楕円曲線でおおよそ20倍程度の高速化ができました.実装に関する詳しい話や苦労した部分については別の機会でお話ししたいと思います.

3月の成果報告資料 speakerdeck.com

2020年4月から6月にかけては,secp521r1の追加実装やバグ探し,楕円曲線の(数学的な)勉強などをメインにしていました.


感想

非常に楽しかったです.先に述べたようにC++の経験は皆無でしたが,実装が進むにつれ成果(実行速度)が目に見えてわかるのは嬉しいです.「この部分はこうしたほうが速くなるんじゃないか?」と仮設を立てて実装,ベンチマークまですぐに手が動くようになったのも,ラボユースの活動の成果だと思っています.

最後に,メンターの光成さんをはじめサイボウズ・ラボの皆さんには大変お世話になりました.ありがとうございました.

labs.cybozu.co.jp