2020-06-28

花札(こいこい)

... えー
<div style="overflow: scroll;">
(svgを貼り付ける)
</div>
でうまくいきます。

花札はローカルルールが多いので、ルールを確認する。ルールを確認する。裏向きの札を1枚ずつめくり、月の早いほうが初回の親となります。親を決める親が"子の手札(裏向け)→場(表向け)→親の手札(裏向け)"の順に2枚ずつ配っていき、各手札8枚、場に8枚(手八の場八)の状態にします。残りは山札として裏を向けて積んでおきます札を配る手札の役(手役)が成立?yesくっつき(同じ月が2枚ずつ4組ある)手四(同じ月が4枚ある)6点をもらって、次のプレイに移る手札から1枚取り出して場に出す同じ札種(同じ月、植物)の札が場札にある?yesno2枚は自分が獲得した札となり、自分の脇に置く場札に加える山札をめくって場に出す同じ札種(同じ月、植物)の札が場札にある?yesno2枚は自分が獲得した札となり、自分の脇に置く場札に加える手札がある?no役が成立した?noコイコイを宣言するyes得点を計算する12回戦した?no親を決め直す合計得点を計算する

2020-05-25

Yubikey5を使ってみた。

はじめに

「テレワーク」と「リモートワーク」だの急に言われ始めた昨今、社内の機密情報を
どのように安全にとどけるのか、重要になると考えた。
たとえば、給与明細は、どのように送り、どのように受け取ればよいだろうか。
重要な書類はどのようにチェックをすればよいだろうか?

もちろんお金周りも文章もすでに電子化対応済みだ。
だがこれまでは、最終的には紙と捺印がつかわれてきた。システムの構築は間に合わない。
突如として「テレワーク」時代は始まってしまった。既存の技術で なんとかできないだろうか。

そんなとき、YubiKeyなる、デバイスがあることを初めて知った。 YubiKeyは救世主になるか?調べてみた。

結論

救世主にはならない。YubiKeyはアーリアダプター的デバイスではないだろうか。
普及にはまだまだかかるだろうし、現時点で一般層に使ってもらうのは かなり難しいという感触を得た。
... せっかく調べたので、Yubikeyの使い方(一部)を記載していく。
大雑把にしか記載はしていないが、興味のある方は参考にしてほしい。

Yubikeyについて

Yubikeyは歴史あるデバイスのようで、「Yubikey5」というシリーズ名になっている。 2020年で購入できるのも「Yubikey5」。
コネクタの形状や出来ることが、ラインナップで分かれている。
https://yubikey.yubion.com/yubikey_lineup.html

さらに、ファームのバージョンで出来ることが増えていくのだが、セキュリティ対策のため、ファームのアップデートははできない。
https://support.yubico.com/support/solutions/articles/15000006434-upgrading-yubikey-firmware

購入するときはラインナップをしっかり確認し、 使用するときはファームバージョンを念のため確認しよう。

Yubikey5-NFCが使える対象者

  • gpg、ssh-keygen、opensslが使える人。
  • パッケージマネージャが使える人
    (Homebrew、Chocolatey、apt、yum, pacman ... )
  • 技術の探求者
YubiKeyを使いこなすには、HPからダウンロードしてもよいのだけど、それなりにパッケージが必要になるので、 パッケージマネージャを使うほうがいいだろう。
公式ツールのyubikey-managerなどもパッケージマネージャでインストール可能の他、 openscなどといった聞き慣れないツールもパッケージマネージャからインストール出来る。

設定中や検証中、Yubikeyからキーが取れないときもあるかもしれない。(キーとして認識しない時がある)そのときはYubiKeyを何度か挿し直してみたり、次のどちらかのコマンドを実行しgpg-agentの再起動をしてみよう。
$ gpg-connect-agent /bye
$ gpgconf --kill gpg-agnet

YubiKey5-NFCでできること。(一例です)

  • OpenPGPを使うとき、サイン、暗号解除するとき(秘密鍵を使用するとき)にデバイスを挿して、PINを入力してつかう。
  • SSH接続するときに、デバイスを挿して、PINを入力して使う。
  • (その他、「ログインするとき、デバイスを挿し、PINを入力してログインする」、OTP、FIDO2など機能豊富らしい)

YubiKey5-NFC + OpenPGP

  • 最近のファームからECC暗号が使えるようになった。
  • デバイスの設定にはひたすらgpgコマンドを使う。
    --card-statusや--card-editオプションが何かと思ったらこのためだった。
    このようなデバイスは「smartcard」と言うらしい。
  • イメージ的には、デバイスに秘密鍵を登録し、秘密鍵をつかうアクションをするときに、デバイスを挿し、PINを入力する。
  • PINには、PINとPUKの2種類あるが、PINは普通に使用するときに入力する。PUKは秘密鍵をデバイスに登録するときに使用する。
  • macの場合は、PINを入力する画面が文字化けするかもしれない。その時はpinentry-ttyとかに変えたほうがいいかもしれない。
  • デバイスには、秘密プライマリキーを入れることも出来るし、秘密サブキーを入れることも出来る。両方入れることも可能。つまりプライマリキー用にも出来るし、サブキー用にもできる。
  • 他のデバイスで使えるようにするには以下のようにする。
  1. デバイスを設定したPCでパブリックキーをエクスポートする。
  2. 他のPCでパブリックキーをインポートする。
  3. $ gpg --card-status
    する。
  4. gpg -Kで認識できるようになる。
次の状態が、ローカル上にマスター秘密鍵が無い状態。
sec#
次の状態が、ローカル上にサブキー秘密鍵が無い状態。
ssb>

パブリックキーがなくなるとデバイスとの同期ができなくなってしまうようだ。道理で「パブリックキーを鍵サーバーに登録する」という手順説明の中にあるわけだ。

YubiKey5-NFC + SSH

gpgとsshを連携させることもできるが、PIVのスロットを使うことも出来る。 使うスロットは9aのようだ。 openscが必要になる。
  • PublicKeyを取り出すには、Generateしたあと、
    $ pkcs15-tool --read-ssh-key 1
    または、Exportしたファイルに対して
    $ openssl x509 -in foo.pem -noout -pubkey | ssh-keygen -i -m pkcs8 -f /dev/stdin
    することで変換できる。
  • クライアント側の使用方法は複雑だ。
    $ ssh -I /usr/local/lib/opensc-pkcs11.so foo@example.com
    Windowsだったら、「「putty-cac」に含まれている「Pageant」」と「「putty」「teraterm」」「MinGWやCygwinだったらさらにssh-pageantが必要」という恐ろしいレベルだ。ssh-pageantを使うときにはこのような感じでキーの登録が必要だ。(ssh-agentの知識もいるということか...)
    $ eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")
    $ ssh-add -L

おわりに

一般的に普及するのは難しいという感触だが、みんなが使ってくれないとこのようなデバイスは普及しないと思う。gpgとsshのことしか記載していないが、参考になれば幸いだ。