2014年4月19日土曜日

MewとOpenSSLとstunnelのアップデート(Hearbleedバグ対応 途中編)

OpenSSLのHeartbleed(心臓出血)バグが見つかり、情報流出のニュースも出てきました。

OpenSSLは、大雑把にいうと、ユーザのクライアントコンピュータ(PCなど)が、WebサーバやメールサーバとhttpsやSSLというプロトコルで通信する場合に、ネットワーク経路上のデータを暗号化してくれるソフトウェアです。
今回見つかったバグでは、暗号化されている通信の内容や、秘密鍵を盗聴される可能性があるということです(OpenSSLの該当バージョン(1.01から 1.01f)が使われている場合)。

OpenSSLは、サーバ側(Webサーバやメールサーバ)で使用される場合と、クライアント側(PC, Mac, Linux機など)で使用される場合があります。ですので、サーバ側とクライアント側の、それぞれに対して攻撃される可能性があり、特に今回は、ユーザ情報が集まるサーバ側への攻撃と情報流出がニュースになっています。

サーバ側の対策は、そのサーバの運営者が対応してくれるまでは、ユーザとしては使用を控えるというような消極的なことしか、対応の方法がありません。
よく使用するサービスの場合は、対応状況を確認して、脆弱性のないバージョンになったことを確認したあと、パスワードを変更するようにするとよいと思います。

ところで、ユーザ側は何も対策しなくてもいいかというとそういうこともなく、サーバ側がクラックされたり、悪意のあるサーバを立てられて誘導されたりすると、そこに接続することになるユーザ側のクライアント機もOpenSSLを使用しているとクラックされる可能性があります。

Macの場合、デフォルトの状態ではHeatbleedバグを持つOpenSSLは使用されていないようです。残念ながら、私は、EmacsのMewというメールクライアントを使用しており、MacPortsでOpenSSLとそれを使いやすくしてくれるstunnelというソフトウェアを導入していました。

しかし、MacPortsで、OpenSSLとstunnelをアップグレードしたのですが、Mewが動かなくなってしまいました。今回のアップグレードで、stunnelが5.01になっていましたが、Mewのソースコード(mew-ssl.el)を見ると、Mewはstunnelのバージョン3と4に対応しており、stunnelのバージョンが5だと、バージョン3と認識されるようなコードになっていました。私はそれ以上、自分で修正できるような知識はありませんので、Mewがstunnel 5に対応するまでは、stunnel 4を使用するようにしました。といっても、MacPortsで、stunnel 5をdeactivateして、stunnel 4をactivateしただけです。
stunnel 4でも、使用されるOpenSSLはバグフィックスバージョンなので、当面はこのままでもよいかなと思っています。(Running with OpenSSL 1.0.1g)

$ stunnel -version
stunnel 4.47 on i386-apple-darwin10.8.0 platform
Compiled with OpenSSL 1.0.1e 11 Feb 2013
Running  with OpenSSL 1.0.1g 7 Apr 2014
Update OpenSSL shared libraries or rebuild stunnel
Threading:PTHREAD SSL:ENGINE Auth:none Sockets:SELECT,IPv6

Global options:
debug           = daemon.notice
pid             = /opt/local/var/run/stunnel/stunnel.pid
RNDbytes        = 64
RNDfile         = /dev/urandom
RNDoverwrite    = yes

Service-level options:
ciphers         = ALL:!SSLv2:!aNULL:!EXP:!LOW:-MEDIUM:RC4:+HIGH
curve           = prime256v1
session         = 300 seconds
sslVersion      = TLSv1 for client, all for server
stack           = 65536 bytes
TIMEOUTbusy     = 300 seconds
TIMEOUTclose    = 60 seconds
TIMEOUTconnect  = 10 seconds
TIMEOUTidle     = 43200 seconds
verify          = none

また、Mewもバージョンアップの準備が進んでいる( http://www.mew.org/Beta/, https://github.com/kazu-yamamoto/Mew, http://www.mew.org/pipermail/mew-dist/2014-April/029344.html )ようですので、正式版になったらバージョンアップする予定です。

2014年3月30日日曜日

Grapherでハート形を描いてみる

OS Xには、Grapherという方程式をグラフ化してくれるアプリケーションがあります。Mac OSの頃にはグラフ計算機がありました。
Grapherは、アプリケーションフォルダのユーティリティフォルダに入っています。

ちょっと思い立ってハート形の曲線をGrapherで描いてみました。
ハート形曲線の式は以下のようになります。
円の方程式を基本にして、xの2/3乗の部分でうまくハート形になるように補正している感じですね。
では、描き方(というか式の入れ方)です。
Grapherを立ちあげると以下のような表示が出ます。

今回は平面グラフなので2Dグラフを選びます。すると次のような名称未設定ウインドウが開きます。

このウインドウのグラフ部分の左上の部分(y= と表示されている部分)に、式を入れていくわけです。ただ、このまままでは式を入れにくいので、方程式パレットを表示しておきます。
メニューバーのウインドウメニューから方程式パレット選びます。

すると方程式パレットが開きます。

今回は、標準タブの画面で入力を行っていきます。
名称未設定ウインドウのy=を消去してxを入力した後、方程式パレットの2(四角形の右肩に2が乗っている)ボタンを押すと下記のようになります。

次に、立方根の入れ方ですが、とりあえず下記の状態まで入力して、立方根にしたいxの2乗の部分を選択します。

この状態で、方程式パレットの立方根ボタンを押します。

更に2乗にしたい部分を選び、方程式パレットの括弧ボタンで括弧をつけてから、2乗ボタンで2乗の記号を押します。
最後に、=1を追加し、左の方程式をチェックするとハート形曲線が表示されます。

ちょっと、細い感じですね。
=1の部分を<1にすると、ハート形が塗りつぶされた状態になります。

ハート形が細いので、太くしたい場合は、yに1以上の係数をかけるとよさそうです。
下の図は、yを1.2倍した場合です。画像の倍率も大きくしています。

フォーマットメニューから軸とグリッド...を選んで座標を表示しないようにすると次のようになります。

今回は、実用的かどうかはわかりませんが、人によっては興味があるかもという話題でした。

2014年3月26日水曜日

デスクトップピクチャをタイル状に配置してランダムにな順序で表示する方法

システム環境設定で、好みのデスクトップピクチャをランダムな順序で表示している人も多いと思います。
また、ディスプレイのサイズに比べて画像が小さい場合は、タイル状に配置する方が見栄えがよい場合もあるかと思います。
ところが、たまに「タイル状に配置」が選べなくなる場合があります。

そのようなときは、一旦、画面全体に表示などの他の表示方法を選ぶと、タイル状に配置が選べるようになります。

それだけといえば、それだけですが、ときどき迷うので。

2014年3月9日日曜日

Firefox24 ESRと旧バージョンの同時使用

前のエントリーで、旧バージョンのFirefoxからFirefox24 ESRにアップグレードしたという記事を書きましたが、ここではそれらを同じMacに同居させる方法について書きます。
ここでの使用バージョンは、Firefox 16.0.2とFirefox 24 ESR (両方共日本語対応版)です。確認したOS バージョンは、Snow Leopard (OS X 10.6.8)、Mountain Lion (10.8.5)です。

アップグレードの、大まかな手順は以下の通りです。アプリケーションフォルダ内やFirefoxのブックマークや履歴等が保存されているプロファイルを操作しますので、必ずバックアップを取ってから実行してください。

  1. アプリケーションフォルダのFirefox.appをFirefox16.0.2.appにコピーする。
  2. Firefox16.0.2.appアプリケーションパッケージ内の必要な修正をする。
  3. Firefox16用のプロファイルを作成する。
  4. 最後にFirefox24 ESRをインストール(アップグレード)する。

では、順番に説明します。Firefox24 ESRを事前にダウロードして、Firefox自体は事前に終了しておきます。

1. アプリケーションフォルダのFirefox.appをFirefox16.0.2.appにコピー

Finderでアプリケーションフォルダを開き、Firefox.appを見つけます。
マウスで選択し、command + Dキーを押すとコピーできます。
するとFirefox のコピー.appというファイルが出来ますので、名前をFirefox16.0.2.appなどに変更します。

2. Firefox16.0.2.appアプリケーションパッケージ内の必要な修正

1.でコピーしたFirefox16.0.2.appのアイコン上でマウスを右クリックして、「パッケージの内容を表示メニュー」を選択します。するとパッケージ内のファイルが表示されますので、カラム表示にすると編集するファイルを探しやすいと思います。
編集するファイルは、以下の4つです。

(1) Contents/MacOS/application.ini
(2) Contents/MacOS/firefox
(3) Contents/Info.plist
(4) Contents/Resources/ja.lproj/InfoPlist.strings


(1) Contents/MacOS/application.ini


このファイルをエディタで開き、
[App]
Vendor=Mozilla
Name=Firefox
となっている部分を探します。
Name=Firefox
を、
Name=Firefox16.0.2に修正して、保存、終了します。

(2) Contents/MacOS/firefox


まず、firefoxを同じフォルダ内にfirefox.xと名前を変えます。
その後、エディタでfirefoxファイルを新たに作成します。
内部は、以下のようになります。
#!/bin/sh
/Applications/Firefox16.0.2.app/Contents/MacOS/firefox.x -P Firefox16.0.2 -no-remote

エディタで修正、保存した後、ターミナルでファイルオーナーや実行権が、firefox.xと同じになるようにします。
$ cd /Applications/Firefox16.0.2.app/Contents/MacOS
$ chmod a+x firefox
$ chown [firefox.xと同じlogin id] firefox #idが異なる場合のみ実行

firefoxシェルスクリプトで行っている内容ですが、firefox.xと名前を変更したファイルに対し、Firefox16.0.2というプロファイル(後で作成します)を指定して起動します。また、-no-remoteオプションにより、Firefox16.0.2が自分用のプロファイルの場所をデフォルトとして変更しないので、Firefox 24 ESRが混乱する(アドオンをチェックしたりする)ことを避けられます。

(3) Contents/Info.plist

このファイルの修正で、アクティビティモニタ、Dock上、アプリケーションスイッチャー(command + tab)で見た際のアプリケーション名を、Firefoxではなく、Firefox16.0.2にできます。
エディタでInfo.plistを開き<key>のCFBundlenameを探し、次の行の<string>の内容のFirefoxをFirefox16.0.2に変更します。
<key>CFBundleName</key>
<string>Firefox</string>
<key>CFBundleName</key>
<string>Firefox16.0.2</string>
に変更します。

(4) Contents/Resources/ja.lproj/InfoPlist.strings


このファイルの変更で、Firefox16.0.2アプリケーションが最前面になっている時のメニューバータイトルをFirefox16.0.2として表示できます。
このファイルは、UTF-16形式ですので、対応しているエディタかXcodeを使ってください。
CFBundleName = "Firefox";

CFBundleName = "Firefox16.0.2";
に変更します。


3. Firefox16用のプロファイルを作成する

3.1 Profilesディレクトリのコピー

ここでは、ターミナルで作業します。まずApplication Supportディレクトリに移動します。
$ cd ~/Library/Application\ Support

次に、プロファイルの入ったFirefoxディレクトリをFirefox16.0.2ディレクトリにコピーします。
$ cp -r Firefox Firefox16.0.2

3.2 Firefox16.0.2に古いプロファイルを認識させる

ターミナルで実行します。
/Applications/Firefox16.0.2.app/Contents/MacOS/firefox.x -p

以下のようなダイアログが出たら、続けるをクリックしてください。

以前にプロファイルを作成したことがある場合は、表示されないで次のダイアログが出るかもしれません。
新規プロファイルを作成…を選びます。
新しい名前をFirefox16.0.2と付けて、「フォルダを選択…」ボタンから、コピーしておいたフォルダ「~/Library/Application Support/Firefox16.0.8/Profiles/」を選びます。ki8xc…の部分はユーザーによって異なります。
ここで、「開く」を選び、元のダイアログウインドウで「完了」を選びます。
以上で、デフォルト以外にFirefox16.0.2というプロファイルが作成されます。


4. Firefox24 ESRをインストール(アップグレード)する

あらかじめダウンロードしていたFirefox 24 ESRのdmgを開き、Firefoxアイコンを/Applicationフォルダにコピーしてください。(前の記事も参照してください)
プロファイルの確認方法ですが、Firefoxを立ちあげて、ヘルプ -> トラブルシューティング情報…を選び、アプリケーション基本情報のプロファイルフォルダ項目のFinderで表示ボタンで確認することができます。



以前のバージョンのFirefoxでは、もう少し簡単に複数バージョンの同時使用ができていましたが、最近はFirefoxが起動時に見るファイルがApplication Support/Firefox/profiles.iniフォルダに固定されているのか、プロファイルを明示的に指定して、-no-remoteオプションで起動しないと混乱が起きるようです。

それから、Firefox 24 ESRで確認したところ、自分の使用しているアドオンは一応すべて対応していました。一部、動きがおかしいものもあるようですが、基本的にはESRを使う予定で、古いバージョンは使う必要はなさそうでした。

Firefox24 ESR版をインストールしました

今さらという気もしますが、Firefox 24のESR版にアップグレードしました。アップグレードしてはアドオンの対応を確認して、が面倒になりいつのまにかそのままにしていました。セキュリティ的には非常によくないので、このままにするよりESR版を使うことにしました。
ESR版はExtended Support Releaseの略で、本来、企業や教育機関など特定のバージョンを長期にわたって使用する組織に向けたリリースです。
私は個人ユーザーなので、ESR版についてあまり調べていなかったのですが、以下の理由でアップグレードすることにしました。また、ライセンス的に個人ユーザーをすべて排除しているようではありません。

  1. Firefoxはアドオンが便利でよく使っていますが、最新版にアップグレードするとアドオンが対応していなくて、アップグレードを断念する場合がありました。アドオンが対応していないのは、Firefox自体のバージョンアップが頻繁で、アドオン開発者がFirefoxに追随できないこともよくあるようです。
  2. 古いバージョンのFirefoxを使い続けることはセキュリティ的に危険なので、本当は好ましくありません。
  3. Firefox ESRのサポート期間は、そのリリース時から約1年です。その間は、セキュリティアップデートが6週間程度間隔で提供されます。また、ESR版の次バージョンとは12週間(3ヶ月弱)の重複期間が設けられることになっているので、アドオン開発者が追従できる可能性は高いと予想されます。短所としては、Firefoxの最新機能が使えない点が挙げられます。(注: 開発期間が変更されるようなので、上のリリース期間も少し変わるかもしれませんが、基本的なESRのスタンスは変わらないと思います)

以上から、Firefox 16からFirefox 24 ESRへアップグレードしました。
アップグレード自体は特に難しくありません。
(もし、Firefoxの旧バージョンとESR版を同時に使用したい場合は、次の記事にその方法を書いていますので参考にしてください)

下記のリンクからFirefox 24.3.0esr.dmgファイルをダウンロードしてください。
http://www.mozilla.jp/business/downloads/

Macの場合は、dmgファイルをダウンロードしてから、ダブルクリックして、表示されたFirefoxアイコンをApplicationsフォルダにコピーすれば終了です。

ウェブページには法人向けとは書いてありますが、Firefoxを立ち上げても特に法人ユーザーですかなどの確認はありませんでした。
これで、少しは安心ですね。