2011年3月9日

パスワードのクラッキングを難しくする「ソルト」と「ストレッチング」とは

今日下の記事を読んだ。
HBGary事件の顛末
セキュリティベンダーの HBGaryが先日 Anonymousによってハックされ話題になった。HBGaryはセキュリティ研究者である Greg Hoglundがファウンダーである。彼は長年 rootkit.comを運営しているほか、Exploiting Softwareや rootkitsなどのすばらしい書籍も書いており、この業界ではかなりの有名人だ。
この事件は一体どのようにして起きたのか。きっかけは、HBGary Federalという会社が Anonymousについて調査した結果を公表しようとしたことに対する、Anonymousの報復攻撃ということのようだ。(続き...)
SQL Injectionの脆弱性から、ソーシャルエンジニアリングも絡めて芋づる式にメールアカウントやサーバーのログインパスワードなどが取得されて行く過程が大変興味深い。

ここで言及されていた、パスワードハッシュを作成する際の「ソルト」と「ストレッチング」について、初耳だったのでメモ。

ソルトについては以下のエントリが詳しい。
塩加減は重要? - JULYの日記
(...)非可逆処理を行う際に、ランダムなデータをパスワードに付け加えてから処理を行うと、同じパスワードであっても、処理結果は違ったものになります。この付加されるデータを「ソルト」と言います。
パスワード情報を保存する時は、このソルトの値と処理結果の値を保存しておきます。検証する時には、入力されたパスワードと保存されているソルトの値を組み合わせて非可逆処理を行い、その結果と保存されている値を比較します。(...)

パスワードクラック - Wikipedia
レインボーテーブル - Wikipedia
という事で、ソルトを付加して非可逆処理を行うと「レインボーテーブル」を使ったクラッキングがやりにくくなるとの事。ただしこれだけだとブルートフォースアタックにはあまり効果が無い。

ストレッチングについては以下を参照。
Key stretching - Wikipedia, the free encyclopedia
(...)key stretching refers to techniques used to make a possibly weak key, typically a password or passphrase, more secure against a brute force attack by increasing the time it takes to test each possible key. (...)
Key stretching techniques generally work as follows. The initial key is fed into an algorithm that, running on a given speed of processor, takes a known constant time to apply. The algorithm is constructed so that the delay introduced is acceptable to most users, say one second on a typical personal computer. The output is the enhanced key. The enhanced key should be of sufficient size to make it unfeasible to break by brute force (e.g. at least 128 bits). The overall algorithm used should be secure in the sense that there should be no known way of taking a shortcut that would make it possible to calculate the enhanced key in less time (less processor work) than by using the key stretching algorithm itself.
要するに、最初のキーに対して何万回(上のページの例では65000回)も(ハッシュ関数などで)計算して求めたキー(enhanced key)を使ってパスワードを非可逆処理しておく。そうするとユーザーが入力したパスワードをチェックする時にも同じ回数の計算処理を行うので1秒程度の時間がかかってしまうが、利便性が損なわれる程ではない。
ところが悪意を持ったクラッカーがブルートフォースでパスワードを取得しようとした場合にも1回の試行につき1秒程度(コンピュータの性能にもよるが)の時間がかかり、合計すると通常のブルートフォースよりも桁違いに長い時間となってしまい現実的ではなくなる、という事らしい。

なるほど、勉強になりました。^^

ついでに検索にヒットした下の記事も読んで改めて参考になった。
Rg00dP@55Wrd53z―奥深きパスワードの世界 - 世界のセキュリティ・ラボから:ITpro

人の造りしもの――“パスワード”の破られ方と守り方 - @IT
くれぐれも簡単なパスワードの使用には注意したい。





2011/04/22 追記:
パスワードについて非常に分りやすい説明を見つけたので、リンクを。
パスワードの話


2011/05/10 追記:
こちらも必見。
これからの「パスワード」の話をしよう
パスワードをハッシュ化(暗号化)保存することを法律で義務化するくらいのことが必要だと思う


2011/10/10 追記:
また新しい記事が出たのでリンクを追加。
本当は怖いパスワードの話(1/4) - @IT 









.

2011年3月1日

auからHTC Evoが発売へ。でも電池の持ちにはご注意を。

日本でauからHTC Evoが発売されるとの事。
asahi.com(朝日新聞社):KDDI田中社長「もう戻れない感覚」、WiMAX搭載「htc EVO WiMAX ISW11HT」に自信

+525円でWiMAXつなぎ放題、Wi-Fiルータにも:auがスマホのテザリング解禁――WiMAX対応Android端末「htc EVO WiMAX ISW11HT」

WiMAXで快適テザリングできるAndroidスマホ『htc EVO WiMAX ISW11HT』
追加料金がたったの525円で下り最大40MbpsというWiMaxが利用出来るとは、全く羨ましい限りだ。

米国ではWiMaxを使ったかどうかに関わらず(例え対象エリア外であっても)、HTC Evoを持っているというだけでSprintから月10ドルの追加料金を請求される。しかも標準のテザリング機能は4G接続でしか使えず、使う場合は別途月29.99ドルのオプション契約が必要になる。

しかもこの4G(WiMax)というのがそんなに速くない。去年の6月にEvoを買った時は喜び勇んでスピードテストをやったものだが、結果は散々だった。場合によっては3Gよりも遅かったので、ハードウェアの故障を疑ったくらいだった。
ハワイのWiMax
ところが、今日数カ月ぶりに4G接続をオンにして今測ってみたら、この通り8Mbps弱のスピードが出ている。Sprintの通信設備も徐々に良くなって来ているみたいだ。

auの通信事情がどうなのかは分からないが、きっとハワイとは比べ物にならないぐらいに整備されているだろうから、最大40Mbpsという速度も誇大広告ではないのかも知れない。もし本当に20Mbpsとか30Mbpsとかという速度が出るのであれば素晴らしい。

ただ、一つ見落としては行けない点がある。これは4月にauから発売されるEvoも(バッテリー容量が変更されていない限り)多分同じだろう。

それはWiMaxを使った場合の極端なバッテリーの持ちの悪さだ。正確に測った訳ではないが、体感的には3G接続で使用している時の10倍ぐらいの早さでバッテリー残量が減って行く感じだ。実際、今4G接続している10分ほどの間に、バッテリー残量が10%も減った。その間にやった事といえば、メールのチェックと3回ほどのスピードテストだけだ。

つまり、ずっとWiMaxで接続してアクティブにネットを使っていたら、大体100分ほどでバッテリーが無くなる。

購入した時にはデフォルトで4G接続がONになっていて、使ってもいないのに数時間で電池が切れるのでびっくりしてショップに交換しに行こうかと思ったほどだった。

これが理由で、僕は購入以来ずっとEvoでの4G接続を実用的に使った事がない。今回の様にたまに実験的にスピードテストをやってみるだけだ。

Evoでバッテリーを長持ちさせる秘訣は、4Gに限らず3GもWifiもGPSも、使わない機能はとにかくオフにしておいて、必要な時にだけオンにする事だ。僕の場合はこれで50時間は充電せずに使えている。月曜の朝に充電しておけば水曜の朝まで持つという感じなので、これならまあ問題ない。

という事で、auのHTC Evoを購入予定の方はWiMax使用時のバッテリーの持ちの悪さについてはご覚悟を。

しかしテザリング機能が標準なのは、羨ましいなぁ。。。






.

2011年2月22日

前から気になっていた超小型省電力PCを試してみた - その2 リベンジ編

FIT-PC2iについて、前回は購入して3日で電源がうんともすんとも言わなくなってしまったと言う所まで書いた。

さて、あれから早速(実際には2~3日ぐずぐずしてから)メーカーへ状況を説明するメールを送った。すると割と迅速に「修理もしくは交換するから米国支社へ送り返してくれ」という旨の回答が来た。郵便局から指定された住所へ送って待つ事約2週間、思っていたよりも早く交換品が届いた。「修理して戻されてもいやだな~」と思っていたら、シリアルナンバーとかも別のものになっているので、多分新品と交換してくれたのだろう、、、と思う事にする。

前回はおそらくHDDの発熱がまずかったでのはないかと思っているので、今回はさすがにHDDはやめたい。SSDにしようかとも思ったが、Intelの40GBだと100ドル以上もする。正直言って予算オーバーだ。

16GB Compact Flash+SATAアダプタの組み合わせだとAmazonで合わせて約30ドルといった所なので、これならいいかも知れない。でも正直やっぱり予算オーバー。^^;

と思っていたところに、手元に16GBのUSBフラッシュドライブがある事に気がついた。

「これで行ってみよう!」


ととりあえず Ubuntu 10.10をフラッシュドライブにインストールして起動して見た。すると案外普通に動く。ターミナルで作業する分にはほとんど問題無い。でもやはりGUIのアプリケーションを使い出すと動作はHDDの時と比べても1テンポか2テンポ待たされる感じで、遅い。使えなくはないけど、使いたくない感じだ。

そこで、今回は「Puppy Linux」に登場してもらう事にする。

初めてPuppy Linuxを使った時は衝撃的だった。古いラップトップで動かしても、そのサクサク感は快感だ。なんせ最新のVersion 5.20でも約127MBしかない。一度起動したらOSを全てメモリーに読み込んで動作するので、ディスクアクセスで待たされる事が無い。データの書き込みもOSの終了時(または一定期間経過時?)にまとめて行われる(多分)ので頻繁に書き込みをしてフラッシュドライブの寿命を縮めるという心配も少ない(多分)。


Chromeブラウザだって使える。


iptablesは標準で入っているのでFirewall設定も出来た。opensshが見当たらなかったがダウンロードしてソースからコンパイルしたら問題なく動いた。Ubuntu 10.04 (lucid lynx)がベースになっているそうなのでその辺はかなり融通が効きそうだ。エディタもGUIのGeanyというものしか無い様だったので、nanoをソースからコンパイル。これも問題なし。rdesktopもソースコンパイルでOK。

ついでにVNC Serverも入れて見ようかとソースをダウンロードしてコンパイルして見たが、これはmakeの途中でエラーになって出来なかった。原因を追求するパワーが今は無いのでとりあえず諦める。

という訳で、新しいFIT-PC2iは1週間を経過した今も順調に動いている。
メインのFirewallとして使うのはまだちょっと怖いので、しばらくはこのままバックアップ用(もしくは僕のテスト環境)として動かそうと思っている。(実際の所Puppyを入れた時点でほぼサーバーとしての運用は諦めた。)

これからFIT-PC2iを購入予定の場合は、くれぐれも熱対策にはご注意を。(笑)




2011/05/25 追記:
やはりPuppu Linuxでは用途が限られるので、Ubuntu 10.04 Serverを入れる事にした。最初64bit版をインストールしようとしたら、「このCPUは対応していません」という旨のメッセージが表示されてダメだったが、32bit版は問題無くインストール出来た。それから1週間ほど常時電源ONで動かしているが、快調に動いている。HDDもSSDも入れずにUSBメモリから起動している。これだとディスクアクセスの遅さがネックになってデスクトップ版のGUIを動かすのは辛かったが、サーバーとして使う分には特にストレスは感じない。ちょっと心配だった温度の方も、本体の外側から触ってみて「温かいな」と感じる程度なのでこれなら大丈夫そうだ。


2012/05/31 続編追加:
UbuntuでFIT-PC2iの無線LANを有効にするには?









.

2011年2月19日

Amazon S3で静的なWebサイトをホスティングする方法

昨日、Amazonからこんなメールが送られて来た。

Dear Amazon S3 Customer,

We're excited to announce new features that make it easy to host static websites on Amazon S3. Customers already use Amazon S3 to host images, video, and other content for their websites, but until now they haven't been able to effectively host their entire website on Amazon S3. That's because even though customers can configure an Amazon S3 bucket as a website, users accessing the root of the website (e.g. http://www.mywebsite.com/) would see the list of objects in the Amazon S3 bucket instead of the website's home page. Also, if an error occurred, users would see an Amazon S3 error message instead of a website specific error message. In response to customer requests, we've added support for root and custom error documents to address these issues.
(...)

Amazon S3を使って静的なWebサイトを簡単にホストする為の新機能についてお知らせします。既にS3で画像や動画その他のコンテンツをホストしてWebサイトから利用されているお客様はおられますが、今まではサイト全体を効果的にホスティングする事は出来ませでした。その理由は、Amazon S3のBucketをWebサイトとして設定する事は出来ても、そのサイトのルート(例: http://www.mywebsite.com/)にアクセスしたユーザーにはBucket内のオブジェクトの一覧が表示されてしまうからです。また、もしエラーが起きた場合は、Webサイトに特化したエラーメッセージではなくAmazon S3のエラーメッセージが表示されます。お客様からの要望にお答えして、これらの問題に対処する為にルートドキュメントおよびカスタムエラーメッセージのサポートを追加しました。
(略)

Sincerely,
The Amazon S3 Team

との事なので、早速久しぶりにS3を使って見た。

管理画面からBucketを作成。

Bucketのプロパティを開いてパーミッションタブで公開範囲を設定し、WebSiteタブでWebサイトとしてアクセス可能にするかどうか、Indexページのファイル名、エラーページのファイル名を指定する。

Bucketにindexページとエラーページ、画像ファイルとCSSやScriptのフォルダなどをアップロード。
今回はテスト用に自分のWebサイトからコピーして見る。

BucketのURLをブラウザで開くと...表示された!

「静的なWebサイト」と言っても、サーバー側が静的なだけでもちろんクライアント側ではAjaxで色々する事は出来るので、使い方によっては重宝するのではないだろうか。

あるいは、通常のWebサーバーが落ちた時など、緊急時のバックアップ用とかにも良いと思う。











.

2011年2月15日

人気急上昇中のファイル同期サービス SugarSyncをLinuxで利用する方法

去年からSugarSyncを使っていて、お気に入りのサービスになっている。

スマートフォンから写真をアップロードしておけば、勝手にPCに同期されるのがとても良い。このおかげでスマートフォンをUSB接続する事がほとんど無くなってしまったぐらいだ。

複数のPC間でドキュメント類を同期する際にも、フォルダ単位でどのPCとどのPCを同期させるか指定出来るのが嬉しい。


SugarSyncは便利.もっと評価されるべき.: tadachi-net 出張所

5GBまで無料の“クラウド”ストレージ SugarSyncはDropboxを超えたか? - デジタル - 日経トレンディネット

tasigi.com - 比較表


ただ、悲しい事に現在の所SugarSyncからはLinux用のクライアントソフトウェアが出されていない。ライバルのDropBoxにはあるのに、全くもって惜しい限り。何かLinuxをサポート出来ない理由でもあるんだろうか?

そこで何とかする方法は無いものかと、例のごとくGoogle先生に聞いてみた。

仮想マシンでWindows XPを動かしてLinuxホストとのフォルダ共有を利用するというアイデアを見つけた。なるほど、そういう手があったか。

Mr. Shiney’s Blog of Goodness » Blog Archive » Using SugarSync under Linux


またこちらのフォーラムの2月9日の書き込みには、Wineを使ってWindows版のクライアントソフトが動いたという情報があった。

SugarSync for Linux . Archive (153) . Feature Request . Forums . SugarSync Community

どちらかの方法でとりあえずやって見ようと思う。

いずれにせよ、早くLinuxクライアント出した方がいいと思うけど、、、SugarSync様。



2011/4/13 追記:
「Wine」を使う方法を試して見たのでこちらのエントリに書きました。
SugarSyncをLinuxで動かして見た

2012/6/8 関連記事を追加:
Windows/Mac/LinuxでSugarSyncの代わりに使えそうな4つのクラウドストレージ








.

2011年2月5日

Androidのブラウザでリンクをタップした時の枠線と背景色を消す方法

Androidのブラウザでは、リンクをタップするとその瞬間から次のページに移るまでの間、リンク部分に緑色の枠線と薄い緑色の背景が表示される。

機種によってはオレンジ色の場合もあるらしい。




とにかく、この枠線と背景色がとても目障りになる場合がある。JavaScriptを使ったゲームなどを動かしている時は特にそうだ。

そこでこの枠線と背景色が表示されない様にする方法を調べてみた。

Android browser GREEN border on click... - Stack Overflow

-webkit-tap-highlight-color: rgba(0, 0, 0, 0);

というスタイルを該当のリンクに適用すればOKとの事。

実際に試した見たところ、これでバッチリだった。
良かった良かった。









.