トピック

活用事例

メモアプリは沢山ありますが、テキストの一部を暗号化したい場合に便利です。
例えばパスワード管理にも活用できます。

Notionを使ったパスワード管理の事例は、以下のブログをご覧ください。

Notionでパスワード管理

Notionを使ったパスワード管理方法です。パスワードは暗号化して保存します。

詳細を見る

仕組み

暗号・復号はユーザのブラウザで行われ、一切サーバーへデータは送信されません。
暗号化された情報は、復号URLのパラメータに含まれます。

https://tc.chigusa-web.com/dec?v=1.0&txt=暗号情報
TXT-Crypterの暗号・復号の仕組みは、Evernoteのテキスト暗号と似ています。

Evernote

Evernote はどのような形式の暗号化を使用していますか?

詳細を見る

本サービスは、ユーザが入力したパスフレーズから「PBKDF2」を利用しAESキーを生成しています。
ランダムなソルトで、HMAC/SHA-256ハッシュ関数を100,000回通されます。(反復回数は指定可能)
AESキーと初期ベクトルを使い、AESにより暗号化されます。

💡
Evernoteはテキスト暗号を行うと、ノートに暗号情報が保存されます。
(ソルト、初期ベクトル、暗号情報など)
仕組みやパスフレーズを入力することにより復号できる点は、本サービスも同じです。
TXT-Crypter Evernote
キー生成 PBKDF2 PBKDF2
反復回数 100,000回~(指定可能) 50,000回
暗号 AES - 256bit AES - 128bit

安全性

復号URLは、基本的にはご自身だけがアクセスできる場所に保管しましょう。
他人にURLが知られなければ、不正に復号されることはありません。

たとえ復号URLが他人に知られたとしても、パスフレーズを知らなければ復号することはできません。

💡
推測されやすいパスフレーズは絶対に避けましょう。
攻撃者は、総当たりや辞書攻撃を行います。
簡単なパスフレーズは不正に復号される可能性がありますので注意しましょう。

本サービスは、手動で復号する方法を公開しています。(もちろんパスフレーズは必要です)
万が一、本サービスが利用できなくなり、復号できなくなることを避けるためです。

一方で、不正に復号されないか心配になるかもしれません。
推測されやすいパスフレーズではない場合でも、総当たりで突破されないか考察してみましょう。

💡
総当たりとは?
例えば、4桁のダイヤル錠を例にします。
0000から9999までの1万パターンしかないため、仮に暗証番号を忘れたとしても順番にダイアルを試すことにより、いつかは開けられるでしょう。

仮に、パスフレーズに英字(大文字・小文字) + 数字 + 記号32文字種を8桁入力した場合、6,095,689,385,410,816パターン(94文字の8乗)存在します。
私のPC(Core i5 11世代)では、初期値の反復回数100,000回で、1回の暗号化時間はおおよそ800msかかりました。
分かりやすく2回/秒だとすると、1日に172,800回しか試行できません。
このペースで総当たりしようとしても約一億年かかる計算です。

8桁でも上記ですので、さらに桁数を多くすると途方もないパターンになります。
さらに反復回数を大きくすることにより、1回の復号時間がかかり総当たりにもっと時間がかかります。
また攻撃者はパスフレーズの総当たりに加え、反復回数も総当たりする必要があります。
この時点で、かなり安心できると思います。

特に、パスフレーズに日本語を含めることをお勧めします。 日本語の総当たりは実質不可能だと思います。

ここまでお読みになり、不正に復号される可能性は限りなくゼロに近いと思いますが、万が一解読されたらどうでしょう。
暗号化するテキストは、サイト名、ID、パスワードをセットにしないようにしましょう。
例えば、一回の暗号化では「パスワード」のみにしましょう。
仮に不正に復号されパスワード「だけ」が知られたとしても、それがどのサイトのパスワードなのか、IDは何か、攻撃者には分かりません。

💡
暗号・復号に詳しい方は、「PBKDF2」は並列処理に弱いことをご存知でしょう。
Evernoteも採用している点や、先に述べた通り、正しく使用すれば問題になることはないでしょう。
ただ、Argon2は気になっています。今後検討するかもしれませんね。

手動で復号

万が一、本サービスが利用できなくなった場合でも、復号URLから手動で復号することができます。
GitHubで復号するためのソースコードを公開しています。

TXT-Crypter-decryption

TXT-Crypterで暗号化したデータを、手動で復号することができます。

詳細を見る

decrypt.htmlをダウンロードし、ブラウザで開きます。

URLに復号URLを入力し、パスフレーズ、反復回数を入力し、「decryption」ボタンをクリックします。
正しい情報を入力すると、復号された情報が表示されます。

💡
復号方法のソースコードも記載しています。
これにより、ユーザが復号できなくなることはありません。
目次