セキュリティー・CTF
The FIPS 140-3 Go Cryptographic Module - The Go Programming Language
- The FIPS 140-3 Go Cryptographic Module
- Go の暗号技術ライブラリーを FIPS 140-3 に対応させる話
- 意見の食い違いに折り合いをつけた
- "FIPS 140-3 has strict rules on how cryptographic randomness is generated, which essentially enforce the use of a userspace CSPRNG. Conversely, we believe the kernel is best suited to produce secure random bytes"
- (FIPS 140-3 には乱数生成方法に関する厳格なルールがあり、ユーザースペースの暗号論的擬似乱数生成器を使うことを強制する。正反対に、我々はカーネルこそが安全な乱数バイトを作るのに最適な場所だと信じている。)
- PQC も対応した。
- "The post-quantum ML-KEM key exchange (FIPS 203), introduced in Go 1.24, is also validated, meaning crypto/tls can establish FIPS 140-3 compliant post-quantum secure connections with X25519MLKEM768."
- Go の暗号技術チームは仕事が早いし正確だ。
- Go Assembly Mutation Testing (Go のアッセンブリー改変テスト)
- コードカバレッジの検査は基本的には if 文の両方の分岐を通ったことをテストするものだが、暗号技術のコードには if 文がない。
- "The problem is that if you run code coverage, you’ll see all “branches” light up, even if all tests actually discard the result of one of them. We could have other untested paths like #20040 and not know about it."
- if 文なしでどのように場合分け処理を実装するのか? 一定時間演算へようこそ。
- 特定の関数内部ではアッセンブリーのレベルでも分岐命令 (x86-64 の jne など) がなくなることが期待されるしコード中にも単純な if 文がないので、常にその関数の全ての命令が実行される。
- mutation testing (改変テスト) とは?
- ソースコードを実際に書き換えてテスト結果が変わらなかったら、その書き換えた部分はテストされていないとみなす
- 普通のコードなら分岐命令になるであろう場所 (c >= 0 なら 1 増やす) などが、両方の分岐を通っているかを試験する
- そのような場所は arm64 だと SUBCS などの、フラグを読むが分岐はしないような命令で実現される
- a = carryAdd(a, b, c) の代わりに a = a + b にしたらどうなるか、など
技術一般
Faster Go maps with Swiss Tables - The Go Programming Language
- Go の map 内部のハッシュテーブルを Swiss Table に変えた話
- Go の map は (K comparable という制約があるので) 平衡木だと思っていたが、実はずっとハッシュテーブルだった。
Notion Task Manager Guide: One Table for Goals, Projects & Tasks
- Notion で全てのタスクを単一 DB に突っ込む話
- Notion 上で一つの DB にプロジェクトも細かいタスクも全部積んで、relation で親子関係を表現する
- 「双方向リレーション」は必要 (これをオンにしないと辺が無向辺になり、親子関係を適切に表現できない)
- "もうだめならどうでもいいや。と思いながら思いついた戦略は次の通りアホみたいに単純である
- 自分に特に関係ある主要開発者のすべてのPRを読む
- 1週間に、2回ほど時間を予約して、他の人のPRを読む時間を作る"
- "私が参考にしている勉強法の YouTuber の人が、新しい事を学ぶときはインデックスつまり、概要をざっとつかんでから本とかでも読むと良いと言っていたので、同じストラテジをとった。"
- "私はこのトランジションに3日使ったが、自分がかつて感じたことのない「コンフィデンス」を感じていた。どのPRを観ても全然簡単に理解できるし、時間もかからない。これが、技術イケメンの皆さんが観てた風景なのか。"
- 個人的にも深く理解したとたん作業スピードが劇的に上がった経験があるので、詰まった時の一手として利用したい
- できたら大きいけどできるかどうかわからない、でも今のまま待っていてもジリ貧、みたいなときに勇気を出したい
Be Careful Zero-Copying Strings with serde
- serde (Rust で de facto standard な直列化ライブラリー) の面白機能の話
- serde には文字列の参照で返す機能があるが、JSON などで escape された文字列だと発動せず
Err(...)になる- 例えば JSON 文字列
{"a": "b\nc"}から脱直列化しようとすると、結果に含まれる文字列 (b, 改行文字,cをこの順に並べた文字列で、hex は62 0a 63) がもとの JSON の部分バイト列になっておらず、serde が困ってErr(...)にする
- 例えば JSON 文字列
- できる時だけ参照にしたいなら
Cow<'a, str>に#[serde(borrow)]を付けよう
思想一般
- "Programming communities can easily become tribal. It’s easy for people to slip into thinking that “their” programming language is the best, and nothing written with other languages can be good."
- (プログラミングコミュニティーは容易に排外主義的になり得る。「自分たちの」プログラミング言語が最高で、他の言語で書かれたものが良いことなどありえない、という考えに陥るのはたやすい。)
『滅私』
- https://www.amazon.co.jp/dp/B0D7VM318M
- ミニマリストに関する物語と思いきや、実は矛盾を抱えた人間の物語かもしれない。登場人物はミニマリストの典型というよりは、自分の問題から逃げ回ってミニマリズムなどに傾倒する人間の典型に見えた。
『やり抜く力 GRIT(グリット)』
- https://www.amazon.co.jp/dp/4478064806
- "エキスパートたちは、すでに得意なところをさらに伸ばすのではなく、具体的な弱点の克服に努める。あえて自分がまだ達成していない困難な目標を選ぶのだ。"
山口周シリーズ
- #034 言葉がダメになると組織がダメになる|山口周
- "厳密な言葉を丁寧に使って議論を積み重ねることではじめて、我々は組織における「空気」の蔓延を防ぐことが出来るのだということをゆめゆめ忘れてはならない、ということですね。"
- なぜ「日本一給料が高い会社」を辞めたのか…電通にいた山口周が「給料は今後確実に下がる」と予測した意外な兆候(プレジデントオンライン) - Yahoo!ニュース
- "まず20代であれば、自分が専門とする領域の本は少しずつ深めながら、マンダラのコアにある書籍について目を通しておけばいいと思います。"
- "マンダラの中心部にある本は全カテゴリーの代表的な入門書ですが、これらの本を読むことで「企業というものがどういう論理で動いているのか」ということがおおむね理解できるようになります。視座が上がるのです。"
桜林 直子(サクちゃん)シリーズ
- 自己肯定感が低いままでも、つよくなった理由。|桜林 直子(サクちゃん)
- "同じように、自分となかよくなるには、嘘をつかずに本心で自分のことをちゃんと知ることだと思う。期待をして盛ったり、謙遜でサゲたりしないで、過不足なく本当のサイズで自分のことを捉えて知ることができると、すごく仲良くなれる。"
- 正直であるためには、誰と一緒にいるかが大事だよねという話。|桜林 直子(サクちゃん)
- "誰と一緒にいたいか考えるとき、仕事でも恋愛でも友達でも、好き嫌いではなくて「自分が正直でいられるか」で決めるのはとてもよい方法なのだろうな。"
- やることを決めるために「自分のサイズと持ち物のチェック」をした話|桜林 直子(サクちゃん)
- "「自分のサイズを知る」というのは、環境や性格や「こうしたい」という希望 を洗い出して、自分だけのでこぼこを把握すること。"
- "たとえばわたしの場合は「決まった時間に仕事できない」(ノってるときはいくらでもやるけど、出社時間だからといってできない。他に大事な用事があったら優先したい)とか、「18時以降は働かない(働けない)」「あーちんと一緒に夏休みをとりたいから夏は働かない」とか、「自分で把握できない見えない部分があるとフリーズして機能しない」とかだった。"
- "「自分の持ち物を知る」というのは、「自分にできること」を並べること。"
『フィードバック入門』
- https://www.amazon.co.jp/dp/b06vvq8v36
- "大人が何かを学ぶとき、行動を変容させるときには一定の「痛み」がともなうのです。しっかりと相手に向き合い、このセッションの目的を伝え、そのうえで、ともに改善していこうと誘うのがポイントです。"
"勉強だったら1日30分できるんだったら、30~35分を頑張ってみる。
楽すぎず、苦しすぎない、ちょうど中間ぐらい、適度なストレスがかかってる状態がラーニングゾーンと呼ばれるところなので、楽すぎるコンフォートゾーンにいすぎないで、かといって苦しすぎないゾーンにいればいいんです。
精神科の治療というのは二つポイントがあって、仕方がないということと、生まれてきてよかったと思える瞬間、この二つなんです。"



