安全安心を実現する偉大な発明、公開鍵暗号、現在主流の楕円曲線暗号をブラックボックスなしのオープンソースで実現してみました。 ブラウザとDenoで動きます。


公開鍵暗号は、人に見られても良い公開鍵と、人に見られてはいけない秘密鍵の2つの鍵、キーペアを使うのが特徴です。 通信する相手の公開鍵と、自分の秘密鍵から一時的な共通鍵をお互い生成します。この時、共通鍵は一切ネットワークに流れていないことがポイントです。 経路中でデータを傍受されても鍵が分からないため解読できません。


E2EEメッセージングヘルパー
実際動かしてみましょう。2つのブラウザでキーペアを生成し、お互いの公開鍵をもらって、共通鍵を生成してみると、同じものが表示されることが分かります。


taisukef/ECDH-es: JavaScript ES module for ECDH and ECDSA for browsers and Deno
前バージョンのものと違ってWeb Cripto APIはほとんど使用していない、Pure JavaScriptバージョンとなっています。 ブラックボックスは少ない方が安全です。 唯一使っているのは、安全な疑似乱数を取得するCrypto.getRandomValues()ですが、この実装もより安全なものに変更したり、安全性を検証するのもいいですね。

AES-GCM-esを準備して、暗号化復号化にも対応しました)

links
- 賛否両論!? E2EEメッセージングヘルパー、エンドツーエンド暗号化webアプリを作ってみた
- 見られても大丈夫な暗号鍵!? webアプリでECDH(楕円曲線ディフィー・ヘルマン)鍵共有実験

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS