Monthly Archives: 1月 2013

[telecom] 国内携帯3キャリアの研究開発費あるいは自前か出来合いか

Pocket

 

NTTドコモ、au、ソフトバンクモバイルはどれだけ研究開発にカネを使っているのだろうか。かるく調べてみたのだがこいつを見てくれどう思う。

 

RandD

左軸は3者の研究開発費を示す。単位は億円。

右軸は、「契約者は各社の研究開発に月々いくら払っているか」を示す。単位は円。

ドコモが飛び抜けている、というかおいソフトバンクどうなってんだ。

四捨五入されて9になってるけど、実際には8.6億円でありしかもこれはソフトバンクモバイルではなくソフトバンクの研究開発費である。つまり携帯電話システムへの費用はもっと少ないはず。

端的に言えば「ドコモは派手に、auはそこそこ研究開発をしており、ソフトバンクは出来合いを買ってきている」ということを表しているわけですな。

それ以上のコメントは差し控えるとして、データ自体は2011年度、2012年度のものを使っています。かるーく調べただけなので、あくまでも概要ってことで。

◆参照
http://www.softbank.co.jp/ja/irinfo/policy/development/

http://www.ullet.com/%EF%BC%AB%EF%BC%A4%EF%BC%A4%EF%BC%A9/%E6%A6%82%E8%A6%81/type/rd
http://www.kddi.com/corporate/ir/library/presentation/2013/index.html

http://www.nttdocomo.co.jp/corporate/ir/finance/highlight/
http://www.nttdocomo.co.jp/corporate/ir/finance/indicator/index.html

◆契約者数
http://www.tca.or.jp/database/2012/12/

 

 

No tags for this post.

[telecom] HLR(加入者情報DB)無双について

Pocket

出遅れ感があるが、2012年のドコモ、2013年のau通信障害に関して、個人的にまとめていたものを公開。

ドコモ、障害で会見「スマホ信号量の見極め甘かった。ユーザーの信頼損ねた」

KDDIが4G LTE通信障害の詳細を説明――設計・判断ミスが原因
2012年の1月にはドコモが、そして今年2013年1月にはauで通信障害が発生したが、これらはいずれも加入者の情報を扱うHLR(Home Location Register)に起因する。

実はこのHLR、日本だけではなく、世界中のキャリアをなぎ倒した歴戦の勇者なのである。
その輝かしい戦績は後述するが、これを見るとHLRという設計思想そのものに考慮が足らなかったように感じるがどうなんだろうか。
どのキャリアにしても、ちょいと輻輳したらHLRが死亡して大惨事というのは百も承知でこの有様なだけに。

◆ドイツ T-Mobile Deutschland GmbH,
2009/4
HLR死亡により4000万人に影響。
NSN製。

◆アメリカ Verizon
2011/4
HSS(HLRのようなもの)の断続的な障害。
HSSはNSN製。

◆ノルウェー Terenor ASA
2011/7
(装置種別は不明)装置の更新でサービス断
300万に影響

◆フランス orange
2012/7
HLR更新でデータ不整合→過負荷発生→サービス断の黄金リレー
2600万人に影響
HLRはAlcatel-Lucent

◆イギリス O2(Telefonica UK)
2012/7
HLRダウンにより700万人に影響。いまだに原因判明せず。HLRはEricsson製

2012/10
HLRダウン。
対策のため現在までに1600万ドル突っ込んでてEricssonに対しては「俺の怒りが有頂天」状態。

 

No tags for this post.

パスワードハッシュにmd5を使うのは小学生までだよねー

Pocket

おおよそのUNIX-likeシステムでは、パスワードファイルはMD5でハッシュされるのが一般的だ(った)。

しかし、MD5は1996年に脆弱性が見つかって以来、あまり推奨される方式ではなくなっている。

Wikipediaで調べてみても「パソコンレベルで、数10分程度で、同一ハッシュ値の非ユニークなデータ列を生成できる実装が広まっている」などと恐ろしい事が書かれている。

つまり暗号化されていてもMD5ハッシュだと総あたりで易々と破られてしまうということになる。

こういった情勢のもと、多くのシステムでは、パスワードファイルのハッシュ方法を変えたり、または自由に変えられるようになっているので、もしお前らがUNIX-likeシステムを管理しているなら、いますぐ確認しろ。

じゃあ何に変えたらいいの→SHA-2かBlowfishおすすめ。

代替のハッシュ方法としては、Blowfish, SHA-2などが挙げられ、強度としてはBlowfishの方が高いようだが、そのアルゴリズムがNIST(アメリカ国立標準技術研究所)の承認をまだ受けてない事から、SHA-2を選択するケースが多い。

そのシステムがどのハッシュを採っているかは、ハッシュ文字列先頭から判断できる。

$1$: MD5

$2?$: Blowfish. ?はaかyかx.

$5$: SHA-2(SHA-256)

$6$: SHA-2(SHA-512)

FreeBSD 9.1-RELEASEはsha512(SHA-2)がデフォルト。手元にLinuxがないので確認できないのだが、UbuntuはまだMD5のよう。

しかしFreeBSDはCVSを見ると2012年の7/15に変わっている。9系列で言えば9.1-RELEASEからデフォルトが変更されているようだ。

なお、9.1-RELEASEだから安心と思ったあなた。もしあなたが9.0以前から使い続けているなら注意が必要だ。これについては後述。

FreeBSDでハッシュ方法を変えるには

FreeBSDでは/etc/login.confで制御する。

以下の行を書き換えればOK。

:passwd_format=sha512:\

md5ならmd5, SHA-2ならsha512, Blowfishならblfである。

書き換えた後、以下のコマンドでlogin.conf.dbを作り直すこと。

cap_mkdb /etc/login.conf

パスワードを再設定しないと新ハッシュになりません!

注意。上記設定をしたあと、もう一回パスワード設定しないと反映されません。

なんと不親切な、と思ったけど、よく考えたらそらそうだ。

もし自動的に変更しようとしたら、たとえばmd5でハッシュされた文字列を、いったん元に戻す必要がある。

元に戻させないようにわざわざハッシュしているんだから、自動でできるわけがない。

だから面倒でも、passwordコマンドを叩いて再設定すること。

同じパスワードであっても構わないが、まあ今回の作業の性質を考えると、このタイミングでパスワード変えた方がいいと思う。

9.0以前から使い続けていた人は注意

ということで、もしあなたのFreeBSDが9.1で、デフォルトのハッシュがSHA-2になっていたとしても、9.0以前にパスワード設定してそのままなら、ハッシュはmd5のままである。

実際に俺のマシンは9.0で新規インストールし、ついこの間9.1にアップグレードした。

$ uname -a
FreeBSD sylph 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
$ grep passwd /etc/login.conf|grep -v "^#"
:passwd_format=sha512:\

とまあこの通り、SHA-2になっている。しかし以下のログで示すように、先頭が$1$になっておりMD5ハッシュであることを示している。

cap_mkdbしても同じ。(なおハッシュの核心部分はさすがにマスクしている)

$ sudo grep harukiya /etc/master.passwd
パスワード:
harukiya:$1$xxxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash
$ sudo cap_mkdb /etc/login.conf
$ sudo grep doe /etc/master.passwd
harukiya:$1$xxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash

で、passwdコマンドでパスワードを設定してやると、めでたく先頭が$6$に変化した。

(なおここではマスクしているが、実際にやってみるとハッシュがmd5に比べて長くなっていることが分かる)

$ passwd
Changing local password for harukiya
Old Password:
New Password:
Retype New Password:
$ sudo grep harukiya /etc/master.passwd
harukiya:$6$xxxxxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash

このままでもいいけど、せっかくだからblowfishに変更。/etc/login.confでsha512をblfへ。

:passwd_format=blf:\

めでたくハッシュ先頭が$2a$に。

$ sudo cap_mkdb /etc/login.conf
$ passwd
Changing local password for harukiya
Old Password:
New Password:
Retype New Password:
$ sudo grep harukiya /etc/master.passwd
harukiya:$2a$xxxxxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash

もちろん、このあとrootのパスワードも設定しました。

No tags for this post.

FreeBSD 9.1-RELEASE! ただしpackageがそろっていないので注意!(2013/5/15 追記)

Pocket

遅れに遅れた9.1-RELEASEがついに。

もともとの進捗が悪いうえに、freebsd.orgに不正アクセスのあったことも遅れをさらに助長した。

加えて後者の要因は、遅れまくった9.1のリリースにあたってもpackageをほとんど揃えられない事態を引き起こしていて、ああやっと出たと思った俺含む一部のユーザを困惑させた訳である。

2013/5/15追記packagesがやっと復活した。
[FreeBSD-Announce] Binary Packages Are Available Again
追記ここまで

 

というのも。

FreeBSDは、apacheやらMySQLやらから、Perlなどの言語系までの、ベースシステムに含まれないソフトウェアを別途インストールする必要がある。

それにはpackage、つまりコンパイル済みバイナリを使うか、portsから自前コンパイルするかのおおよそ二通り。

 

で、OSメジャーバージョン更新などのイベントでは全ソフトウェアも更新が必要だ。

こういうときにPackageがあるととっても楽なわけだ。

すべて自前コンパイルするとえらく時間がかかるから。

そこで今回の件のように、ごくごく一部のpackageしかありません。欲しけりゃDVDイメージ落としてくださいねと言われるととっても困るわけ。

 

ただまあ、俺の場合9.0からのアップグレードなので、全更新は必須ではないのだけど、長く使っているうちにぐちゃぐちゃになるportsの依存関係(名前が変わったとか場所が変わったとか)をスッキリさせたいので自発的にやってる。

 

で、公式ページにある通り、packageのリリース目処は立っていないようなのであきらめて全コンパイルする。

(と思ったけど、一部9-stableのpackageを使った)

以下はそのログ。

公式ページの指示に従って作業。

準備

 

インストール済みpackageを「更新」するといろいろと面倒な事が起こるので、いったん全削除して再インストールする。

そのためにインストール済みpackageリストを作っておき、全削除。

(全削除するとsudoも使えなくなるから、suしてから)

$ pkg_info > pkg.list.txt
$ su
Password:
# pkg_info | cut -f1 -d" " | xargs -n1 pkg_delete -f

 

手順1. ファイルダウンロード

必要なファイルをダウンロードする。

# freebsd-update -r 9.1-RELEASE upgrade
Looking up update3.freebsd.org mirrors... none found.
Fetching metadata signature for 9.0-RELEASE from update3.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/games world/lib32
The following components of FreeBSD do not seem to be installed:
world/doc
Does this look reasonable (y/n)?y

yと答える。

Fetching metadata signature for 9.1-RELEASE from update3.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 9.0-RELEASE for merging... done.
Preparing to download files... done.
Fetching 37716 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150....160....170....180....190....200....210....220....230....240....250....260....270....280....290....300....310....320....330....340....350....360....370....380....390....400....410....420....430....440....450....460....470....480....490....500....510....520....530....540....550....560....570....580....590....600....610....620....630....640....650....660....670....680....690....700....710...
<snip>
.37560....37570....37580....37590....37600....37610....37620....37630....37640....37650....37660....37670....37680....37690....37700....37710... done.
Applying patches...Fetching 1758 files... done.
Attempting to automatically merge changes in files... done.
The following changes, which occurred between FreeBSD 9.0-RELEASE and
FreeBSD 9.1-RELEASE have been merged into /etc/defaults/periodic.conf:
/var/yp/Makefile.dist
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".

 

手順2. Kernel差し替えと再起動

 

インストール。

一回目はカーネルの差し替え。ここから緊張するところ。

これがうまく行ったら、次はユーザランドの更新だが、まずは。

# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

 

再起動前。

# shutdown -r now

手順3. ユーザランド更新と再起動

# freebsd-update install
Installing updates...
# shutdown -r now

 

手順4. unameの確認と…

 

# uname -a
FreeBSD sylph 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

で、ここからpackageの再インストール…

pkg_add -r ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/shells/bash-4.2.37.tbz
pkg_add -r ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/security/sudo-1.8.6.p3_1.tbz
pkg_add -r ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/All/perl-5.12.4_4.tbz

以降はガチコンパイル。

No tags for this post.