JP2022025599A - 情報処理装置、アプリケーションの起動方法及びプログラム - Google Patents

情報処理装置、アプリケーションの起動方法及びプログラム Download PDF

Info

Publication number
JP2022025599A
JP2022025599A JP2020128510A JP2020128510A JP2022025599A JP 2022025599 A JP2022025599 A JP 2022025599A JP 2020128510 A JP2020128510 A JP 2020128510A JP 2020128510 A JP2020128510 A JP 2020128510A JP 2022025599 A JP2022025599 A JP 2022025599A
Authority
JP
Japan
Prior art keywords
application
installation
identification information
information processing
determination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020128510A
Other languages
English (en)
Inventor
啓佑 和田
Keisuke Wada
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2020128510A priority Critical patent/JP2022025599A/ja
Priority to US17/386,865 priority patent/US20220035613A1/en
Publication of JP2022025599A publication Critical patent/JP2022025599A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions

Abstract

【課題】OSの機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行う技術を提供すること。【解決手段】 第1及び第2インストール手段は第1及びアプリケーションをそれぞれインストールする。取得手段は、第1インストール手段によりインストールされた第1アプリケーションに固有の識別情報を取得する。受け付け手段は、ディープリンクを用いた第1アプリケーションの起動の要求を受け付ける。第1判別手段は、第2アプリケーションにより、受け付け手段が起動の要求を受け付けた場合に、第1アプリケーションを起動するか否かを取得手段により取得された識別情報を用いて判別する。起動手段は、第2アプリケーションにより、第1判別手段の判別結果に基づいて第1アプリケーションを起動する。【選択図】図4

Description

本発明は、情報処理装置、アプリケーションの起動方法及びプログラムに関する。
パーソナルコンピュータ(PC)やスマートフォン等の情報処理装置において、ブラウザから特定のアプリケーションへの誘導が行われることがある。例えば、デジタルマーケティングにおいて、事業者等は、ブラウザから自社が提供するアプリケーションにユーザを誘導することによりユーザの囲い込みを行うことがある。ブラウザからアプリケーションにユーザを誘導することで、プッシュ通知など独自のマーケティング施策を柔軟に行うことができるというメリットがある。また例えば、写真の編集やフォトブックの作成等の複雑な操作を行う場合には、ブラウザ上で動作するウェブアプリケーションでは操作が困難であるため、ブラウザから専用のアプリケーションへの誘導が行われることがある。
ブラウザからアプリケーションに誘導するための技術として、ディープリンクが挙げられる。ディープリンクは、ブラウザやメールソフトの表示画面等からアプリケーションの特定画面に直接遷移させることができるリンクである。メールやウェブ広告などにディープリンクを適用することで、ワンクリックで該当のアプリケーションを起動して特定画面にユーザを誘導することができる(例えば、特許文献1参照)。
特許第6219296号公報
近年、様々なアプリケーションが使用可能となっており、適切なアプリケーションの起動方法が求められていた。
本発明は、OSの機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行う技術を提供する。
本発明の一側面によれば、第1アプリケーションをインストールする第1インストール手段と、前記第1アプリケーションを起動するための第2アプリケーションをインストールする第2インストール手段と、前記第1インストール手段によりインストールされた前記第1アプリケーションに固有の識別情報を取得する取得手段と、ディープリンクを用いた前記第1アプリケーションの起動の要求を受け付ける受け付け手段と、前記第2アプリケーションにより、前記受け付け手段が前記起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得手段により取得された前記識別情報を用いて判別する第1判別手段と、前記第2アプリケーションにより、前記第1判別手段の判別結果に基づいて前記第1アプリケーションを起動する起動手段と、を備える、ことを特徴とする情報処理装置が提供される。
本発明によればOSの機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行うことができる。
一実施形態に係るシステムのハードウェア構成例を示す図。 クライアントのソフトウェアの構成例を説明する図。 システムの動作を説明するシーケンス図。 システムの動作を説明するシーケンス図。 クライアントの処理例を示すフローチャート。 アプリ起動リンクの一例を示す図。
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
<第1実施形態>
<ハードウェア構成>
図1は、一実施形態に係るシステムSYのハードウェア構成例を示す図である。システムSYは、大別してサーバ1とクライアント2とを含んで構成される。サーバ1とクライアント2とは、インターネット3を経由して互いに通信する。
サーバ1は、情報処理装置であり、CPU11、RAM12、ROM13、ハードディスクドライブ(HDD)14、ネットワークインタフェース(I/F)15を有し、これらはシステムバス16を介して互いに通信可能に接続されている。CPU11は、サーバ1の動作を統括的に制御する。例えば、CPU11は、RAM12やROM13、HDD14等に記憶されたプログラムを読み出して実行することにより、サーバ1の各種機能を実現する。RAM12は、揮発性の記憶領域であり、例えば、CPU11のワークメモリとして用いられる。ROM13は、不揮発性の記憶領域であり、例えば、オペレーティングシステムプログラム(OS)等の各種制御プログラムや、サーバ1の機能を実行する上で必要な各種のデータ等を記憶する。HDD14は、不揮発性の記憶領域であり、例えば、各種アプリケーションプログラムや、データ、ユーザ情報、機器情報等を記憶する。ネットワークI/F15は、システムバス16に接続し、ネットワークを介して情報の入出力を行う。本実施形態では、ネットワークI/F15は、インターネット3を介して外部装置と通信を行う。また、ネットワークI/F15は、LAN(Local Area Network)(不図示)等のネットワークに接続し、外部装置と通信を行ってもよい。なお、本実施形態では1つのCPU11が示されているが、複数のCPUが設けられ、これらが適宜連携をしながら処理を行うものであってもよい。
本実施形態の場合、サーバ1はウェブサーバである。サーバ1は静的なウェブサーバであり、クライアント2の要求に対し、ウェブコンテンツを返答する。ウェブコンテンツの例として、HTMLやXML、CSS、JAVASCRIPT(登録商標)、画像等を含むことができる。
クライアント2は、PCやスマートフォン等に代表される情報処理端末である。クライアント2は、CPU21、RAM22、ROM23、ハードディスクドライブ(HDD)24、ネットワークI/F25、表示部26、入力部27を有し、これらはシステムバス28を介して互いに通信可能に接続されている。CPU21、RAM22、ROM23、ハードディスクドライブ(HDD)24、ネットワークI/F25は、それぞれCPU11、RAM12、ROM13、ハードディスクドライブ(HDD)14、ネットワークI/F15と同様の構成を有し得る。表示部26は、例えば液晶ディスプレイであり、各種のユーザーインタフェース画面を表示する。入力部27は、ユーザによる入力操作を受け付ける。入力部27は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル等であってもよい。
<ソフトウェア構成>
図2は、クライアント2のソフトウェアの構成例を説明する図である。図2は、CPU21がROM23やHDD24等に記憶されているプログラムを読み出して実行することにより実現されるソフトウェアの機能ブロックを示している。本実施形態では、クライアント2は、オペレーティングシステム(以下OS)201、ブラウザ202、常駐アプリケーション203、起動対象アプリケーション204及びインストール処理部205を含む。
OS201は、クライアント2全体の動作を制御するためのソフトウェアである。OS201の例としては、例えば、WINDOWS(登録商標)やMACOS(登録商標)といったPCのオペレーションを司るソフトウェア等が挙げられる。
ブラウザ(Webブラウザ)202は、ネットワーク経由で接続された外部システムが提供するウェブサービスを利用する為のアプリケーションである。本実施形態では、ブラウザ202は、HTTP(Hypertext Transfer Protocol)通信を用いてサーバ1と通信し、サーバ1からウェブコンテンツを取得する。例えば、ブラウザ202は、サーバ1に対して、HTTPのプロトコルに従ってリクエストを送信するとともに、そのリクエストに対するレスポンスを受信する。そして、ブラウザ202は、受信したレスポンスを解析して、操作画面を表示部26に表示したり、受信したレスポンスに含まれるJavaScript(登録商標)(スクリプト)を処理したりする。スクリプトには、処理を実行するための複数の命令が含まれ得る。
常駐アプリケーション203(以下、アプリケーション203)は、後述する起動対象アプリケーション204(以下、アプリケーション204)を判別し、起動するためのアプリケーションである。なお、常駐アプリケーション203は、クライアント2の電源がONされてOS201が起動されることに基づいて自動的に起動されるアプリケーションである。一実施形態において、アプリケーション203は、アプリケーション204と同時にインストールされる。また、アプリケーション203は、アプリケーション204が起動していないときでも起動しているアプリケーションである。アプリケーション203は、ローカルサーバ2031と、ローカルサーバ2031を起動するローカルサーバ起動部2032とを含む。
ローカルサーバ2031は、クライアント2内のブラウザ202等からアクセス可能なローカルウェブサーバであり、判別モジュール2311と起動モジュール2312とを含む。ローカルサーバ2031は、1つまたは複数のエフェメラルポートを持ち、ブラウザ202からアクセスされる。例えば、ブラウザ202は、ローカルサーバ2031にウェブコンテンツを要求する。ある側面から見れば、アプリケーション203は、情報処理装置であるクライアント2上にローカルサーバ2031を構築する。
判別モジュール2311は、アプリケーション204の起動の可否を判別する。具体的には、判別モジュール2311は、アプリケーション204を識別する識別情報に基づいて、アプリケーション204を起動してもよいアプリケーションであるか否かを判別する。例えば、判別モジュール2311は、アプリケーション204が攻撃者等によって改ざんされたり、不正にインストールされたりしたアプリケーションで無いことが確認できた場合に、アプリケーション204を起動してもよいアプリケーションであると判別する。
判別モジュール2311が判別の際に用いる識別情報には、例えば、アプリケーション204のハッシュ値が含まれ得る。一実施形態において、アプリケーション203のダウンロードファイルにアプリケーション204のハッシュ値が含まれる。アプリケーション204と同時にアプリケーション203がクライアント2にインストールされると、判別モジュール2311は、ダウンロードファイルに含まれるアプリケーション204のハッシュ値をROM23等のメモリに記憶する。
また、判別モジュール2311が判別の際に用いる識別情報には、アプリケーション204のバージョンなどの情報が含まれていてもよい。例えば、判別モジュール2311は、アプリケーション204が不正なものではないことを確認した場合であっても、アプリケーション204が最新バージョンでないときは、アプリケーション204を起動しないと判別してもよい。その場合、ブラウザ202は、判別モジュール2311の判別結果に基づいて、最新バージョンのアプリケーションのダウンロードページを表示してもよい。
起動モジュール2312は、アプリケーション204を起動するためのモジュールである。例えば、起動モジュール2312は、判別モジュール2311がアプリケーション204を起動してもよいと判別したことに基づいて、アプリケーション204を起動させる。
アプリケーション204は、アプリケーション203の起動モジュール2312により起動される対象となるアプリケーションである。アプリケーション204は、例えば、事業者等が提供するサービスを実現するためのアプリケーションであり、ディープリンクによって起動される。一実施形態において、アプリケーション204は、写真の編集やフォトブックの作成等を行うためのアプリケーションであってもよい。また、アプリケーション204は、事業者等が販売する製品を購入するためのアプリケーションであってもよい。なお、アプリケーション204のダウンロードファイルにアプリケーション204のハッシュ値の計算に使用される元データが含まれる。この元データは、例えば、アプリケーション204をビルドすることで生成されるデータである。
インストール処理部205は、前述したアプリケーション203及びアプリケーション204のインストールの処理を実行する。
<動作例>
デスクトップアプリケーションにおけるディープリンクの提供方法として、インターネット上でウェブページなどを一意に指定するのに用いられるURL(UNIFORM RESOURCE LOCATOR)とアプリケーションとを関連付けるものがある。具体例として、URLの先頭部分であるURLスキームを独自のものでカスタムして用いるものがある(このようなURLスキームをカスタムURLスキームと呼ぶ)。例えば、地図アプリで利用される“MAP://”等のカスタムURLスキームをオペレーティングシステムやブラウザに登録し、アプリケーションのハンドラとして指定する。これにより、登録したURLスキーム先にアクセスを試みたときに、該当するアプリケーションのハンドラが立ち上がって、アプリケーションが起動する。また、他の具体例では、オペレーティングシステム(OS)がアプリケーションのファイルに記載されたURLに関連付けをされたホストの検証を行い、検証が成功した場合にファイルに記載されているURLをハンドラとして確立する。そして、OSは、アクセスが試みられたURLがハンドラとしてOSに保存されたものである場合には、アプリケーションを起動して特定の画面を表示させる。しかしながら、カスタムURLを用いた方法では、攻撃者等によって同じカスタムURLスキームを持つアプリケーションがインストールされた場合に、攻撃者によってインストールされたアプリケーションをユーザが起動してしまうことがある。すなわち、起動させようとしているアプリケーションが不正にインストールされたものでないか等の判別を行うことができない。また、OSがアプリケーションとURLとを関連付けて管理する方法は、その仕組みが用意されていないOSでは実行することができない。そこで、本実施形態では、以下の動作に基づいて起動対象のアプリケーション204を判別し、起動する。
図3は、アプリケーション203及びアプリケーション204がクライアント2にインストールされる際のシステムSYの動作を説明するシーケンス図である。
S301で、インストール処理部205は、アプリケーション203及びアプリケーション204のインストールの指示をユーザから受け付ける。例えば、インストール処理部205は、ブラウザ202が表示するウェブページ上のインストール実行のリンクをユーザが入力部27により選択することで、ユーザからの指示を受け付ける。
S302で、インストール処理部205は、サーバ1からアプリケーション203及びアプリケーション204のインストールファイルをダウンロードする。例えば、インストール処理部205は、S301でユーザが選択したブラウザ202上のリンクのURLに基づいて、ウェブ上のサーバに対してアプリケーションのインストールファイルを要求する。なお、本実施形態では、インストール処理部205はサーバ1からファイルをダウンロードしているが、インストール処理部205はサーバ1以外のネットワーク上のサーバからファイルをダウンロードしてもよい。
S303で、インストール処理部205は、アプリケーション203及びアプリケーション204をインストールする。
S304で、常駐アプリケーション203のローカルサーバ起動部2032は、ローカルサーバ2031を起動する。S305で、常駐アプリケーション203のローカルサーバ2031は、起動対象アプリケーション204のハッシュ値をROM23等のメモリから取得する。
なお、本実施形態ではアプリケーション203とアプリケーション204とが同時にインストールされるが、これらは同時にインストールされなくてもよい。例えば、アプリケーション204がフォトブック作成用のアプリケーションの場合、アプリケーション203はプリンタ等の製品のドライバをクライアント2がインストールされる際に一緒にインストールされてもよい。そして、アプリケーション204は、プリンタ等の製品を販売する事業者等のウェブサイトからダウンロードされ、インストールされてもよい。
また、アプリケーション203とアプリケーション204のインストールのタイミングが異なる場合、以下の構成を採用可能である。すなわち、アプリケーション203がクライアント2にインストールされてローカルサーバ2031が起動すると、ローカルサーバ2031は、起動対象のアプリケーションがクライアント2にインストール済みであるか否かを確認してもよい。そして、ローカルサーバ2031は、起動対象のアプリケーションがクライアント2にインストール済みである場合は、起動対象のアプリケーションからハッシュ値を取得してもよい。また、ローカルサーバ2031は、起動中に新たなアプリケーションがインストールされた場合にそのアプリケーションがローカルサーバ2031による起動対象であるか否かを確認し、起動対象であればそのアプリケーションのハッシュ値を取得してもよい。
なお、アプリケーション203とアプリケーション204とが同時にインストールされる場合、これらは同じアプリケーションプロセスであってもよいし、異なるアプリケーションプロセスであってもよい。
図4は、アプリケーション204が起動するときのシステムSYの動作を説明するシーケンス図である。なお、図4のシーケンス図に示す動作は、図3の動作によりアプリケーション203及びアプリケーション204がクライアント2にインストールされた状態での操舵を示している。
S400で、ユーザがアプリケーション204の起動要求を行う。例えば、ユーザは、アプリ起動リンクの選択を入力部27により行う。ここで、アプリ起動リンクは、アプリケーション204を起動するためのディープリンクであり、例えばメールやウェブサイトに記載されるハイパーリンクである。図6は、その一例を示す図であり、アプリケーション204を提供している事業者等が送信したキャンペーン情報ついてのメールが表示部26に表示されている場合の画面の構成例を示している。この例では、キャンペーンメールの本文中に「パソコン版のアプリケーションでフォトブックを作る」というアプリ起動リンク601が記載されている。すなわち、ユーザがこのアプリ起動リンク601をマウスでクリックするなどした場合に、図4のシーケンス図で示される動作が開始される。
S401で、ブラウザ202は、サーバ1に対してウェブコンテンツを要求する。ウェブコンテンツは、例えば、HTML、JAVASCRIPT(登録商標)、CSSなどのリソースから構成される。ブラウザ202は、このリソースを読み込むことにより、後述するOSの判別処理などを実行する。
S402で、サーバ1は、ブラウザ202からのウェブコンテンツの要求に対して応答する。すなわち、サーバ1は、ブラウザ202の要求に対応するコンテンツをブラウザ202に対して送信する。ブラウザ202は、サーバ1から送信されたウェブコンテンツを受信する。
S403は、ブラウザ202は、サーバ1から受信したウェブコンテンツに組み込まれているOS判別モジュールによってOSを判別する。一例として、OS判別モジュールは、ユーザーエージェントと呼ばれるプログラムをJAVASCRIPT(登録商標)から読み込むことによりOSの判別を行う。この判別は、例えば、アプリケーション203をインストール可能なOSであるか、あるいは以降の処理を実行可能なOSであるか等に基づいて行われる。
S404で、ブラウザ202は、ローカルサーバ2031に対してアプリケーション204を起動するためのウェブソースの要求を実行する。本実施形態では、ブラウザ202は、CORS(CROSS-ORIGIN RESOURCE SHARING)を用いて、サーバ1とは異なるオリジンであるローカルサーバ2031にリソースのアクセスを要求する。ここで、CORS(オリジン間リソース共有)は、あるオリジンで動作しているブラウザに対し、異なるオリジンにある選択されたリソースへのアクセス権を与えるようにブラウザに指示するための仕組みである。一般に、ブラウザには同一オリジンポリシーが適用され、あるオリジンから読み込まれたウェブコンテンツから他のオリジンのウェブコンテンツにアクセスできないように制限される。しかし、CORSを用いることで、ブラウザは異なるオリジンへのアクセスが可能となる。本実施形態では、ブラウザ202は、例えばXMLHttpRequestを使用してローカルサーバ2031に対してリソースのアクセスを要求する。
ここで、ブラウザ202とローカルサーバ2031との間の通信は、所定のポートを使用して行われる。例えば、クライアント2にアプリケーション203がインストールされると、前述したようにローカルサーバ起動部2032がローカルサーバ2031を起動する。ローカルサーバ2031が起動すると、ローカルサーバ2031はある特定のポート(仮にポート番号Aとする)を開いて外部からの接続を待つ待ち受け状態となる。
なお、他のアプリケーションやサービスがポート番号Aで待ち受け状態になっている場合には、ローカルサーバ2031はそのポートで待ち受け状態となることができない。そのため、ポート番号Aが既に使われている場合には、ローカルサーバ2031は他のポートを開いて待ち受け状態にする。このようにローカルサーバ2031が複数のポートを開いて待ち受け状態にする仕組みを入れることで、他のアプリケーションやサービスがそのポートを使用している場合でも、空いているポートを見つけて待ち受け状態にすることが可能となる。
また、本実施形態では、S402でブラウザ202がサーバ1から受信する情報にもローカルサーバ2031が待ち受けている可能性があるポートの情報が含まれている。そのため、ブラウザ202は、それらのポートの中で正常なレスポンスが返るポートを探してローカルサーバ2031と通信を行う。ここで、正常なレスポンスは、ローカルサーバ2031から返却される成功を示すレスポンスであり得る。なお、本実施形態では複数のポートから空いているポートを探して通信をする例を説明したが、これ限定されるものではなく1つのポートだけで通信を実施してもよい。しかしながら、1つのポートだけで通信を実施する場合は、そのポートが他のアプリケーションやサービスで既に使われていたときは、ブラウザ202とローカルサーバ2031との通信は実施することができない。
S405で、ローカルサーバ2031の判別モジュール2311は、アプリケーション204を起動するか否かを判別する。例えば、判別モジュール2311は、起動させようとしているアプリケーション204から、ハッシュ値の計算に使用される元データを取得する。そして、判別モジュール2311はこの元データを特定のアルゴリズムで計算することでハッシュ値を取得する。これにより、起動させようとしているアプリケーション204が攻撃者等によって不正にインストールされたもの等でなければ、S305でメモリ等に記憶されたハッシュ値と今回計算したハッシュ値が一致する。一方、攻撃者等によって例えばアプリケーション204が変更された場合、この変更されたアプリケーション204がビルドされることで生成されるデータを使ってハッシュ値が計算される。この場合、計算に使用されるデータは、上述した元データとは異なるデータとなっているため、S405で計算されるハッシュ値は、S305で保存されたハッシュ値と一致しない。
判別モジュール2311は、計算したハッシュ値と、メモリ等に記憶しているハッシュ値とを比較し、一致していればアプリケーション204を起動してもよいと判別する。一方、計算したハッシュ値とメモリ等に記憶しているハッシュ値とが一致しない場合、起動させようとしたアプリケーションが攻撃者等によって不正にインストールされたり改ざんされたりしたものである可能性がある。そのため、判別モジュール2311は、計算したハッシュ値とメモリ等に記憶しているハッシュ値とが一致しない場合は、アプリケーション204を起動しないと判別する。
なお、本実施形態では、アプリケーション204のハッシュ値によりアプリを起動するか否かを判別しているが、アプリケーション204に付与された固有のID等によって判別を行ってもよい。この場合、判別モジュール2311は、予めメモリ等に記憶しているアプリケーション204のIDと、アプリケーション204を起動させようとする際に取得したアプリケーション204のIDとを比較することにより判別を行ってもよい。
S406で、ローカルサーバ2031の判別モジュール2311は、S405でアプリケーション204を起動すると判別した場合にアプリケーション204を起動する。
<クライアントの処理例>
図5は、クライアント2の処理例を示すフローチャートである。本フローチャートは、CPU21がROM23やHDD24等に記憶されているプログラムを読み出して実行することにより実現されるソフトウェアの各機能ブロック(図2参照)による処理を示している。
S500で、OS201は、ユーザからのアプリケーション204の起動要求を受け付ける。具体的には、OS201は、ユーザによるアプリ起動リンクの選択を、入力部27を介して受け付ける。S501で、OS201は、ブラウザ202を起動する。
S502で、ブラウザ202は、サーバ1からウェブコンテンツを取得する。このステップは、図4のS401、S402に対応する。図4で説明したように、ブラウザ202からの要求にサーバ1が応答する形で、ブラウザ202はウェブコンテンツ(HTML、JAVASCRIPT(登録商標)等)を受信する。なお、本実施形態では、ブラウザ202が受信するウェブコンテンツには以下のプログラムが含まれ得る。ブラウザ202は、以下のプログラムに従った処理を行う。
(1)アプリケーション203をインストール可能なOSであるか否かを判断するプログラム
(2)ブラウザ202がローカルサーバ2031にアクセスするためのプログラム
(3)ブラウザ202がローカルサーバ2031から応答があるか否かを判定するプログラム
(4)ローカルサーバ2031から応答がない場合、ブラウザ202に対しアプリ起動リンクに記載されているURLにアクセスするためのプログラム。
(5)アプリケーション203がインストールできないOSであると判断された場合にブラウザ202がアプリ起動リンクに記載されているURLにアクセスするためのプログラム
S503で、ブラウザ202は、クライアント2のOS201が、アプリケーション203をインストール可能なOSであるか否かを判別するこのステップは、図4のS403に対応する。例えば、ブラウザ202は、S502で取得した上記(1)のプログラムに従ってこの判別を行う。ブラウザ202は、OS201がアプリケーション203をインストール可能であると判別した場合はS503に進み、OS201がアプリケーション203をインストール不可であると判別した場合はS508に進む。本実施形では、常駐アプリケーション203を使って起動対象アプリケーションが起動しても良いアプリケーションか否かを判断する。そのため、常駐アプリケーション203がインストールできる環境が必要である。そのたえ、S503の処理を行っている。
S504で、ブラウザ202は、ブラウザ202は、ローカルサーバ2031と通信可能であるか否かを判断し、通信可能であればS505に進み、通信できなければS507に進む。具体的には、ブラウザ202は、S502で取得した上記(2)(3)のプログラムに従って、ローカルサーバ2031からの応答があるか否かを確認する。例えば、図4で示した場合のように、アプリケーション203及びアプリケーション204がインストール済みであり、ローカルサーバ2031が起動していれば、ブラウザ202はローカルサーバ2031と通信可能である。一方で、アプリケーション203及びアプリケーション204がインストールされていない状況等では、ブラウザ202はローカルサーバ2031と通信することができない。
S505で、ローカルサーバ2031は、ブラウザ202からウェブリソースの要求を受け付ける。この処理は、図4のS404に対応する。すなわち、ローカルサーバ2031は、ブラウザ202からのアプリケーション204の起動に関する要求を受け付けたことに基づいて、後続の処理を実行する。
S506で、ローカルサーバ2031の判別モジュール2311は、アプリケーション204が起動可能である否かを判別し、起動可能であればS507に進み、起動可能でなければフローチャートを終了する。この処理は図4のS405の処理に対応する。すなわち、判別モジュール2311は、予めメモリ等に記憶しているアプリケーション204のハッシュ値と、計算により求めたアプリケーション204のハッシュ値とを比較する。そして、判別モジュール2311は、これらのハッシュ値が一致していればアプリケーション204が起動可能であると判別し、一致していなければ起動不可であると判断する。ハッシュ値が一致しない場合にはアプリケーション204を起動しないことにより、攻撃者等によってインストールされたり改ざんされたりした不正なアプリケーションを起動することを防止することができる。つまり、ローカルサーバ2031は、このステップにより、アプリケーション204が攻撃者等による不正なものでなく、起動してもよいアプリケーションであるか否かの検証を行う。
なお、判別モジュール2311がアプリケーション204を起動不可と判別した場合(S506:No)、ローカルサーバ2031は、起動対象アプリケーションを起動せずに図5の処理を終了させる。なお、S506においてNoと判断された場合、不正なアプリケーションが存在している可能性がある。そのため、ローカルサーバ2031は、ブラウザ202等にアプリケーション204を起動できない旨の警告等を表示させてもよい。また、この場合には、正規のアプリケーション204がインストールされていない可能性がある。そのため、ローカルサーバ2031は、ブラウザ202がアプリケーション204のダウンロードページに誘導してもよい。
S507で、ローカルサーバ2031の起動モジュール2312は、アプリケーション204を起動してアプリ起動リンク601に基づく画面を表示する。図6で示すアプリ起動リンク601が選択されたことにより本フローチャートの処理が開始された場合は、起動モジュール2312は、フォトブック作成用のアプリケーションを起動して特定の画面を表示する。すなわち、アプリ起動リンク601にも基づくディープリンクが行われる。
一方、S503の判断がNoの場合、S508で、ブラウザ202がアプリ起動リンク601に基づく画面を表示する。例えばANDROID(登録商標)、IOS等のOSでは、アプリケーション203をインストールすることができないことがある。この場合には、ブラウザ202が、アプリ起動リンク601などで指定されたURLに基づくウェブページを表示する。なお、ブラウザ202は、アプリケーションを紹介するサービスのランディングページなどに誘導してもよい。
また、S504の判断がNoの場合、S509で、ブラウザ202は、アプリケーション203及びアプリケーション204がインストールされていないと判断して、これらのアプリケーションをインストールするためのダウンロードページに誘導する。なお、ダウンロードページに誘導するだけでなく、アプリケーション204を紹介するWEBサイトなどに誘導してもよい。また、誘導するURLは、OS201の種類等によって変更してもよい。例えば、アプリ起動リンクのURLの後ろに誘導したいURLを付けることで、そのURLに遷移するようにしてもよい。このURLの一例として、「HTTPS://WWW.COMPANY.COM/?ANDROID=XXXXXX.IOS=XXXXXX.WINDOWS=XXXXXX.MACOS=XXXXXX」が挙げられる。このように、URLの後ろに、“?”や“&”で文字列を繋げることで、OS201ごとに誘導先を変えることが可能である。また、アプリ起動リンクの後ろに繋げるのではなく、S502で取得するウェブコンテンツの中に誘導するURLの情報を含めてもよい。
以上説明したように、本実施形態によれば、判別モジュール2311は、取得されたアプリケーション204に固有の識別情報を用いて、起動してもよいか否かの判別を行う。そして、判別モジュール2311がアプリケーション204を起動してもよいと判別した場合に、起動モジュール2312がアプリ起動リンク601に基づくディープリンクを実行する。したがって、OS201のアプリケーション判別機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行うことができる。
また、本実施形態では、判別モジュール2311は、アプリケーション204がインストールされた際などに予め取得したハッシュ値と、アプリケーション204の起動要求を受け付けた後に計算により取得したハッシュ値との比較により判別を行う。したがって、起動させようとしているアプリケーション204が不正にインストールされたり改ざんされたりしたものでないことを、常駐アプリケーション203によりOSを用いずに検証することができる。
また例えば、前述したとおり、ディープリンクの提供方法としては、カスタムURLスキームを用いるも方法もある。しかし、この方法では、複数のアプリケーションで同じカスタムURLスキームが登録されている場合、どのアプリケーションを起動させるのかを確認するメッセージが表示され、ユーザが煩わしさを感じてしまうことがある。本実施形態では、ハッシュ値等のアプリケーションに固有の識別情報に基づいて検証を行った上でアプリケーションを起動するため、このような確認メッセージが表示されることはない。したがって、ユーザが煩わしさを感じてしまう可能性を低減でき、ユーザビリティを向上することができる。
<他の実施形態>
上記実施形態の説明では、起動対象のアプリケーション204が1つである場合を例に説明したが、アプリケーション204が複数であってもよい。すなわち、ローカルサーバ2031は、複数のアプリケーション204のうち、ブラウザ202から起動の要求を受け付けたアプリケーション204のハッシュ値等に基づいて、アプリケーション204を起動してもよいかの判別を行ってもよい。
また、上記実施形態では、アプリケーション204のインストールの有無をローカルサーバ2031からの応答の有無で判別している。しかしながら、アプリケーション204がインストールされているか否かの判別は、ローカルサーバ2031の応答の有無に限られない。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
1 サーバ、2 クライアント、202 ブラウザ、203 常駐アプリケーション、2031 ローカルサーバ、2311判別モジュール、2312 起動モジュール、204 起動対象アプリケーション

Claims (12)

  1. 第1アプリケーションをインストールする第1インストール手段と、
    前記第1アプリケーションを起動するための第2アプリケーションをインストールする第2インストール手段と、
    前記第1インストール手段によりインストールされた前記第1アプリケーションに固有の識別情報を取得する取得手段と、
    ディープリンクを用いた前記第1アプリケーションの起動の要求を受け付ける受け付け手段と、
    前記第2アプリケーションにより、前記受け付け手段が前記起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得手段により取得された前記識別情報を用いて判別する第1判別手段と、
    前記第2アプリケーションにより、前記第1判別手段の判別結果に基づいて前記第1アプリケーションを起動する起動手段と、を備える、
    ことを特徴とする情報処理装置。
  2. 前記第1インストール手段により前記第1アプリケーションがインストールされているか否かを判別する第2判別手段と、
    前記第1アプリケーションがインストールされていると前記第2判別手段が判別した場合に、前記第2アプリケーションに対して前記第1アプリケーションの起動を要求する要求手段と、をさらに備える、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2判別手段により前記第1アプリケーションがインストールされていないと判別された場合に、前記第1アプリケーションをインストールするように誘導する誘導手段をさらに備える、ことを特徴とする請求項2に記載の情報処理装置。
  4. Webブラウザが、前記第2判別手段、前記要求手段及び前記誘導手段として機能することを特徴とする請求項3に記載の情報処理装置。
  5. 前記第1インストール手段による前記第1アプリケーションのインストールと、前記第2インストール手段による前記第2アプリケーションのインストールとが同時に行われることを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記第2アプリケーションは常駐アプリケーションであることを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. 前記第2アプリケーションは、前記第1判別手段及び前記起動手段として機能するローカルサーバを含み、
    前記ローカルサーバは、前記情報処理装置の外部からアクセスできないことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記第1アプリケーションに固有の識別情報は、前記第1アプリケーションのハッシュ値を含むことを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. 前記第1判別手段は、前記取得手段により取得された前記識別情報と、前記受け付け手段が前記第1アプリケーションの起動の要求を受け付けた後に取得した前記第1アプリケーションの前記識別情報とを比較することにより、前記第1アプリケーションを起動するか否かを判別することを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 第1アプリケーションをインストールする第1インストール工程と、
    前記第1アプリケーションを起動するための第2アプリケーションをインストールする第2インストール工程と、
    前記第1インストール工程でインストールされた前記第1アプリケーションに固有の識別情報を取得する取得工程と、
    ディープリンクを用いた前記第1アプリケーションの起動の要求を受け付ける受け付け工程と、
    前記第2アプリケーションにより、前記受け付け工程で前記起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得工程で取得された前記識別情報を用いて判別する第1判別工程と、
    前記第2アプリケーションにより、前記第1判別工程での判別結果に基づいて前記第1アプリケーションを起動する起動工程と、を備える、
    ことを特徴とするアプリケーションの起動方法。
  11. コンピュータに、請求項10に記載のアプリケーションの起動方法の各工程を実行させるためのプログラム。
  12. コンピュータを、
    インストールされたアプリケーションに固有の識別情報を取得する取得手段、
    前記コンピュータがディープリンクを用いた前記アプリケーションの起動の要求を受け付けた場合に、前記アプリケーションを起動するか否かを前記取得手段により取得された前記識別情報を用いて判別する判別手段、
    前記判別手段の判別結果に基づいて前記アプリケーションを起動する起動手段、
    の各手段として機能させるためのプログラム。
JP2020128510A 2020-07-29 2020-07-29 情報処理装置、アプリケーションの起動方法及びプログラム Pending JP2022025599A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020128510A JP2022025599A (ja) 2020-07-29 2020-07-29 情報処理装置、アプリケーションの起動方法及びプログラム
US17/386,865 US20220035613A1 (en) 2020-07-29 2021-07-28 Information processing apparatus, method of activating an application and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020128510A JP2022025599A (ja) 2020-07-29 2020-07-29 情報処理装置、アプリケーションの起動方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2022025599A true JP2022025599A (ja) 2022-02-10

Family

ID=80004322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020128510A Pending JP2022025599A (ja) 2020-07-29 2020-07-29 情報処理装置、アプリケーションの起動方法及びプログラム

Country Status (2)

Country Link
US (1) US20220035613A1 (ja)
JP (1) JP2022025599A (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041957B2 (en) * 2003-04-08 2011-10-18 Qualcomm Incorporated Associating software with hardware using cryptography
AU2012332626A1 (en) * 2011-11-01 2014-05-22 Google Llc Launching applications from webpages
US10032042B1 (en) * 2014-12-10 2018-07-24 Morphotrust Usa, Llc Digital identification enrollment
WO2017195161A1 (en) * 2016-05-13 2017-11-16 nChain Holdings Limited A method and system for verifying ownership of a digital asset using a distributed hash table and a peer-to-peer distributed ledger
JP6747095B2 (ja) * 2016-06-24 2020-08-26 ブラザー工業株式会社 情報処理プログラムおよび情報処理装置
US10535005B1 (en) * 2016-10-26 2020-01-14 Google Llc Providing contextual actions for mobile onscreen content
EP3635578A4 (en) * 2017-05-18 2021-08-25 Aiqudo, Inc. SYSTEMS AND PROCEDURES FOR CRWODSOURCING ACTIONS AND COMMANDS
US10861348B2 (en) * 2018-03-20 2020-12-08 Microsoft Technology Licensing, Llc Cross-application feature linking and educational messaging
US10452868B1 (en) * 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering

Also Published As

Publication number Publication date
US20220035613A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
US11256491B2 (en) System and methods for integration of an application runtime environment into a user computing environment
US10235472B2 (en) Guest browser
CN101334824B (zh) 在不可信计算机上执行在线机密事务的便携式安全计算环境
US7596610B2 (en) Method and system for installing applications via a display page
US6915486B2 (en) Customizing a graphical user interface of a host application
JP4353487B2 (ja) ローカル・プロキシにより通信情報を共有する方法
US20160142413A1 (en) Ephemeral applications
EP2527975A1 (en) Set-up of a thin client computer
JP2010537340A (ja) スマートカードにブラウザベースでアクセスするシステムおよび方法
EP2616949A2 (en) Reputation checking obtained files
CN108135026B (zh) Wi-Fi连接方法、计算机设备及存储介质
US11620035B2 (en) Streamlined hosted applications
US20220021727A1 (en) System and method for launching and connecting to a local server from a webpage
US20220021726A1 (en) Smart url integration using serverless service
JP2011175461A (ja) 通信システム及びサーバ及び端末装置及び通信システムの通信方法及びサーバ用プログラム及び端末用プログラム
US9443012B2 (en) Method of determining http process information
JP2022025599A (ja) 情報処理装置、アプリケーションの起動方法及びプログラム
JP6888322B2 (ja) 印刷装置およびコンテンツ表示方法
US20200404004A1 (en) Browsing management server, browsing management method, and browsing management system
US20230176822A1 (en) Information processing apparatus, method, and non-transitory recording medium
JP3783000B2 (ja) プログラム起動制御装置、方法及びプログラム
KR101748450B1 (ko) 복수의 플랫폼을 연동하여 웹페이지를 공유하는 방법 및 서버
Bartlett et al. Setting Up a Cloud Server
CN116069637A (zh) 一种应用程序的测试方法、装置、设备及存储介质
JP2018037867A (ja) 情報処理装置およびプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230714