Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

High Assurance Rust

High Assurance Rust


セキュアで堅牢なソフトウェアの開発


リポジトリ ページ 図 価格 テキストライセンス: CC BY-NC-ND 4.0 コードライセンス: MIT 保証

本書は、正当な根拠をもって信頼できる高性能なソフトウェアを構築するための入門書です。 つまり、コードの機能性とセキュリティに対する確信を裏付ける十分なデータを持つということです。 信頼性は、高保証ソフトウェアの特徴です。

保証を中核となる概念として、本書では、ソフトウェア開発における2つの基本的でありながら、しばしば近づきにくいトピック、すなわちシステムプログラミング低レベルソフトウェアセキュリティに、ハンズオンかつプロジェクトベースのアプローチで取り組みます。

Rustを学びます。Rustは、速度と正確性を重視する、モダンなマルチパラダイム言語です。 ほとんどのプログラミング書は、小規模で非現実的なプログラムを十数個示すことで新しい言語を教えます。 本書はそうではありません。

Rustの標準ライブラリにある順序付きマップとセットの実装に代わる、機能を完備した実装を設計し、書き、検証します。 主要な動的コレクションの1つを、イディオマティックなAPIごとに再実装することで、Rust言語を深く理解できるようになります。

標準版とは異なり、私たちの実装は次のようになります。

  • 最大限に安全。 考えられるすべての実行に対して、Rustの最も強力なメモリ安全性保証を維持します。

    • コンパイラが証明できない性質をテストするために、差分ファジングや*演繹的検証**を含む高度なプログラム解析技術を学びます。
  • 極めて移植性が高い。 あらゆるオペレーティングシステム上で、あるいはオペレーティングシステムなしでも(例: 「ベアメタル」)実行できます。

    • 私たちのライブラリは堅牢化されたコンポーネントです。より大きなコードベースに統合するため、Rust関数をCやPythonを含む他の言語から呼び出せるように、CFFIバインディングを追加します。
  • 高可用。 そうでなければクラッシュにつながる可能性のあるケースを処理するための、失敗可能なAPIを提供します。

    • 例: メモリ不足(OOM)エラー - 事前に割り当てられたメモリがすべて使い果たされた場合。

実践的ソフトウェア保証における最先端

本書で書くコードを検証するために、最先端のオープンソースのソフトウェア保証ツールを使用します。 これらのツールの一部は成熟しており、商用業界で使用されています。

  • rustc(モダンなコンパイラ)
  • libFuzzer(ファジングテストフレームワーク)
  • rr(「タイムトラベル」デバッガ)
  • qemu(システム全体のエミュレータ)

その他のツールは実験的で、活発に研究されています。 完全な一覧は付録で確認できます。

視覚的には、本書は以下のトピックを扱います(開発速度形式的厳密性のトレードオフでおおまかに対比しています)。 心配はいりません。それぞれについて明確な説明と背景を提供します。

開発速度に重きが置かれている点に注目してください。 私たちが関心を持っているのは、長期的に見て、高品質なコードをより速く出荷し、セキュリティと信頼性の問題に対するパッチ適用に費やす時間を減らすことを可能にする、軽量なプロセスです。 現実世界のコードに適用できる技術です。 今日から使えます。

保証技術

他のRustの本とは異なり、本書で学ぶのは言語だけではありません。 最先端の領域で、ソフトウェアセキュリティについて推論する方法を学びます。 攻撃者のように考える方法。 そして、攻撃に耐性のあるコードを書く方法。 そのメンタルモデルは、主にどのプログラミング言語を使っているかに関係なく価値があります。

本書を支援するスポンサー

本書の開発(調査、執筆、コーディング)は、以下の寛大な支援によって可能になっています。

2022 Project Grants Programの第1期助成によるものです。 採択されたプロジェクトの完全な一覧はこちらで確認できます。グローバルなRustコミュニティ内で進行している刺激的な取り組みの数々をぜひご覧ください!

あなたは、ミッションクリティカルなアプリケーションを支えるデータ構造ライブラリを構築する必要があります。 それは、ほぼあらゆるデバイス上で動作し、現場で何年にもわたってエラーなく稼働し、攻撃者に制御された入力に耐えなければなりません。 パッチは存在せず、失敗は許されません。 あなたのコードは生き残らなければなりません。 強く出荷せよ。


* == 変更される可能性があります!本書は制作途中です。完成時や物理版の提供開始時に通知を受け取りたい場合は、こちらから登録してください