2013年4月17日水曜日

RSからRaspberry Pi Type Bが届いた(梱包について)

RSから、発注していたType B基板が届いた。おなじみの、ラズベリーカラーのプラケースで梱包されていた。伝聞でしか知らなかったけれども、いまでもこのケースで出荷しているようだ。
3個注文した
いわゆる「INVALID IF SEAL BROKEN」が手前と奥の面に貼ってあり、開梱されていないことを証明している。薄い紙なので、簡単に破れるが、ケース側に粘着物は残る。ケースはやわらかい(日本語でいえばビニール風)ので、溶剤を使うとよくないかもしれない。ホームセンター等で売っているシールはがしの溶剤ならいいのかもしれない。

内部には、「Quick Start Guide」と「Regulatory Compliance and Safety Information」ということで、最低限のマニュアルシートが2枚と、導電プラスチックの袋に入った基板が入っていた。袋は密封されていないので、基板を出すのにハサミは必要ない。

箱のなかみ
ケースをじっくり眺めると、フタ側になにやら基板サイズに近いでっぱりがある。

フタ側に基板サイズのでっぱりが
試しに載せてみると、たしかに基板サイズである。

ぴったり載る
で、この写真で右側はツメになっていて、基板がひっかかる。左側は単なる高さ合わせのようだ。左側中央に突起が出ているので、SDカードがあたってしまう。したがって、上写真の向きで取り付けることが想定されているようだ。

ツメで固定される。SDカードスロット側になる

反対側は単なる台で、固定されない
載せてみたところではいい感じなのだが、やはり左側がぶらぶらなので、USBやEthernetのコネクタ側を触ると基板がずれてしまう。GPIOをいじるときはSDカード側なので、固定されていて動かないから、それでよしということなのかもしれない。

というわけで、梱包ケースもそのまま実験用や持ち運び用に使ってね、ということがわかった。なので、特にケースにこだわりがない場合は、RSから基板だけ買ってもケースつきみたいなものだと理解して、高いケースをわざわざ買わなくてもよさそうだ。

なお、element14から届いた基板はMade in the UKだったけれど、RSから届いたのはMade in Chinaだった。element14はfunnelグループ企業で中華資本だったと思っていたので、なんだか不思議。プラケースの表にもRSのパーツ番号が書かれた黄色いシールに「Made in China」と書かれている。白いほうのシールの余白は、名前とか書いておけば学校でも誰のものかわかってよいかもしれないな、と思った。

2013年4月11日木曜日

RS社のRaspberry Pi用ケース

Raspberry Piを校費で購入するとき、本学ではRSコンポーネンツとの取引があるので、途中に業者を入れなくても済むことから、RSに直接発注することにした。すると、ケースの取扱があり、クリア、ブラック、ホワイトの3色から選べるので、クリアを注文してみた。

いつも話題になるのは納期だけれども、ケースは翌日届いた。横浜市瀬谷区から。そりゃ早いわけだ。

届いたRSのケース
雰囲気はなかなかよい。上面と底面にRaspberry Piのマークが刻まれている。それから、底面だけれどもしっかりと放熱のための穴が開いている。Raspberry Piはかなり熱くなるので、密閉されたケースでは動作が不安。それに、ModMyPiのサイトでは、CPUとRAMが積み重ねられた部分(基板中央)に載せるヒートシンクも扱っているぐらいなので、こういう配慮は好印象だ。
空気穴が空いているのが好印象
ケースは上下のパーツを組み合わせる一般的なものだけれども、上と下では材質が違う。上はメラミン樹脂っぽい硬質なもの、下はやや柔らかめのプラスチックだ。
左が下の部分、右は上のカバー部分
この理由は、基板を取り付けてみるとわかる。4つのツメで基板を固定するようにデザインされている。メラミン樹脂ではちょっとした変形でも割れてしまうから柔らかくなければいけない。そして、ツメで固定されていることで、カバーをしない状態でも非常に安定している。ModMyPiの標準ケースは、ただ基板を載せるだけなので簡単に外れてしまうが、このケースでは基板がゴム足のついたプラスチック台に固定されていることで、安心して絶縁が担保された状態でケーブルのつけ外しができる。電子工作をすると、机の上は金属部品やはんだくずで散らかりがちだけれども、これなら基板の裏がそれらに接触する心配がない。
4箇所のツメで基板をがっちり固定できる
上のカバー部分は、やや背が高くなっている。カタログ写真では少々不恰好に思えたが、ひとつにはエアフローが確保できること、もうひとつは、拡張基板を載せた状態でもカバーが乗せられる空間があるということで、考慮されたデザインの結果なのだろう。
上にややゆとりがある
ちなみに、GPIOからケーブルを外に引き出す穴はあいていない。いかなるケーブルを引き出す隙間もないので、GPIOで実験するときにはカバーを外す必要がある。カバーをつけたければ拡張基板として上に載せる以外に方法はない。そして、拡張基板からも当然線を引き出すことはできないので、完結した基板でなければならない。まぁ、ほこりよけとか、持ち歩き用と考えるべきなのだろう。ただ、カバーはメラミン樹脂なので変形には非常に弱いから、このケースでバッグに他のものと一緒に入れると傷になったりヒビが入ったりするのではないかと思う。心配なら、透明な粘着シートを貼っておくのが無難ではないだろうか。

2013年4月4日木曜日

Androidアプリで「アカウントの取得」させることの危険性

しばらく前に中古のGalaxy Nexsusを購入し、Androidの世界に身を投入しました。

GoogleがAndroidを買収して自己のプラットフォームにしていく過程で、Jobsと同じように「盗んだもの」(僕の感覚では、Sunから盗んだものが多い―実際の裁判では、争点がAPIに限定されて、Sunとは無関係という判決となりましたが)ということで、またマルウェアやガワだけ替えた偽アプリなどストアの品質などにも懸念があり避けていたのですが、Jelly Beanを入れてみると、ICS以後ようやく本気で取り組まれたfluid(表示の滑らかさ)のおかげで、「使える」プラットフォームに育ったということがわかりました。

Nexusプランドを選ぶのは、やはりカスタマイズされていない生のAndroidに触れて評価したかったためでしたが、邪悪そうに見えても自分の目と手で評価しなければわからないことは多いと実感しました。

ただ、懸念されたストアの品質ですが、たしかにiOSのApp Storeと比べれば身元不明な怪しげなアプリが目立つ印象はありましたが、iPhoneを誰もが持つようになって以後のApp Storeとどれだけ違うかというと、それはなんとも言えないように感じられました。

とはいうものの、Google Playはアプリが要求する権限を明示しており、これがアプリ内の設定ファイルから自動生成されているならば嘘ではないと思われるので、クリーンなアプリかそうでないかの判断がしやすいのはApp Storeにないよさと思うようになりました。App StoreではAppleの審査のみが唯一の基準で、ストアに出ているものを信用するしかありません。しかし、Appleは端末固有番号であるUDIDを取得するアプリは審査しないといいつつ何年も放置しています。少し前の表明でも、UDIDを取得するアプリは「新たに審査対象になる場合(バージョンアップを含む)」に審査から落とすということで、現在ストアに出ているアプリで放置されているものは、いつまでもUDID取得機能が残ったままインストールされてしまうという体たらくです。

UDID取得が嫌われるのはもちろん端末が追跡されること、UDIDをキーにして、様々なプライベートなデータを集約できてしまうことにあります。とはいえ、以前の記事にも書いたように、Apple自身が端末追跡IDをOSの機能に載せており、それを広告屋に売っているという共犯関係にあるのですから徹底することは期待できません。また、連絡先などをごっそりもっていくアプリも堂々と審査を通っています。TwitterやFacebookもそうですが、これはあとから同期をオフにできるので、いちいち連絡先を空にしてからインストールし起動するなどしていれば被害は防げるという逃げ道はありそうです。

さて本題。Androidアプリの場合、Google Playに載っているほとんどのアプリが、「アカウント情報へのアクセス」要求をします。好意的に考えるなら、「アプリが固有のアカウントを作成すること」であろう、これはAndroidアプリすべてに共通の仕様であり、Androidの下にあるLinuxのレベルで、アプリごとに違うアカウントで動くようにし、他のアカウントで動作するアプリとはデータ共用できないようにしてセキュリティを保っていることを指しているはずだ、といえるかもしれません。単にそれを言っているだけなら問題はないかもしれません。しかし、アクセスに「読み取り」があった場合、これは端末にどのアプリがインストールされているかをどこかに送信するという意味になります。これはプライベートな情報であり、嫌がる人は多いのではないでしょうか。

Androidアプリの解析結果を確認できるサイトsecroidは、内部で使用されているライブラリやフレームワークについても検証し、危険性のあるライブラリやフレームワークあった場合、どんな理由でそれが危険なのかという情報提供がなされることで、スキルは必要なものの、より深い安全性判断ができます。iOSでは危険かどうかの判断はAppleにすべて委ねられており、ストア利用者はそれを知るすべはありません。

まとめると、Google Playでアプリのインストール時に表示される、「要求される権限」には必ず目を通しておきたい(自己責任ですが)ということ、ただし表示されている内容には、わかりにくいプライバシ侵害が含まれている、ということになります。

ところで、iOSで自由なカスタマイズをしたい、Appleの審査を通らなかったアプリを入れたいという理由で「脱獄」(Jailbreak)をしたがる人は多いのですが、iOSにおいてjailはほぼ唯一の安全弁であり、これを外せば単なるパソコンと同等かそれ以下のセキュリティ状態に置かれるということは覚悟しておくべきです。jailはFreeBSDが最初に導入したかと思われるのですが、Unixに少々古くから含まれていたchroot()機能、すなわち、アプリ側から見えるトップディレクトリを、特定のディレクトリに設定することに加え、プロセス間通信やシステムコールなどを完全に分離し、そこでセキュリティ上の問題が生じてもOS全体には影響が及ばないようにする技術でした。iOSはこれを取り入れ、アプリがアクセスできる範囲全体を「サンドボックス」(お砂場)と呼んでいますが、AndroidとiOSの大きな違いは、iOSアプリが利用するObjective-Cランタイムの驚くほどの柔軟性にあります。オブジェクト指向技術の言葉でいえば、mixinが簡単にできてしまう作りです。たとえそれがOSのオブジェクトであっても、アプリ側から簡単にメソッドの追加や置き換えができてしまう強力な自由度が諸刃の剣となるのです。脱獄後にはいろいろなtweakを組み込むことが楽しくなりますが、これこそが、OSの機能を柔軟に変更している具体例です。

よくあることですが、SafariのエンジンであるWebKitには、いくつもの脆弱性がつねにあります(少ない、といってもゼロにはならない)。したがって、それほどたいした脆弱性でなくても、うまくexploitを作ればSafariをアクセスするだけでSafariが触れる範囲内で何かコトを起こされてしまう可能性はあります。サンドボックスが機能していればSafariだけの問題で済みますが、脱獄していた場合を想定したexploitの場合、OSごと乗っ取られる可能性を考慮しなければなりません。

とはいえ、UDIDや連絡先の保護、またファイアウォール設定や広告ブロックなどをしたい場合には、現状では脱獄が不可欠というジレンマがあります。Androidでrootをとるというのは実はたいしたことはなく、/bin/suという管理者権限に移行するコマンドが削除されているので、それを入れてやるというだけのことです。rootにはパスワードがついていませんから、root権限を使って便利になるよ的な説明で釣ってLinuxを乗っ取るトロイを仕込むということはあるかもしれません。報道によれば中国にはAndroid携帯による巨大なボットネットができているといいます。

iOSについては、脱獄以外の手段での何らかのカスタマイズ手法の開発、Androidを含めるならば、素性の分からない人物の作成したアプリケーションに気をつけ(ストアの評価はステマもどきがほとんどです)、甘言には乗らない心構えが必要かと思います。