セキュリティの学習

技術者たるもの、常に学んでいかなければならないと思っています。
特に、セキュリティについては毎日のように新しい脅威が出現しています。
乗り遅れないようにしましょう。

今回は、私がセキュリティを勉強していてわかったことや
気になったことについてまとめたいと思います。

  • クリックジャッキング攻撃

個人情報を入力するWebページ上に透明のレイヤを埋め込んで偽装し、
間違えてその偽装レイヤに個人情報を入力してしまうようにしたり、
埋め込んだWebページによって悪さをするように仕組んだものです。
現在でも色々なものが見られます。

米大統領候補 Romney 氏、クリックジャッキングの疑いをかけられる | スラド

主にiframeやFlashが用いられ、攻撃が仕組まれます。
私も、はてなダイアリーにiframeやFlashを埋め込もうとしていましたが、
決して皆様に害を与えるためにやっているわけではありません。
といっても、第三者の証明があるわけでもありませんし、
こういう怪しい人は避けられるのでしょうね・・・。
セキュリティの勉強をしていたはずが、凄く暗くなってしまいました・・・。

数年前に流行した攻撃で、まず企業のWebサイトなどに不正にJavaScriptのコードを挿入し、
それによりクライアントのAdobe ReaderFlash Playerなどの
脆弱性を突かれて攻撃されるというものです。
この攻撃については、最新版のAdobe ReaderFlash Playerを導入することで対処されます。

Adobe ReaderFlash Playerは、他にも度々脆弱性が発見されます。
普及しているものが狙われやすいのは世の常ですが、常に意識して対処したいものですね。


こうしてみてみると、関わりがないようで実は凄く関わっていますね。
正しい知識を身につけたいものです。


それにしても、Blenderやりたいなあ・・・。

Stage3Dを使ったFlashをはてなダイアリーに埋め込む

例によってタイトルどおりです。意外と簡単にできてしまいました。
Flash11.2以降がインストールされていない環境では、上に空欄が表示されます。

以下のページを参考にしました。

これは、iframeタグをGoogleガジェットに変換するというものです。
iframe内にURLを記述し、指定のファイルを表示することが可能となるわけです。
これができてしまえば、なんでも埋め込むことができてしまいますね。
いいのでしょうか・・・。できたからやってしまったわけですが。

相変わらずファイル置き場にDropboxを使っているのですが、
Dropboxは便利ですけど、あまり多くのファイルの転送には適してないと思いました。
一定以上で帯域制限がかかったと思います(確か)。
真面目にやるのなら、ちゃんとしたサーバを設置しなければいけませんね・・・。

Away3Dを使ってFlashで3DCGを表示するのが話題になっているような感じですが、
私ももっとできるようになりたいですね。
ようやく、Blenderでキャラクターにアニメーションがつけられるようになった段階です。
この辺についてまとまったら、作り方等を説明できればと思っています。

ところで、来週末は情報処理技術者試験ですね。情報系の皆様は受けますでしょうか。
私も受けようと思っています。
むしろそちらが本業なので、趣味のFlashばかりに没頭し続けていられないのですが・・・。
来週末まではそっちの話題も多くなりそうですね。

Googleガジェットを使ってDropboxにアップロードしたFlashをはてなダイアリーに埋め込む

山中教授がノーベル賞に選ばれましたね。
私も、もっと頑張らなければと思います。

本日の内容は、タイトルに書いたことで以上です。
(Flashに対応していない場合、上に空白が表示されます)
以下のページを参考にしました。私が説明するよりもこれらを参考にしたほうが早いです。

最近DropboxのPublicフォルダが廃止されたためファイルを公開するやり方が変わっており、
無駄に手間がかかってしまいました。

昔作ったイラストロジックを公開してみました。
ShiftかSpaceを押しながら左クリックで×印のオンオフができます。

大分昔、プログラミングのプの字も知らない頃にザックリ作ったゲームなので、
今見るとかなりのウンコードだな、と思ってしまいました・・・。
直したいところは山のようにありますが、面倒くさいし、0から作り直したほうがいいし、
右クリックに対応していないし、スマホは対応していないので操作しづらいし、
そもそもActionScript2.0だしで、もうやる気が出ないです。
結局、公開するにあたり致命的な部分を修正するのみに止めました。

これを公開したのも、
ある程度完成しており公開できるものが他になかったからということがあります。
サンプルは色々作っているのですが。
これからは、もう少し人に見せられるものを作ることができればと思っています。
私自身は、趣味でFlashを弄っているだけのただの人なのですが、
コーディング力の向上や、もっと色々なものが作れるようになりたいと思っています。

それにしても、Stage3Dをバリバリ使ったFlashがうまく埋め込めません・・・。
埋め込む方法はあるのでしょうか。
どちらにしても、直リンすればいいし、
Stage3DバリバリのFlashは重くてブログに埋め込むレベルを超えているし、
できなくてもいいような気はしますが・・・。

Blenderとは?

Blenderは、有名なので知っている人も多いと思います。
Blenderとは、端的にいえば3DCGを作成するためのツールです。
マルチプラットフォーム前提で作られたため、WindowsMacはもちろん、
LinuxSolarisまで対応しています。

Blenderを用いることで、このようなCGムービーを作ることができます。


これだけのものを作ることができるほど高機能でありながらオープンソースであり、
無償で提供されています。
プロの現場でも、主にコスト削減のために使われるようになってきているようです。
(まあメインはMayaあたりだとは思いますが)

Blenderは、3DCGを作成するだけではなくゲームエンジンも備えています。
Pythonでコードを少々記述するだけで、このような3Dアクションゲームを作ることができます。

先にも説明したとおりBlenderマルチプラットフォームで動作するため、
同一のコードでWindowsLinux上で動作し、
さらに各OS用の実行ファイルを書き出すこともできます。

ここまで高機能な上に無償なBlenderですが、オープンソースの宿命なのか、
非常に複雑で使いこなすのは難しいです。

独自のUIを持っているということもあり、直感的に使うことができません。
(使いこなすことができるようになれば、効率的に操作できるのかもしれません)
特に日本語の情報が少なく、操作法を調べるだけで時間がかかってしまいます。
解説書は多く出回っているため、これらを購入しなければ使いこなすのは困難です。

10年以上昔、私も使ってみようと一時は取り組んだものですが、
当時は日本語化もされておらず、あまりの複雑さで断念してしまいました。
最近は大分使いやすくはなっていますが、相変わらず複雑です。

そこで、私がBlenderを使ってわかったことをこれから載せていければと思っています。
とはいえ、ネット上の情報だけを参考に独学で使ってきたため、
よく理解していなかったりとか、やり方がおかしかったりとか、
もっといい方法があるかもしれません。
しかし、Blenderの情報をもっと増やしていくことができれば、と思っています。

各端末でのFlash+Stage3Dの描画性能の比較

Nexus 7を購入したので、
Tegra 3とやらはどれだけパフォーマンスが出せるのか実験したくなりました。

最新のFlashは、Stage3Dを用いてGPUを利用した高度な描画が可能となっています。
パフォーマンステスト用に、
Stage3Dを利用した2D描画フレームワークであるStarlingを使用し、
大量のアニメーションするキャラクターを描画するFlashを自作しました。
これをAIR化しAndroidアプリとして動作させます。
(ネイティブで作れば性能をもっと引き出せるとは思いますが、実験ということで・・・)

今回のパフォーマンステストでは、
安定して60FPSが出せなくなるまでのキャラクター数を求めました。

比較対照として、まずはGalaxy Nexusの場合です。

大体30体くらいでした。
Galaxy Nexusは比較的GPU性能が低いため、
最新のスマホであればこれ以下になるということはないと思います。
(これ用に作れば、大抵のスマホで同様に動作するということでもありますね)

次にNexus 7の場合です。

100体近く表示できました。
キャラクターの描画はGPUに依存しているので、
GPU性能がGalaxy Nexusと比較して3倍以上高いといえます。

ついでに自分のデスクトップの場合です。

600体以上表示できました・・・(GPUGeForce 9600GT)。
流石にデスクトップと比較するのは酷ですね・・・。

限られたバッテリーや放熱で動作させなければなりませんしこんなものかとは思いますが、
それでも携帯端末でここまで性能が出せるようになったということは、感慨深いものがあります。
もう少し性能が向上すればデスクトップも本格的に不要になってしまうのでは、と感じてしまいます。

Nexus 7を購入しました


10月2日、家電量販店でNexus 7が発売となりました。
私はGoogle公式で先月25日に購入したのですが、結局届いたのは本日2日でしたw
ゴタゴタもあったようで、まだ通関も終わっていない人もいるようなので、
そう考えれば、早いほうなのかなと思っていますw
あと、ヨドバシで買ったら更にポイント10%つくとか(最初1%って言っていたのに)
色々思うことはありますが、
本体価格19800円で2000円のクーポンつき、
あとトランスフォーマーダークサイドムーンがタダでついてきたりしたので、
満足しています。

勿論、使った感じも中々いいです。
まあNexusシリーズは全体的にいいですけど。
この辺は流石Android4.1といったところでしょうか。

一番気になっていたのは、
Tegra 3のパフォーマンスはどのくらい出るのだろうということでした。
Tegra 3を搭載した端末は他にもありますが、
この値段で購入できるというのは、あまりないのではないでしょうか。

というわけで、グラフィックスがいいことで有名なNOVA3を動かしてみました。

動作も結構スムーズで、色々な光源処理が適用されています。

ちなみにGalaxy Nexusだとこんな感じです。

こうしてみると、色々削減されているのがわかります。
Galaxy Nexusは同時期のスマホの中ではGPUの性能が低いので、
このようになってしまうのでしょう。
様々なスマホを対応しなければならない開発者の苦労が伺えます。
(ある程度ツールで自動化しているにしても)

というわけで、Nexus 7を触った感触は良好でした。
Googleが色々な場所で宣伝しているだけあります。

Nexusシリーズは元々開発者向けのリファレンス機という位置づけで、
このように一般向けに大きく宣伝して売るようなものではないと思っていました。
ここへ来て方向転換したのは、GoogleAppleのように、
自分が主導して端末のデファクトスタンダードを構築したかったということがあると思います。
Androidは端末によってそれぞれ多くの点が異なり、開発者を非常に悩ませています。
それを解決するために、次の世代の標準を明確にしたかったのではないでしょうか。
(7インチタブということで、電子書籍とかゲームを売りたいみたいですけど。
標準を明確にするといっても7インチタブだけ明確にしても仕方がないわけですが、
これからそういう方向でやっていくんじゃないかってことで)

私にはよくわかりませんが、
どちらにしてもいい端末であることに変わりはありません。
今は、Nexus 7でどれだけFlash(Adobe AIR)のパフォーマンスが出せるのか、
それが気になっています。

初めてのブログとFlash

黎明期からインターネットには色々とお世話になったものですが、案外私はブログというものをこれまでやったことがなかったりします。
Web系の技術に興味があると言っておきながら、ブログを一度も書いたことがないというのは正直どうなのよって感じでした。

私自身、何かと長続きしないタイプで、面白そうなものを見つけてしまうと、すぐそちらに流されてしまうという意志薄弱な性格です。
このブログも、すぐ放置されることになってしまうかもしれません。
そもそも私は日記をつける習慣がなく、非常に面倒くさがりでもあります。

そんな私の数少ない趣味のひとつに、Flashの製作があります。
Flashというと、あのFlashです。広告とかで鬱陶しいあのFlashです。

今では何かと煙たがられるFlashですが、ネット黎明期においてあの表現力には感動したものでした。
Flash職人まで登場し、その作品を学校のパソコンでみんなで大笑いしながら見たものでした。
その名作や迷作、Flashゲームの数々は、今でも私の記憶に残っています。

私はFlashの魅力に取り付かれ、自分でも作ってみたいと考えるようになりました。
それなりに高額な開発ツールであるAdobe Flash(当時はMacromedia Flash)の購入も躊躇しませんでした。
こうして私の人生は、脇道に逸れていったのでした。

これだけの感動を与えてくれたFlashも今では邪魔者呼ばわりで、用済みとばかりに排斥されてしまっています。
iPhoneは言うまでもなく、Androidでも遂に4.1からはFlashはサポートされなくなってしまいました。
Flashは、時代遅れの過去の遺物になってしまったというのでしょうか。

そんなことはない!と確信しています。

しかし、急激に勢力を増したHTML5(の関連の技術)は、Flashいらない子にしたとされています。
プロプラなFlashと異なりオープンなHTML5は、世界中の開発者の後押しもあって非常に盛り上がっています。
ソースすらもブラウザから見ることができ、文字列やそれに付与されたメタ情報はすべてWebで共有されます。
検索できないFlashGoogleにも嫌われています。

四面楚歌のこの状況において、Flashが生き残りをかけた分野は「ゲーム」でした。
ゲームにおいて、ソースを見ることができてしまってはゲームになりません。
また、ゲームで用いられる画像や音声を直リンすれば見ることができるというのも問題となりました。

Adobeは起死回生の策として、Stage3Dという技術をFlashに投入しました。
これは、Flashから直接GPUを制御し、3DCGの描画や画像処理の高速化が実現できるというものです。
かつてのFlashの技術とは直接の互換性はないのですが、これによりFlashの表現力は飛躍的に向上しました。

確かに、HTML5でもFlashと同じことができるようになってきています。
アニメーションは当たり前、ブラウザ限定でWebGLを用いた3DCGも実現できています。
私自身、HTML5の技術についても理解する必要があると感じています。

FlashHTML5の利点、欠点を説明していると非常に長くなってしまうので省きますが、
決してどちらか片方が良くて片方が悪いというものではないと思っています。
用途に応じて使い分けるというのが普通です。
確かに、どちらか一方であった方が都合がいいというのはわかります。
しかし、そもそも多様性を認めないというのは間違っていると思っています。



Flashは、スマートフォンでもAdobe AIRという形で現在もAndroidiPhoneで動作します。
まだまだ活躍の場所はあると思っています。

これだけの熱意を注げるFlashについてなら、飽きずにブログも続けられるのではないかと淡い期待を抱いています。