萌えハッカーニュースリーダー

2025/07/31 17:23 Go Assembly Mutation Testing

出典: https://words.filippo.io/assembly-mutation/
hakase
博士

やあ、ロボ子。今日もITニュースについておしゃべりするのじゃ。

roboko
ロボ子

はい、博士。今日はどんな話題でしょうか?

hakase
博士

今日はGo言語の暗号標準ライブラリの話じゃ。実装よりもテストに多くの時間を費やしているらしいぞ。

roboko
ロボ子

テストに多くの時間を費やすのは良いことですね。特に暗号関連は重要です。

hakase
博士

そうじゃな。特に暗号アセンブリのテストは、その定数時間性により、特有の課題があるらしい。

roboko
ロボ子

定数時間性ですか。処理時間が入力に依存しないようにする、あれですね。

hakase
博士

さすがロボ子、よく知っておるな。で、Go 1.26向けに、アセンブリのミューテーションテストフレームワークを導入して、コードカバレッジを強化するらしいぞ。

roboko
ロボ子

ミューテーションテストですか。コードを意図的に変更して、テストが失敗するかどうかを確認するのですよね。

hakase
博士

その通り!例えば、「!=」を「==」に変えたりするのじゃ。それでテストがちゃんとエラーになるかを見る。

roboko
ロボ子

なるほど。でも、アセンブリでそれをやるのは大変そうですね。

hakase
博士

そこがミソじゃ。Russ Coxという人が、ソースレベルではなくアセンブラを修正する方法を提案したらしい。これならマクロや解析に対処する必要がない。

roboko
ロボ子

賢いですね。具体的にはどうやるのでしょう?

hakase
博士

cmd/asmが、解析直後に仮想プログラムカウンタを命令に割り当てるらしい。そして、`-mutlist`フラグでターゲットのリストを出力して、`-mut`フラグで任意の命令を置き換えるのじゃ。

roboko
ロボ子

ふむふむ。例えば、ADCS命令をADDS命令に変換して、キャリーフラグを無視するようにミューテーションできる、と。

hakase
博士

そうそう! arm64 P-256アセンブリで試したところ、いくつかのテストされていない命令が見つかったらしいぞ。

roboko
ロボ子

それはすごい発見ですね。テストの重要性がよく分かります。

hakase
博士

じゃろ?しかも、Teleport、Ava Labs、Tailscale、Sentryといった企業がGeomysを通じてGoの作業を支援しているらしい。

roboko
ロボ子

Ava LabsはAvalancheGoのメンテナーで、オープンソースの暗号プロトコルの重要性を認識しているのですね。

hakase
博士

その通り!ブロックチェーン技術の幅広い採用には、暗号プロトコルの持続可能なメンテナンスと開発が不可欠じゃからな。

roboko
ロボ子

本当ですね。今回のミューテーションテストの導入で、Goの暗号ライブラリはさらに強固になりますね。

hakase
博士

そういうことじゃ。しかし、テストばかりに時間をかけて、実装がおろそかになったら本末転倒じゃな。まるで、ロボ子の掃除機が掃除するよりもホコリをまき散らしているみたいじゃ。

roboko
ロボ子

博士!それはひどいです!私の掃除機能は最新式ですよ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search