ショートカットでは色んなことができますからまぁ人に見られたくない…とかプライバシーに関わるレシピも作りたくなるでしょう.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS14.1
スポンサーリンク
パスワードの仕組みを段階的に考察
今回は考察が主なので特にレシピを配布とかはありません.
基本的な考え方
まずはパスワード処理の基本からです.
まずはパスワードとしたい文字列を与えます.
「入力を要求」アクションでテキストを入力させ, それが最初のテキストと一致するなら通す, 一致しないならその旨を表示して初めに戻る, これが基本的な仕組みです.
実際に行いたいアクションは一致した場合の中に書き込めばいいわけです.
誤っていれば「一致しません」…と表示され,
一致すれば通ります.
しかしこれではレシピを見ればパスワードがバレバレです.
応用1:「ファイル」アプリを使う
そこでパスワードとなる文字列を「ファイル」アプリに置き, これを読み込んで比較します.
パスワードとなる文字列を, 「ファイル」アプリの"Shortcuts"フォルダ内の適当な場所にテキストファイルとして保存しておきます.
画像のようにより深くフォルダを作り, その中に入れれば多少安全性が向上します.
メインのレシピは最初が「テキスト」アクションに直書きであったのを「ファイルを取得」アクションに置き換えるだけです.
パスワードを盗み見しようとする人は「ファイル」アプリを開いてパスワードが書かれているテキストファイルを見る分の手間が生じるわけです.
応用2:パスワードを暗号化風にする
しかしこれでも満足できない人がいるかもしれません, ファイルアプリから所定のテキストファイルを見られたらそれまでですからね.
そこで着信音などで話題になったBase64エンコードを活用してパスワードの文字列を暗号化っぽくしてみます.
新しくレシピを新規作成し, まずパスワードとなる文字列を「テキスト」アクションに入れておきます.
これを変数で置きます(passという名の変数は結局使っていないので無かったことにしてください).
そしてこのパスワードの文字列をエンコードしてクリップボードにコピーします.
折角なのでコードのプレビューと同じく文字数も見てみます.
なんとなく「予感」していたので, エンコードは指定回数繰り返しています.
また文字数が多すぎると正しくデコードできないことを確認しているため, 1万文字を超えたときに1度エンコードして終了するようになっています.
そして変換したBase64コードを同じ回数エンコードすると元に戻るはずです.
まずエンコード1回の場合.
エンコードテキストは36文字でデコードもちゃんとできました.
繰り返し回数を2回にするとちょっと増えて48文字, デコードも正しく行えています.
一気に繰り返し回数20回にしてみると13,436文字というとんでもな文字数になりましたがちゃんとデコードできました.
これを「ファイル」アプリのテキストファイルとして書いておけば, 見られたとしてもパッと見て意味不明ですよね.
というわけで指定回数Base64エンコードした暗号化パスワードを指定フォルダに書き込み, メインのレシピでそのテキストファイルを読み込んでその後同じ回数デコードすることで元のパスワードになる…というわけです.
応用3:とことん暗号化
応用2ではパスワードのみ暗号化しました.
ならそのパスワードが保存してあるファイルパスも, 更に繰り返し回数も同じように複数回Base64エンコードし, レシピ内で同じ回数デコードすればより一層他人に突破されづらくなります.
あるいはロック画面のパスコードのように, 一定回数間違えるとパスワードファイルを空にしたりパスワードファイル自体を削除すれば相手はその先を知る術をほぼ失います.
端末を所有するユーザーからすればこれによって失うのはたかだかパスワード(暗号化)ファイルとファイルパス(暗号化)のファイル, そして繰り返し回数(暗号化)ファイルだけで肝心な部分は失なわず, これらは再び作り直すだけです.
ロック用の回数はレシピ内に設定するとレシピを終了することでクリアされてしまうので, 例えばData Jarを使うのが良いかもしれません.
〆
ここまでやっておけば突破されるまでかなりの手間を求められます.
書き出し用のレシピも削除しておけば解析ツールから作り直しですからね.
こちらは何がどこにあるかは知っていますし, ツールを作り直す余裕があります.
あとは相手にバレるようなパスワードにしない, 忘れてしまうようなパスワードにしないことに注意することくらいです.