「アタッシェケース」 カテゴリーの記事です。

DotNetZipでEncryptionAlgorithm.WinZipAes256が選択できない


Visual Studio C#で『アタッシェケース』の新版を開発中です。その中で、パスワードZIPファイルを作成するために、DotNetZipというライブラリを使っています。

DotNetZip-Logo

ところが、以下のコードのように設定しても、コンパイルエラーとなります。

private void Zipup()
{
  if (filesToZip.Count == 0)
  {
    System.Console.WriteLine("Nothing to do.");
    return;
  }

 using (var output= new ZipOutputStream(outputFileName))
 {
   output.Password = "VerySecret!";
   output.Encryption = EncryptionAlgorithm.WinZipAes256;

   foreach (string inputFileName in filesToZip)
   {
     System.Console.WriteLine("file: {0}", inputFileName);

     output.PutNextEntry(inputFileName);
     using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read,
                                     FileShare.Read | FileShare.Write ))
     {
       byte[] buffer= new byte[2048];
       int n;
       while ((n= input.Read(buffer,0,buffer.Length)) > 0)
       {
         output.Write(buffer,0,n);
       }
      }
    }
  }

}

Visual Studioのインテリセンスを表示させてみても、
None
PkzipWeak
Unsupported
と、肝心の「AES」が出てきません。おかしいなあ、とDotNetZipのソースを見てみたら、defineで切られているではありませんか。

AESはdefineで切られている

おそらくパスワード付きZIPのAESは、アーカイバによって解凍できなかったりするので、こういう扱いなのでしょうか。実際、DotNetZipヘルプの「EncryptionAlgorithm 列挙体」には、こう書かれていました。

Values of WinZipAes128 and WinZipAes256 are not part of the Zip specification, but rather imply the use of a vendor-specific extension from WinZip. If you want to produce interoperable Zip archives, do not use these values. For example, if you produce a zip archive using WinZipAes256, you will be able to open it in Windows Explorer on Windows XP and Vista, but you will not be able to extract entries; trying this will lead to an “unspecified error”. For this reason, some people have said that a zip archive that uses WinZip’s AES encryption is not actually a zip archive at all. A zip archive produced this way will be readable with the WinZip tool (Version 11 and beyond).

WinZipAes128 値と WinZipAes256 値は zip 仕様に含まれていませんが、WinZip のベンダー固有の拡張を使用することを意味しています。相互運用可能な Zip アーカイブを生成するには、これらの値を使用しないでください。たとえば、WinZipAes256 を使用して zip アーカイブを生成する場合、Windows XP および Vista で Windows Explorer で開くことができますが、エントリーを解凍することはできません。解凍しようとすると、「未定義のエラー」となります。このため、WinZip の AES 暗号化を使用した zip アーカイブは、実際にはまったく zip アーカイブでないと言う人もいます。この方法で生成された zip アーカイブは、WinZip ツール (バージョン 11 以降) で読み込むことができます。

ですので、AESをどうしても使いたい場合は、Visual Studioの「条件付きコンパイルシンボル」に「AESCRYPTO」を追加します。

プロジェクトのプロパティを開く

プロジェクトのプロパティを開いて、

条件付きコンパイルシンボル

追加すると、コンパイルも通り、インテリセンスにも「WinZipAes128」「WinZipAes256」の値が表示されるようになります。

ウェブサイトをリニューアルしました(ノーサポート宣言)


 

HiBARA Softwareロゴ

なぜ突然リニューアルを? ヒマになったから(笑)。

ここ二年余り、サイトの更新はおろか、ソフトウェアの更新さえしておりませんでした・・・既知のバグも放置されている状態で、本当に申し訳ありません。

とはいえ、このサイトは、僕の個人的なサイトで、すべて手弁当でやってます。サーバ費用、運営コスト、ソフトウェアを更新していく労力。それはすべて使っていただている方の感謝があってこその原動力だったわけです。

ところが、最近は「バグ直すの当たり前だろ」や「今の時代、SSL(https)が当たり前なのでは?」といったメール、「日本年金機構がexeを安易に扱っていた。アタッシェケースもexeで出力できるけど対応しないのか!?」といったTwitterなど、もはや関係あるのやら、ないのやら、苦情ばかり。もう勘弁願います!

というわけで、本日より、

「ノーサポート」を宣言します!

メールは原則、返事しません(ヒマなときは返すこともあります)。基本、対応はせず、ユーザーさんには自己解決を望みます。そのためにオープンソースになっているのですから。

ただ、各地方自治体や、企業さんで、組織的に導入されている方々には不安を与えるかもしれません。それらは、サポートを有償で提供するという仕組みを考えています。こちらは別途ご相談いただければと思います。

さて、今後の予定ですが、ざっと行う順番を上げておきます。

  1. 現行の「アタッシェケース」のバグ修正。
  2. 新たに「アタッシェケース」をVisual Studio C#への移植
  3. 「MarkDown#Editor」のバグ修正とバージョンアップ
  4. 「暗号化ツール(ソリューション)」の提供

(2)については、すでに着手していて、暗号・復号までできています。早めにGitHubへ上げていこうかと考えています。

すでに僕は、C++Builderを見限っており、よりフォークやプルリクエストがしやすいように、誰でもが使えるツール上のプロジェクトに移したいという意図があります。

(1,3)はすみません、けっこうバグを残している状態なので、早めに対処して公開します。

(4)は、前の「有償サポート」と絡みますが、商用目的で暗号化モジュールを組み込みたいという方向けに、オープンソースで提供しようという試みを考えています。ファイルフォーマットはアタッシェケース形式ではなく、独自にカスタマイズできるようにしたいと思っています。

基本的にMITライセンスでの配布予定ですが、導入にあたってサポートが必要ならば、有償にて承るということになるでしょうか。

他にも作りたいソフトは山ほどあるのですが、とりあえずは二年ぶりということで、まずは順番に、優先度を決めて、やっていきたいと思います。

では今後ともよろしくお願いいたします。

フリーソフトウェアの限界


本日よりサイトの方に、SSLを導入することになりました。「hibara.org」以下「http」でアクセスすると、漏れなく「https」へ、リダイレクトされると思います。

もともと暗号化ツール「アタッシェケース」を公開・配布しているのに、SSLがないのはどうかなあ、とは思っていたのですが、設置する手間と費用で躊躇していました。

ところが、最近チラホラと「なんでSSLじゃないんですか?」なるメールをいただくようになり、今日、ついに重い腰をあげたという感じです。

一応、もう一回、念を押しておきますが、このサイトは営利目的ではなく、

全部「手弁当」ですからっ!

SSL費用も、サーバ費用も、メンテの手間もすべて自分負担です。

「バグがある。直してください(当然でしょ)」

「SSLあるのは当然なんじゃないですか?」

最近ですと、日本年金機構が情報が漏洩した問題で、「実行形式で出力できるアタッシェケースにも対応が必要じゃないのか?」といったTwitterが飛び交う始末。

最後はちょっと関係ないにしても、もう全部「知るかっ!」

十数年も昔のこと、フリーソフトウェアをちまちまと公開して、「こんな機能どうでしょ?」「いいっすね。じゃあ実装」みたいな、ゆるふわ感のある、やりとりはできなくなってきましたね。

なんか、最近のユーザーさんからのメールも、やけに殺伐とした雰囲気が多いですし(まあ、正常に復号できないじゃ、そりゃあ怒りますよね。そうですよ、そりゃそうですよね)。

僕が好んで使っていた「C++Builder」も、もはや趣味人が買うレベルじゃない金額へと昇華し、営利目的でもないサンデープログラマーは、隅っこで遊んでろ!という雰囲気。。。

なので、これからは、フリーソフトウェア配布という枠内だけでなく、それなりに対価をいただくような方式も考えていこうかなあ、と思っています。

他のフリーソフトウェア作者さんは、この辺の折り合いをどうつけられているんでしょうかねえ。とても気になるところです。

MicrosoftのBizSparkの承認・登録されました。


 

BizSparkロゴ

今日、Microsoftさんから「BizSpark」の承認・登録された旨のメールを頂戴しました。

BizSparkとはなんぞ?という方は、コチラ↓
https://www.microsoft.com/ja-jp/ventures/BizSpark.aspx

ようは、Microsoftさんが提示する、「一定の条件」をクリアしたベンチャー企業には、Microsoft製品のいろいろを、無償で使用することができるという制度です(ただし、有効期限は3年です)。

実はこれ、以前にQiitaさんにお呼ばれてして、お話を伺ったとき、この「BizSparkが絶賛役立っている」と聞いてはいたのですが、企業に勤める一介のサラリーマンの僕には無縁だろうと思っていました。

でも、よくよく考えてみれば「僕も従業員一人のベンチャー企業じゃね?」と思い立ち、友人のフリープログラマーに相談すると「簡単にBizSparkを使えるらしいよー」ということを聞いて、さっそく応募してみることに。

ところが、ぜんぜんお手軽じゃねー(笑)。

申し込みページは英文です。もしや英語でのやりとりがあるのか・・・会社でアプリのリジェクトくらって、Apple様との交渉役として、なんの役にも立たなかった、僕のジャパニーズイングリッシュが火を噴くぜ、と思ったら、丁寧な日本語メールでのご返信があり。

とはいえ、審査あります、とのこと。ええー

僕の場合は、「具体的にMicrosoft製品が、御社のどのようにお役立てするのか」ということを説明してほしいという旨のメールをいただきました。

もう後には引けないので、震える指先で「アタッシェケースという暗号化ソフトがあって、それをC#に移植したり、オープンソース化に貢献したり・・・ごにょごにょ」っと書いて返信したたら、またもすぐに日本語メールが来て、「次のアンケートにお答え下されば承認されます」とのこと。

ホント? トラップじゃないよね? 二問目の7を選んだら、はい、ドボンとか、イヤですよ? と思いつつ、正直に書いて送ったら、次の日に呆気なく承認、登録が下りました。

まだ全部見切れていませんが、ほぼすべてのマイクロソフト製品が使えます。Mac Office 2011も使える・・・

これすごくないですか。ベンチャーはもちろんですが、自営業の方も、もし条件が当てはまるようならば、ぜひ活用されてはいかがでしょうか。

 

TrueCryptの代わりをつくる(つくれる)?


昨日、あちこちで記事になっていました。

暗号化ソフトTrueCryptは「安全ではない」
http://internet.watch.impress.co.jp/docs/news/20140530_651011.html

僕は単純なファイル暗号化ソフト「アタッシェケース」を開発して公開しておりますが、たまにメールとかで「必要なときだけフォルダになって編集できて、終わったら自動的に暗号化するような機能がほしい」との要望をいただくことがあります。

でも、そのときは、アタッシェケースの用途とは大きく異なりますし、厳密に「編集が終わった」というタイミングが取れないので、お断りのメールとともに、「そういった用途には、TrueCryptをオススメします」と返していたわけです。

それだけ、TrueCryptが暗号化仮想ドライブツールの鉄板だったわけで、僕も似たようなものをつくりかけて、「こりゃデバイスドライバつくるのと一緒じゃないか」と、その実装のたいへんさを痛感し、すでに鉄板ソフトがあることで、まいっか、と半ば投げてました。

実際、僕もこのソフトのお世話になっていて、特にWindows, Mac, Linuxなど、マルチプラットフォームで動作するのが便利でした。クラウドサービスで、まかなうことができないくらいの大容量データをポータブルHDDで持ち歩くときなどには利用させていただいてました。

ところが、こうした事態を受けて、どうしたものかな、と・・・。

作っちゃうか?(笑) とはいえ、Windowsの方は頑張ってつくったとしても、それをMacでも正常に復号してドライブ化するなど、実装、設計の想像がまったくつきません。

誰かオープンソースとかで、一緒につくってくれるような人はおりませんかねえ。

暗号化の部分は、僕が担当するとして、そうしたOSに依存するような ファイルシステムに絡む部分を作ってくれる人がいて、一緒にやれる人がいれば大募集。

まあ、ちょっと様子をみながら、調査は進めておきますかねえ・・・

s