IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特開2024-93467認証装置、認証方法及び認証プログラム
<>
  • 特開-認証装置、認証方法及び認証プログラム 図1
  • 特開-認証装置、認証方法及び認証プログラム 図2
  • 特開-認証装置、認証方法及び認証プログラム 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024093467
(43)【公開日】2024-07-09
(54)【発明の名称】認証装置、認証方法及び認証プログラム
(51)【国際特許分類】
   H04L 9/14 20060101AFI20240702BHJP
   H04L 9/32 20060101ALI20240702BHJP
【FI】
H04L9/14
H04L9/32 200E
H04L9/32 200A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022209859
(22)【出願日】2022-12-27
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】田淵 純一
(57)【要約】
【課題】ポーティング層を経由した通信を不正から保護できる認証システムを提供すること。
【解決手段】サーバ10は、ユーザの端末20に対して、データ送信処理を含む所定のプログラムを提供する際に、当該データ送信処理に組み込むための暗号化アルゴリズムを、ランダムなシード値に基づいて生成するアルゴリズム生成部111と、生成された暗号化アルゴリズムを含むプログラムを端末20へ送信するプログラム送信部112と、端末20から暗号化アルゴリズムにより暗号化されたデータを受信すると、シード値を用いて生成された暗号化アルゴリズムに対応する復号アルゴリズムにより、暗号化されたデータを復号するデータ復号部113と、を備え、データ復号部113により復号できたことによって暗号化されたデータの正当性を認証したうえで、復号されたデータを取得する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ユーザの端末に対して、データ送信処理を含む所定のプログラムを提供する際に、当該データ送信処理に組み込むための暗号化アルゴリズムを、ランダムなシード値に基づいて生成するアルゴリズム生成部と、
生成された前記暗号化アルゴリズムを含む前記プログラムを、前記端末へ送信するプログラム送信部と、
前記端末から前記暗号化アルゴリズムにより暗号化されたデータを受信すると、前記シード値を用いて生成された前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記暗号化されたデータを復号するデータ復号部と、を備え、
前記データ復号部により復号できたことによって前記暗号化されたデータの正当性を認証したうえで、復号されたデータを取得する認証装置。
【請求項2】
前記プログラムは、前記シード値を含み、
前記データ復号部は、前記暗号化されたデータと共に、前記シード値を前記端末から受信する請求項1に記載の認証装置。
【請求項3】
前記アルゴリズム生成部は、前記シード値と対応付けて、前記暗号化アルゴリズムの生成時刻を保存し、
前記データ復号部は、受信した前記シード値に対応して保存されている前記生成時刻に対して、所定の有効期限内のデータのみを受け付ける請求項2に記載の認証装置。
【請求項4】
前記アルゴリズム生成部は、前記シード値と対応付けて、前記ユーザのアカウントを保存し、
前記データ復号部は、受信した前記シード値に対応して保存されているアカウントに紐づくデータのみを受け付ける請求項2に記載の認証装置。
【請求項5】
前記アルゴリズム生成部は、前記暗号化アルゴリズムの中で、数値変換のための変換テーブルの要素を、前記シード値に基づいてランダムに入れ替える請求項1から請求項4のいずれかに記載の認証装置。
【請求項6】
前記アルゴリズム生成部は、前記暗号化アルゴリズムに対応する前記復号アルゴリズムを前記プログラムに含め、
前記端末へ送信するデータを前記暗号化アルゴリズムにより暗号化することにより、前記プログラムを有する前記端末でのみ復号可能とする請求項1から請求項4のいずれかに記載の認証装置。
【請求項7】
ユーザの端末に対して、データ送信処理を含む所定のプログラムを提供する際に、当該データ送信処理に組み込むための暗号化アルゴリズムを、ランダムなシード値に基づいて生成するアルゴリズム生成ステップと、
生成された前記暗号化アルゴリズムを含む前記プログラムを、前記端末へ送信するプログラム送信ステップと、
前記端末から前記暗号化アルゴリズムにより暗号化されたデータを受信すると、前記シード値を用いて生成された前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記暗号化されたデータを復号するデータ復号ステップと、をコンピュータが実行し、
前記データ復号ステップにおいて復号できたことによって、前記コンピュータが前記暗号化されたデータの正当性を認証したうえで、復号されたデータを取得する認証方法。
【請求項8】
請求項1から請求項4のいずれかに記載の認証装置としてコンピュータを機能させるための認証プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、端末で実行されるプログラムにより生成された通信データを保護し、その正当性を認証するシステムに関する。
【背景技術】
【0002】
従来、インターネットを介したサービスを提供するにあたり、オンラインの不正行為への対策が不可欠となっている。例えば、非特許文献1において、不正利用の可能性があるアカウントに対して電話又は電子メールによる検証等の追加チェックを行う認証システムが紹介されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Amazon Fraud Detector、インターネット<https://aws.amazon.com/jp/fraud-detector/>
【発明の概要】
【発明が解決しようとする課題】
【0004】
サーバからクライアント端末へプログラムを配布する際に、このプログラムを保護する方策は、知的財産保護や不正攻撃対策として重要になっている。この際に、例えば、WASMのように比較的リバースエンジニアリングに対して強いコンパイル型のプログラムを、比較的脆弱なJavaScript(登録商標)のようなスクリプト層にポーティングする場合におけるプログラムの保護が課題となっている。
この場合、コンパイル型のプログラム部が独立した形で存在し、露出したポーティング層(OS、ブラウザ、ランタイム等)において外部との入出力を制御(フック)可能であることにより、コンパイル型のプログラム部をブラックボックス的に用いる攻撃を考慮した設計が必要となっている。しかしながら、このような設計は困難であり、こうした脆弱なポーティング層を守る手法が求められている。
【0005】
本発明は、ポーティング層を経由した通信を不正から保護できる認証システムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係る認証装置は、ユーザの端末に対して、データ送信処理を含む所定のプログラムを提供する際に、当該データ送信処理に組み込むための暗号化アルゴリズムを、ランダムなシード値に基づいて生成するアルゴリズム生成部と、生成された前記暗号化アルゴリズムを含む前記プログラムを、前記端末へ送信するプログラム送信部と、
前記端末から前記暗号化アルゴリズムにより暗号化されたデータを受信すると、前記シード値を用いて生成された前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記暗号化されたデータを復号するデータ復号部と、を備え、
前記データ復号部により復号できたことによって前記暗号化されたデータの正当性を認証したうえで、復号されたデータを取得する。
【0007】
前記プログラムは、前記シード値を含み、前記データ復号部は、前記暗号化されたデータと共に、前記シード値を前記端末から受信してもよい。
【0008】
前記アルゴリズム生成部は、前記シード値と対応付けて、前記暗号化アルゴリズムの生成時刻を保存し、前記データ復号部は、受信した前記シード値に対応して保存されている前記生成時刻に対して、所定の有効期限内のデータのみを受け付けてもよい。
【0009】
前記アルゴリズム生成部は、前記シード値と対応付けて、前記ユーザのアカウントを保存し、前記データ復号部は、受信した前記シード値に対応して保存されているアカウントに紐づくデータのみを受け付けてもよい。
【0010】
前記アルゴリズム生成部は、前記暗号化アルゴリズムの中で、数値変換のための変換テーブルの要素を、前記シード値に基づいてランダムに入れ替えてもよい。
【0011】
前記アルゴリズム生成部は、前記暗号化アルゴリズムに対応する前記復号アルゴリズムを前記プログラムに含め、前記認証装置は、前記端末へ送信するデータを前記暗号化アルゴリズムにより暗号化することにより、前記プログラムを有する前記端末でのみ復号可能としてもよい。
【0012】
本発明に係る認証方法は、ユーザの端末に対して、データ送信処理を含む所定のプログラムを提供する際に、当該データ送信処理に組み込むための暗号化アルゴリズムを、ランダムなシード値に基づいて生成するアルゴリズム生成ステップと、生成された前記暗号化アルゴリズムを含む前記プログラムを、前記端末へ送信するプログラム送信ステップと、前記端末から前記暗号化アルゴリズムにより暗号化されたデータを受信すると、前記シード値を用いて生成された前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記暗号化されたデータを復号するデータ復号ステップと、をコンピュータが実行し、前記データ復号ステップにおいて復号できたことによって、前記コンピュータが前記暗号化されたデータの正当性を認証したうえで、復号されたデータを取得する。
【0013】
本発明に係る認証プログラムは、前記認証装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0014】
本発明によれば、端末からサーバへのポーティング層を経由した通信を不正から保護できる。
【図面の簡単な説明】
【0015】
図1】実施形態における認証システムの機能構成を示す図である。
図2】実施形態における認証システムにおける通信の手順を示すシーケンス図である。
図3】実施形態におけるワンタイム暗号化アルゴリズムの基になるAESの暗号化アルゴリズムの概要を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態の一例について説明する。
本実施形態の認証システムは、認証装置から端末に提供されたプログラムにより生成された正常な通信データであることを、ワンタイム暗号アルゴリズムをプログラムに組み込むことにより認証装置が認証する。
【0017】
図1は、本実施形態における認証システム1の機能構成を示す図である。
認証システム1は、プログラムを提供するサーバ10(認証装置)と、提供されたプログラムを実行してサーバ10と通信する端末20とを備える。
【0018】
端末20は、ユーザが操作し所定のプログラムを実行するパーソナルコンピュータ、タブレット、スマートフォン等の情報処理装置である。
この端末20には、サーバ10から提供されたプログラムを実行することによりサーバ10と通信する際に、外部との通信を仲介するポーティング層が設けられている。このため、プログラムの実行によりサーバ10へ送信するデータは、プログラムに組み込まれたワンタイム暗号化アルゴリズムにより暗号化される。
【0019】
サーバ10は、制御部11及び記憶部12の他、各種の入出力インタフェース等を備えた情報処理装置であり、端末20に提供したプログラムが実行されることにより、端末20から受信されるデータの正当性を認証しつつ、暗号化通信を行う。
【0020】
制御部11は、サーバ10の全体を制御する部分であり、記憶部12に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部11は、CPUであってよい。
【0021】
記憶部12は、ハードウェア群をサーバ10として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
【0022】
制御部11は、アルゴリズム生成部111と、プログラム送信部112と、データ復号部113とを備える。
【0023】
アルゴリズム生成部111は、ユーザの端末20に対して、データ送信処理を含む所定のプログラムを提供する際に、このデータ送信処理に組み込むためのワンタイム暗号化アルゴリズムを、ランダムなシード値に基づいて生成する。
例えば、アルゴリズム生成部111は、ログイン等のユーザ認証結果に応じて、ユーザID及び時刻情報(ワンタイム暗号化アルゴリズムの生成時刻)と紐づけたランダムなシード値に基づいて、後述の通りワンタイム暗号化アルゴリズムを生成する。
【0024】
プログラム送信部112は、生成されたワンタイム暗号化アルゴリズムと、このワンタイム暗号化アルゴリズムを生成する際に用いたシード値とを含むプログラムを、端末20へ送信する。
【0025】
このプログラムは、ユーザ環境上で実行したいプログラム(例えば、ゲーム等のアプリケーションプログラム)であり、実行中にサーバ10に対して送信するデータの暗号化処理に対して、ワンタイム暗号化アルゴリズムが組み込まれ、ユーザ毎、又はプログラムのアップデート等、所定のタイミングで提供される。
端末20は、プログラムを実行することにより、通信開始時にID及び生成時刻と紐づけられているシード値をサーバ10に送信した後、ワンタイム暗号化アルゴリズムを用いてサーバ10と暗号化通信を行う。
【0026】
データ復号部113は、端末20から暗号化されたデータを受信すると、シード値を用いて生成されたワンタイム暗号化アルゴリズムに対応する復号アルゴリズムにより、暗号化されたデータを復号する。
制御部11は、データ復号部113により受信データを復号できたことによって暗号化されたデータの正当性を認証したうえで、復号されたデータを取得する。
【0027】
なお、暗号化されたデータに対応するシード値は、端末20からサーバ10へ通知されることとしてよいが、これには限られない。例えば、受信時刻に有効なシード値、あるいは、ユーザIDに紐づくシード値が、アルゴリズム生成部111により保存された情報から抽出されてもよい。
【0028】
ここで、アルゴリズム生成部111により、シード値と対応付けて、ワンタイム暗号化アルゴリズムの生成時刻が保存された場合、データ復号部113は、受信したシード値に対応して保存されている生成時刻に対して、所定の有効期限内のデータのみを受信し、有効期限を超えている場合通信を拒否する。
【0029】
また、アルゴリズム生成部111により、シード値と対応付けて、ユーザのアカウント情報(例えば、ユーザID)が保存された場合、データ復号部113は、受信したシード値に対応して保存されているアカウントに紐づくデータのみを受信する。すなわち、サーバ10は、暗号化通信を行う際に、シード値に紐づいたアカウントを確認し、その後、この通信において紐づいたアカウント以外での利用ができないようにする。
【0030】
なお、端末20は、サーバ10から認証情報を事前に受け取っているものとする。この認証情報は、サーバ10からランダムに発行されたユーザ識別子に類するものでもよく、ID/パスワード等のログイン認証に応じて発行された認証情報でもよい。
また、サーバ10は、この暗号化通信により、ログイン等のアカウントを特定する認証を行う場合、ワンタイム暗号化アルゴリズムの生成に用いたシード値に紐付けられているアカウントと同一でない場合にログインを許可しない。
【0031】
図2は、本実施形態における認証システム1における通信の手順を示すシーケンス図である。
【0032】
ステップS1において、端末20は、サーバ10により発行された認証情報をサーバ10に送信することにより、プログラム全体、又は暗号化アルゴリズムを含む少なくとも一部の配信を要求する。
【0033】
ステップS2において、サーバ10は、端末20との暗号化通信に先立って、ワンタイム暗号化アルゴリズム、及びこのワンタイム暗号化アルゴリズムに紐づいたシード値を含むプログラムを配信する。
【0034】
ステップS3において、端末20は、配信されたプログラムに従って、サーバ10との暗号化通信に先立って、シード値をサーバ10に送信する。
【0035】
ステップS4において、端末20は、配信されたプログラムに従って、シード値に紐づいたワンタイム暗号化アルゴリズムでデータを暗号化してサーバ10へ送信する。
【0036】
ここで、ワンタイム暗号化アルゴリズムを内包するワンタイムプログラムの生成方法は限定されず、動的に暗号化アルゴリムを生成できる手法であればよい。一例として、AES(Advanced Encryption Standard)の暗号化アルゴリズムを変換して動的に暗号化アルゴリムを生成する方法を示す。
【0037】
図3は、本実施形態におけるワンタイム暗号化アルゴリズムの基になるAESの暗号化アルゴリズムの概要を示す図である。
【0038】
まず、暗号鍵(Cipherkey)が拡張され、例えば鍵長が256ビットの場合、ラウンド鍵(Roundkey)[0]~[14]が生成される。
暗号化対象の平文(Plaintext)は、ラウンド鍵[0]とXOR演算された後、4つの処理(SubBytes、ShiftRows、MixColumns、AddRoundkey)から構成される1ラウンドを14回繰り返すことで、暗号文(Ciphertext)が出力される。
【0039】
ここで、SubBytesは、数値を1バイト単位に一定の方法でそれぞれ置換することを示している。
AESにおいては、この置換にはある一つの方法(固定のS-boxによる置換)が定められているが、厳密な耐タンパ性に対する考慮を犠牲にすれば、例えば、次のように無数の入れ替えパターンにより新たな暗号化アルゴリズムを生成できる。
【0040】
すなわち、アルゴリズム生成部111は、暗号化アルゴリズムの中で、数値変換のための変換テーブル(行列)の要素を、シード値に基づいてランダムに入れ替える。
例えば、置換を行わないテーブルをF(0)とする。そして、テーブルのある位置(x,y)の値を、シード値を元に算出されたランダムな別の位置(x’,y’)の値と入れ替えたものをF(1)としたとき、テーブルの全ての値についてこの操作を行なったF(X×Y)を、新たなSubBytesであるSubBytes’の変換テーブルとする。
【0041】
新たな変換テーブルの生成方法は、これに限られず、例えば、既存の変換テーブル(S-box)をF(0)として同様の操作を行ってもよい。また、入れ替え操作の回数は、増減されてもよいし、全ての要素が1回以上入れ替えられた時点で終了するなど、終了条件は適宜設定されてよい。
このようにして生成されたSubBytes’を用いることで、AESを元に新たな暗号化アルゴリズムが得られる。
【0042】
なお、ワンタイム生成される暗号化ロジックには鍵データも必要である。鍵そのもの又は鍵データを算出するためのデータは、暗号化ロジック内に含まれてもよいし、本体プログラムから受け取るようにしてもよい。
暗号化ロジック内に鍵データも含めた場合には、鍵データを何らかの計算結果から算出する等、プログラム上で発見しづらくすることもできるが、本手法では暗号化ロジックそのものが毎回異なることを安全性の根拠としているため、たとえ鍵データが発見されたとしても十分な安全性が確保される。
また、暗号化ロジックから復号ロジックを生成される可能性を考慮して、例えばSSL(Secure Socket Layer)と同等の保護範囲において安全性強度を維持するため、プログラム送信部112は、暗号化ロジックをSSLで配信してもよい。
【0043】
本実施形態によれば、サーバ10は、ワンタイム暗号化アルゴリズムを、ランダムなシード値に基づいて生成し、このワンタイム暗号化アルゴリズム、及びシード値を含むプログラムを端末20へ送信する。
これにより、サーバ10は、シード値及び暗号化された正当なデータを受信すると、シード値を用いて生成されたワンタイム暗号化アルゴリズムに対応する復号アルゴリズムにより、暗号化されたデータを復号できるので、このように復号できたことによって暗号化されたデータの正当性を認証したうえで、復号されたデータを取得できる。
【0044】
認証システム1における安全性の根拠は、攻撃者が暗号化アルゴリズムを入手した場合でも、この暗号化アルゴリズムからその逆操作となる復号アルゴリズムを短時間で得ることが難しいことにある。
従来のシステムでは、攻撃者は、例えば図4のように、自らの保有する端末上のプログラムを書き換えてCA証明書を入れ替えることで、プロクシサーバでの中間者攻撃が可能であった。これに対して、本実施形態では、サーバ10から暗号化アルゴリズムそのものが与えられるため、攻撃者は、暗号化アルゴリズムのみから復号アルゴリズムを作成する必要があるが、これは従来のCA証明書の入れ替えと比較して困難である。一方で、暗号化アルゴリズムを自動生成するサーバ10では容易に複号が可能である。
【0045】
このように、端末20で実行される保護対象のプログラムがサーバ10へ送信するデータは、サーバ10以外の攻撃者が復号困難となっている。したがって、認証システム1は、端末20におけるポーティング層を経由した通信を不正から保護できる。
この結果、例えば、フィッシング検知等のための認証用プログラムを保護すれば安全強度の向上が期待でき、ゲーム等のアプリケーションプログラムを保護すれば、チート等の不正対策となりユーザ体験の向上が期待できる。
【0046】
端末20に送信されるプログラムは、暗号化アルゴリズムの生成に用いられたシード値を含んでもよく、これにより、サーバ10は、暗号化されたデータと共に、シード値を端末20から受信し、このシード値に対応した暗号化アルゴリズム及び復号アルゴリズムを容易に特定できる。
【0047】
サーバ10は、シード値と対応付けて、ワンタイム暗号化アルゴリズムの生成時刻を保存してもよい。
本実施形態のワンタイム暗号化アルゴリズムのみから復号プログラムを作成することは困難ではあるものの、この暗号方式は、基にした暗号方式を前述のように改変したことから耐タンパ性が完全に保証されるものではなくなった。つまり、一定の期間で破られる可能性を考慮すると、この一定期間より短い期間で方式を変更する必要がある。サーバ10は、受信したシード値に対応して保存されている生成時刻に対して、所定の有効期限内のデータのみを受け付けることで、安全性を向上できる。
【0048】
サーバ10は、シード値と対応付けてユーザのアカウント情報を保存し、受信したシード値に対応して保存されているアカウントに紐づくデータのみを受信してもよい。
これにより、暗号解読に要する期間が想定以上に短い場合にも対応可能となる。すなわち、たとえ暗号化アルゴリズムから復号プログラムを作成できた場合でも、この暗号方式が利用されるのはある一つのアカウントに限定される。このため、例えば復号プログラムを用いて元プログラムの意図しないデータを送信するチートプログラムを開発した場合でも、これを幅広いユーザが利用可能なものとして配布できない。さらに、暗号化アルゴリズムの生成方式はサーバ10内に閉じており、攻撃者から見えることはない。このため、攻撃者は、どのアカウントにいつどのような暗号化アルゴリズムが適用されるかを事前に知ることができない。
【0049】
サーバ10は、例えばAESのS-boxのように変換テーブルが用いられる方式を用いると、数値変換のための変換行列の要素を、シード値に基づいてランダムに入れ替えることにより、互いに異なるワンタイム暗号化アルゴリズムを、容易に多数生成することができる。
【0050】
本実施形態では、端末20からの送信データのみを暗号化する構成を説明したが、通常の暗号化は送信データ及び受信データの両方に適用される双方向のものである。
これに合わせて、サーバ10は、ワンタイム暗号化アルゴリズムと同様に、ワンタイム復号アルゴリズムをプログラムに含めて配信してもよい。これにより、サーバ10は、端末20へ送信するデータをワンタイム暗号化アルゴリズムにより暗号化し、配信したプログラムを有する端末20でのみ復号可能とする。さらに、送受信で暗号方式が異なるように構成されてもよい。この結果、双方向の安全な暗号化通信が実現される。
【0051】
なお、本実施形態によれば、例えば、プログラムの意図しない送信データをサーバ10との通信に挿入するといった攻撃も考えられる。しかしながら、このような攻撃は、例えばプログラムが生成する送信データそれぞれにデータ順を示す値を付与することでサーバ10において検知可能である。
【0052】
本実施形態によれば、例えば、不正なデータ通信を抑制できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進すると共に、イノベーションの拡大を図る」に貢献することが可能となる。
【0053】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0054】
サーバ10(認証装置)による認証方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0055】
1 認証システム
10 サーバ(認証装置)
11 制御部
12 記憶部
20 端末
111 アルゴリズム生成部
112 プログラム送信部
113 データ復号部
図1
図2
図3