7/29/2015

スノーデン恩赦嘆願へのホワイトハウスの回答

ホワイトハウスはスノーデン氏恩赦の嘆願書を却下した。ホワイトハウスの回答は次の通り。

エドワード・スノーデン氏についての嘆願書への署名に感謝します。これは多くのアメリカ人が違和感を感じている問題です。彼の行動は我々の国家安全保障に深刻な結果をもたらしたので、我々は国土安全保障・テロ対策担当の大統領補佐官リサ・モナコ氏に対処させました。彼女が語ったのはこのようなことです。

「就任以来、オバマ大統領は国民の安全を守るのに必要となる情報を保護するため国家セキュリティ専門家の能力を持つ市民的な自由の保護をバランスする適切な改革を確保するために議会と一緒に働いてきました。

大統領が最新の情報改革法を発表した時に語ったのは、「我々は自分自身を守り、世界の中でリーダーシップを維持する方法について、更に、我々の理想と憲法が要求している市民の自由やプライバシ保護を守るために、重要な決定を行う必要があります。」

これらの問題を前向きに取り組む代わりに、スノーデン氏の機密情報を盗み、明らかにするという危険な決定は、国や日々安全を守るために働く人々のセキュリティに厳しい影響をもたらしました。

もし、彼が自分の行動が市民としての抵抗にふさわしいと感じているなら、彼がとるべき行動は、政府に反対してきた人々と同じ行動をとるべきです。それは、異議を申し立て、正々堂々と意見を述べ、建設的な抗議行動に携わり、そして、重要なのは、自分の行動の結果を受け入れることです。専制政権の陰に隠れるのではなく、彼は合衆国に戻り、彼の同胞たちの陪審によって判決を受けるべきです。現時点では、彼は自分の行動の結果から逃げているだけです。

我々は危険な世界に生きています。我々はテロリズム、サイバー攻撃、核拡散のような深刻なセキュリティ上の危険に立ち向かい続けています。我々のインテリジェンスコミュニティは合法なツールでなければなりません。セキュリティと我々の理想と憲法が要求する市民の自由とのバランスは、自国であるここでそれに携わることをいとわない人々と頑強な議論するに価するものです。

Hacker News

7/28/2015

ボイジャーのゴールデンレコード、SoundCloudで試聴可能

1977年に打ち上げられた2機のボイジャー探査機に搭載されているレコードには地球の生命や文化の存在を伝える音や画像が収められている。NASAがここに録音された音をSoundCloudにアップロードしたとのこと(Popsci)。55種類の言語の挨拶、自然の音などを聞くことができる。バッハのブランデンブルク協奏曲やグールドの平均律などの音楽はアップロードされていないようだ。

Golden record cover

Hacker News

DRAGON: Distributed Route Aggregation on the GlObal Network

NANOGのメーリングリストより。分散型の経路集約技術「DRAGON」を使ってBGPのルーティングテーブルを削減しようという試み。特にプロトコルを変えずに、冗長な経路情報をフィルタリングするだけで、フォワーディングテーブルは80パーセントまで縮小するとのことだ。DRAGONは強力な理論に裏付けされており、今のフォワーディングパスに影響を与えることはなく、しかも徐々にデプロイすることができる。

Gadget main

今日のインタードメイン・ルーティングはスケールしない

今日のインタードメイン・ルーティング・プロトコル(BGP)は全てのインターネットの宛先(IPプレフィックス)に関する詳細な到達制情報を保持するため、インターネットの全ルータに必須なものであるが、ルーティングとフォワーディング基盤に多くのストレスを与えている。最近になり、インターネットの宛先数は512,000を超え、多くのルータがクラッシュを起こし、インターネットに広く不安定さをもたらした。2000年問題のように、この出来事は大量に報道された。

全ての宛先に関する詳細な情報を交換することは、多くが冗長性のためなので必要はない。良い例えでいえば、道路網の中で見つけるこができる。全ての都市は世界中の全ての都市への方向標識があるわけではない(そしてまた必要もない)。代わりに、標識はすぐ隣の行き先に関する詳細な情報と遠い行き先に関する粗い情報を知らせている。残念ながら、インターネットではそのようなシステムの実装が、確実に管理されないとして、不可能なこととなっている。特に、宛先の解決は他の場所で問題を引き起こさず、一箇所で宛先をフィルタリングして取り除くのは難しいと知られている...DRAGONができるまでは。

フィルタリング、正確さと最適性を保持すること

DRAGONはBGPとともに運用される。フルデプロイメントの下でデータをフォーワードするために使われるエンドツーエンドの経路に影響を与えること無く、フィルタアウトできるIPプレフィックスをローカルに計算することを各ルータで可能にする。DRAGONフィルタリングは、より長いIPプレフィックス(例, 10.0.0.0/24)に関係するルーティング情報をフィルタし、代わりにより短いIPプレフィックス(例, 10.0.0.0/16)を信頼するようにする。ルータがあるIPプレフィックスをフィルタすると、フォワーディングテーブルから削除し、ネイバーへの経路広告を停止する。そうすることで、DRAGONはインターネットのルーティングテーブルを保持するのに必要なスペースと、それらの情報を交換するために掛かる時間(例, 収束時間)を両方同時に削減する。

内部的に、DRAGONは強力な理論基盤、代数的ルーティングに裏付けされており、ルーティングとフォワーディング問題がないことを実証可能な方法で保証する。

DRAGONはルーティングやフォワーディングテーブルサイズを非常に縮小する

DRAGONは、インターネットルーティングに関して変更することなく、フォワーディングとルーティングテーブルの50パーセントをフィルタすることでインターネットの80パーセントを有効にする。DRAGONのフィルタリング効率は50パーセントに制限されている。その理由はインターネットのIPプレフィックスの概ね50パーセントは短いIPプレフィックスの範囲外であるため、フィルタされることはない。これらのプレフィックスはプロバイダ非依存(PI)プレフィックスとして引用される。

DRAGONはPIプレフィックスの多くをフィルタリングするために少数の集約プレフィックスの広報を働きかける。各ノードは自律的にどの集約プレフィックスが起点かをもしあれば決定する。集約プレフィックスでは、DRAGONは、フォワーディングとルーティングテーブルの80パーセントをフィルタすることで、インターネットの80パーセント近くまで有効になる。

DRAGONはルーティング収束を短縮する

DRAGONはBGPよりも非常に少ない宛先の情報をメンテナンスするので、収束も非常に速くなる。

実例として、DRAGONはインターネットのリンク障害の40パーセントでメッセージ(経路交換)を発生しない。それにひきかえ、BGPはそれらの98パーセント以上でメッセージを生成する。その上、DRAGONはその事例の95パーセントでBGPよりも経路が少なく、その事例の50パーセント以上でBGPの交換が半分より少なくなる。

パスワードマネージャーの利用を妨害するウェブサイト

T-Mobileでパスワードマネージャを使わせないよう、パスワードのコピペをできなくしていることに対する批判(Slashdot)。

パスワードマネージャはセキュリティの万能薬ではない。しかし、専門家は弱い(しかし、簡単に思い出せる)パスワードを使うよりは良いと大いに賛成している。今週になって、素人が専門家と同程度に使えていないツールをリストアップした。私は使っていて、ウェブサイトが明確に(あるいはひどい設計を通じて)、パスワードのコピペを妨げているので、腹立たしいと感じる。だから、私はWIREDの中でそれについての不満を高く評価する『我々の生活はオンラインで過ごすことがますます増えているという時代を迎えており、パスワードによって保護されるだけだ、サイトができるだけ安全であろうとするユーザの行為を正当的な理由もなしに意図的に妨げようとする行為は受け入れ不可能である。』

ブラウザアーカイブ「evolt.org」

ブラウザプログラムを集めたサイト「evolt.org」。但し、ここには無いブラウザが沢山ある(古いところだと、CERN browser、Erwise、ViolaWWW、SAMBAが無い)。

7/22/2015

OpenSSHでブルートフォース攻撃を受ける脆弱性

OpenSSHサーバは通常MaxAuthTries(デフォルト6回)で設定された回数に達するとコネクションを切断してしまうのだが、LoginGraceTime (デフォルト2分)までログインの再試行を許してしまう脆弱性があるとのこと(kingcope, ars technica)。ネットワークの速度によるが、下記のようなスクリプトを使うことで10000万回以上のブルートフォース攻撃が可能になるとのこと。この脆弱性はkeyboard-interactive認証がデフォルトで有効になっているFreeBSDに影響があるとのこと(他のOSは不明)。

ssh -lusername -oKbdInteractiveDevices=`perl -e 'print "pam," x 10000'`

Hacker Newsseclists.org

更新

PAM認証を設定しているOpenSSHサーバに影響があるだけで、ほとんどのOSはデフォルトで設定されていない(The OpenSSH Bug That Wasn't)。

BBCの歴代アメリカ映画ベスト100

BBCの歴代アメリカ映画ベスト100 (Slashfilm)

  1. 地獄の英雄 (1951)
  2. それでも夜は明ける (2013)
  3. 天国の門 (1980)
  4. 風と共に去りぬ (1939)
  5. ダークナイト (2008)
  6. 我輩はカモである (1933)
  7. 25時 (2002)
  8. ミーン・ストリート (1973)
  9. 狩人の夜 (1955)
  10. E.T. (1982)
  11. 地獄の黙示録 (1979)
  12. 孤独な場所で (1950)
  13. ウエスト・サイド物語 (1961)
  14. エターナル・サンシャイン (2004)
  15. ライオン・キング (1994)
  16. ナイト・オブ・ザ・リビングデッド (1968)
  17. 脱出 (1972)
  18. 赤ちゃん教育 (1938)
  19. レイダース/失われたアーク《聖櫃》 (1981)
  20. テルマ&ルイーズ (1991)
  21. 若草の頃 (1944)
  22. ツリー・オブ・ライフ (2011)
  23. シンドラーのリスト (1993)
  24. 駅馬車 (1939)
  25. スター・ウォーズ エピソード5/帝国の逆襲 (1980)
  26. 未知との遭遇 (1977)
  27. フォレスト・ガンプ/一期一会 (1994)
  28. ネットワーク (1976)
  29. 上海ジェスチャー (1941)
  30. 恋はデジャ・ブ (1993)
  31. バンド・ワゴン (1953)
  32. コヤニスカッツィ/平衡を失った世界 (1982)
  33. 汚名 (1946)
  34. モダン・タイムス (1936)
  35. 赤い河 (1948)
  36. ライトスタッフ (1983)
  37. 大砂塵 (1954)
  38. ラヴ・ストリームス (1984)
  39. シャイニング (1980)
  40. アイズ ワイド シャット (1999)
  41. ブルーベルベット 1986)
  42. カッコーの巣の上で (1975)
  43. 桃色の店 (1940)
  44. ウディ・アレンの重罪と軽罪 (1989)
  45. バック・トゥ・ザ・フューチャー (1985)
  46. 卒業 (1967)
  47. サンセット大通り (1950)
  48. グレイ・ガーデンズ (1975)
  49. ワイルドバンチ (1969)
  50. 黒い罠 (1958)
  51. ヒズ・ガール・フライデー (1940)
  52. 天国の日々 (1978)
  53. 陽のあたる場所 (1951)
  54. マーニー (1964)
  55. 素晴らしき哉、人生! (1946)
  56. リバティ・バランスを射った男 (1962)
  57. キートンの探偵学入門 (1924)
  58. 忘れじの面影 (1948)
  59. 博士の異常な愛情 (1964)
  60. リオ・ブラボー (1959)
  61. 午後の網目 (1943)
  62. 國民の創生 (1915)
  63. ジョーズ (1975)
  64. 悲しみは空の彼方に (1959)
  65. スター・ウォーズ エピソード4/新たなる希望 (1977)
  66. 深夜の告白 (1944)
  67. オズの魔法使 (1939)
  68. カンバセーション…盗聴… (1974)
  69. レディ・イヴ (1941)
  70. こわれゆく女 (1974)
  71. お熱いのがお好き (1959)
  72. レイジング・ブル (1980)
  73. パルプ・フィクション (1994)
  74. バリー・リンドン (1975)
  75. Killer of Sheep (1978)
  76. ドゥ・ザ・ライト・シング (1989)
  77. アパートの鍵貸します (1960)
  78. アニー・ホール (1977)
  79. グリード (1924)
  80. マルホランド・ドライブ (2001)
  81. グッドフェローズ (1990)
  82. タクシードライバー (1976)
  83. 街の灯 (1931)
  84. 黄金狂時代 (1925)
  85. ギャンブラー (1971)
  86. 我等の生涯の最良の年 (1946)
  87. ナッシュビル (1975)
  88. 北北西に進路を取れ (1959)
  89. チャイナタウン (1974)
  90. 偉大なるアンバーソン家の人々 (1942)
  91. ゴッドファーザー PART II (1974)
  92. カサブランカ (1942)
  93. サイコ (1960)
  94. 雨に唄えば (1952)
  95. サンライズ (1927)
  96. 捜索者 (1956)
  97. 2001年宇宙の旅 (1968)
  98. めまい (1958)
  99. ゴッドファーザー (1972)
  100. 市民ケーン (1941)

7/20/2015

OpenBSDのセキュリティサブシステムtame

OpenBSDに新しいセキュリティ機構を実装中であることがアナウンスされた(WIP)。Linuxのseccompに似ていて、システムコールの利用を制限するフィルタのようなもの。ユーザプログラム中で、tame(2)を呼び出すだけでよい。

私はしばらくの間、"reduced feature オペレーティングモデル"に、プログラムを制限するためのサブシステムの開発に取り組んでいます。

過去にそのようなシステムを作った人はいましたが、私は決して満足していませんでした。そう考えていたのは私だけとは思いません。

一般に、オペレーションには二つのモデルがあります。一つ目のモデル(例えばcapsicum)は効果的に利用するにはアプリケーションソフトウェアの大幅な書き換えが要求されます。もう一つのモデルは一般的なもので、制度を落として利用し、プロセスの全生存時間のあちらこちらで、オペレーションを許可したり拒否したりします。その結果、それらはプログラムの「初期化」対「メインサービスループ」の間の区別を欠いています。systraceは同じ問題を抱えています。私の見解は、プログラムは初期化の間に多種多様な呼び出しが必要なのに、メインループの中には少ししか無いためです。

BPFスタイルのアプローチはそれが際立っています。そのため、あなたは安全性を確保するため、プログラムを監視するためのプログラムを書く必要があります。それは馬鹿げたことです。

そこで、私は自分自身に問い直しました。もし、初期化とメインループ間で直接プログラムの中に置けるような単純なシステムコールを考案できればいいんだと。

次に、私はそのようなプログラムが必要となるコンピュータの動作は一体どういうものでしょうか。直接的なものばかりでなく、DNSや他のマクロオペレーションもあります。

とにかく、説明は十分でしょう。下記のマニュアルを読んで下さい。

Hacker News: Linuxのseccompの方がいいという意見が多い。

7/18/2015

「バットマン v スーパーマン: ジャスティスの誕生」の予告映像で気付いた事

2016年3月公開予定の「バットマン v スーパーマン」の新しい予告映像がコミコンで公開された。その中で気付いたことをSlashfilmがまとめている。

  1. 上院公聴会にスーパーマン召喚: オープニングで、ホリー・ハンターが演じる上院議員が登場。彼女は公聴会に来ている人たちに冒頭「今日が真実の日になる」と語る。そこにスーパーマンが入ってくる。彼女の声が続く「我々は何が起きたのか、彼が戦った相手を知る必要がある。あのような力はとても危険だ。... この小委員会は彼に責任を負うことを議事録に記録する」
  2. しかし、議員は隠された動機がある?: 予告の後半、議員がレックス・ルーサ(ジェシー・アイゼンバーグ)を訪れる場面を見る。レックスは彼女に「あなたは議員の中で昔から嘘つきだね? 悪魔は地面からは来ない。空から来るんだ。」
  3. 人類が新しいエイリアンに抗議: 冒頭、国会議事堂前に空からスーパーマンが降りてくる。「エイリアンについて真実を教えろ」、「スーパーマン=不法入国者」、「ここは我々の世界だ、あなたのものではない」、「地球は人類のものだ」とプラカードを持ったたくさん人がいる。
  4. ウェイン邸が老朽化している: 後ろ姿の男(ブルース?)が老朽化した古いれんが造りの建物に歩いていく場面。なぜ、館は老朽化したのか? ウェインの財が尽きたのか? ブルースは両親の死後に館を離れたのか? それとも別の人物?
  5. ブルース・ウェインは個人的にも職業的にもスーパーマンのメトロポリス破壊に影響を受けた: スーパーマン対ゾッドのフラッシュバック。ベン・アフレック演ずるブルース・ウェインは車道を走っていく。彼は見上げ、電話を掛けながら叫ぶ。彼の前のビルが攻撃で破壊。ブルース・ウェインの電話の相手は? ブルースは9/11を思い起こさせる砂ぼこりに車道を走っていく。そして、小さな女の子を抱きしめ、とても怒った表情で空を見上げる。引きの映像で、そこがウェイン金融ビルの瓦礫の中だと分かる。ブルースは彼のビルが壊されたことで怒っているのか? もっと個人の犠牲があるのか?
    予告後半、ブルースが匿名からのメールを開くと、デイリー・プラネットの記事のコピーが入っている。見出しは「ウェインタワーが破壊」、小見出しには「数十人が死亡」とある。もっとも注目すべきは記事のコピーにメッセージが書かれていて「お前が家族を死なせたんだ」と書かれている。これはブルースの子供あるいは家族がメトロポリスの破壊で死んだことを意味するのか? あるいは、匿名の発信元は、ブルースの両親が殺された過去のことを話しているのか? 予告の中でもその場面が登場する。
  6. ロビンは死んだ?: 家族というのはのちにロビンになるブルースの養子ディック・グレイソン(あるいはジェイソン・トッド)かも使れない。予告中のポイントは、ブルースが落書きが書かれたケースに入ったスーツを見上げる場面がある。一目、バットスーツと思われるが、これはロビンのスーツだ。拡大するとスーツにはロビンのロゴである「R」がある。これはロビンのスーツなのか? ロビンは死んだのか? この意味は? ロビンの死後、ブルースはバットマンに背を向けたのか? なぜ、ウェイン邸がボロボロなのかという理由を説明するのだろう。
  7. 映画の中でジョーカーは登場するのか?: 手紙やスーツにあった文字は同じような書き方。スーツに書かれていた言葉は「ハハハ、ジョークはバットマン、自分の身に返ってくるぞ」。ジェレミー・レトも見られるのか? それとも、スーツに書かれたのは昔の出来事なのか? ブルースがアフレッドに「ゴッサムの20年、どのくらいの善人が見棄てられた?」と訊ねる。
  8. ワンダーウーマンはこの物語にどのように関わるのか?: ガル・ガドット演ずるダイアナ・プリンスがウェインのパーティの外で高級車に乗る場面がある。そして、ワンダーウーマンのアクションが続く。背後に壊れたエイリアン船あるのに注意。ワンダーウーマンはこの物語にどのように関わってくるのか? この予告が上映される前、DCパネルで見た映像で、ワンダーウーマンは第二次大戦時代の敵と思われるものと戦っている。どのくらい活動していたのか? 答えが「数十年」なら、おそらく彼女とブルースは一緒の長い歴史を持っていたことになる。
  9. 新しいバットケイブ: 今回初見のバットケイブ、中央にバットモービルが吊り下げられている。左には滝が見られ、右には岩。背景にはガラスケースに入ったスーツがある。
  10. バットマンが捉えた犯罪者に焼印: 警官がビルに見える古い教会に到着。壁にバタラング、壁に鎖でつながれた男。男の肩がクローズアップされると、そこにはバットマンのシンボルが。予告では、ブルースの執事アフフレッドを演ずるジェレミー・アイアンズが自信げに「それが始まりだ、興奮、激しい怒り、それが善人を非情に変える」。
  11. クラーク・ケントがデイリープラネットでバットマンに挑戦しようとする: スーパーマンあるいはクラーク・ケントの語り「このバット自警団は単独の恐怖状態だ」、そしてペリー・ホワイト演ずるローレンス・フィッシュバーンに変わり、「君が何が正しい事かを決めるんじゃない。クラーク・ケントのバットマンについての見解なんてどうでもいい」。クラークがバットマンが嫌いであることが明確になる。
  12. 誰もがスーパーマンを嫌っているわけではない: ロイス・レーン(エイミー・アダムス)がスーパーマンにこのシンボルが何を意味するかを語る。「それは人々が持つ全て、彼らに希望を与えることが全てなの」。そして、スーパーマンが洪水で流された家の屋根にいる人を助ける。スーパーマンの義母、マーサ・ケント(ダイアン・レーン)が彼に語る。「人間は理解できないものを嫌うのよ」と励まし、「ヒーローになるのよクラーク、天使に、モニュメントに、彼らにはあなたが必要なの」。スーパーマンが人々を助ける場面がいくつか登場。最初はビルの火災場面、そしてロケット打ち上げ失敗を助ける場面。そして、死者の日の祭りで見知らぬ人によって取り囲まれる。
  13. なぜ、スーパーマンは兵士の武装グループを持っているのか?: 大きな謎は武装グループの場面だ。兵士の肩のパッチに注目。これらの男たちは腕にスーパーマンのシンボルを身につけているのはなぜか? カル・エルの前に跪く場面。予告後半で、この民兵が銃で人々を殺害する場面が現れる。そして、バットマンが砂漠の地下バンカーから現れると攻撃。予告のレックス・ルーサーの最後のせりふ、「赤マントがやって来るぞ」はこれらの歩兵を言及しているのか?
  14. なぜ、スーパーマンがレックス・ルーサーの前に跪くのか?: 新しい予告では、スーパーマンがレックス・ルーサーの前に跪く場面がある。彼は嫌悪感を持って、レックスを見上げる。なぜ、跪いているのか? ここでどんな事情があるのか? レックス・ルーサーがクリプトナイトを持っているためかも使れない。
  15. ゾッド将軍の遺体にどんな事情があるのか?: 軍事施設で護衛され荷物が運ばれる(先頭は、レックスの自宅に議員を招き入れた女性と同一人物)。次の場面、遺体袋が開けられると、ゾッド将軍ことマイケル・シャノンが現れる。スーパーマンはマン・オブ・スチールでクリプトン人を殺害したが、ゾッドの遺体にどんな事情があるのか? 新しい映画の筋ではどんな役割があるのか?
  16. 誰かがレックスコープを攻撃: レックスの会社レックスコープが攻撃に遭う場面。誰が張本人かは確かではない: バットマン、スーパーマン、あるいは他の人物?
  17. これらの場面の意味は?: まずは、おそらくブルースの少年時代、何かに向かって水中を泳ぐ場面。何を見つけたのか? なぜ、予告にこの場面ががあるのか? 何を暗示するのか? 我々はアクアマンが関係しているとみる。水は彼を暗示している。しかし、映像での情報は少ない。
    次の場面は馬に乗る人々の一団。確実に、メトロポリスでもゴッサムシティでもない。この場面は何を意味するのか? この物語の壮大な叙事詩を暗示するように見える。
    飛行機、宇宙船あるいはバットジェットが大都市(ゴッサムあるいはメトロポリス)の外側で墜落。
  18. 我々は何かを見落としているか?: 私は何かを見逃していないか? 下のコメントで知らせて欲しい。

7/17/2015

ポテト・パラドックス

ポテト・パラドックスは、直感的な計算との食い違い。

フレッドは自宅に99パーセントが水分のじゃが芋100ポンド(キロでもいい)を持ち帰る。彼は一昼夜外に出しっぱなしにしたところ、じゃが芋の水分が98パーセントになった。じゃが芋の重さは何キロになっただろうか? 答えは50ポンド。

Hacker Newsにあったこのパラドックスを使った応用例。

プログラムが遅いので、分析をしたところ、f()が実行時間の99パーセント掛かっていることを発見する。あなたはf()の最適化を行い、再度分析したところ、f()は98パーセントになった。驚くなかれ、プログラムは2倍速くなったのだ。

7/16/2015

小氷期を心配する必要はない (?)

最新の太陽活動の研究による新しい数学モデルの計算では、2030年代には太陽活動が60パーセント低下して、地球の温度が急激に下がり、マウンダー極小期のようになる「小氷期」に入る可能性があると先週発表されている(WIRED)。

これに対し、"bad astronomy"というコラムで知られるフィル・プレイト氏はその主張を詳しく分析し、小氷期はほとんどが火山爆発が引き金になっていて、太陽活動の影響ではないとのこと(Slashdot)。それに予想される寒冷化は地球温暖化と比較するとは小さい。極小期がやってくる可能性は低い。

7/14/2015

オープンソースのトラック係数

人気の高いオープンソースでもほとんどはトラック係数(Truck Factor)は1か2(Slashdot)。TFを考えておくべきものはオープンソースだけじゃない。

トラック係数は、プロジェクトが機能不全に陥る前にトラックに轢かれる(あるいは辞める)と維持できなくなる開発者の最小人数を表すものだ。Wikipediaでは、「個々のチームメンバーの情報の集中度を測る指標。トラック係数が高いものは維持していくのに多くの人が十分知識を持っており、プロジェクトは深刻な事象があってもうまくいくことを意味する。」と定義している。用語はバス係数としても知られている。この記事の中で、著者は133のポピュラーなGitHubアプリケーションのトラック係数を計算している。

Linuxはさすがに高い。

スラド

7/12/2015

JavaScript開発者

JavaScript開発者は大変という話 (Relentless Persistence)。

Hacker News

7/11/2015

Apple、IPv6に舵を切る

v6opsのメーリングリストに興味深いメールが投稿されている。昨日、iOS 9と OS X El Capitanのパブリックベータがリリースされたが、これらのシードにはHappy Eyeballsの改良が含まれているそうだ。iOS 8とYosemiteのHappy Eyeballsは、大雑把に50/50でIPv4/IPv6に接続するそうだが、iOS 9とEl CapitanではIPv6の接続が99%まで上がるとのこと。

4年前の実装では、どんなことがあろうと低レイテンシーでの接続を選択するよう設計されていたが、IPv6が優位になっているという報告から変更することにしたとのこと。 IPv6が主流になり、壊れたIPv6トンネルが少なくなって、IPv4キャリアグレードNATが増大し、スループットはIPv6の方が良くなっているからとのこと。実装は、最初にAAAAで問い合わせるようになり、Aが返って来ても、AAAAを期待するように動き、それからアドレス選択アルゴリズムでどちらで接続するかを(過去のRTTデータを使って)決定する。

ベータの期間でこのやり方がいいと判断されれば、今後Apple製品はIPv6に舵を切るようだ。

参考Hacker News9to5mac

更新(20150714)

ジェフ・ヒューストン氏がISPコラムでこの件を取り上げ、AppleのIPv6サポートは評価できるが、464XLATをサポートしないのは問題と書いている。464XLATをサポートしないのは問題かな?

Hacking TeamとBGPハイジャック

イタリアのセキュリティ企業「Hacking Team」の内部情報が流出。同社が行ってきた通信傍受、マルウェアの開発などが暴かれることとなった。この中にルーティングセキュリティの件も含まれており、BGPハイジャックが行われていたそうだ。もひや驚くことはなく、BGPハイジャックは普通に行われていることなのだろう(こっそりと)。

ほんの数時間で、Hacking Teamのメールアーカイブは多くの興味をそそるリークを提供した。今年の私の主要な研究活動なので、ルーティングセキュリティ問題に注目したい。

要約: これらのメールが本当なら、そして今までのところ、だれもそうではないと信じる信ぴょう性のある理由を見つけられない。いくつかの主要なイタリアのISPが、テロリストや組織犯罪の捜査を行うカラビニエリの要求に応じ、外国のISPのIPアドレスをハイジャックしていた。

目的は、ハイジャックされたネットワークにホストされている「anonymizer」VPS(仮想専用サーバ)によって制御されているHacking Teamのマルウェアのコピーへのアクセスが、プロバイダによって突然無効化されたため、それを回復することだった。

偉大なRIPEstatサービスのおかげで、本当に2013年の8月15日から22日にかけて、46.166.163.0/24がAS31034(aruba.it、イタリアの大きなホスティング会社)からアナウンスされていたことを検証することができた。

そして、2013年8月20日のBGPテーブルのダンプをRIPE RISアーカイブからダウンロードし、関連性のある経路を抽出するためにzebra-dump-parserで処理を行った。AS31034はメールに言及されていた2つのイタリアのISPにハイジャックされたネットワークを広報しただけでなく、一見したところ全てのピア先に広報されていて、そのアナウンスはMIX-ITでHurricane Electricによって受け入れられてもいた。これは、ハイジャックが数個のローカルネットワークに限定されず、世界中全てに関係があることを意味する。

イタリアのネットワークオペレータとして、BGPピアのいくつかが、犯罪活動と考えられるものに巻き込まれるのではないかと、私は真剣に憂慮している。

全てのオペレータが知っていることとして、グローバルなBGPルーティングにはまだ過度な相互信頼があり、場合によってはそれが間違って使われる。我々は将来この手のことが不可能になるような、より良いベストプラクティスツールやプロトコルが必要だ。

Hacker Newsars technica

7/10/2015

OpenSSLセキュリティアドバイザリ (secadv_20150709)

OpenSSLのセキュリティアドバイザリが公表された(CVE-2015-1793)。事前にセキュリティリスクが高のものがあると発表されていたが、MITM攻撃で信頼できない証明書を有効にさせることが可能で、深刻な部類のようだ。Red Hat、CentOS、Ubuntuはこの脆弱性の影響を受けないようだ。

証明書の検証中、OpenSSL(1.0.1n〜1.0.2b)は最初に証明書チェーンをビルドするのに失敗すると、代替証明書チェーンを探ろうとします。このロジックの実装中にある不具合は、攻撃者が例えばCAフラグなど迂回されるため信頼できない証明書の検査に疑いを持たせないようにできることを意味する。CAの機能を果たす有効なリーフ証明書を利用して、不正な証明書を発行してしまう。

Hacker News

7/09/2015

Cisco ASR 9000シリーズのアップデート

Cisco ASR 9000シリーズのアップデート(BRKARC-2003)。

  • Cisco ASR 9910が2016年1Qに登場 (IOS XR 6.1)
  • 第三世代RP
    • RSP880 (ASR9000) / RP2 (ASR 9900)
    • Intel x86 (Ivy Bridge) 8Core 2.2GHz
    • メモリ: TRは16GB、SEは32GB
    • SSDは2x32GB Slim SATA
    • サポートラインカードはTyphoonとTomahawk (Tridentは非サポート)
    • スイッチファブリックは880G(RPS880)、1.61Tbps(RP2)
  • ラインカードはTomahawk世代、CPUもPowerPCからIntelに変わる
    • Ivy Bridge EN 6 Core 2GHz
    • 24GB Memory
    • Octan: 4x100GE CPAK、8x100GE CPAK
    • Skyhammer: 12x100GE (9900向け)
    • Mod400、Mod200
    • 400G IPoDWDM LC (2015Mid)
    • MACSE (IOS XR 5.4.0)
  • IOS-XRv 9000

7/07/2015

IPv6枯渇カウンター

IPv6の枯渇カウンターがある :-) 枯渇するのは西暦539穣(じょう)5000𥝱(じょ)年。/48で割り当てても、西暦703億7000万年。

Hacker News

reddit CEOが謝罪

redditの社員で、AMAのコーディネートを担当していたヴィクトリア・テイラー氏をいきなり解雇したことに対して、モデレータが人気のサブレディットを閉鎖し、一斉にストライキを起こして大騒動に発展。CEOのエレン・パオ氏を辞めさせろという署名活動が17万5千以上集まったとか(現在19万)。redditは公式に謝罪声明を出すに及んだ(Slashdot)。

我々はめちゃめちゃにしました。7月2日の件だけでなく、過去数年にわたることに対しもです。我々は十分に意思疎通を取らず、大きな変化でモデレータとコミュニティを驚かせました。我々は謝罪します。何年もの間、モデレータとコミュニティに約束をしたのに、幾度となく我々は約束を守りませんでした。フィードバックあるいはリクエストがあっても、我々は必ずしも答えませんでした。モデレータやコミュニティは、redditの経営者である私あるいは我々への信頼を失いました。

本日、我々は過ちの長い歴史を認めます。我々はredditのためにしてくれた皆さんに感謝します。そして、責任は私が取ります。我々は3つの具体的な対策を講じます。

TechCrunch 12

更新(20150711)

エレン・パオ氏が辞任し、共同ファウンダのスティーブ・ハフマン氏が引き継ぐ(ars technica)。

7/04/2015

Cisco VIRLを購入〜準備

Cisco VIRL(ヴァイル)は、自宅にあるPCを使ってコンピュータネットワークを仮想的にシミュレーションできるソフトウェアである。利用できる仮想ルータも、IOSv、IOS-XEv、IOS-XRv、NX-OSvと、多くの用途に対応できる(Cisco以外のサードパーティの仮想イメージも利用できる!)。1年ライセンスで199ドル、今なら50ドルのクーポン利用で、149ドルで利用できる。

ルータを触れる環境に無いので、MacBook Air (Core i7、8GB)の上で使ってみることにした(VMware Fusion Proが必要だが、25パーセント引きだったのも後押し)。総額、3万円ほど掛かった。

Virl desktop

購入とインストール

Ciscoのアカウントが必要となるので、まずアカウントを作っておくこと。購入には、Cisco VIRLのホームページで「Get VIRL Today!」をクリックすることで始められる。VIRL Personal Editionを選択し、カートに入れる。今ならクーポン(VIRL50)が使えるので、しっかり使おう。支払いはクレジットカード(銀行送金も可能だが手数料も掛かる上に面倒だろう)。手続きが終わると、Ciscoからオーダー番号とライセンスキーのURLが送られてくるので、保管しておく。そして、ライセンスキー(PEMファイル)をダウンロードしておく。Cisco VIRLのOVAイメージのダウンロードリンクは、1営業日ほどすると送られてくる。もし、1営業日を過ぎても送られて来ない場合は、ciscovir@cisco.comにメールを送ると、すぐに反応がある。

ダウンロード

これが少し苦労した。Cisco VIRLのOVAイメージは4GBほどある。送られてきたリンクを普通にSafariからダウンローダすると、非常に遅く十数MBほどで終わってしまう。メールには推奨ダウンロードマネージャを使うといいと書かれているので、Firefox+DownThemAll!を試したところ、30分ほどでダウンロードできた。ダウンロードしたら、md5チェックサムでファイルが壊れていないかを確認しておくこと。

インストール

インストール手順は長いが、この手順の通りにやれば問題なく完了する。手順の概略を下記に示す。

  1. VMware Fusionを起動、環境設定〜ネットワークでvmnet2、vmnet3、vmnet4、vmnet5を作成
  2. 仮想マシンのライブラリを開き、ファイルメニューからインポートでVIRL OVAを読み込む(少し時間が掛かる)
  3. 仮想マシンの設定で、vmnet2〜vmnet5を選択、プロセッサとメモリを設定する(4個のプロセッサ、8GBのメモリに設定)。詳細オプションでハイパーバイザーを有効にする
  4. VIRLを起動し、ログインプロンプトが現れたら、virl/VIRLでログイン
  5. xtermをダブルクリックし、'sudo kvm-ok' を実行
  6. インターネットに抜けられることを確認し、NTPの設定/確認を行う
  7. 'IP Address'アイコンをダブルクリック、VIRL VMのIPアドレスを確認する(これがVIRLサーバのIPアドレスになる)
  8. ブラウザから、先ほどのIPアドレスに接続、User Workspace Managementをクリック
  9. uwmadmin/passwordでログインする
  10. ライセンスキーの登録とアクティベーションを行う(Current statusが"Last successful contact"の日付が出ればいい)
  11. VIRLに戻り、xtermからOpenStackのNeutronで必要なネットワークエージェントのステータスを確認し、":-)"になっていれば成功
  12. "sudo virl_health_status | grep listening"でlisteningかを確認
  13. "sudo virl_health_status | grep -A 4 -e hostid -e product"でライセンス状態を確認(product-capacity、hostid、product-expires)
  14. ブラウザからVIRLサーバに接続し、"VM Maestro Clients"をクリックして、Maestroをダウンロード
  15. MaestroはJavaが必要なので、Java SEをインストールする
  16. VM Maestro Clientsをインストール
  17. VMMaestroをクリックして起動、VIRL VMのIPアドレス、guest/guestを入力してログイン
  18. パスワードリカバリとして秘密の質問を設定
  19. VM Maestroが起動し、環境設定の"Web Services"を選択し、全てCompatibleとグリーン表示ならOK
  20. インストールは終了

アップデート

最新のCisco VIRLは2015 April版だが、その後コンポーネントやルータイメージがアップデートされている(恐らく次のアップデートはJuly版になる)。

  • VIRL
    • AutoNetKit 0.15.3
    • AutoNetKit-Cisco 0.15.8
    • Topology Visualization Engine 0.10.4
    • Live Network Collection Engine 0.3.7
  • ASAv 9.4.1
  • CSR1000v 3.15
  • IOS XRv 5.3.1

User Workspace Managementに入って、VIRL Softwareを選択し、アップデートしておこう。この時、イメージのダウンロードで失敗したら、次のコマンドを実行してダウンロードする。

vinstall vinstall
sudo salt-call saltutil.sync_all
sudo salt-call -l debug state.sls virl.routervms.asav
sudo salt-call -l debug state.sls virl.routervms.csr1000v
sudo salt-call -l debug state.sls virl.routervms.iosxrv

メモリ不足

VIRLはノード数が15に制限されているが、それでもルータが消費するメモリは次の通りで、合計するとかなりのメモリを必要とする。

イメージ vCPU Memory
IOSv 1 512Mb
IOS XRv 1 1536Mb
CSR1000v 1 3096Mb
NX-OSv 1 2048Mb

パケットキャプチャについて

これまでパケットキャプチャはVIRLにログインしてどのインタフェースを調べてから行う必要があったが、April版からブラウザで手軽に行えるようになった。ところが、そのままだとパケットキャプチャをすると、「Failed to create capture interface GigabitEthernet 0/1 of node iosv-1: 'OS-EXT-SRV-ATTR:host'」と表示され、失敗してしまう。

これを解決するには、User Workspace Managementで、guestアカウントのRoleをAdminに変更しておく必要がある。これでパケットキャプチャができるようになる。

Cisco virl guest

7/03/2015

Slashfilmが選ぶ上半期の映画ベスト10

Slashfilmが上半期に上映された映画の中から、ベスト10を選んでいた。上半期興行収入ナンバー1の「ジュラシック・ワールド」が入っていない。ほとんど日本で公開未定、「エクス・マキナ」くらいは日本で上映してほしいけど、IMDBの公開国リストにJapan無し。DVDかネット配信のみかな...

  1. Spy (公開未定)
  2. キングスマン (9月11日)
  3. Slow West (公開未定)
  4. While We're Young (公開未定)
  5. Me and Earl and the Dying Girl (公開未定)
  6. It Follows (公開未定)
  7. What We Do in the Shadows (公開未定)
  8. Ex Machina (公開未定)
  9. インサイド・ヘッド (7月18日)
  10. マッドマックス 怒りのデス・ロード (公開中)

WebAssemblyとは

先月、主要ブラウザベンダーによるウェブアプリの新しいバイナリフォーマット「WebAssembly」の開発が発表された。WebAssemblyを解説したMike Schwartz氏の「WebAssembly - Explained」の超訳。

6月17日、Google、Microsoft、Mozilla、WebKitプロジェクトのメンバーがウェブアプリケーションの新しいバイナリフォーマットを共同開発することが発表された。それがWebAssemblyと呼ばれる。

問題

長年、ブラウザのJavaScriptエンジンの開発に取り組んできたエンジニアは、ブラウザで動作するJavaScriptの2つのキーステージに取り組んできた。はじめは、JavaScriptをマシンコードあるいはバイトコードにコンパイルすることに取り組んだ。次に、コンパイルされたJavaScriptを最適化し、更に速く実行できるようにした。

それぞれのJavaScriptエンジンは、JavaScriptソースをコンパイルするのに異なるアプローチを採用している。エンジンが最適化せずソースをコンパイルした場合、起動時間は速くなるが、プログラムは最初は実行が遅くなる。コンパイル時に最適化されれば、起動時間は遅くなる。

コンパイルされると、JavaScriptエンジンはプログラムを通して実行パスをモニターし、更に最適化されたコードに"hottest"ビットをコンパイルする。例えばNodeJSで、GoogleのV8のようなエンジンで作られた技術の効果を見ることができる。NodeJSプログラムはアプリケーションが実行するにつれてスピードアップしやすい傾向にある。

これらの方策はうまくいったとはいえ、均一な小さな利益を得るのを妨げる効果がいくつかある。

V8での作業では、生成されたコードは最適化されずにコンパイルしたCコードと同じくらいの速さということが分かる。Cと同じくらいの速さで実行できない限りは、実際のJavaScriptのパフォーマンス向上が本当の意味で成功したとはいえない。

JavaScriptにはわずかな制限がある。例えば、言語仕様にREAL BINARYのデータ型がない。確かに、ブラウザには型付きバイナリ配列が実装されているが、言語の中で指定されているというよりそれらはオブジェクトやメソッドのライブラリの型である。ES6はそのような配列が定義された最初のECMA標準であることに注意する

JavaScripのもう一つの制限は実数型が欠けている点だ。JavaScriptエンジンは数字が整数だと推論できるが、おそらくどのように今のJavaScriptエンジンがコードを最適化するかを予想するには最善の方法ではない。グラフィック/イメージの操作やオーディオデータの操作は、JavaScriptが問題の最速の解決策ではないという2つの明らかな例である。

過去数年間、あらゆる種類のオペレーティングシステムあるいはコマンドラインアプリケーションが、C/C++や他の言語からJavaScriptへ移植が行われてきた。他のことに使えたであろう無数の仕事量の価値や変化を改革のように私には思える。

過去にネイティブコードをブラウザにデプロイするようWWWサイトにもたせる試みが行われてきた。例えば、GoogleのNative Clientがそうである。世界標準では無く、特定のブラウザでだけで利用できる機能を断り無くその技術を使わせることをユーザに納得させるのは不可能だった。

解決策

最近になってブラウザに加えられた更に期待できる機能がasm.jsである。これはJavaScriptのサブセットで、ブラウザの開発者がJavaScriptエンジンを最適化できる。emscriptenのようなC/C++コンパイラの他に、たくさんの既存のC/C++ライブラリやプログラムをコンパイルでき、ブラウザで実行できる。これらのライブラリやプログラムは、asm.jsというJavaScriptのサブセットでコンパイルされる。

WebAssemblyはこれらの動向の結果であり、ブラウザ、ブラウザライクな環境、サーバサイド環境で実行するアプリケーションに高度な機能が必要となり推進されている。

その仕組み

最初にC/C++のソースコードをASTツリーの2進表現にコンパイルできる。バイナリバージョンはブラウザに送られる。ブラウザ側でソースをバイナリに変換する必要はなく、起動時間を節約できる。ASTツリーはコンピュータのx86あるいはモバイルデバイスのARMといった最適なマシンコードにダイレクトにコンパイルできる。このトランスレータの実装はJavaScriptのようなインタプリタ言語よりもずっと単純で、実際には生成されたコードはかなり高速に実行するだろう。

C/C++はWebAssemblyの最初の対象言語ではあるが、AST形式にコンパイルする実質的にいかなる言語の実装も締め出しているわけではない。

WebAssemblyについての賢い点は、ブラウザの中に一度にダウンロードされるいくつかのWebAssemblyモジュールの遅延結合(リンク)を許すことだ。これは、アプリケーションを作るために一緒にマッシュできるモジュールのエコシステムがあることを意味する。遅延結合は機能的に異なるCモジュールに機能をリンクや呼び出すC++モジュールを許可する。あるいはC++モジュールがJavaモジュールから呼び出される機能を提供できる(JavaをASTコンパイラと見なす)。

JavaScriptは消えることはないだろう。最初、シムはASTモジュールをASM.JSあるいはプレーンな古いJavaScriptにコンパイルする。WebAssemblyが最近のブラウザに完全に実装されたとしても、JavaScriptで書かれたあるいは依存する多数の既存のウェブサイトをサポートすることが必要だ。将来もまだ多くのウェブサイトはHTML、CSS、JavaScriptで書かれているだろう。

WebAssemblyのマニュアルを拾い読みしたところ、C++でV8回りを書いた経験から、WebAssemblyモジュールはJavaScriptコンテキストのエンジンの中で動作するあるいはできないかもしれない。最初の選択はJavaScript環境の中だけだが、最終目標はWebAssemblyコンテキストからJavaScriptを呼び出し、JavaScriptコンテキストにWebAssemblyの変数やメソッドを提示するABIインタフェースでJavaScript環境と同時に実行することだ。

事実、WebAssemblyモジュールを提示するのはJavaScriptエンジンのみでなく、DOMだろう。これは論理的に、WebAssemblyにコンパイルするCあるいはC++あるいは他の言語でウェブアプリケーション全体を書くことができることを意味する。言語のうちのいかなるモジュールも異なる言語にモジュールを自明に呼び出すことができる。

WebAssemblyの二つの恩恵は、ブラウザに送られるものがJavaScriptあるいはC/C++ソースよりもバイナリ形式で小さいこと、バイナリでダウンロードされるものががソースコードを難読化してくれる点だ。

皆がBisonやYACCやviのようなあらゆる種類のUnixツールをJavaScriptで移植することだろう。WebAssemblyの公式に表明された目標は、本当にBison、YACCやviをコンパイルできるようにすることで、コマンド行あるいはブラウザで直接それらを実行できることである。

JavaScript言語の仕様はマルチスレッドについて述べられていないので、実装する人はスレッドの実現性を無視してしまう(特にサーバ側では)。WebAssemblyはあらゆる種類の一般的なプログラミングパラダイムや軽量pthreadスタイルのスレッド、一部かもしれないがUnix標準で機能性やサードパーティ製のライブラリを許している。

セキュリティ

ハッカーはバイナリをソースコードに戻す方法を見つけたいと考えるだろう。しかし、コードは権限のない方法で改変されたり再利用される恐れは比較的少ない。

良い機能に思われるが、あなたがサードパーティ製のWebAssemblyモジュールを呼び出し、命令を実行しても簡単にそれを確認することができなことを意味する。私の直感だとサードパーティのWebAssemblyモジュールはコンパイルするソースコードの形で、あるいは信頼されるサードパーティのソースから提供されるだろう。開発者はライブラリをホストするCDNの利用するように思われる。とはいいながら、悪意のあるコードを含んでいる可能性がある。しかし、少なくともソースマップを利用することで、コードがminifiedかunminifiedか等を確認できる。

依然として、どのくらいWebAssembly環境がセキュアかを確認する必要が有る。あなたは、ASTバイナリとしてコンパイルされたモジュールが、マシンインストラクションで作られた古いバイナリよりも安全であるかどうかを考える。しかし、ハッカーはエクスプロイトを見つけることができるみたいに思える。すなわち、正しいASTバイナリを作成することで、ハッカーはWebAssemblyの実装でバグを利用できるかも知れない。

良いニュースはブラウザの開発者がJavaScriptをサンドボックス化してセキュアにする対処を行っている。そして、WebAssemblyもセキュアなサンドボックス化ですべきだろう。

まとめ

WebAssemblyは開発者やユーザ体験を改善するエキサイティングな新しい技術であることは疑いない。全体として開発者コミュニティによって採用され、十分にサポートされそうである。まだ、全てのブラウザが完全にサポートしているとは言えないが、それを自由にデプロイでき、我々ユーザ全員が利用することに期待したい。

7/02/2015

Amazon、6000行でTLSを実装

現在多くで使われているSSLの実装はOpenSSLで、50万行以上(TLSに関連する部分は少なくとも7万行)で複雑となってしまったがために多くの問題を抱えている。そこで、Amazonは新しくTLSを実装し、「s2n (Signal-to-Noise)」という名前でApache 2.0のライセンスでオープンソースとして公開した。Amazon曰く、s2nはシンプルで、高速、しかもコードはたったの6000行あまりでとても小さい。既に3回の外部によるセキュリティ評価やペネトレーションテストを受けており、AWSサービスで利用していくそうだ。但し、s2nはOpenSSLを置き換えるものではなく、今後もOpenSSLに貢献していくという。s2nはTLSの実装であって、汎用暗号ライブラリにはOpenSSLのlibcryptoを利用している。

SlashdotOSDN