(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024113171
(43)【公開日】2024-08-21
(54)【発明の名称】プログラム、サーバ及びウェブアプリケーションの認証情報生成方法
(51)【国際特許分類】
G06F 21/51 20130101AFI20240814BHJP
G06F 21/44 20130101ALI20240814BHJP
【FI】
G06F21/51
G06F21/44
【審査請求】有
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2024094318
(22)【出願日】2024-06-11
(62)【分割の表示】P 2022033702の分割
【原出願日】2022-03-04
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】大野 真人
(57)【要約】
【課題】ウェブアプリケーションの不正利用を防止できるウェブアプリケーションサーバ、ウェブアプリケーションプログラム及びウェブアプリケーション提供方法を提供すること。
【解決手段】ウェブアプリケーションサーバは、通信部と、プロセッサとを備え、プロセッサは、クライアントからの要求に応じて、低級言語で記述されたウェブアプリケーションプログラムに認証情報を付与し、認証情報が付与されたウェブアプリケーションプログラムをクライアントに送信し、ウェブアプリケーションプログラムの起動時のウェブアプリケーションプログラムからの要求に従ったクライアントからの認証情報の検証要求を受けて、認証情報の検証の結果をクライアントに返信する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
通信部と、
少なくとも1つのプロセッサと、を備え、
前記プロセッサは、
クライアントからの要求に応じて、低級言語で記述されたウェブアプリケーションプログラムに認証情報を付与し、
前記認証情報が付与された前記ウェブアプリケーションプログラムを前記クライアントに送信し、
前記ウェブアプリケーションプログラムの起動時の前記ウェブアプリケーションプログラムからの要求に従った前記クライアントからの前記認証情報の検証要求を受けて、前記認証情報の検証の結果を前記クライアントに返信する、
ウェブアプリケーションサーバ。
【請求項2】
前記プロセッサは、前記認証情報の生成から所定の時間の経過後に前記認証情報を無効にする請求項1に記載のウェブアプリケーションサーバ。
【請求項3】
前記プロセッサは、前記クライアントからの要求がある毎に前記認証情報を生成する請求項1又は2に記載のウェブアプリケーションサーバ。
【請求項4】
前記低級言語は、アセンブリ言語である請求項1から請求項3の何れか1項に記載のウェブアプリケーションサーバ。
【請求項5】
前記アセンブリ言語は、WebAssemblyによるアセンブリ言語である、請求項4に記載のウェブアプリケーションサーバ。
【請求項6】
クライアントのコンピュータに、
低級言語で記述されたプログラムコードに記述された認証情報の正当性の検証要求をサーバに対して送信することと、
前記サーバからの検証の結果、前記認証情報が正当であるときには、前記プログラムコードに記述された処理を続行し、前記認証情報が正当でないときには、前記プログラムコードの処理の実行を停止することと、
を実行させるためのウェブアプリケーションプログラム。
【請求項7】
前記検証要求を送信するサーバを特定するためのサーバの情報は、暗号化されて前記プログラムコードに記述されている請求項6に記載のウェブアプリケーションプログラム。
【請求項8】
クライアントからの要求に応じてサーバが認証情報を付与した低級言語で記述されたウェブアプリケーションプログラムを前記クライアントに送信することと、
前記ウェブアプリケーションプログラムの起動時の前記ウェブアプリケーションプログラムからの要求に従って前記クライアントが前記認証情報の検証要求をすることと、
前記認証情報の検証要求を受けて、前記サーバは前記認証情報の検証の結果を前記クライアントに返信することと、
を具備するウェブアプリケーション提供方法。
【請求項9】
前記認証情報の生成から所定の時間の経過後に前記認証情報を無効にすることをさらに具備する請求項8に記載のウェブアプリケーション提供方法。
【請求項10】
前記認証情報は、前記クライアントからの要求がある毎に生成される請求項8又は9に記載のウェブアプリケーション提供方法。
【請求項11】
前記低級言語は、アセンブリ言語である請求項8から請求項10の何れか1項に記載のウェブアプリケーション提供方法。
【請求項12】
前記アセンブリ言語は、WebAssemblyによるアセンブリ言語である、請求項11に記載のウェブアプリケーション提供方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ウェブアプリケーションサーバ、ウェブアプリケーションプログラム及びウェブアプリケーション提供方法に関する。
【背景技術】
【0002】
近年、オンライン授業が導入されつつある。このようなオンライン授業において授業のための各種の機能をウェブブラウザ上で提供するウェブアプリケーションが用いられることがある。ウェブアプリケーションは、通常、ネットワーク上のウェブアプリケーションサーバに格納されており、必要に応じてウェブアプリケーションサーバから端末にダウンロードされ、端末のウェブブラウザ上で実行される。近年のウェブアプリケーションには、プログラムコードが機械語又は機械語に近い言語である低級言語を用いて記述されているものもある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ウェブアプリケーションは公開されているため、第3者によってウェブアプリケーションのプログラムコードが取得され、取得されたプログラムコードが第3者の環境で不正に利用される可能性がある。
【0005】
本発明は、ウェブアプリケーションの不正利用を防止できるウェブアプリケーションサーバ、ウェブアプリケーションプログラム及びウェブアプリケーション提供方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様のウェブアプリケーションサーバは、通信部と、プロセッサとを備え、プロセッサは、クライアントからの要求に応じて、低級言語で記述されたウェブアプリケーションプログラムに認証情報を付与し、認証情報が付与されたウェブアプリケーションプログラムをクライアントに送信し、ウェブアプリケーションプログラムの起動時のウェブアプリケーションプログラムからの要求に従ったクライアントからの認証情報の検証要求を受けて、認証情報の検証の結果をクライアントに返信する。
【0007】
本発明の第2の態様のウェブアプリケーションプログラムは、クライアントのコンピュータに、低級言語で記述されたプログラムコードに記述された認証情報の正当性の検証要求をサーバに対して送信することと、サーバからの検証の結果、認証情報が正当であるときには、プログラムコードに記述された処理を続行し、認証情報が正当でないときには、プログラムコードの処理の実行を停止することとを実行させる。
【0008】
本発明の第3の態様のウェブアプリケーション提供方法は、クライアントからの要求に応じてサーバが認証情報を付与した低級言語で記述されたウェブアプリケーションプログラムをクライアントに送信することと、ウェブアプリケーションプログラムの起動時のウェブアプリケーションプログラムからの要求に従ってクライアントが認証情報の検証要求をすることと、認証情報の検証要求を受けて、サーバが認証情報の検証の結果をクライアントに返信することとを具備する。
【発明の効果】
【0009】
本発明によれば、ウェブアプリケーションの不正利用を防止できるウェブアプリケーションサーバ、ウェブアプリケーションプログラム及びウェブアプリケーション提供方法を提供することができる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、本発明の一実施形態に係るシステムの構成の一例を示す図である。
【
図2】
図2は、端末のウェブブラウザ上で動作するウェブアプリケーションによる画面表示の一例を示す図である。
【
図3】
図3は、ウェブアプリケーションの処理の流れを示すフローチャートである。
【
図4】
図4は、ウェブアプリケーションから演算プログラムが要求される際のサーバの処理の流れを示すフローチャートである。
【
図5A】
図5Aは、ストレージに格納されている演算プログラムのデータ構造の一例を示す図である。
【
図5B】
図5Bは、端末に送信される演算プログラムの一例を示す図である。
【
図6】
図6は、端末における演算プログラムの起動時の処理の流れを示すフローチャートである。
【
図7】
図7は、演算プログラムのダウンロードが完了した後のサーバの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0011】
本発明の一実施形態について図面を参照して説明する。
図1は、本発明の一実施形態に係るシステム1の構成の一例を示す図である。システム1は、サーバ10と、端末20a、20bとを含むサーバ-クライアントシステムである。サーバ10と端末20a、20bとは、ネットワーク30を介して通信可能に接続される。ネットワーク30は、例えばインターネットである。端末の台数は2台に限定されない。
【0012】
ウェブアプリケーションサーバとしてのサーバ10は、プロセッサ11と、ROM12と、RAM13と、ストレージ14と、通信装置15とを有する。これらの各々は、システムバス19を介して互いに接続されている。
【0013】
プロセッサ11は、CPU(Central Processing Unit)等を含む集積回路であってよい。プロセッサ11は、ストレージ14に記憶されたプログラムに従ってサーバ10の動作を制御する。CPU以外のプロセッサ、例えば、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、GPU(Graphic Processing unit)等が用いられてもよい。
【0014】
ROM12は、プロセッサ11等の動作に用いられる情報を記録している。RAM13は、プロセッサ11等の動作のための主記憶装置である。
【0015】
ストレージ14には、プロセッサ11で用いられるサーバ制御プログラム、各種演算を実行するための演算プログラム等の各種プログラム、パラメータ等が記憶されている。実施形態における各種プログラムは、端末20a、20bのウェブブラウザ上で実行されるウェブアプリケーションを含む。実施形態におけるウェブアプリケーションは、数学教育のためのウェブアプリケーションを含む。数学教育のためのウェブアプリケーションは、端末20a、20bのウェブブラウザ上での操作に応じて数学教育のための各種コンテンツをウェブブラウザ上に表示する等の各種の動作を行う。実施形態における数学教育のためのウェブアプリケーションのプログラムコードは、例えばJavaScript(登録商標)といった高級言語で記述され得る。さらに、実施形態におけるウェブアプリケーションは、ウェブブラウザ上で実行中の数学教育のためのウェブアプリケーションからの要求に従ってダウンロードされ、ユーザのウェブブラウザ上での操作によって指定された各種の演算を実行する演算プログラムを含む。実施形態における演算プログラムは、WebAssemblyといった低級言語で記述され得る。ここでの高級言語とは、JavaScriptの他、PythonやRubyといったスクリプト言語、あるいはC言語、C++、ObjectiveC等、人間が理解し易く、例えばインタープリタやコンパイラ等により低級言語に変換され得るプログラミング言語である。一方、低級言語とは、WebAssemblyの他、アセンブリ言語、機械語等、CPUの命令セットそのもの、またはそれに近い形式で記述されるプログラミング言語である。ここではCPUが直接実行可能な機械語のオブジェクトコードも低級言語に含まれる。
【0016】
通信装置15は、ネットワーク30等の外部の通信ネットワークと通信するための回路を含む通信部である。
【0017】
クライアントとしての端末20a、20bは、パーソナルコンピュータ(PC)、タブレット端末、スマートフォン等の電子機器であってよい。また、端末20a、20bは、通信機能を備えた関数電卓等であってもよい。以下、端末20aと端末20bとは同じ構成を有しているものとして、端末20aの構成を説明する。なお、端末20aと端末20bとは必ずしも同じ構成を有してなくてもよい。
【0018】
端末20aは、CPU21と、ROM22と、RAM23と、ストレージ24と、入力装置25と、表示装置26と、通信装置27とを有している。これらの各々は、システムバス29を介して互いに接続されている。
【0019】
CPU21は、端末20aの各種動作を制御するプロセッサである。CPU21は、入力装置25からの入力信号や通信装置27による受信信号に応じて各種プログラムを実行することで端末20aの動作を制御する。各種プログラムは、サーバ10からネットワーク30、通信装置27を介してストレージ24にダウンロードされてもよい。
【0020】
ROM22は、端末20aの起動プログラム等を記録している。RAM23は、CPU21等のための主記憶装置である。ストレージ24には、CPU21で用いられる端末制御プログラム等の各種プログラム、パラメータ等が記憶されている。
【0021】
入力装置25は、キーボード、マウス、タッチパネル等を含む。入力装置25を介したユーザの操作に応じて、そのユーザ操作の内容を示す信号がシステムバス29を介してCPU21に入力される。
【0022】
表示装置26は、液晶ディスプレイ、有機ELディスプレイ等である。表示装置26は、端末20aに一体的に設けられていてもよいし、端末20aとは別に設けられていてもよい。表示装置26には、各種の画像が表示される。
【0023】
通信装置27は、ネットワーク30等の外部の通信ネットワークと通信するための回路を含む通信部である。
【0024】
一例では、ユーザは、端末20aで動作するウェブブラウザにおいてサーバ10のURLを指定する。このとき、サーバ10に記憶されているウェブアプリケーションのための表示画面が端末20aのウェブブラウザ上に表示される。この表示画面上での入力装置25を介した操作に応じてサーバ10へのリクエストが発行される。サーバ10は、リクエストに応じた処理を実行し、処理結果をレスポンスとして端末20aに返す。端末20aは、サーバ10からのレスポンスに従ってユーザの操作に応じた表示等をする。また、端末20aで動作中のウェブアプリケーションからの要求に従って演算プログラムが端末20aにダウンロードされ得る。演算プログラムがダウンロードされた場合、演算プログラムの処理に従った演算がウェブブラウザ上で実行される。
【0025】
このように、システム1では、端末20a又は端末20bのウェブブラウザ上で動作するウェブアプリケーションプログラムと演算プログラムとにより、数学教育のためのウェブアプリケーションとしての機能が実現される。
【0026】
図2は、端末20aのウェブブラウザ上で動作するウェブアプリケーションによる画面表示の一例を示す図である。
【0027】
端末20aの表示装置26に表示される画面26aは、上段エリア100aと、下段エリア100bとを含む。上段エリア100aは、画面26aの上側に表示される。上段エリア100aは、下段エリア100bに比べて細長いエリアである。上段エリア100aには、新規ペーパ作成アイコン100cが表示される。下段エリア100bは、画面26a中の上段エリア100aよりも下側に配置されるエリアである。以下の説明においては、下段エリア100bは、ペーパ100とも称される。ペーパ100には、種々の「付箋」101が表示され得る。付箋101は、ウェブアプリケーションに係る種々の情報を表示するための表示エリアである。例えば、付箋101は、数式を作成するための数式付箋、グラフを作成するためのグラフ付箋、表を作成するための表付箋、図形を作成するための図形付箋、コメントを作成するためのコメント付箋といったものを含む。付箋101は、フローティングオブジェクトであってよい。フローティングオブジェクトは、画面に表示されるオブジェクト(表示体)であって、ユーザ操作に応じて少なくとも表示位置を変更できるオブジェクトである。
【0028】
また、付箋101において入力された数式の計算、グラフの作成、表の作成といった演算処理は、演算プログラムによって実施される。付箋101において、数式の計算、グラフの作成、表の作成といった操作がされた場合、ウェブアプリケーションは、サーバ10に対して演算プログラムを要求する。要求に応じてダウンロードされた演算プログラムは、数式のグラフの作成、表の作成といった各種の演算を実行し、演算結果をウェブアプリケーションに渡す。これに応じて、ウェブアプリケーションは、演算結果を付箋101に表示する。
【0029】
本実施形態では、システム1は、白紙のペーパ100から出発して、各種付箋を作成することが可能である。なお、端末20bにおいても、端末20aと同様のペーパ100が表示され得る。
【0030】
以下、システム1における一連の処理の流れについて説明する。
図3は、ウェブアプリケーションの処理の流れを示すフローチャートである。
図3の処理は、ウェブアプリケーションのプログラムコードに従って例えば端末20aのCPU21によって定期的に実行される。なお、ウェブアプリケーションの起動に際して、ID及びパスワードの入力等のログイン処理が行われてもよい。
【0031】
ステップS1において、CPU21は、ユーザによって演算実行の操作がされたか否かを判定する。前述したように、実施形態におけるウェブアプリケーションの起動後、ウェブブラウザにはペーパ100が表示され得る。そして、ユーザは、ペーパ100に種々の付箋101を作成し、作成した付箋101において数式の計算、グラフの作成、表の作成、図の作成といった各種の演算を実行することができる。ステップS1では、これらの数式の計算、グラフの作成、表の作成、図の作成といった各種の演算を実行するための操作がされたときに、ユーザによって演算実行の操作がされたと判定される。ステップS1において、演算実行の操作がされたと判定されていない場合には、処理はステップS2に移行する。ステップS2において、演算実行の操作がされたと判定された場合には、処理はステップS3に移行する。
【0032】
ステップS2において、CPU21は、その他の処理を行う。例えば、フローティングオブジェクトである付箋101の移動の操作がされた場合、CPU21は、ペーパ100における付箋101の表示位置を更新する。その他の処理の後、
図3の処理は終了する。
【0033】
ステップS3において、CPU21は、ウェブアプリケーションからの要求に従い、ユーザによって実行が指示された演算を実施するために、サーバ10に演算プログラムを要求する。
【0034】
ステップS4において、CPU21は、演算プログラムが受信されたか否かを判定する。ステップS4において、演算プログラムが受信されたと判定されるまで、処理は待機される。所定の時間までに演算プログラムが受信されなかった場合には、タイムアウトの処理がされてもよい。ステップS4において、演算プログラムが受信されたと判定された場合、処理はステップS5に移行する。
【0035】
ステップS5において、CPU21は、演算プログラムを起動する。演算プログラムの起動後の処理については後で説明する。ここでは、演算プログラムの起動の結果、ユーザによって指示された演算が実行されたものとして説明が続けられる。
【0036】
ステップS6において、CPU21は、演算結果を付箋101の中に表示する。例えば、数式の計算であれば、CPU21は、ユーザによって入力された数式に基づいて演算プログラムによって計算された結果を付箋101の中に表示する。また、例えば、グラフの作成であれば、CPU21は、ユーザによって入力された関数に基づいて演算プログラムによって作成されたグラフを付箋101の中に描画する。また、例えば、表の作成であれば、CPU21は、ユーザによって入力されたデータに基づいて演算プログラムによって作成された表を付箋101の中に表示する。これらの演算結果の表示の後、
図3の処理は終了する。
【0037】
図4は、ウェブアプリケーションから演算プログラムが要求される際のサーバ10の処理の流れを示すフローチャートである。
図4の処理は、端末20aにおいてウェブアプリケーションが起動された後、例えばサーバ10のプロセッサ11によって定期的に実行される。
【0038】
ステップS101において、プロセッサ11は、端末20aのウェブアプリケーションから演算プログラムの要求があったか否かを判定する。ステップS101において、演算プログラムの要求があったと判定されていないときには、処理はステップS102に移行する。ステップS101において、演算プログラムの要求があったと判定されたときには、処理はステップS103に移行する。
【0039】
ステップS102において、プロセッサ11は、その他の処理を行う。その他の処理は、演算プログラムの送信を伴わない処理である。その他の処理の後、
図4の処理は終了する。
【0040】
ステップS103において、プロセッサ11は、ストレージ14から演算プログラムをRAM13にロードする。
図5Aは、実施形態においてストレージ14に格納されている演算プログラムのデータ構造の一例を示す図である。
図5Aに示すように、実施形態における演算プログラムは、既知セクションSEC1と、カスタムセクションSEC2とを有している。既知セクションSEC1には、演算プログラムの実体的なプログラムコード及び演算処理に必要な各種データが格納される。一方、カスタムセクションSEC2には、通常時にはデータが格納されていない。端末20aのウェブアプリケーションから演算プログラムの要求があったときに、カスタムセクションSEC2に、以降で説明する種々のデータが低級言語にて付与される。
【0041】
ステップS104において、プロセッサ11は、認証情報としてのトークンを生成する。そして、プロセッサ11は、生成したトークンをストレージ14に保存する。トークンは、例えばランダムな文字列によって構成される。トークンは例えばサーバ10のストレージ14に予め格納されたトークン生成プログラムによって生成される。なお、トークンの生成アルゴリズムは、演算プログラムの要求がある毎に一意な文字列となるように生成できる任意の生成アルゴリズムであってよい。後で説明するが、トークンは一定期間でストレージ14から削除される。また、プロセッサ11は、端末20aと、生成したトークンを紐づけてストレージ14に保存するようにしてもよい。例えば端末20aの情報として送信されてくる端末20aのMAC(Media Access Control)アドレスと共にトークンを保存してもよい。MACアドレスは端末が備える通信手段毎に一意に定められる識別値であるため、悪意のある端末からたまたま保存しているトークンと同じトークンでの確認要求が来た場合であっても、MACアドレスを照合することで悪意のある端末からの要求を不正とみなすことができる。
【0042】
ステップS105において、プロセッサ11は、生成したトークンをRAM13にロードされた演算プログラムのカスタムセクションSEC2に付与する。
【0043】
ステップS106において、プロセッサ11は、起動制限時刻をRAM13にロードされた演算プログラムのカスタムセクションSEC2に付与する。起動制限時刻は、演算プログラムの起動が許可されている時刻である。起動制限時刻を超えた演算プログラムの起動は禁止される。起動制限時刻は、例えば現在時刻に24時間といった任意の時間を加算することで生成される。この任意の時間は、例えばサーバ10の管理者によって指定されてよい。
【0044】
ステップS107において、プロセッサ11は、チェックサムをRAM13にロードされた演算プログラムのカスタムセクションSEC2に付与する。チェックサムとしては、例えば既知セクションに格納されたデータ、トークンのデータ及び起動制限時刻から計算されるハッシュ文字列が用いられ得る。
【0045】
ステップS108において、プロセッサ11は、RAM13にロードされた演算プログラムを端末20aに送信する。その後、
図4の処理は終了する。これによって、端末20aに演算プログラムが提供される。
図5Bは、端末20aに送信される演算プログラムの一例を示す図である。
図5Bに示すように、端末20aの送信時には演算プログラムのカスタムセクションSEC2を構成しているカスタムセクションSEC21に起動制限時刻が付与され、カスタムセクションSEC22にトークンが付与され、カスタムセクションSEC23にチェックサムが付与される。前述したように、チェックサムは、既知セクションのデータ、起動制限時刻のデータ及びトークンのデータから計算される。
【0046】
図6は、端末20aにおける演算プログラムの起動時の処理の流れを示すフローチャートである。
図6の処理は、演算プログラムの起動時に端末20aのCPU21によって実行される。
【0047】
ステップS201において、CPU21は、演算プログラムの実行のための各種パラメータの初期化を行う。
【0048】
ステップS202において、CPU21は、ダウンロードされた演算プログラムの既知セクションのデータ、起動制限時刻のデータ及びトークンのデータからチェックサムを算出する。チェックサムの算出は、サーバ10と同じ生成アルゴリズムに従って行われる。
【0049】
ステップS203において、CPU21は、算出したチェックサムがダウンロードされた演算プログラムのカスタムセクションに付与されているチェックサムと一致したか否かを判定する。ステップS203において、算出したチェックサムがダウンロードされた演算プログラムのカスタムセクションに付与されているチェックサムと一致したと判定されていないときには、CPU21は、演算プログラムの起動に失敗したと判断する。この場合、CPU21は、例えば演算プログラムの起動が失敗した旨のメッセージをウェブブラウザ上に表示する。つまり、チェックサムが一致していないということは、演算プログラムの改ざんの可能性があるとして、起動が失敗となる。ステップS203において、算出したチェックサムがダウンロードされた演算プログラムのカスタムセクションに付与されているチェックサムと一致したと判定されたときには、処理はステップS204に移行する。
【0050】
ステップS204において、CPU21は、サーバ10に対して演算プログラムのカスタムセクションに格納されているトークンを送信することでトークンの正当性の検証要求をする。サーバ10からトークンの正当性の検証結果が受信された後、処理はステップS205に移行する。サーバ10におけるトークンの正当性の検証については後で詳しく説明がされるが、トークンの正当性の検証は、端末20aから送信されたトークンと同一のトークンがサーバ10にも保存されているか否かによって行われる。サーバ10にトークンが保存されているときにはトークンの正当性の検証結果として「OK」の情報が、サーバ10にトークンが保存されていないときにはトークンの正当性の検証結果として「NG」の情報が送信される。
【0051】
ここで、トークンの正当性の検証要求の際の問い合わせの先の情報であるサーバ情報は、演算プログラムの既知セクションに暗号化されて記述されていてもよい。サーバ情報は、例えば検証要求の問い合わせ先のサーバ10のURLである。なお、問い合わせ先のサーバ10のURLは、ウェブアプリケーション及び演算プログラムのダウンロード元のサーバ10のURLと異なっていてもよい。低級言語で記述されている演算プログラムにおいて、さらに、暗号化された文字列によってトークンの検証要求のためのURLが記述されていることにより、端末20aのユーザはトークンの検証要求のためのURLを容易には改ざんし得ない。
【0052】
ステップS205において、CPU21は、トークンの検証結果がOKであるか否かを判定する。ステップS205において、トークンの検証結果がOKであると判定されていない、すなわちNGであると判定されたときには、CPU21は、演算プログラムの起動に失敗したと判断する。この場合、CPU21は、例えば演算プログラムの起動が失敗した旨のメッセージをウェブブラウザ上に表示する。トークンの検証結果がNGであったということは、演算プログラムのダウンロードから一定期間の経過後に演算プログラムの起動のための処理が開始されていることを意味している。この場合には、不正利用の可能性があるとして、起動が失敗となる。ステップS205において、トークンの検証結果がOKであると判定されたときには、処理はステップS206に移行する。
【0053】
ステップS206において、CPU21は、サーバ10に対して現在時刻の取得要求をする。サーバ10から現在時刻が受信された後、処理はステップS207に移行する。
【0054】
ステップS207において、CPU21は、サーバ10から取得した現在時刻が起動制限時刻よりも前の時刻であるか否かを判定する。ステップS207において、サーバ10から取得した現在時刻が起動制限時刻よりも前の時刻であると判定されていないときには、演算プログラムの起動に失敗したと判断する。この場合、CPU21は、例えば演算プログラムの起動が失敗した旨のメッセージをウェブブラウザ上に表示する。ステップS207において、サーバ10から取得した現在時刻が起動制限時刻よりも前の時刻であると判定されたときには、処理はステップS208に移行する。
【0055】
ステップS208において、CPU21は、演算プログラムの処理を続行し、ユーザによって指定された演算を実行する。その後、
図6の処理は終了する。
【0056】
ここで、ステップS202-S203におけるチェックサムの比較の処理と、ステップS204-S205におけるトークンの検証の処理と、ステップS206-S07における現在時刻と起動制限時刻との比較の処理とは、必ずしも
図6で示した順序で行われる必要はない。つまり、ステップS202-S203におけるチェックサムの比較の処理と、ステップS204-S205におけるトークンの検証の処理と、ステップS206-S207における現在時刻と起動制限時刻との比較の処理との順序は適宜に入れ替えられてよい。
【0057】
図7は、演算プログラムのダウンロードが完了した後のサーバ10の処理の流れを示すフローチャートである。
図7の処理は、演算プログラムのダウンロードの完了後、例えばサーバ10のプロセッサ11によって一定期間毎に実行される。
【0058】
ステップS301において、プロセッサ11は、端末20aからトークンの検証要求を受けたか否かを判定する。ステップS301において、端末20aからトークンの検証要求を受けたと判定されたときには、処理はステップS302に移行する。ステップS301において、端末20aからトークンの検証要求を受けたと判定されていないときには、処理はステップS303に移行する。
【0059】
ステップS302において、プロセッサ11は、トークンの検証を行う。そして、プロセッサ11は、トークンの検証結果を端末20aに送信する。その後、処理はステップS303に移行する。例えば、プロセッサ11は、端末20aから送信されてきたトークンと同一のトークンがストレージ14に保存されているか否かを判定することによってトークンの検証を行う。前述したように、トークンは、一定期間後にストレージ14から削除される。したがって、端末20aから送信されてきたトークンと同一のトークンがストレージ14に保存されていない場合には、トークンの検証結果はNGとなる。一方、端末20aから送信されてきたトークンと同一のトークンがストレージ14に保存されている場合には、トークンの検証結果はOKとなる。なお、トークンが端末20aの識別情報(例えばMACアドレス)と紐づけてストレージ14に記憶されていた場合は、プロセッサ11は端末20aと同じ識別情報がストレージに記憶されているかどうかを検索し、識別情報が見つかったら、当該識別情報に紐づけて記憶されているトークンを検証してもよい。このようにすることで、端末情報とトークンのダブルチェックが実施され、より確実に不正利用を排除することができる。
【0060】
ステップS303において、プロセッサ11は、現在時刻の取得要求を受けたか否かを判定する。ステップS303において、現在時刻の取得要求を受けたと判定されたときには、処理はステップS304に移行する。ステップS303において、現在時刻の取得要求を受けたと判定されていないときには、処理はステップS305に移行する。
【0061】
ステップS304において、プロセッサ11は、現在時刻を取得し、取得した現在時刻を端末20aに送信する。その後、処理はステップS305に移行する。
【0062】
ステップS305において、プロセッサ11は、トークンの生成から7日間といった一定期間が経過したか否かを判定する。ステップS305において、トークンの生成から一定期間が経過したと判定されたときには、処理はステップS306に移行する。ステップS305において、トークンの生成から一定期間が経過したと判定されていないときには、
図7の処理は終了する。
【0063】
ステップS306において、プロセッサ11は、ストレージ14に保存されているトークンを削除する。その後、
図7の処理は終了する。なお、トークンが削除されるまでの一定期間は、例えばサーバ10の管理者によって任意に決められてよい。また、トークンは、削除されずに無効になるだけでもよい。無効とされたトークンについては、ステップS302におけるトークンの検証の結果がNGになる。
【0064】
以上説明したように実施形態によれば、ウェブブラウザ上で動作するウェブアプリケーションである演算プログラムの要求時に、トークンと、起動制限時刻と、チェックサムとが付与された後で演算プログラムの送信が行われる。演算プログラムはウェブアプリケーションプログラムであるために、ウェブブラウザ上でプログラムコードが読み取られる可能性があるが、演算プログラム自体に付与されたトークンと、起動制限時刻と、チェックサムとにより、演算プログラムの不正利用が防止される。
【0065】
また、実施形態ではトークンと、起動制限時刻と、チェックサムとは、低級言語で記述された演算プログラムのプログラムコードの一部であるカスタムセクションに格納される。したがって、端末20aにダウンロードされた演算プログラムからトークンと、起動制限時刻と、チェックサムとを仮に読み取ることができたとしても、それらも機械語又は機械語に近い言語で記述されている。結果として、トークンと、起動制限時刻と、チェックサムの改ざんは困難である。
【0066】
また、トークンは、サーバ10において一定期間だけ保持される。したがって、仮にトークンの改ざんが行われたとしても、演算プログラムの不正利用は防止され得る。また、起動制限時刻との比較に用いられる現在時刻は、端末20aで管理されている現在時刻ではなく、サーバ10において管理されている現在時刻である。したがって、端末20aにおいて管理されている現在時刻が改ざんされたとしても、演算プログラムの不正利用は防止され得る。さらに、チェックサムの比較は、サーバ10において計算されたチェックサムと端末20aにおいて新たに計算されたチェックサムとの間で行われる。演算プログラムの改ざんが行われた場合には、サーバ10で計算されたチェックサムの値とは異なる値のチェックサムが計算される。このようにして仮に演算プログラムの例えば既知セクションの内容が改ざんされたとしてもその利用は防止され得る。
【0067】
[変形例]
以下、実施形態の変形例を説明する。実施形態では、教育のためのウェブアプリケーションによって利用される演算プログラムの不正利用の防止技術として、演算プログラムのダウンロード時に演算プログラムにトークンと、起動制限時刻と、チェックサムとが付与されるものとされている。これに対し、実施形態における不正利用の防止技術は、教育のためのウェブアプリケーションによって利用される演算プログラム以外の任意の低級言語で記述されたウェブアプリケーションに対して適用されてよい。例えば、演算プログラムだけではなく、表示やユーザ入力への応答といったユーザインターフェースを含めたウェブアプリ全体を低級言語で記述し、JavaScriptで記述されたプログラムは当該低級言語で記述されたウェブアプリを呼び出すだけの処理を実行するようにしてもよい。このようにすることで、ひとつのまとまったウェブアプリの起動時に、不正利用をチェックし、不正利用が疑われる場合はウェブアプリを起動しないようにできる。さらにウェブアプリのプログラムは低級言語で記述された部分が大部分となるため、プログラムの動作について秘匿性が増す。
【0068】
また、実施形態では、教育のためのウェブアプリケーションはJavaScriptによって記述され、演算プログラムはWebAssemblyによって記述されているとされているが、これらのプログラムコードの記述言語も一例である。
【0069】
また、実施形態では演算プログラムに、トークンと、起動制限時刻と、チェックサムの3つが付与されるものとされている。しかしながら、演算プログラムに、トークンと、起動制限時刻と、チェックサムのすべてが必ずしも付与される必要はない、例えば、演算プログラムにトークンだけが付与されてもよい。
【0070】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0071】
以下に、本出願の出願当初の特許請求の範囲に記載された発明を付記する。
[1] 通信部と、
少なくとも1つのプロセッサと、を備え、
前記プロセッサは、
クライアントからの要求に応じて、低級言語で記述されたウェブアプリケーションプログラムに認証情報を付与し、
前記認証情報が付与された前記ウェブアプリケーションプログラムを前記クライアントに送信し、
前記ウェブアプリケーションプログラムの起動時の前記ウェブアプリケーションプログラムからの要求に従った前記クライアントからの前記認証情報の検証要求を受けて、前記認証情報の検証の結果を前記クライアントに返信する、
ウェブアプリケーションサーバ。
[2] 前記プロセッサは、前記認証情報の生成から所定の時間の経過後に前記認証情報を無効にする[1]に記載のウェブアプリケーションサーバ。
[3] 前記プロセッサは、前記クライアントからの要求がある毎に前記認証情報を生成する[1]又は[2]に記載のウェブアプリケーションサーバ。
[4] 前記低級言語は、アセンブリ言語である[1]から[3]の何れか1に記載のウェブアプリケーションサーバ。
[5] 前記アセンブリ言語は、WebAssemblyによるアセンブリ言語である、[4]に記載のウェブアプリケーションサーバ。
[6] クライアントのコンピュータに、
低級言語で記述されたプログラムコードに記述された認証情報の正当性の検証要求をサーバに対して送信することと、
前記サーバからの検証の結果、前記認証情報が正当であるときには、前記プログラムコードに記述された処理を続行し、前記認証情報が正当でないときには、前記プログラムコードの処理の実行を停止することと、
を実行させるためのウェブアプリケーションプログラム。
[7] 前記検証要求を送信するサーバを特定するためのサーバの情報は、暗号化されて前記プログラムコードに記述されている[6]に記載のウェブアプリケーションプログラム。
[8] クライアントからの要求に応じてサーバが認証情報を付与した低級言語で記述されたウェブアプリケーションプログラムを前記クライアントに送信することと、
前記ウェブアプリケーションプログラムの起動時の前記ウェブアプリケーションプログラムからの要求に従って前記クライアントが前記認証情報の検証要求をすることと、
前記認証情報の検証要求を受けて、前記サーバは前記認証情報の検証の結果を前記クライアントに返信することと、
を具備するウェブアプリケーション提供方法。
[9] 前記認証情報の生成から所定の時間の経過後に前記認証情報を無効にすることをさらに具備する[8]に記載のウェブアプリケーション提供方法。
[10] 前記認証情報は、前記クライアントからの要求がある毎に生成される[8]又は[9]に記載のウェブアプリケーション提供方法。
[11] 前記低級言語は、アセンブリ言語である[8]から[10]の何れか1に記載のウェブアプリケーション提供方法。
[12] 前記アセンブリ言語は、WebAssemblyによるアセンブリ言語である、[11]に記載のウェブアプリケーション提供方法。
【符号の説明】
【0072】
1 システム、10 サーバ、11 プロセッサ、12 ROM、13 RAM、14 ストレージ、15 通信装置、19 システムバス、20a,20b 端末、21 CPU、22 ROM、23 RAM、24 ストレージ、25 入力装置、26 表示装置、27 通信装置、29 システムバス、30 ネットワーク。
【手続補正書】
【提出日】2024-07-08
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0001
【補正方法】変更
【補正の内容】
【0001】
本発明は、プログラム、サーバ及びウェブアプリケーションの認証情報生成方法に関する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正の内容】
【0005】
本発明は、ウェブアプリケーションの不正利用を防止できるプログラム、サーバ及びウェブアプリケーションの認証情報生成方法を提供することを目的とする。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正の内容】
【0006】
本発明の第1の態様のプログラムは、クライアントに対してウェブアプリケーションを提供するサーバのコンピュータを、所定のスクリプト言語で記述された第1プログラムと、所定のアセンブリ言語または機械語の少なくとも何れかで記述された第2プログラムと、を含む所定のウェブアプリケーションを実行するクライアントより、前記所定のウェブアプリケーションを実行するに際し前記第2プログラムの送信要求を受け付ける手段、受け付けられた前記第2プログラムの送信要求に応じて、前記クライアントにおける前記第2プログラムの起動の可否を判断するための第1の認証情報を生成する手段、生成された第1の認証情報を前記第2プログラムに付与する手段、前記第1の認証情報が付与された前記第2プログラムを前記クライアントに送信する手段、として機能させることを特徴とする。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0007
【補正方法】削除
【補正の内容】
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】削除
【補正の内容】
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】
本発明によれば、ウェブアプリケーションの不正利用を防止できるプログラム、サーバ及びウェブアプリケーションの認証情報生成方法を提供することができる。
【手続補正8】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
クライアントに対してウェブアプリケーションを提供するサーバのコンピュータを、
所定のスクリプト言語で記述された第1プログラムと、所定のアセンブリ言語または機械語の少なくとも何れかで記述された第2プログラムと、を含む所定のウェブアプリケーションを実行するクライアントより、前記所定のウェブアプリケーションを実行するに際し前記第2プログラムの送信要求を受け付ける手段、
受け付けられた前記第2プログラムの送信要求に応じて、前記クライアントにおける前記第2プログラムの起動の可否を判断するための第1の認証情報を生成する手段、
生成された第1の認証情報を前記第2プログラムに付与する手段、
前記第1の認証情報が付与された前記第2プログラムを前記クライアントに送信する手段、
として機能させることを特徴とするプログラム。
【請求項2】
更に、前記コンピュータを、
前記第1の認証情報を前記第2プログラムに付与した以降において、前記クライアントが前記第2プログラムを実行する際に送信する第2の認証情報が前記第1の認証情報と対応するか否かを判断する手段、
前記第1の認証情報と前記第2の認証情報とが対応すると判断された場合に、前記クライアントが前記第2プログラムを継続して実行可能であるか否かを判断するための許可情報を前記クライアントに送信する手段、
として機能させることを特徴とする請求項1に記載のプログラム。
【請求項3】
更に、前記第1の認証情報は、生成されてから所定の時間の経過後に無効になることを特徴とする請求項1に記載のプログラム。
【請求項4】
前記第2プログラムは、既知セクションおよびカスタムセクションを含むWebAssemblyとして記述されており、
前記生成された第1の認証情報を前記第2プログラムに付与する手段は、生成された前記第1の認証情報を前記第2プログラムのカスタムセクションに付与する手段を含むことを特徴とする請求項1に記載のプログラム。
【請求項5】
前記第2プログラムとは、前記所定のウェブアプリケーションを実行するウェブブラウザ上でユーザの操作により指定された各種の演算を実行する演算プログラムであることを特徴とする請求項1に記載のプログラム。
【請求項6】
クライアントに対してウェブアプリケーションを提供するサーバであって、
所定のスクリプト言語で記述された第1プログラムと、所定のアセンブリ言語または機械語の少なくとも何れかで記述された第2プログラムと、を含む所定のウェブアプリケーションを実行するクライアントより、前記所定のウェブアプリケーションを実行するに際し前記第2プログラムの送信要求を受け付け、
受け付けられた前記第2プログラムの送信要求に応じて、前記クライアントにおける前記第2プログラムの起動の可否を判断するための第1の認証情報を生成し、
生成された第1の認証情報を前記第2プログラムに付与し、
前記第1の認証情報が付与された前記第2プログラムを前記クライアントに送信する、
制御部を備えたことを特徴とするサーバ。
【請求項7】
クライアントにウェブアプリケーションを送信するサーバが実行するウェブアプリケーションの認証情報生成方法であって、
所定のスクリプト言語で記述された第1プログラムと、所定のアセンブリ言語または機械語の少なくとも何れかで記述された第2プログラムと、を含む所定のウェブアプリケーションを実行するクライアントより、前記所定のウェブアプリケーションを実行するに際し前記第2プログラムの送信要求を受け付けるステップと、
受け付けられた前記第2プログラムの送信要求に応じて、前記クライアントにおける前記第2プログラムの起動の可否を判断するための第1の認証情報を生成するステップと、
生成された第1の認証情報を前記第2プログラムに付与するステップと、
前記第1の認証情報が付与された前記第2プログラムを前記クライアントに送信するステップと、
を含むことを特徴とするウェブアプリケーションの認証情報生成方法。