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

よくある質問(FAQ)


扱う基本的なトピック。

0. 簡潔に言うと、この本は何を目指していますか?

  • セキュアで堅牢なシステムの開発について、わかりやすく、かつ原則に基づいた入門を提供すること。「最先端」と「短期的に実用可能」の重なり合う領域、つまり主に本番環境レベルのツールと手法を扱いつつ、最先端の研究プロジェクトもいくつか取り上げます。すべてオープンソースです。

  • 経験豊富な開発者が新しい言語を学ぶと同時に、コンピューターサイエンスとコンピューターアーキテクチャの基本的なトピックをより深く掘り下げられるよう支援すること。

1. この本は誰向けですか?

上の図に示した要素の何らかの組み合わせに関心がある人なら誰でも対象です。

  • Rustプログラミング言語
  • ソフトウェアセキュリティ
  • データ構造(特に自己平衡木)
  • システムプログラミング

ただし、一般的なコーディングにはすでに十分慣れていることを前提としています。 熟練したソフトウェアエンジニアでなくてもかまいませんが、3,000行以上のプログラムを書いてデバッグした経験があることを想定しています。 再帰をすでに理解しており、コマンドラインツールの使い方を知っている必要があります。

また、この本は、あなたが深く技術的なトピックに興味を持っていることも前提としています。 メモリ管理やパフォーマンス最適化のようなものです。 物事が実際にどのように作られているのかという細部です。 かなり深いところまで踏み込みます。

2. では、これは上級者向けの本ですか?

プログラム解析の研究、バイナリエクスプロイト開発、自己平衡木のような「高度な」題材を避けることはしません。 この本の一部は難しいかもしれませんが、すべてのトピックをできるだけ理解しやすく、魅力的にするよう努めます。

付録には「基礎」と記された短いセクションが含まれています。 これらは、異なる背景を持つ読者に対応するため、主要な概念への任意の入門を提供します。 章が特定の知識を期待または推奨している場合、それはこれらの付録セクションのいずれかで扱われています。

さらに、この本に登場する引用ブロックのかなりの部分は、周囲のテキストに説明的な文脈を与えることを明確に意図しています。 大まかには次の形式に従います。

ここに概念Xに関する質問

概念Xと関連キーワードについての簡単な説明。 網羅的ではありませんが、正しい方向への手がかりになることを願っています。

C言語は短いスニペットで時折使用しますが、あなた自身がCを書いたことがまったくないものとして扱います。 Rustの事前経験は必要ありません。

数学については明確に説明し、複雑なトピックを視覚的に説明するために図を使用します。

3. これは単なるデータ構造の本ですか?

いいえ。 ただし、強力なマップ/セットライブラリを組み立てる足場として、特定のデータ構造(「スケープゴート木」と呼ばれます)を使用します。 データ構造というレンズを通して学びます。データ構造は、抽象理論の厳密さと実用的な実装の技巧を組み合わせるものです。 そして、Rustの最も新しい概念の習熟へと進みます。

4. この本の「ハンズオン」な点は何ですか?

各章を通して、コードを書き、最先端のツールを使います。

前半が終わるころには、データ構造ライブラリにリモートコマンドを送信して、ライブでテストするようになります。 さらに注目すべき点は、それが組み込みシステムの仮想的な複製の中で「ベアメタル」で実行されることです。 ハードウェアを購入する必要がないということ以上に、それが実際に何を意味するのかを説明します!

この本の内容は、実世界のライブラリの実装に基づいています。 さらに重要なのは、Rustの標準ライブラリで広く使われているコレクションとAPI互換の代替を構築することです。 これは「おもちゃ」の例ではありません。

5. どのような「ハッカー」(ここでは低レベルセキュリティの意味)スキルを学べますか?

セキュアなシステムを構築するために、システムを攻撃できる能力が必須というわけではありません。 しかし、攻撃者のように考え、同じツールの一部を適用できれば、確かにより容易になります。

防御的(いわゆる「ブルーチーム」)スキルと攻撃的(いわゆる「レッドチーム」)スキルの幅を紹介しますが、前者に重点を置きます。

  • ブルーチームのスキル(重点):

    • Rustでのセキュアコーディング
    • 軽量な形式的検証
    • 安全な外部関数バインディング
  • レッドチームのスキル(補足):

    • 現代的なバイナリエクスプロイトの基礎
    • リバース動的デバッグ
    • カバレッジガイド付きファジングによるバグ発見

6. 学んだことを仕事に適用できますか?

C Foreign Function Interface(CFFI)バインディングを扱います。あなたのAPIはPython3とC99の両方のコードから呼び出せるようになります。 これは、高速でセキュアなRustコンポーネントを既存の仕事のコードベースに統合するための実践的なスキルです。

加えて、試すことになる静的検証ツールと動的テストツールはすべて無料でオープンソースです。 Rustだけでなく、複数の言語で書かれた実行ファイルを解析できるものもあります。 ツール一覧の完全版は付録にあります。

たとえ本番環境でRustを実行する機会がまったくなくても、システムセキュリティのスキルを得られます。 それらはさまざまな文脈で価値を持つ可能性があります。

7. Rustを安全性が重視される領域で使用できますか?

可能性はあります。領域によります! Rustツールチェーンは、たとえばSPARK/Adaほど広く認証されているわけではまだありません。 しかし、安全性が重視される製品でのRust採用は活発に進展しています。 最近の例(網羅的ではありません):

  • Ferroceneプロジェクトは公式Rustコンパイラのダウンストリームであり、自動車(現在はISO 26262による)および産業(現在はIEC 61508)環境で「品質管理され、使用に適格とされた」ものです。

  • Infineon Technologiesのようなハードウェアベンダーも、同様に自社プラットフォームを対象とするRustツールチェーンの提供を開始しつつあります。

  • AdaCoreのようなソフトウェアベンダーは、安全性が重視される用途に特化したRustツールを現在提供しています。

この本は、業界に関係なく、一般にセキュアで堅牢なソフトウェアを構築することについて扱います。 Rustを取り巻く規制環境が発展するにつれて、ここで扱うトピックをより多くの業界分野に適用できるようになるでしょう。 ほとんどの業界にとって、Rust は本番環境で使える状態にあります。 今この時点で。 この言語は現在、多くのミッションクリティカルな場面で使用されています。 Web スケールのインフラストラクチャ、金融サービス、コンシューマー製品などです。

免責事項: 本書の著者の 1 人は、現在、安全性が重要なシステムにおける Rust の使用に関するガイドラインを作成している SAE International のタスクフォースに、ボランティアとして参加しています。

8. この本は無料ですか?

もちろんです! ペイウォールも、義務も、ゲートキーピングもありません。 本書全体は https://highassurance.rs で一般公開されています。

ただし、まだ作業中です。 長期的な目標は、基礎的なトピックについて、コミュニティのすべての人高品質なリソースを提供することです。 バランスの取れた本を作るには、時間と反復が必要です(フィードバックをお待ちしています)。

本書に価値を感じた場合は、以下の方法でこのプロジェクトを支援できます。

  • 本書の GitHub リポジトリにスターを付ける: こちらです。スターを付けることで、開発者の間でこのプロジェクトの可視性が高まります。

  • 本書全体で参照している他の書籍のいずれかを購入する: 脚注は出典を引用するために使用されます。 その出典が、私たちが愛し大切にしている技術教科書である場合、脚注には [PERSONAL FAVORITE] というタグで区別された Amazon アフィリエイトリンクが含まれます。 これらのリンクは控えめに使用されており、本当に必読だと感じている本にのみ使われます。 完全な一覧は付録にあります。 リンクを使用して購入すると、本書と、当然ながら購入した本の両方を支援することになります。

  • 物理版の順番待ちリストに登録する: 将来のある時点で、High Assurance Rust は完成し、磨き上げられ、物理的な印刷に値するものになるでしょう。 ハードコピーに興味がある場合は、通知を受け取るためにこちらから登録してください。

継続的な教育を重視する有力なセキュリティスタートアップまたはエンタープライズですか? 現在の開発者や将来開発者を目指す人々にリーチするために、本書のランディングページにロゴを掲載したいですか? もしそうであれば、Sponsor Call for Proposals (CFP) ページをご覧ください。

9. 他に知っておくべきことはありますか?

本書を実現するために、多大な努力が注がれました。 私たちが書くのを楽しんだのと同じくらい、皆さんにも読むことを楽しんでいただければ幸いです。 一緒にハックしましょう!



* == 変更される可能性があります。まだ書かれていません!本書は作業中です。