【MicroSoft Office】パスワード

ファイルのパスワード

Office製品のファイルExcel、Word、Power Pointはxmlをひとまとめにしたもので、拡張子をzipに変更して解凍するとxmlの内部を見ることが出来る。
パスワードをかけた場合の挙動を確かめる。
書き込み 読み取り 書き込み・読み取り
zipに変更できる zipに変更できない zipに変更できない
つまり、書き込みパスワードが設定されている場合でも、zip⇒解凍で対象のxmlファイルを編集することによって、書き込みすることが出来る。
読み取りパスワードが設定されている場合は通常のOffice Open XML形式ではなく、バイナリ形式になっている。

Excelの保護

Excelでは、上記以外に以下の保護が可能
  1. ブックの保護_パスワードを使用して暗号化
  2. ブックの保護_ブック構成の保護
  3. ブックの保護_現在のシートの保護
  4. ブックの保護_最終版
1の場合は、ファイルのパスワード同様にzipに変更することは出来ない。

ブックの保護_ブック構成の保護

シートの構成を制限する機能で、シートの移動、削除、追加などの不要な変更を防止することが出来る。
関連する要素は
18.2.29 workbookProtection[p.1590], CT_WorkbookProtection[p.3967, p.3962]
ワークブックのデータ保護を指定する要素。アプリケーションによっては対応しておらず、その場合は無視される。
パスワードがハッシュされてこの要素に格納されている場合は、UTF-16LEでエンコーディングされた文字列から始まる。BOMがある場合はハッシュ値の計算前に除去される。
すべての属性はoptionalである。
属性 詳細
lockRevision ワークブックの改訂をロックするフラグ(default = false)
lockStructure ワークブックの構造をロックするフラグ(default = false)
1またはtrueの場合、ワークブックの構造がロックされ、ワークシートの移動・削除・表示・非表示・名前の変更・新しいワークブックの挿入ができなくなる。
lockWindows ウィンドウのロック情報を表すフラグ(default = false)
1またはtrueの場合、ワークブックのウィンドウが固定されており、ファイルを開いたときはいつも同じサイズと位置で開かれる。
revisionsAlgorithmName revisionsHashValue属性のハッシュ値を計算するために、salt属性と入力パスワードに使用される暗号化ハッシュアルゴリズムが指定されている。
revisionsHashValue リビジョンロックを解除するために保存されているパスワードのハッシュ値が指定されている。
revisionsSaltValue ハッシュ化する際に、一方向性関数の入力に加えられるランダムなデータ
revisionsSpinCount ハッシュ関数の繰り返し回数が指定されている

ブックの保護_現在のシートの保護

指定したシートに対して、操作を制限する機能
関連する要素は
18.3.1.85 sheetProtection[p.1701]、CT_SheetProtection[p.3940,p.3926]
シートに保護が掛かっていることを表す要素。すべての属性はoptional
属性 詳細
algorithmname 暗号化ハッシュアルゴリズムが指定されている
autoFilter 1またはtrueの場合、シートにオートフィルタを指定することはできない
deleteColumns 1またはtrueの場合、列の削除ができない
deleteRows 1またはtrueの場合、行の削除ができない
formatCells 1またはtrueの場合、セルの書式設定ができない
formatColumns 1またはtrueの場合、列の書式設定ができない
formatRows 1またはtrueの場合、行の書式設定ができない
hashValue ワークシートの編集のためのパスワードのハッシュ値
insertColumns 1またはtrueの場合、列の挿入ができない
insertHyperlinks 1またはtrueの場合、ハイパーリンクの挿入ができない
insertRows 1またはtrueの場合、行の挿入ができない
objects 1またはtrueの場合、オブジェクトの編集ができない
pivotTables 1またはtrueの場合、ピボットテーブルの指定ができない
scenarios 1またはtrueの場合、シナリオの編集ができない
selectLockedCells 1またはtrueの場合、セルのロック指定ができない
selectUnlockedCells 1またはtrueの場合、セルのロック解除ができない
sheet 1またはtrueの場合、シートが保護される
sort 1またはtrueの場合、ソートができない
spinCount ハッシュ関数の繰り返し回数が指定されている

ブックの保護_最終版

最終版として設定される。
workbookパーツのrevisionPtr要素
coreパーツのcontentsStatus要素