セキュアなソフトウェアの設計と開発―脅威モデリングに基づく普遍的アプローチ [単行本]
    • セキュアなソフトウェアの設計と開発―脅威モデリングに基づく普遍的アプローチ [単行本]

    • ¥4,180126 ゴールドポイント(3%還元)
    • 在庫あり2024年12月13日金曜日までヨドバシエクストリームサービス便(無料)がお届け
100000009003730412

セキュアなソフトウェアの設計と開発―脅威モデリングに基づく普遍的アプローチ [単行本]

価格:¥4,180(税込)
ゴールドポイント:126 ゴールドポイント(3%還元)(¥126相当)
フォーマット:
お届け日:在庫あり今すぐのご注文で、2024年12月13日金曜日までヨドバシエクストリームサービス便(無料)がお届けします。届け先変更]詳しくはこちら
出版社:秀和システム
販売開始日: 2023/08/19
お取り扱い: のお取り扱い商品です。
ご確認事項:返品不可

カテゴリランキング

店舗受け取りが可能です
マルチメディアAkibaマルチメディア梅田マルチメディア博多にて24時間営業時間外でもお受け取りいただけるようになりました

セキュアなソフトウェアの設計と開発―脅威モデリングに基づく普遍的アプローチ の 商品概要

  • 要旨(「BOOK」データベースより)

    ソフトウェア開発に携わる全てのエンジニアに贈る包括的セキュリティ実践ガイド。Microsoftで脅威分析モデル「STRIDE」を開発した著者に学ぶ、ソフトウェアの構想からコーティングに至るまで、あらゆるフェーズで適用可能なセキュリティの極意。
  • 目次

    序文
    著者前書き
    謝辞
    日本語版のための前書き
    監訳者前書き
    訳者前書き
    イントロダクション

    Part 1 コンセプト
     Chapter 1 基礎
      1.1 セキュリティを理解する
      1.2 信頼
       1.2.1 信頼を感じる
       1.2.2 ビットを見ることはできない
       1.2.3 能力と不完全さ
       1.2.4 信頼とはスペクトラムである
       1.2.5 信頼の決断
       1.2.6 暗黙のうちに信頼されている部品(コンポーネント)
       1.2.7 信頼されること
      1.3 古典的原則
       1.3.1 情報セキュリティのC-I-A
       1.3.2 ゴールドスタンダード
       1.3.3 プライバシー
     Chapter 2 脅威
      2.1 敵対的な視点
      2.2 4つの質問
      2.3 脅威モデリング
       2.3.1 モデルから取り組む
       2.3.2 資産の把握
       2.3.3 アタックサーフェスを特定する
       2.3.4 信頼の境界を特定する
       2.3.5 脅威を特定する
       2.3.6 脅威を軽減する
      2.4 プライバシーへの配慮
      2.5 どこでも脅威をモデリングする
     Chapter 3 軽減策
      3.1 脅威への対応
      3.2 構造的な軽減策について
       3.2.1 アタックサーフェスの最小化
       3.2.2 脆弱性が入り込む時間幅を狭める
       3.2.3 データの露出を最小限に抑える
      3.3 アクセスポリシーとアクセス制御
      3.4 インターフェイス
      3.5 通信
      3.6 ストレージ
     Chapter 4 パターン
      4.1 設計の特徴
       4.1.1 無駄のない設計
       4.1.2 透明な設計
      4.2 露出の最小化
       4.2.1 最小権限
       4.2.2 最小情報
       4.2.3 セキュア・バイ・デフォルト
       4.2.4 ブロックリストより許可リスト
       4.2.5 予測可能性を避ける
       4.2.6 セキュアに失敗する
      4.3 強い強制力
       4.3.1 完全な仲介
       4.3.2 共通メカニズムの最小化
      4.4 冗長性
       4.4.1 多層防御
       4.4.2 権限の分離
      4.5 信頼と責任
       4.5.1 信頼へのためらい
       4.5.2 セキュリティに責任を負う
      4.6 アンチパターン
       4.6.1 混乱した代理人
       4.6.2 信頼の逆流
       4.6.3 サードパーティのフック
       4.6.4 パッチ不可能なコンポーネント
     Chapter 5 暗号技術
      5.1 暗号化ツール
      5.2 乱数
       5.2.1 疑似乱数
       5.2.2 暗号化されたセキュアな疑似乱数
      5.3 メッセージ認証コード
       5.3.1 MACを使用して改竄を防ぐ
       5.3.2 リプレイ攻撃
       5.3.3 セキュアなMAC通信
      5.4 対称暗号
       5.4.1 ワンタイムパッド
       5.4.2 AES(Advanced Encryption Standard )
       5.4.3 対称暗号を使用する
      5.5 非対称暗号化
       5.5.1 RSA暗号システム
      5.6 デジタル署名
      5.7 デジタル証明書
      5.8 鍵共有
      5.9 暗号化の使用

    Part 2 設計
     Chapter 6 セキュアな設計
      6.1 設計におけるセキュリティの統合
       6.1.1 設計の前提条件を明示する
       6.1.2 スコープの定義
       6.1.3 セキュリティ要件の設定
       6.1.4 脅威モデリング
      6.2 軽減策の構築
       6.2.1 インターフェイスの設計
       6.2.2 データハンドリングを設計する
      6.3 プライバシーを設計に取り込む
      6.4 ソフトウェアのライフサイクル全体を見据えた計画
      6.5 トレードオフの判断
      6.6 設計の簡略化
     Chapter 7 セキュリティ設計レビュー
      7.1 SDRのロジスティクス
       7.1.1 なぜSDRを実施するのか?
       7.1.2 SDRを実施するタイミング
       7.1.3 ドキュメンテーションは必須
      7.2 SDRのプロセス
       7.2.1 ①調査
       7.2.2 ②問い合わせ
       7.2.3 ③特定
       7.2.4 ④連携
       7.2.5 ⑤書く
       7.2.6 ⑥フォローアップ
      7.3 設計のセキュリティを評価する
       7.3.1 4つの質問をガイダンスとして使用する
       7.3.2 どこを掘るのか
       7.3.3 プライバシーレビュー
       7.3.4 更新のレビュー
      7.4 意見の相違を管理する
       7.4.1 機転を利かせたコミュニケーション
       7.4.2 ケーススタディ:難解なレビュー
       7.4.3 不一致をエスカレーションする
      7.5 練習、練習、練習

    Part 3 実装
     Chapter 8 セキュアなプログラミング
      8.1 チャレンジ
       8.1.1 悪意のある影響力
       8.1.2 脆弱性はバグである
       8.1.3 脆弱性の連鎖
       8.1.4 バグとエントロピー
       8.1.5 警戒
      8.2 ケーススタディ:GotoFail
       8.2.1 1行の脆弱性
       8.2.2 フットガンに注意
       8.2.3 GotoFailからの教訓
      8.3 コーディングにおける脆弱性
       8.3.1 アトミック性
       8.3.2 タイミング攻撃
       8.3.3 シリアライゼーション
      8.4 いつもの容疑者
     Chapter 9 低レベルコーディングの欠陥
      9.1 算術演算の脆弱性
      9.1.1 固定長整数の脆弱性
      9.1.2 浮動小数点精度の脆弱性
      9.1.3 例:浮動小数点数のアンダーフロー
      9.1.4 例:整数のオーバーフロー
      9.1.5 安全な算術
      9.2 メモリアクセスの脆弱性
       9.2.1 メモリ管理
       9.2.2 バッファオーバーフロー
       9.2.3 例:メモリ割り当ての脆弱性
       9.2.4 ケーススタディ:ハートブリード
     Chapter 10 信頼できない入力
      10.1 入力検証
       10.1.1 有効性の判断
       10.1.2 検証基準
       10.1.3 無効な入力を拒否する
       10.1.4 無効な入力を修正する
      10.2 文字列の脆弱性
       10.2.1 長さの問題
       10.2.2 Unicodeの問題
      10.3 インジェクションの脆弱性
       10.3.1 SQLインジェクション
       10.3.2 パストラバーサル
       10.3.3 正規表現
       10.3.4 XMLのリスク
      10.4 インジェクション攻撃の軽減策
     Chapter 11 Webのセキュリティ
      11.1 フレームワークの上に構築する
      11.2 Webのセキュリティモデル
       11.2.1 HTTPプロトコル
       11.2.2 電子証明書とHTTPS
       11.2.3 同一生成元ポリシー
       11.2.4 Cookieについて
      11.3 一般的なWebの脆弱性
       11.3.1 クロスサイトスクリプティング(XSS)
       11.3.2 クロスサイトリクエストフォージェリ(CSRF)
      11.4 その他の脆弱性と軽減策について
     Chapter 12 セキュリティテスト
      12.1 セキュリティテストとは何か?
      12.2 GotoFail脆弱性のセキュリティテスト
       12.2.1 機能テスト
       12.2.2 脆弱性を利用した機能テスト
       12.2.3 セキュリティテストケース
       12.2.4 セキュリティテストの限界
      12.3 セキュリティテストケースの作成
       12.3.1 入力検証のテスト
       12.3.2 XSS脆弱性のテスト
      12.4 ファズテスト
      12.5 セキュリティ回帰テスト
      12.6 可用性テスト
       12.6.1 リソース消費量
       12.6.2 閾値テスト
       12.6.3 分散型Denial of Service(DoS)攻撃
      12.7 セキュリティテストのベストプラクティス
       12.7.1 テスト駆動開発
       12.7.2 統合テストの活用
       12.7.3 セキュリティテストのキャッチアップ
    Chapter 13 セキュアな開発のためのベストプラクティス
      13.1 コードの品質
       13.1.1 コード衛生
       13.1.2 例外処理とエラー処理
       13.1.3 セキュリティのドキュメント化
       13.1.4 セキュリティコードレビュー
      13.2 依存関係
       13.2.1 セキュアなコンポーネントを選択する
       13.2.2 インターフェイスの安全性
       13.2.3 セキュリティ機能の車輪の再発明をしない
       13.2.4 レガシーなセキュリティ機能との闘い
      13.3 脆弱性トリアージ
       13.3.1 DREAD評価
       13.3.2 作業用エクスプロイトの作成
       13.3.3 トリアージの決定
      13.4 セキュアな開発環境の維持
       13.4.1 開発と本番を切り離す
       13.4.2 開発ツールをセキュアにする
       13.4.3 製品のリリース

    後書き
     後書き
      A.1 行動喚起
       A.1.1 セキュリティはみんなの仕事
       A.1.2 セキュリティを強化する
      A.2 将来のセキュリティ
       A.2.1 ソフトウェアの品質の向上
       A.2.2 複雑さの管理
       A.2.3 透明性の最小化から最大化へ
       A.2.4 ソフトウェアの認証、信頼、責任を向上させる
      A.3 ラストワンマイルを届ける
      A.4 結論
     訳者後書き

    付録
     Appendix A サンプル設計書
     Appendix B 用語集
     Appendix C 課題
     Appendix D チートシート
      Chapter 1
      Chapter 2
      Chapter 4
      Chapter 7
      Chapter 13

    索引
    プロフィール
  • 内容紹介

    本書は、セキュリティの脅威モデリングを行う際に広く使われている「STRIDE脅威モデル」を開発したローレン・コーンフェルダー氏の20年以上にわたる経験を集約し、ソフトウェアのセキュリティを向上させるための普遍的な手法をまとめたものです。設計やプログラミングからマーケティングまで、ソフトウェア製品に関わる全ての人を対象にしていますが、ソフトウェア設計にセキュリティを早期に組み込むこと、そのプロセスにチーム全体を巻き込むことを大きなテーマとしています。
    STRIDEは、「なりすまし(Spoofing)」「改竄(Tampering)」「否認(Repudiation)」「情報漏洩(Information disclosure)」「DoS(Denial of service)」「権限昇格(Elevation of privilege)」の頭文字を取ったもので、セキュリティ上の脅威を分類するために、1990年代後半にMicrosoftでコーンフェルダー氏らが開発しました。このSTRIDEによってセキュリティに対する脅威を分類し、どのような対策が必要なのかを分析する「脅威モデリング」を行い、セキュリティ対策を行っていきます。本書は、これをベースにして、「コンセプト」「設計」「実装」という3つのパートに分けて書かれています。
    第1部では、情報セキュリティとプライバシーの基礎、脅威モデリングの概念、脅威から防御するための軽減策、セキュリティ設計パターン、暗号技術という、本書の核となる概念を説明しています。これらは、以降の解説のベースとなります。
    第2部では、セキュリティを考慮したソフトウェア設計とレビューのプロセスを取り上げます。ここが本書の最もユニークかつ重要なパートで、コーンフェルダー氏の経験と知見が詰まっています。
    第3部では、実装段階でのセキュリティを取り上げ、セキュリティの課題と実際の脆弱性がコード上でどのように見えるか、コンピュータ演算やメモリ管理といった低レベルの層におけるコーディングの欠陥、入力やWebなどでの長年にわたってよく知られている問題、さらに、あまり活用されることがないセキュリティテストなどを実践的に解説しています。
    本書で繰り返し述べているように、ソフトウェアのセキュリティは、専門家に任せるべき仕事えはなく、関わる全ての人が意識し、取り組むべき仕事です。本書は、そのための実践的で汎用的なガイドであり、各段階においてセキュリティに関する「正しい選択」をするための助けになるはずです。

    図書館選書
    Microsoftでセキュリティの「STRIDE脅威分類法」を開発した著者による、ソフトウェア開発に携わる全てのエンジニアに贈る包括的セキュリティ実践ガイド。
  • 著者紹介(「BOOK著者紹介情報」より)(本データはこの書籍が刊行された当時に掲載されていたものです)

    コンフェルダー,ローレン(コンフェルダー,ローレン/Kohnfelder,Loren)
    50年以上前にプログラミングを始める。マサチューセッツ工科大学(MIT)在学中に発表した論文『Towards a Practical Public‐Key Cryptosystem』(1978年)では、デジタル証明書と公開鍵基盤(PKI)の基礎について初めて記述した。ソフトウェアのキャリアは幅広く、パンチカード、ディスクコントローラのドライバ、リンカー・ローダー、半導体研究所での機器制御ソフトウェアなど、多種多様なプログラミングの仕事に従事してきた

    小出 洋(コイデ ヒロシ)
    九州大学情報基盤研究開発センター教授。2017年4月より現職。情報システムに関連するサイバーセキュリティの教育と研究を行っている。プログラミング、並列分散計算に興味を持つ。社会人向けサイバーセキュリティ教育プログラム「SECKUN」を主導している。SECCON実行委員。福岡県警・佐賀県警のサイバー犯罪テクニカルアドバイザも務める

    秋 勇紀(アキ ユウキ)
    LINE株式会社ディベロッパーエクスペリエンス開発チームソフトウェアエンジニア。2019年3月に九州工業大学情報工学部卒業後、LINE Fukuoka株式会社入社、2022年LINE株式会社へ転籍。専門は、iOSアプリケーション開発、ビルド環境の改善といったモバイル関連のDevOpsなど。さまざまなオープンソースソフトウェアへのコントリビュート、国内外のカンファレンス登壇を行う

    高田 新山(タカタ シンザン)
    LINE Fukuoka株式会社App Development室iOSエンジニア。福岡で働くiOSエンジニア。異業種からエンジニアへと転職後、受託開発企業、ベンチャー企業などを経て、2020年4月に東京から福岡へ移住と同時にLINE Fukuoka株式会社に入社。Java、PHP、C#、JavaScriptなどを用いたフロントエンド、バックエンドの開発経験もあり。国内のカンファレンスへの登壇やSwiftに関するさまざまな情報発信を行っている
  • 著者について

    ローレン・コンフェルダー (ローレンコンフェルダー)
    50年以上前にプログラミングを始める。マサチューセッツ工科大学(MIT)在学中に発表した論文『Towards a Practical Public-Key Cryptosystem』(1978年)では、デジタル証明書と公開鍵基盤(PKI)の基礎について初めて記述した。ソフトウェアのキャリアは幅広く、パンチカード、ディスクコントローラのドライバ、リンカー・ローダー、半導体研究所での機器制御ソフトウェアなど、多種多様なプログラミングの仕事に従事してきた。また、日本駐在時には、株式会社タイトーで海外技術事務所の技術調整とビデオゲームのコピー防止システムを開発し、キヤノン株式会社で英文ワープロとNeXTSTEP日本語対応に携わる。その後、MicrosoftのInternet Explorerチームでセキュリティの仕事に戻り、セキュリティにおけるSTRIDE脅威分類法をプラエリット・ガルグと共同開発した。直近では、Googleでセキュリティチームのソフトウェアエンジニアとして、その後、プライバシーチームの創設メンバーとして、大規模な商用システムのセキュリティ設計レビューを100件以上行った。

    秋 勇紀 (アキユウキ)
    LINE株式会社 ディベロッパーエクスペリエンス開発チーム ソフトウェアエンジニア
    2019年3月に九州工業大学情報工学部卒業後、LINE Fukuoka株式会社入社、2022年LINE株式会社へ転籍。専門は、iOSアプリケーション開発、ビルド環境の改善といったモバイル関連のDevOpsなど。さまざまなオープンソースソフトウェアへのコントリビュート、国内外のカンファレンス登壇を行う。著作として、高田新山氏との共訳『Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考』(Tom Long 著/秀和システム 刊)がある。

    高田 新山 (タカタシンザン)
    LINE Fukuoka株式会社 App Development室 iOSエンジニア
    福岡で働くiOSエンジニア。異業種からエンジニアへと転職後、受託開発企業、ベンチャー企業などを経て、2020年4月に東京から福岡へ移住と同時にLINE Fukuoka株式会社に入社。Java、PHP、C#、JavaScriptなどを用いたフロントエンド、バックエンドの開発経験もあり。国内のカンファレンスへの登壇やSwiftに関するさまざまな情報発信を行っている。

    小出 洋 (コイデヒロシ)
    九州大学情報基盤研究開発センター教授
    2017年4月より現職。情報システムに関連するサイバーセキュリティの教育と研究を行っている。プログラミング、並列分散計算に興味を持つ。社会人向けサイバーセキュリティ教育プログラム「SECKUN」を主導している。SECCON実行委員。福岡県警・佐賀県警のサイバー犯罪テクニカルアドバイザも務める。

セキュアなソフトウェアの設計と開発―脅威モデリングに基づく普遍的アプローチ の商品スペック

商品仕様
出版社名:秀和システム
著者名:ローレン コンフェルダー(著)/小出 洋(監訳)/秋 勇紀(訳)/高田 新山(訳)
発行年月日:2023/09/01
ISBN-10:4798069752
ISBN-13:9784798069753
判型:B5
発売社名:秀和システム
対象:専門
発行形態:単行本
内容:電子通信
言語:日本語
ページ数:432ページ
縦:24cm
横:18cm
厚さ:3cm
その他: 原書名: Designing Secure Software:A Guide for Developers〈Kohnfelder,Loren〉
他の秀和システムの書籍を探す

    秀和システム セキュアなソフトウェアの設計と開発―脅威モデリングに基づく普遍的アプローチ [単行本] に関するレビューとQ&A

    商品に関するご意見やご感想、購入者への質問をお待ちしています!