Netflix in train
1
ここ最近は電車の中でnetflixを見ることで、生活の質を上げる行為に励んでいる。
いままで電車のなかではrssを消化するだけだったが、日常生活に映像作品が紛れ込むことは思っていたよりも発見にあふれていた。
しかし、イヤホンを定常的に持ち歩く健常性を発揮できない人種にとっては三割ぐらいの確率でnetflixを見ることができないのである。 こうしてブログが書かれる。
2
最近見ているのは i am a killerという作品で、
死刑囚(厳密には第一級殺人の罪に認定された人)へのインタビューとその裁判や関係者にフォーカスしたドキュメンタリである。
回によってコンセプトが違うが、おおよそは死刑囚へのインタビューから始まり担当検事、死刑囚の家族や被害者の家族へ、90日後(法制度の都合っぽい)再び死刑囚に、といった構成が多い。
再現ドラマが少ないのはいい点で、再現ドラマは一方的な事実認定をしてしまうつまらなさがある。ドキュメンタリではやめて欲しい。
3
犯罪関係のドキュメンタリは良く見るのだが、当然、日本とアメリカ(各州)でかなり法制度が違う。
陪審員制度、裁判の進行、死刑に対する基準、死刑制度の有無。
この作品を見た場合、そういった発見や驚きは当然出てくる。
州や時代が違ったりはするので一概には言えないけど、裁判上の人種差別や検察側の不正があるように思えたりもする。
だけど注目するのはそこではなく、犯人の生まれて事件がおきて現在までを偏見なく見ることであるように思える。
この作品は死刑制度に対して何かしらのスタンスを表明するものではなく、第一級殺人に相当する刑罰としての死刑に向き合うものである。
4
作中で出てくる死刑となる基準に、「社会にとって危険であるか」がある。
おおよそこの点を軸に作中では事件に向き合うことになるが、それは本当に事件という一つの"点"でわかるものなのだろうか。
日本だと永山基準があるだろうが、アメリカ(各州)の場合、裁判官ではなく陪審員に対するものである。
そういった環境だからこそ作られた作品でもある。
セキュリティとアカウント管理と近況
1
そういえばOSをmojaveにあげるついでに、macをクリーンインストールした。 そしてこの前誕生日を迎え29歳になった。平成最後の冬、そして20代最後の冬。
定期的にmacをクリスコ(以下クリーンインストールの略)するとYosaがある。
クリスコすると再びログインすることになる、主にwebサービスにそして使っている、依存しているサービスを否応に意識される。
サービス間の依存が強いもの、重要なアカウント、デバイス。もしもこれがハックされたらどうヤバくて何をすればいいんだっけ?
みんな〜意識してる〜?
2
まず意識するべきものの区別、ハックされた時の未知数が大きいかどうか、これに尽きる。 そして、自分が保持しているものとそうでないもの、物理的かどうかといっても問題なさそうだけど、ここは難しい。
とりあえず挙げていく。
保持しているもの * iPhone * Mac * USBとかSSDとかのストレージ * yubikey
してないもの * iCloud * google account * microsoft account * github * keybase
各々色々なリスクや攻撃のされ方があるけど、一旦整理するために列挙しておく 特にデバイスがハックされた場合だいたいwebへの攻撃に繋がるので、先にデバイス。
2 iPhone
リスク
- iPhoneにはSIMが刺さっているSIM内情報、電話番号及びSMSへのアクセス権限。
- 入っているアプリケーションへのアクセス権
- btc wallet (pinが必要)
- 1password (faceid もしくは1passwordのmaster password)
- etc
- メールアカウントへのアクセス権
- Google Authenticator
考えられる攻撃経路
- ロックされていない状態でiPhoneを強奪される
- ロックされている状態でiPhoneを紛失もしくは強奪され
- パスコードがソーシャルハックされるorされている
- 自分自身が拘束されるもしくは意識がない状態でFaceIDを強制的に解除される
まとめ
列挙してみるとあまりにも高いリスク、幽遊白書のS級妖怪を思い起こされる。 モバイルデバイスではあるので紛失盗難リスクが割合としては多く考える必要がある。 メールアカウントへのアクセスがある時点で、多くの重要ではないアカウントへのアクセス権を得ることになる。 また、二段階認証にSMSを採用しているアプリケーションは多いので、 しかも攻撃経路もターゲット型の攻撃時はそこまで難しくないように思える。 紛失に対してはパスコードが日常で不便にならない程度に長ければ問題ないようにも思える。
以下は拘束されてた時にFacaIDを解除させられない顔にする訓練をしている図
2 Mac
Macはハックされるレベル感を分け他方がいい考えている。
フルコントロールを奪われる場合
部分的なアクセス権
リスク
- keychain情報 (フルコントロール)
- localに保存された秘匿情報(これは定期的にクリスコするので少ないはず
- ブラウザでログインしているメールアカウントへのアクセス権
攻撃経路
盗難などはiPhoneと同じような方法が考えられるが、macのpasswordの方がpinよりソーシャルハックしにくいと考えている。 ただ、touch idに対しては精度の点で評価が迷う。正直macにもface idをつけて、touch id とface idの両方を揃っていないといけないようなオプションが欲しい。
また、macの場合の方が自由にアプリケーションが入れられてsandbox化されていないので、脆弱性などにより一部ファイルがreadされることは危惧した方がいいように感じる。
まとめ
ssh鍵は置いてないので危惧する必要はなし。 hiroqn.hatenablog.com
危惧しているのは、keychainアクセスやうっかり保存してしまったセキュリティトークン。 iPhoneの場合は紛失に気づきやすいが、macの場合気づかないうちに流出した場合が怖い(特にロックしないで離席したケースなど)。
2 ストレージ
これは普段使いのストレージの話ではなく、ある一定上のセキュリティ情報を保存するためのストレージである。 例えば2faが設定されたアプリケーションのバックアップコード(え、適切に保存してない人いませんよね??)とかbitcoinのウォレットのバックアップとか。
自分はmacの暗号化されたディスクイメージの作成を使って、ストレージの中に暗号化した状態で保存している。
これのパスワードは気合で覚える必要がある、もしくは何かに依存させても良いのかもしれない(1passwordなど)。 ただ依存させた場合、依存先のセキュリティ担保が結局必要になる。
まとめ
こちらは自分がパスワードをどこにも保存しない&ストレージをローカルにもつという前提から、突破されないようにしている。 正確な言い方をすると "突破されない"ことを前提とした運用にしている。
2 yubikey
こちらは前回紹介した通り、普段使いのpgp鍵を入れておくデバイスとして使っている。 pinコードを数回間違えるとハードウェアレベルでブロックされるの盗難に対してはかなり有効と考えている。
ちょっとしたファイルならこれで暗号化するのがいいと思う。 ただ、pin自体は盗み見などでソーシャルハックできる可能性があるので、定期的にローテーションすることが必須と考えている。
3
パスワードを記憶する運用はパスワードが安易になるという危険性やローテーションがめんどくさいといった理由でなるべくはしたくない。 だが1passwordやどうしても記憶しなければいけない部分が出てくる。 記憶に頼った運用も自分の脳が単一障害点となるため、死亡時、記憶喪失時に復旧が困難になる。
これに対しては、死亡時などに許容するアカウントの切り分けができていないので現状は運用に載せていないのだがアイデアとしては持っていて、 vaultを使うという手法を考えている。
こちらはunseal keyというものを生成することができて、3つ生成したkeyのうち2以上が揃えば復号できるというような運用が可能になる。 なので、死後のアカウントを任せる人間に配るといったことによって対応することができる。 配る際は配る相手のpgp鍵で暗号化しておく必要があるのでそれを忘れてはいけない。
ただ、情報のアップデートが難しくアップデート込みの運用となると、本当にコアな情報を暗号化するためのpgp鍵を生成し、鍵をyubikeyに入れバックアップをvaultに入れるのがいいかもしれない。
ちなみにvaultを使わなくてもできるが、inerfaceや容易さとしてvaultを使う。
4
振り返ると、 iPhone紛失時など、流出時に適切にアプリケーションに対してセッションをログアウトしたりパスワードを変えたりする仕組みづくりが欠けている。
またiPhoneに二段階認証などが偏りすぎている可能性もある。また、SMSが安全ではないのでSMSの二段階認証は辞めていきたい。
とはいえ利便性は大事である。
トイレでうんこを垂れている間は鍵をかけていたいが、入る時に鍵を開けなければならないとしたら時には垂れながらドアを開ける事になりそうだ
今回web アプリケーション周りが書けなかったので。。。
続く
Kyoto.js#14に行ってきた話
Kyoto.jsについて
みんな〜JS書いてる??
振り返り
結構みんなjsを書いてなかった。そもそも自分もk8sのyamlかtfを書いてる。
京都には鴨川があるのに、なんで水車が設置されて無くて、なんでドネルケバブが回転していないのか不思議だった。
発表資料
自分はCycle.jsを使うことが多くて、業務でもここ最近はCycle.jsしか使ってないんだけど
そこらへんで溜まった知見のSESパターンの話をした。
そもそもSESパターンは自分でつけた名前なのでググっても出てくるわけがないんだけど、
もともと前職にいる時に3人ぐらいのおっさんで「Actionをdispatchってただのreduceだし、もうちょっとsimpleにかけるじゃん」みたいなとこから始まって、
現職で「いやぁ〜それってendomorphismですわ〜〜」みたいな人の発言から、Endo<T>
をよく使うようになって、Stream<Endo<State>>
がクソ長くて
type $ES = Stream<Endo<State>>
からSESになりました。
資料ではあんまうまく書けなかったので書いてないメリットなんだけど、
言語特性上だいたいのRx系はEventやんというのは置いといて。
人の意図が絡んだアプリケーションをあらわすコードとされるものの中では
「このタイミングでこうしてほしい」っていうEvent系のものと、「Streamが表しているのはXXXという状態なんですよね〜」みたいなBehavior系があって
このSESパターンにおいてはそれらが区別しやすくなるですわね
結局このタイミングでこうしてほしいっていうのは、結局状態変化を望んでいるのでSES
になるし(ioの特性上ならないのもある)、
俺のアプリケーションっていうのはこういうStateだ(そのState外でうまく適応しておきますね[外ではstateを使って別のSESになる])という表現はStream<State>
になる。
まぁどうやっても欺瞞感があるのはわかるけど、解釈を助けるためにパターンに落とし込む行為はリーダビリティを上げVNodeは流行った。
感想
もうちょっと現実的なところとか紹介したいけど、みんなCycle.js使ってないし(知っている人は結構いた)、Cycleの紹介とか入れると発表時間が足りなくなる。(5分オーバーした)
あとStreamの説明も割と雑にやってしまったが、説明し始めるとa few時間ぐらいかかりそうなので、また別の機会に。
なんかCycleとかPureScriptとかElmとかのFRP系のwebやってる人でmeet upしたいですね。
家にssh鍵を忘れるという概念
たまにssh鍵を家に忘れることがある。こういうものはsshしたいときに限って忘れる
やべ、ssh鍵を家に忘れた、、、
— 離苦 (@hiroqn) 2017年8月20日
仕組み
自分はYubikeyを使っている。
6月ごろにtype-cのやつを買った。(右のやつは1年以上持ち歩いているが結構丈夫)
YubikeyはYubico社が出している電子鍵が安全に保管できるデバイスで、複数機能があるので一概にこれと説明はできない
ここらへんに機能一覧はのっている
メジャーな機能は下の4つ
- YubiOTP
- FIDO U2F
- PGP Card
- PIV card
ざっくりした説明をすると
Yubi OTP
One Time Passwordの一種
OTPは現在時刻を利用したのものやカウンターを利用した物があるが、ハードウェアデバイスならではのカウンター+暗号化が入っているのでセキュアな雰囲気がある
ここに日本語で書かれた最高の資料があるので仕組みを知りたい人はこっちを読んだほうが良い
会社とかの中央集権的な集団のログインには便利である。
YubiCloudを使わない場合、秘密のパスフレーズをYubikeyに突っ込んだ状態でYubukey配る必要があるのでウェブサービスには不向き
例えば、社員が入社したときにYubikeyが配られて(持っている人は自分のを使う)入社手続きの際にyubikeyを穴に突っ込んでYubiOTPがセットアップされる仕組み
そんなのはかっこいい
上の例はラズパイとかを使えば、簡単にできそうだがラズパイにはtype-cの穴はないし、さり気なくboot用のsd cardを攻撃者に交換されるリスクもある。
FIDO U2F
物理デバイスを使った二段階認証の規格があってそれを満たしている。
この規格は「みんな!この規格でいくぞ!!」みたいな流れが薄いイメージだったが、最近はだいぶサポートされている感じがする。
自分は複数サービスで使っている。
GitHub - github/SoftU2F: Software U2F authenticator for macOS
githubもライブラリを公開しているので試したい
PGP Card
PGPの鍵をimportすることができる(内部で生成することも可能だったような)規格である。また、exportはできない。
自分は主にこの機能をよく使っているように思える。
このyubikeyをパクればpgpで署名したり復号できるようになるかといえばそうでもなく、使うときにPINを打つ必要がある
この機能を使う上でPINとadmin PIN を設定する必要があり
PINを打つことに3回失敗すればロックされ、admin pin打たないと使えなくなる。このadmin PINを打つことに3回失敗すれば永久にロックされる。
gpgの機能としてpgp鍵をつかってsshする方法があり、それを普段のssh鍵にしている。
PIV card
PIV(Personal Identity Verification)の略の通り、身分証明用のIC cardの規格である。
この規格はアメリカの政府職員とかが持っているcardとかに採用されている
一般的にicチップが付いたカードは OpenSC(open smart card)を使えばread/writeやその他のやり取りができる
PIV cardの規格の一つに鍵を内部で生成する事ができ、それを使ってsshすることができるがpiv cardの仕様上rsa2048以上を使うことができない
なので昔はこちらを使ってsshしていたが、最近は使っていない。
日本には四季やマイナンバーがあるが、マイナンバーでsshすることができてもおそらくマイナンバーはPIV cardの仕様をみたしてはいなさそうである。
PIV cardは上のPGP cardの仕様と同じようにPINの仕組みがあり鍵をexportすることができないという仕様を考えると、公開鍵で暗号化されたものをPIV card内で複合しているのはないかと思う、これに関してはあまり良くわからない。
macだと support.apple.com こういったサポートがあり、Yubico社が出しているドライバーを入れるとログインに使うこともできる。
最後に
macだけにすべての情報が入っているのは怖く感じるのでこういったデバイスを使うようにしているが、逆にこのデバイスを紛失したときに大変なことにならないような運用が大事である
一応、自分の場合はそんなに困らないように作っているつもりであるので、暇な時またそれについて書く。
VRに関して話したメモ
takanarisunと小一時間話した。
空間はどうあるべきか
VRは決められた箱の空間、100あるうちのどれだけ楽しめるか
VR空間上にわざわざ魔法陣をつくってまでゲームを成立させる必要がるのか
そもそも閉じた世界に更に閉じた世界を作ろうとしている?
TRPGと比べると、
口頭で作れる、空間はどこまでも広がる、各個人の想像をリアルな場で共有している
takanarisun体験の話
バイオハザードのVRを体験した結果、ゲーム中の体の動きの視点移動とリンクしていて”キャラになってる感”が強かった
前提としてゲームにおいて自己があってそのキャラを区別、明確に区別している
ところが、VRで区別できない感じがした
ゲームの中との区別がつかなくなった時、それは遊びなのか
ダメージを受けたり死んで初めてその世界がゲームかどうかわかると言うのは
小説のクラインの壺だな、という話をした
分類の話
ロジェ・カイヨワの4分類(ごっこ、運、闘争、めまい)から考えてみる。
バイオハザードは本来、ごっことめまいの性質を持つ
ただVRによってごっこ遊びではなくなるのではないか
プレイしている人が安心できないならロールプレイにならないのでは?
考えたこと
VRは視覚インターフェースが近づいただけとも言える。 現実世界を認知する手段を何に頼っているか、視覚に頼っている人はわからなくなる 視覚がない人は世界はどう見えているのだろうか。
リクルートを退職した
退職 is 離苦route
自分はこのブログで書かれているチームにいた。(ちなみに、このブログに書かれていることはすべて事実だ) いわゆる威圧されている側である
自分も疲れたのでやめた。普通に考えて、こういうことが起こる環境で働くのは厳しい。
「リファラルで採用!」みたいな感じで人の紹介を依頼されても、上のように優秀な人間からやめていく環境を紹介できるわけがない。 そう思うとモチベーションは下がる。
どうすれば良かったを論じても結果論にしかならないので、学べたことを書くしかない。
心理的安全性
まず第一に心理的安全性を確保できないのは危険だ。 こんなこと当たり前のように思えるけど意外とできてないし、 そもそも肉体的な安全すら確保できてない企業も多そう。
KPTと呼ばれるKeep(続ける良いこと)Problem(置きてる問題)Try(今後改善する対応)を話し合うミーティングがあるが、 心理的安全性がない状態でKPTはやるだけ無駄だ。問題を問題と認知できない状態では、問題は出てこないし探せない。
チームを大きくしない
チームの人数が多ければ多いほど、人同士の問題が起きやすく解決しにくなる
あと人数が多いとミーティングに意味があるかどうかに関わらず無駄に感じる
マイナスを押し付けない
何か辛いことがあって、「辛い」という事実は積極的にチーム内で共有したら良いと思う(できる環境であれば) ただイライラしているのをそのままチーム内の人間に態度や言動で示すのは不毛だ。 怒鳴ることやイライラした態度を取ることがチーム内に価値をもたらすことはない
チームにならないならチーム開発しない
働く環境に興味がなく、一緒に働いている人に対して尊敬できない人と一緒に働くことは難しい
一番能力が低い人(特定の人のレビューしない人とか)によって開発速度が下げられる環境でチーム開発を続ける意味がない 特にエンジニアであればフリーランスという選択肢もある。 誰かと働くことに価値を認める人が誰かと働けばいい
離苦
そういえば入社前、投資家の人に「リクルートは3ヶ月で辞めろ」というアドバイスを貰っていたがなんだかんだ14ヶ月ぐらいいた。
投資家は先見の明がある
ビデオゲームでの対人戦少考
1
ビデオゲームを介してプレイヤー同士が対戦する時、どのような意味のある遊びが起きるだろうか
”自動でゲームが進行していく”というルールは、実現することがビデオゲームにとっては簡単でアナログゲームでは難しい
2つ意味合いがあってプレイヤーが何もしなくても状況が変わってくということでもあるし、プレイに順番や切れ目がなく連続して行われるということでもある
これらを備えたゲームの対人戦について考察してみる。
2
ところでこのルールは対戦において何をもたらすのか プレイヤーは時間という制約を強く課される。全く操作しなければ負けるのは当然として、操作することの速さや判断の速さ、時間に制約されたものが強く勝敗に影響する。
ゼロコンマ何秒で刻々と変化する状況に合わせて、素早く判断し適切な操作をゲームが終わるまで続けなければ勝つことができない。
3
こう書いてみるとかなり複雑なことをしているように思えるが、おそらくビデオゲームをしている本人はそう感じていない
それはどんなに複雑な状態でも勝つための条件が非常にわかりやすいからだ。ゲームによってゴールは違うが、相手のHPを削るとか相手より早くゴールするとか基本的に常にわかりやすい形で明記されている。
そしてプレイヤーは勝つためにどうすればいいか考えてプレイする。このプレイという1つの行動は人間の能力の都合上、ゼロコンマ何秒に区切ることができないだろう
つまり、どんなにリアルタイムでゲームが進もうがプレイヤーは自分のリズムでプレイしてそれを楽しんでいる
4
最後にいままでプレイとして扱ってきた1つの行為を分解して考えてみる。
このプレイというものはプレイヤーがゲームに勝とうとした結果選択する行為であるが、ビデオゲームの特性によってかなり異なるものとなる
2つに分けれるように思える
操作技術や反射神経、相手の行動予測などを伴い非常に短い時間で行うもの。
現在置かれている状態を認識し、勝つために次の動きを考え選択するという行為。その行為自体は難しくない。
前者の集まりが後者の選択肢になるのかもしれないし、ただそうならないゲームもあるだろう。
これらの違いはほとんど感覚なので、明確にわけれるものではないかもしれないが、今後もう少し分けてみたい
ただ、
戦略や戦術、作戦とかそういう言葉にしてしまうのは少し"遊び"が足りない