開発の背景

公開鍵暗号方式とファイル暗号化

クリプタンの暗号化・復号は、公開鍵暗号方式を利用しています。公開鍵方式のメリットは、暗号化に使用した公開鍵とペアになっている秘密鍵を保持している本人以外は復号することができないという高い安全性です。しかし、この方式を利用するには、事前に暗号化する人へ公開鍵を受け渡すという準備が必要です。

一方、日本国内においては、脱PPAPの決定打となるソリューションが、人々に提供されていないという状況がありました。

そこで、パスロジは、公開鍵暗号方式の使いにくさを解消した上で、ファイルの暗号化に適用するという独自の手順を確立し、クリプタンを生み出しました。

クリプタン独自のファイル暗号化・復号手順

クリプタンは、公開鍵暗号化方式を利用して、ファイルを暗号化します。暗号化に使用する公開鍵は、公開鍵を管理しているサーバーから自動的に取得するので、相手の公開鍵の有無を問わず送信することができます。

復号の際には、パスワードを使わない本人確認を行います。ファイルの暗号化にパスワードを使っていないので、パスワードへの攻撃は無意味となり、本人以外が暗号化ファイルを入手しても復号することができません。

クリプタンによるファイルの暗号化

クリプタンによるファイルの暗号化の前に次の準備が必要です。

  1. PCにファイル暗号化ソフトウェア「クリプタン」をインストールします。
  2. スマートフォンに「4Login」アプリをインストールし、ユーザー登録します。ユーザー登録が完了すると、「4Login」アプリは、ユーザー専用の公開鍵と秘密鍵を生成し、公開鍵をクリプタンの「鍵サーバー」に登録します。
  3. PC上の「クリプタン」に4LoginユーザーIDを登録します。

詳細な手順はこちらを参照ください。

クリプタンによる暗号化の手順を示します。
初めに送信対象となるファイルは共通鍵方式で暗号化されます。その共通鍵を受信者専用の公開鍵で暗号化します。共通鍵で暗号化されたファイルと公開鍵で暗号化された共通鍵を任意の方法で受信者に送信します。

以下の表がクリプタンによる暗号化の手順です。

  • はじめに送信対象となるファイルは共通鍵方式で暗号化されます。
  • その共通鍵を指定した受信者専用の公開鍵で暗号化します。
  • 共通鍵で暗号化されたファイルと公開鍵で暗号化された共通鍵のセットが「p4cファイル」として生成されます。
※1)暗号化ファイルと暗号化共通鍵BAは1つのファイル(拡張子.p4c)として送信されます。
拡張子.p4cのファイルには、共通鍵Aで暗号化されたファイルと受信者専用の公開鍵Bで暗号化された共通鍵Aが含まれます。
送信者と受信者のメールアドレスは含まれません。

なお、4Loginサーバーと鍵サーバーはそれぞれ、弊社が運営するサーバーです。4Loginサーバーは4Login認証を実施する認証サーバーです。鍵サーバーはクリプタン利用者の公開鍵を利用者のメールアドレスと紐づけて管理します。

クリプタンによるファイルの復号

以下の表がクリプタンにおける復号手順です。
※インターネット接続環境が必要です。

※OTP:ワンタイムパスワード
※1)一時鍵ペアは復号のたびに生成されます。受信者PCにある秘密鍵C’は、一度だけ使用されますので、窃取されても問題ありません。

受信者PCには、暗号化されたファイルと暗号化された共通鍵のセット「p4cファイル」が届いている状態です。
暗号化ファイルを復号するためには、共通鍵が必要ですが、共通鍵は暗号化されています。
共通鍵を復号するには、受信者スマホに保存されている秘密鍵が必要ですが、これを使用するためには、受信者の「4Login認証」が必要です。
4Login認証に成功しないと、復号は開始されません。

4Login認証の詳しい仕組みはこちらを参照ください。

また、復号に必要な秘密鍵を、パスロジは保管しておらず、各ユーザーの4Loginアプリ内にしかありません。

このように、暗号化、送信、復号のプロセス全体において悪意の第三者がファイルの内容を窃取することができないだけでなく、プロセスに関わるサービス事業者がファイルの内容を原理的に取得できないようになっています。

クリプタン暗号化・復号方式の拡張

クリプタンによる暗号化と復号の手順は、安全性と機密性を突き詰めた方式ですが、受信者のスマホのアプリにある専用の秘密鍵を利用するため、復号できるのは、4Loginに登録した本人ひとりだけになります。
そこで、クリプタンは、より利便性を重視し、拡張された手順も用意しました。

クリプタンによるファイルの暗号化の拡張された手順
※1)暗号化ファイルと暗号化共通鍵BAは1つのファイル(拡張子.p4c)として送信されます。
拡張子.p4cのファイルには、共通鍵Aで暗号化されたファイルと受信者専用の公開鍵Bで暗号化された共通鍵Aが含まれます。
  送信者と受信者のメールアドレスは含まれません。
クリプタンによるファイルの復号の拡張された手順
※OTP:ワンタイムパスワード

この手順は、複数のユーザーが復号できる暗号化ファイルの暗号化と復号の手順です。この手順によって生成されたファイルは、複数の受信者に送り、それぞれの受信者が復号することができます。
受信者ごとに別々のファイルを作成し、別々に送信する手間は必要ありません。

拡張された手順では、受信者複数に紐づいた秘密鍵が鍵サーバー上で生成されることになりますが、ファイル自体をパスロジが入手することはありません。つまり、パスロジが元のファイルを入手できないという状況に変わりはありません。

4Login認証とは

クリプタンの復号の手順には、受信者の「4Login認証」の手続きが含まれています。
「4Login認証」による本人確認に成功しなければ、クリプタンで暗号化したファイルを復号することは一切できません。

4Login認証は、スマホアプリ「4Login」を利用した二要素認証となっています。認証には以下の情報が必要です。

  • 本人のスマホを保持していること(所有物要素)
  • 4Loginアプリに登録したパターンを知っていること(知識要素)

クリプタン利用時の4Login認証の手順は以下の通りです。

ファイルの復号時にクリプタンからパスワード(8桁の数字)の入力を求められます。

4Loginアプリ上のクリプタンのパスワード画面を開くと、図のような5×5のマトリクス中にランダムな数字が表示されます。この中に、クリプタンに入力するパスワード(8桁の数字)が隠されています。

ユーザーは、4Loginアプリを利用開始する際に、自分だけの固有のパターンを決めます。そのパターン上に表示された数字を順に読み取っていくとパスワードになります。なお、マトリクス中の数字は1時間毎に更新されるため、入力した数字を窃取してもすぐに無効となります。

ただし、パターンを窃取されることは絶対に防いでください。4Loginアプリを起動し、マトリクスを開くのは誰にも見られないところで行いましょう。

クリプタンにパスワード(8桁の数字)を入力すると、ソフトウェアが「4Loginサーバー」に通信して、パスワードが正しいかを判断し、認証可否を判断して回答します。認証成功であればクリプタンによる復号が開始されます。

ログインプロテクト

4Login認証は単なる多要素認証ではありません。総当たり攻撃に対して強力な「ログインプロテクト」という対策を実装しています。

ログインプロテクトは、ログイン可能な時間を極限まで減らすことで、認証のセキュリティ強度を高める技術です。これまでの認証の仕組みとの最大の違いは、「ユーザーが何もしない限り認証を受け付けない」ことです。ユーザーが何もしない状態においては、パスワード入力フォームに対してどんなパラメータ(たとえ正解であっても)を入力してもシャットアウトします。
この仕組みによって総当たり攻撃は無意味となり、100%安全な認証が実現します。

正しいユーザーが認証する際には、4Loginアプリを起動し、クリプタンのパスワード表示画面を開きます。これが「これからパスワードを受け付ける」という合図となり、「ログインプロテクトサーバー」に合図を送信します。
「ログインプロテクトサーバー」は、各ユーザーのログイン受付時間を管理しています。「4Loginサーバー」は合図を受け取ってから1分間だけ、ログインを待ち受ける状態になります。この間にユーザーがパスワードを入力することで認証します。

逆に言えば、「ログインプロテクトサーバー」に対して合図が送られない限りは、「4Loginサーバー」はパスワードを判定しないため、真正なユーザー以外のパスワードはそもそも受け付けられません。

スマホを保持している人だけが認証可能という、所有者認証の本質を実現する仕組みであると言えます。

質問や疑問等がありましたら、お問い合わせ よりご連絡ください。
今後の改良の参考にさせていただくため、ご感想・ご意見もお待ちしております。