技術めいた何か

社会人になってしまった

セキュリティ・ネクストキャンプ2019の応募用紙のサマリー

セキュリティ・ネクストキャンプ2019の応募用紙のサマリーです。
ざっくり何書いたかを書きます。
参考になるかわかりませんが要約したものを公開します。
セキュリティ・ネクストキャンプ2019の応募課題は分野の指定は特になく、自分のやってきたことや興味を問う問題が中心だったので、個人的には書きやすかったです。
そのため、他の方の応募用紙が見えないのでわからないですが人によって回答内容が大きく変わると思います。
以下が応募用紙の要約です。

質問は4つありました。 以下の問題文は全て、下記リンクより引用

セキュリティ・ネクストキャンプ2019 応募要項 :IPA 独立行政法人 情報処理推進機構

  • あなたに関する問い
  • 課題解決に関する問い
  • 興味ある分野に関する問い
  • その他に関する問い

あなたに関する問い

あなたは今までどのようなことをやってきましたか.どのようなことができて,どのようなことが得意で,どのようなことに自信がありますか. どのようなものを作りましたか.どのような情報を発信してきましたか. どのようにしてそうしたことをやってきましたか.なぜ,そのようなことをやってきましたか.やってきてどう思いましたか. 参加できた場合,セキュリティ・ネクストキャンプにどのようなことを期待し,どのようなことをやってみたいですか.

(4000文字くらい)
以下の順番で書きました。

参加できた場合に何をしたいか

自分の研究分野と絡めたい旨を書きました。 また、コミュニティの運営に携わっているので、 学んだことを還元していきたい旨を書きました。

何をやってきたか、どのようにしてやってきたか

今までやってきたことについて抽象化して箇条書きで列挙しました。
学校歴(大学〜)やコミュニティを含む所属等についても箇条書きで書きました。
論文リストへのリンクやCV、GitHubのリンクはこの設問に書きました。
加えて、学会や学内での受賞歴についても箇条書きで書きました。
2つピックアップして詳細を文章で書きました。
コミュニティ活動やコンテストの出場などに加え、 5月に2回イベントやエンジニア向けのカンファレンスでAndroidのセキュリティについて登壇したので、それについても触れました。

学部1,2年で出たハッカソンとか技術同人誌については触れませんでした。
(今思えば、加点方式なので書いても良かったかもしれない。)

課題解決に関する問い

自身で何らかの疑問・課題・問題を設定し,それについて取り組み,その過程を示すことで,自身の技術力や課題に取り組むやりかたを説明してください. 設定する課題は何でも構いませんし,解決しなくても構いません. 解決できたかどうかではなく,いかに課題に取り組むかという点を評価します.

(6000文字くらい)
過去のものを含めて2つの課題について書きました。

1.学部3年の時にIDベース暗号とプロキシ再暗号化の実装をしたことを振り返り、
その時に犯した3つミス(主に乱数の扱い)について失敗に至った思考の過程や指導教員と議論したり指導を受けて得た解決方法について考え、詳しく書きました。
(全て発表前に修正できたので再実験して事なきを得ました。) また、とりあえず手を動かして信頼できる人(この場合は指導教員や先輩)にレビューしてもらいながら知識を身につけることが多い旨を書きました。

2.Googleが発表した暗号利用モードであるAdiantumをTLSに組み込む遊びをした話を書きました。(こちらは未完)

去年のセキュリティ・キャンプ全国大会のTLS・暗号ゼミの内容が「TLSの実装をしてその上に好きな暗号を実装する」だった(違ってたらごめんなさい)のを思い出して、 行けなかったので、詳細わからないけど暗号を乗せる部分を自分でやってみようという気持ちで手をつけました。 こちらは未完だったのですが、できたところまで書きました。 Adiantumを選んだのはAdiantum自体が世の中に出てから日が浅いことと、Disk Encryption向けに開発されたものなので、遊び以外でTLSに乗っける人はすぐにはでてこないだろうなと考えたからです。
進捗はこんな感じでした。

  • TLS1.3の前に、TLS1.2を対象に挑戦
  • 追加する暗号はAdiantum
  • 時間がなかったので、Golangの実装に追加する方針で行った
  • 雑にCipher Suiteに追加してハンドシェイクの途中までできた(CHLO, SHLO)
  • 通信の内容を暗号化するところはまだできていない
    • Adiantumが採用しているHBSHはtweakを受け付けるなど、GolangTLSのCipher Suite関連のインタフェースには合わないため、以下1または2の方法を検討(注意:安全性については考察していないです)
      • 1.https://github.com/lukechampine/adiantum に合わせて、Golangのcipher suite関連のインタフェースにあらたにHBSHを追加する
      • 2.Block Cipher用のインタフェースに合わせるためのラッパーを書く
    • 時間作れなくて対応できなかったけど悔しいので、BlowfishをGolangのTLS1.2のCipher Suiteに追加して遊んだ

興味ある分野に関する問い

セキュリティ・ネクストキャンプの講義の一覧を見て,その中から興味のある講義を選び,その講義で扱うテーマに対して自分が考えること,興味,疑問,課題,自分なりの考察などを説明してください. その分野について知識があるかどうかではなく,いかに興味や疑問を持ち,課題を考え,自分なりに調べて考察するかといった点を評価します.

(600文字くらい)
次の講義について書きました。

講義5-1
暗号アルゴリズムFPGA実装
講師: 今岡 通博

正しく実装するだけでなく、乱数を無下に扱わないべきであると考えたことやハードウェア実装であるため、電力解析攻撃などに対する対策が必要であると考えていることなどについて書きました。
AdiantumのようなonCPUで高速に動作するように設計されている暗号利用モードとの差別化が必要だと考えていることについても書きました。

その他に関する問い

書きたいことは前の設問までで全て書いてしまっていたので、 この問題については空白で出しました。

おわり。

p1sces.hatenablog.com

今回はご縁があったのですが、 過去の話をすると、学部時代に全国大会に3回チャレンジして全てだめでした。
(正確には応募は2回。1回は締切直前にセッションが切れて間に合わなかった)
↑の記事は共感したので、一喜一憂せずコンスタントにやっていきたいです。

mixi git challenge #10に参加してきました!

こんにちはprprhytです。
第10回 git challenge に参加してきました!
問題の内容については口外できないので日記風。

TL;DR

  • とても学びがあってエモかった
  • gitの低レベルコマンドとか内部構造とか学ぶ機会になった
  • 飯がうまい

参加まで

応募は初めてでした。
実は1度祈られたのですが、空席ができたため繰り上がりました。
どなたか存じませんが圧倒的感謝...。この時点で既にエモい。

当日

事前の連絡でチーム戦とは聞いていたのですが、
それって知らない人とチーム組むってことだよなぁ...
と思って少し不安でした。
2人チームでした。
実際には相方はとても社交的な人でした。感謝。

競技前

開始前は交通費の受け取りとかノベルティとか見てました。
交通費の支給は本当にありがたかったです。🙏

イベント開始後、運営スタッフのLTとチュートリアルがありました。
サービスにおけるGitの活用やGitでドメイン管理する話を聞きました。

相方とスタッフかつ午前にLTをされていた神谷さんとお昼をいただきました。
お昼はオーベルジーヌのカレー弁当でした。 お肉が大きくて、ルーもうまくてスパイシーでした。
過去のgit challengeのお昼で好評だったそうです。わかる。

競技開始前に作戦会議をしました。
方針としては、易しい順でソートして奇数個目の問題を解く役と偶数個目の問題を解く役にわかれました。
(当日あったばかりでお互いの実力とかわからなかったので...)

競技中

担当範囲のうち2,3問目くらいまで順調だったのですが、後半は解けない問題が出てきて飛ばしたり相方に解いてもらったりしました。
わからん問題を相方に問いてもらっている間に☆3の問題を1つ解けたのはよかった。(これは罠で他のすべてのチームも正解してた...)
一部の上級問題以外の難易度はちょうど良かったです。(解けなかった問題も解説聞いてなるほど〜ってなった)
インターネッツの使用は許可されていたので、いくつかの問題はググり力〜でした。 (一部の上級問題はあきらかにそうではない感じ...)
相方に助けてもらう場面が何度かありました。圧倒的感謝🙏

競技中にはお菓子やカフェインマシマシパリピドリンクHECATE(ソフドリ)も振る舞われました。

競技終了後

解説聞いてもう少しでできたのに...!と思う問題もありました。学びになりました。
結果は5位(同立2チーム)でした。1位は圧倒的でしたが、3位(同立2チーム)とは僅差だったので☆3があと一つ解けていれば3位だったのにねーみたいな話を相方としていました。
あと、LTもありました。
リポジトリのデータ解析(ネガポジ判定)の話や
KuniwakさんのGitに詳しくなるまでの話を聞きました。千里の道も一歩からなんだなーという気持ちになりました。やっていき💪

懇親会は疲れがピークでしたが、お酒の力で(一時的に)復活しました。
飯がオシャレな上に美味しかったです。

お話した学生の志望分野はmixiさんのイベントに参加しているだけあって、web系志望の学生がほとんどでした。(それはそう)
mixiのエンジニアの方や他の学生と交流できて有意義でした。
年収とか採用の本音...?(書類でどういうところ見るとか)とか根掘り葉掘り聞けました。よき。

最後に

継続は力なりなんだなーということがわかりました。 僕の語彙力では表現しきれませんが楽しかったし学びが多かったので、後輩にも勧めていきたい。
やっていくぞ💪

HHKBとMagicTrackPad用のドッキングステーションを自作した話

TL;DR

  • HHKB Professional2と初代Apple MagicTrackPad用のドッキングステーションを自作した
  • 木工ベース
  • 費用 5000円強
  • かかった時間は週末3時間×4日間くらい
  • 東急ハンズはいいぞ

完成図

膝に乗せて使ってます。

こんなん
f:id:atofaer:20180730020256j:plain

スペック

  • HHKBサイズのキーボードがおける
  • 初代Apple Magic TrackPadがはめ込める
  • ドッキングステーション兼パームレスト
  • 膝の上で使える
  • 折り畳める

効果効能

  • ディスプレイと距離を取れる
  • 椅子に深く腰をかけれる
  • 背もたれに寄りかかれる

きっかけ、いきさつ

長いので作業工程だけ知りたい人は飛ばしてください。

おたく、HHKBを買う

先輩が使っているのを見て厨二心がくすぐられました。
とはいえ、無刻印にするほど度胸がなかったので刻印ありを選択。
これが昨年の春でした。

ことはじめ

その後1年と3ヶ月はMacBook ProとHHKBを尊師スタイルで使っていました。
1年間強運用してみて尊師スタイルやノートPCの内蔵キーボードに次のデメリットを感じました。

  • 猫背になりがち
  • 目が内蔵ディスプレイに近くなりがち
    • 机に奥行きがない場合、外付けディスプレイも近くなりがち
  • 肩が凝る(気がする)

しんどい気持ちが高まったので、バイト中に隣の席の社員さんに相談したらキーボードを膝に載せればいいのではとアドバイスを貰いました。
ただ、HHKBだけを膝の上で運用をするとトラックパッドを操作するときにいちいち腕を持ち上げて卓上のMacBookを触る必要があって面倒だなと。
ならばどちらも膝の上に載せてしまえばいいことに気づいたわけです。

MagicTrackPadを買う

そこでメルカリで中古のMagic TrackPadを購入しました。
送料込みで¥4500。
MagicTrackPad2が現行機種のため型落ちです。なのでそこそこ安くなってます。

さっそくHHKBとMagicTrackPadだけを膝の上に乗せて運用してみました。
が、膝の上で運用開始5秒で物理クリックができない事に気が付きます。
最初は故障を疑ったのですが、これはMagicTrackPadの構造によるものだとわかりました。
MagicTrackPadのクリックは裏面のゴム足が接地面に押下されることでクリックを検知していたためでした。
つまり、そのまま膝の上にのせても僕の足は机ほど固くないので機能しないわけです。
(DIOならできるかもしれない...)
タップでクリックするように設定しているのでクリックだけなら問題ないのですが、
ドラッグできないのでウィンドウの移動ができず不便でした。

ドッキングステーションを探す

そのまま載せてもだめだと気づいた僕はドッキングステーションくらい売ってるだろと思って探し始めます。
次の要件で探しました。

  • MacBookみたいなキーボードとMagicTrackPadが縦に並ぶ配置
  • HHKBが載っかる

しかし残念ながら僕のググり力では満たす商品は見つかりませんでした。
↓みたいな純正キーボードと組み合わせるタイプのものやMagicTrackPadだけ板にはめるものなら見つかりましたが...

無いならつくる

無いならば作ろうということで作ってみることに

工具/材料一覧

使った材料と工具の一覧です。

使った工具

  • ドライバ(キリ付き)
  • 彫刻刀

購入したもの

買ったけど使わなかったもの

作業工程

1.素材の選択

何ベースで作るか決めます。
最初は3Dプリンタでやろうと思ったのですが、予算の都合でやめました。
モデリングの知識が無いのは勉強すればいいとして、3Dプリントの外注は意外と高かったため断念。

比較的加工が容易な木材ベースでやることに。
木材の中でも軽い桐の集成材を使うことにしました。

2.設計図を書く

おもむろに設計図を書きます。
次のような設計図を書きました。
後述の加工サービスで提出する用なので寸法がわかればいいくらいの雑さで書きました。 なお、パーツCは作成しませんでした。
f:id:atofaer:20180730015840j:plain f:id:atofaer:20180730015848j:plain

3.材料の購入

新宿駅前の東急ハンズ に材料を買いに行きました。  

新宿の東急ハンズにした理由は素材の加工サービスをやっているため。 2で書いた設計図を持ち込んで材料を加工してもらいました。 この時に、購入したものは次のとおりです。

加工サービスと合わせて4000円ほどなり。 加工については閉店ぎりぎりに駆け込んだので受け取りは翌日になりましたとさ。

4.受け取って運用してみる

塗装や蝶番の取り付けはまだでしたが、受け取り後運用してみました。

僕はトラックパッドの設定で"タップでクリック"(1本指で軽く触るだけでクリック扱いになるやつ)を有効にしています。
ハンズで受け取った段階では下の写真の用にMagicTrackPadがむき出しの状態でした。
また、MagicTrackPadはMacBook内臓のトラックパッドより大きいです。 よって、キータイプ時に手のひらがあたってしまい誤クリックが発生してしまう状態でした。

塗装後 f:id:atofaer:20180730013924j:plain

5.塗装、ヤスリがけ(1)

塗装をしました。 材料はすべて100均です。
かるくやすりがけをしてからセリアのメープル色水性ニスを塗りました。


塗装が終わって一見完成に見えますがこの時はまだ誤クリックの問題は解決していませんでした。

5.ソフトコルクシートで高さの差を埋める(失敗)

そこで購入したソフトコルクシートを下の用に切り取りMagicTrackPadをはめる面に重ねることでMagicTrackPadがむき出しになるのを防ごうとしました。
ソフトコルクシートはハンズの加工サービスでは受け付けてもらえなかったため、自分で加工することに。
ハンズの店員さんから包丁で切ると良いというアドバイスをうけて包丁で加工をしましたが、素人なので断面がダサいのと、 ソフトコルクシートとの組み合わせが予想以上にダサいので断念しました。

6.木材で差を埋める

ソフトコルクシートがだめだったので、木材で差を埋めることにします。
もう一度ハンズへ行き同じ木材を購入。

そして加工サービスを使って5で使った図面どおりに切ってもらいました。 日曜日の15時前くらいに言って受け取りは17時でした。

7. 塗装、ヤスリがけ(2)

追加で購入した分のヤスリがけと塗装をします。
使用時に腕が当たる部分は入念にヤスリがけをしました。

f:id:atofaer:20180730014226j:plain  

8. 接着

木工用ボンドで接着。
上の木材は誤クリックを防止とパームレストの役割を果たしてくれます。 下の木材はMagicTrackPadのゴム足ボタンを押してくれると期待。

9. MagicTrackPadをはめてみる

接着剤が乾いたところで実際にMagicTrackPadをはめてみます。

はまらなかったです。神。
仕方がないので彫刻刀で削りました。
彫刻刀を使うのが小学校以来で涙が出てきました。

f:id:atofaer:20180730014327j:plain

10. 塗装、ヤスリがけ(3)

3度目の正直です。
削った部分のヤスリがけと塗装をします。
これは仕方がないのですが、塗りムラがでてしまいました。

11. 蝶番取付

蝶番の取り付け。
下穴を開けてからネジ止め×12箇所 キリで桐に穴あけ〜 とか一人でつぶやいてました。 ギャグも作業もあまりおもしろくなかったです。

写真は端材で練習した後の僕です。
f:id:atofaer:20180730014810j:plain

12. 完成

完成。

折り畳めます。

トラックパッドはもちろん外せます。 f:id:atofaer:20180730014715j:plain

7/23に完成してから1週間くらい運用してるのですが、なかなかいいです。
改良点を上げるならトラックパッドが下の辺が木材との摩擦で少し押しづらいので、
下の辺が木材と接触しないように枠を縦方向に長く取ったほうがよかったかも。

感想

中学校卒業以来の初めてのDIYだったのですが、楽しかったです。
持ち運べるように設計したものの荷物になるので、家用、ラボ用、バイト用が欲しい。

MacOS+ChromeでAmazonの領収書や楽天カードの利用明細を印刷すると白紙になってしまう時の対処方法

他に書いてる人がいないっぽいので、あんま技術してないけどメモ。

TL;DR

  • MacOS+ChromeAmazonの領収書や楽天カードの利用明細を印刷しようとすると文字が表示されず白紙になる(既知の)問題がある
    • 原因はOsakaフォントだった
    • MacOSのアプリ「Font Book」からOSAKAフォントを無効にすれば解決する

以下作業ログ

訳あって利用明細をpdfに印刷する(書き出す)機会があったのですが、Chromeでやると何故か白紙になってしまう事に気がついた。
同様の問題がAmazonの領収書で起きているようですが、解決方法をググっても別のブラウザを使うなどだったため原因を調べた。

  1. chromeのDevToolでいろいろためす。
  2. font-family怪しい?→コメントアウトしてみる
  3. 印刷時も表示された
  4. フォントを一つずつ確かめる
  5. OSAKAフォント指定時に白紙になることがわかった
  6. OSAKAフォントってなんぞと思って調べる
    1. classicalなOSX Classic Mac OSで使われていたフォントらしい
      1. Osaka (書体) - Wikipedia
  7. OSAKAフォント入れたらなおるのかな?
    1. 下記リンクを参考にFont Bookで調べる
      1. macOS Sierra に組み込まれているフォント - Apple サポート
  8. 既に入ってた...
  9. 試しに無効にしてみる
  10. 治った...

追記(2017.07.22)

GitHubにissueを漁っていたら似たような問題がGoogle Fontに報告されているのを発見した。
Some Google fonts print incorrectly on anisotropic RIPs · Issue #1370 · google/fonts · GitHub

Chromeの印刷時のレンダリングで一部文字が描画されない点が共通している

もくもく温泉開発合宿12 に参加してきました! ~Androidとyubikeyで遊ぶ3日間~

もくもく温泉開発合宿12に参加してきたのでメモ。

2泊3日で、スポンサーされる枠で参加させていただきました!
圧倒的感謝🙏

もくもく温泉 開発合宿 #12 - connpass

思い思いに作業をする会で僕はyubikeyとAndroidで遊んでいました。

やったこと

前回からの反省

  • 酒は夕方からにした
    • 前回は調子に乗って昼からガブガブ酒をキメてしまった故、進捗が無だった
  • オールしない
    • 寝ないと翌日に響くので3時には寝るようにした

作業した内容

Google I/O'18で発表された通り2018年のQ4にAndroid O以降のバージョンにFIDO2.0のAuthenticatorが実装される(予定)なので
先駆けてベースになるアプリを実装してみようと思って作業しました。
FIDO2.0用のAPIも充実してきたのでそれの調査からはじめました。 下記のドキュメントとFIDO 1.xにあたるFIDO U2Fのサンプルを参考にクライアントアプリの実装を進めました。

ドキュメント:
com.google.android.gms.fido.fido2  |  Google APIs for Android  |  Google Developers
AndroidのU2Fのサンプル:
GitHub - googlesamples/android-fido: Quickstart sample for the Android FIDO API

まだAndroid単体で動作するAuthenticatorは実装されていないようだったので、Authenticatorには4月に購入したYubicoのsecurity key by Yubicoを使用しました。

僕は下記の直販サイトから購入しました。
www.yubico.com なお、日本国内の正規代理店はソフト技研さんがやっているようです。

サーバーはYubicoのPython版公式サンプルを用いました。
github.com

次の流れで作業を行いました。

  1. Yubicoのサンプルを動かす
    1. exampleが動かなかったのでプルリクを出した。
      1. https://github.com/Yubico/python-fido2/pull/10
  2. AndroidのFIDO APIの調査
  3. 実装
  4. コネクタ経由で接続したsecurity keyからレスポンスが帰ってこない。(調査中)

上記の通り未完で至らない点が多いです。プルリク待ってます。
GitHub - prprhyt/AndroidFIDO2Sample

ハマったところ

あとは、仕様を読み進めていきたい。
そのうちGoogle様から公式サンプルでるだろうなぁ...

2018.08.13 補足
リリースノートを読んだらearly access partner がアクセスできるって書いてありました。
early access partnerでない人は正式版がリリースされるまで待ってたほうがいいってことですかね...
Release Notes  |  Google APIs for Android  |  Google Developers

当日の様子

向かってる最中

3連休初日だからかスーツケースを持った家族連れを多く見かけました。

JR湯河原駅からバスで理想郷へ。理想郷って名前なんですよ。
湯畑の次にネーミングが好き。

集合。
遅刻者多数だったので、最初に集まった3人で設営をしました。
エンジニアは遅刻しがち。

設営が終わり次第、ぼちぼち作業を開始。

その他の写真

f:id:atofaer:20180722173637j:plain お宿

一面のクソミドリ f:id:atofaer:20180722173657j:plain

夜の公園で会ったぬこ。かわいい。 f:id:atofaer:20180722173721j:plain

湯河原駅前。湯の街だけあってアピールがすごかった f:id:atofaer:20180722173758j:plain

3日目の月曜日に花火大会があったようです。混みそうだったので先に引き上げました。

f:id:atofaer:20180722174040j:plain

〜温泉とポン酒と猫と〜 もくもく温泉 開発合宿 #11にスポンサーされる枠で参加してきました!

どうも @prprhyt です。
1週間くらい経ちました。 4/28〜30にあったもくもく温泉開発合宿 #11 @土善旅館
スポンサーされる枠 で参加してきました!
ゴールドスポンサーの皆様ありがとうございます!

進捗

もくもく会なので圧倒的進捗...のはずが開始1時間で酒をいれてしまった。優勝。

  • やろうとしたこと

    • ARM用のdockerイメージをビルドするCI鯖を建てる
    • 4月に買ったFIDO2用ハードウェアトークンで遊ぶ
  • 進捗

    • ARM用のdockerイメージをビルドするCI鯖を建てる
      • QEMUベースでx86/x64上に建てた
      • ネイティブ(Raspberry Pi3 B)の10倍くらいの時間がかかったので諦めてラズパイ上に建てることにした
    • 4月に買ったFIDO2用ハードウェアトークンで遊ぶ
      • 行きのバスでFIDO2の仕様を3ページくらい読んだ
      • ハードウェアトークンを開封した
      • 試しにGoogleアカウントに紐づけてみた
      • デベロッパー登録をした。SDKは降ってこなかった...

こんな感じで進捗はぼちぼちでした。

ちなみにFIDO2トークンは4月にでたYubicoのやつです。

交流とか

ご飯の時間に美味しいご飯を食べながら他の学生やエンジニアの方と交流できてとても楽しかったです!
業種もフロント、インフラ、データサイエンスetc...といった具合にバラバラで異文化交流感もあってよきでした!

f:id:atofaer:20180506161738j:plain 2日目の夕食

写真

旅館の猫のはなちゃん

f:id:atofaer:20180506151433j:plain 日本酒

こんな感じで温泉+ポン酒+猫→優勝 でした!

学生ということあり超優遇していただきました! とても良い会だったので学生参加者がもっと増えればいいなと思ってます!