ノートを暗号化する方法を考えよう
🎓 ノートを暗号化する方法を考えよう
実装の前に、どのような仕組みでノートを暗号化するか考えてみましょう。暗号化の方法はいくつかありますが、このコンテンツでは共通鍵暗号という方法を使用します。
共通鍵暗号とは
共通鍵暗号(別名:対称鍵暗号、秘密鍵暗号)は1つの鍵(対称鍵)を用いて情報を暗号化・復号する方法です。特徴としては、計算量が少ないために高速に動作することが挙 げられます。また、暗号化と復号に同じ鍵を使用するため、鍵の管理が容易です。
仕組みは非常にシンプルです。
- 対称鍵を生成する。
- 対称鍵でノートを暗号化する。
- 暗号化されたノートをバックエンドキャニスターに保存する。
- 対称鍵でノートを復号する。

ここで課題となるのは、異なるデバイスでノートを共有したいときです。
なお、このコンテンツではブラウザをデバイスとして扱い、異なるデバイスとは、ストレージ空間を共有しない別のブラウザアプリケーションやシークレットブラウザ(またはプライベートブラウジングモード)を指します。
異なるデバイスでノートを共有する場合、対称鍵を共有する必要があります。しかし、対称鍵をそのままの状態で受け渡しすることはセキュリティ上の問題があります。
では、どのように対称鍵を共有すれば良いでしょうか? その方法として、公開鍵暗号という方法があります。
公開鍵暗号とは
公開鍵暗号は、暗号化と復号に異なる鍵を使用する暗号方式です。暗号化用の鍵は誰に知られても良い公開鍵、復号用の鍵は自分だけが知っている秘密鍵といいます。公開鍵と秘密鍵(キーペア)には密接な関係があり、たいていの公開鍵暗号は秘密鍵から公開鍵を作ります。しかし公開鍵から秘密 鍵は作れません。そのため、公開鍵は他人に知られても問題はなく、この性質を利用して対称鍵を共有したいと思います。
公開鍵暗号を使用して対称鍵を共有する方法を、簡単な図で説明します。
- 公開鍵と秘密鍵を生成する。

- 公開鍵をバックエンドキャニスターに保存する。

- 対称鍵を持っているブラウザが、バックエンドキャニスターに保存された公開鍵を取得する。

- 公開鍵で対称鍵を暗号化する。 取得したそれぞれの公開鍵を使用して、対称鍵を暗号化します。暗号化された対称鍵は、バックエンドキャニスターに保存されます。

- 自身の公開鍵で暗号化された対称鍵を取得する。 秘密鍵で暗号化された対称鍵を復号します。

これで、対称鍵を共有することができました!