そば屋五兵衛 WEB サイトにて使用されている暗号化技術に関して

そば屋五兵衛の WEB サイト(以下 当サイト) では、SSL/TLS による暗号化通信をサポートしております。
さらに加えて javascript による暗号化を実装しており、これによりお客様のデータを保護できるようになっております。

当サイトで使用している javascript ライブラリは2種類あり、SJCLTom Wu 氏のライブラリを使用しています。
SJCL は AES 暗号を、Tom Wu 氏のライブラリでは公開鍵暗号を実装しています。
javascript による暗号化の流れは以下のようになっています。

  1. 所定の文字列からランダムに選ばれた 32 文字の鍵[A]を生成します。
  2. お客様の入力された情報を鍵[A]を使って AES 暗号化します。(暗号化データができます)
  3. 鍵[A]をそのまま送信すると、メールデータが漏洩した場合に容易に復号されてしまうため、あらかじめスクリプトに記述されている公開鍵を使って暗号化します。(暗号化パスワードができます)
  4. 作成された暗号化データと暗号化パスワードを送信します。
  5. 当店のパソコンにある秘密鍵を使い、暗号化パスワードから鍵[A]を取り出します。
  6. 暗号化データを鍵[A]を使って復号します。
  7. お客様の入力された情報を確認します。

上記の 1 から 4 までがお客様の端末内にて行われます。
AES 暗号化強度は 256bit です。
公開鍵暗号に用いられる公開鍵と秘密鍵のキーペアは OpenSSL を用いて作成しました。鍵長は 4096bit です。
いわゆる”オレオレ証明書”ですが、データをプレーンテキストのまま送信するよりは安全性が高いかと思います。
暗号化技術について詳しく知りたい方は、WEB で検索するなどしてお調べください。

メリット

  • お客様の端末にて暗号化処理がなされるところは SSL/TLS と同じですが、当サイトの方法による暗号化ではお客様の端末から当店のパソコンまで一貫した暗号化通信を実現できます。
  • SSL/TLS ではサーバーにデータが届いた時点でデータが復号され、その後どうなるかはサーバーの実装次第です。この方法 (javascript 暗号化) ではデータ送信中はもとより、メールサーバーにデータが保存されている間および当店のパソコンに保存されている間も機密を保持できます。(秘密鍵が漏洩しなければ)

デメリット

  • 処理が重い
    javascript による暗号のため、端末やブラウザの能力によっては処理に時間がかかることがあります。
    暗号化の処理は復号に比べて短時間ですみますが、より高速な処理をご希望の場合は高速なブラウザへの乗り換えも視野に入れることをおすすめします。
  • 鍵が本当に当店の発行した物か分からない。
    当サイトがクラッキングされた場合、javascript に記述されている鍵が本当に当店の発行した物かが確認できません。

総括

当店の保持する秘密鍵は暗号化された状態で保存されています。セキュリティには万全を期していますが、「絶対」ではない点は留意してください。