10/29/2017

iPhone Xのハンズオンビデオを公開した娘の父親、Appleを解雇された?

The Vergeより

報道によれば、Appleは娘のiPhone XのハンズオンビデオがYouTubeに急速に広まった後、父親のエンジニアを解雇した。ブルック・アメリア・ピーターソンは、今週初めに父親を訪ねるためApple社内に訪問し、未発売のiPhone Xを目撃するビデオログ(vlog)を公開した。ピーターソンのビデオは、9to5Macのようなサイトにすぐに取り上げられ、YouTubeでさらに広がった。

ピーターソンは今、ビデオの結果として父親が解雇されたと言っている。涙ながらをビデオでは、ピーターソンは父親がAppleの社内で未発売のiPhoneを撮影を許した事で、Appleの社内規則に違反していたと説明している。Appleはピーターソンがビデオを削除するよう要求したと伝えられるが、コンテンツがより一層拡大するにつれ、明らかに遅過ぎた。

ビデオ自体は無害なハンズオンのように思えるかも知れないが、特別な従業員専用のQRコードを備えたiPhone Xの映像が含まれていた。ノートアプリがビデオの中のiPhone X上に表示され、リリースされていないApple製品のコード名を含んでいるように見えた。Apple社内での撮影は厳重に禁止されており、未発売のiPhone Xを撮影することは明確な規則違反である。

我々は、過去にも同様の解雇を知っている。Microsoftの従業員は、息子が発表前にXbox 360の写真を投稿した後に解雇された。問題のAppleエンジニアは、iPhone RFおよびワイヤレス回路の設計を作り、約4年間会社に勤めていた。The Vergeは解雇を確認するためにAppleに連絡したが、同社はまだコメントの依頼に応えていない。

Hacker NewsSlashdot

10/28/2017

JFK暗殺ファイルの読み解き方

PoliticoよりJFK暗殺記録は結局、3100件のファイルのうち200件あまりはまだ非公開になっている。

(アメリカ)政府は、長く秘密にされてきたケネディ殺害の数千ものファイルを公開している。ここでは、全てのコードネーム、改ざん、混乱する専門用語を理解するためのヒントを紹介する。

ドナルド・トランプ大統領は彼の言葉が真実なら、アメリカ国民は1963年のジョン・F・ケネディ大統領の暗殺という国家の歴史の転換点に関する陰謀論の少なくとも一部を解決するのに役立つ何千もの秘密の文書がまさに溢れ出ようとしている。

水曜日の午後にトランプ大統領はTwitterのメッセージで、「長年待たれていたJFKのファイル公開は明日になるだろう。大変興味深い!」と発表した。

大統領は、未だ秘密の暗殺関連文書ライブラリが木曜日に全面公開されるかどうか、あるいは一部の機密解除を阻止しようとCIAとFBIからの土壇場の要請に屈するかについて明言しなかった。いずれにせよ、これは巨大な文書の山である事は約束されている。国立公文書館の図書館にはこれまで明らかにされた事がない約3100件のファイルが含まれていると言われているが、そのほとんどはCIA、FBI、司法省からのものだ。

Archivesウェブサイト上で公開されるはずのファイルは、1992年の法律、JFK暗殺記録収集法によって定められた期限までに公開されている。議会は、その1年前のオリバー・ストーンの映画「JFK」が蘇らせ、作られた暴力陰謀論を崩壊させる手助けとなる法律によって、1990年代に何百万ページもの他文書が公開された。CIA、FBI、その他の機関が公表した場合に、何らかの形で国家安全保障を損なう可能性があるという文書で、今週までにArchivesに残っている秘密とは何だろうか。しかし、トランプの介入がなければ、これらの文書は全て法律で定められた25年の期限が過ぎれば、公開されなければならない。それは木曜日に届く最終期限である。

数十万ページではないにしても、何万ページもの膨大な文書の山を検討するにはどのように始めればいいのだろうか? 歴史家、研究者、そして暗殺を研究し、何十年もファイルを見る機会を熱心に期待している人々にとってもそれは難しい事だろう。

昔からの暗殺の研究者ではないほとんどの人にとって、文書のほとんどを理解する事は不可能であるため(少なくともすぐには)、ファイルにはほぼすぐに挫折するだろう。多くがCIAやFBIのコードネーム、ハンドル名、その他の専門用語で詰まっているが、他の文書は外国語で書かれていたり、以前は決して暗殺と関係ないと思われていた人々や場所を指している。おそらく、これらの人々や場所はJFKの殺害とは関係がなかったが、前の調査で一掃されたからだろう。そして、過去の公表に基づくと、一部の文書はデジタルコピーが作成されるまでに書類上のインクがぼやけてしまったため、事実上不可能になる。

しかし、もしあなたがこれを読んでいるなら、これらの障害に邪魔されず、アメリカの歴史の中でも最も期待されている文書の山の一つに飛び込むチャンスである。それに続いて、これは、ウォーレン委員会での私の2013年の歴史についての長年の研究に基づく、忍耐をテストしようする安楽椅子探偵のための10の提案リストである。但し、このデジタルの書類の山を掘り起こすには、視力や正気さえ危険に晒すことになる。

  1. 最も機密の文書から始めよう。一般に公開されていない3100の暗殺関連の文書から始めよう。大統領の殺害事件に関連付ける文書の中にある内容をじっくりと考えることに興味がそそられ、今まで一言も公にされてきていないほど注意を要することだった。前のArchivesの公表では、これらの文書が機密解除された時に、「かつて全て公表されない (Formerly Withheld in Full)」という言葉がラベル付けされていた。

  2. メキシコシティに焦点を当てる。暗殺を研究する多くの歴史家、ジャーナリスト、研究者らは、JFK殺害前の数週間1963年9月後半に、暗殺に関与する最も重要で、最も調査されていない謎はリー・ハーヴェイ・オズワルドのメキシコシティへの6日間の旅行であると主張する。Archivesによって公表されたインデックスには、間も無く公開される文書の多くがメキシコシティのCIAのファイルから抽出されたことを示している。メキシコ旅行中にオズワルドの監視に関わった警官の書類を含んでいる。かつて、ソビエト連邦に亡命しようとした自称マルクス主義者のオズワルドは、メキシコでキューバとソビエトのスパイと接触しており、ケネディを殺害する意図があると公然と話したと報告されている。疑問は以前からある。メキシコのCIAは、これらの連絡先やケネディの命への脅威をリアルタイムでどのくらい知っていたのか? その全ての情報はCIA本部に渡されたのだろか?

  3. メキシコのオズワルドの替え玉に関する馬鹿げた理論はそれほど馬鹿げていないかもしれない事に留意して欲しい。オズワルドは実際にメキシコシティに行き、キューバとソ連の大使館に現れた。数人の証人がそれを確認し、その他の証拠もあるが、多くの一般的な陰謀論は、CIAの代理人または少なくとも誰かが、メキシコでオズワルドを偽装した可能性に注目している。暗殺の後、メキシコシティの電話(CIAによって盗聴されている電話)で、オズワルドと主張した男性がソ連とキューバの大使館との電話で、他の人間であるとの報告がFBIとCIAにとりわけ混乱を招いた。声が違って聞こえた。実際の発信者はCIAのために働いてたのだろうか? その可能性はあり得る。ただ、CIAのメキシコシティの駅には、冷戦時代にメキシコのキューバとソ連の大使館に定期的に現れたアメリカ人脱走者やスパイを阻止しようとするプログラムがあったためだ。オズワルドがメキシコに到着した事を知ったCIAが、キューバやソビエトの諜報員との予定された会議の前に彼を傍受する工作員を送り、CIAの諜報員が電話の一部でオズワルドのふりをした可能性はあるだろうか? キューバ大使館をターゲットにしていたCIA局員は、デビッド・アトリー・フィリップスで、彼のファイルは今秋公開予定の文書に含まれている。CIAは、ウォーレン委員会に対して、メキシコのオズワルドの監視写真は無く、定期的に盗聴した電話のテープを消したと主張している。CIA局員は、写真とテープが残っていた事を数年後に議会に伝えるだろう。

  4. オリバー・ストーン、ケヴィン・コスナーとハリウッドの力を認める。ストーンのような陰謀論者がJFKに関する政府の機密ファイルを全面的に公開するのに、大騒ぎするという事実には皮肉がたくさんある。ファイルの公開に関する最終決定はトランプに委ねられているというのは半分皮肉ではある。彼は、テッド・クルーズ上院議員の父親をオズワルドと結び付けた昨年の選挙戦で提供されたものを含む、彼の成人期を通じて根拠のない陰謀論を推進していた。さらにここで皮肉的なのは、映画のヒーローであるコスナーが演じたニューオーリンズの地方検事ジム・ギャリソンはヒーローではなかった事だ。彼は、著名なニューオーリンズのビジネスマンがケネディを殺害するためのCIA主導の陰謀の一部だったという主張が、事件が最終的に陪審に掛けられた時に破綻した食わせ物だった。この事件では別の男性に対するギャリソンの戦術がその男性を自殺に走らせたようだ。1992年の法案の英雄に共通するのは、1960年代にウォーレン委員会の職員として最初に名声を得たペンシルベニア州の共和党員アーレン・スペクター上院議員は、いわゆる「(single bullet theory (証拠物件399)」を開発したスタッフである。リムジンに乗っていたケネディとテキサス州知事ジョン・コナリーの両方に、オズワルドのライフルの弾丸が1発発射されたという説である。一発の弾丸理論はほぼ確実に真実だったが、映画の中では、スペクターと同じように名前だけで冷笑された。

  5. 政府はすでに、オリバー・ストーンが想像していたものでなく、JFKの暗殺に隠蔽があった事を認めている事を忘れないで欲しい。一度機密扱いされた2013年のレポートでは、CIA内の歴史家はスパイ機関がウォーレン委員会から扇動的な情報を隠すために隠蔽を行なっていたと認めた。ケネディ殺害の単独犯としてオズワルドから離れて指摘したのかも知れない。CIAは、当局がその時点で信じていたことが、「最善の真実」であることのみ焦点を当てる事を委員会に望んでいた。まだ動機ははっきりしなかったが、リー・ハーヴェイ・オズワルドは単独犯となった。報告書によると、ウォーレン委員会から伏せられた最も重要な情報は、CIAは何年もの間、フィデル・カストロを暗殺しようと試みていた事だ。この情報が無ければ、委員会は、オズワルドがキューバ、メキシコ、または他にカストロの陰謀に対する報復でケネディを殺したい国の共犯かどうかを尋ねることさえ決してしなかった。

  6. 誰がこの文書を書いたかを覚えていて欲しい。ケネディ暗殺のような歴史の転換点の詳細を議論しているにも関わらず、これらは大抵は機関の外にいる人にとってほとんど意味のない専門用語を使った連邦政府の職員が他の政府職員に書いた文書である。以前は機密扱いされていた文書は、暗殺に関する罰の悪いまたは爆発寸前の情報が、書類の中または下にある官僚的な言葉に隠される傾向がある事を実証している。以前に除外されたファイルに埋め込まれた情報の例: オズワルドとメキシコシティのキューバ領事館で働いていたメキシコ人女性の間の事件の"事実"についての魅力的な情報を明らかにした1967年のCIAのメモ。その"事実"は取るに足らない特徴があり、誰も注意を払う価値がない。

  7. ウォーターゲートの歴史を勉強して欲しい。長く機密の暗殺ファイルには、著しい数のCIA関係者とあとでニクソン政権のウォーターゲート事件のスキャンダルで数字を発見したアメリカの政治家の活動が引用されている。これらのファイルには、ウォーターゲートの住居侵入犯の1人だったキューバの亡命者バーナード・バーカーの84ページの背景ファイルと、ウォーターゲートの共謀者E・ハワード・ハント(元CIA職員)の文書が含まれている。彼は、JFKの暗殺を事前に知っていた可能性があるとハントの家族は主張している。

  8. 良いチートシートと他のショートカットを見つけて欲しい。いくつかのウェブサイトは、暗殺についての疑問や陰謀説に専念している。一つは特に役に立つ: ジョン・ロバート・ケネディとマーティン・ルーサー・キングの両方の暗殺に関する政府のファイルやその他の情報の膨大なオンライン・アーカイブを作成したメアリー・フェレル財団のウェブサイトである。昨年、財団の会長レックス・ブラッドフォードは間も無く公開される文書の役立つ要約を作成した。ウェブサイトは、ケネディの暗殺の歴史に関わりのある人物やプログラムを特定するために使用された数千のCIAコードネームの意味に関する貴重なガイドを用意している。www.JFKfacts.org は、JFKの暗殺研究のための貴重なウェブサイトである。このサイトは、ワシントンポストの元ジャーナリスト、ジェームズ・モーリーと、オズワルド訪問時にメキシコのCIA局長だったウィンストン・スコットの伝記の著者によって運営されている。

  9. ジェームズ・ジーザス・アングルトンという名前を思い出してほしい。アングルトンは、ケネディ暗殺時のCIAの反諜報部長であり、ウォーレン委員会への情報の流れを管理していた。CIAで時代に合わなくなったアングルトンは偏執症、妄想的、嘘つきのアルコール依存症であり、比類なく悲惨な人間で、委員会から意図的にその証拠と証言を控えているようだ。そして、その調査を保証する事をのぞいて全て欠陥がある。今週発表される予定の最も興味深い文書の中には、議会調査官によるアングルトンとの1976年のインタビューの極秘の74ページの記録がある。

  10. ラファエル・クルーズの名前は忘れる事(おそらく)。テッド・クルーズ上院議員の78歳の父親であるクルーズは、昨年の選挙運動の間にトランプが提示した陰謀論の対象になっている。大統領になるトランプは、ニューオーリンズの該当にクルーズに似ている人物とオズワルドが写るウォーレン委員会のファイルの写真に基づいて、ラファエル・クルーズとリー・ハーヴェイ・オズワルドの間の関係を示唆したNational Enquirerの記事を繰り返し売り込んだ。キューバで育ったクルーズ上院議員と父親は、オズワルドとの家族関係を断固として否定した。そして、いかなるつながりを示唆する証拠も現れていない。

Hacker News 12

10/27/2017

初めて星間物体が太陽系内で発見される

NASA JPLより

最近発見された小さな小惑星あるいは彗星は、太陽系外を起源に持ち、銀河系のどこか他の場所から来ているようだ。もしそうなら、それは天文学者によって観察され、確認される最初の星間物体となる。

今、A/2017 U1と指定されたこの独特の物体は、直径が1/4マイル(400メートル)未満であり、非常に速く動いている。天文学者はこの注目すべき対象のある宇宙に、世界中の望遠鏡を向けるよう緊急で取り組んでいる。これらのデータが得られ、分析されると、天文学者は物体の起源およびおそらく組成についてより多くを知る可能性がある。

A/2017 U1は、ハワイのハレアカラにあるハワイ大学のPan-STARRS 1望遠鏡で、毎夜のNASAの地球近傍物体の探査の過程で10月19日に発見された。ハワイ大学天文研究所(IfA)のポスドク研究員であるRob Werykは、最初に動く物体を特定して小惑星センターに提出した。その後、WerykはPan-STARRS画像アーカイブを検索し、前夜に撮影した画像はあったが、移動物体処理では識別されなかった事を発見した。

Werykはすぐにこれは普通ではない物体である事を認識した。「その運動は、通常の太陽系小惑星または彗星の軌道を使って説明する事はできません。」と彼は語った。Werykは、IfAの卒業生Marco Micheliに連絡を取った。彼は、カナリア諸島のテネリフェ島にあるヨーロッパ宇宙機関の望遠鏡で撮影したフォローアップ画像を使って同じ認識を持った。しかし、組み合わされたデータで、全ててが辻褄が合った。Werykは「この物体は我々の太陽系の外から来たものです。」と語った。

「これまでに見た中で最も極端な軌道です。非常に速く、このような軌道上だと、この物体は太陽系から出ると二度と戻って来ないと自信を持って言うことができます。」カリフォルニア州パサデナにあるNASAジェット推進研究所の地球近傍物体研究センター(CNEOS)の科学者Davide Farnocchiaは語った。

CNEOSチームは、物体の現在の軌道をプロットし、将来についても調べた。A/2017 U1は星間空間を巡って毎秒15.8マイル(25.5キロメートル)で大急ぎで進んで、こと座方向からやって来た。

物体は、惑星とほとんどの小惑星が太陽を周回する空間の近似平面である黄道のほぼ真上から太陽系に近付いたため、太陽に向かって突き進むまで、8つの主要な惑星との接近遭遇しなかった。9月2日、小惑星は彗星の軌道の真ん中の黄道の下を横断し、9月9日に太陽に最も近付いた。太陽の重力に引きずられて、物体は太陽系の下でヘアピンカーブして、10月14日に月の距離の約60倍の約1500マイル(2400万キロメートル)の距離で、地球の軌道の下を通過した。これは、現在、惑星の軌道面の上に戻って来て、太陽に対して毎秒27マイル(44キロメートル)で移動し、物体はペガサス座に向かって加速している。

「惑星の形成過程で多くの物質が惑星系から放出される筈なので、このような物体が存在する事を長く疑っていました。最も驚くべき事は、星間物質が過去に通過したことが決して見られなかったと言うことです。」と小天体と太陽系形成を専門とするIfAの天文学者Karen Meechは語った。

小天体にはマサチューセッツ州ケンブリッジの小惑星センター(MPC)が一時的に指定したA/2017 U1が割り当てられている。ここでは、太陽系ないの小天体(今すぐ通過するもの)の観測が全て収集されている。MPCディレクターのMatt Holmanは、「この種の発見は、継続的な空の広域調査の素晴らしい科学的価値とフォローアップを集中的に行うことに加え、我々はまだそこに知らないものがある事を明らかにしてくれます。」

これは今まで発見されたことがないタイプの最初の物体であるため、このタイプの物体の命名規則は国際天文連合によって今後確立される必要がある。

「我々は何十年もの間、この日を待っていました。」CNEOSのマネージャPaul Chodasは語った。「小惑星や彗星が星間を移動し、時には太陽系を通過することは、長い間理論化されているが、これが初めての発見です。これまでのところ、全てが星間の物体である可能性が高いことを示しているが、データがそれを確認するのに役立つでしょう。」

Hacker Newsスラド

更新(2017.12.15): オウムアムアはエイリアン船の兆候はないとのこと。

CERNの科学者、宇宙は存在すべきではないという結論に至る

Slashdotより。我々が住む宇宙は物質が支配的である事から、物質と反物質には何らかの違いがある筈だが、いまだにそれが見付からない。

新しい研究によれば、CERNの科学者たちは宇宙が存在する理由について困惑している。レポートから、読者が共有する:
最近の発見は、物質と反物質の間に完全な対称性がある事を示唆しているつまり、なぜそれらが宇宙の誕生時にお互いを消滅させなかったのかは定かではない。CERNの最新の研究では、ビッグバンの後で、異なる磁気特性が物質の見せかけの勝利を説明されるかどうかを解明しようと努めてきたが、別の対称点が見つかった。本質的に、今までの研究結果で行けば、絶対に宇宙は存在すべきではない。
更に読む: Cosmos Magazine「宇宙は存在すべきではない、CERN物理学者が結論を下す

スラド

10/26/2017

Appleは製造を容易にするためFace IDの精度を落としている?? (iPhone X)

Slashdotより。製造が安定したのか、精度を落として安定したのか...??

Appleが11月3日から出荷開始予定のiPhone Xの生産をスピードアップするため、iPhoneメーカはFace IDの顔認識システムの精度を落とす可能性があるとサプライヤーに語った。ブルームバーグが問題に精通する複数の人物を引用する形で水曜日に報道した。これまでの報道によると、サプライヤーはFace IDシステムの製造が困難に直面しており、これがホリデーシーズンに向けて十分なiPhone Xユニットを製造を抑えていたものである。報道より:
ウォール・ストリートのアナリストやファンのブログは同社がつまづく兆候を見て、Appleは解決策を思い付いた。この状況に精通する人物によると、それはサプライヤーに製造を簡単にするために顔認識技術の精度を落とす可能性があると密かに伝えた。Appleは、技術的な飛躍や競争力の維持を支援するためサプライヤーと契約メーカに対し圧力をかけ、周知の通り注文が多い。制度が落ちたFace IDは既存のTouch IDよりはるかに優れているが、このモデルの技術をダウングレードすると言う同社の決断は、消費者が夢中になるような最先端の機能を作ることがどれだけ難しいかを示している。また、Appleは過去にも遅れや供給の制約を受けてきたが、一般的には特定のiPhoneの色あるいは、Apple Watchのようなそれほど重要ではない製品に限定されていた。今回は、製造のハードルが同社の収入の多くの生み出すと予想される10周年記念のiPhoneに影響を与えた。
Appleはブルームバーグの報道による主張を否定している

追記(2017.10.28): ジョン・グルーバーのブログより。ジョン・グルーバーみたいな有名人も、ちゃんとショップで買っているのね。当初言われていたほど供給・生産が厳しいわけでは無いのかも知れない。

ロイター:

「初動の反応からお客様の需要がとてつもないものだとわかります。私たちは、この革新的な新製品をできるだけ早く希望する全てのお客様に手渡すため懸命に努力をしています。」Appleのスポークスウーマンがロイターに伝えた。

私は、昨晩立ち上がった時に注文を行いました。妻の注文は、iOS Apple Storeアプリを強制終了/再起動の約10分後、出荷日が11月17-24日を超えてしまいました。私の注文は数分後になり、出荷が12月5-11日になりました。

しかし、今日でも注文はまだたったの5-6週間です。私は供給が非常にタイトで今年1月になると心配していました。

いかにして、ソーシャルメディアが知識を危険にさらしているか

WIREDより

オープンで分散したウェブの最後の残りの支柱の一つであるウィキペディアは、実在的危機にある。

これはお金でどうにかできる事ではない。数年前、サイトは恐怖の資金調達キャンペーンを開始したが、皮肉な事にドナルド・トランプのおかげで、ウィキペディアは裕福でも、うまく組織化されていたわけでもなかった。アメリカのリベラルな人は、トランプの出現が国の根本にある啓蒙主義の理念を脅かし、非営利団体のバランスシートを安定させるのに必要な資金の重要な流れを壊したと言う。

この幸せなニュースは、ウェブサイトへの貢献者数の増加率が平坦化しているという問題に関連して多くを隠している。これは世界の一般的な傾向のもう一つの厄介な兆候である。知識という概念そのものが危機に瀕しているのだ。

ウィキペディアの背後にあるアイデアは、それ以前の百科事典のように、人間の知識全体を集める事だった。それは、ムハンマドの有名な考え「知識のためには中国へも」からインスピレーションを得た数多の学者が、ギリシア語、ペルシャ語、シリア語、インド語からアラビア語に翻訳した様々なトピックに関する全ての既存の情報を収集し、文書化するために彼ら自身に設定した時代、イスラムの黄金時代に遡る事が目標である。9世紀、イブン・クタイバというペルシャの学者が権力、戦争、貴族、性格、学習と雄弁、禁欲主義、友情、祈り、食べ物、女性に関する最初の真の百科事典10冊を収集した。彼は1世紀後に、ペルシャの学者アル=フワーリズミーに続いた。彼は代数を発明しただけでなく、彼が生来備わった知識(法学、学術哲学、文法、秘書職、韻律と詩作、歴史)と外国の知識(哲学、論理、医学、算術、幾何学、天文学、音楽、機械工学、錬金術)と呼んだものをカバーする百科事典を編纂した。中国人は、7世紀まで遡る独自の百科事典を持っていた。

ヨーロッパでは、現代の百科事典を編纂する探求は、18世紀の啓蒙主義で始まった。(イマヌエル・カントは、知る事に果敢であれという運動の適切なラテン語のモットーを作った) フランシス・ベーコンドゥニ・ディドロのようなフランス啓蒙思想家たちは、フランス、ドイツ、イングランド、スイス、オランダの人々にインスピレーションを与えた野心的な百科事典の作成を始めた。この宗教支配階級の不快感は、財政的実現可能性を助けただけであった。より一層世俗的な中産階級のために、しばしば数多くの出版されている大規模なコレクションのための明らかなマーケットが存在した。百科事典の最初の巻は、1751年に2000人の購読者に売られた。彼らは全体で28巻を受け取る事になる。ヴォルテールルソーモンテスキューのような著名な革命的思想家たちが仕事の編集に関わっており、何人かは刑務所で終わった。1772年の最後の巻が出版されてからわずか17年後に、フランス革命が始まり、おそらく人類史上最も世俗的状態に繋がった。

合理主義と啓蒙主義へのその傾向は、インターネットの到来のずっと前に危機に瀕していた。ニール・ポストマンが1985年に出版した「愉しみながら死んでいく」という本で書いたように、テレビの登場は新しいメディアだけではなく、新しい会話をもたらした。活版文化から写真文化への段階的な移行は、合理主義から感情への移行、エンターテイメントへの博覧会を意味した。イメージ中心の享楽主導の世界では、ポストマンが記すように、単純にイメージで考えることはできないため、そこには合理的な思考の場は存在しない。論理と常識の濫用に気付くため、我々が嘘や混乱、過剰な一般化を見出す事を可能にするテキストである。それは、アイデアを評価し、主張を比較して対比させ、一つの一般化を別のものに関連づけることを意味する。

テレビの支配は我々のリビングルームには含まれていなかった。それは、世界の我々の経験を根本的に変え、政治、宗教、ビジネス、文化の行為に影響を及ぼす心の習慣それら全てをひっくり返した。現代生活の多くの側面をエンターテイメント、センセーショナリズム、コマースに還元した。「アメリカ人はお互いに話をせず、我々はお互いを楽しませる」ポストマンは書いた。「彼らはアイデアを交換せず、イメージを交換する。彼らは命題を議論しない。彼らは、美貌、セレブ、コマーシャルについて反論する。」

当初、インターネットはこの傾向に逆らっているように見えた。純粋なテキストベースのメディアとして80年代終わりに向かって現れた時、それは娯楽ではなく知識を追求する道具として見られていた。理性と思想がこの庭の中で最も価値があるとされてきた。全てが啓蒙主義のプロジェクトから得られたものだ。世界中の大学がこの新しいメディアに接続を始め、ディスカッショングループ、情報に富んだ個人やグループのブログ、電子雑誌、学術メーリングリストやフォーラムを主催した。それは、スイスの科学研究センターで創造されたコマースや管理ではなく、知的プロジェクトだった。

ウィキペディアはこの庭の果実だった。Google検索やテキストベースの広告モデルも同様だった。テキスト、ハイパーテキスト(リンク)、知識、文学を大切にするブログもそうだった。それらは、知識のグローバルな集積に貢献する能力を効果的に民主化した。10年以上に渡り、ウェブは社会に対するテレビの影響を脅かす代替空間を作り出した。

しかし、ソーシャルネットワークはテレビの価値のためにウェブを植民地化してきた。FacebookからInstagramまで、メディアはビデオや画像に注意を向けるようになった。合理的なものより、いいねボタンで感情的アピールに価値があるとしている。知識の探求の代わりに、我々が絶え間なく無意識のうちに実行しているオーディエンスからのすみやかな承認のために、我々を無限の喜びに引き込んでいる。(それは、Googleが博士論文として始まる一方、Facebookはクラスメートの外見を判定するツールとして始まった事を伝えている) 我々のプロフィールや嗜好に基づいて、我々が既に欲し考えているものを正確に見せて、我々の好奇心を削いでいくのだ。啓蒙主義のモットー「知る事に果敢であれ」は、「知る事を気にするな」になっている。

それは、フランスの哲学者ギー・ドゥボールの言葉をさらに証明する出来事である。前資本主義は存在(being)について、資本主義は所有(having)について、後資本主義で重要なのは豊かさ、幸福、思慮深さ、クールでコスモポリタンような出現(appearing)だけであると書いた。彼の分析の正確さに驚かされずにInstagramを開く事は難しい。

今、課題は、ウィキペディアと、新旧テレビの克服の中で、全ての人類の知識の収集を自由に公開するという約束、誰も気にしない知識を集めて保存する方法を守る事である。テレビはウィキペディア自体をも汚染している。今日、最も人気のあるエントリーの多くは、テレビシリーズやそのキャストを話題にする傾向がある。

諦める時では無い。しかし、我々はウェブとそれによるウィキペディアの衰退が、はるかに広範囲に広がっている文明の転換の一部である事を理解する必要がある。

Hacker News

10/25/2017

マインドハンターのエド・ケンパー

geektyrantより。キャメロン・ブリットン、名演だ。

あなたがまだ「マインドハンター」を観ていないなら、それは絶対に間違いだ! その魅力の一部は、このドラマがアメリカで現実に起こったシリアル・キラーを投入した実在したインタビューである。しかし、ドラマはこの個性をどのように正確に描いているのだろうか? シリアル・キラーのエド・ケンパーとの比較を並べて判断してくれ。

私は彼らがかなり良い仕事をしたと思う。あなたはどうだろう?

YouTube

FBIのニコラ・テスラのファイル

BoingBoingより。JFKの資料、テスラ同様何も出てこないと思うが...

昨年、FBIは連邦情報公開法の要請に応えて、発明家ニコラ・テスラのファイル160ページを公表にした。おそらく今後のJFK暗殺ファイルの公開への期待切望のため、ネットで急速に広まった。[via]

平和の光に対してイエス!

10/24/2017

TCP/IPはXerox PUPから多大な恩恵を受けている

Network Worldより

Xerox PARCの元管理者であるロバート・テイラーへのインタビューでは、TCP/IPのデザインはPARC Universal Packet (PUP)ネットワーキング・プロトコル・スイートから多大な恩恵を受けている事を指摘する。

今日、滅多に議論されないが、最も影響力の大きいことの一つ、PARC Universal Packet (PUP)というネットワーキング・プロトコル・スイートについて話をしたいと思う。

Xeroxのパロアルト研究センター(PARC)でPUPの開発を率いた多くの人やプロジェクトが存在するため、この素晴らしくオタクっぽい話を始めるのに良い場所を見つけるやりがいがある。私がいい開始点だと思うのは、1973年だ。

具体的には、その年の5月22日。その日、ロバート・メトカーフは"イーサネット"という名前が誕生したというメモを書いた。好奇心をそそる人のために、それは"エーテル (Luminiferous ehter)"にちなんで名付けられた。これは、電磁波の伝搬のための偏在する完全に受動的媒質という反証された理論(1800年代に)である。

もちろん、イーサネット自体は素晴らしい。しかし、ネットワーク・プロトコルとそれを使用する一式を持つことは更に優れている。従って、PUPが1974年に誕生した。

ルーティング、パケット配信、信頼できるバイトストリーム、プリンタースプール、Telnet、FTP、名前検索と、PUPは確かに堅牢なネットワーキング・スイートだった。TCP/IPが完全に現れる数年前の事だった。

Xerox PUPは不注意に公開された

これが私が何より面白いと感じる話の根拠である。1970年代のXerox PARCの管理者であるロバート・テイラーの口述歴史から抜粋したもので、コンピュータの歴史博物館(pdf)によって出版されている。

Xeroxの弁護士達はPUPを外部に公開しないようにしてくれました。1975年にスタンフォード大学の教員だったヴィントン・サーフ氏は、1974年にスタンフォード大学のデザイン委員会を創設し、主にARPANETを設置するためのプロトコル設計を思い付いたと思います。彼は、PARCのある人々を招いてこの会議に出席し、PARC外の誰も私達が取り組んでいたPUPを知りませんでした。

しかし、Xeroxの弁護士はスタンフォードでこの会議に出席したXeroxの人に話したが、スタンフォードの人々にPUPについて話す事は出来なかった。そこで、メトカーフとジョン・ショックはこれらの会議に行きました。そして、デーブ・ボグスとエド・タフトも行きました。

そして、Xeroxの人たちはこの会議に出席し、スタンフォードの人の中には、テーブルの上に設計のアイデアを置く人もいた。Xeroxの人は、「さて、もしそうなら、あなたはここでこのアイデアに問題を抱えているかも知れないし、ここでこの特徴を持っているかも知れません。そうすればそうする事ができます」と言いました。

そして、この会話は数回の間に広がりました。そして、スタンフォードの人たちの一人がテーブルから戻って来て、言いました「あなた達は既にこれをやっていますね?」。そして確かに彼らはやっていました。

そのため、ヴィントン・サーフとボブ・カーンはXeroxの弁護士に名声の借りがあります。それがXeroxの弁護士のためでなければ、誰もTCP/IPに聞いた事がなかったでしょう。TCP/IPのデザインはPUPに大きく依存していました。

その通り。ヴィントン・サーフとボブ・カーンは、しばしばインターネットの父であると考えられているが、PUPを開発したPARCのエンジニアに真の大きな名声を与えるべきである。

これは、あまり十分に話されていないコンピュータの歴史の小さな事実である。

数年後、1977年にPUPはXerox Network Systems (XNS)に引き継がれ、AppleNetを含む1980年代初頭のネットワークシステムに影響を与えた。しかし、それはまた別の日に話しましょう。

10/23/2017

アメリカは核爆撃機を24時間警戒態勢に戻す準備をしている

Definece Oneより。アメリカは1991年の冷戦以来、再び核兵器の即時爆撃体制を整え始めたとの事だ。

命令が出れば、B-52は冷戦以来見られていない飛行準備姿勢に戻るだろう。

バークスデールの空軍基地 — 米空軍は1991年の冷戦終結以来、核爆撃機を24時間待機状態に戻す準備を進めている。

つまり、この基地の11000フィートの滑走路の端にある長く使用されていないコンクリートパッド(角張った模様からクリスマスツリーと呼ばれている)で、再びB-52を何機か見つける事ができる。それらは、核兵器を積んで、瞬時に離陸する事をできる。

空軍のデイビット・ゴールドフェイン将軍は、核計画をサポートするバークスデールや他の米空軍基地を6日に渡って訪問した際のインタビューで、「これは我々が準備が出来ている事を確認するためのもう一つのステップだ。」と述べた。「具体的なイベントを計画していないが、我々自身が理解するグローバルな状況の現実と、どのように我々が今後の準備を確実にするかを検討している。」

ゴールドフェイン氏とその他の上級国防関係者は、警戒命令は出されていないが、準備が進んでいる事を強調した。この決定は、米国戦略司令官のジョン・ハイトン将軍、あるいは米国北部軍のトップであるローリ・ロビンソン将軍によって行われる。STRATCOMは軍の核兵器を担当し、NORTHCOMは北米を防衛する責務を負っている。

B-52を警戒態勢に戻す事は、急速に進んでいる北朝鮮の核兵器、トランプ大統領の北への衝突を招くような対立姿勢、ロシアのますます強力で積極的な軍事力など、変化する地政学的環境に対応するため、米軍として空軍が直面する多くの決定の一つである。

空軍の最高責任者であり、合同参謀本部のメンバーであるゴールドフェイン氏は、核兵器が抑止または戦闘に使用される新しい方法について考えるよう軍に求めている。

「世界は危険な場所であり、核兵器の利用について公然と話している人々がいる。」彼は語った。「もはや、我々とソ連だけという二極的世界では無い。核の能力を持つ他の勢力が出てきている。この任務をきちんと整える事がより重要になってきている。」

ゴールドフェイン氏は、先週海外への視察の間、飛行士にICBM、爆撃機、核巡航ミサイルの利用を冷戦にとらわれず考えるよう勧めた。

「私は挑戦した...空軍の地球規模攻撃軍団は話し合いを主導するのの役立つ、『従来の紛争は核兵器の要素を持つように見えるか?』や『それが起こるなら、我々はグローバルな力として対応するか?』や『選択肢は何なのか?』に関する議論に役立つ」と彼は語った。「どのように我々はそれについて考えるのか? その環境における抑止についてどのように考えるのか?」

B-52を警戒態勢に戻す事が何十年に渡ってそうであったように抑止力に役立つと思うかという質問に対して、ゴールドフェイン氏は分からないと言った。

「我々が誰にどのような行動を取っているのか、そして彼らが我々の準備状況に注意を払っているかどうか次第である。」彼は言った。

既にB-52を警戒態勢の姿勢に戻すためにいくつかの改善がバークスデールでの準備で作られている。核兵器保有国を監視する第2爆撃航空団や空軍の地球規模攻撃軍団がある。警告パッドの近くには、冷戦時にB-52の乗組員が眠り、航空機に飛び乗り瞬時に離陸するための準備をしていた古いコンクリート製の建物が改装されている。

内部には、100人以上の乗組員のためのベッドと爆撃機を外の9つの警報パッドに配置する乗務員のために十分なスペースの部屋が用意されている。ビリヤード、テレビ、シャッフルボードテーブルを備えた娯楽室がある。バークスデールの各飛行大隊のパッチの大きな絵が、大きな階段の壁に飾られている。

冷戦の象徴である一つの絵は、下に書かれた「昔ながらのやり方の平和 (Peace The Old Fashioned Way)」という言葉と一緒にB-52のシルエットを描いている。階段の下には、戦略航空軍団のロゴがある。アメリカのB-52が屋外の滑走路に備えて着く冷戦期の更にもう一つの思い出させるものがある。

これらの長く空きのB-52の駐車スペースには、すぐに2機の核兵器司令航空機、E-4B NightwatchとE-6B Mercuryによって訪れる事になり、どちらも折に触れてそこを警戒する事になる。核戦争中に、それぞれの飛行機は国防長官とSTARTCOM指揮官の空飛ぶ指揮所になるだろう。大統領から攻撃命令が出された場合、航空機は爆撃機、ICBM、潜水艦の発射コードを送信するために使用される。少なくとも4つの核兵器を発射可能なE-4B(正式には国家空中作戦センターと呼ばれるが、最後の審判の飛行機(Doomsday Planes)として一般に知られている)は、常時24時間警戒態勢である。

バークスデールと他の核爆弾基地は、開発中の新しい核巡航ミサイルの貯蔵施設の建設を準備している。ゴールドフェイン氏は外遊中、400基以上の大陸間弾道弾ミニットマン3の交換案への準備作業と新しい長距離巡航ミサイルに関する最新情報を受け取った。

「我々の仕事は選択肢である」ゴールドフェイン氏は述べている。「我々は司令官とトップと防衛長官のための最高の軍事的助言と選択肢を提供する。STRATCOMの指揮官を必要とする、あるいはNORTHCOMの指揮官が国土を守る準備を整える必要がある場合、我々はそれらの軍隊を置く基地を持たなければならない。」

Hacker NewsSlashdot

インフレーション宇宙は科学理論か? もはやそうでは無い

Sabine Hossenfelder氏のブログより。フォーブスの記事は図付き。

我々は拡大解釈された量子変動から作られている。少なくとも、それは宇宙論学者の現在最も一般的な説明である。彼らの理論によれば、我々の存在の歴史は数十億年前に、宇宙をインフレーションと呼ばれる急激な膨張段階に推進する(今はない)場で始まった。インフレーションが終わった時、場は崩壊し、そのエネルギーは放射と粒子に変換され、今日まだ存在している。

インフレーションはポール・スタインハートらによって35年以上前に提案された。しかし、スタインハートは理論の最も熱心な批判者の一人になっている。サイエンティフィック・アメリカンの最近の記事(日経サイエンスの2017年6月号に掲載されている)で、スタインハート、アナ・エイジャス、アヴィ・ローブと共にためらわなかった。ほとんどの宇宙論者は、彼らが主張するように無批判な信奉者である。

「宇宙論コミュニティは、ビッグバン・インフレーション理論を冷静かつ正直に見ていないか、インフレーションが起きたかどうか疑問に思う批評家に大きな注意を払っていない。むしろ、宇宙論者は宇宙の観測された特徴の唯一のシンプルな説明を提供するために、インフレーション理論を信じなければならないという支持者の主張を、額面通りに受け入れているように見える。」

そして、更に悪い事に、彼らの主張であるインフレーションは、科学的理論でさえ無い。

「インフレーション宇宙論は、我々が現在理解しているように、科学的方法を用いて評価する事が出来ない。」

インフレーションの代替案として、スタインハートらは、宇宙の膨張に先行して収縮期があり、インフレーションと同様の利点をもたらすビッグ・バウンスを推進している。

インフレーションに対するグループの戦いがニュースでは無い。彼らは昨年の間に一連の論文で主張を展開した(私はここで以前コメントをした)。しかし、ステージにインフレーションの守護者と呼ばれる最新のSciAm作品が現れた。ディビッド・カイザーによる導きで、彼らはインフレーション批判の場を与えたと訴えるサイエンティフィック・アメリカンへの手紙に署名した。

この手紙の署名者リストには、自身でインフレーションに取り組む研究者とインフレーションとほとんど関係がない物理学者の奇妙な選抜があった。興味深い事に、インフレーションの予測を推論した最初の一人であるスラバ・ムカフは署名しなかった。そして、彼は求められなかったわけではない。2ヶ月ほど前のスティーブン・ホーキングの誕生日会議で活発な講演が行われた際、ムカノフはインフレーションモデル構築の大部分が時間の無駄だと考えている事を明らかにした。

私はムカノフの評価に同意する。スタインハートらの論文は、まさに科学文書の傑作ではない。また、SciAmを使って、インフレーション批判に固執するのではなく、宇宙がどのように始まったかの他の理論を推進するのは残念である。しかし、批判はもっと早くすべきである。

インフレーションの問題は、本質的にアイデアでは無く、無駄なインフレーションモデルの過剰生産である。文字通り何百ものモデルが存在し、賢人が言うように、著しく過小評価されている。つまり、いまだ立証されていない型に現在のデータを合わせたモデルを当てはめたため、結果は曖昧である。様々なモデルは未だ観測されていないものに対して、非常に異なる予測を導く。従って、現時点で文字通り無限に多くのモデルが考えられるため、インフレーションの詳細をもてあそぶ事は、全くの無意味である。

しかし、この過剰生産問題を取り上げるのでは無く、スタインハートらはSciAmの記事で、インフレーションが解決しようとしていた問題を解決できなかった事に焦点を当てている。しかし、それは馬鹿げた批判である。問題はインフレーションが解決を意味する問題は始めるための問題ではない。私は真剣である。それらを一つずつ見ていこう。

1. モノポール問題

グースはモノポール問題を解決するためにインフレーションを発明した。例えば大統一理論の対称性が破られたなど、初期宇宙が相転移を経ているなら、モノポールのような位相的欠陥が豊富に生成される筈である。しかし、我々はそれらを見ていない。インフレーションはモノポール(と他の悩み事)の密度を低下させ、我々が今後遭遇する事はまずないだろう。

しかし、私たちがモノポールを見ない理由についての説得力のある説明は、モノポールはどこにも存在しないと言う事だ。我々は、初期の宇宙で破られた超対称性が存在するかどうか、あるいは存在するなら、いつ破られたのか、破られて欠陥が生じたのか分からない。確かに、大部分は陽子崩壊による超対称性の証拠を求める全ての探索者が、結局は否定であると分かった。この動機付けは、歴史的理由から今日では面白い。

2. 平坦性問題

平坦性問題は微妙な問題である。宇宙は現在ほぼ平坦であるように見えるか、曲率を有する場合、その曲率は非常に小さくなければならない。しかし、宇宙のダイナミクスへの曲率の寄与は、物質に対する関連性が増加する。つまり、曲率密度パラメータが小さい場合、過去にはさらに小さかったに違いない。インフレーションは初期曲率寄与をおよそ100桁より小さくするよう働く。

これは本来ならば説明になっているはずであるが、何も説明していない。差し当たり、質問できるのは、なぜ元の曲率が他の数字よりも大きくならなかったのか? 一部の物理学者がここで説明されている何かを信じる理由は、1に近い数字は現在の美しさの基準によればかなりだが、1の数字よりはるかに小さい限りそうではない。従って、平坦性の問題は審美的問題ではないし、私は科学者が真面目に受け止めるべきにテーマだとは思わない。

3. 地平線問題

宇宙マイクロ波背景放射(CMB)はほぼ全ての方向で同じ温度である。問題は、インフレーションを起こさず背景放射の起源をたどった場合、異なる方向から我々に到達する放射は決してお互いに因果関係があるとは言えないのだ。それでは、なぜ全方向に同じ温度を持っているのだろうか?

なぜこの問題が問題ではないかを知るため、我々が現在物理学で使っている理論がどのように働いているかを知る必要がある。我々は、システム(例えば、宇宙)がある場所から別の場所へ、そしてある瞬間から別の瞬間へとどのように変化するかを示す方程式(微分方程式)を持っている。しかし、この方程式を使用するには、初期値あるいは初期条件が必要である。*

地平線問題は、宇宙にとって「なぜこの初期条件なのか」を求めている。多くの情報を必要とするという意味で、初期条件が複雑なら、この疑問は理にかなっている。しかし、一様な温度は複雑ではない。それは非常に簡単である。そして、単に説明する事は多いというだけでなく、その上、インフレーションは「なぜこの初期条件なのか」という疑問には、さらに初期条件は必要なので何も答えない。それは全く別の初期条件である。これは簡単ではなく、何も説明しない。

これが問題ではない事を確認する別の方法は、インフレーションを起こさず十分に時間を遡ると、量子重力が重要であるように物質が非常に高密度に湾曲した時期となる。そして、量子重力理論における初期条件の可能性について、我々は何を知っているのか? 全く何もない。

しかし、宇宙の初期条件を説明するために量子重力理論が必要であるという事は、何も計算できず、予測できないため、非常に不人気な見方である。

一方、インフレーションは、宇宙論者が論文を捏造する事を可能にする素晴らしく生産的なモデルである。

あなたは、上記の3つの問題が、インフレーションの動機付けとして、宗教的に繰り返されている事を、講演や教科書、そして人気の科学ページで何度も繰り返す事になる。しかし、これらの問題は問題ではなく、決して問題ではなかったし、決して解決策を必要としない。

しかし、インフレーションは着想された時は不正だったにも関わらず、後で実際にいくつか実在する問題を解決することが分かった。そう、時に物理学者は正しい理由で間違った事に取り組むこともあるし、間違った理由で正しい事をすることもある。インフレーションは後者の例である。

今日の多くの物理学者がインフレーションのような何かが起きたと考えている理由は、おそらく上記の3つの問題を解決することが起きなかったに違いないと考えているからである。CMBのいくつかの特徴は、インフレーションの大きさに依存する相関関係(TEパワースペクトル)を有し、宇宙の大きさに依存する事を意味する。従って、この相関関係は、異なる時間に戻るためのデータであるため、初期条件を選択するだけでは簡単に説明できない。それは、どこから始まったかではなく、宇宙が時間と共にどのように変化したかについて、我々に確かに何かを伝えている。**

インフレーションの2つの説得力のある特徴は、かなり一般的条件下で、CMB(非ガウス型)における特定の相関関係が無い事と、どのくらいの大きさのCMB変動数が、スケールファクタとして知られるもので定量化される任意のサイズがいくつ存在したかである。

しかし、ここに摩擦がある。インフレーションによる予測をするには、「一度指数関数的拡大があり、どういうわけか終わった」というだけではない。いや、何かを計算できるようにするには数学モデルが必要である。現在のインフレーション・モデルは、新しい場、この場にポテンシャル・エネルギーを与えるインフラトンを導入する事で機能する。ポテンシャル・エネルギーは、様々なパラメータに依存する。そして、このパラメータは観測に関連させる事ができる。

この状況への科学的アプローチは、モデルを選択し、観測に最も適したパラメータを決定し、必要に応じてモデルを修正する事である。つまり、新しいデータを中に入れるのだ。しかし、それは宇宙論者が現在行なっている事でない。代わりに、彼らは、近い将来に測定される可能性あるのあるものを予測できる非常に多くのモデルの変形を生み出している。

インフレーションは科学的な理論では無いという批判を引き起こすのは、この無駄なモデルの多さである。そして、その理由により、その批判は正当化される。これは良い科学的慣習では無い。この慣習は露骨に言うと、科学を進歩させるものではなく、論文を生み出すために当たり前になっている。

私は、スタインハート、エイジャス、ローブによる批判が、それ自身にとってあまりにも快適になり過ぎたコミュニティによって素早く却下された事に気付いた。インフレーションは、基本的な数学的モデルに既存の観測を関連付けるのに有益である。しかし、我々はそこから信頼できる予測をするのに十分なデータをまだ持っていない。我々は代替案を説得力を持って排除するための十分なデータを持っていない。

インフレーションのためのノーベル賞受賞者はまだ存在しないし、ノーベル委員会がその決定をうまくやっていると私は思う。

あなたが科学と何とかかんとかの間の境界を越える時、警告のサインは存在しない。しかし、インフレーションモデルの構築は、ずっと前に合理的な科学的推論に取り残された。私個人としては、少なくとも一部の人がそれについて話している事を嬉しく思う。そして、それが私がスタインハートらの批判を認めている理由である。


* 名前が示すものとは対照的に、初期条件は必ずしも最初の条件である必要はなく、ある時点の可能性がある。我々はそれでもそれらを初期条件と呼ぶだろう。

** この議論はモードの時間依存性を抽出する事は、既にインフレーションのようなものを前提としているため、いくぶん循環的である。しかし、少なくともそれは強い指標である。

Hacker News

10/22/2017

Tracerouteの嘘! 典型的な間違った解釈

MovingPackets.netより

時々、パフォーマンスの問題を抱えるユーザは、誇らしげに私にtracerouteの結果を見せ、ネットワーク上の特定のホップを指差して、リンクの遅延が大きいため問題であると訴える。千回に1回は正しく、リンクは完全に飽和している。他の999回は、うーん、私に説明させて欲しい。

Mp traceroute header 768x388

Tracerouteの出力

ここに私がユーザから送られた典型的なtracerouteがある(IPやホスト名は罪なき人を守るために変更されている)。

$ traceroute www-europe
traceroute to www-europe (18.9.4.17), 64 hops max, 52 byte packets
 1  gateway (57.239.196.133)          11.447 ms   18.371ms    25.057 ms
 2  us-atl-edge (137.16.151.202)      13.338 ms   20.070 ms   19.119 ms
 3  us-ga-core (57.239.129.37)       103.789 ms  105.998 ms  103.696 ms
 4  us-nyc-core (57.239.128.189)     107.601 ms  103.116 ms  103.934 ms
 5  us-east-core (57.239.13.42)      103.099 ms  104.215 ms  109.042 ms
 6  us-east-bb1 (57.239.111.58)      107.824 ms  104.463 ms  103.482 ms
 7  uk-south-bb1 (57.240.117.81)     106.439 ms  111.156 ms  104.761 ms
 8  uk-south-core (57.240.117.61)    103.408 ms  104.430 ms  103.277 ms
 9  uk-london-core (57.240.132.178)  131.883 ms  104.071 ms  104.161 ms
10  uk-london-edge (99.88.4.133)     104.642 ms  105.685 ms  106.011 ms
11  www-europe (18.9.4.17)           103.465 ms  103.630 ms  104.228 ms

見て欲しい! ユーザはわめいている。alt-edgeからga-coreまでのリンクは、遅延が20msから106msになっているので、明らかに全てが混乱している!

いいや、違う

問題のリンクは明らかに90msの遅延が加わっているが、ホップ6と7の間のリンク(米東海岸からイギリスへジャンプ)遅延が増加していないように見えるのは奇妙ではないだろうか? 事実、3以降の全てのホップの待ち時間がほぼ同じである事も奇妙ではないだろうか?

これを読んでいる多くの人が既になぜこうなっているか検討がついていると思うが、そうでない人にとって(何ら恥じる必要はない)、これはパスにMPLSが存在し、MPLSプロバイダエッジ(PE)がホップ2のルータである事を示している。

なぜか?

MPLSネットワークのメリットの一つは、ネットワークコア(プロバイダあるいはPルータ)がエッジのルータについて何も知る必要が無い事を思い出して欲しい。Pルータが知る必要がある2つの事は、1) 他の全てのMPLS対応ルータがどこにあり(普通、OSPFあるいはIS-ISで分かる)、2) 着信ラベルに基づく着信MPLSラベルをどこに転送するかである。これらは比較的ダムスイッチであり、ネイティブのIPルータよりも高速にトラフィックを転送する事ができる。それで問題は何だろう?

Mp mpls diagram

TracerouteはTTLを増加させてパケットを送信する事に依存する。TTLが期限切れになると、期限切れになったルータは通常、通過中にTTLが期限切れになった事を警告するICMPメッセージを送信者に送り返す。これは、tracerouteがネットワーク内の各ホップをどのように気付いたかを示している。上記のMPLS図を見ると、Pルータ上でTTL期限切れになった時、何が起こったのだろうか? Pルータはエッジルータを知らないので、ルータはどのようにICMPパケットを知らない発生源に戻せるだろうか? MPLSラベルは宛先に一方向であり、リターンパスを含んでいないので、Pルータができる唯一の事を行う。使用する送信ラベルを妨害し、ICMP TTL Expiredメッセージを含む新しいMPLSフレームを作成し、このフレームは宛先PEルータ(この場合、PE-B)までずっと切り替えられる。

PE-Bはフレームを受信し、その中のICMPメッセージを見て、自分のPCである宛先アドレスを調べる。PEルータとして、自分のPC(どのラベルをMPLSネットワークに再度送信するのに使うのか)を得る方法を知っており、ICMPパケットをMPLS内にパッケージ化して、MPLSネットワーク内に送り返す。

言い換えると、MPLSネットワーク内で生成されたICMP TTL Expiredメッセージは、実際にはMPLSネットワークの遠方に流れてから再び戻って来る。それが全て同じTTL値を持つ理由で、この例では全てTTLが大きくなる理由である。(この場合、USからUKに、PCに戻るためにUKからUSに横断する必要があるため)

Mp mpls ttl expired

あなたはこれを今まで見た事が無いなら、非常に混乱するかも知れない。その結果、tracerouteのおかげで、実際には問題の無いリンクのトラブルシューティングに時間を無駄にしてしまったのだ。

注記: 全てのMPLSネットワークがMPLSフレーク内の着信パケットのTTLをプッシュするわけでは無いため、TTLはMPLSネットワークの途中で必ずしも期限切れになるわけでは無い。従って、MPLSネットワークはICMPパケットによって単一のホップとみなされる可能性があるため、洞察がMPLSネットワークの内部ノードで常に得られるとは限らない。

10/21/2017

Goでブロックチェーンを作る (第7回: ネットワーク)

Ivan Kuznetsovさんのブログより。最終回。

概要

今までのところ、匿名でセキュアでランダムに生成されたアドレス、ブロックチェーンのデータストレージ、プルーフ・オブ・ワークのシステム、トランザクションを格納する信頼性のある方法といった全ての主要機能を持つブロックチェーンを作ってきた。これらの機能は重要だが、十分ではない。これらの機能を本当に輝かせてくれ、暗号通貨を可能にしているのは、ネットワークである。このようなブロックチェーンの実装を一台のコンピュータ上で実行して何になるだろう? ユーザが1人だけの場合、これらの暗号ベースの機能の使用して何になるだろう? これらのメカニズムを全て機能させ、有用にしているのはネットワークである。

ブロックチェーンの機能をルールとして考える事ができる。それは、人々が生活と繁栄ぞ望む時に確立するルールと同様である。一種の社会的取り決めである。ブロックチェーン・ネットワークは、同じルールに従ったプログラムのグループであり、ネットワークを活動させるルールに従う。同様に、人が同じアイデアを共有する時、それらはより強くなり、共により良い生活を築く事ができる。違うルールに従う人がいる場合、彼らは独立した社会(国、コミューンなど)で生きるだろう。同じように、異なるルールに従うブロックチェーンノードがある場合、独立したネットワークを形成するだろう。

これは非常に重要である。ネットワークではなく、大多数のノードが同じルールを共有していない限り、これらのルールは役に立たない。

免責事項: 残念ながら、実際のP2Pネットワーク・プロトタイプを実装するには十分の時間がなかった。この記事では、様々なタイプのノードを含む最も一般的なシナリオを説明する。このシナリオを改善し、これをP2Pネットワークにする事は、あなたにとって良い挑戦と練習である! また、この記事で実装されているシナリオ以外のシナリオも動作する事を保証するものではない。申し訳ない!

このパートは重要なコード変更を導入しているので、ここでそれら全てを説明する事は意味がない。前回の記事以降の全ての変更を確認するには、このページを参照して欲しい。

ブロックチェーン・ネットワーク

ブロックチェーン・ネットワークは分散型で、データを取得あるいは処理するサーバを使用するスタッフやクライアントを実行するサーバがない事を意味する。ブロックチェーン・ネットワークでは、ノードが存在し、各ノードはネットワークの完全なメンバーである。ノードが全てで、クライアントでサーバである。これは、通常のウェブアプリケーションとは非常に異なるため、非常に重要である。

ブロックチェーン・ネットワークはP2Pネットワークであり、ノード同士が直接接続されている事を意味する。ノードの役割に階層構造が無いため、トポロジはフラットである。ここにその略図表現がある:

P2p network

このようなネットワーク内のノードは、多くのオペレーションを実行する必要があるため、実装がかなり難しくなる。各ノードは複数の他のノードとやり取りをし、他のノードの状態を要求しなければならない。自分の状態と比較し、期限切れになった時に古い状態を更新する。

ノードの役割

本格的であるにも関わらず、ブロックチェーン・ノードはネットワーク内で異なる役割を果たす事ができる。以下に示す。

  1. マイナー
    
このようなノードは、強力あるいは特別なハードウェア(ASICなど)上で実行され、唯一うの目的は新しいブロックをできるだけ高速にマイニングする事である。マイナーは実際にはPoWパズルを解く事を意味するので、マイナーはプルーフ・オブ・ワークを使用するブロックチェーンでのみ可能である。例えば、プルーフ・オブ・ステークのブロックチェーンでは、マイニングが存在しない。
  2. フル・ノード
    これらのノードは、マイナーによってマイニングされたブロックを検証し、トランザクションを検証する。これを行うには、ブロックチェーンのコピー全体を持っている必要がある。また、そのようなノードは、他のノードがお互いを発見するのを助けるよう、そのようなルーティング動作を実行する。
    ブロックやトランザクションが有効かどうかを判断するのがノードであるため、ネットワークが多くの完全なノードを持つ事は非常に重要である。ブロックあるいはトランザクションが有効であれば、これらが決定する。
  3. SPV
    SPVは簡略化された支払い検証の略である。これらのノードはブロックチェーンの完全なコピーを格納していないが、トランザクション(全てではなく、特定のアドレスに送信されたサブセットなど)を検証する事ができる。SPVノードは、データを取得する事をフルノードに依存しており、1つのフルノードに複数のSPVノードが接続されている可能性がある。SPVはウォレット・アプリケーションを可能にする。完全なブロックチェーンをダウンロードする必要はなくても、トランザクションの検証は可能である。

ネットワークの単純化

我々のブロックチェーンにネットワークを実装するには、いくつかの単純化が必要となる。問題は、複数ノードを持つネットワークをシミュレートするコンピュータがあまりない事である。この課題を解決するため、仮想マシンやDockerを使用する事は出来たが、全てを難しくする可能性がある。仮想マシンやDockerの問題を解決する必要があるが、ブロックチェーンの実装のみに集中する事が私の目的である。そこで、単一のマシン上で複数のブロックチェーン・ノードを実行し、それに加えて異なるアドレスを持つようにしたいと考えている。これを実現するため、IPアドレスの代わりにポートをノード識別子として使用する。例えば、127.0.0.1:3000、127.0.0.1:3001、127.0.0.1:3002などのアドレスを持つノードがある。ポートノードIDを呼び出して、NODE_ID環境変数を使用して設定する。従って、複数の端末ウィンドウを開いて、異なるNODE_IDを設定し、異なるノードを実行する事ができる。

このアプローチは、ブロックチェーンとウォレットファイルを別にする必要がある。それらはノードIDに依存しなければならず、blockchain_3000.db、blockchain_30001.db、wallet_3000.db, wallet_30001.dbなどの名前にする必要がある。

実装

では、Bitcoin Coreをダウンロードして初めて実行すると何が起きるだろうか? ブロックチェーンの最新の状態をダウンロpーどするには、ノードに接続する必要がある。お使いのコンピュータがビットコイン・ノードの全てまたは一部を認識していない場合、このノードは何だろうか?

Bitcoin Coreでノードアドレスをハードコーディングするのは間違いだった。つまり、ノードが攻撃されたり停止されたりする可能性がある。その結果、新しいノードがネットワークに参加できなくなる可能性がある。代わりに、Bitcoin Coreには、ハードコードされたDNSシードがある。これらはノードではなく、一部のノードのアドレスを認識するDNSサーバである。空っぽのBitcoin Coreを起動すると、シードの1つに接続して完全なノードリストを取得し、そこからブロックチェーンをダウンロードする。

我々の実装では、中央集権ではあるが、私たちは3つのノードを持っている。

  1. 中央ノード。これは他の全てのノードが接続するノードで、他のノード間のデータを送信するノードである。
  2. マイナー・ノード。このノードはmempool内に新しいトランザクションを格納し、十分なトランザクションがある場合、新しいブロックをマイニングする。
  3. ウォレット・ノード。このノードは、ウォレット間でコインを送信するために使用される。しかし、SPVノードとは異なり、ブロックチェーンの完全なコピーを格納する。

シナリオ

この記事の目的は、次のシナリオを実装する事である。

  1. 中央ノードがブロックチェーンを作成する。
  2. 他の(ウォレット)ノードがそれに接続し、ブロックチェーンをダウンロードする。
  3. もう一つの(マイナー)ノードが中央ノードに接続し、ブロックチェーンをダウンロードする。
  4. ウォレットノードがトランザクションを作成する。
  5. マイナー・ノードがトランザクションを受信し、メモリプール内に保持する。
  6. メモリプール内に十分なトランザクションが存在する時、マイナーは新しいブロックをマイニングし始める。
  7. 新しいブロックがマイニングされる時、中央ノードに送信される。
  8. ウォレット・ノードは中央ノードと同期する。
  9. ウォレット・ノードのユーザは支払いが成功した事を確認する。

これはビットコインのように見える。実際のP2Pネットワークを構築するつもりはないが、我々は主要で最も重要で現実のビットコインの使用事例を実装している。

バージョン

ノードはメッセージの手段によって通信する。新しいノードが実行されると、DNSシードからいくつかのノードが取得され、それらのノードにversionメッセージが送信される。我々の実装はこのように見える。

type version struct {
    Version    int
    BestHeight int
    AddrFrom   string
}

我々は一つのブロックチェーンバージョンだけを持つ、そしてVersionフィールドは重要な情報を保持しない。BestHeightは、ノードのブロックチェーンの長さを格納する。AddFromは送信者のアドレスを格納する。

versionメッセージを受信したノードは何をすべきだろうか? 自分のversionメッセージに反応するだろう。これは一種の応答確認である。他の相互作業がお互いに事前の挨拶しない可能性はない。しかし、礼儀正しくないだけで、versionはより長いブロックチェーンを見つけるために使われている。ノードがversionメッセージを受信したとき、ノードのブロックチェーンがBestHeightの値よりも長いかどうかを確認する。そうでなければ、ノードは要求し、不足するブロックをダウンロードする。

メッセージを受信するため、サーバが必要である。

var nodeAddress string
var knownNodes = []string{"localhost:3000"}

func StartServer(nodeID, minerAddress string) {
    nodeAddress = fmt.Sprintf("localhost:%s", nodeID)
    miningAddress = minerAddress
    ln, err := net.Listen(protocol, nodeAddress)
    defer ln.Close()

    bc := NewBlockchain(nodeID)

    if nodeAddress != knownNodes[0] {
        sendVersion(knownNodes[0], bc)
    }

    for {
        conn, err := ln.Accept()
        go handleConnection(conn, bc)
    }
}

まず、我々は中央ノードのアドレスをハードコードする。全てのノードは初期に接続する場所を知る必要がある。minerAddress引数は、マイニングの報酬を受信するためのアドレスを指定する。このピース:

if nodeAddress != knownNodes[0] {
    sendVersion(knownNodes[0], bc)
}

現在のノードが中央ノードではない場合、そのブロックチェーンが古くなっているかどうかを知るために、中央ノードにversionメッセージを送信する必要がある事を意味する。

func sendVersion(addr string, bc *Blockchain) {
    bestHeight := bc.GetBestHeight()
    payload := gobEncode(version{nodeVersion, bestHeight, nodeAddress})

    request := append(commandToBytes("version"), payload...)

    sendData(addr, request)
}

下位レベルの我々のメッセージは、一連のバイト列である。最初の12バイトはコマンド名(この場合、バージョン)を指定し、後者のバイトはgob符号化メッセージ構造を含む。commandToBytesは次のようになる。

func commandToBytes(command string) []byte {
    var bytes [commandLength]byte

    for i, c := range command {
        bytes[i] = byte(c)
    }

    return bytes[:]
}

これは、12バイトのバッファを作成し、残りのバイトを空にしてコマンド名で埋める。反対の機能がある。

func bytesToCommand(bytes []byte) string {
    var command []byte

    for _, b := range bytes {
        if b != 0x0 {
            command = append(command, b)
        }
    }

    return fmt.Sprintf("%s", command)
}

ノードがコマンドを受信すると、bytesToCommandを実行してコマンド名を抽出し、コマンドハンドラを正しいハンドラで処理する。

func handleConnection(conn net.Conn, bc *Blockchain) {
    request, err := ioutil.ReadAll(conn)
    command := bytesToCommand(request[:commandLength])
    fmt.Printf("Received %s command\n", command)

    switch command {
    ...
    case "version":
        handleVersion(request, bc)
    default:
        fmt.Println("Unknown command!")
    }

    conn.Close()
}

これは、versionコマンド・ハンドラのは次のようになる。

func handleVersion(request []byte, bc *Blockchain) {
    var buff bytes.Buffer
    var payload verzion

    buff.Write(request[commandLength:])
    dec := gob.NewDecoder(&buff)
    err := dec.Decode(&payload)

    myBestHeight := bc.GetBestHeight()
    foreignerBestHeight := payload.BestHeight

    if myBestHeight < foreignerBestHeight {
        sendGetBlocks(payload.AddrFrom)
    } else if myBestHeight > foreignerBestHeight {
        sendVersion(payload.AddrFrom, bc)
    }

    if !nodeIsKnown(payload.AddrFrom) {
        knownNodes = append(knownNodes, payload.AddrFrom)
    }
}

まず、リクエストをデコードしてペイロードを抽出する必要がある。これは全てのハンドラに似ているが、このコードを今後のコード・スニペットでは省略する。

次に、ノードはそのBestHeightをメッセージのものと比較する。ノードのブロックチェーンが長い場合、versionメッセージで送信する。それ以外は、getblocksメッセージを送信する。

getblocks

type getblocks struct {
    AddrFrom string
}

getblocksは「あなたが持つブロックを表示する」を意味する(ビットコインではより複雑である)。注意してほしい。これは「私に全てのブロックを与える」と言っているのではなく、ブロックハッシュのリストを要求している。これは、ブロックが様々なノードからダウンロードできるため、1つのノードから数十ギガバイトをダウンロードしたくはないので、ネットワークの負荷を軽減するために行われる。

コマンドを以下のように簡単に処理する:

func handleGetBlocks(request []byte, bc *Blockchain) {
    ...
    blocks := bc.GetBlockHashes()
    sendInv(payload.AddrFrom, "block", blocks)
}

我々の単純化された実装では、全てのブロックハッシュを返却するだろう。

inv

type inv struct {
    AddrFrom string
    Type     string
    Items    [][]byte
}

ビットコインはinvを使用して、現ノードにどのブロックまたはトランザクションがあるかを他ノードに示す。ここでも、全体のブロックとトランザクションではなく、ハッシュだけが含まれている。Typeフィールドは、これらがブロックかトランザクションかを示す。

invの処理はより難しい。

func handleInv(request []byte, bc *Blockchain) {
    ...
    fmt.Printf("Recevied inventory with %d %s\n", len(payload.Items), payload.Type)

    if payload.Type == "block" {
        blocksInTransit = payload.Items

        blockHash := payload.Items[0]
        sendGetData(payload.AddrFrom, "block", blockHash)

        newInTransit := [][]byte{}
        for _, b := range blocksInTransit {
            if bytes.Compare(b, blockHash) != 0 {
                newInTransit = append(newInTransit, b)
            }
        }
        blocksInTransit = newInTransit
    }

    if payload.Type == "tx" {
        txID := payload.Items[0]

        if mempool[hex.EncodeToString(txID)].ID == nil {
            sendGetData(payload.AddrFrom, "tx", txID)
        }
    }
}

ブロックハッシュが転送された場合、blocksInTransit変数にブロックハッシュを保存して、ダウンロードしたブロックを追跡する。これにより、様々なノードからブロックをダウンロードする事ができる。ブロックを通過状態にした直後、invメッセージの送信者にgetdataコマンドを送信し、blocksInTransitを更新する。実際のP2Pネットワークでは、様々なノードからブロックを転送する事が求められる。

我々の実装では、複数のハッシュを持つinvを決して送信しない。それが、payload.Type == "tx”の時に、最初にハッシュだけが取られる理由である。次に、我々がmempoolに既にハッシュを持っているかどうかを確認し、そうでなければ、getdataメッセージが送信される。

getdata

type getdata struct {
    AddrFrom string
    Type     string
    ID       []byte
}

getdataは特定のブロックまたはトランザクションの要求であり、ブロック/トランザクションIDは1つだけ含める事ができる。

func handleGetData(request []byte, bc *Blockchain) {
    ...
    if payload.Type == "block" {
        block, err := bc.GetBlock([]byte(payload.ID))

        sendBlock(payload.AddrFrom, &block)
    }

    if payload.Type == "tx" {
        txID := hex.EncodeToString(payload.ID)
        tx := mempool[txID]

        sendTx(payload.AddrFrom, &tx)
    }
}

ハンドラは簡単である。ブロックを要求したら、ブロックを返す。トランザクションを要求した場合、そのトランザクションを返す。実際にこのブロックやトランザクションがあるかどうかは確認しない。これは欠陥である :)

blockとtx

type block struct {
    AddrFrom string
    Block    []byte
}

type tx struct {
    AddFrom     string
    Transaction []byte
}

実際にデータを転送するのは、これらのメッセージである。

blockメッセージの処理は簡単である。

func handleBlock(request []byte, bc *Blockchain) {
    ...

    blockData := payload.Block
    block := DeserializeBlock(blockData)

    fmt.Println("Recevied a new block!")
    bc.AddBlock(block)

    fmt.Printf("Added block %x\n", block.Hash)

    if len(blocksInTransit)  0 {
        blockHash := blocksInTransit[0]
        sendGetData(payload.AddrFrom, "block", blockHash)

        blocksInTransit = blocksInTransit[1:]
    } else {
        UTXOSet := UTXOSet{bc}
        UTXOSet.Reindex()
    }
}

新しいブロックを受け取った時、それをブロックチェーンに入れる。より多くのブロックをダウンロードする灰は、前のブロックをダウンロードしたのと同じノードから要求する。最終的に全てのブロックをダウンロードしたら、UTXOセットが再インデックスされる。

TODO: 無条件に信頼するのではなく、全ての着信ブロックをブロックチェーンに追加する前に検証する必要がある。

TODO: UTXOSet.Reindex()を実行する代わりに、UTXOSet.Update(block)を使用する必要がある。ブロックチェーンが大きければ、UTXOセット全体を再インデックスするのに多くの時間が掛かるためである。

txメッセージの処理は最も難しい部分である。

func handleTx(request []byte, bc *Blockchain) {
    ...
    txData := payload.Transaction
    tx := DeserializeTransaction(txData)
    mempool[hex.EncodeToString(tx.ID)] = tx

    if nodeAddress == knownNodes[0] {
        for _, node := range knownNodes {
            if node != nodeAddress && node != payload.AddFrom {
                sendInv(node, "tx", [][]byte{tx.ID})
            }
        }
    } else {
        if len(mempool) >= 2 && len(miningAddress) > 0 {
        MineTransactions:
            var txs []*Transaction

            for id := range mempool {
                tx := mempool[id]
                if bc.VerifyTransaction(&tx) {
                    txs = append(txs, &tx)
                }
            }

            if len(txs) == 0 {
                fmt.Println("All transactions are invalid! Waiting for new ones...")
                return
            }

            cbTx := NewCoinbaseTX(miningAddress, "")
            txs = append(txs, cbTx)

            newBlock := bc.MineBlock(txs)
            UTXOSet := UTXOSet{bc}
            UTXOSet.Reindex()

            fmt.Println("New block is mined!")

            for _, tx := range txs {
                txID := hex.EncodeToString(tx.ID)
                delete(mempool, txID)
            }

            for _, node := range knownNodes {
                if node != nodeAddress {
                    sendInv(node, "block", [][]byte{newBlock.Hash})
                }
            }

            if len(mempool) > 0 {
                goto MineTransactions
            }
        }
    }
}

最初に行う事は、新しいトランザクションをmempoolに入れる事である(再び、トランザクションはmempoolに配置される前に検証されなければならない)。次のピース:

if nodeAddress == knownNodes[0] {
    for _, node := range knownNodes {
        if node != nodeAddress && node != payload.AddFrom {
            sendInv(node, "tx", [][]byte{tx.ID})
        }
    }
}

現ノードが中央ノードであるかどうかを確認する。我々の実装では、中央ノードはブロックをマイニングしない。代わりに、新しいトランザクションをネットワーク内の他ノードに転送する。

次のピースは、マイナーノードだけである。それは小さいピースに分割しよう。

if len(mempool) >= 2 && len(miningAddress) > 0 {

miningAddressは、マイナーノードでのみ設定される。現(マイナー)ノードのmempoolに2つ以上のトランザクションがある場合、マイニングが開始される。

for id := range mempool {
    tx := mempool[id]
    if bc.VerifyTransaction(&tx) {
        txs = append(txs, &tx)
    }
}

if len(txs) == 0 {
    fmt.Println("All transactions are invalid! Waiting for new ones...")
    return
}

まず、mempool内の全てのトランザクションが検証される。無効なトランザクションは無視され、有効なトランザクションがない場合、マイニングは中断される。

cbTx := NewCoinbaseTX(miningAddress, "")
txs = append(txs, cbTx)

newBlock := bc.MineBlock(txs)
UTXOSet := UTXOSet{bc}
UTXOSet.Reindex()

fmt.Println("New block is mined!")

検証されたトランザクションはブロックに入れられるが、報酬とのコインベースのトランザクションも行われる。ブロックをマイニングした後、UTXOセットが再インデックス化される。

TODO: 再度、UTXOSet.UpdateはUTXOSet.Reindexの代わりに使用する必要がある。
for _, tx := range txs {
    txID := hex.EncodeToString(tx.ID)
    delete(mempool, txID)
}

for _, node := range knownNodes {
    if node != nodeAddress {
        sendInv(node, "block", [][]byte{newBlock.Hash})
    }
}

if len(mempool) > 0 {
    goto MineTransactions
}

トランザクションがマイニングされると、mempoolから削除される。現ノードが認識している他の全てのノードは、新しいブロックのハッシュでinvメッセージを受信する。メッセージを処理した後、ブロックを要求できる。

結果

前に定義したシナリオを試してみよう。

まず、最初の端末ウィンドウでNODE_ID to 3000 (export NODE_ID=3000)を設定する。私は、どのノードを行動を実行するかを知るために、次の段落の前にNODE 3000あるいはNODE 3001のようなバッジを使用する。

NODE 3000

ウォレットと新しいブロックチェーンを作成する。

$ blockchain_go createblockchain -address CENTREAL_NODE

(明快さと簡潔さのために偽のアドレスを使用する)

その後、ブロックチェーンには一つのジェネシスブロックが含まれる。ブロックを保存して他ノードで使用する必要がある。ジェネシスブロックはブロックチェーンの識別子として機能する(Bitcoin Coreでは、ジェネシスブロックはハードコードされている)。

$ cp blockchain_3000.db blockchain_genesis.db 

NODE 3001

次に、新しいターミナルウィンドウを開いて、ノードIDを3001に設定する。これは、ウォレットノードである。blockchain_go createwalletで、アドレスを生成し、これらのアドレスをWALLET_1、WALLET_2、WALLET_3と呼ぶ。

NODE 3000

いくつかのコインをウォレットアドレスに送信する。

$ blockchain_go send -from CENTREAL_NODE -to WALLET_1 -amount 10 -mine
$ blockchain_go send -from CENTREAL_NODE -to WALLET_2 -amount 10 -mine

-mineフラグは、ブロックが同じノードによって直ちにマイニングされた事を意味する。初め、ネットワーク内にマイナーノードが存在しないため、このフラグを使わなければならない。

$ blockchain_go startnode

ノードは、シナリオが終わるまで実行されなければならない。

NODE 3001

上記で保存されたジェネシスブロックを持つノードのブロックチェーンで始める。

$ cp blockchain_genesis.db blockchain_3001.db

ノードを実行する。

$ blockchain_go startnode

中央ノードから全てのブロックをダウンロードする。全てがOKと確認するため、ノードを停止して、残高を確認する。

$ blockchain_go getbalance -address WALLET_1
Balance of 'WALLET_1': 10

$ blockchain_go getbalance -address WALLET_2
Balance of 'WALLET_2': 10

また、今やノード3001はブロックチェーンを持つため、CENTRAL_NODEアドレスの残高を確認する。

$ blockchain_go getbalance -address CENTRAL_NODE
Balance of 'CENTRAL_NODE': 10

NODE 3002

新しいターミナルウィンドウを開いて、IDを3002に設定し、ウォレットを生成する。これはマイナーノードである。ブロックチェーンを初期化する。

$ cp blockchain_genesis.db blockchain_3002.db

そして、ノードを開始する。

$ blockchain_go startnode -miner MINER_WALLET

NODE 3001

コインをいくらか送信する。

$ blockchain_go send -from WALLET_1 -to WALLET_3 -amount 1
$ blockchain_go send -from WALLET_2 -to WALLET_4 -amount 1

NODE 3002

急いで! マイナーノードにスイッチして、新しいブロックをマイニングするのを見て欲しい! また、中央ノードの出力を確認してほしい。

NODE 3001

ウォレットノードにスイッチして、開始する。

$ blockchain_go startnode

新しくマイニングされたブロックをダウンロードする!

停止して、残高を確認する。

$ blockchain_go getbalance -address WALLET_1
Balance of 'WALLET_1': 9

$ blockchain_go getbalance -address WALLET_2
Balance of 'WALLET_2': 9

$ blockchain_go getbalance -address WALLET_3
Balance of 'WALLET_3': 1

$ blockchain_go getbalance -address WALLET_4
Balance of 'WALLET_4': 1

$ blockchain_go getbalance -address MINER_WALLET
Balance of 'MINER_WALLET': 10

その通り!

結論

これはシリーズの最終パートだった。私は、P2Pネットワークの実際のプロトタイプを実装しているいくつかのポストを投稿する可能性もあったが、このための時間が持てなかった。この記事は、ビットコイン技術に関する一部の質問に答え、自分で答えを見つける事が可能なように新しいものを取り上げればと思っている。ビットコイン技術には更に興味深いものが隠されている。幸運を!

P.S. ビットコイン・ネットワーク・プロトコル(リンクは下記)で説明されているように、addrメッセージを実装する事で、ネットワークの改善を始める事ができる。これはお互いにノードを発見する事ができるので、非常に重要なメッセージである。私はそれを実装し始めたが、完成できなかった!

リンク

  1. ソースコード
  2. ビットコイン・プロトコルの文書
  3. ビットコイン・ネットワーク

10/20/2017

核兵器でアリを殺す事 (やり過ぎる事)

Drew DeVaultのブログより。

複雑さは急速に蔓延している。この開発者の意見では、複雑さは良いソフトウェア設計の究極の敵、ラスボスである。複雑なソフトウェアには一般的に複雑なバグがある。シンプルなソフトウェアには一般的に単純なバグがある。そのように非常に易しい。

この理由で、私は特にウェブ開発でこの数年間で急速に増えてきたツールやアーキテクチャの多くを強く嫌っている。Gulpのようなツールを見ると、その成功は、Makefileがどのように動作するかを学ぼうとしてない人々が主な原因なのではないかと思う。Dockerのようなツールは、opsのやり方や配布のパッケージマネージャの使い方を学ぶ事を避けるための言い訳ではないかと思う。Chefも、シェルスクリプトがSSHを使う事が出来るのを忘れてしまったのではないかと思う。

これらのツールは付加価値を提供する。しかし、それは追加の複雑さのコストとどのように比較されるのか? 私の意見では、どのような場合1においても、膨大な複雑さのコストのリスクが付加価値をるかに上回る。この複雑さのコストは、システムが壊れた時に姿を見せ(全てのシステムが壊れてしまう)、これらの過剰な機能を持たせたツールに没頭する必要がある。依存性が当てにならない事を忘れないで欲しい。また、デバッグが快適に感じない依存性を決して追加しないで欲しい。避けられないバグを修正するためにこれらの複雑なシステムを学ぶために費やされる時間は、確かに同じニッチを埋める古典的なツールを学ぶのに費やされる時間よりもはるかに短い(多くの場合、このような派手な物を必要としない事を受け入れる事)。

車輪を再発明する事は、私のお気入りの娯楽である。私が再発明した、あるいは今再発明している多くの車輪がある。問題は車輪を再発明する事ではなく、実際に車輪2を理解する前にそうする事である。私は、これらの複雑なツールの多くが、何を置き換えているのか完全に理解する前に設計した人によって書かれているのだろうと思う。そして、私はそのような人によってほとんど使われていると確信する。make(1)あるいはchroot(1)のような優れたツールを学ぶのは難しいかも知れないが、manページがすぐそこにある3

しかしそれは単なるツールではない。私はC++の機能を数千語未満の言葉で説明する事はできなかった(Rustについても同じ事が言える)。GNUは、彼らが取り組んでいる全てに独自の拡張機能や不要な機能を追加し続けている。あなたの携帯電話に出荷される全てのアップデートは、あなたが新しい携帯を購入する事を確実にするためにより遅くなるようにしている。デスクトップ・アプリケーションは、ウェブブラウザ全体をディスクとRAMに入れて出荷している。サーバ・アプリケーションは、見せ掛けのchrootにオペレーティング・システム全体を入れて出荷している。また、数百メガバイトのJavaScript、広告、スパイウェアが、あなたが訪れるウェブページ全体でパイプに押し込まれている。

これはエピデミックである。我々がこの麻薬を切り取る時である。シンプルさを考慮してシステムを設計して欲しい。ムーアの法則が終わり4、タダで貰える物(フリーランチ)は終わりに近付いている。我々は、取り壊すためのとても沢山の複雑さ、壊れやすい概念を持っている。

参考:

  1. 私はそれを見た(または聞いた)
  2. 「UNIXを理解していない人は、それを再構築するのは間違いである。」
  3. もちろん、"...makeの完全なドキュメントはGNU infoとして維持されている..."
  4. トランジスタは、量子問題が発生するスケールに近付いており、我々はより小さくしなければ、光の速度によって制限される。RAMのボトルネックは、もう一つの深刻な問題であり、イノベーションはこれまでかなりの期間停滞している。

Hacker News

10/19/2017

もしかすると、それは埃かも知れない

Slashdotより。MacBookの新しいバタフライキーを採用したキーボードは埃に弱いという話。

匿名の読者がレポートを共有する:
私は、1年で3度目になるグランドセントラル・ステーションのアップルストアにいた。ジーニアスはiPadを使って別の顧客をヘルプする複数の仕事をしているので、私はコンピュータの黒い画面にゆっくりと浮かぶプログレスバーを見ていた。私のコンピュータは45分で3度目の診断テストを受けていた。問題は、ロジックボードの故障、バッテリーの消耗、カメラが応答しないという事ではなかった。不可解な欠陥のある内部構造は存在しなかった。それはスペースバーだった。それが壊れていた。そして、物理的には壊れていない、まだ正常に動いて動作していた。しかし、私がキーを一度押すたびに、2度スペースを空けた。「もしかすると、それは埃かも知れない。」ジーニアスが言った。以前、私は同じキーボードの問題があった同じコンピュータでアップルストアに行った事がある。ジーニアスは全く同じ無頓着な言葉を私に言い、私は呆気にとられて黙り込んだ。なぜなら、初めはこのような小さな問題でこのようなコアな問題を責める事はあまりにありそうにないと思えたからだ。そして、2度目の偶然ではないと、この言葉を聞いた時は信じられなかった。しかし、今回の3度目は、私の準備が整った。「待ってくれ」私は言った。「1つの埃がコンピュータ全体をダメにするなら、それは問題だと思わないのですか?」

そして・・・。

Appleは暫く前から、大手術無しに修理できないコンピュータという方向に動いている。1年ちょっと前に、私の前のコンピュータの小さなゴムの足が剥がれ落ちた。私は、ジーニアスが交換用の足を貼り付けてくれる事を期待して、アップルストアに行った。この問題へのAppleの唯一の解決策はなんとボトムケース全体を交換する事で、それを私に加えて懐疑的なジーニアスたちにも思い知らせるため、2回の予約と数時間が掛かった。

もしかすると、バタフライ・スイッチは、単にアップルストアの修理ビジネス世代のジーニアスへの一撃だったのかも知れない。しかし、アメリカで最も沢山の現金の山を持つ企業のAppleは賢明である必要がある、あるいは顧客が依然としてそのイメージに囚われている。彼らは、最も基本的なノートPCの機能の一つが、一つの繊細な小さなバタフライ・アンクルによって絶えず危険に晒されているのだ。

Daring FireballYouTubeApple

RFC 8257: データセンターのためのTCP輻輳制御

データセンター向けのTCP輻輳制御がRFCになった。

1. 序論

大規模なデータセンターでは多数のサーバを相互接続するために必然的に多くのネットワークスイッチが必要となる。従って、データセンターでは低コストのスイッチを活用することで設備投資を大幅に減らそうとする可能性がある。しかし、このような低コストのスイッチは、キュー容量が制限される傾向がある。故に、輻輳によるパケット損失の影響を受けやすくなる。

データセンター内のネットワーク・トラフィックは多くの場合、短いフローと長いフローが混在しており、短いフローではレイテンシは少なく、長いフローでは高スループットが求められる。また、データセンターでは、多数のサーバが同時に1台のサーバにトラフィックを送信するようなインキャストなバーストが発生する。例えば、このトラフィック・パターンは、MapReduceのワークロードでは当然の結果である。ワーカーノードはほぼ同時に完了し、全てがマスターノードに同時に応答する。

これらの要因は、スイッチのキュー占有でいくつかの相反する要求を出す:

  • キューは短いフローで過度なレイテンシを課さないように、十分に短くなければならない。
  • キューは長いフローがパス容量を飽和させるのに十分なデータ量をバッファするのに十分な長さでなければならない。
  • キューは過度のパケット損失なしにインキャスト・バーストを吸収するのに十分な長さでなければならない。

標準のTCP輻輳制御[RFC5681]は、輻輳を検出するのにパケット損失に依存している。これは、上記の要求を満たしていない。第1に、短いフローはパケット損失が発生する前に受け入れられないレイテンシ問題にぶつかり始める。第2に、TCP輻輳制御が送信側で開始されるまでに、大部分のバーストは既にドロップされている。

[RFC3168]は、輻輳検出のためにスイッチから明示的輻輳通知(Explicit Congestion Notification: ECN)を使用するためのメカニズムを説明している。しかし、この方法は輻輳の存在を検出するだけで、それほどではない。軽い輻輳下では、TCP輻輳ウィンドウは積極的に削減され、長いフローのスループットをいたずらに低下させる。

データセンターTCP(DCTCP)は、輻輳が発生した事を単に検出するのではなく、輻輳に遭遇したバイトの割合を見積もる事によって、従来のECN処理を変更する。DCTCPは、この見積もりに基づいて、TCP輻輳ウィンドウを拡大/縮小する。この手法は、バッファの少ないスイッチで、高バースト耐性、低いレイテンシ、高いスループットを実現する。DCTCPは、従来のTCPによるECNの処理を変更したものであり、パケットロスの処理に標準のTCP輻輳制御を使用する必要がある。

DCTCPは、エンドポイントとスイッチ・ファブリックの両方が単一管理ドメインの下にあるデータセンター内の環境にのみ導入する必要がある。DCTCPは第5節で詳述されるように追加の手段なしに、パブリック・インターネットに導入してはならない(MUST NOT)。

この情報RFCの目的は、データセンターにおけるTCP輻輳制御に対処するための(広く実装され、導入されている事が知られている)新しいアプローチとして、DCTCPを文書化する事である。IETF TCPMワーキングループは、DCTCP標準はさらなる研究を必要とするという事実に関して合意に達した。実行中のコードの正確な文書化によって、IETFクラスを通じた続編の実験 (Experimental)あるいは標準化過程(Standards Track)RFCの可能性がある。

この文書では、Microsoft Windows Server 2012に実装されているDCTCPについて説明する。LinuxやFreeBSDオペレーティングシステムも、この文書に従うと見られている方法でDCTCPをサポートしている。DCTCPの導入体験は[MORGANSTANLEY]で文書化されている。

DCTCPをサポートしたスイッチに対して、Linuxの場合は次のように設定する。

sysctl -w net.ipv4.tcp_congestion_control=dctcp
sysctl -w net.ipv4.tcp_ecn_fallback=0 (optional)

Hacker News

10/18/2017

スマートフォンがアメリカ人を殺している (交通事故の原因)

Slashdotより。アメリカで交通事故が増えているのはスマートフォンのせいだ(通話ではなく、チャットやソーシャルメディアを使うようになったせい)。日本ではどうだろう?

匿名の読者がブルームバーグの報道を共有する:
数十年に渡って道路上での死亡者が減少してきた後の過去2年間、米国の交通事故死は14.4パーセント増加した。2016年だけでも、アメリカの車中や近くで100人以上が毎日死亡しており、この国でここ10年でこれほどの犠牲者になったのは初めてである。一方、規制当局は、依然として衝突に関連した死亡者数が急増している理由について、まだよく分かっていない。皆、長距離を走っているが、それほど大きくなっていない。昨年の総距離数はわずか2.2パーセントのアップだった。トータルで、我々はスピード違反や飲酒運転のように思うが、それほど多くはない。専門家たちは、これらの増加は道路死亡の急増を説明していないと言う。しかし、3つの大きな手掛かりがある。高速道路にそって休むことはない。1つは、あなたが推測したように、米国のドライバが運転する際に、運転中にスマートフォンが使用するドライバが大幅に増加している事である。2014年から2016年に掛けて、iPhone、Android携帯などを所有する米国人のシェアは75パーセントから81パーセントに上昇した。2つ目は、米国じんが運転中に携帯電話を使用する方法の変化である。近頃、我々はほとんど話をしなくなった。チャット、Twitter、Facebook、Instagramが流行している。携帯を耳に付けたり、声による反応よりも もっと注意を必要とするアクティビティである。2015年までに、米国人のほぼ70パーセントが携帯電話を使って写真を共有し、ソーシャルメディアを通じてニュースをフォローしている。わずか2年間で、その数字は80パーセントに増加した。

Hacker News

KRACKから分かるIEEEの問題点

Matthew Green氏のブログより。標準化仕様をクローズにすべきではない。

暗号での今日のビッグニュースは、WPA2で保護されたWiFiネットワークへのKRACK攻撃である。KU LeuvenのMathy VanhoefとFrank Piessensによって発見されたKRACK (Key Reinstallation Attack)は、暗号化されたWiFiトラフィックに復号化と偽装を容易にするために802.11iの4ウェイ・ハンドシェイクの脆弱性を利用している。

論文はここにある。かなり読み易いので、是非とも読んでみるべきだ。

この脆弱性はかなり単純なので、私はKRACK自体について話をするのに多くの時間を割くつもりはない。代わりに、WPAが標準化されてから何年も、この脆弱性が放置され続けた理由について話をしたいと思う。そして、これとは別に802.11iハンドシェイクが正式に安全である事が証明されたにも関わらず、この攻撃はどのようにすり抜けたのだろうか?という疑問に答える。

KRACKとは

この攻撃の詳細説明は、KRACKのウェブサイトまたは論文自体を参照してほしい。ここではハイレベルな説明を簡単にする。

802.11iプロトコル(WPA2とも知られている)は、データの機密性と完全性を確保するため、2つの個別のメカニズムが含まれている。第1に、WiFiフレームを暗号化して、読み取りや改ざんができないようにするためのレコード層である。この暗号化は、(一般的に)CCMモードのAESを使用して実装されているが、GCMモードを使用する新しい実装と、RC4-TKIPを使用する古い実装がある(現時点で省略する)。

知っておくべき重要な事は、AES-CCM(およびGCM、TKIP)はストリーム暗号という事だ。つまり、初期ベクトルとも呼ばれる同じ鍵とノンスを再利用する攻撃に対して脆弱である。802.11iでは、セッションを開始した後に、ゼロに初期化されるパケット番号カウンタを使用して初期ベクトルを組み立て、常にインクリメントする(鍵の変更(rekeying)が発生さざるを得なくなる時点で最大248)。パケット番号カウンタをリセットできない限り、ノンスの再利用を防止する必要がある。

知っておくべき第2のメカニズムは、APと暗号化に使用する鍵を引き出すクライアント(サプリカント)との間の4ウェイ・ハンドシェイクである。KRACKが気にしている特定のメッセージはメッセージ#3である。これによって、新しい鍵がクライアントによってインストール(と使用)される。

393px 4 way handshake svg

これは4ウェイ・ハンドシェイクである。クライアントは左側で、
APは右側にある。(CCの下で使用され、ウィキペディアに感謝)

KRACK(シャレではない)の重要な脆弱性は、メッセージ#3は敵対的な人物によってブロックされる可能性がある事である。それが起こると、APはこのメッセージを再送信し、クライアントに同じ鍵が再インストールされる(注: 下記アップデート参照)。これはそれほど悪い事のように思えない。しかし、鍵をインストールする副作用として、パケット番号カウンタが全てゼロにリセットされる。(そして、Android 6のような一部の実装では、鍵がゼロにセットされる。これは別の議論である。)

どうやら、APが強制的にこのメッセージを再生する事で、敵対者が接続でノンスをリセットし、ストリーム暗号でキーストリームを再使用させられる。ちょっとした知恵があれば、トラフィック・ストリームを完全に復号する事ができる。それはTCPハイジャックにつながる可能性がある。(GCMとTKIPへの直接トラフィックの偽造攻撃もあり得るが、今のところはこれを行う。)

どうして、こんなに長い間見逃したのだろうか?

誰か非難する人物を探すとしたら、始めるのにいい場所はIEEEである。明確化のために言うと、私は802.11iを設計した(才能ある)エンジニアを言及しているわけではない。彼らはこの状況下でとても良い仕事をした。代わりに公的機関としてのIEEEを責めたい。

IEEEが持つ問題の一つは、標準化が非常に複雑でプライベートな会合の秘密のプロセスを通じて行われる事である。更に重要なのは、この事実の後でさえ、通常のセキュリティ研究者が情報にアクセスする事は難しいという事である。IETFのTLSIPsecの仕様については、Googleで検索すればよい。Googleの検索結果のトップに詳細なプロトコル文書(仕様)が見付かるだろう。さて、802.11i標準について、Googleを試して欲しい。幸運を祈る。

IEEEはこの問題を和らげるためにいくつかの小さな変革を行なってきたが、彼らは超臆病な漸進主義者である。研究者が802.11を含む特定の標準に無料でアクセスする事を可能にするGETというIEEEプログラムがある。6ヶ月間公開された後でなければならない。偶然にも、ほぼ同じころ、ベンダーはハードウェアとソフトウェアに取り消し不能な形でそれらを作る期間と同じ期間である。

この全体のプロセスは愚かで、この特定のケースでは、おそらく産業には数千万ドルのコストが掛かっている。それを停止すべきである。

第2の問題は、IEEE標準の記述が不十分である事だ。KRACK論文が指摘しているように、802.11iハンドシェイク状態マシンの正式な記述は存在しない。つまり、実装者が標準文書の周りに散在する擬似コードのスクラップを使用してコードを実装する必要がある。この擬似コードはKRACKを有効にする壊れた実装につながる。それも悪い。

そしてもちろん、最後の問題は実装者である。KRACKに関する本当に恐ろしい事の一つは、WPAサプリカントの実装者(特にLinux)がレモンからLemon Pledgeを何とか作ってしまう事である。特にAndroid 6では、メッセージ#3を再生すると実際には全てゼロのキーが設定される。これがなぜ起こるのかという内部的なロジックがある。しかし、やれやれ。誰かが実際にこの事に目を向ける必要がある。

安全性の証明はどうか?

802.11iハンドシェイクについて興味をそそる事は、IEEEが人々のやり方で投げられる全ての障害にも関わらず、それ(少なくともハンドシェイク)は形式的に分析されているのだ。少なくとも用語の定義に取ってである。

(私は侮辱するわけではない。これは事実である。正式な分析では、定義が本当に本当に重要である!)

He、Sundararajan、Datta、Derek、Mitchellの論文は(2005年!)、802.11iハンドシェイクを調べ、そのセキュリティ特性を決定しようとした。彼らが決定したのは、攻撃者が(様々な前提の下で)メッセージを改ざんして再生できる時でも、確かに秘密で強力な鍵を生成したという事である。これは素晴らしい重要な仕事である。証明(proof)は理解するのが難しいが、これはよくある事である。正しいように思える。

Wifihandshake

Heらによる論文から4ウェイ・ハンドシェイクの表現は、私はあなたが"何?"のようであると分かっている。しかし、これがプロトコルの正式な検証を行う人々が、多くの支持者を持たない理由である。

更に良い事に、ノンスは決して繰り返さずに提供すれば、CCMやGCMのような暗号化モードは高い安全性がある事を示す他の安全性の証明が存在する。つまり、安全な鍵が与えられれば、安全に暗号化できる筈である。

それで何が悪かったのか?

重大な問題は、人々が2つのコンポーネント(ハンドシェイクと暗号プロトコル)を分離して見ている一方で、明らかに誰もが接続されているように2つのコンポーネントを注意深く見ていない。私はかなりこれについてオタクのミーム(geek meme)があると確信している。

もちろん、誰もこの事をよく見ていない理由は、これを行う事が単に明らかに難しいからである。プロトコルは分析する可能性のあるケースが指数関数的になり、人間が正確に理由を考える事ができる、あるいはピアレビューで検証する事ができるプロトコルの複雑さの限界に近付いている。混ぜる追加ピースが増えるほどに、この問題は悪化する。

結局、我々すべて、人間にとってこの作業を止めるのがその答えである事が分かっている。我々はプロトコルを実装した実際のソースコードと結び付いた自動プロトコル検証システムが必要である。これは、プロトコルが実際に何をしているのかを保証し、実装者がそれを更に台無しにしないようにする。結果として、安全性の証明が間違っている事を示す。

これは緊急に行われる必要があるが、我々はそれをどうやって行うのか調査するプロセスの初期段階にあり、このような事を活かすために何が必要かははっきりしていない。全体的に、これはもっと多くの作業を必要とする領域である。私は実現する事を願っている。


更新: この記事の最初の版では、攻撃者がメッセージを再生する事を示唆していた。実際には、論文はクライアントで受信されないようにブロックする事で、再送信させるようにAPを強制すると説明している。修正に関し、Nikita Borisovに感謝する。

Hacker News

10/17/2017

InfineonのTPMチップに脆弱性 (脆弱なRSA鍵を生成する)

ars technicaより。WPA2の脆弱性より、こちら方が影響は大きいかも知れない。

広く使われているコード・ライブラリの深刻な影響をもたらす欠陥は、国家のIDカード、ソフトウェアとアプリケーションの署名、政府や企業のコンピュータを保護する信頼できるプラットフォーム・モジュールなど、最も重要な設定のいくつかで使用されている暗号鍵のセキュリティを致命的に損なっている。

この弱点は攻撃者が該当する公開部分だけを使用して、脆弱な鍵の秘密部分を計算する事ができる。ハッカーはその秘密鍵を使用して、鍵所有者を偽装し、機密データを復号化し、悪質なコードをデジタル署名されたソフトウェアに忍ばせ、盗まれたPCへのアクセスや改ざんを防止する保護をバイパスできる。この5年前の欠陥は、世界中の多くの政府、請負業者、および企業に結び付いている国際的に認められた2つのセキュリティ認証基準に準拠しているため、厄介である。このコード・ライブラリはドイツのチップメーカであるInfineonによって開発され、いくら遅くとも2012年以降弱い鍵を生成している。

この欠陥は先月、エストニアの政府が遠回しに言及したもので、2014年以降に発行された75万のデジタルIDが攻撃に対して脆弱であると警告した。エストニアの当局者は、悪用を避けるためIDカードの公開鍵データベースを閉鎖していると語った。月曜日、関係者はこのアップデートを投稿した。先週、MicrosoftGoogleInfineonは、この弱点は如何にTPM製品に組み込まれた保護機能を損なうかを警告した。それは皮肉なことに、ターゲットを絞って個人や組織にセキュリティの追加措置を与えるために設計されたものである。

完全に破られた

「公開鍵暗号では、公開鍵が実際に公開されているという基本的な特性があります。セキュリティに影響を与えることなく誰にでも公開できます。」暗号コンサルタントのCryptosenseのCEOであるGraham SteelはArsに語った。「この作業で、その特性は完全に壊れました。」彼は続けた。

つまり、もしあなたは誰かの秘密鍵でデジタル署名された文書を持っていれば、あなたはそれが本当に署名者である事を証明する事はできません。または、あなたが機密データを誰かの公開鍵で暗号化して送信した場合、そのデータのみを読むことができるとは限りません。理論的に誰でも秘密鍵を調べる事が出来るので、あなたは今、裁判所に行き、何かに署名した事を否定しても、証明する方法がありません。

この欠陥のあるライブラリを発見した研究者、Both SteelとPetr Svendaは、脆弱なカードが使用されている国での選挙に問題を引き起こす可能性が少なくともあると警告した。実際の有権者の不正行為は、特に選挙を動かすのに必要な規模では実行は難しいだろうが、可能性だけで(実用的ではないが)様々なフェイクニュースや陰謀説を後押しすると、チェコ共和国のMasaryk大学のSvenda教授はArsに語った。NSAの機密資料の多数な情報漏洩者を思い起こさせ、Steelは次のように付け加えた。「Shadowbrokersのような組織がインターネット上にたった2つの秘密鍵を投稿し、この手法を使ってさらに多くを破ると主張したと想像してみて下さい。」

この欠陥は、「The Return of Coppersmith's Attack: Practical Factorization of Widely Used RSA Moduli」というタイトルの研究論文のテーマであり、ACM Conference on Computer and Communications Securityで11月2日に発表されるだろう。脆弱性は、チェコ共和国のMasaryk大学、イギリスのケンブリッジのEnigma Bridge、イタリアのCa' Foscari大学の研究者らによって発見された。人々に鍵を変更する時間を与えるため、因数分解法を説明する論文は、会議で発表されるまで公開されない。

欠陥は、Infineonが開発したRSAライブラリのバージョンv1.02.013、特にRSA素数生成用に実装されたアルゴリズム内に存在する。このライブラリを使用すると、一般的なコンピュータではなく、スマートカードを使用して鍵を生成する事ができ、マルウェアに感染しやすく、セキュリティの高い用途には適していない。ハードウェア上で実行するライブラリは、InfineonのスマートカードチップやTPMを使っている世界中の製造業者に販売している。同じく製造業者は他のデバイスメーカまたはエンドユーザに製品を販売する。この欠陥はRSA暗号鍵だけに影響し、スマートカードやInfineonライブラリを使用する組み込み機器で生成された場合にのみ発生する。

パフォーマンスを向上させるため、Infineonライブラリは、セキュリティの土台となる秘密の数字を見えるようにして、因数分解と呼ばれるプロセスを計算しやすいように鍵の基本的な素数を構成する。適切に生成された場合、2048ビットのRSA鍵は、汎用コンピュータで分解されるためには数十億年あるいは数十万回必要とする筈である。対照的に、欠陥のあるInfineonライブラリで生成された2048ビットのRSA鍵を因数分解すると、最大で100年、平均では半分の回数しか掛からず、1024ビットの鍵は最大で3ヶ月しか掛からなかった。

因数分解は、複数のコンピュータに負荷を分散することによって、劇的に加速される可能性がある。コストと時間は脆弱なキーごとに異なるが、2048ビットの場合の最悪ケースは、Amazon Webサービスで1000インスタンスのマシンを使用して17日と40300ドルを必要とし、影響を受ける1024ビット鍵を分解するのに76ドルで45分となる。平均して、影響を受ける鍵を因数分解するコストと時間の半分を必要とする。必要な事は、Coppersmith攻撃として知られているものの拡張を通して公開鍵を渡すだけである。

ライブラリで生成された全ての鍵は非常に弱いが、現時点でそれらを全て因数分解する事は現実的ではない。例えば、3072ビットと4096ビットの鍵は実際に因数分解できるものではない。しかし、奇妙な事に理論上は強くより長い4096ビットの鍵が3072ビットの鍵よりはるかに弱く、研究者の方法が改善できれば、実用的な(コストは掛かるが)因数分解の範囲内に入る可能性がある。

時間とコストを控えるため、攻撃者は最初に公開鍵をテストして、攻撃に対して脆弱かどうかを調べる事ができる。このテストは安価で、1ミリ秒未満で済む。その考案者は、誤検出率がゼロとなり、偽陽性がゼロになると信頼している。フィンガープリントにより、攻撃者は実際に因数分解可能な鍵にのみ努力を費やす事ができる。研究者らは弱い鍵を識別するために既にこの手法をうまく使っている。そして、欠陥のあるライブラリを使って特定の鍵が生成されたかどうかをテストするツールを提供している。詳細が書かれたブログ記事はこちらである。

脆弱性の鍵を求めて

研究者らは、4ヶ国で発行された電子身分証明書に使用されている鍵を調べ、エストニアとスロバキアをすぐに見付けた。フィンガープリントの鍵を使って文書を発行した。エストニアは2014年以来発行されたカード75万枚の血管を明らかにした。Arsは、2015年にArs上級ビジネス編集者Cyrus Farivarが手に入れたe-residencyカードで使われている鍵をチェックし、因数分解できると戻ってきた。

エストニア政府当局者は公開鍵データベースを閉鎖しているが、11月から全ての鍵を脆弱ではないフォーマットに変更する計画も発表した。スロバキアの体制はすぐには分からない。4ヶ国のうち2ヶ国でフィンガープリントが陽性と判定された場合、より包括的な検索で、より多くの国が因数分解可能な鍵を持つカードを発行している可能性が高くなる。

次に、信頼できるプラットフォームモジュールを使用した41種類のノートPCモデルのサンプルを調べた。彼らはInfineonのTPMのうち、10で脆弱なTPMを発見した。脆弱性は、MicrosoftのBitLockerハードディスク暗号化を制御するために使用する鍵が因数分解可能であるため、TPMバージョン1.2では特に重大である。つまり、影響を受けるコンピュータを盗んだり見付けた人物は、ハードドライブとブートシーケンスを保護する暗号化をバイパスできる。TPMバージョン2.0では、BitLockerに因数分解可能な鍵は使用されないが、他の目的で生成されたRSA鍵には影響がある。Infineonはライブラリの脆弱性にパッチを当てたファームウェア・アップデートをリリースし、影響を受けたTPMメーカはリリース中である。

研究者また、インターネットでフィンガープリントされた鍵をスキャンし、様々な驚くべき場所ですぐにヒットするのを発見した。彼らは、GitHubの提出に署名するために使用された447のフィンガープリントされた鍵(うち237が因数分解可能だった)を発見した。GitHubはフィンガープリントのついた鍵が通知されており、ユーザに変更させるプロセスに入っている。

また、暗号化された電子メールに使用される2892のPGP鍵のうち、956が因数分解可能である事を発見した。研究者らはPGP鍵の大半は、Yubikey 4を使って生成されたものだと考えている。Yubikey 4では、所有者が誤ったライブラリを使っているオンチップRSA鍵を作成する事ができる。U2F認証を含むUSBデバイスの他の機能は影響を受けない。Yubicoは詳細をここに置いている。

研究者は、TLSに使用される15個の因数分解可能な鍵を発見した。不思議な事に、それらのほとんど全てに共通名フィールドに文字列"SCADA"が含まれている。これにより、コンピュータを使ったダム、発電所、およびその他の産業機器を管理するSupervisory Control And Data Acquisitionに関与する組織によって証明書が使用されている可能性が高まった。15個のフィンガープリントされた全ての鍵には、欠陥のあるInfineonライブラリによって生成された範囲外の素数に関係する特性があり、それがまだ文書化されていない可能性がある。

これは4年間で2度目であり、厳格な認証テストに合格した暗号方式に大きな脅威が発見された。2013年には、台湾の安全なデジタルIDシステムの脆弱性が発見され、攻撃者が一部の市民を偽装する可能性があった。欠陥のあるInfineonライブラリと台湾のデジタルIDシステムは両方ともFIPS 140-2レベル2と一般基準標準をクリアしていた。両方の認定は、アメリカ国立標準技術研究所によって管理されている。どちらの認定も、政府機関、請負業者などの特定の用途には必須である。

Infineonライブラリの欠陥を明らかにした研究者は、認証プロセスの一部で必要される秘密が役割を果たしているかどうかを疑問視した。彼らは書いている:

我々の仕事は、たとえ両方が専門家によって完全に分析され、認定されたとしても、設計の秘密と実装を閉鎖てきに保つという危険性を強調している。公開情報不足が、欠陥の発見が遅れ(そのプロセスのチェックが妨げられる)、その結果、検出時に既に展開され影響を受けるデバイスの数が増える。

結局、研究者らはInfineonの欠陥ライブラリが市販されている5年ほど前に数千万個のRSA鍵を生成した可能性があると推定している。それらの多くは事実上因数分解可能だが、連邦標準や常識的なセキュリティガイドラインよりも、因数分解に対してかなり脆弱である。OpenSSL、PGP準拠のプログラム、または同様のコンピュータプログラムで生成されたRSA鍵は影響を受けない。暗号機能のためにスマートカードや組み込み機器に頼っている人は、研究者のフィンガープリント・ツールを使ってRSA鍵をテストする必要がある。鍵が陽性なら、できるだけ早くそれらを取り消し、新しいものを生成する必要がある。楕円曲線暗号や他の非RSA手法を使用する鍵は影響を受けない。

皆が全ての脆弱な鍵を特定するには時間が掛かるだろう。それらは事実上因数分解可能である事が分かっているものを置き換える事から始めるべきであるが、最終的に欠陥のあるライブラリによって生成された全てのRSA鍵で行わなければならない。NISTや他の標準軌間の暗号技術者やエンジニアは、この失敗を利用して、高いセキュリティの認証プロセスを改善する方法を学ぶべきでもある。

CircleIDSchneier on Security

10/16/2017

WPA2プロトコルにトラフィック盗聴が可能となる脆弱性が見付かる

ars technicaより。実装ではなく、仕様の問題。既に krackattacks.com が開設されている。

KRACK攻撃は通信ハイジャックや悪意のあるインジェクションなど、厄介な事ができるようになる。

攻撃者がコンピュータとアクセスポイント間を通過するWi-Fiトラフィックを盗聴可能にするWi-Fi Protected Access IIプロトコルの中の重大な脆弱性の公開を準備しているとして、日曜日、不安の声がセキュリティ業界に上がった。

概念実証のエクスプロイトはKRACKと呼ばれ、Key Reinstallation Attacksの略である。研究は米東海岸の月曜日午前8時に予定されており、公表日の前に数週間に渡り厳重にガードされて来た。最近、US CERTが約100組織に配布した勧告は、このように研究を説明している。

US-CERTは、Wi-Fi Protected Access II (WPA2)セキュリティ・プロトコルの4ウェイ・ハンドシェイクにおいて、いくつか鍵管理の脆弱性に気付いた。これらの脆弱性悪用の影響は、暗号の復号化、パケットのリプレイ攻撃、TCP通信のハイジャック、HTTPコンテンツ・インジェクションなどが含まれる。プロトコルレベルの問題として、標準のほとんどまたは全ての正しい実装が影響を受ける事に注意して欲しい。CERT/CCと報告をしたKU Leuvenは、2017年10月16日にこれらの脆弱性を公表する予定である。

脆弱性を把握している研究者によると、トラフィックを暗号化するための鍵を確立するために使われる4ウェイ・ハンドシェイクを悪用する事で機能する。3番目のステップ中に、鍵は複数回再送信できる。特定の方法で再送信すると、暗号化ノンスが暗号化を完全に弱体化する方法で再利用できる。

研究チームの一員のGithubページと、この脆弱性に関する別の代理ウェブサイトは、次のタグを使用していた。

  • WPA2
  • KRACK
  • key reinstallation
  • security protocols
  • network security, attacks
  • nonce reuse
  • handshake
  • packet number
  • initialization vector

脆弱性を把握している研究者は、それらは次のCVEで登録されていると語った: CVE-2017-13077、CVE-2017-13078、CVE-2017-13079、CVE-2017-13080、CVE-2017-13081、CVE-2017-13082、CVE-2017-13084、CVE-2017-13086、CVE-2017-13087、CVE-2017-13088。ある研究者はArsに、無線アクセスポイントを大企業や政府機関に販売しているArubaとUbiquitiは既に脆弱性のパッチか緩和するためのアップデートがあると語った。

脆弱性は11月1日にダラスで開催されるACM Conference on Computer and Communications Securityで、「Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2」というタイトルで公式に発表される予定である。月曜日の開示は、サイト krackattacks.com を通じて行われると考えられている。研究者は、KU LeuvenのMathy VanhoefとFrank Piessens、バーミンガムのアラバマ大学のimec-DistriNet、Maliheh Shirvanian、Nitesh Saxena、ドイツのデュッセルドルフのHuawei TechnologiesのYong Li、ドイツのRuhr-Universität BochumのSven Schägeである。研究者はラスベガスのBlack Hat Security Conferenceで8月にこの関連研究を発表した。

既存のアクセスポイントの大多数は、迅速にパッチを当てられる可能性は低く、一部のパッチは全く役に立たない可能性すらある。暗号化デバイス・エクスプロイトはWPA2プロトコルで簡単に信頼できるという初期の報告が正確であれば、攻撃者はコンピュータとアクセスポイント間を通過する近くのWi-Fiトラフィックを盗聴する可能性が高いだろう。また、DHCP設定を偽装して、ユーザのドメイン名サービスに関連するハッキングにチャンスを与える可能性がある。

この投稿が公開されるまでに、CERT勧告で報告されている詳細を確認したり、重大性を評価する事は出来なかった。盗聴やハイジャックのシナリオが簡単に解消された場合、パッチや緩和が行われるまで、可能な限りWi-Fiを使用しないで欲しい。Wi-Fiが唯一の接続オプションである場合、HTTPS、STARTTLS、Secure Shell(SSH)などの信頼性の高いプロトコルを使用して、コンピュータとアクセスポイント間を通過するウェブおよび電子メールトラフィックを暗号化する必要がある。フォールバック・ユーザは追加の安全対策としてVPNを使う事を検討すべきだろうが、多くのサービスでユーザをより安全にするためには信頼できないので、VPNプロバイダを慎重に選択するよう注意して欲しい。この投稿は、より多くの情報が入手可能になると更新されるだろう。

Hacker News 12Boing BoingSlashdotSANS DiaryスラドCircleID

更新1: シュナイアーのブログ。「これは、私のブリリアントの定義を満たしている。一度指摘されると、攻撃は火を見るよりも明らかになるが、10年以上誰もそれに気付いていなかった。

更新2: Microsoftは10/10のWindowsアップデートで既に修正済み、Google/Androidは来週リリース、AppleはiOS、tvOS、watchOS、macOS beta版で修正済みで数週間以内にリリース。

更新3: 素晴らしい解説

8.5トンの中国の宇宙実験室「天宮1号」が数ヶ月以内に地球に落下

SlashdotよりNORADが追跡しているが...。

dryriverが伝える。

中国は天宮1号(Tiangong 1)という宇宙実験室を2011年に軌道に打ち上げた。宇宙実験室は宇宙超大国になるための中国の野心的な企てになる筈だった。宇宙での2年後、天宮1号は技術的な失敗に気付き始めた。昨年、中国当局者は、宇宙実験室を廃棄しなければならない事を確認した。8.5トンの宇宙実験室は、地球に向かって降下を開始し、数ヶ月以内に地球に衝突すると予想されている

実験室の大部分が地球の大気中で燃え尽きると予想されているが、専門家は100キログラム(220ポンド)の重さを持つ部品が再突入に生き残り、地表に影響を与える可能性があると考えられている。再突入が起きる前の数時間まで宇宙実験室の塊が地球のどこに落ちるかを誰も正確に予想する事は出来ない。天宮1号の破片によって誰かが被害を受ける可能性は低いと考えられている。

NASAのスカイラブが1979年に地球に落下した時、オーストラリアにある町は(冗談で)400ドルの罰金を科した

GuardianHacker Newsスラド

10/15/2017

プラネット・ナインはスーパーアースの可能性がある

Space.comより

NASAの新しい声明によると、プラネット・ナインがそこにあり、天文学者はそれを探し出す事を決定した。実際、増える証拠は観測されていない世界無しに太陽系を想像することは難しいと示唆している。

仮説の惑星は、地球より約10倍重く、海王星より太陽から約20倍離れている、暗い太陽系の外れに位置していると考えられている。NASAの声明によるとミステリアスな惑星はまだ発見されていないが、天文学者らは、プラネット・ナインの存在によって最もうまく説明される太陽系のいくつかの奇妙な特性を発見している。

「今の所、プラネット・ナインの存在を指し示す5つの異なる系列の観測証拠があります。」パサデナにあるカリフォルニア工科大学(Caltech)の惑星天体物理学者コンスタンティン・バティギンは声明の中で述べている。「あなたがこの説明を排除し、プラネット・ナインが存在しないと考えたとしたら、解決するのが更に難しくなる問題を生み出す事になります。前触れもなく、5つの異なるパズルがあり、あなたはそれらを説明するために5つの異なる理論を考え出さなければならない。」[太陽系のプラネット・ナインの証拠 (ギャラリー)]

2016年、バティギンとCaltechの天文学者で共同執筆者のマイク・ブラウンは、海王星から星間空間に向かって伸びる氷体の遠い領域であるカイパーベルトの中に6つの既知の物体の楕円軌道を調べた研究を発表した。声明によると、彼らの発見は、これらのカイパーベルトの物体は全て同じ方向を示す楕円軌道を持ち、8つの惑星が太陽を周回する平面に比べて約30度下に傾いている事が明らかになった。

プラネット・ナインを用いた太陽系のコンピュータ・シミュレーションを用いて、バティギンとブラウンは更に太陽面に関して90度と桁外れに大きく傾いた物体がある事を示した。更に調査したところ、このような5つの物体が既にこれらのパラメータに適合する事が分かっていた事を明らかにしたと研究者らは語った。

それ以来、天文学者はプラネット・ナインの存在を更に支持する新しい証拠を発見した。Caltechの天体物理学者で惑星科学者であるエリザベス・ベイリーの助けを借りて、チームはプラネット・ナインの影響が太陽系の惑星を傾けている可能性がある事を示している。それは、8つの主要な惑星軌道の帯が太陽の赤道に比べて約6度傾いている事を説明する。

「長期間に渡り、プラネット・ナインは、まるでテーブルの天板のように全体の太陽系面を歳差運動、あるいは揺らぎを作っている。」とバティギンは声明で述べた。

最後に、研究者らはプラネット・ナインの存在がカイパーベルトの物体の太陽系内の他の全てとは逆方向に軌道を回る理由を説明できる事を実証する。

「これらの高傾斜軌道の奇妙さを他のモデルが説明する事はできません。」バティギンは声明で述べた。「プラネット・ナインがそれらの発生への自然な道を提供する事が判明しました。これらの物はプラネット・ナインの助けを借りて太陽系面から飛び出し、その後に海王星によって内側に散らばった。」

今後、ハワイのマウナケア天文台ですばる望遠鏡を使って、プラネット・ナインを探し出し、不思議な惑星がどこから来たのかを推定する計画である。

我々の銀河の他の星の周りで発見された最も一般的なタイプの惑星は、地球よりも大きいが海王星よりも小さい岩の惑星でスーパーアースと呼ばれている。しかし、このような惑星は太陽系で発見されていない。つまり、プラネット・ナインが我々に欠けているスーパーアースになる可能性があるという事である。

Hacker News

USB-Cの叶わぬ夢

マルコ・アーメントのブログより。現時点のUSB-Cはひどい上、全ての機能が揃わないうちに次に規格が間も無く登場する。

私は、全てのポートとケーブルを1つのポートと一つのケーブルに置き換える事ができるUSB-Cの考えが大好きだ。それはとてもシンプルで、簡単で、一体化している。

実際には、程遠い。

USB-Cは通常、USBプロトコルでデータを転送するが、時としてThunderboltもサポートする...。12インチMacbookは1つのUSB-Cポートを持つが、Thunderboltは全くサポートしていない。その他の全てのMacbookモデルはUSB-Cポート経由でThunderboltをサポートしているが、タッチバーを持つ13インチモデルなら、右側のポートはThunderboltフル帯域幅を持っていない。

USB-Cケーブルを購入したら、それはThunderboltをサポートしているか、サポートしていないかのどちらかである。見て分かる方法は無い。通常、USB-CデバイスがThunderboltを必要としているかどうかを判断する方法は無い。差し込んで、動作するかどうかを確認するだけである。

USB-Cの優れた機能の多くは、Thunderboltやその他のオルタネートモードによってもたらされる。しかし、帯域幅の要求のために、コンピュータが非常に多くのUSB-Cポートを持つ事ができないのに、ノートPCの電源ケーブルでそれを失うのはとりわけ無駄である。深刻なポート不足は、USB-C以外のデバイスに接続する必要性と共に、必然的に多くの人にとって煩わしい、洗練されていない、しかも高価なドングルを必要とする。

USB-Cポートを追加できるハブはほとんどないため、周辺機器が数台以上ある場合、全てのケーブルをUSB-Cに置き換える事はできない。代わりに、複数のUSB-Aポートを提供するハブが必要となり、ハブに接続する際、USB-Aケーブルを持ち続ける必要があるが、コンピュータのポートに直接接続する必要がある全てのものについて、USB-Cケーブルやドングルも持ち続ける必要がある。

USB-Cポートが追加されたハブは、Thunderboltを通過させるかも知れないが、通常はそうでは無い。場合によっては、電源パススルーにしか使えないUSB-Cポートの追加もある。電源パススルーを持つ多くのハブは13インチあるいは15インチのノートPCが必要とするワット数以下である。

幸運にも、USB-Cは素晴らしい充電規格がある。さて、それはより標準の集まりである。USB-Cデバイスは低速の古いUSBレートで充電することはできるが、高出力デバイスや高速充電では電流が足りない。

多くのAndroid搭載携帯電話は、公式の優れた最新のUSB-Cパワーデリバリー(PD)標準とは異なるクワルコムのクイックチャージをサポートしている。Appleの製品、一部のAndroid携帯、任天堂のSwitchはUSB-C PDを使用している。クイックチャージのデバイスは、通常PD充電器のメリットは無い。その逆もそうである。

充電器、ケーブル、およびスタンドアロンのバッテリは全て同じ速度で動作するように、同じ充電規格をサポートしている必要がある。

一部のケーブルは、USB-C PDを全くサポートしておらず、ほとんどの場合、ノートPCのワット数をサポートしていない。Appleのケーブルは、以前のバージョンのケーブルを購入していない限り、高電力でのUSB-C PD充電をサポートしている。今日までに販売されているほとんどのスタンドアローンのバッテリーは、USB-C PDをサポートしていない。これまでのところ市場にはほんの一握りしか存在しないし、12インチMacBookを除いて、フルスピードでノートPCを充電できない。

USB-CからLightningケーブルでiPhone 8あるいはiPad Proを高速充電するためにUSB-C PDを使用する事ができる。しかし、全てのUSB-PDバッテリまたは充電器、または全てのUSB-CからLightningケーブル、あるいは全てのiPad Proでは動かない。

もちろん、ケーブル、充電器、バッテリ、デバイスがUSB-C PDをサポートしているかどうか、一目で分かる方法は無い。

時間が経つにつれ、これらが全て解決し、最終的にあらゆる事に対して、一つのケーブルとポートの夢を実現するとだろうと考えると気持ちが良い。しかし、テクノロジーが実際にそうは問屋が卸さない。

今日のUSB-Cがユビキタスで均質になる事ができる前に、次のプロトコルまたはポートが出てくるだろう。同じ見た目のUSB-Cポートよりも高速で新しいUSB 4.0とThunderbolt 4の標準が登場するだろう。我々は更に薄いUSB-Dポートに移行したいと考えている。報道はそれが未来だと呼び、Appleは1つあるいは2つのUSB-Dポートしか持たない新しいノートPCを賞賛するだろう、運が良ければ。

我々は、本当に必要なものを適用させるため、新しいケーブル、ドングル、ハブ、充電器、バッテリー、ディスプレイを買って、再び一からやり直し始める必要があるだろう。

もしかすると次回、我々は正しく理解するかも知れない。でも、おそらくそれは無いな。

Boing BoingHacker NewsSlashdot

追記: ジョン・グルーバーのブログより。

USB-Cは二重の災害である。全てのUSB-Cポートとプラグが同じように見えるので、基本的に混乱するが、非常に異なる機能を持つ事ができる。それは、同じように見えるものは同じでなければならず、違うものは異なって見えるべきであるというグッド・デザインの根本的な原則である。USB-Cはこれを破っている。

第二に、あなたが宿題をして、何を探すかを正確に知っていても、USB-C製品には深刻な欠乏がある。USB-Cハブのマーケットはむちゃくちゃだが、AppleのMacBookにはUSB-Cポートが1つしか無いため、外部周辺機器を必要とする特定のタスクにハブを事実上要求してしまう。今のApple MacBookは全てUSB-C専用なので、USB-Cの問題はMacBookの問題でもある。

10/14/2017

シュナイアー、本を執筆中

シュナイアーのブログより。新しい本が楽しみだ。

ブログの常連は、私が以前ほど最近は記事を投稿していない事に気付いているだろう。2つの理由がある。1つ目は、書くものを見つけるの難しいと感じている。それはしばしば何度も繰り返している話である。私自身、繰り返しは好きではない。2つ目は、私は本を書くのに忙しい。タイトルは今の所、『Click Here to Kill Everybody: Peril and Promise in a Hyper-Connected World (皆を殺すためにここをクリック: ハイパーコネクト・ワールドの危険と約束)』である。この本は、1年後に出版され、2016年とは全く異なる内容である。私は、8月中旬から着実に書いている。この本は、2018年3月末には出版社に行く筈である、9月初めに出版される予定である。

これは現在の目次である(もちろん、変更の可能性がある):

  • まえがき: 全てがコンピュータになっている
  • 第1部: トレンド
    1. 資本主義はインターネットを推進し続ける
    2. カスタマ/ユーザのコントロールが次だ
    3. 政府の監視とコントロールも増加している
    4. サイバー犯罪はこれまで以上に儲かる
    5. サイバー戦争は新常態(ニューノーマル)である
    6. アルゴリズム、自動化、自律性が新たな危険をもたらす
    7. 私たちがコンピュータ・セキュリティについて知っておく事
    8. アジャイルはセキュリティのパラダイムとして失敗している
    9. 認証と本人確認はより困難になりつつある
    10. リスクが壊滅的になりつつある
  • 第2部: 解決策
    1. 私たちはモノのインターネットを規制する必要がある
    2. 私たちは重要インフラを守る必要がある
    3. 私たちは攻撃に対する防御を優先させる必要がある
    4. 私たちは接続についてもっと賢い決定をする必要がある
    5. 何が起こる可能性があり、対応策として何ができるか
    6. ポリシーが間違っている場所はどこか
  • 結論: テクノロジーとポリシーを一緒に

それが起こっている事です。

更新(2018.1.7): 9月に出版されるとのこと。目次が変わっている。

  • まえがき: 全てがコンピュータになっている
  • 第1部: トレンド
    1. コンピュータは安全にするにはまだ難しい
    2. 誰もが不安を好む
    3. 自律した乱暴な機関が新たな危険をもたらす
    4. パッチはセキュリティパラダイムとして失敗している
    5. 認証と本人確認はより困難になりつつある
    6. リスクが壊滅的になりつつある
  • 第2部: 解決策
    1. 安全なインターネット+はどのように見えるか
    2. 私たちはインターネット+をどのように安全にできるか
    3. 政府は誰がセキュリティを可能にするか
    4. 政府はどのように攻撃に対する防御を優先できるか
    5. 何が起こる可能性があり、対応策として何ができるか
    6. ポリシーが間違っている場所はどこか
    7. インターネット+に信用をもたらす方法
  • 結論: テクノロジーとポリシーを一緒に

Apple CEO、第2言語教育は英語よりもプログラミングが重要

Slashdotより。全くその通り!!!

Apple CEOのティム・クックは、第2言語として英語を学ぶ事より、プログラミング方法を学ぶ方がより重要であると言う。レポートより。
テック経営者は、ヨーロッパで高額な税金を支払うようテック企業に求めるフランスのエマニュエル・マクロン大統領との会談のためにフランス滞在中、フランスの放送局Konbiniで意見を述べた。「私がフランスの学生でまだ10歳だったら、英語よりもプログラミングを学ぶ方が重要になると思う。私は何らかの形で英語を学ばないようにとは人に言わないが、私が言いたいのは、これは世界中で70億の人に自分を表現するために使う事ができる言語だと、あなたに理解して欲しいと思っている。」クックはKonbiniに語った。「私は、世界中の全ての公立学校でプログラミングが必要になると考えている。[...] コンピュータ科学者だけでなく、誰もが必要とする言語だ。我々皆にとって。」

DOCSISのアップデートで10Gbps全二重通信が登場

ars technicaより

高速で対称型データ転送の新しい使用のおかげで、10Gbps速度のダウンロード/アップロードを持つケーブル・インターネットがついにアメリカの家庭にやって来る。

業界の研究開発コンソーシアムのケーブルラボは本日、DOCSIS 3.1のアップデート版である全二重通信DOCSISが完成した事を発表した。10Gbps全二重通信仕様の完成版がプロジェクト公表後の18ヶ月で登場する。

仕様は完成したが、商用導入は少なくとも数年は掛かる見通しで、当初仕様で許される最高速度を提供しない可能性があるため、すぐにマルチギガビットのアップロードとダウンロードが出来るようになる事を意味するものでは無い。

DOCSIS 3.1の初期バージョンは2013年に発表され、10Gbpsのダウンロードと1Gbpsのアップロードが可能だった。最初のモデムは2016年初めまで認定されておらず、実際の実装はまだ追い付いていない。Comcastは昨年、DOCSIS 3.1を使用してケーブル経由でギガビットのダウンロード速度を提供し始めたが、アップロードは35Mbpsに制限されている。Comcastの唯一の対称型ギガビットサービスは、ケーブルでは無く光ファイバを使っている。ファイバ技術は数年でギガビットの速度で対称型伝送をサポートするようになった。

仕様で利用可能な最高速度はしばしば商用製品よりも数年先行する事が多いが、ケーブルラボは全二重通信仕様を大きなブレークスルーと説明している。

「現在のDOCSISネットワークは、利用可能なアップストリームとダウンストリームのトラフィックを調整する必要がある。」ケーブルラボの技術開発VPであるBelal Hamzehは発表の中で書いた。「全二重通信DOCSIS技術は、同じスペクトル内で同時送信を可能にする事で、マルチギガビットの対称型サービスをサポートし、ダウンストリーム容量を犠牲にする事なくアップストリーム容量を増やす事ができる。これによって、ネットワークの効率性が向上し、利用者の利便性が大幅に向上する可能性がある。」

「DOCSIS 3.1の全二重通信バージョンは既存のインフラで高速化を提供し、光ファイバよりも導入コストが低く、前世代のDOCSIS技術と下位互換性を維持する。」とHemzehは書いている。

対称型マルチギガビット・ケーブル・サービスは2019年に可能

商用展開前にまだいくつかのステップがある。Multichannel Newsの記事は説明する。記事によれば、物理層(PHY)の仕様が完成したのと同時に、MAC層はワーキングループで開発されており、近い将来完成する予定であると、Hemzehは語った。

「全二重通信が高度な成熟段階に達した事を物理層が示す事で、ベンダーは製品開発を進める事ができる。」とMultichannel Newsは書いている。

製品開発が期待通りに進めば、「ケーブルオペレータは2019年末までにこの技術を商用導入する事ができるだろう。」とLight Readingは8月に報じた

我々はHemzehに、顧客がDOCSISアップデートを利用するのにどんな種類の機器のアップグレードが必要になるのかを聞いてみた。アップデートが得られれば、我々はアップデートを提供するだろう。昨年、Hemzehはケーブルラボの設計と分析によって、DOCSIS 3.1技術の既存の物理層とMAC層のプロトコルはこの新しい対称型サービスの大部分をサポートできる事を示していると書いている

しかし、だからと言って既存のモデムから10Gbpsを得られる事を意味しない。Ciscoは5月にダウンストリーム速度890Mbps、アップストリーム680Mbpsで実証実験をデモした。Ciscoは全二重通信の究極の目的は、576MHzの共有スペクトルを使用する事だと説明したが、現在のケーブルモデムは204MHzのアップストリーム・スペクトルで頭打ちになっている。でもでは96MHzが使われた。

Arsの連絡を受けて、ケーブルラボは利用者が対称型の10Gbpsの速度を得るためには家庭内で税二重通信DOCSISモデムが必要であると述べた。ケーブル会社は、既存の同軸インフラを使用する事はできるが、全二重通信対応のリモートPHYまたはリモートMAC PHYノードも必要とする。

ノキアが所有するベル研究所は2016年5月に、XG-Cableと呼ばれるわずかに異なるシステムを使用して、研究所内で10Gbpsの対称型ケーブル速度を達成したと述べた。

10/12/2017

モスクワはカスペルスキーをスパイツールに変えている

Slashdotより

今日、WSJが大スクープをした。報道より:
この問題を知る現職と元米政府関係者によると、ロシア政府は、プログラムを改造してスパイツールに転用した(有料記事)人気のウィルス対策ソフトを使って機密の米政府文書や極秘情報のために、世界中のコンピュータの密かにスキャンしていた。モスクワに本拠を置くカスペルスキー・ラボのソフトウェアは、インストールされているコンピュータのファイルを定期的にスキャンし、ウィルスやその他の悪意のあるソフトウェアを探し出す。しかし、当局が同社の情報で作られていると言うその通常オペレーションの調整では、このプログラムは機密の米政府文書に書かれている「極秘」という言葉、同様に米政府のプログラム機密のコード名を幅広く検索したと、これらの人たちは語った。ウォール・ストリート・ジャーナルは先週、ロシアのハッカーがNSAの請負業者をターゲットに2015年にカスペルスキーのソフトウェアを使用し、彼は職場から機密扱いの資料を削除し、自宅のコンピュータにそれらを置いて、そのプログラムを実行していたと報じた。ハッカーは、どのようにNSAがスパイ行為を行い、他国による侵入から守っていたのかについての高度に分類される情報を盗んだと、その問題に精通する人物は話した。しかし、カスペルスキーのプログラムを米国でのスパイ目的で利用する事は、名前が公表されていないその個人に対するオペレーションよりも広範かつ普及していると、現役および元政府関係者は語った。
このリンクはWSJの有料記事に連れて行くはずだ。これも読んでほしい: イスラエルのスパイは、ロシアのスパイがカスペルスキーのソフトウェアを破るのを見た

Slashdotより

報道によると、イスラエルのスパイは、ロシアのハッカーが2年前にカスペルスキーのサイバー・セキュリティ・ソフトウェアを2年前に破ったと考えている。報道より:
ニューヨーク・タイムズとワシントン・ポスト紙によると、ロシアは米国の諜報プログラムに関するデータを収集しようとしていたという。イスラエルのスパイは、ソフトウェア自体を破った後に発見した。カスペルスキーは、その状況に気付いても関与もしておらず、当局との共謀も否定したと言った。先月、米国政府はロシアのソフトウェアをコンピュータで使用することを禁止する事に決定した。イスラエルが米国に通知したと言われており、これによってカスペルスキーのプログラムが禁止された。ニューヨーク・タイムズ紙によれば、この状況はこの問題について説明された複数人によって説明されているという。

シュナイアーも取り上げている。

私はこれを買わない。機密情報取扱許可のある人は、機密扱いの物を自宅に持ち帰られないよう繰り返し話されている。たまに話に出るだけではない。それは仕事の中核である。

10/11/2017

iOSのパスワード・プロンプトに気を付けろ(フィッシング詐欺の可能性)

ジョン・グルーバーのブログより。

Felix Krause:

iOSは多くの理由からiTunesパスワードをユーザに尋ねる。ごくありふれたものは、iOSオペレーティング・システムのアップデートが最近インストールされた場合、あるいはiOSアプリがインストール中に固まった場合である。

結果、iOSがプロンプトを表示するたびに、ユーザはApple IDのパスワードをただ入力するよう訓練されている。しかし、これらのポップアップはロック画面とホーム画面に表示されるだけでなく、ランダムにアプリの中でも表示される。例えば、iCloud、GameCenter、アプリ内課金にアクセスしたい時である。

これは、システムダイアログと全く同じように見えるUIAlertControllerを表示するだけで、どのアプリケーションでも悪用される可能性がある。

テクノロジーに関して知識が豊富なユーザでさえ、これらのアラートがフィッシング攻撃であることをなかなか見破る事ができない。

私はこれについて何年も考えて来たが、問題になっていない事に少々驚いている。しかし、解決が微妙な問題でもある。システムは、フィッシング詐欺師によって複製できないパスワードプロンプトをどのように表示できるか? 私にとって最善のアイデアは、これらのシステムレベルのプロンプトが設定アプリにのみ表示される事である。何らかのアプリを使っている時に、iCloudやiTunesのパスワードが必要な場合は、そのプロンプトが設定に移動し、パスワードの入力が求められる。しかし、パスワード入力をはるかに面倒なものにするため、これはあまり優れた方法ではない。そして、パスワードを入力した後に、元のアプリに戻るにはどうするのか?

Krauseは、自分を守るために一つの方法を提案している。パスワードプロンプトがフィッシングの試みと疑われる場合、ホームボタンを押す。フィッシング詐欺の場合、使用しているアプリの一部であるため、ホーム画面に戻るとダイアログは消える。実際に、システムレベルのプロンプトであれば、アラートはまだそこにある。

身を守る方法は、

  • ホームボタンを押す(プロンプトが消えればフィッシング、消えなければシステム)
  • ポップアップではパスワードは入力せず、設定アプリで手動で設定する
  • ダイアログでキャンセルを押す。

追記: シュナイアーのブログより

これは興味深いセキュリティ上の脆弱性である。iOSパスワードのプロンプトを偽装するのは簡単なので、悪意のあるアプリは尋ねるだけでパスワードを盗む事ができる。

(...)

エッセイはいくつかの解決策を提案しているが、私はそれらが働くかどうかは確信が持てない。我々は全て、コンピュータとそれらを実行しているアプリケーションを信頼するよう訓練されている。

北朝鮮のハッカーが米韓の軍事計画を盗んでいた

Slashdotより

北朝鮮のハッカーは、昨年韓国軍のコンピュータ・ネットワークに侵入した際、米国と韓国が共同で作成した機密性の高い戦時の緊急時対応策を含む膨大なデータを盗み出していたと、韓国の国会議員が明らかにした(別の情報源)。報道より。

計画の一つは、朝鮮半島で戦争が勃発した場合、北朝鮮の指導者である金正恩を排除する斬首作戦と呼ぶ韓国軍の計画を含んでいると、Rhee Cheol-hee議員は報道陣に語った。国会の国防委員を務める民主党のRhee氏は、昨年9月に初めて発見された北朝鮮のハッキング攻撃の規模を最近知っただけだと述べた。 Rhee氏は約300件の低分類の機密文書が盗まれたと述べたが、軍のトップシークレットが漏洩したかどうかは知らされていなかった。軍は、235ギガバイトの漏洩データの80%近くをまだ特定していない、と彼は言った。

ザ・エクスパンス・シリーズ (Netflix)

Netfixで視聴できる「ザ・エクスパンス」が面白い。単なる地球、火星、小惑星帯間の争いの話かと思ったら、Wikipediaを見ると、スターゲイトのような話も出てくるのか!? 原作は9巻が予定されており、6巻まで出版されている(今年12月に7巻が予定)。これら聖典の他、プリコールを描く2つ短編、4つの中編もある。残念な事に、邦訳は1巻(巨獣めざめる)で止まってしまっているが、SFのゲーム・オブ・スローンズと評する人もいる。

プロット

この本は、強力だがおそらく絶滅した古代文明の生き残りとの接触によって、もたらされる政治的、文化的、経済的変化を通じて、様々なキャラクターを追い掛ける。

設定

エクスパンスは、人類は太陽系の大部分を植民地化したが、恒星間飛行はまだ出来ない未来に設定されている。小惑星帯とそれ以遠において、地球の国連、火星、外惑星との間で緊張が高まっている。このシリーズは当初、太陽系内の小惑星帯のケレス、エロス、最も発展した木星の月であるガニメデやエウロパ、最も遠方の科学基地がある土星を周るフェーベ、天王星を周るティタニアなど現実にある世界で起こる。火星や月にはドーム型の居住地が確立されている。著者によると、アンディ・ウィアーの小説「火星の人」は、エクスパンスと同じ宇宙で起きている。この繋がりは、Babylon's Ashes(6巻)内の火星の主人公マーク・ワトニーと言う名前の船に言及して聖典が作られている。

シリーズが進むにつれ、人類はずっと前にいなくなったエイリアン亜種が建造した人工的に維持されているアインシュタイン-ローゼン橋、別名ワームホールであるリングの利用によって数千の新しい世界にアクセスする。太陽系のリングは天王星の軌道から2AUにあり、それを通過すると、約100万キロメートルに渡るスターレス・スペースのハブにつながり、1300以上のリングがあり、それぞれが向こう側で恒星系がある。スローゾーンとも呼ばれるハブの中央には、ゲートを制御するエイリアン宇宙ステーションがあり、防御手段として、ハブ内のオブジェクトに瞬時速度制限を設定する事もできる。