エアギャップコンピュータを準備するにあたって、時刻合わせは面倒な課題です。 特に GPG などで証明書を発行する場合、発行する日の情報は必要不可欠だからです。
ただ、普通のコンピュータは NTP などでインターネットから時刻情報を取得できますが、 Raspberry Pi をオフラインで使用すると、 RTC モジュールが搭載されていないため、 毎回時刻を手動で合わせる必要があります。
そこで、 I2C 接続で 1000円程度で買うことができる RTC モジュールを接続してみました。
Raspbian での設定は Install DS3231 Real Time Clock - Latest Info に書いてある通りです。 ArchLinux だと /boot/config.txt の1行だけでいけたかもしれません。明日もう一度確認してみます。
Developers Summit、略してデブサミですが、今まで名前は聞いたことはあったものの参加したことはなかったので、 今年こそはと申し込んでみました。
Developers Summit 2020 のタイムテーブル を見ると、 ほとんどのセッションが満員かほぼ満員になっているようです。 あまりこのような大規模なイベントに参加したことがないので驚きました。
ただ、申し込み締め切りの1週間前(イベントの2週間前)に申し込んだときには、セッションのいくつかが調整中になっていたのが 気になってしまいました。 もちろん、イベントの主催側に回ったこともあるので苦労はよく分かっているつもりですが、ここまで大規模なイベントに なっても同じような悩みというか、直前まで準備に忙しいような感じになるのは仕方ないのかな……という気持ちになりました。
イベントの開催も来週に迫りましたし、主催や出展のある方は頑張ってください! 初参加なので楽しみにしています。
cat コマンドなどでターミナルにバイナリ(制御文字)を吐いてしまうと、 Enter キーを押しても sudo などのパスワード入力を確定できなくなることがあります。 (前使っていた xterm ではコマンドの入力もできなくなっていた気がしますが、 rxvt-unicode ではコマンドは使えるようです。)
Pressing enter produces ^M instead of a newline - Ask Ubuntu に書いてある通りですが、 stty sane (全てデフォルト値に戻す) か stty icrnl (CR を new line として扱う) を実行すれば直るようです。
これで遠慮なくバイナリを吐かせることができますね。 と思ったのですが、 Can “cat-ing” a file be a potential security risk? などを見るとセキュリティ上あまり好ましくないようですね……
新しいGPGキーを作成しました で GPG キーを作成しましたが、 Yubikey も活用できるように Yubikey にも GPG キーを登録してみました。
マスターキーの入っている環境で新しくサブキーを作成します。 ykman piv や gpg コマンドで試した感じでは、手元の Yubikey には RSA 以外の ECDSA/EdDSA のキーを 登録することができませんでした。 (Yubikey5 NFC, Firmware 5.1.2 なのでできると思ったのですが……) そのため、 RSA 4096bit のサブキーを3種類作成します。
そして、それぞれ keytocard を実行して、 Yubikey に秘密鍵を移動します。 移動すると ssb> と表示され、 Card serial No. が表示されます(このあたりがどう保存されているか気になっています)。
あとは PIN を適宜変更するのですが、 gpg --edit-card と ykman piv で PIN の管理が別なのかはよく分かっていません。 (登録してみた感じだと別で管理されているようですが、きちんと調べられていません) gpg の PIN, Admin PIN, ykman piv の PIN, PUK に加え、 Management Key というものがありますが、 これは ykman piv change-management-key -p を実行して PIN を入力することで、 PIN から生成して PIN で認証するように することができます。...
Yubikey もあることですし、そろそろ GPG や SSH の秘密鍵を統一しようと思います。 GPGで自分用の秘密鍵を1つに統一する を参考に進めていきました。
上記記事ではエアギャップコンピュータが推奨されていますが、今回はマスターキーのバックアップの 利便性のため、ネットワークに接続した状態で行いました。 QUBES OS はよさそうですね。 Fedora ベースなのが 少し気になるといえばそうですが……(ArchLinux に慣れているため)。
さて、普段使いの環境にはマスターキーの秘密鍵は置いておきたくないので、 マスターキーの生成は別の環境で行います。 バックアップの利便性なども考えて、 LUKS で暗号化したパーティションをファイルに保存します。
dd if=/dev/zero of=encrypted_partition.img bs=1M count=64 sudo cryptsetup luksFormat -i 5000 --use-random encrypted_partition.img # type 'YES' and set password sudo cryptsetup luksOpen encrypted_partition.img gpg_container sudo mkfs.ext4 /dev/mapper/gpg_container sudo mount /dev/mapper/gpg_container /mnt sudo mkdir /mnt/.gnupg sudo chown [current_user] /mnt/.gnupg GPG の操作は今作成した /mnt/.gnupg を GNUPGHOME に設定して行います。 必要なだけマスターキーとサブキーを作成していきます。
GNUPGHOME=/mnt/.gnupg gpg --full-gen-key 作成が終わったら、サブキーだけをエクスポートします。キーの fingerprint は gpg -K で確認できます。...
タイトルの通りですが…… RaspberryPi 3B+ で cryptsetup benchmark を実行してみました。
$ cryptsetup benchmark # Tests are approximate using memory only (no storage IO). PBKDF2-sha1 206738 iterations per second for 256-bit key PBKDF2-sha256 316599 iterations per second for 256-bit key PBKDF2-sha512 200415 iterations per second for 256-bit key PBKDF2-ripemd160 174529 iterations per second for 256-bit key PBKDF2-whirlpool 29153 iterations per second for 256-bit key argon2i 4 iterations, 172077 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) argon2id 4 iterations, 177813 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) # Algorithm | Key | Encryption | Decryption aes-cbc 128b 28....
Yubikey を持っていますが、現在はあまり活用できていません。 その理由の1つに、普段使っている ed25519 なキーに Yubikey が対応していないことがあります。
今日ふとそのことについてもう一度調べていたら、 What’s New in YubiKey Firmware 5.2.3 というブログ記事を見つけました。 知らない間に ed25519 にも対応していたようです。 とはいえ、そのためだけに Yubikey を新調するのも気が進まないので、しばらくの間は NIST P-384 や RSA-4096 を使おうと思います。
エアギャップコンピュータを使って GPG の primary key の管理などをしようと思いつつなかなかできていないのですが、 キーのバックアップのことなどを考えて悩んでいます。紙に印刷する/光学メディアに書き込むなどの方法が一般的(?)な ようですが、紙や光学メディアも耐久性に不安があります。 金属板にレーザーで QR コードを印刷できれば……とは思いますが、さすがにコストがかかりすぎるので……
mixi の新しいアプリの 6gram というアプリを使ってみました。 サービス内容はおおまかには kyash と似ていると言えますが、 グループでお金を出し合うことができる、インスタントカードを30枚まで発行できる、 発行カードがJCBプリペイドである、といった違いがあります。
リアルカードは後日受付開始ということなので、現在はバーチャルカードでのオンライン決済と QUICPay を使用した実店舗での決済が可能なようです。 QUICPay の決済速度は、一度試した感じだと kyash の高速化後のイメージが近いかなと思いました。
アカウント登録時に発行されるバーチャルカードにはグループのカードを紐付けることができ、 紐付けると QUICPay で決済が可能になります。 任意に発行できるインスタントカードは紐付けることはできず、オンライン決済専用なようです。 考えてみれば QUICPay での支払い用にインスタントカードを発行する必要はありませんが…… 食費など Wallet を分ける用途で使えると思っていたので少し期待外れではありました。
また、インスタントカードやグループカードには100円単位でお金を出し入れすることが できます。グループの説明に「自由に出し入れ」「割り勘不要」とあるように、 グループメンバー全員が自発的に入金して大まかに出し合うような仲のいいメンバーでの 使用がターゲットなように感じます。
2月に入る前に iPhone 版もリリースされたので、気軽に勧められるようになりました。 公式の招待も割と早く届くようなので、気軽に招待リクエストを送ってみたらよさそうです。
昨日に続いて Gridsome のブログのビルドも自動化しました。
やっていることはほとんど Gatsby の場合と同じなので、設定ファイルを追加するだけです。
Jekyll のブログのビルドも一緒にやってしまおうと思っていたのですが、Jekyll のサブディレクトリの扱いが Gatsby/Gridsome と違っていたので一旦後回しにしようと思います。 現状ほぼ画像等使っていないので、Jekyll の想定するディレクトリ構造にしてしまってもいいのですが、 現状の方が好ましいような気がするので、方法を考えてみようと思っています。
先日はブログのコンテンツと Gatsby のテンプレートを分離しましたが、 コンテンツを push すると CI/CD で自動でビルド・デプロイまでできるようにしました。
ビルド環境は Gatsby の方のレポジトリですが、 push でトリガーされるのはコンテンツのレポジトリなため、 GitHub のフォーラム を参考に、コンテンツのレポジトリに push されたときに Gatsby のレポジトリのビルドをトリガーするようにしました。
この調子で Gridsome と Jekyll もビルド・デプロイを自動化して、デザインを統一しようと思います。 3つもデプロイする必要はないですが……。