Office 2013 Preview の Excel ファイルの暗号化検証


◆Excel ファイルの暗号化について

Excel 2013 でファイルを保存する際、保存ダイアログの[ツール(T)]から[全般オプション(G)]を選択すると、読み取りパスワードと書き込みパスワードを入力する画面が表示されます。読み取りパスワードを設定するとファイルが暗号化され、ファイルを開く際に必ずパスワードの入力が必要になります。また、ファイルが暗号化されるため、拡張子を「.zip」に変更して中を確認することもできなくなります。また、書き込みのパスワードを設定すると、文書が編集されないよう保護はされますが、単独ではファイルの暗号化は行われません。Excel 2010 の暗号化については、Microsoft 社では下記の情報が公開されています。

technet.microsoft.com より抜粋

Office 2010 では、暗号化の実行に関する設定を変更できますが、Open XML 形式ファイル (.docx, .xslx, .pptx など) を暗号化する場合、既定の設定 – AES (Advanced Encryption Standard)、128 ビットのキーの長さ、SHA1、および CBC (暗号ブロック チェーン) – によって強い暗号化が提供されるので、ほとんどの組織にはこの設定が最適です。AES 暗号化は、使用可能な業界標準アルゴリズムのなかで最も強く、国家安全保障局 (NSA) によって米国行政機関の標準として採用されました。AES 暗号化は、Windows XP SP2、Windows Vista、Windows 7、Windows Server 2003、および Windows Server 2008 でサポートされています。

レジストリを変更することにより、細かな指定ができるようですが、全ての組み合わせを検証するのは難しいので、まずは既定の内容で確認します。

◆まずはコンポーネントを使って開いてみる

アドバンスソフトウェアで開発・販売している Excel ファイル生成コンポーネント「ExcelCreator 2012」を使用して暗号化された Excel 2013 のファイルを開いてみます。このコンポーネントは Excel がインストールされていない環境でもプログラムからダイレクトに Excel ファイルを作成できるコンポーネントで、新規作成、オープン、データの読み書きができます。Excel ファイルのオープンでは、読み取りパスワードが設定されたファイルをサポートしている(読み込みのみ)ため、新しいバージョンの Excel が発売されるたびにこの暗号化についての検証が必要になります。

現在公開中の ExcelCreator 8.0 for .NET(xlsx版) 最新のモジュールのプロジェクトをコピーして、そのまま検証用に使用します。Excel 2013 で作成した読み取りパスワードが設定されたファイルをオープンしてみます。

  • パスワードが設定されたファイル:D:\Data\Password2013.xlsx
  • パスワード:aaa
  • 読み込むセル:A1

C# サンプルコード

using System; 
using AdvanceSoftware.ExcelCreator.Xlsx;

namespace ExcelCreatorDemoConsole {
     class Program
     {
         static void Main(string[] args)
         {
             // ExcelCreator のコンポーネントのインスタンスを生成します。
             XlsxCreator xlsxCreator = new XlsxCreator();

             // パスワード付きのブックをオープンします。
             xlsxCreator.OpenBook(@"D:\Data\Password2013.xlsx", "", "aaa");

             // セルのデータを取得します。
             object data = xlsxCreator.Cell("A1").Value;
             Console.WriteLine("A1=[{0}]", data == null ? "null" : data.ToString());

             // ブックをクローズします。
             xlsxCreator.CloseBook(false);
             xlsxCreator.Dispose();
         }
     }
}

出力結果

A1=[null]

そのままオープンできればこのまままとめに入れたのですが、やはりそう簡単にはいかないようです。 次に、暗号化されたファイルを処理している箇所に踏み込んでみます。特定の手順で暗号化に関する情報を取得できるようになるのですが、暗号化に関する情報は従来の Excel 2010 と同じ手順で取得することができたので、詳細を確認してみると、Excel 2010 と比べ下記の内容が変更になっていることが分かりました。

  • キービット長が 128 ビットから 256 ビットに変更されている
  • ハッシュサイズが 20 バイトから 64 バイトに変更されている
  • ハッシュアルゴリズムが SHA1 から SHA512 に変更されている

そこで SHA1 で処理している箇所を SHA512 に置き換え、配列のサイズなどを調整して作成した検証用のアセンブリでファイルを開いてみます。先ほどと同じコードを使用します。

出力結果

A1=[aaa]

ハッシュアルゴリズムを置き換えた検証用のアセンブリでは、セルに設定した値を取得することができるようになりました。今回はあくまでも既定の暗号化方式に対してのみの動作検証ですが、Excel 2013 の発売までにより細かいところまで検証を行いたいと思います。

◆まとめ

Excel 2013 では、基本的な暗号化の仕組みは変わっていないものの、一部で方式に変更があり、よりセキュリティ面で強化されていると言えそうです。

※あくまでもプレビュー版での動作検証ですので、リリース時に改めて検証します。

◆追記(2012.10.26)

2012 年 10 月 25 日に MSDN で公開された Office Professional Plus 2013 をインストールして同様の検証を行い、検証の範囲において Preview 版から変更がないことを確認しました。

You can leave a response, or trackback from your own site.

Leave a Reply