the same content for successful responses for $base/$module/$version.mod and $base/$module/$version.zip queries. – Go Modules Reference(https://go.dev/ref/mod) → 特定のバージョンに対するgo.modファイル ($base/$module/@v/$version.mod) とモジュールzipファイル ($base/$module/@v/$version.zip) の成功した応答に対しては、常に同じコン テンツを提供する。 9
same content for successful responses for $base/$module/$version.mod and $base/$module/$version.zip queries. – Go Modules Reference(https://go.dev/ref/mod) →特定のバージョンに対するgo.modファイル ($base/$module/@v/$version.mod) とモジュールzipファイル ($base/$module/@v/$version.zip) の成功した応答に対しては、常に同じコ ンテンツを提供する。 →一度キャッシュされたら、同じものが返ってくる(配布の不変性) 19
2. チェックサムデータベースとの連携 a. チェックサムデータベース(デフォルトでは sum.golang.org)は、すべてのモジュールバー ジョンについて、go.sumのグローバルなソースとして機能する。 b. go.sumにハッシュがまだ存在しない場合、 goコマンドはデフォルトでこのグローバルデー タベースに問い合わせてハッシュを検証する。 c. (基盤には、Merkle Treeと呼ばれる改ざん防止の特性を持つ構造がある。) 25
Database • go.mod file reference - The Go Programming Language • Go Supply Chain Attack: Malicious Package Exploits Go Module Proxy Caching for Persistence • research!rsc: Transparent Logs for Skeptical Clients • GitHub - daixiang0/gci: GCI, a tool that control golang package import order and make it always deterministic. • Go 公式の脆弱性管理システム 40