0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

紙+QRコード+暗号化でバックアップコード等のデータを保管する

0
Last updated at Posted at 2026-01-28

忘れん坊とバックアップコード管理

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のクソアプリ群のバックアップコードを欲しがる泥棒がいるわけないじゃん。
糸冬

  1. 不要になった3.5インチハードディスクの中、PS5の筐体のスキマ、ノーパソの電池の裏等

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?