golangによるUbicの試作
Sapporo #golang Meetup
kn1kn1
自己紹介
● 現在
○ 札幌市内の受託メインの会社
● もともとは
○ 組込みセキュリティとか
○ エンタープライズ向けパッケージソフトとか
● github
○ https://github.com/kn1kn1
最近は・・
● Language-Context-Free
○ https://atom.io/packages/language-context-free
○ Atomエディタのpackage
○ Context Free
○ CIにwercker + dockerを使用
○ 詳しくは別の機会に・・
go言語
● Kato Kazuyoshi さん
○ Docker を読む
○ http://2013.8-p.info/japanese/06-22-docker.html
● @t-wada さん
○ 「2014年プログラミング大予測」に参加しました
○ http://t-wada.hatenablog.jp/entry/programming-
forecast-2014
● @omo さん
○ Resolutions 2014 - Unparalyze Passion
○ http://flakiness.es/2014/01/02/resolutions-2014.html
○ 個人的にはこのエントリーがきっかけ
go-sclang
● https://github.com/kn1kn1/go-sclang
● goからSuperCollider(音響合成用プログラミング言語)を起
動するためのライブラリ
● sc4nodeとして公開していたnode.jsのライブラリを移植
Ubic
● http://www.eurekalert.org/pub_releases/2014-03/su-
isf030614.php
● Google Glassを使用した認証
● 所属する会社の研究開発として調査
● 手段の目的化はもちろん否めない
● 実現方式は論文として公開されていたので、それを参照し
て実装
○ http://arxiv-web3.library.cornell.edu/pdf/1403.
1343v3.pdf
○ http://arxiv-web3.library.cornell.edu/pdf/1403.
1343v1.pdf
● goで実装したのはサーバ側
● 仕様
○ サーバ(go)
■ 認証コード(6桁の数字)を生成
■ 認証コードを暗号化(RSA OAEP)
■ 署名生成(RSA-PSS)
■ QRコード作成
○ クライアント(Google Glass - Android)
■ QRコード読取り
■ 署名検証(RSA-PSS)
■ 認証コード復号(RSA OAEP)
● 実装
○ フレームワークは無し(net/http)
○ QRコード生成は、ZXing("zebra crossing")のgenerator
を使用
■ http://zxing.appspot.com/generator
○ 作ったものはHerokuにデプロイ
■ https://peaceful-forest-7529.herokuapp.com/
○ Dockerfileも作りましたが今回は出番がなかったです
○ go側はあまり問題なく実装完了
● Androidでの問題のほうが多かった
○ RSA-PSS署名に対応していない
■ RSA PKCS#1 v1.5に変更したり。。
→ 最終的には、Android側にSpongy Castle (https:
//rtyley.github.io/spongycastle/)を入れてPSSに対応
○ QRコードの密度が高い(画像が小さくて文字数が多い)
と読み取ってくれない
■ 鍵長を短くしたり。。
→ 最終的には、表示する画像を大きくして対応
● goの暗号について
○ 今回使用した限りでは好印象
○ 他には、crypto/subtleとか
■ http://golang.org/pkg/crypto/subtle/
○ Practical Cryptography With Go
■ https://leanpub.com/gocrypto
■ 翻訳予定
ありがとうございました!

Golangによるubicの試作