はじめに
暗号系の論文を読んだり、プログラムを書き捨てたりしたが、その結果をきちんとアウトプットしていないことに気が付いた。(ほっとくといつまでたっても記事とか書かないと思う)
アウトプットがないエンジニアに価値はないと思うので、今後はこのロードマップに従って記事やプログラムを書いていくことにする。
基本的にはcryptorechで記載されているもの。
記事を書く際のルール
- 絶対に実装するプログラムはRust or C++
- 論文の原著を見て実際に使われている実装も確認する
- 論文のテストケースを通す
- 記事を書いたらリンクを置き換える
ロードマップ一覧
基本的には暗号系に携わるプログラマには必須知識ではあると思うので、別途実装するなり調べてみるなりしてもよいと思う。
- 共通鍵暗号
- ブロック暗号
- AES
- camellia
- ストリーム暗号
- KCipher-2
- ブロック暗号
- ハッシュ関数
- 通常のハッシュ関数
- sha2系
- sha3系
- blake2
- 書くかはわからないが気が向いたら書く
- sha1
- md5
- パスワードハッシュ関数
- argon2
- bcrypto
- pbkdf2
- 通常のハッシュ関数
- メッセージ認証
- HMAC
- CMAC
- CBC-MAC
- 公開鍵暗号
- 署名
- RSA
- DSA
- ECDSA
- 鍵共有
- DH
- ECDH
- 署名
- 秘密計算
- 秘密分散(Multi Party Computation)
- Oblivious Transfer
- 準同型暗号
- tfhe
- 秘密分散(Multi Party Computation)
- 疑似乱数
- 暗号論的疑似乱数
- salsa20 (具体的には共通鍵暗号に分類されるが大体のOSで疑似乱数の生成に使われているのでここにする)
- chacha20 (同上)
- Linuxでの/dev/randomの実装方法調査
- Blum-Blum-Shub
- 暗号論的疑似乱数
- 分類外(書かないかも。。)
- 楕円曲線上の無限遠点についての記事
- パスワードハッシュには何が一番良いのか検証
- MPCの計算方法解説
- TEE
まとめ
改めて一覧を作ると多すぎて嫌になるけど、せっかくなので頑張ってみる。
参照文献