トップページ > 記事閲覧
Android版:DXアーカイブの暗号化機能について
名前:was-blue.0793 日時: 2018/10/31 18:52

DXアーカイブにはパスワードで内部ファイルを暗号化する機能がありますが、 Android(iOS)アプリをストアに公開する上では、日本及び米国の法律で暗号化技術を含むアプリに規制があるようです。 参考:http://tmurakam.hatenablog.com/entry/20111009/1318137457 Android(iOS)のアプリをストアに公開することは日本及び米国からの輸出にあたり、鍵長によって規制対象となるかが変わります。 概ね共通鍵方式で56bit、公開鍵方式で512bit以上の鍵を使う暗号化は、アルゴリズムに関わらず規制対象となる暗号化になります。 DXアーカイブに使っている暗号化の鍵長・方式によってはDXライブラリを使うAndroidアプリ全体の問題になると思います。 Android(iOS)版に限り、DXアーカイブの暗号化・復号化機能を外した方がよいかと思いますが、いかがでしょうか。
メンテ

Page: 1 | 2 | 3 |

Re: Android版:DXアーカイブの暗号化機能について ( No.23 )
名前:yumetodo 日時:2018/11/09 19:46

> yumetodoさんは何か「知的所有権・著作権保護」以外の目的で利用する方法を思いつきますか? 一般的な用途はもちろん知的所有権・著作権保護になると思いますが、例えばHTTP over DXAとかをやれないことはないかなと。 あと忘れてましたがDxLibのbinaryの再頒布をする場合は再頒布する人が許可例外TSUの届け出を投げないとだめですね。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.24 )
名前:管理人 日時:2018/11/11 01:24

> yumetodoさん > 一般的な用途はもちろん知的所有権・著作権保護になると思いますが、例えばHTTP over DXAとかをやれないことはないかなと。 すみません、HTTP over DXA とは何でしょうか? DXAファイルを通信で何処かに送るなどでしょうか…? > あと忘れてましたがDxLibのbinaryの再頒布をする場合は再頒布する人が許可例外TSUの届け出を投げないとだめですね。 なるほど うーんやはり柵が少ないほうが色々扱いやすくなる( あと、暗号関係の専用ソフトでもないのに暗号規制を 気にしなくてはいけないのは煩わしい )ので、やはり鍵を56bit化する方向で進めようと思います 旧バージョンの DxaDecode.cpp は配布し続けるので許可例外TSUの届け出は投げるとして、最新版を使う分には 暗号規制のことは気にしなくて良いようにしようかと その変更をしたとしても、影響を受けるのは   A.現在暗号化DXアーカイブを使ったソフトの開発を進めていて、且つDXライブラリを最新バージョンに更新した方   B.暗号化DXアーカイブを使用して作成したソフトの更新する際にDXライブラリを最新バージョンに変更した方 のみなので、( 旧バージョンのDXアーカイブでも暗号化していないファイルについては普通に読み込めるように しようと思います ) 暗号化DXアーカイブを使用されている方には、お手数をお掛けしてしまいますが一度 最新バージョンで再度暗号化DXアーカイブファイルを作成していただくという形で… Aの方もそこまで多くないと思いますし( 開発中の間は暗号化はしていないかもしれませんし )、Bの方に至っては 殆ど居られないと思います( バグ修正や追加要素でソフトを更新する場合もDXライブラリのバージョンは更新しない方が多い )
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.25 )
名前:yumetodo 日時:2018/11/11 13:57

>DXAファイルを通信で何処かに送るなどでしょうか…? 普通やらないでしょうが不可能ってわけでもないかなと。 いや、そもそもDxLibのbinaryを再頒布する人がまずいないのでは・・・。NuGetあるわけで。 わざわざ強度を下げるのは理解に苦しみます。 --- いやまてよ、更に混乱してきたんですが 質問 G(1): 機械可読コード形式のソフトウェアの輸出又は再輸出は、 このソフトウェアのソースコードが一般に入手可能な場合、 EARの対象となりますか? 答:ソフトウェアプログラムのソースコードが一般に入手 可能な場合、ソースコードからコンパイルされた機械可読 コードは、一般に入手可能なソフトウェアであり、従って EAR の対象とはなりません。 これはどう解釈したらいいんだろう。DxLibのソースコードは公開されているから再頒布は規制対象外ってこと?
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.26 )
名前:管理人 日時:2018/11/11 21:51

> yumetodoさん 許可例外TSU届け出メール送信しました。 > 普通やらないでしょうが不可能ってわけでもないかなと。 そうなんですよ、普通やらないようなことに対してそのような注釈を入れると、 普通に使っているだけでも何か気をつけなければならないのではないかと 思われてしまうのではないかと… > いや、そもそもDxLibのbinaryを再頒布する人がまずいないのでは・・・。NuGetあるわけで。 実際にDXライブラリを使用したプログラミング解説などのサイトで ダウンロードできるサンプルプログラムにDXライブラリのパッケージが 同梱されている場合もありますので、これらのことを仕様とする際に その都度許可例外TSUを届け出るのは大げさですし、かといって 『DXライブラリは別途”DXライブラリ置き場”からダウンロードしてください』 とすると利便性が下がりますし、規制外にするメリットはあります > わざわざ強度を下げるのは理解に苦しみます。 強度は下がるかもしれませんが、思えば件のツールもDXアーカイブのヘッダの中で 固定の値になってしまう箇所を狙い打ちにして鍵を取り出していたので、ヘッダの 中からそのような部分を除いてしまえば各ファイルの鍵の長さが7byteになって しまったとしても、少なくとも『プログラムによる固定処理』で鍵が割り出されて しまうことはなくなるのではないかと思いまして ( そういう意味では、SHA-256 を使う最新版以前の簡易的な xor処理でも、ヘッダから 固定値部分を除いてしまうだけでも良かったかもしれません ) > 質問 G(1): > 機械可読コード形式のソフトウェアの輸出又は再輸出は、 > このソフトウェアのソースコードが一般に入手可能な場合、 > EARの対象となりますか? >  > 答:ソフトウェアプログラムのソースコードが一般に入手 > 可能な場合、ソースコードからコンパイルされた機械可読 > コードは、一般に入手可能なソフトウェアであり、従って > EAR の対象とはなりません。 >  > これはどう解釈したらいいんだろう。DxLibのソースコードは公開されているから再頒布は規制対象外ってこと? こちらの日本語訳をそのまま受け取れば規制対象外となりそうですが…
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.27 )
名前:8127 日時:2018/11/11 22:24

管理人様、 >少なくとも『プログラムによる固定処理』で鍵が割り出されて >しまうことはなくなるのではないかと思いまして pngファイルに必ず含まれるバイナリは16byte = 128bitで、89504E470D0A1A0Aなのですが、 暗号化キーが56bitだと暗号文に片っ端から89504E470D0A1A0Aとのxorをとり、結果が56bitでループする場所を探すことで キーを『プログラムによる固定処理』で割り出せます。 >( そういう意味では、SHA-256 を使う最新版以前の簡易的な xor処理でも、ヘッダから >固定値部分を除いてしまうだけでも良かったかもしれません ) ファイルごとに異なるキーを使用するようになったので、上記の方法でもpngファイルしか取れないという点で、 (56bitだとしても)最新版の方が断然安全性が高いと考えます。 私自身の意見としては、議論を尽くした結果、もしも今のままでまずいのであれば、56bit化もやむを得ないと思います。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.28 )
名前:yumetodo 日時:2018/11/12 00:23

そろそろESRの解釈についてはStackOverflowあたりに投げるべきかもしれない。ここを見ている人よりは詳しいはず。。。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.29 )
名前:was-blue.0793 日時:2018/11/12 22:25

>>yumetodo様、管理人様 私はこの一文について、DxLibに関係する場所以外でもすべてのソースコードを公開しなければならないと解釈しています。 私としては、(少なくとも国内、セキュリティ研究目的以外でDMCAにおいては)DXアーカイブの暗号化を無理矢理解除することは法的にアウトと考えていますので、 (実効性はともかく)法的な意味では鍵長に関係なくDXアーカイブの暗号化を無理矢理解除することはできないことになっていると考えます。 また、暗号化関連については、Play Consoleヘルプによると、より詳しいガイドを提供できる連絡先を掲載しているページがあるとのことです。 support.google.com/googleplay/android-developer/answer/113770?hl=ja 英語で質問しなければなりませんが、参考になれば。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.30 )
名前:管理人 日時:2018/11/13 01:08

> 8127さん > pngファイルに必ず含まれるバイナリは16byte = 128bitで、89504E470D0A1A0Aなのですが、 > 暗号化キーが56bitだと暗号文に片っ端から89504E470D0A1A0Aとのxorをとり、結果が56bitでループする場所を探すことで > キーを『プログラムによる固定処理』で割り出せます。 はい、それは私も思いついていたので、pngファイルや jpegファイルなどのメジャーなファイルは固定のヘッダ部分を 潰すような小細工をしようと思います( デコードの際に復元 ) > was-blue.0793さん > 私はこの一文について、DxLibに関係する場所以外でもすべてのソースコードを公開しなければならないと解釈しています。 『すべてのソースコード』とは、『DXライブラリの全てのソースコード』という意味でしょうか? あと、文面のどの部分からそのように解釈されたのか教えていただけないでしょうか? > また、暗号化関連については、Play Consoleヘルプによると、より詳しいガイドを提供できる連絡先を掲載しているページがあるとのことです。 > support.google.com/googleplay/android-developer/answer/113770?hl=ja >  > 英語で質問しなければなりませんが、参考になれば。 ご情報ありがとうございます 英語で質問できないので、質問はできませんが…
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.31 )
名前:was-blue.0793 日時:2018/11/13 20:42

>>管理人様 "ソフトウェアプログラムのソースコードが一般に入手可能な場合、"という一文より、(規制対象となる暗号機能のある)DXライブラリを使用しているアプリは、 DXライブラリ部分のソースコードだけでなくアプリ全体をオープンソース化、つまりソースコードを全て公開しなければならないと解釈しています。 これはGPLのライブラリを使った場合とほぼ同様という意味合いになります。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.32 )
名前:管理人 日時:2018/11/13 23:52

> was-blue.0.793さん > "ソフトウェアプログラムのソースコードが一般に入手可能な場合、"という一文より、(規制対象となる暗号機能のある)DXライブラリを使用しているアプリは、 > DXライブラリ部分のソースコードだけでなくアプリ全体をオープンソース化、つまりソースコードを全て公開しなければならないと解釈しています。 >  > これはGPLのライブラリを使った場合とほぼ同様という意味合いになります。 『規制対象となる暗号機能のあるDXライブラリを使用しているアプリは』 ではなく 『DXライブラリの暗号機能を規制対象となる使い方をしたアプリは』 ですよね? ともあれ、鍵の 56bit化をして、規制に関する解釈に頭を悩ませる必要はなくなるようにしますので少々( 何週間か掛かるかもしれませんが… )お時間をください m(_ _)m
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.33 )
名前:was-blue.0793 日時:2018/11/14 15:21

>>管理人様 そうでした……現在でも「知的所有権・著作権保護」に目的が限定されているなら規制対象外でした!すいません! しかし、DXアーカイブを規制対象となる使い方をしていた場合はソースコードを公開する必要が出てきます。 暗号強度が下がることは少し不安もありますが、暗号規制という壁を考えると致し方なしと考えます。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.34 )
名前:yumetodo 日時:2018/12/09 02:51

DxLib Advent Calendar 2018 9日目の記事としてまとめさせていただいたので報告までに。 DxLibのDxArchiveの暗号化する機能とExport Administration Regulations 輸出管理規則 ttps://qiita.com/yumetodo/items/89af53d3cf8bc236de2f
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.35 )
名前:管理人 日時:2018/12/10 23:42

記事拝見いたしました 分かりやすく纏められていて改めて勉強になりました 一点気になったのが 『というわけで、議論の末Hash関数にSHA-256を採用しつつ暗号化するように変更がなされました。12bitから一気に増えたね。』 という文章なのですが、12bitという数字はどのように算出されたものでしょうか? SHA-256以前はパスワード文字は最大12文字だったのですが…
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.36 )
名前:8127 日時:2018/12/13 02:21

代わりに編集リクエストしておきました。 (僕もこの掲示板で2回bitとbyteの間違いをやらかしました・・・)
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.37 )
名前:管理人 日時:2018/12/14 20:10

> 代わりに編集リクエストしておきました。 ありがとうございます 現在は『12byte』となっているようです m(_ _)m
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.38 )
名前:管理人 日時:2018/12/23 00:00

遅れに遅れて漸く対応が完了しました もしまだこちらをご覧になられている方がいらっしゃいましたら、よろしければお試しください m(_ _;m // 新しい DxaEncode.exe と DxaDecode.exe https://dxlib.xsrv.jp/temp/DXArchive_1_08.zip https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) 新しいDXアーカイブのハッシュ値の生成には CRC32 を使用することにしました ( CRC32 で2個のハッシュ値を作成して、その内の 56bit を使用する形 ) 理由は SHA-256 以外のハッシュ値生成アルゴリズムで 56bit 以上を生成しないものが CRC32 しか見当たらなかったので… ( あと逆算された原因が『固定バイナリが存在する』ことだったので、それさえ潰してしまえばハッシュ値生成の  アルゴリズム自体はパリティチェック用くらいのものでも大丈夫では? と思ったのもあります ) あと、pngなどのメジャーなファイルフォーマットのファイルの固定バイナリから鍵を逆算されてしまう問題の 対策としてはLZ圧縮とハフマン圧縮を使うことにしました( LZ圧縮のあとハフマン圧縮 ) ヘッダ部分もこの処置を施しているので少なくとも手動での解析抜きの自動解析プログラムで鍵が 分かってしまうようなことは無いと思うのですが・・・もし見落としなどありましたらご指摘ください m(_ _;m > 8127さん No.30 のご返信で pngファイルなどの対応に小細工を使うと申し上げましたが、なかなか思うように行かず 結局圧縮処理を施すことで固定バイナリを隠すことにしました (_ _;
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.39 )
名前:yumetodo 日時:2018/12/25 02:47

お疲れ様です。 --- 前にワッセナー・アレンジメントと外為法の話がありましたが、具体的な内容が見つかりました。 ここにリンクを貼ろうとしたらどう加工しても掲示板にブロックされるのでQiitaの記事見てくださいorz 本当にここの規制はいっちょんわからん。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.40 )
名前:管理人 日時:2018/12/25 23:51

> 前にワッセナー・アレンジメントと外為法の話がありましたが、具体的な内容が見つかりました。 > ここにリンクを貼ろうとしたらどう加工しても掲示板にブロックされるのでQiitaの記事見てくださいorz 拝見しました 許可例外TSU届け出以外にも日本の経済産業省にも届出しないといけないという内容でしょうか? うーん、鍵の56bit化は正解ですね…
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.41 )
名前:yumetodo 日時:2018/12/26 10:38

>許可例外TSU届け出以外にも日本の経済産業省にも届出しないといけないという内容でしょうか? ワッセナー・アレンジメントの各国で共有できるとかそういう条文を見つけられなければそうなりそう。
メンテ
Re: Android版:DXアーカイブの暗号化機能について ( No.42 )
名前:管理人 日時:2018/12/29 06:28

ハフマン圧縮されたデータの解凍が遅すぎたので、ファイル全体をハフマン圧縮するのではなく ファイル全体の先端部分と末端部分だけをハフマン圧縮する方式に変更しました ( デフォルトでは先端と末端10KBで、オプションでサイズの変更が可能 ) バージョン番号の変更はしていないので、もし No.38 のバージョンをお使いの方が いらっしゃいましたら、申し訳ありませんが再度アーカイブし直してください m(_ _;m // 新しい DxaEncode.exe と DxaDecode.exe https://dxlib.xsrv.jp/temp/DXArchive_1_08.zip https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ

Page: 1 | 2 | 3 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存