2013年4月19日金曜日

セキュリティ商売(更新6)

ネットエージェント社が、Androidアプリを対象に、セキュリティリスクの情報を公開しています。
http://secroid.jp/

各アプリのセキュリティリスクの度合いを、Safe(安全)、Low(低)、Mid(中)、High(高)、Danger(危険)の5段階で評価した結果を開示しているようです。ちなみに、ちゃんと個別のチェックを行った訳ではなく、パーミッションの取得内容から機械的に判定しているようです。彼らの言い分としては、「リスクの可能性はある」ということだろうと思います。

個別のチェックをするには、ネットエージェント社からのコンサルティング()が必要なようです。
例えば、この会社の機械判定の仕組みに法れば、パズドラのセキュリティリスクはHighになりますが、実際にはSafeになっています。機械判定なら絶対Highだし、仮に詳細な検査を行ったとしても、課金がある筈なので、最低でもLowにならざるを得ない筈です。つまり、Safeになる事は100%無い筈。。。
2013/04/19 AM10:00時点のパズドラの評価結果
不思議ですね。
ルールを捻じ曲げる力。
それが、コンサルティングの力なのだろうか?
だとすれば、なかなか阿漕な商売かもしれません。
※追記3: 2013/04/20 AM8時時点の評価結果を確認したところMidになっていました。
※追記6: 2013/06/15 AM7時時点の評価結果を確認したところ再びSafeになっていました。

商売をすることについて悪くいうつもりはありません。
寧ろ私は、商売推進派です。
しかし、彼らのやり方は誠実ではないと思います。彼らのやっていることは、よく見ずに「危険ですよー」と大声で叫んでおき、「ちゃんと評価して欲しいのなら、金を出しな!」と言っている訳なので。そして。彼らのやり方には信義も無いと思います。強い立場の人に対しては諂っているので。
お伽話のオオカミ少年を思い出しました。


以下補足,

ちなみに、私はアプリの判定は、以下のような感じでした。

■NOKOGI Rider (Lite): Safe(安全)
http://secroid.jp/d/b/f/f/com.suzukiplan.SHOT04T.html

■NOKOGI Rider: 未検査
http://secroid.jp/d/7/a/4/com.suzukiplan.SHOT04.html

■Invader Block 2 (Free) : High(高)
http://secroid.jp/d/4/8/6/com.suzukiplan.IBLOCKA.html

「Invader Block 2 (Free)は、安全です。」
私自身がそう言っても、私のことを知らない第三者は、別の第三者のいうことを信用するでしょう...
ちなみに、検査対象のバージョンが古いようで、最新バージョンのInvader Block 2の場合、パーミッション要求の見直しを行っているので、判定はLow(低)になります。
最新の状態への同期ぐらいはしっかりやって欲しいものです。
古いセキュリティ情報ほど、参考にならないものはありません。



追記: 4/19 22時ごろ

バージョンの情報の件については、さきほど更新されていました。
Invader Block 2(Free)の最新版ではパーミッションを外しているものの、判定はLow(低)ではなくHigh(高)のままのようです。どうやら、実装レベルで解析をしているようです。Invader Block 2(Free)は、広告を表示するため、appC(日本)とTapForTap(カナダ)のAPIを使用しているのですが、その部分が実装レベルで引っ掛かっていました。(※appCがMidとLowTapForTapがHighとLowのリスクがあるものと判定されました)

困りました・・・。

今のところ、良い解決策が見つかりません。
安全(orせめてLow)のAPIを出している広告会社に変えるしかないと思いますが、それをすると色々と影響が大きいので厳しい。収益的な面での影響は無い(そもそも収益が無い)ですが、契約事項的な意味で。
今後私が新たに作るゲームについては、広告の無いスタイル(Lite版+有償販売)に絞るのがベストかな。元々、広告アプリの収益性については懐疑的だし、何よりサードパーティー製のAPIを組み込むのは、コントロールが効かないから面倒なので。(今回のケースが良い例)

なお、パズドラの判定がSafeになっているのはバグとの情報があります。
情報源
この点は、判定が更新されたことを確認できたら、記事を更新します。
※追記3: 更新しました(4/20 AM8時ごろ)
※追記6: 再び更新しました(6/15 AM7時ごろ)


追記2: 4/20 AM7時ごろ

GooglePlayの利用規約3.8(i)に、次のような条項があります。

Google Play 利用規約


3. Google Play の利用
3.8 ユーザーは、プロダクトのすべての知的財産権を含む(ただしこれに限定されない)、Google Play および Google Play 経由で利用できるプロダクトの権利、所有権、および利益を Google および/または第三者が保有することに同意するものとします。「知的財産権」は、特許法、著作権法、営業秘密法、商標法、不正競争防止法に基づくすべての権利、および世界各国のその他すべての権利を意味します。ユーザーは、(i)別段の許可のない、プロダクトの複製、販売、ライセンス供与、配布、譲渡、修正、変更、翻訳、派生物の作成、逆コンパイル、リバース エンジニアリング、逆アセンブル、およびソース コードを抽出しようとするその他の行為(ii)プロダクトの機能(デジタル権利管理または転送ロック機能を含む。ただしこれらに限定されない)によって提供、実装、強制されているセキュリティ対策やコンテンツ利用ルールを回避または打破しようとする行為、(iii)すべての法律または第三者の権利を侵害するアクセス、複製、譲渡、トランスコーディング、コンテンツの再送信を行うためのプロダクトの使用、(iv)プロダクトに添付または含まれている、Google および任意の第三者の著作権表示、商標、およびその他の権利表示の削除、不鮮明化を行わないこと、およびそれらを任意の第三者に許可しないことに同意するものとします。
http://play.google.com/intl/ja_jp/about/terms.html より引用

つまり、実装レベルでの解析をするために、GooglePlayからアプリを取得することは、GooglePlayの利用規約では禁止されているから出来ません。技術的に不可能ではありませんが、それをやると契約違反になるので。

ネットエージェント社は、どのような手段で解析対象のアプリを入手しているのだろうか?
なお、私はネットエージェント社に対して解析目的でapkを提供したことはありません。


追記4: 4/21 AM11時ごろ

追記2のGooglePlayの利用許諾の内容を少し更新しました。
(省略していた後半の記述の追記+色付け)
また、以下に追記2の内容の補足を記します。

GooglePlayで公開している情報(パーミッション等)だけでは、インテントやroot化などの抜け道があるのも事実です。なので、実装レベルでの解析によるセキュリティ評価自体は有用だと、私は思っています。

問題は、情報収集の方法です。

仮に、Googleから特別な許可を得た上でそれを行ったとしても、アプリ毎に個別の使用許諾でリバースエンジニアリングを弾いているパターンもある筈です。何故なら、リバースエンジニアリング自体は違法行為ではないので、ガード処置として使用許諾を設ける事は、ソフトウェア開発業界では常識的なことなので。

例えば、Windows版のNOKOGI Rider(Lite版)の使用許諾では、次のように規定しています。
2.使用許諾 (2012年8月26日 施行)
 以下の事項についてご了承ください。
(1) 当方(SUZUKI PLAN)は、利用者が本プログラムの利用により生じた損失・損害等を保障しません。
(2) 利用者が本プログラムを再配布する場合、当方(SUZUKI PLAN)が配布しているプログラムのアーカイブ(SHOT04T.ZIP)に対して、一切の変更を加えないで配布して下さい。
(3) 利用者は、プログラム及びデータ(SHOT04T.EXE及びROMDATA.BIN)に対して、解析を目的とした逆アセンブル若しくはバイナリ解析又はそれに順ずる行為を行わないでください
(4) 利用者は、画面スクリーンショットやプレイ動画等について、当方(SUZUKI PLAN)の許可無く、自由に第三者に公開することができるものとします。
(5) SUZUKI PLANは、本プログラムや使用許諾の内容を予告無く変更する可能性があります。
※備考:製品版の場合、(2)の規定が「再配布しないでください」になっています。
※Android版、iPhone版については、GooglePlay、AppStore以外のマーケットで配布しないようにすることで、GooglePlay、AppStoreの使用許諾に準拠することにしています。

また、私が作ったアプリではありませんが、NTTコミュニケーションズ社が提供しているAndroidアプリ(050 plusアプリケーション)にも、リバースエンジニアリングを禁止する条項が規定されていました。
http://www.ntt.com/tariff/comm/pdf/c143.pdf の第4条3項を参照

要するに、解析の自動化は事実上不可能だと私は思っています。

解析の自動化を実現するには、(1)Googleから特別な許可を得た上で、(2)個別使用許諾を自動解析でチェックした結果、権利上問題の無いものに絞ってチェックする必要があると思うので。
(1)は、Googleを説得できれば必ずしも不可能ではない思います(ただし、仮にGoogleがそれを許可した場合、GooglePlayの利用規約の改定も必要だと思いますが)。
(2)は、技術的に難しいです。少なくとも、確実に権利侵害せずに自動化することは不可能だと思います。機械的に調査し切れるものではないので。仮にそれを強行する場合、「ある程度の権利侵害はするけど仕方ないね」という意思(悪意)が必要になる筈です。先述しましたが、個別使用許諾によるリバースエンジニアリングのガードは、ソフトウェア業界では常識的なことです。そして、ソフトウェア関連のセキュリティ会社なら当然、その点について善意(知らなかった)では済まない筈です。

その為、ネットエージェント社が、どのような手段でその難題をクリアしたのか、興味深いです。
私見では、(1)の許可が降りていないと思うし、(2)をクリアする方法も思いつかないので。(2)は、人海戦術によるチェックという方法ならあると思いますが、コスト的に現実的ではない筈(アプリのテキスト情報は、日々更新されているので)。

なお、GooglePlayの利用規約によると、スクリプティング等によるGooglePlayからの情報収集については、Googleの許可を得れば可能と解釈できます。なので、Googleの許可を得た上で公開範囲のテキスト情報を収集し、基本的には公開範囲のテキスト情報(=パーミッション要求)のみで評価した結果を公開し、実装レベルでの解析については、同意があったアプリのみ実施して結果を公表するのであれば、問題無いと思います。ただし、それだと「問題無いアプリ」の情報しか出てこなくなると思いますが、それでも利用者にとっては有用な情報になると思います。


追記5: 4/21 23時ごろ

私は、Android Marketの安全性が高くなって欲しいと願っています。
私だけではなく、アプリ開発者の大多数が同じことを考えていると思います。
そのため、secroidのような実装レベルでリスクの客観的な評価をする仕組み自体、有用なものだと思います。ただし、現時点のチェック精度(品質)については、上記のパズドラの件から、まだまだ発展途上の段階だろうと思います。また、知的財産権の面でも課題がありそうな気がします。

今回のsecroidの案件は、世間の方の注目度がだいぶ高かったようで、私のような無名に近い者のブログでも1,000PV/day程度のアクセス数がありました。それ程の注目を集めた要因のひとつとして、Androidアプリの開発者を挑発したことによるマーケティング効果(いわゆる、炎上マーケティング)もあったのではないかと思っています。
私がSNS上で交流のある何人かの開発者仲間も、今回のsecroidのやり方や評価に紛糾し、積極的にマーケティング支援をしているように見えたので。もちろん、それは考えすぎ(私の思い過ごし)かもしれません。しかし、仮にそれが計算によるものだったとすると、そういうやり方をする会社の情報を信頼して良いものか疑問です。

私自身、Invader Block 2(Free)が「Highリスク」と判定されて、良い気分ではありません。しかし、その評価が客観的な解析に基づくものであるのなら、真摯に受け止める必要があると思いました。そこで、私が公開中でHighリスクのアプリについて、今後、以下のように対応しようと考えているところです。

①Invader Block 2(Free)の対応方針
今後、Invader Block 2(Free)からは広告を削除する予定です。
ただし、契約事項の整理などの作業があるので、若干時間が掛るかもしれません。
Invader Block 2には、広告の無い有料版があるので、Invader Block 2(Free)は、プレイ回数などに制限を設けるなどして、制限経過後は有料版の購入を促すメッセージを表示してプレイできないようにするなどの改修を検討中です。

なお、iPhone版のInvader Block 2についても、同様の改修を検討中です。(iPhone版についてはsecroidの評価対象外ですが、TapForTapの広告を組み込んでいるので、Highリスクであるものと見做しました)

②Well Tempered Clavier 1 on VGSの対応方針
このアプリは、secroidから未評価ですが、作り的にはInvader Block 2(Free)と同じです。
つまり、このアプリのセキュリティリスクはHighです。
このアプリは、広告収益型のアプリなので、広告が無ければ存在する意味がありません。
そこで、とりあえずアプリを削除(非公開に変更)しました。

なお、secroidサイドの方の情報によると、今後、広告会社のセキュリティ評価なども検討されているようなので、その評価結果を見てSafeな広告APIがあれば、Safeな広告APIに差し替えて再公開するかもしれません。(ただし、私見では、「アプリが通信をする以上、技術的な観点からセキュリティ的にSafeなることはあり得ない」と思っているので、再公開の可能性は低いと思います)

【補足】
つまり、私の結論は「広告の削除がベスト」です。これは、あくまでもSUZUKI PLANとしてのベストな判断です。私は元々、広告アプリの収益性について懐疑的な印象を持っていたから、そういう判断をしました。同じようなことを考えるデベロッパーが増えて欲しいとは思っていません。私自身、広告主として広告アプリ(媒体)を利用させて頂いているので、優良な媒体が増えて欲しいと思っています。今後も広告アプリを出し続けるデベロッパーの方々は、ユーザに対して、リスク原因が広告によるもの(不可抗力)であることと、広告表示への理解を求めていけば良いと思います。私のアプリの場合、主力ターゲット(有料版の購入者)の大半が米国と欧州なのですが、私はあまり英語が得意ではないので、ユーザと密なコミュニケーションが取り難いという事情があります。また、米国や欧州でsecroidのような調査機関ができ、私が知らない間に「リスクがある」と評価されることを避けたいという狙いもあります。

2013年4月16日火曜日

NOKOGI Riderのダウンロード数遷移など

そろそろ、NOKOGI Riderの初期バージョン(Trialバージョン)をリリースしてから1年ぐらい経ちます。
この時点で一度、ダウンロード数の遷移を振り返ってみます。
ここ1年あたりでの、1日のダウンロード数は、下図のような感じになります。
トータル数は4,200件前後。
大きく分けて3つの波があったように思います。
①リリース当初の波(図左側)、②中間地点の波(図中央左寄り)、③大きな波(図右側)の3つです。

①リリース当初の波(図左側)

この頃は、全く宣伝とかはしていませんでした。
製品版をまだリリースしていなかったので。
1ヶ月ちょっと程度でガクッと落ちてしまいましたが、結構強い伸びがありました。
後になって分かったことですが、結構色々なサイトで紹介されていたようで、その効果だと思います。

②中間地点の波(図中央左寄り)

製品版をリリースしたので、広告出稿を行いました。
それによる伸びが、図中央左寄り付近の波です。
流石に、お金を突っ込んで宣伝しただけあって、大きな伸びがありました。
広告期間が終了すればそれなりに落ちてしまいましたが。
でも、広告終了後も何となくダウンロード数が(微妙に)増えつづけたようです。
これが、広告効果によるものか、製品版があることの効果によるものかは定かではないですが。

③大きな波(図右側)

最後に、アンドロイダーというポータルサイトに取り上げられたことを契機にドカッと伸び、その後のDL数も明らかに多くなりました。10DL/dayが20DL/dayぐらいになっています。ついでにこの時期、Nexsus7限定で広告を打つ試みを試しました。NOKOGI Riderは、7インチタブレットでもプレイし易くなる仕様で作っているので。伸びが日本国内だけなら、アンドロイダー効果と想定できますが、世界的に伸びた印象なので広告効果も相乗的に重なったものと想定しています。

少額でできる範囲の露出拡大戦略は色々ととってきましたが、爆発的なものは無い印象です。さて、次の一手はどうしたものか・・・iPhoneサポートという最後の切り札も出してしまったし、ニコ動のゲームフェスは入選しなかったようなので、そろそろ弾切れかなと感じています。

後は、小粒なアイディアゲーム、ネタゲームをちまちまと出して、小ヒットを狙い、そこからNOKOGI Riderへの誘導を図る戦略(いわゆる、セルフプロモーション)が有効そうな気がしないでもないですが。iPhoneなら、とりあえず新作を作ればダウンロードして貰う機会があることは把握したので。ただ、あまり小粒過ぎるのも如何なものかと思っています。

2013年4月11日木曜日

VGSの音声システムの実装方法

VGSの音声システム(効果音+波形メモリ音源)の実装方法を詳解するブログを書き始めました。
一応、VGSの本の中でも、内部仕様について軽く触れていますが、このブログでは、ソースコードの実装方法まで踏み込んだより実践的な内容を書き綴っていきます。
http://vgs-sound.blogspot.jp/2013/04/blog-post.html