忘れん坊とバックアップコード管理
Webサービスのバックアップコードをきちんと印刷して棚の中に保管しろって言われますよね。それ以外でも、手元に秘密の文章を隠さなきゃいけない事ってありますよね?
どうしますか?なお、ユーザーは忘れん坊であるとします。
汚部屋の棚の中深くにバックアップコードを印刷した紙を入れてても絶対になくすと思うんですよ。それに、万一…万一よ?家に入った泥棒が棚を漁って「あ、Githubのバックアップコード見ぃつけた♪」なんてやったらどうするんだ!僕のクソアプリ群のライセンスを泥棒の名前に書きかえられちまうぞ!
ではどうするか?
目指す形
手元に暗号化されたQRコードを常に持ちあるきたくなります。風呂に入る時以外はいつも。あとは「ヘソクリスペース」に入れてもいい。1
- 表には暗号化されたデータ
- 裏にはそれを解凍するためのパラメタとスクリプトの平文のQRコード
- 脳内に複雑だけれど1つだけ覚えられるパスワード
必要なソフト
僕はlinuxユーザーなので下記になりますが、別にwindowsでもWSLが動けばいいと思うよ。
- base64
- openssl
- argon2
- qrencode
実装
あー、saltとかiterは適当です。
encode.sh
#!/bin/sh
# Works on unix/linux
# requires argon2 base64 qrencode openssl
# Example:
# ./encode e [pw] < data.toml
# ./encode d [pw] < myqr.txt
salt=hogehuga
txt=myqr.txt
qr=myqr.png
script=script.png
mem=16
length=32
a_iter=3
cipher=aes-256-cbc
c_iter=872935
pw=$(echo $2 | argon2 $salt -m $mem -t $a_iter -l $length -e)
opt="-$cipher -k $pw -iter $c_iter"
if [ $1 = 'e' ]; then
qrencode -l Q -o $script < $0
openssl enc $opt | base64 | tee $txt | qrencode -l Q -o $qr
else
base64 -d | openssl enc -d $opt
fi
使いかた
QRコードを作る時
encode e [pw] < data.toml
QRコードを解凍する時
encode d [pw] < myqr.txt
防ぎ辛いもの
- QRコードソフトに仕込まれたバックドア
- 泥棒じゃなくて強盗が来てパスワードを拷問で聞き出された場合
- 漏れが認知症を発症して解除できなくなる場合
- この記事を見てマサカリを投げて僕を粉砕する人
こんなのバラして泥棒に狙われない?
僕のGithubのクソアプリ群のバックアップコードを欲しがる泥棒がいるわけないじゃん。
糸冬
-
不要になった3.5インチハードディスクの中、PS5の筐体のスキマ、ノーパソの電池の裏等 ↩