2013年4月30日

2013年4月26日

ぼくのかんがえたさいきょうのパスワード管理


パスワード管理方法の公開の動機


最近、様々なサイトのパスワード認証が突破され、様々な被害が出ているニュースをよく見るようになりました。
そして、そんなニュースを聞いて、私の知り合いの人達は、困っています。なんとかしたいけれど、どうしてよいか分からないという人が多いです。

そこで、パスワード管理の仕方が分からないという人に向けて、私が行っているパスワード管理方法を公開したいと思います。

ただ最初にお断りしておくと、私の手法を真似しても、パスワードのクラックの被害に合わない訳ではありません。

あくまで、被害を最小限に抑え、なるべく手間がかからない方法です。

まずは、管理ポリシー

まずは、手法のためのポリシーを公開します。

ポリシー

・被害に合う事を前提とする

皆さんは、絶対に被害に合わない方法をお探しでしょうか?
残念ながら、そのような絶対に被害に合わない方法はありません。
もし、絶対に被害に合わない方法と書かれていれば、疑ってかかるべきでしょう。
どんなパスワードの管理方法でも、必ずリスクはあります。
唯一漏えいしない方法といえば、そのパスワードを破棄する事ぐらいです。存在しないものは盗まれる心配はありません。しかし、パスワードを破棄するとは、そのサービスが使えなくなる事と等価ですので、現実的ではありません。
そこで、まず心構えとしては、「パスワードは漏れる」と考えて対策を行いましょう。
最悪の想定を考えれば、被害が大きくなる事を防げます。


では、次の項目から実例を挙げて、私のパスワード管理を公開します。


パスワード管理実例

アカウントのパスワードは使いまわさない。

これは、もし1つのアカウントがクラッキングの被害にあっても、他のアカウントが被害に合わないようにするためです。
もし、パスワードを使いまわしていると、そのパスワードが漏れると、そのパスワードを設定している全てのサイトが危険にさらされます。


パスワードの生成は、ソフトウェアにまかせる。

人間に解りやすいパスワードは、クラックツールの餌食となりやすいです。
例えば、次に表示している記事では、分からなくなったパスワードを、単語の組み合わせで推測し、パスワードを解析した話が載っています。
実現確率に基づいた辞書攻撃をしてみた話

そこで、インターネット上の様々なアカウントは、パスワード生成ソフトウェアにまかせ、ランダムな文字列を生成しましょう。


覚えるパスワードは、最小にする。

パスワードの生成をソフトウェアにまかせると、パスワードを覚える事はとても困難になります。
いっその事、覚えるのをやめましょう。
パスワード管理ソフトにパスワード管理を任せるのです。
ソフト自体に認証機能があるものを使用して、そのパスワードだけを覚えるようにします。
これをすると、覚えるパスワードは、パソコンにログインするパスワード、パスワード管理ソフトのパスワードの二つでよくなります。
もちろんパスワード管理ソフトのパスワードの生成は、パスワード生成ソフトウェアにまかせましょう。


覚えるパスワード2つは、8文字以上(できれば12文字)

前の項目で覚えるパスワードは最小にしようと書きましたが、その覚えるパスワードがぜい弱では、そこが問題になります。
パスワードは長ければ長いほどいいですが、文字数が増えれば増えるほど、覚えるのは難しくなります。
何回も"ID/パスワード"を入力できるWebサービスでは、パスワード8文字では危険です。
2012年の年末の記事で、http://japan.cnet.com/news/service/35025562/ というものがあります。
この記事によれば、このシステムを用いた場合、5時間半あれば、解析されてしまいます。

しかし、なんでも8文字がダメという事はありません。
インターネット上から何回もパスワードを入力できないものだったら、そこまで気にすることはないでしょう。
上記の覚える二つのパスワード(パソコンのログインパスワード・パスワード管理ソフトのパスワード)もインターネットで何回もパスワードを入力できないので、とても長くする必要はないでしょう。

(パスワード管理ソフトのパスワードは、後述の場合、Dropboxに入っているので直接インターネットにインターフェースが露出しているわけではありません。インターネットに公開していないキーファイルの存在もありますので、ここでは、自分で覚えられそうな文字数でよいと判断しました。)

しかし、漏えいした時にアカウントのパスワードを変更する時間くらいは稼いでほしいので、パスワード生成ソフトで8文字以上(できれば12文字以上)で生成し、そのランダムな文字列を暗記しましょう。

お勧めのパスワード管理ソフト

私のおすすめのパスワード管理ソフト・パスワード生成ソフトウェアは、KeePassXです。
Windows/mac/linux/android と対応しているので、後述する管理の面でとても楽になります。
とはいえ、様々なパスワード管理ソフトがあるので、好みのものを使用するのがいいでしょう。


覚えないインターネット上のパスワードは、できるだけ長い文字列で。

パスワード管理ソフトで管理するパスワードは、もはや、覚えやすい文字である必要はありません。覚える必要ないですから。ですので、最大限活用するために、推奨以上の文字数を登録しましょう。
私の場合、基本は32文字程度のパスワードを設定しています。
システムによっては、多い文字数の場合、バグがあって、ログインできなくなる事もありましたので、
長すぎるのもリスクがあります。
登録したパスワードでちゃんとログインできるかをよく確認しましょう。

外出時にパスワードを確認したい場合

Dropboxにデータをいれ、キーファイルはスマートフォンに追加設定しよう

パスワードが必要な時は、パソコンの前だけとは限りません。
ATMの暗証番号とかは、よく使いますね。
そんなパスワードを使いたいときは、KeePassXのデータをdropboxに入れ、スマートフォンから見えるようにしましょう。ただし、最初のポリシーを思い出してください。必ず、パスワードは漏れます。スマートフォンからパスワードが漏れます。
Dropboxのセキュリティに現在穴はありませんが、いつか事件は起こると考えましょう。
もし、スマートフォンが盗まれて、KeePassXのデータを盗られた場合のために、マスターパスワードにキーファイルというものを追加設定しましょう。
これは、パスワードの代わりに、ファイルデータで認証する機能です。
パスワードとともにキーファイルを使えば、認証が2ついる事になり、復号も難しくなります。
KeePassXを使用する場合は、ぜひキーファイルの機能を使いましょう。
もし、スマートフォンが盗まれても、キーファイルとパスワードを解析するには時間がかかります。
その間に、dropboxのデータを取ってきて、パスワードをすべて変更しましょう。

そして、キーファイルはdropboxには置かず、パソコンやスマートフォンのディスクに保管しましょう。
こうすることで、Dropboxのアカウントが盗まれた場合でも、キーファイルがないので、復元がとても難しくなります。

最後に

これだけ行っておけば、そう困ることはありませんが、
使用しているパソコンやスマートフォンが既に乗っ取られている場合は、まったく意味がありませんので、日ごろから、パソコン・スマートフォンの情報セキュリティ対策はおこないましょう。


また、訂正する情報やさらにいい方法ができた場合は、随時更新していきます。



2013年4月26日のタスク

本日は

  • アルバイト
を行いました。

2013年4月25日

2013年4月25日のタスク

本日は、

  • 事務作業
を行いました。

2013年4月24日

2013年4月24日のタスク

本日は

  • 打合せ(福岡県)
  • 自宅までのバス移動
を行いました。

2013年4月23日

2013年4月23日のタスク

本日は

  • システム開発
を行いました。
また、夕方からは、明日の打合せのため、福岡県小倉に移動。

2013年4月22日

2013年4月22日のタスク

本日は

  • アルバイト
を行いました。

2013年4月19日

2013年4月19日のタスク

本日は

  • アルバイト
を行いました。

2013年4月18日

2013年4月18日のタスク

本日は、

  • アルバイト
  • システム開発
を行いました。

2013年4月17日

2013年4月17日のタスク

本日は

  • システム開発
を行いました。

Rails 3.2 にユーザ権限機能を追加する(devise の導入)

ユーザ機能のライブラリもいろいろありますが、
今回は、有名なライブラリの devise を導入します。

Gemfile に以下を記載する
# Authentication framework
gem 'devise'


devise のインストール
bundle exec rails g devise:install

管理するモデルの作成
bundle exec rails g devise User
bundle exec rails g devise Shop

カスタマイズするビューの作成
bundle exec rails g devise:views users
bundle exec rails g devise:views shops
deviseはビューを作成しないでも仮想ビューが機能するそうです。


参考URI: http://blog.scimpr.com/2012/11/17/rails3-2のアプリにユーザー機能を追加する~devise/

2013年4月16日

2013年4月16日のタスク

本日は

  • システム開発
を行いました。

娘のアレルギー外来に行きました。

rspecの導入

rails でテストを実施するにあたり、テストフレームワークを使用します。
ruby1.8にはTest::Unitが、 ruby1.9には Minitest::Unitが、標準で添付されているそうです。

しかし、今回は rspec-rails を使用する事にしました。
rspec-rails はRuby on Rails用に開発されたテストフレームワークです。
採用した理由は、Web上での情報の多さが、ほかのフレームワークより多いように感じたからです。

導入手順

Gemfileに追記

vi Gemfile
group :test, :development do
  gem 'rspec-rails'
end

rspecのインストール

bundle install

rbenvに反映

rbenv rehash

2013年4月15日

2012年4月15日のタスク

本日は

  • アルバイト
  • システム開発
を行いました。

Railsプロジェクトに必要なライブラリをbundlerで管理する

複数のプロジェクトを作成しているとライブラリの管理が問題となります。

Ruby on Rails では、Bundler という仕組みが用意されてます。
この仕組みによって、プロジェクトに必要なライブラリがわかり、またインストールも簡易化できます。
さらに必要なライブラリをプロジェクトのディレクトリに配置もできます。
今回は、この機能について説明を行います。

Bundler のインストール

bundlerの導入は、以下のコマンドを実施します。
gem install bundler

rbenvでrubyを導入していますが、そのシステムにインストールするgemはこれだけです。
後のgem はプロジェクト配下にインストールする事となります。

ライブラリのインストール

該当のrailsプロジェクトのディレクトリで以下のコマンドを実施します。
bundle install --path vendor/bundle

--path オプションがポイントです。
これでvendor/bundle のディレクトリ以下にライブラリがインストールされます。
ここにインストールしたライブラリを使用するには、
bundle exec を使います。
例)
・ rails のサーバーを起動したい
bundle exec rails s
・ コントローラーの作成をする
bundle exec rails g controller Contents

 
参考URI: Bundler再履修: bundle execって何? gemはどこに入るの?

2013年4月12日

2013年4月11日

2013年4月11日のタスク

本日は

  • システム開発
を行いました。

2013年4月10日

2013年4月10日のタスク

本日は

  • システム開発
を行いました。

2013年4月9日

2013年4月9日のタスク

本日は

  • アルバイト
を行いました。

2013年4月8日

2013年4月8日のタスク

本日は

  • システム開発
を行いました。

2013年4月5日

2013年4月5日のタスク

本日は

  • システム開発
を行いました。

2013年4月4日

2013年4月4日のタスク

本日は
  • Railsの開発
  • 9arrowsのインストール
を行いました。

2013年4月3日

2013年4月3日のタスク

本日は
  • Railsの開発
を行いました。

2013年4月2日

2013年4月2日のタスク

本日は
  • Railsの開発
を行いました。

2013年4月1日

2013年4月1日のタスク

本日は
  • railsの開発
をおこないました。