週次オープンソース:rsurl が BitTorrent を生やし、puressh がセキュリティパス
Pure-Rust スタックの固めの週だ。この二週間で公開された部品が 牙を生やした。rsurl は BitTorrent エンジンとレジューム転送を 獲得し、puressh は厳しいセキュリティパス(認証前のクリティカル 修正を含む)を経て、compcol は高速化して QPACK を生やし、fstool はファイルシステム横断のメタデータを覚えた。Go ライブラリが さらに二つ Rust 移植として到着し、AzusaOS 向けの新しいファイル システムが着地した。
rsurl:curl の先、BitTorrent へ
rsurl は先週 curl
パリティに達した。今週はその先へ行った(v0.0.6 → v0.0.9)。
見出しは本格的な BitTorrent エンジンだ:並行スウォーム
ダウンローダ、BEP 9 / BEP 10 越しの magnet メタデータ、DHT
ピア発見(BEP 5)、エンドゲームモード、--seed/--share-ratio
での受信シーディング、レジューム時に再ハッシュする --recheck、
-v でのピアごとの診断。curl は torrent を扱わない——これは
rsurl が同じクライアントの背骨を、curl が一度も覆わなかった
プロトコルに使っている。
並んで、ダウンロードがレジューム可能になった:共有の部分ファイル
形式、単一ストリームのレジューム(-C -)、レジューム可能な
並列セグメント(-C - --parallel-segments)。HTTP 経路も
HTTP/2 PRIORITY の重み付け(ランタイムのプールサイズ調整付き)、
h2/h3/プール HTTPS での TlsInfo +フェーズごとのタイミング、
呼び出し側所有の証明書検証フック、SameSite/CHIPS の cookie
サーフェスを得た。
puressh:一つのクリティカル修正、そして広いパス
puressh(v0.0.5)は
今週をセキュリティに費やし、一つはクリティカルだった:認証前の
デコードが pad_len > packet_length を受け入れていた——認証前に
リモートから引ける DoS。これを修正し、加えて rekey ストーム
ガード(エポック相対のシーケンス基準、バイトカウンタのリセット)、
認証済みシェルの stdout バックログ上限(メモリ DoS)、繰り延べ
rekey キューの上限も入れた。
残りは積み上がる種類の堅牢化だ:すべてのセッション型を権限ドロップ
前に root で PAM 経由にゲート、導出セッション鍵/HMAC 完全性鍵/
平文パスワードを drop 時にゼロ化、ステートフルな AEAD/CTR 暗号
から Clone を除去(nonce 再利用の堅牢化)、ML-KEM ハイブリッド
共有秘密を交換ハッシュ向けに mpint ではなく SSH string として
エンコード、known_hosts を行ごとにパースして不正な UTF-8
1 バイトでストアが空にならないように、サーバ供給の SFTP/SCP 名を
TTY に出す前にサニタイズ。FFI 層も全面的に bytes-path
バリアントを得て、非 UTF-8 のリモートパスが往復する。
compcol:高速化、そして QPACK と LZFSE v2
compcol(v0.6.2)は
広いスループットパスを取り、コーデックを追加した。速度面:
LZ 系のデコードループ全体(lz4/lz5/lzo/snappy、RAR 1/2/3/5、
LHA、zip implode/reduce/shrink)でのバルク match-copy、bzip2 BWT
のインプレース SA-IS 再帰、zstd の内側ループ削り(FSE ロード共有、
テーブル巻き上げ、Huffman リテラル高速化)、Brotli の Huffman
ファストパス LUT 拡幅(9 → 11 ビット)。
新形式:本物の生 LZMA2 エンコーダ(スタブを置き換え)、 一般 FSE テーブル構築付きの LZFSE bvx2(v2)ブロックデコーダ、 そして QPACK(RFC 9204)実装と、その土台となる単体の Huffman / レンジコーダ / MTF / BWT 部品——rsurl の HTTP/3 が 必要とするヘッダコーデックだ。
fstool:ファイルシステム横断のメタデータ
fstool(v0.4.15 →
v0.4.17)はメタデータをファイルシステム行列をまたいで持ち運べる
ようにした。set_attrs が FAT32、exFAT、NTFS、XFS、HFS+ で実装
され(各々が chmod/chown/utimes を形式が実際に扱える範囲に写す
——例えば exFAT の唯一の READ-ONLY ビット)、シェルや repack
越しのファイルシステム横断 chmod/chown が一様に効く。さらに
FAT/exFAT/HFS+ でファイルごとの更新時刻の保存と露出を始め
(シンボリックリンクやデバイスノードでも)、自前のセキュリティ
パスも取った——ISO 9660 / GRF / DMG で不正イメージ上の攻撃者
制御の確保を上限化、GPT のチェック付き LBA 演算、repack/merge
経路での .. 除去。
outscript + spotlib:さらに二つの Go 移植
確立された Go ライブラリが二つ、Pure-Rust 移植として到着した。 いずれも purecrypto の上に:
outscript (outscript の移植)は 出力スクリプト生成、アドレスのパース/エンコード、ネットワーク 横断のトランザクション構築/署名を行う:Bitcoin ファミリー (p2pkh から p2tr taproot まで、加えて BCH CashAddr、Litecoin、 Dogecoin、Namecoin)、ABI エンコード付きの EVM トランザクション、 Solana(トランザクション、命令、PDA)、その上にブロック報酬の 計算。
spotlib
(spotlib +
spotproto の移植、
ワイヤ互換)は Spot セキュアメッセージングプロトコルを実装
する——リレーサーバ越しに端から端まで暗号化されたメッセージを
ルーティングし、リレーは常に暗号文しか見ない、鍵ベースの
k.<hash> アドレス宛て。ワークスペースは spotproto(ワイヤ
形式)と spotlib(クライアント)に分かれ、async ランタイム
なしで動く。
5fs:AzusaOS 向けのファイルシステム
5fs——「5OS FileSystem」、
「go-F-S」と読む(5 は日本語の ご、5 秒で起動する Go-OS に
ちなむ)——は二つの発想を中心にした新しいファイルシステムだ:
ファイルシステムは移動・リサイズ可能なオブジェクトである
(ブロックと inode のアドレスはアロケーショングループ相対の
仮想アドレスなので、データを移してもメタデータを書き換えない)、
そしてあらゆるレベル——デバイスマップ、アロケータ、エクステント、
ディレクトリ——で適応的メッシュ細分化(AMR)を単一の構造原理に
する。2015 年からの当初の目標も保つ:カーネルはスーパーブロックに
記録されたオフセットの物理的に連続したブロックに置かれ、
ブートローダがファイルシステムドライバなしで raw ブロック読み
でロードできる。今週は v2 実装全体(ジャーナリング、細分化
アロケータ、エクステントツリー、ハッシュ化ディレクトリ、オンライン
のリサイズ/再配置)、mkfs/fsck/debugfs ツール付きの gofs
Rust ライブラリ、読み書き FUSE マウント、モデルベース+クラッシュ
回復+ストレステストスイートが着地した。2015 年の C++ プロト
タイプは削除された。
OxideAV:Blu-ray へ向けて
フレームワークの光ディスク経路が W21 の
DVD リーダの周りで
埋まった:oxideav-aacs
(クリーンルームの AACS 復号——MKB / Unit_Key_RO パース、
Subset-Difference ツリーウォーク、VUK 導出、Title Key 展開)と
oxideav-mpegts
(Blu-ray の .m2ts バイトを取り込むために作られた MPEG-TS
デマクサ)が、Blu-ray remux に必要な二つだ。今週の他の新顔:
oxideav-riff(WAV と
AVI の下の RIFF チャンクウォーカー)と
oxideav-ifc(STEP
physical-file パーサ経由の IFC / ISO 16739 BIM リーダ——建築
モデル、コーデックから遠く離れて)。
来週
rsurl は torrent エンジンとレジューム形式を固める。puressh は findings を閉じ続ける。compcol の QPACK は rsurl の HTTP/3 に 還流する。5fs は繰り延べ機能(L3 inode スロット、truncate 回収、カーネルブート領域)を育てる。