最近、Webサービスのセキュリティが問題視されるケースが増えています。大量のデータがある分、一度セキュリティインシデントが起こると大きな被害に繋がる可能性があります。それを防ぐには運営者からも読み取れないデータの保存が一番です。 そこで使えそうなのがkbpgp、JavaScriptによるPGPライブラリです。クライアントサイド、サーバサイドの両方で使えるライブラリになります。

kbpgpの使い方

Web上でのデモ。鍵ペアを生成できます。

使い方としては生成された秘密鍵を読み込みます。

alice_pgp_key    = "-----BEGIN PGP PRIVATE ... etc."
alice_passphrase = "rat:beast::np:complete"

kbpgp.KeyManager.import_from_armored_pgp {
  armored:    alice_pgp_key
}, (err, alice) ->

  unless err
    if alice.is_pgp_locked()
      alice.unlock_pgp { passphrase: alice_passphrase }, (err) ->
        console.log "Loaded private key with passphrase" unless err
    else
      console.log "Loaded private key w/o passphrase"

後は指定した文字列を暗号化できます。

params =
  msg:         "Chuck chucky, bo-bucky!"
  encrypt_for: chuck

kbpgp.box params, (err, result_string, result_buffer) ->
  console.log err, result_armored_string, result_raw_buffer

この暗号化された文字列をサーバサイドに保存すれば安心して運用できるという訳です。サーバサイドとクライアントサイドで同じライブラリを使って暗号化、復号化ができるというのも面白いですね。

kbpgpはnode/JavaScript製のオープンソース・ソフトウェア(BSD License)です。

kbpgp - PGP in JavaScript keybase/kbpgp