blog

テクノロジー|OpenPGP.jsの最新リリースに3つの新機能が追加された

は OpenPGP 標準を実装した暗号ライブラリで、電子メールの暗号化に最もよく使われています。...

Oct 17, 2025 · 4 min. read
シェア

OpenPGP.jsはOpenPGP標準を実装した暗号ライブラリで、電子メールの暗号化に最もよく使われています。

実装した暗号ライブラリで、電子メールの暗号化に最もよく使われています。ProtonMail、Mailvelope、FlowCryptはすべてOpenPGP.jsを使用しており、これはほんの一部にすぎません。つまり、OpenPGP.jsライブラリは何百万人ものユーザーの情報を暗号化しているのです。

OpenPGP標準は1990年代に最初にリリースされ、ほとんど何でもそうであるように、セキュリティと可用性のために保守と更新が必要です。標準の「暗号化リフレッシュ」が で、最新の暗号化アルゴリズムが追加され、時代遅れのものは廃止されました。ユーザビリティを向上させるため、様々な電子メールアプリケーションでは、ユーザが自分のキーや連絡先のキーを管理することなく、シームレスに通信を暗号化できるようになっています。

OpenPGP.jsは2014年に最初にリリースされ、GPG4Browsersと呼ばれる初期のプロトタイプから始まりました。これはHerbert Ha newinkelによるスクリプトのカップルをベースにしていました。2016年にリリースされたOpenPGP.jsの第2バージョンは、文字列の代わりにUint8Arraysを使用し、CommonJSモジュールの代わりに最新のES6モジュールを内部で使用するように完全に再設計されました。2018年にはバージョン3と4がリリースされ、それぞれ楕円曲線暗号とストリームのサポートが追加されました。

デフォルトの楕円曲線暗号

OpenPGP.jsのバージョン4では、新しい鍵を生成するときにデフォルトでRSAが使われています。ECCはより高速で安全ですが、Curve25519はまだOpenPGP仕様で標準化されていません。crypto refreshのドラフトにはCurve25519が含まれており、次のバージョンのOpenPGP仕様には「そのまま」含まれる見込みです。

必要なモジュールだけをインポートしたい場合は、「インポート」ボタンをクリックしてください。

同様に、OpenPGP.jsは何年も前から内部的にES6モジュールを使用していますが、バージョン4ではまだ適切なES6モジュールをリリースしていません。その代わりに、ブラウザとNode.js上で動作するモジュールだけがリリースされました。バージョン5ではこれが変わり、ブラウザ用とNode.js用に別々のモジュールがリリースされ、ライブラリのユーザがすべてのプラットフォームで、必要な部分だけを簡単にOpenPGP.jsをインポートできるようになりました。これは、ビルドシステムを OpenPGP.js 切り替えたことで実現しました。

脆弱な暗号の否定

他にも多くのセキュリティ改善があります。例えば、1024ビットのRSA鍵、ElGamal鍵、DSA鍵は安全でないとみなされ、デフォルトで拒否されます。さらに、バージョン4ではすでにAES暗号化をデフォルトとしていましたが、バージョン5では、公開鍵がより弱いアルゴリズムのみをサポートしていると主張しているにもかかわらず、より弱いアルゴリズムによる暗号化をデフォルトで完全に拒否するようになりました。その代わりに、すべての OpenPGP 実装が AES をサポートしていると仮定しています。

OpenPGP.jsの次は?

今後、多くのセキュリティ改善が行われる予定です。公開鍵の識別に使用される鍵指紋は、まだSHA-1を使用していますが、これは暗号技術の更新で修正される予定です。WKDのサポートはOpenPGP.jsのバージョン4に組み込まれていますが、バージョン5ではメインのライブラリをスリムに保つために別のモジュールになっています。

同様に、公開鍵ではなくパスワードでメッセージやファイルを暗号化する場合、パスワードは対称鍵への比較的弱い変換を使用します。したがって、アプリケーションはユーザのパスワードをOpenPGP.jsに渡すとき、まず scryptのような強力なKDFを経由することが推奨されます。crypto refreshドラフトには、OpenPGP.jsの将来のバージョンに実装するために、これらのアルゴリズムのいずれかが含まれることが期待されます。

OpenPGP.jsバージョン5の使い方

OpenPGP.jsのバージョン5がnpmリポジトリに されました。よろしければご自由にお試しください!GitHubの ディスカッションボードで フィードバックをお待ちしています。ただし、OpenPGP.jsは汎用の暗号ライブラリですが、主な使用例はOpenPGP仕様との互換性が必要な場合です。それ以外の使用例では、別のライブラリの方が適切であったり、性能が良かったりします。もちろん、一般的に、どのような暗号を使おうとする場合にも注意が必要です。

お読みいただきありがとうございます!

Read next