2018年03月25日

中国製据え置きQRコードスキャナを買った。

amazonでレビューを書いたが、せっかくなのでブログにも乗せる。
動画を見てほしい。9千円とは思えないすごい性能だ。

商品ページはこちら(アフェリエイトなし)
製造元サイト: Symcode MJ7580 2D Image Desktop Scanner




今まで据え置き型のQRコードスキャナーというと、日本製で十万円近くする高価なものしかなく、個人で扱うには手出しをしにくかったが、
昨今の中国のQRコード支払い文化の影響か、中国製のQRコードスキャナが安価に出回ってきている。本商品も同様で、購入時には9千円程度で入手できた。

さて、性能はと言うと動画に示す通りだが、「日本の空港などでのQRコードの読み取りにくさ」を体験してきた人にとっては驚きなほど読み取り速度も精度も良い。動画の通り、大きめのQRコード+携帯端末ならば(輝度はある程度上げておく必要があるが)かなり距離が離れていても読み取る。かざす必要すらない。複雑なQRコードの場合は、かざすほど近くに置かなければならないが、それでもすんなり読み取りが行われる。

それでは性能以外の点について。
まず、このバーコードスキャナ、ところどころ(説明書にも)ワイヤレスと表記があるが、ワイヤレスではない(USB2.0である)。大きさもそこそこ大きいのでハンドヘルドでもない。これは仕様を読んでおけばわかると思うので問題ではないだろう。

通信方式は、USBキーボードモードと、USBシリアルモードがあり、説明書に記載のバーコードで切り替える。音の有無や大きさもバーコードで切り替える。(注意: 音のオンオフは設定用バーコードの読み取り時は反映されないが、実際のコードを読み取ると反映されている)

読み取り用ライトは近くに物や手をかざすと自動で点灯し、動きがないと自動で消灯するようになっている。

また、本体上面のボタンにより、通常読み取りモード(青色)と、読み取りづらい場合用の高速(高精度?)読み取りモード(緑色が切り替わる。
この2つのモードでは照明ライトの点灯パターンが変わるほか、読み取るバーコードの種別も変化するようである。
通常読み取りモードでは、物が近づくとライトが点灯するが、スマートフォン画面などの輝度の高いものが近づくと消灯して読み取ろうとする。
一方、高速(高精度?)読み取りモードでは、読み取り中ライトは点灯しっぱなしになり、また1次元バーコードのみを読み取るようになっているようである。読み取りにくい印刷物向けと説明書には記載されている。

日本語の説明書は機械翻訳らしい怪しい日本語だが、技術的な説明書を読み慣れていれば特に問題なく読み解ける。同梱されている薄っぺらい英語併記の説明書はむしろ役に立たないので注意(追記:ただし英語版の方にしか乗っていない操作説明や設定用バーコードもある)。

初期設定は、USBキーボードモード、音量大・英語キーボード・自動改行なしなので、少なくとも最初は説明書のコードを読み取って日本語キーボード設定にしないと記号等がおかしくなるので注意(数字だけならおそらく関係ない)
読み取り感度が良すぎる上に、説明書は1ページに何個もバーコードが乗っているため、設定の際は別途コピーをとるか、手でうまく隠して読み取らせる必要があることに注意。

なお、USBキーボードモードでは日本語QRコードには非対応であるので注意。(英字の羅列になってしまう)
USBシリアルモードでは、SJIS、UTF-8共に問題なくデコードできた。(115200bps、8bit、1bit、ノンパリティで動作。通信モードが異なると読み取り動作を行わないので注意。)

また、RS232Cモードも存在するが、付属のケーブルはUSBのみなので注意。(RS232Cの信号がRJ-45端子に出てるのかもしれない)

設定用バーコードはこちら
http://gpsnmeajp.sblo.jp/article/182801384.html
posted by gpsnmeajp at 17:08| Comment(6) | TrackBack(0) | 日記

2017年11月29日

YubikeyのU2F認証の仕組み(登録件数が無限なしくみ)

Yubikeyは、セキュアエレメント搭載のセキュリティーキーですが、
そういえばFIDOのU2Fには何件対応しているのだろう、と思いました。

FIDOのU2Fは、認証デバイスが鍵ペアを生成して保管し、
それを認証デバイス側と、サイト側で相互に突き合わせて強固な認証を行います。

Yubikey内のストレージは有限かつ少量で、それは各機能の登録データ数の制限等を見ると明らかです。
しかしながら、U2F認証を要求するサイトは数十、数百と増えるでしょう。
そうした時に、上限に達したらどうなるのか?

これ以上登録できませんとなるのか?削除の仕組みがある?それともまさか古い順に削除される?
調べてみると、公式サイトに回答がありました。

how many services can the u2f-certified YubiKeys be associated with?
https://www.yubico.com/support/knowledge-base/categories/articles/many-services-can-u2f-certified-yubikeys-associated/

「利用できるサービスの数の制限はありません。
 鍵ペアは生成されますが、デバイスには保存されず、登録サービスに保存されます。
 そのため実質的に無限に登録できます。」

最初これを見たとき、「え?」となりました。
・鍵ペアをサービスに保存したら意味なくない?
・Yubikeyからどうやって認証してるんだ?
・そもそもFIDOの仕様に、サイト側に保存する仕組みなんてあったっけ?

開発者向けサイトに答えがありました。
なかなかおもしろい仕組みを使って実装されています。

Key generation - Yubico Developers
https://developers.yubico.com/U2F/Protocol_details/Key_generation.html

ただしこれも理解に時間がかかったので、自分の理解の結果を以下に示します。
誤りが含まれているかもしれません。上記のURLの内容そのままといえばそのままですので、ご確認ください。

前提
・キーデバイスは、AppID(ドメイン名含む)でサイトを識別する。(これがフィッシング対策になる)
・同じサイトで、違うアカウントの認証情報が必要な場合があり、AppIDでは識別できない。
 そのために鍵の識別はKeyHandleを用いて行う。このKeyHandleは、デバイスが生成してサイトに送る。
・しかし、そうしたところで、セキュアなストレージが大量に必要になる。
 FIDOは鍵の格納方法を指定していないため、Yubikeyでは違ったアプローチをしている。

登録フェーズ
1. Webサービスは、AppID、Challenge(リプレイ攻撃対策乱数)とともに登録リクエストをする
2. Yubikey内で、乱数からNonceを生成する。
3. Yubikey内で、AppIDとNonceをデバイス内部鍵(固定)で署名ハッシュを取り、
 これを秘密鍵とする。
4. Yubikey内で、秘密鍵から公開鍵を生成する。
5. Yubikey内で、AppIDと秘密鍵、デバイス内部鍵(固定)で署名ハッシュを取り、
 秘密鍵ハッシュ(MAC)を生成する。
6. Yubikey内で、NonceとMACの一部を結合し、KeyHandleとする。
7. Yubikey内で、公開鍵・KeyHandle・Challenge・AppIDを秘密鍵で署名し、サービスに返す。
8. 内部カウンタを加算する。

認証フェーズ
1. Webサービスは、AppIDとKeyHandle、Challenge(リプレイ攻撃対策乱数)を渡して認証要求する
2. Yubikey内で、KeyHandleから登録時のNonceと秘密鍵MACを取り出す
3. Yubikey内で、AppIDとNonceをデバイス内部鍵(固定)で署名ハッシュを取り、これを秘密鍵とする。
4. Yubikey内で、秘密鍵から公開鍵を生成する。
5. Yubikey内で、AppIDと秘密鍵、デバイス内部鍵(固定)で署名ハッシュを取り、
 秘密鍵MACを生成する。これを、KeyHandleから取り出したMACと比較し、正しいか検証する。
 (正しくなければ、これはこのYubikeyのものではないか、あるいは改変されている)
6. Yubikey内で、KeyHandle・Challenge・AppIDを署名し、サービスに返す。
7. 内部カウンタを加算する。

結論として、Yubikey内には、秘密鍵も公開鍵もKeyHandleも保存されない。
デバイス内部鍵は、Yubikeyに出荷時に書き込まれているものであり、取り出しも変更もできない。
内部的に変化するのはカウンタだけである。

秘密鍵は、NonceとAppIDと、デバイス内鍵の3つから「毎回」生成されている。
Nonceは、登録時は乱数だが、認証時は登録時に渡したKeyHandleがサービスから帰ってくる。
KeyHandleは、Nonceと秘密鍵MACを結合したものであり、そのためこれで秘密鍵生成データが揃うことになる。

このままだと、全く登録していないサービスなどから要求されても、
無効な署名を渡してしまうが、それはKeyHandleに含まれている秘密鍵MACを使うことで
KeyHandleが自分が生成したものかをチェックできる仕組みになっている。

よくできている。
posted by gpsnmeajp at 14:08| Comment(0) | TrackBack(0) | 日記

2017年11月27日

Yubikeyが届きました&雑感

Yubikeyが届きました。
不安になるくらいシンプルな梱包と定評がありましたが、本当にその通りでした。
A0.jpg

ネックストラップを付けてこんな感じ。
A2.jpg

実際使ってみての感想ですが、
・タッチの仕方
Slot1はチョイ押し、Slot2は押しっぱなしでちょうどいい
ボタンじゃなくて静電タッチだから押した感覚なくてちょっと困惑する
(ホームボタンのように馬鹿になりにくいので安心感はある。)

・Static Password
試しに使ってみたが、長いユーザー名と長いパスワードを全部入れるには
ちょっと足りない。TabとEnter含めて38文字までというのは微妙にきつい。
(パスワードのみなら何の問題もなかった)
※公式的には、パスワードまるごと入れるのはおすすめされていません。
 あくまで試しにやってみた形です。

セキュリティ意識低い人たちに対してなら、ありかもしれない

あと文字数制限オーバーの際、書き込み失敗メッセージが
「ロックされてるかも」なのは心臓に悪いので止めて欲しい。

・ネックストラップ
首から下げるのは、無くしにくいが、使いにくい。
NFCならともかく、USBだとね...
いい方法無いだろうか?

今回買ったもの

[正規販売代理店品]YubiKey 4 Yubico
https://www.amazon.co.jp/dp/B018Y1Q71M/ref=cm_sw_r_tw_dp_x_OJahAbH30RB3K

HAKUBA ネックストラップ PixGEAR コネクトストラップ ブラック コンパクト用 ライン/ボーダー ブラック KST-49BK ハクバ
普通よくある、アクセサリー部の取り外し部分がないので、耐久性が高そうである。
また、ストラップ自体に2箇所ある取り外し部を付け替えると、ハンドストラップにもなる。
https://www.amazon.co.jp/dp/B008JIAOU6/ref=cm_sw_r_tw_dp_x_ULahAb6YYS7HQ
posted by gpsnmeajp at 21:50| Comment(0) | TrackBack(0) | 日記

2017年11月26日

ブログデザインの調整

次の記事を参照、と言って申し訳ないですがこの記事ではないです。
ブログのフォントや大きさが、なんというか昔ながらと言うか、すごく見づらい小ささだったので、
見やすい大きさとフォントに変更しました。

CSSの!important;指定とか初めて使いました
posted by gpsnmeajp at 20:06| Comment(0) | TrackBack(0) | 日記

2017年10月18日

PCの起動がクッソ重い問題の対処

最近、というか、クリーンインストール後から、PCの起動が遅くなった。
Core i7(4710HQ)と、メモリ16GBのマシンなのに異様に遅い。

何より困るのが、単なる起動ではなく、休止状態からの復旧時も恐ろしいほど重いということ。
タスクマネージャを見ると、CPUではなく、ディスクアクセスがフルになっているのがわかった。
HDDマシンなので、SSDにすれば解決するかもしれないが、それもなんとも言えない。

幾つか手を打つとかなり改善されたので、その手順をメモしておく。

0. タスクマネージャより、不要なスタートアップを片っ端から無効化
1. 電源オプションより「次の時間が経過後ハードディスクの電源を切る」が「1分」!?になっていたので、「60分」に変更。
2. 同じく「PCI Express」の「リンク状態の電源管理」を「最大限の省電力」から「適切な省電力」に
3. 同じく「プロセッサの電源管理」を「5%」から「20%」に
4. sfc /scannow を実行
5. dism /online /cleanup-image /restorehealth を実行
6. chkdsk /f /r c: を実行

ここまでやって、かなり改善されたが、タスクマネージャの表示が怪しかったので追加で以下を実行
7. IPv6を無効化
8. SuperFetchサービスを無効化(こいつが超絶ディスクアクセスを食う)
9. 仮想メモリの設定を8192MB固定に

これで、快適に使用できるようになった。
posted by gpsnmeajp at 19:46| Comment(0) | TrackBack(0) | 日記

2017年10月01日

テスト投稿

これはテスト投稿です。
posted by gpsnmeajp at 16:16| Comment(0) | 日記