Implementation Representation

Implementation Representation
TRUECRYPT-SPM030-IMP
Central department of security and information systems
Implementation Representation
Date of Creation
: October 22, 2007
Project name
: TRUECRYPT
Reference
: SPM030-IMP
Version
: 2.00
Classification
: public
Status
: Issued
Number of Pages
: 16 (including 2 headers)
Comments
: none
TRUECRYPT
public
Page 1/16
Implementation Representation
TRUECRYPT-SPM030-IMP
序文
特に教育の現場での、本書の複製、および/または二次利用は、次の 3 つの条件を満たすことによって、国防総局情報
セキュリティ中央局(SGDN/DCSSI)によって許可されている。
−本書の配布を無償とすること。
−本書を複製する場合には、完全性に注意を払うこと(原書に忠実であること):修正、改ざんは認めない。
−本書の複製版には、例えば「本書は、国防総局情報セキュリティ中央局(SGDN/DCSSI)
(http://www.ssi.qouv.fr/en)によって策定されたものである。」など、出自を明らかにする文言を含めること。
TRUECRYPT
public
Page 2/16
Implementation Representation
TRUECRYPT-SPM030-IMP
目次
1. 本書の目的 ........................................................................................................... 5
1.1 コモン・クライテリア .................................................................................................... 5
1.2 参照文献 ............................................................................................................. 5
2. ソースコードの構成..................................................................................................... 6
3. TSF の生成 ........................................................................................................... 7
4. モジュールと実装表現の対応......................................................................................... 8
付録 A.
略語と頭字語 .............................................................................................. 12
A.1.
略語と頭字語 ......................................................................................................
付録 B.
参照文献................................................................................................... 13
付録 C.
コモン・クライテリアに関する情報 .......................................................................... 14
C.1.
序章 ............................................................................................................. 14
C.2.
ADV_IMP.1 コンポーネントの目的 ........................................................................ 14
C.3.
メソドロジ ........................................................................................................ 15
TRUECRYPT
public
Page 3/16
Implementation Representation
TRUECRYPT-SPM030-IMP
用語
CC:
コモン・クライテリア
CEM:
情報技術セキュリティ評価のための共通方法
SFR:
セキュリティ機能要件
SFR 実施:
最低でも 1 つの SFR のエレメントを実装するメカニズムを提供するか、SFR を実装する
エレメントを直接サポートする。
SFR 支援:
SFR 実施のエレメントによるが、SFR を実装してはいるが、直接的な役割を果たしてい
ない。
SFR 非干渉:
TOE:
SFR を実装していない。
評価対象。
評価対象とは、評価の対象となる製品、またはシステムの部分を指す。
TSF:
TOE セキュリティ機能
TSFI:
TSF インタフェース
TRUECRYPT
public
Page 4/16
Implementation Representation
TRUECRYPT-SPM030-IMP
1.
本書の目的
本書では TrueCrypt の生成に要求される情報、およびその設計文書で識別されているモジュールとソースコード
間の対応を提供する。
本書には、コモン・クライテリアで定められている ADV_IMP コンポーネントの要件に対応することができる情報が含
まれている。
1.1. コモン・クライテリア
実装表現は、TOE が自身のアーキテクチャに適合していることを示し、脆弱性分析(実装上の脆弱性の検出)の
ために他のファミリにより使用される。
実装表現により、TSF の内部的な機能が明示される必要がある。このような実装表現の例には、ソフトウェアやパ
ッケージのソースコードがある。
1.2. 参照文献
本書は、次のような文献をベースに構成されている。
− TrueCrypt 4.2a ソースコード[SRC_CODE]
− セキュリティ・ターゲット[ST]
− TOE 機能仕様[ADV_FSP]
− ライフサイクル・サポート[ALC]
− TOE 設計[ADV_TDS]、および
− TrueCrypt の暗号化仕様[CRYPTO_SPEC]。
TRUECRYPT
public
Page 5/16
Implementation Representation
TRUECRYPT-SPM030-IMP
2.
ソースコードの構成
TrueCrypt のソースコード・ファイルは、複数のディレクトリに分散している。
− Crypto: このディレクトリには暗号化、およびハッシュアルゴリズムのソースコードが含まれている。個々のアル
ゴリズム毎にソース・ファイルとヘッダ・ファイルがあり、あるアルゴリズムのコードが別のアルゴリズムのコードとミック
スされることはない。従って、アルゴリズムのソースコードが容易に判別できる。
− Common: このディレクトリには TrueCrypt の実行ファイル全てに共通するソースコードが含まれている。
以下のファイルがある。
+ Crypto.c: このファイルには、暗号化機能を管理するコード(一般的な暗号化/復号機能、一般的
な暗号アルゴリズムの初期化機能)が含まれている。
+ Format.c: このファイルには、暗号化ディスクのフォーマッティングを管理するコードが含まれている。
+ Pkcs5.c: このファイルには、PKCS#5v2 の PBKDF2 関数、および HMAC 関数を実行するコードが
含まれている。
+ Random.c: このファイルには、TrueCrypt の乱数生成器を実行するコードが含まれている。
+ Volume.c: このファイルには、(暗号化を含む)ヘッダを生成し、暗号化ヘッダを読み出す機能を実行
するコードが含まれている。
− Driver: このディレクトリには TrueCrypt ドライバのソースコードが含まれている。
− Format: このディレクトリには「TrueCrypt.Format.exe」実行ファイルのソースコードが含まれている。こ
の実行ファイルによって、暗号化ディスクを作成することができる。
− Mount: このディレクトリには「TrueCrypt.exe」実行ファイルのソースコードが含まれている。この実行ファ
イルが、TrueCrypt のメイン・インタフェースである。
− Setup: このディレクトリには「TrueCrypt Setup.exe」実行ファイルのソースコードが含まれている。
TRUECRYPT
public
Page 6/16
Implementation Representation
TRUECRYPT-SPM030-IMP
3. TSF の生成
TSF を生成するには、はじめに TrueCrypt4.2a のソースコードのアーカイブを取り出す必要がある。次にそのアー
カイブを復元する。
復元されたフォルダには、Visual Studio ソリューションに対応している「TrueCrypt.sln」ファイルが含まれている。
このソリューションは、以下の 5 つのプロジェクトで構成されている。
− Crypto
− Driver
− Format
− Mount
− Setup
Windows で TOE を生成するのに必要なソフトウェアは、以下のとおりである。
− Microsoft Visual Studio .NET 2003(バージョン 7.1)、もしくはそれと互換性があるもの、および
− Windows 2003 SP1 Driver Development Kit (build 3790.1830)または互換性があるもの。
生成手順:
1. 「Driver¥MAKEFILE」を編集し、「Driver Development Kit」が格納されているフォルダをポイントするよ
う「DDK」変数を修正する。
# DDK をインストールするためのパスを指定する。
DDK = C:¥SDK¥WINDDK¥3790.1830
2. Microsoft Visual Studio で「TrueCrypt.sln」ソリューションを開く。
3.ソリューションの設定で、「All」が選択されていることを確認する。( Tool メニュー → Configuration
manager…)
4.ソリューションの生成:メニューから「Generate」を選択し、「Generate the solution」をクリックする。
5.生成が正常に終了すれば、「Release」フォルダの中に TrueCrypt のアプリケーションが作成される。
TRUECRYPT
public
Page 7/16
Implementation Representation
TRUECRYPT-SPM030-IMP
4. モジュールと実装表現の対応
TOE 設計(ADV_TDS)は、モジュールと実装との対応分析(第 4.2 章)を提供している。モジュールと実装表現
についてまとめたものが次の表である。
サブシステムの名称
モジュールの名称
対応する C ファイル
対応する関数
アプリケーション管理
開始
Mount.c
WINMAIN
設定
Mount.c
PreferencesDlogProc
テスト
Benchmark
Dlgcode.c
Performbenchmark
Test des vecteurs
Dlgcode.c
CipherTestDialogProc
Test.c
AutoTestAlgorithms
終了
Mount.c
Localcleanup
パスワード処理
Keyfiles.c
KeyFilesApply
ヘッダの処理
KeyFileProcess
ヘッダ鍵の導出
Pkcs5.c
derive_key_sha1
derive_key_ripemd160
derive_key_whirlpool
derive_u_sha1
derive_u_ripemd160
derive_u_whirlpool
hmac_sha1
hmac_ripemd160
hmac_whirlpool
暗号化ヘッダの作成
Volumes.c
VolumeWriteHeader
暗号化ヘッダの読み出し
Volumes.c
VolumeReadHeader
フォーマッティング
Format.c
FormatVolume
ディスク・フォーマッティング
FormatNoFs
FormatNtfs
WriteSector
Fat.c
FormatFat
Ntdriver.c
TCCreateDeviceObject
マウンティング管理
リンクの作成
TRUECRYPT
public
Page 8/16
Implementation Representation
TRUECRYPT-SPM030-IMP
サブシステムの名称
モジュールの名称
対応する C ファイル
対応する関数
暗号化ディスクのリスト管理
リストの更新
Dglcode.c
GetMountList
リンクの解消
Ntdriver.c
TCDeleteDeviceObject
データの読み出し
Crypyo.c
DecryptSectors
データの書き込み
Crypto.c
EncryptSectors
情報の表示
Mount.c
VolumePropertiesDlgProc
RNG
Random.c
Randinit
アンマウンティング管理
暗号化コンテンツの削除
データ処理
暗号化ディスクの情報の表示
暗号化の操作
Randfree
RandgetBytes
SlowPoll
FastPoll
RandaddBuff
Randmix
RandaddInt32
RandAddInt
RandaddByte
RandpeekBytes
暗号化の操作
Sha1.c
sha1_begin
sha1_hash
sha1_end
sha1_compile
Rmd160.c
RMD160Init
RMD160Update
RMD160Final
RMD160Transform
Whirlpool.c
WHIRLPOOL_init
WHIRLPOOL_add
WHIRLPOOL_finalize
processBuffer
Tcdefs.h
TRUECRYPT
public
burn
Page 9/16
Implementation Representation
TRUECRYPT-SPM030-IMP
Crypto.c
DetectWeakSecondaryKey
crypto_open
EAInit
CipherInit
EAInitMode
EncryptBuffer
EnccryptBufferLRW64
EnccryptBufferLRW128
EncryptBufferCBC
EncipherBlock
crypto_loadkey
crypto_close
DecryptBuffer
DecryptBufferLRW64
DecryptBufferLRW128
DecyrptbufferCBC
DecipherBlock
InitSectorIVAndWhitening
Crc.c
crc32
Bf_skey.c
BF_set_key
Bf_enc.c
BF_encrypt
BF_encrypt
BF_decrypt
Aeskey.c
aes_encrypt_key
aes_encrypt_key128
aes_encrypt_key192
aes_encrypt_key256
aes_decrypt_key
aes_decrypt_key128
aes_decrypt_key192
aes_decrypt_key256
Set_key.c
des_key_sched
des_set_key
des_is_weak_key
C_skey.c
CAST_set_key
Serpent.c
serpent_set_key
serpent_encrypt
TRUECRYPT
public
Page 10/16
Implementation Representation
TRUECRYPT-SPM030-IMP
serpent_decrypt
Twofish.c
twofish_set_key
twofish_encrypt
twofish_decrypt
GfMul.c
Gf64TabInit
Gf128Tab64Init
Bf_ecb.c
BF_ecb_le_encrypt
Aescrypt.c
aes_encrypt
aes_decrypt
Des_enc.c
des_encrypt
des_encrypt3
des_decrypt3
des_encrypt2
C_ecb.c
CAST_ecb_encrypt
C.enc.c
CAST_encrypt
CAST_decrypt
Ecb3_enc.c
des_ecb3_encrypt
Dlgcode.c
KeyfileGeneratorDlgProc
鍵ファイルの生成
鍵ファイルの生成
TRUECRYPT
public
Page 11/16
Implementation Representation
TRUECRYPT-SPM030-IMP
付録 A.
略語と頭字語
A.1. 略語と頭字語
CC:
コモン・クライテリア
CEM:
情報技術セキュリティ評価のための共通方法
SFR:
セキュリティ機能要件
ST:
セキュリティ・ターゲット
セキュリティ・ターゲットには、開発者の視点で捉えた特定の製品のセキュリティ要件が記
載される。セキュリティ機能の仕様(要約仕様)を含み、1 つ以上のプロテクション・プロフ
ァイル(PP)に定義されたセキュリティ要件を含むこともある。
TOE:
評価対象。TOE は、評価対象となる製品、またはシステムの一部である。
TSF:
TOE セキュリティ機能
TSFI:
TSF インタフェース
TRUECRYPT
public
Page 12/16
Implementation Representation
TRUECRYPT-SPM030-IMP
B. 参照文献
[CC1]
Common Criteria for Information Technology Security Evaluation, Part 1:
Introduction and General Model. Version 3.1, Revision 1, September 2006.
CCIMB-2006-09-001.
[CC2]
Common Criteria for Information Technology Security Evaluation, Part 2:
Security Functional Requirements. Version 3.1, Revision 1, September
2006. CCIMB-2006-09-002.
[CC3]
Common Criteria for Information Technology Security Evaluation, Part 3:
Security Assurance Requirements. Version 3.1, Revision 1, September
2006. CCIMB-2006-09-003.
[CEM]
Common Criteria for Information Technology Security Evaluation,
Evaluatiaon Methodology. Version 3.1, Revision 1, September 2006.
CCIMB-2006-09-004.
[CRYPTO]
Méchanismes de cryptographie: règles et recommendations concernant le
choix et la demensionment des méchanismes cryptographiques de niveau
de robustnesse standard.
(Cryptographic mechanisms: rules and
recommendations concerning the choice and sizing of cryptographic
mechanisms of standard robustness) Version 1.02, 19 November 2004.
DCSSI.
[ST]
Cible de Sécurité TrueCrypt (TrueCrypt Security Target), Version 2.00,
October 22nd 2007, SPM030-ST-2.00.
[ALC]
Information for Evaluation – ALC class (Life-cycle support), Version 2.00,
October 22nd 2007, SPM030-ALC-2.00.
[ADV_TDS]
TOE elementary architecture,
SPM030-TDS-2.00.
[ADV_FSP]
TOE functional specifications, Version 2.00, October 22nd 2007,
SPM030-FSP-2.00.
[CRYPTO_SPEC] Cryptographic specifications,
SPM030-SPEC.
[SRC_CODE]
TRUECRYPT
Version
Version
2.00,
2.00,
October
October
22nd
22nd
2007,
2007,
TrueCrypt 4.2a source code
public
Page 13/16
Implementation Representation
TRUECRYPT-SPM030-IMP
付録 C.
コモン・クライテリアに関する情報
C.1. 序章
本書は、ADV クラスの ADV_IMP ファミリに属す ADV_IMP.1 コンポーネントの要件に適合している。本書では、
TRUECRYPT ソフトウェアの「実装表現」について説明する。
ADV 保証クラスでは、コモン・クライテリアの評価内容に基づき開発された TOE に要求される情報を提供している。
この情報は、脆弱性の分析やテストの実施に使用される。
このクラスは、異なるレベルで抽象化された TSF の構造と表現に応じ 6 つのファミリに分類されている。
− SFR の設計と実装に関する要件が含まれるファミリは、次の 3 つである。
+ ADV_FSP(機能仕様)
+ ADV_TDS
+ ADV_IMP
− ドメイン分離、TSF 自己保護、セキュリティ機能の迂回防止に対応するシステム・アーキテクチャの説明に関
する要件が含まれるファミリは、次の 1 つである。
+ ADV_ARC
− セキュリティ・ポリシーのモデル記述、およびポリシー・モデルと機能仕様の対応の要件は、次のファミリに含ま
れている。
+ ADV_SPM
− モジュラリティの観点、レイヤ化し複雑さを最小限に抑えるなど、内部的な TSF 構造の説明に関する要件
は、次のファミリに含まれている。
+ ADV_INT
これらファミリのコンポーネントは、次のような 2 つの属性を立証することを目的としている。
− 第一に、TOE が正常に機能し、その機能仕様に適合していること。これを立証するための要件には、
ADV_FSP、ADV_SPM、ADV_TDS、および ADV_IMP ファミリが対応している。
− 次に、TOE のセキュリティ機能が変更されたり、破壊されるようなことがないことである。これを立証するための
要件には、ADV_ARC、および ADV_INT ファミリが対応している。
C.2. ADV_IMP.1 コンポーネントの目的
実装表現は、TOE が自身のアーキテクチャに適合していることを示し、脆弱性分析の基礎(実装上の脆弱性の
探索)を提供するために、他のファミリによって使用される。
TRUECRYPT
public
Page 14/16
Implementation Representation
TRUECRYPT-SPM030-IMP
実装表現により、TSF の内部的な仕組みが把握できなければならない。このような実装表現の例には、ソフトウェ
アやパッケージのソースコードがある。
C.3. メソドロジ
実装表現は、次のような要件を満たしていなければならない。
− 設計に関する決定をせずに生成できる詳述さで TSF を定義すること。
− 開発チームが使用する形式になっていること。
TOE 設計の記述と実装表現サンプルとの間で対応が取れてなければならない。
C.3.1. ADV_IMP.1 コンポーネントの要件
開発者のタスク:
CC パート 3 対応エレメント
ADV_IMP.1.1.D
ADV_IMP.1.2.D
説明
開発者は、TSF 全体の実装表現を提供しなければならない。
開発者は、TOE 設計記述と実装表現のサンプルの間のマッピングを提供しなけ
ればならない。
コンテンツと証明の表示:
CC パート 3 対応エレメント
ADV_IMP.1.1.C
ADV_IMP.1.2.C
ADV_IMP.1.3.C
説明
実装表現は、それ以上の設計上の決定を必要とせずに、TSF を生成できるよう
な詳細レベルまで TSF を定義しなければならない。
実装表現の形式は、開発要員が使用する形式でなければならない。
TOE 設計記述と実装表現のサンプルの間のマッピングは、両者の対応を実証し
なければならない。
C.3.2. 基本的な CEM のタスク
CEM(評価手法)には、評価者の基本的なタスクが記述されている。これらのタスクを正常に完了するには、評価
者は、さまざまな評価関連文書に基づき評価を実施しなければならない。
要求される証拠
− 実装表現、
− (ALC_TAT の要件に基づいた)開発ツール文書[ALC]、
− TOE 設計[ADV_TDS]。
以下の表は、基本的な CEM のタスク毎に開発者より提供された証拠資料をまとめたものである。
TRUECRYPT
public
Page 15/16
Implementation Representation
TRUECRYPT-SPM030-IMP
CC パート 3 対応
エレメント
ADV_IMP.1.1.C
CEM の
ワーク・ユニット
説明
開発者の対応
実装表現は、それ以上の設計上の決定を必要とせずに、TSF を生成できるような詳細レベルまで TSF を定
義しなければならない。
ADV_IMP.1-1
評価者は、実装表現が、それ以上の設計上の決定を必
本書の第 3 章「TSF の
要とせずに、TSF を生成できるような詳細レベルまで TSF
生成」」を参照。
を定義していることをチェックしなければならない。
ADV_IMP.1.2.C
実装表現の形式は、開発要員が使用する形式でなければならない。
ADV_IMP.1-2
評価者は、実装表現の形式が、開発要員が使用する形
開発には C(言語)が使
式であることをチェックしなければならない。
用された。
使用された環境は、MS
Visual Studio である。
ADV_IMP.1.3.C
TOE 設計記述と実装表現のサンプルの間のマッピングは、両者の対応を実証しなければならない。
ADV_IMP.1-3
評価者は、正確であることを決定するために、TOE 設計
「ADV_TDS」の第 4.2
記述と実装表現のサンプルの間のマッピングを検査しなけ
章、および本書第 3 章の
ればならない。
実装表現についてまとめ
た表を参照。
TRUECRYPT
public
Page 16/16