JP7215580B2 - チャットボットシステム及び情報処理方法 - Google Patents

チャットボットシステム及び情報処理方法 Download PDF

Info

Publication number
JP7215580B2
JP7215580B2 JP2021529653A JP2021529653A JP7215580B2 JP 7215580 B2 JP7215580 B2 JP 7215580B2 JP 2021529653 A JP2021529653 A JP 2021529653A JP 2021529653 A JP2021529653 A JP 2021529653A JP 7215580 B2 JP7215580 B2 JP 7215580B2
Authority
JP
Japan
Prior art keywords
chatbot
cid
user
message
key
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.)
Active
Application number
JP2021529653A
Other languages
English (en)
Other versions
JPWO2021001989A1 (ja
Inventor
悠介 飯島
鉄太郎 小林
祐人 川原
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2021001989A1 publication Critical patent/JPWO2021001989A1/ja
Application granted granted Critical
Publication of JP7215580B2 publication Critical patent/JP7215580B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、チャットボットシステム及び情報処理方に関する。
チャットボットシステムが従来から知られている。チャットボットシステムとは、チャットサーバを介したメッセージ(例えば、音声やテキスト等)のやり取りによって、ユーザに対して外部サービス内のデータや機能を提供するシステムである。例えば、Slacks(登録商標)上で動作するチャットボットシステムとして、Meekan Scheduling Robot for Slackが知られている(例えば非特許文献1参照)。
Meekan Scheduling Robot for Slack<URL:https://slack.com/apps/A0G51AT60-meekan-scheduling>
しかしながら、従来のチャットボットシステムでは、同じチャットボットシステムに接続している他のユーザやチャットボットが外部サービスの利用権限を持たない場合であっても、当該外部サービスから取得されたデータの閲覧等の利用ができてしまうことがあった。
本発明の実施形態は、上記の点に鑑みてなされたもので、チャットボットシステムにおいて外部サービスから得られたデータの利用を制御することを目的とする。
上記目的を達成するため、本発明の実施形態におけるチャットボットシステムは、複数のユーザ端末と、チャットボットと、チャットサーバとが含まれるチャットボットシステムであって、前記チャットボットは、外部サービスから取得したデータからメッセージを作成するメッセージ作成手段と、前記データの利用権限を有するユーザ端末のユーザIDが含まれるリストを入力として、暗号文ポリシー属性ベース暗号の暗号化アルゴリズムによりポリシー付き暗号文を生成する暗号化手段と、前記ポリシー付き暗号文を前記チャットサーバに送信する送信手段と、を有し、前記ユーザ端末は、前記チャットサーバからポリシー付き暗号文を受信する受信手段と、自身のユーザIDに基づき生成された属性付き秘密鍵を用いて、前記ポリシー付き暗号文を復号する復号手段と、を有することを特徴とする。
チャットボットシステムにおいて外部サービスから得られたデータの利用を制御することができる。
従来のチャットボットシステムの全体構成の一例を説明するための図である。 本実施形態に係るチャットボットシステムの全体構成の一例を説明するための図である。 本実施形態に係るチャットボットシステムの機能構成の一例を説明するための図である。 コンピュータのハードウェア構成の一例を説明するための図である。 本実施形態に係るセットアップ処理及び秘密鍵発行処理の流れを説明するための図である。 ユーザ端末によるメッセージ送信でチャットボット利用処理が開始する場合(実施例1)の流れを説明するための図である。 チャットボットが外部サービスからデータを受信することでチャットボット利用処理が開始する場合(実施例1)の流れを説明するための図である。 ユーザ端末によるメッセージ送信でチャットボット利用処理が開始する場合(実施例2)の流れを説明するための図である。 ユーザ端末によるメッセージ送信でチャットボット利用処理が開始する場合(実施例3)の流れを説明するための図である。
以下、本発明の実施形態(以降、「本実施形態」とも表す。)について説明する。本実施形態では、外部サービスから得られたデータの利用を制御することができるチャットボットシステム1について説明する。なお、外部サービスとは、外部のサービス提供者によって提供される任意のサービスのことであり、例えば、顧客管理サービス、スケジュールサービス、クラウドストレージサービス、プロジェクト管理サービス等の種々のサービスが挙げられる。
<従来のチャットボットシステム>
本実施形態に係るチャットボットシステム1の説明をする前に、従来のチャットボットシステムの全体構成やその動作、チャットボットシステムに一般に用いられる用語等について説明する。
図1に示すように、従来のチャットボットシステムには、チャットサーバと、複数の外部サービスと、複数のチャットボットと、複数のユーザ端末とが含まれ、チャットサーバとユーザ端末間、チャットサーバとチャットボット間、チャットボットと外部サービス間のそれぞれで通信を行う。なお、チャットボットとは、例えば、チャットボットとして機能するプログラム等が搭載されたサーバ又はシステムのことである。また、外部サービスは、このサービスを提供するサーバ又はシステムのことである。
各ユーザ端末(又は、ユーザ端末を利用する各ユーザ)には、例えば、氏名、電話番号、メールアドレス、ニックネーム、整数、ランダムな文字列又はこれらの組み合わせ等で表現される有限の記号列が一意に定められる。この記号列は、一般に「ユーザID」と呼ばれる。
また、各チャットボットにも、例えば、チャットボット名、整数、ランダムな文字列等で表現される有限の記号列が一意に定められる。この記号列は、一般に「チャットボットID」と呼ばれる。
各ユーザ端末には、全てのユーザ端末のユーザIDと、全てのチャットボットのチャットボットIDとが保存されている。以降では、全ユーザ端末数をN、全チャットボット数をLとして、ユーザIDを「UID」~「UID」、チャットボットIDを「CID」~「CID」とする。
以降では、簡単のため、i=1,・・・、Nとして、「ユーザID「UID」が定められているユーザ端末」を「ユーザ端末UID」又は単に「ユーザUID」とも表す。同様に、j=1,・・・,Lとして、「チャットボットID「CID」が定められているチャットボット」を「チャットボットCID」とも表す。
このとき、例えば、ユーザID「UID」が定められているユーザ端末がメッセージを送信する場合の処理は、以下の手順1-1~手順1-2のようになる。
手順1-1:ユーザUIDは、メッセージMと自身のユーザID「UID」とをチャットサーバに送信する。
手順1-2:チャットサーバは、メッセージMとユーザID「UID」とを受信すると、全てのユーザ端末(つまり、ユーザUID~ユーザUID)と全てのチャットボット(つまり、チャットボットCID~チャットボットCID)とに対して、当該メッセージMとユーザID「UID」とを送信する。なお、このとき、ユーザUIDにはメッセージMとユーザID「UID」とを送信しない場合もある。
同様に、例えば、チャットボットCIDがメッセージを送信する場合の処理は、以下の手順2-1~手順2-2のようになる。
手順2-1:チャットボットCIDは、メッセージMと自身のチャットボットID「CID」とをチャットサーバに送信する。
手順2-2:チャットサーバは、メッセージMとユーザID「CID」とを受信すると、全てのユーザ端末と全てのチャットボットとに対して、当該メッセージMとチャットボットID「CID」とを送信する。なお、このとき、チャットボットCIDにはメッセージMとチャットボットID「CID」とを送信しない場合もある。
なお、チャットボットがメッセージを送信する場合、チャットボットシステムによっては手順2-2でユーザ端末CID~ユーザ端末CIDのみにメッセージを送信する(つまり、チャットボットCID~チャットボットCIDにはメッセージを送信しない)場合もある。
また、一部のチャットサーバにはメッセージを保存機能もあり、このようなチャットサーバは「ビジネスチャットサーバ」とも呼ばれる。ビジネスチャットサーバにはメッセージを保存するテーブルが用意されている。このテーブルの一例を以下の表1に示す。
Figure 0007215580000001
ビジネスチャットサーバは、上記の手順1-2や手順2-2でメッセージを送信する前又は後で、メッセージを識別するメッセージIDと当該メッセージと送信元のユーザID又はチャットボットIDとを対応付けた行をテーブルに追加することでメッセージを保存する。
ビジネスチャットサーバに保存されているメッセージを取得する場合には、ユーザUID(1≦i≦N)は、メッセージ取得リクエストをビジネスチャットサーバに送信する。メッセージ取得リクエストには、例えば、「取得対象のメッセージIDを指定したリクエスト」、「特定のキーワードを含むメッセージを取得するリクエスト」、「全てのメッセージを取得するためのリクエスト」等がある。
次に、外部サービスについて説明する。外部サービス内のデータとしては、例えば、スケジュール情報、顧客情報、タスク情報等が挙げられる。また、外部サービスの機能としては、例えば、データの閲覧や編集、メールの送受信、投票機能等が挙げられる。このような外部サービスのデータや機能は許可されたユーザのみが利用できることが一般的である。
ここでは、データの閲覧機能を例として、チャットボットと接続される外部サービスの処理について説明する。通常、外部サービスでは、チャットボットシステムのユーザIDとは異なるIDでユーザ端末を識別する。そのため、各ユーザ端末には、整数、氏名、電話番号、メールアドレス、ニックネーム、ランダムな文字列又はこれらの組み合わせ等で表現される有限の記号列が一意に定められているものとする。同様に、各チャットボットにも、チャットボット名、整数、ランダムな文字列等で表現される有限の記号列が一意に定められる。これらの記号列を「クライアントID」と呼ぶ。
外部サービス内には複数のデータが保存されており、各データに対してクライアントIDのリストが定められている。クライアントID「OID」が定められているユーザ端末(又はチャットボット)が外部サービスに保存されたデータDに閲覧権限を持つとは、データDに対して定められたリストに当該ユーザ端末(又は当該チャットボット)のクライアントIDが登録されていること指す。リストは固定されたものではなく、時間の経過と共に変更されることもある。そのため、データDに閲覧権限を持つユーザ端末(又はチャットボット)が、時間の経過により閲覧権限を持たなくなることもある。
各クライアントIDに対してランダムな文字列又はビット列が一意に存在し、チャットボットと外部サービスとに保存されている。このランダムな文字列又はビット列を「代理認証情報」と呼ぶ。このようにチャットボットと外部サービスとの間で代理認証情報を共有する技術としては、例えば、「OAuth2.0,<URL:https://tools.ietf.org/html/rfc6749>」等がある。
クライアントID「OID」が定められているユーザ端末が、外部サービス内のデータDに閲覧権限を持ち、クライアントID「OID」に対する代理認証情報を「Cert」と表す。チャットボットがデータDを取得する場合の処理は、以下の手順3-1~手順3-2のようになる。
手順3-1:チャットボットは、クライアントID「OID」とデータ取得リクエストReqと代理認証情報Certとを外部サービスに送信する。
手順3-2:外部サービスは、CertがOIDの代理認証情報であることを確認し、Reqで要求されたデータDに対して、OIDが閲覧権限を持つことを確認する。CertがOIDの代理認証情報であり、かつ、OIDが閲覧権限を持つことが確認された場合には、外部サービスは、データDをチャットボットに送信する。一方で、そうでない場合には、外部サービスは処理を停止する。なお、Reqで要求されたデータが複数存在する場合、外部サービスは、OIDが閲覧権限を持つデータのみをチャットボットに送信する。
以上のチャットサーバ及び外部サービスを用いて、チャットボットは次のように動作する。まず、チャットボットCID(1≦i≦L)にはP個の外部サービスが接続しているものとして、それぞれの外部サービスを「S 」,「S 」,・・・,「S Pi」と表す。また、外部サービスS (1≦k≦P)で定められているクライアントIDを「OID k,1」~「OID k,N+L」とする。
各チャットボットCIDには、各外部サービスS に対して、ユーザID「UID」に対応するクライアントID「OID k,j」と、自身以外のチャットボットのチャットボットID「CIDに対応するクライアントID「OID k,N+j」とがテーブル等を用いて保存されている。ただし、全ての対応関係が保存されているわけではなく、クライアントIDが保存されていないユーザIDやチャットボットIDが存在する場合もある。また、ユーザIDとクライアントIDとの対応関係やチャットボットIDとクライアントIDとの対応関係がチャットボットに保存されている場合には、当該チャットボットには、クライアントIDに対応する代理認証情報が保存されているものとする。
例えば、チャットボットCIDが保持するテーブルのうち、外部サービスS に対するユーザIDとクライアントIDとの対応関係が格納されたテーブルの一例を以下の表2に示す。
Figure 0007215580000002
同様に、例えば、チャットボットCIDが保持するテーブルのうち、外部サービスS に対するチャットボットIDとクライアントIDとの対応関係が格納されたテーブルの一例を以下の表3に示す。
Figure 0007215580000003
なお、上記の表2及び表3以外にも、チャットボットCIDは、外部サービス毎に、ユーザIDとクライアントIDとの対応関係が格納されたテーブルと、チャットボットIDとクライアントIDとの対応関係が格納されたテーブルとを保持している。以降では、このように、ユーザID(又はチャットボットID)とクライアントIDと代理認証情報との対応関係が格納されたテーブルを「代理認証情報テーブル」とも表す。
ここで、チャットボットCIDは、例えば、「チャットサーバからメッセージM及びユーザID「UID」を受信する」、「チャットサーバからメッセージM及びチャットボットID「CID」を受信する」、「指定時刻になった等のチャットボットが自発的に起動する条件を満たす」等の条件により「チャットボット処理」を行う。チャットボット処理では、チャットボットで定められた条件や処理手順に従い、「外部サービスのデータ取得処理」と「メッセージの送信処理」とをそれぞれ0又は1回以上実行する。
「外部サービスのデータ取得処理」を実行する際の入力に必要なデータの取得先の外部サービス(つまり、データ取得リクエストの送信先外部サービス)やデータ取得リクエスト等は、チャットボット処理が実行されるタイミングや条件に対応して、チャットボット内部に予め設定されている。例えば、「処理開始直後に実行される「外部サービスのデータ取得処理」の送信先外部サービスはS 、データ取得リクエストは固定値Req」や「受信したメッセージに特定の文言が含まれる場合、「外部サービスのデータ取得処理」の送信先外部サービスはS 、データ取得リクエストはメッセージを基に作成される」、「S からデータを取得した後に実行される「外部サービスのデータ取得処理」の送信先外部サービスはS k´、データ取得リクエストはS から取得したデータを基に作成される」等のように設定される。
以下の(1)及び(2)に、「外部サービスのデータ取得処理」及び「メッセージの送信処理」の入力及び処理内容をそれぞれ示す。
(1)外部サービスのデータ取得処理
[入力]
・送信先外部サービスS
・データ取得リクエストReq
・クライアントID「OID k,j
・外部サービスから取得したデータのリストDL
[処理内容]
手順4-1:チャットボットCIDは、クライアントID「OID k,j」と、このクライアントID「OID k,j」の代理認証情報Cert k,jと、データ取得リクエストReqとを外部サービスS に送信する。
手順4-2:外部サービスS は、OID k,jとCert k,jとReqとを受信すると、Cert k,jがOID k,jの代理認証情報であることを確認すると共に、Reqで要求されたデータDに対してOID k,jが閲覧権限を持つことを確認する。そして、これらが確認された場合、外部サービスS は、データDをチャットボットCIDに送信する。
手順4-3:チャットボットCIDは、外部サービスS からDを受信する。
手順4-4:チャットボットCIDは、リストDLに保存する。
(2)メッセージの送信処理
[入力]
・外部サービスから取得したデータのリストDL
[処理内容]
手順5-1:チャットボットCIDは、外部サービスから取得したデータのリストDLからいくつかのデータD´~D´を選択した上で、これらのD´~D´をメッセージM´に変換(又は、これらのD´~D´からメッセージM´を作成)する。なお、外部サービスから取得したデータがない場合(つまり、リストDLが空である場合)、チャットボットCIDは、チャットボット内部で予め定められた処理に従ってメッセージM´を作成する。
手順5-2:チャットボットCIDは、自身のチャットボットID「CID」とメッセージM´とをチャットサーバに送信する。
また、チャットボット処理は、以下の手順6-1~手順6-4のようになる。
手順6-1:チャットボットCID(1≦i≦L)は、チャットボット処理を開始する。
手順6-2:チャットボットCIDは、チャットボット処理の中で利用するユーザID又はチャットボットIDを1つ定める。ここで、例えば、「チャットサーバからメッセージM及びユーザID「UID」を受信する」によりチャットボット処理が開始された場合には、チャットボットCIDは、受信したユーザID「UID」を、チャットボット処理の中で利用するユーザIDとして定める。一方で、「チャットサーバからメッセージM及びチャットボットID「CID」を受信する」によりチャットボット処理が開始された場合には、チャットボットCIDは、受信したチャットボットID「CID」を、チャットボット処理の中で利用するチャットボットIDとして定める。
手順6-3:チャットボットCIDは、チャットボット処理の中で取得する外部サービスのデータを保存する空のリストDLを用意し、チャットボットで定められた条件や処理手順に従い、「外部サービスのデータ取得処理」と「メッセージの送信処理」とをそれぞれ0又は1回以上実行する。
手順6-4:「外部サービスのデータ取得処理」を実行する場合には、チャットボットCIDは、チャットボット内部で定められた設定に従い、送信先外部サービスS とデータ取得リクエストReqとを入力として決定する。また、チャットボットCIDは、クライアントIDとして、上記の手順6-2で定めたユーザID「UID」又はチャットボットID「CID」に対応するクライアントID「OID k,j」又は「OID k,N+j」を入力として用いる。更に、チャットボットCIDは、上記の手順6-3で用意したリストDLを入力として用いる。なお、「外部サービスのデータ取得処理」により、外部サービスS から取得されたデータDがリストDLに追加される。
手順6-5:「メッセージの送信処理」を実行する場合には、チャットボットCIDは、外部サービスのデータを保存するリストDLを入力に用いる。なお、「メッセージの送信処理」により、チャットボットID「CID」及びメッセージM´がチャットサーバに送信される。
なお、上記で説明したチャットボット処理の詳細については、例えば、上記の非特許文献1等を参照されたい。
<本実施形態の概略>
ここで、チャットボットシステムにおいて、外部サービスのデータを閲覧できるのは、基本的に外部サービスのデータに対して閲覧権限を持つユーザ端末だけである必要がある。これに対して、上述した従来のチャットボットシステムでは、メッセージを送信したユーザ端末又はチャットボットの代理認証情報を使って外部サービスにデータ取得リクエストを送信し、外部サービスからデータを取得していた。つまり、チャットボットは、メッセージを送信したユーザ端末又はチャットボットの閲覧権限の有無のみを確認し、外部サービスからデータを取得し、この取得したデータからメッセージの作成及び送信を行っていた。他方で、チャットサーバは既存のサービスを用いるため、チャットサーバに送信先の制御を行わせることはできない。このため、従来のチャットボットシステムでは、外部サービスの閲覧権限を持たないユーザ端末やチャットボットが、外部サービスのデータを閲覧できてしまう場合がある。
例えば、ユーザ端末UID、ユーザ端末UID、ユーザ端末UID及びチャットボットCIDがチャットサーバに接続されており、外部サービスにデータDが保存されており、このデータDにはユーザ端末UID及びユーザ端末UIDのみが閲覧権限を持つものとする。この場合に、ユーザ端末UIDがデータDを共有するためにチャットボットを利用すると、全員がデータDを閲覧することが可能となる。すなわち、データDの閲覧権限を持たないユーザ端末UIDもデータDを閲覧することができてしまう。
また、ビジネスチャットサーバを用いたチャットボットシステムの場合、上記の閲覧権限に関する問題に加えて、データの閲覧権限が変更された後にも当該データを利用できてしまうという問題がある。つまり、ビジネスチャットサーバには、外部サービスのデータが変換されたメッセージが保存される。このとき、外部サービスに保存されている元のデータの閲覧権限が変更されたとしても、この変更はビジネスチャットサーバに保存されているメッセージには反映されない。
したがって、例えば、外部サービスに保存されている元のデータに有効期限があるような場合であっても、ビジネスチャットサーバに保存されるメッセージに含まれるデータは無期限に閲覧できてしまう。また、例えば、過去の或る時点ではユーザ端末UIDは外部サービスのデータDに閲覧権限を持っていたが、その後に閲覧権限が変更され、ユーザ端末UIDが閲覧権限を持たなくなった場合であっても、ユーザ端末UIDは、ビジネスチャットサーバに保存されているメッセージに含まれるデータを閲覧できてします。
そこで、本実施形態に係るチャットボットシステム1では、外部サービス側で設定されているデータの閲覧権限を持つユーザ端末のみ当該データを閲覧可能であるようにする。また、チャットサーバとしてビジネスチャットサーバが用いられている場合には、本実施形態に係るチャットボットシステム1は、閲覧権限が有効な期間内のみ、チャットサーバに保存されているメッセージ(外部サービスのデータから生成されたメッセージ)を閲覧可能にする。
このために、本実施形態に係るチャットボットシステム1では、暗号文ポリシー属性ベース暗号(CP-ABE:Ciphertext policy Attribute-Based Encryption)を利用する。
CP-ABEは、属性付き秘密鍵にユーザの属性を関連付けると共に、ポリシー付き暗号文に復号条件(ポリシー)を関連付けて、復号条件(ポリシー)を満たす秘密鍵でのみ暗号文を復号可能な暗号方式である。CP-ABEは、セットアップアルゴリズム(Setup)と、鍵生成アルゴリズム(KeyGen)と、暗号化アルゴリズム(Enc)と、復号アルゴリズム(Dec)とで構成される。
Setupは、属性集合とセキュリティパラメータとを入力として、公開鍵とマスター秘密鍵とを出力する確率的アルゴリズムである。
KeyGenは、マスター秘密鍵と属性とを入力として、属性付き秘密鍵を1つ出力する確率的アルゴリズムである。
Encは、公開鍵と暗号化対象の平文とポリシーとを入力として、ポリシー付き暗号文を1つ出力する確率的アルゴリズムである。
Decは、属性付き秘密鍵とポリシー付き暗号文とを入力として、平文を出力する確定的アルゴリズムである。
なお、CP-ABEの詳細については、例えば、「T.Okamoto, K.Takashima, "Fully Secure Functional Encryption with General Relations from the Decisional Linear Assumption" , CRYPTO 2010」等の文献を参照されたい。
<チャットボットシステム1の全体構成>
図2に示すように、本実施形態に係るチャットボットシステム1には、チャットサーバ10と、複数のユーザ端末20と、1以上の第1のチャットボット31と、1以上の第2のチャットボット32と、複数の外部サービス40と、1以上の鍵発行局50とが含まれる。ただし、第1のチャットボット31と第2のチャットボット32とは必ずしも両方が含まれている必要はなく、第1のチャットボット31又は第2のチャットボット32のいずれか一方が含まれていれば他方は含まれている必要はない。以降では、第1のチャットボット31及び第2のチャットボット32を総称して「チャットボット30」と表す。
また、本実施形態に係るチャットボットシステム1では、チャットサーバ10とユーザ端末20間、チャットサーバ10とチャットボット30間、チャットボット30と外部サービス40間、ユーザ端末20と鍵発行局50及びチャットボット30と鍵発行局50のそれぞれで通信を行う。なお、鍵発行局50とは、鍵発行局として機能するプログラム等が搭載されたサーバ又はシステムのことである。また、上述したように、チャットボット30とは、例えば、チャットボットとして機能するプログラム等が搭載されたサーバ又はシステムのことである。更に、上述したように、外部サービス40は、このサービスを提供するサーバ又はシステムのことである。
なお、以降の本実施形態の説明でも、i=1,・・・、Nとして、「ユーザID「UID」が定められているユーザ端末20」を「ユーザ端末UID」又は単に「ユーザUID」とも表す。同様に、特に断らない限り、j=1,・・・,Lとして、「チャットボットID「CID」が定められているチャットボット30」を「チャットボットCID」とも表す。同様に、チャットボットCID(1≦i≦L)にはP個の外部サービス40が接続しているものとして、それぞれの外部サービス40を「S 」,「S 」,・・・,「S Pi」と表す。その他の記号についても上記の「従来のチャットボットシステム」で用いたものと同様の記号を利用する。
<チャットボットシステム1の機能構成>
次に、本実施形態に係るチャットボットシステム1に含まれるユーザ端末20、チャットボット30及び鍵発行局50の機能構成について説明する。
≪鍵発行局50≫
図3に示すように、本実施形態に係る鍵発行局50は、鍵発行処理部501と、記憶部502とを有する。鍵発行処理部501は、コンピュータ(情報処理装置)等にインストールされた1以上のプログラムがプロセッサ等に実行させる処理により実現される。また、記憶部502は、例えば補助記憶装置等を用いて実現可能である。
鍵発行処理部501は、セットアップ処理と秘密鍵発行処理とを行う。セットアップ処理では、セットアップアルゴリズムSetupにより、公開鍵mpkとマスター秘密鍵mskとを生成し、公開鍵mpkをチャットボット30に送信すると共に、マスター秘密鍵mskを記憶部502に保存する。
秘密鍵発行処理では、ユーザID「UID」と認証情報TKUIDとをユーザ端末20から受信すると、TKUIDを用いてUIDが正当なユーザIDであるか否かの認証を行い、この認証が成功した場合に、鍵生成アルゴリズムKeyGenによりUIDを属性とした属性付き秘密鍵を生成した上で、この属性付き秘密鍵を当該ユーザ端末20に送信する。また、秘密鍵発行処理では、チャットボットID「CID」と認証情報TKCIDとを第2のチャットボット32から受信すると、TKCIDを用いてCIDが正当なチャットボットIDであるか否かの認証を行い、この認証が成功した場合に、鍵生成アルゴリズムKeyGenによりCIDを属性とした属性付き秘密鍵を生成した上で、この属性付き秘密鍵を当該第2のチャットボット32に送信する。
なお、チャットサーバ10がビジネスチャットサーバである場合には、秘密鍵発行処理において属性付き秘密鍵を生成する際に、ユーザID又はチャットボットIDに加えて、現在時刻を属性として追加した属性付き秘密鍵を生成する。
≪第1のチャットボット31≫
図3に示すように、本実施形態に係る第1のチャットボット31には、チャット処理部311と、暗号化処理部312と、記憶部313とが含まれる。チャット処理部311及び暗号化処理部312は、コンピュータ(情報処理装置)等にインストールされた1以上のプログラムがプロセッサ等に実行させる処理により実現される。また、記憶部313は、例えば補助記憶装置等を用いて実現可能である。
記憶部313には、鍵発行局50を一意に識別する鍵発行局IDや、この鍵発行局IDに対応する鍵発行局50から取得した公開鍵が保存される。また、記憶部313には、上述したテーブル(ユーザIDとクライアントIDとの対応関係が格納されたテーブル、チャットボットIDとクライアントIDとの対応関係が格納されたテーブル等)が保存されている。更に、チャットサーバ10がビジネスチャットサーバである場合には、記憶部313には、復号可能期間幅T(ただし、Tは1以上整数)が保存される。なお、記憶部313には、2つ以上の鍵発行局50から公開鍵を取得することはないものとする。
チャット処理部311は、チャットボット処理を行う。暗号化処理部312は、チャットボット処理中において、記憶部313に記憶されている公開鍵を用いて、メッセージを暗号化する。したがって、第1のチャットボット31は、「暗号化機能付きチャットボット」のことである。
第1のチャットボット31の「チャットボット処理」は、上記の「従来のチャットボットシステム」で説明したチャットボット処理から以下のように変更される。
第1のチャットボット31(ここでは、「チャットボットCID」とする。)は、例えば、「チャットサーバ10からメッセージM及びユーザID「UID」を受信する」、「チャットサーバ10からメッセージM及びチャットボットID「CID」を受信する」、「指定時刻になった等のチャットボット30が自発的に起動する条件を満たす」等の条件により「チャットボット処理」を行う。チャットボット処理では、チャットボット30で定められた条件や処理手順に従い、「外部サービスのデータ取得処理」と「メッセージの送信処理」とをそれぞれ0又は1回以上実行する。
「外部サービスのデータ取得処理」を実行する際の入力に必要なデータの取得先の外部サービス40(つまり、データ取得リクエストの送信先外部サービス)やデータ取得リクエスト等は、チャットボット処理が実行されるタイミングや条件に対応して、チャットボット30内部に予め設定されている。例えば、「処理開始直後に実行される「外部サービスのデータ取得処理」の送信先外部サービスはS 、データ取得リクエストは固定値Req」や「受信したメッセージに特定の文言が含まれる場合、「外部サービスのデータ取得処理」の送信先外部サービスはS 、データ取得リクエストはメッセージを基に作成される」、「S からデータを取得した後に実行される「外部サービスのデータ取得処理」の送信先外部サービスはS k´、データ取得リクエストはS から取得したデータを基に作成される」等のように設定される。また、「メッセージの送信処理」は、「外部サービスのデータ取得処理」が1回以上実行された後に実行される。
以下の(1´)及び(2´)に、「外部サービスのデータ取得処理」及び「メッセージの送信処理」の入力及び処理内容をそれぞれ示す。
(1´)外部サービスのデータ取得処理
[入力]
・送信先外部サービスS
・データ取得リクエストReq
・クライアントID「OID k,j
・外部サービスから取得したデータのテーブルDL。ここで、テーブルDLは、外部サービス40から取得したデータが格納されるカラム(データカラム)と、このデータに対する閲覧権限のリストが格納されるカラム(閲覧権限リストカラム)とが含まれるテーブルである。
[処理内容]
手順7-1:チャットボットCIDは、クライアントID「OID k,j」と、このクライアントID「OID k,j」の代理認証情報Cert k,jと、データ取得リクエストReqとを外部サービスS に送信する。
手順7-2:外部サービスS は、OID k,jとCert k,jとReqとを受信すると、Cert k,jがOID k,jの代理認証情報であることを確認すると共に、Reqで要求されたデータDに対してOID k,jが閲覧権限を持つことを確認する。そして、これらが確認された場合、外部サービスS は、データDをチャットボットCIDに送信する。
手順7-3:チャットボットCIDは、外部サービスS からDを受信する。
手順7-4:チャットボットCIDは、外部サービスS からDの閲覧権限を持つクライアントIDのリストIを取得する。
手順7-5:チャットボットCIDは、記憶部313に保存されているテーブルにおけるクライアントIDとユーザIDとの対応関係及びクライアントIDとチャットボットIDとの対応関係を用いて、リストIDに含まれるクライアントIDに対応するユーザID及びチャットボットIDを全て集めたリストI´を作成する。
手順7-6:チャットボットCIDは、DとI´とを対応付けてテーブルDLに格納する(つまり、Dをデータカラム、I´を閲覧権限リストカラムとして、これらのDとI´とを対応付けた行をテーブルDLに格納する)。
(2´)メッセージの送信処理
[入力]
・外部サービスから取得したデータのテーブルDL。上述したように、テーブルDLは、データカラムと閲覧権限リストカラムとが含まれるテーブルである。
[処理内容]
手順8-1:チャットボットCIDは、テーブルDLのデータカラムからいくつかのデータD´~D´を選択した上で、これらのD´~D´をメッセージM´に変換(又は、これらのD´~D´からメッセージM´を作成)する。
手順8-2:チャットボットCIDは、上記の手順8-1で選択したD´~D´にそれぞれ対応する閲覧権限リストI´~I´をテーブルDLから取り出し、これらの閲覧権限リストI´~I´に共通するユーザID及びチャットボットIDを集めたリストI´を作成する。
手順8-3:チャットボットCIDは、メッセージM´を公開鍵で暗号化し、ポリシー付き暗号文を生成する。このとき、暗号化に利用するポリシーは、「属性付き秘密鍵の属性「UID」又は「CID」が、リストI´に含まれる場合に復号可能」とする。
なお、チャットサーバ10がビジネスチャットサーバである場合、暗号化に利用するポリシーは、暗号化時点の現在時刻をtとして、「属性付き秘密鍵の属性「UID」又は「CID」と属性「時刻s」とについて、属性「UID」又は「CID」がリストI´に含まれ、かつ、t≦s≦t+Tを満たす場合に復号可能」とする。
手順8-4:チャットボットCIDは、自身のチャットボットID「CID」とポリシー付き暗号文(つまり、暗号化されたメッセージM´)とをチャットサーバ10に送信する。
また、チャットボット処理は、以下の手順9-1~手順9-4のようになる。
手順9-1:チャットボットCIDは、チャットボット処理を開始する。
手順9-2:チャットボットCIDは、チャットボット処理の中で利用するユーザID又はチャットボットIDを1つ定める。ここで、例えば、「チャットサーバ10からメッセージM及びユーザID「UID」を受信する」によりチャットボット処理が開始された場合には、チャットボットCIDは、受信したユーザID「UID」を、チャットボット処理の中で利用するユーザIDとして定める。一方で、「チャットサーバからメッセージM及びチャットボットID「CID」を受信する」によりチャットボット処理が開始された場合には、チャットボットCIDは、受信したチャットボットID「CID」を、チャットボット処理の中で利用するチャットボットIDとして定める。
手順9-3:チャットボットCIDは、チャットボット処理の中で取得する外部サービス40のデータ及びその閲覧権限リストを保存する空のテーブルDLを用意し、チャットボット30で定められた条件や処理手順に従い、「外部サービスのデータ取得処理」と「メッセージの送信処理」とをそれぞれ0又は1回以上実行する。
手順9-4:「外部サービスのデータ取得処理」を実行する場合には、チャットボットCIDは、チャットボット30内部で定められた設定に従い、送信先外部サービスS とデータ取得リクエストReqとを入力として決定する。また、チャットボットCIDは、クライアントIDとして、上記の手順9-1で定めたユーザID「UID」又はチャットボットID「CID」に対応するクライアントID「OID k,j」又は「OID k,N+j」を入力として用いる。更に、チャットボットCIDは、上記の手順6-4で用意したテーブルDLを入力として用いる。なお、「外部サービスのデータ取得処理」により、外部サービスS から取得されたデータDと、このデータDに対する閲覧権限リストとがテーブルDLに追加される。
手順9-5:「メッセージの送信処理」を実行する場合には、チャットボットCIDは、外部サービス40のデータ及びその閲覧権限リストを保存するテーブルDLを入力に用いる。なお、「メッセージの送信処理」により、チャットボットID「CID」及び暗号化されたメッセージM´がチャットサーバに送信される。
≪第2のチャットボット32≫
図3に示すように、本実施形態に係る第2のチャットボット32には、チャット処理部321と、暗号化処理部322と、復号処理部323と、記憶部324とが含まれる。チャット処理部321、暗号化処理部322及び復号処理部323は、コンピュータ(情報処理装置)等にインストールされた1以上のプログラムがプロセッサ等に実行させる処理により実現される。また、記憶部324は、例えば補助記憶装置等を用いて実現可能である。なお、チャット処理部321及び暗号化処理部322は、第1のチャットボット31のチャット処理部311及び暗号化処理部312とそれぞれ同様であるため、その説明を省略する。
記憶部324には、第1のチャットボット31と同様の情報又はデータに加えて、各鍵発行局IDに対応する認証トークンが保存されている。また、記憶部324には、属性付き秘密鍵が格納されるテーブルも保存されている。このテーブルには、鍵発行局IDカラムと属性付き秘密鍵カラムとが含まれる。
復号処理部323は、チャットサーバ10からメッセージを受信すると、このメッセージの復号が必要か否かを判断し、復号が必要な場合には、鍵発行局IDを選択した上で、選択した鍵発行局IDに対応する属性付き秘密鍵を用いてメッセージを復号する。したがって、第2のチャットボット32は、「暗号化及び復号機能付きチャットボット」のことである。
ここで、復号が必要か否かを判断する方法としては、例えば、「メッセージの送信元のチャットボットIDを基に判断する」、「改ざん検知機能付き暗号方式を用いて、受信したメッセージが暗号文か否かを判断する」等が挙げられる。また、復号時の鍵発行局IDを選択する方法としては、例えば、「メッセージの送信元のチャットボットIDを用いる」、「候補となる全ての鍵発行局50を選択する」等が挙げられる。
第2のチャットボット32が鍵発行局50に対して属性付き認証鍵をリクエストする際には、このリクエストには、自身のチャットボットIDと鍵発行局50に対応する認証トークンとが含まれる。
第2のチャットボット32は、メッセージを復号する時点において、過去に鍵発行局50から取得した属性付き秘密鍵が、当該取得した時刻から復号可能期間幅以上経過していれば、新たな属性付き秘密鍵の発行を鍵発行局50にリクエストする。一方で、復号可能期間幅以上経過していない場合は、第2のチャットボット32は、過去に取得した属性付き秘密鍵を使用する。また、過去に取得した属性付き秘密鍵が無い場合、第2のチャットボット32は、リクエストを送信する送信先の鍵発行局50の鍵発行局IDを上述した方法により選択する。なお、鍵発行局50から取得された属性付き秘密鍵は、記憶部324に保存されているテーブルに格納される。
≪ユーザ端末20≫
図3に示すように、本実施形態に係るユーザ端末20には、チャット処理部201と、復号処理部202と、記憶部203とが含まれる。チャット処理部201及び復号処理部202は、ユーザ端末20にインストールされた1以上のプログラムがプロセッサ等に実行させる処理により実現される。また、記憶部203は、例えば補助記憶装置等を用いて実現可能である。
記憶部203には、自身のユーザID「UID」と各鍵発行局50に対応する認証トークンTKUIDとが保存されている。また、記憶部203には、属性付き秘密鍵が格納されるテーブルも保存されている。このテーブルには、鍵発行局IDカラムと属性付き秘密鍵カラムとが含まれる。
チャット処理部201は、メッセージの作成や送信等の処理を行う。復号処理部202は、チャットサーバ10からメッセージを受信すると、このメッセージの復号が必要か否かを判断し、復号が必要な場合には、鍵発行局IDを選択した上で、選択した鍵発行局IDに対応する属性付き秘密鍵を用いてメッセージを復号する。したがって、ユーザ端末20は、「復号機能付きユーザ端末」のことである。
ここで、復号が必要か否かを判断する方法としては、例えば、「メッセージの送信元のチャットボットIDを基に判断する」、「改ざん検知機能付き暗号方式を用いて、受信したメッセージが暗号文か否かを判断する」等が挙げられる。また、復号時の鍵発行局IDを選択する方法としては、例えば、「メッセージの送信元のチャットボットIDを用いる」、「候補となる全ての鍵発行局50を選択する」等が挙げられる。
ユーザ端末20が鍵発行局50に対して属性付き認証鍵をリクエストする際には、このリクエストには、自身のユーザID「UID」と鍵発行局50に対応する認証トークンTKUIDとが含まれる。
ユーザ端末20は、メッセージを復号する時点において、過去に鍵発行局50から取得した属性付き秘密鍵が、当該取得した時刻から復号可能期間幅以上経過していれば、新たな属性付き秘密鍵の発行を鍵発行局50にリクエストする。一方で、復号可能期間幅以上経過していない場合は、ユーザ端末20は、過去に取得した属性付き秘密鍵を使用する。また、過去に取得した属性付き秘密鍵が無い場合、ユーザ端末20は、リクエストを送信する送信先の鍵発行局50の鍵発行局IDを上述した方法により選択する。なお、鍵発行局50から取得された属性付き秘密鍵は、記憶部324に保存されているテーブルに格納される。
以上の本実施形態に係るチャットボットシステム1では、属性付き秘密鍵の属性としてユーザID又はチャットボットIDが追加され、ポリシー付き暗号文に設定されるポリシーによって、外部サービス40のデータに対して閲覧権限を持つユーザ端末20だけが当該データを閲覧することが可能となる。また、チャットサーバ10がビジネスチャットサーバである場合には、属性付き秘密鍵の属性として現在時刻が追加され、ポリシー付き暗号文に設定されるポリシーによって、外部サービス40のデータが変換されたメッセージがチャットサーバ10に保存されても、チャットボット30がデータを取得した時点の閲覧権限で一定期間内のみ閲覧が可能であり、復号可能期間経過後は閲覧できなくなるようにすることが可能となる。これにより、本実施形態に係るチャットボットシステム1では、外部サービス40から得られたデータの利用を制御することができるようになる。
<チャットボットシステム1のハードウェア構成>
次に、本実施形態に係るチャットボットシステム1に含まれるユーザ端末20、チャットボット30及び鍵発行局50を実現する装置又はシステムのハードウェアについて説明する。ユーザ端末20、チャットボット30及び鍵発行局50は、例えば、図4に示すコンピュータ600のハードウェアを用いて実現可能である。
図4に示すコンピュータ600には、入力装置601と、表示装置602と、外部I/F603と、RAM(Random Access Memory)604と、ROM(Read Only Memory)605と、プロセッサ606と、通信I/F607と、補助記憶装置608とを有する。これら各ハードウェアは、それぞれがバスBを介して相互に通信可能に接続されている。
入力装置601は、例えばキーボードやマウス、タッチパネル等である。表示装置602は、例えばディスプレイ等である。なお、チャットボット30や鍵発行局50を実現するコンピュータには入力装置601及び表示装置602の少なくとも一方が含まれていなくてもよい。
外部I/F603は、外部装置とのインタフェースである。外部装置には、記録媒体603a等がある。コンピュータ600は、外部I/F603を介して、記録媒体603a等の読み取りや書き込みを行うことができる。記録媒体603aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
RAM604は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM605は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。
プロセッサ606は、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)、FPGA(field-programmable gate array)等の演算装置である。
通信I/F607は、コンピュータ600を通信ネットワークに接続するためのインタフェースである。補助記憶装置608は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)等である。
本実施形態に係るユーザ端末20、チャットボット30及び鍵発行局50は、図4に示すコンピュータ600のハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、チャットボット30や鍵発行局50は、複数台のコンピュータ600のハードウェア構成により実現されていてもよい。また、コンピュータ600には、複数のプロセッサ606や複数のメモリ(RAM604、ROM605、補助記憶装置608等)が含まれていてもよい。
<実施例>
以降では、本実施形態に係るチャットボットシステム1の実施例1~実施例5について説明する。
≪セットアップ処理及び秘密鍵発行処理≫
まず、各実施例に共通する処理としてセットアップ処理及び鍵発行処理について説明する。図5は、本実施形態に係るセットアップ処理及び秘密鍵発行処理の流れを説明するための図である。なお、以降で説明するステップS101はセットアップ処理であり、ステップS102~ステップS103及びステップS104~ステップS105はそれぞれ秘密鍵発行処理(ユーザ端末)及び秘密鍵発行処理(チャットボット)である。セットアップ処理は一般にチャットボットシステム1の構築時に1度実行され、その後、秘密鍵発行処理(ユーザ端末)及び秘密鍵発行処理(チャットボット)はユーザ端末20又は第2のチャットボット32で秘密鍵発行の必要が生じるたびに繰り返し実行される。すなわち、ユーザ端末20で秘密鍵発行の必要が生じるたびにステップS102~ステップS103の秘密鍵発行処理(ユーザ端末)が繰り返し実行される。同様に、第2のチャットボット32で秘密鍵発行の必要が生じるたびにステップS104~ステップS105の秘密鍵発行処理(チャットボット)が繰り返し実行される。
ステップS101:まず、鍵発行局50の鍵発行処理部501は、セットアップアルゴリズムSetupにより、公開鍵mpkとマスター秘密鍵mskとを生成し、公開鍵mpkをチャットボット30に送信すると共に、マスター秘密鍵mskを記憶部502に保存する。
ステップS102:鍵発行局50の鍵発行処理部501は、ユーザID「UID」と認証情報TKUIDとをユーザ端末20から受信する。
ステップS103:鍵発行局50の鍵発行処理部501は、ユーザID「UID」と認証情報TKUIDとを受信すると、TKUIDを用いてUIDが正当なユーザIDであるか否かの認証を行う。そして、鍵発行処理部501は、この認証に成功した場合、鍵生成アルゴリズムKeyGenによりUIDを属性とした属性付き秘密鍵を生成した上で、この属性付き秘密鍵を当該ユーザ端末20に送信する。
なお、上述したように、チャットサーバ10がビジネスチャットサーバである場合(実施例2)には、属性付き秘密鍵を生成する際に、ユーザIDに加えて、現在時刻を属性として追加した属性付き秘密鍵を生成する。
ステップS104:鍵発行局50の鍵発行処理部501は、チャットボットID「CID」と認証情報TKCIDとを第2のチャットボット32から受信する。
ステップS105:鍵発行局50の鍵発行処理部501は、チャットボットID「CID」と認証情報TKCIDとを受信すると、TKCIDを用いてCIDが正当なチャットボットIDであるか否かの認証を行う、そして、鍵発行処理部501は、この認証に成功した場合、鍵生成アルゴリズムKeyGenによりCIDを属性とした属性付き秘密鍵を生成した上で、この属性付き秘密鍵を当該第2のチャットボット32に送信する。
なお、上述したように、チャットサーバ10がビジネスチャットサーバである場合(実施例2)には、属性付き秘密鍵を生成する際に、チャットボットIDに加えて、現在時刻を属性として追加した属性付き秘密鍵を生成する。ただし、チャットボットシステム1に第2のチャットボット32が含まれない場合には、上記のステップS104及びステップS105は実行されない。
(実施例1)
以降では、実施例1として、チャットサーバ10がビジネスチャットサーバでない場合(つまり、通常のチャットサーバである場合)について説明する。
・準備
IDSETをユーザID及びチャットボットIDの集合とする。本実施例では、暗号方式は4つアルゴリズム(Setup,KeyGen,Enc,Dec)の4つのアルゴリズムで構成されており、以下の要件を満たすものとする。なお、ここではkはセキュリティパラメータを表す。
セットアップアルゴリズム:Setup(1)→(mpk,msk)
鍵生成アルゴリズム:ID∈IDSETに対して、KeyGen(ID,mpk,msk)→sk(ID)
暗号化アルゴリズム:平文をMとして、I⊂IDSETに対して、Enc(I,mpk,M)→C(I)
復号アルゴリズム:Dec(sk(ID),C(I))→M´
また、上記の暗号方式は以下の正当性の要件を満たすものとする。
Figure 0007215580000004
このような要件を満たす暗号方式としては、例えば、暗号文ポリシー属性ベース暗号等がある。
また、本実施例では、ユーザ端末20の記憶部203には、以下の表4に示すテーブルが保存されている。表4は、ユーザUIDの記憶部203に記憶されているテーブルを示している。
Figure 0007215580000005
このテーブルには、チャットボットIDカラムと、鍵発行局IDカラムと、認証トークンカラムと、秘密鍵カラムとが含まれる。それぞれのカラムには、チャットボットIDと、鍵発行局IDと、認証トークンと、属性付き秘密鍵とが格納される。ユーザ端末20は、チャットボットIDとメッセージとをチャットサーバ10から受信した場合に、このテーブルを参照することで、このメッセージを復号するための属性付き秘密鍵を得ることができる。以降では、上記の表4に示すようなテーブルを「秘密鍵テーブル」とも表す。
なお、鍵発行局ID及び認証トークンが格納されているにも関わらず属性付き秘密鍵が格納されていない行は、未だ属性付き秘密鍵が取得されていない場合である。また、鍵発行局ID及び認証トークンも格納されていない行は、従来のチャットボット(つまり、暗号化機能を有しないチャットボット)のチャットボットIDに対応する行である。
なお、上記の表4に示すテーブルと同様のテーブルは、第2のチャットボット32の記憶部324にも記憶されているものとする。
≪ユーザ端末20によるメッセージ送信でチャットボット処理が開始する場合≫
図6は、ユーザ端末20によるメッセージ送信でチャットボット利用処理が開始する場合(実施例1)の流れを説明するための図である。このとき、ユーザID「UID」を持つユーザ端末20がチャットボットを利用する際の一連の処理は以下のようになる。
ステップS201:ユーザUIDのチャット処理部201は、メッセージMを作成した上で、メッセージMと自身のユーザID「UID」とをチャットサーバ10に送信する。
ステップS202:チャットサーバ10は、M及びUIDを受信すると、このチャットサーバ10に接続している全てのユーザ端末20(ユーザUID~ユーザUID)及びチャットボット30(チャットボットCID~チャットボットCID)に対して、M及びUIDを送信する。
ステップS203:各ユーザUID(1≦i≦N)のチャット処理部201及び各チャットボットCID(1≦i≦L)のチャット処理部311(又はチャット処理部321)は、M及びUIDを受信する。
以降では、チャットボットCID(1≦i≦L)のうち、チャットボット30の動作について説明する。従来のチャットボットの動作については、「従来のチャットボットシステム」で説明した動作を行う。したがって、以降の「チャットボットCID」は、チャットボット30(つまり、暗号化機能付きチャットボット又は暗号化及び復号機能付きチャットボット)のことである。
ステップS204:次に、チャットボットCIDのチャット処理部311(又はチャット処理部321)、上記のステップS203で受信したメッセージMに基づいて、チャットボット処理を行うか又はチャットボット処理を行わずに停止するかを決定する。以降では、チャットボット処理を行うものとして説明を続ける。
また、簡単のため、以降では、第1のチャットボット31がチャットボット処理を行うものとして説明する。したがって、以降のステップS205~ステップS211における「チャットボットCID」は、第1のチャットボット31を意味する。なお、第2のチャットボット32がチャットボット処理を行う場合には、以降の「チャット処理部311」を「チャット処理部321」等に読み替えればよい。
ステップS205:まず、チャット処理部311は、外部サービス40から取得したデータを保存するための空のテーブルDLを作成する。このテーブルには、データカラムと、閲覧権限リストカラムとが含まれる。
チャットボット処理の途中で外部サービス40からデータを取得する必要がある場合、「外部サービスからデータを取得する処理」が実行される。以降のステップS206~ステップS210では、一例として、q回目の「外部サービスからデータを取得する処理」について説明する。
ステップS206:チャットボットCIDのチャット処理部311は、チャットサーバ10から受信したメッセージMと、テーブルDLとに基づいて、データ取得リクエストを送信する外部サービスS (1≦k≦P)を選択し、データ取得リクエストReqを作成する。
ステップS207:チャットボットCIDのチャット処理部311は、外部サービス40から取得したデータに対して閲覧権限を持つユーザID及びチャットボットIDを登録するための空のリストIを作成する。
ステップS208:チャットボットCIDのチャット処理部311は、各ユーザID「UID」(1≦j≦N)に対して、以下の手順10-1~手順10-3を繰り返す。
手順10-1:チャットボットCIDのチャット処理部311は、UIDに対応するクライアントID「OID k,j」と、OID k,jの代理認証情報Cert k,jと、Reqとを外部サービスS に送信する。なお、UIDに対応するクライアントIDがない場合、チャット処理部311は、次のUIDj+1で手順10-1~手順10-3を実行する。
手順10-2:外部サービスS は、OID k,jとCert k,jとReqとを受信すると、Cert k,jがOID k,jの代理認証情報であることを確認すると共に、Reqで要求されたデータDに対してOID k,jが閲覧権限を持つことを確認する。そして、これらが確認された場合、外部サービスS は、DをチャットボットCIDに送信する。一方で、Cert k,jがOID k,jの代理認証情報でない場合やデータDに対してOID k,jが閲覧権限を持たない場合は、外部サービスS は、閲覧権限を持たないことを示す情報をチャットボットCIDに送信する。
手順10-3:チャットボットCIDのチャット処理部311は、外部サービスS からDを受信した場合、リストIにUIDを登録する。
ステップS209:チャットボットCIDのチャット処理部311は、各チャットボットID「CID」(1≦j≦L)に対して、以下の手順11-1~手順11-3を繰り返す。
手順11-1:チャットボットCIDのチャット処理部311は、CIDに対応するクライアントID「OID k,N+j」と、OID k,N+jの代理認証情報Cert k,N+jと、Reqとを外部サービスS に送信する。なお、CIDに対応するクライアントIDがない場合、チャット処理部311は、次のCIDj+1で手順11-1~手順11-3を実行する。
手順11-2:外部サービスS は、OID k,N+jとCert k,N+jとReqとを受信すると、Cert k,N+jがOID k,N+jの代理認証情報であることを確認すると共に、Reqで要求されたデータDに対してOID k,N+jが閲覧権限を持つことを確認する。そして、これらが確認された場合、外部サービスS は、DをチャットボットCIDに送信する。一方で、Cert k,N+jがOID k,N+jの代理認証情報でない場合やデータDに対してOID k,N+jが閲覧権限を持たない場合は、外部サービスS は、閲覧権限を持たないことを示す情報をチャットボットCIDに送信する。
手順11-3:チャットボットCIDのチャット処理部311は、外部サービスS からDを受信した場合、リストIにCIDを登録する。
ステップS210:チャットボットCIDのチャット処理部311は、データDとリストIとを対応付けてテーブルDLに格納する。
ステップS211:次に、チャットボットCIDは、以下の手順12-1~手順12-5によりメッセージを作成及び暗号化し、チャットサーバ10に送信する。
手順12-1:チャットボットCIDのチャット処理部311は、メッセージMとテーブルDLとに基づいて、このテーブルDLのデータカラムからデータD~Dq´を選択する。
手順12-2:次に、チャットボットCIDのチャット処理部311は、上記の手順12-1で選択したD~Dq´からメッセージM´を作成する。
手順12-3:次に、チャットボットCIDのチャット処理部311は、D~Dq´にそれぞれ対応するリストI´~Iq´を取り出し、I´~Iq´に共通して登録されているユーザID及びチャットボットIDを集めたリストIを作成する。
手順12-4:次に、チャットボットCIDの暗号化処理部312は、Enc(I,mpk,M´)→C(I)により暗号化されたメッセージC(I)を得る。
手順12-5:そして、チャットボットCIDのチャット処理部311は、自身のチャットボットID「CID」とメッセージC(I)とをチャットサーバ10に送信する。
ステップS212:チャットサーバ10は、CID及びC(I)を受信すると、ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDに対してCID及びC(I)を送信する。
ステップS213:ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、それぞれCID及びC(I)を受信する。
ステップS214:そして、ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、メッセージC(I)を復号する。以降では、手順13-1~手順13-5でユーザUIDがC(I)を復号する場合について説明し、手順14-1~手順14-5で、チャットボットCID~チャットボットCIDのうち、第2のチャットボット32(つまり、暗号化及び復号機能付きチャットボット)であるチャットボットCIDがC(I)を復号する場合について説明する。
・ユーザUIDがC(I)を復号する場合
手順13-1:ユーザUIDの復号処理部202は、受信したCIDがチャットボットIDであることを確認すると、記憶部203に記憶されている秘密鍵テーブルを用いて、このチャットボットIDに対応する属性付き秘密鍵skを取得する。
手順13-2:一方で、当該チャットボットIDに対応する属性付き秘密鍵が秘密鍵テーブルに格納されていない場合、ユーザUIDの復号処理部202は、当該秘密鍵テーブルにおいて当該チャットボットIDに対応する鍵発行局IDを選択する。そして、ユーザUIDの復号処理部202は、当該秘密鍵テーブルにおいて、当該チャットボットIDに対応する認証トークンTK とUIDとを、選択した鍵発行局IDの鍵発行局50に送信する。なお、認証トークンTK は、例えば、ユーザUIDが保持している、鍵発行局ID「KGC」に対応する認証トークンを表す。

手順13-3:鍵発行局50の鍵発行処理部501は、UID及びTK を受信すると、この認証トークンTK を用いて、UIDが正しいことを検証する。そして、正しいことが検証された場合、鍵発行処理部501は、UID=UIDとして、KeyGen(UID,mpk,msk)→sk(UID)により属性付き秘密鍵sk(UID)を得る。
手順13-4:鍵発行局50の鍵発行処理部501は、属性付き秘密鍵sk(UID)をユーザUIDに送信する。
手順13-5:ユーザUIDの復号処理部202は、上記の手順13-1の取得した属性付き秘密鍵skをsk(UID)として、又は上記の手順13-4で送信された属性付き秘密鍵sk(UID)を用いて、Dec(sk(uid),C(I))→M´によりC(I)を復号し、メッセージM´を得る。
・チャットボットCIDがC(I)を復号する場合
手順14-1:チャットボットCIDの復号処理部323は、受信したCIDがチャットボットIDであることを確認すると、記憶部324に記憶されている秘密鍵テーブルを用いて、このチャットボットIDに対応する属性付き秘密鍵skを取得する。
手順14-2:一方で、当該チャットボットIDに対応する属性付き秘密鍵が秘密鍵テーブルに格納されていない場合、チャットボットCIDの復号処理部323は、当該秘密鍵テーブルにおいて当該チャットボットIDに対応する鍵発行局IDを選択する。そして、チャットボットCIDの復号処理部323は、当該秘密鍵テーブルにおいて、当該チャットボットIDに対応する認証トークンTK とCIDとを、選択した鍵発行局IDの鍵発行局50に送信する。なお、認証トークンTK は、例えば、CIDが保持している、鍵発行局ID「KGC」に対応する認証トークンを表す。
手順14-3:鍵発行局50の鍵発行処理部501は、CID及びTK を受信すると、この認証トークンTK を用いて、CIDが正しいことを検証する。そして、正しいことが検証された場合、鍵発行処理部501は、CID=CIDとして、KeyGen(CID,mpk,msk)→sk(CID)により属性付き秘密鍵sk(CID)を得る。
手順14-4:鍵発行局50の鍵発行処理部501は、属性付き秘密鍵sk(CID)をチャットボットCIDに送信する。
手順14-5:チャットボットCIDの復号処理部323は、上記の手順14-1の取得した属性付き秘密鍵skをsk(CID)として、又は上記の手順14-4で送信された属性付き秘密鍵sk(CID)を用いて、Dec(sk(Cid),C(I))→M´によりC(I)を復号し、メッセージM´を得る。
≪チャットボット30が外部サービス40からデータを受信することでチャットボット利用が開始する場合≫
図7は、チャットボット30が外部サービス40からデータを受信することでチャットボット利用処理が開始する場合(実施例1)の流れを説明するための図である。このとき、ユーザID「UID」を持つユーザ端末20がチャットボットを利用する際の一連の処理は以下のようになる。なお、以降では、簡単のため、「チャットボットCID」は第1のチャットボット31であるものとする。「チャットボットCID」が第2のチャットボット32である場合には、「チャット処理部311」を「チャット処理部321」等に読み替えればよい。
ステップS301:チャットボットCIDのチャット処理部311は、外部サービスS からデータDを受信すると、チャットボット処理を開始する。
ステップS302:チャットボットCIDのチャット処理部311は、当該データDを取得するデータ取得リクエストReqを作成する。
ステップS303:チャットボットCIDのチャット処理部311は、当該データDに対して閲覧権限を持つユーザID及びチャットボットIDを登録するための空のリストI(閲覧権限リスト)を作成する。
ステップS304:チャットボットCIDのチャット処理部311は、各ユーザID「UID」(1≦j≦N)に対して、以下の手順15-1~手順15-3を繰り返す。
手順15-1:チャットボットCIDのチャット処理部311は、UIDに対応するクライアントID「OID k,j」と、OID k,jの代理認証情報Cert k,jと、Reqとを外部サービスS に送信する。なお、UIDに対応するクライアントIDがない場合、チャット処理部311は、次のUIDj+1で手順15-1~手順15-3を実行する。
手順15-2:外部サービスS は、OID k,jとCert k,jとReqとを受信すると、Cert k,jがOID k,jの代理認証情報であることを確認すると共に、Reqで要求されたデータDに対してOID k,jが閲覧権限を持つことを確認する。そして、これらが確認された場合、外部サービスS は、DをチャットボットCIDに送信する。一方で、Cert k,jがOID k,jの代理認証情報でない場合やデータDに対してOID k,jが閲覧権限を持たない場合は、外部サービスS は、閲覧権限を持たないことを示す情報をチャットボットCIDに送信する。
手順15-3:チャットボットCIDのチャット処理部311は、外部サービスS からDを受信した場合、リストIにUIDを登録する。
ステップS305:チャットボットCIDのチャット処理部311は、各チャットボットID「CID」(1≦j≦L)に対して、以下の手順16-1~手順16-3を繰り返す。
手順16-1:チャットボットCIDのチャット処理部311は、CIDに対応するクライアントID「OID k,N+j」と、OID k,N+jの代理認証情報Cert k,N+jと、Reqとを外部サービスS に送信する。なお、CIDに対応するクライアントIDがない場合、チャット処理部311は、次のCIDj+1で手順16-1~手順16-3を実行する。
手順16-2:外部サービスS は、OID k,N+jとCert k,N+jとReqとを受信すると、Cert k,N+jがOID k,N+jの代理認証情報であることを確認すると共に、Reqで要求されたデータDに対してOID k,N+jが閲覧権限を持つことを確認する。そして、これらが確認された場合、外部サービスS は、DをチャットボットCIDに送信する。一方で、Cert k,N+jがOID k,N+jの代理認証情報でない場合やデータDに対してOID k,N+jが閲覧権限を持たない場合は、外部サービスS は、閲覧権限を持たないことを示す情報をチャットボットCIDに送信する。
手順16-3:チャットボットCIDのチャット処理部311は、外部サービスS からDを受信した場合、リストIにCIDを登録する。
ステップS306:チャットボットCIDのチャット処理部311は、以下の手順17-1~手順17-3によりメッセージを作成及び暗号化し、チャットサーバ10に送信する。
手順17-1:チャットボットCIDのチャット処理部311は、データDからメッセージM´を作成する。
手順17-2:次に、チャットボットCIDの暗号化処理部312は、Enc(I,mpk,M´)→C(I)により暗号化されたメッセージC(I)を得る。
手順17-3:そして、チャットボットCIDのチャット処理部311は、自身のチャットボットID「CID」とメッセージC(I)とをチャットサーバ10に送信する。
ステップS307:チャットサーバ10は、CID及びC(I)を受信すると、ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDに対してCID及びC(I)を送信する。
ステップS308:ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、それぞれCID及びC(I)を受信する。
ステップS309:そして、ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、メッセージC(I)を復号する。これらの復号処理は、上記のS214の手順13-1~手順13-5及び手順14-1~手順14-5と同様である。
(実施例2)
以降では、実施例2として、チャットサーバ10がビジネスチャットサーバである場合(つまり、チャットサーバ10がメッセージを保存する場合)について説明する。
・準備
IDSETをユーザID及びチャットボットIDの集合、IDをIDSETの部分集合、Nを正の整数として[0,N]={0,1,2,・・・,N}とする。本実施例では、暗号方式は4つアルゴリズム(Setup,KeyGen,Enc,Dec)の4つのアルゴリズムで構成されており、以下の要件を満たすものとする。なお、ここではkはセキュリティパラメータを表す。
セットアップアルゴリズム:Setup(1)→(mpk,msk)
鍵生成アルゴリズム:id∈IDSET、tに対して、KeyGen(id,t,mpk,msk)→sk(id,t)
暗号化アルゴリズム:平文をM、S⊂ID、[t,t]⊂[0,N]に対して、
Figure 0007215580000006
復号アルゴリズム:
Figure 0007215580000007
また、上記の暗号方式は以下の正当性の要件を満たすものとする。
Figure 0007215580000008
このような要件を満たす暗号方式としては、例えば、暗号文ポリシー属性ベース暗号等がある。
また、本実施例でも、ユーザ端末20の記憶部203や第2のチャットボット32の記憶部324には、上記の表4に示したような秘密鍵テーブルが保存されているもとする。
≪ユーザ端末20によるメッセージ送信でチャットボット処理が開始する場合≫
図8は、ユーザ端末20によるメッセージ送信でチャットボット利用処理が開始する場合(実施例2)の流れを説明するための図である。このとき、ユーザID「UID」を持つユーザ端末20がチャットボットを利用する際の一連の処理は以下のようになる。
ステップS401~ステップS410は、図6のステップS201~ステップS210とそれぞれ同様であるため、その説明を省略する。
ステップS411:チャットボットCIDは、以下の手順17-1~手順17-5によりメッセージを作成及び暗号化し、チャットサーバ10に送信する。
手順17-1:チャットボットCIDのチャット処理部311は、メッセージMとテーブルDLとに基づいて、このテーブルDLのデータカラムからデータD~Dq´を選択する。
手順17-2:次に、チャットボットCIDのチャット処理部311は、上記の手順12-1で選択したD~Dq´からメッセージM´を作成する。
手順17-3:次に、チャットボットCIDのチャット処理部311は、D~Dq´にそれぞれ対応するリストI´~Iq´を取り出し、I´~Iq´に共通して登録されているユーザID及びチャットボットIDを集めたリストIを作成する。
手順17-4:次に、チャットボットCIDの暗号化処理部312は、I=Iとして、
Figure 0007215580000009
により暗号化されたメッセージ(この暗号化されたメッセージをCと表す。)を得る。ここで、Tは復号可能期間幅である。
手順17-5:そして、チャットボットCIDのチャット処理部311は、自身のチャットボットID「CID」とメッセージCとをチャットサーバ10に送信する。
ステップS412:チャットサーバ10は、CID及びCを受信すると、ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDに対してCID及びCを送信する。
ステップS413:ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、それぞれCID及びCを受信する。
ステップS414:ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、メッセージCを復号する。以降では、手順18-1~手順18-5でユーザUIDがCを復号する場合について説明し、手順19-1~手順19-5で、チャットボットCID~チャットボットCIDのうち、第2のチャットボット32(つまり、暗号化及び復号機能付きチャットボット)であるチャットボットCIDがCを復号する場合について説明する。
・ユーザUIDがCを復号する場合
手順18-1:ユーザUIDの復号処理部202は、受信したCIDがチャットボットIDであることを確認すると、記憶部203に記憶されている秘密鍵テーブルを用いて、このチャットボットIDに対応する属性付き秘密鍵skを取得する。
手順18-2:一方で、当該チャットボットIDに対応する属性付き秘密鍵が秘密鍵テーブルに格納されていない場合、ユーザUIDの復号処理部202は、当該秘密鍵テーブルにおいて当該チャットボットIDに対応する鍵発行局IDを選択する。そして、ユーザUIDの復号処理部202は、当該秘密鍵テーブルにおいて、当該チャットボットIDに対応する認証トークンTK とUIDとを、選択した鍵発行局IDの鍵発行局50に送信する。
手順18-3:鍵発行局50の鍵発行処理部501は、UID及びTK を受信すると、この認証トークンTK を用いて、UIDが正しいことを検証する。そして、正しいことが検証された場合、鍵発行処理部501は、UID=UID、現在時刻をsとして、
Figure 0007215580000010
により属性付き秘密鍵sk(UID,s)を得る。
手順18-4:鍵発行局50の鍵発行処理部501は、属性付き秘密鍵sk(UID,s)をユーザUIDに送信する。
手順18-5:ユーザUIDの復号処理部202は、上記の手順18-1の取得した属性付き秘密鍵skをsk(UID,s)として、又は上記の手順18-4で送信された属性付き秘密鍵sk(UID,s)を用いて、
Figure 0007215580000011
によりCを復号し、メッセージM´を得る。
・チャットボットCIDがCを復号する場合
手順19-1:チャットボットCIDの復号処理部323は、受信したCIDがチャットボットIDであることを確認すると、記憶部324に記憶されている秘密鍵テーブルを用いて、このチャットボットIDに対応する属性付き秘密鍵skを取得する。
手順19-2:一方で、当該チャットボットIDに対応する属性付き秘密鍵が秘密鍵テーブルに格納されていない場合、チャットボットCIDの復号処理部323は、当該秘密鍵テーブルにおいて当該チャットボットIDに対応する鍵発行局IDを選択する。そして、チャットボットCIDの復号処理部323は、当該秘密鍵テーブルにおいて、当該チャットボットIDに対応する認証トークンTK とCIDとを、選択した鍵発行局IDの鍵発行局50に送信する。
手順19-3:鍵発行局50の鍵発行処理部501は、CID及びTK を受信すると、この認証トークンTK を用いて、CIDが正しいことを検証する。そして、正しいことが検証された場合、鍵発行処理部501は、CID=CID、現在時刻をsとして、
Figure 0007215580000012
により属性付き秘密鍵sk(CID,s)を得る。
手順19-4:鍵発行局50の鍵発行処理部501は、属性付き秘密鍵sk(CID,s)をチャットボットCIDに送信する。
手順19-5:チャットボットCIDの復号処理部323は、上記の手順19-1の取得した属性付き秘密鍵skをsk(CID,s)として、又は上記の手順19-4で送信された属性付き秘密鍵sk(CID,s)を用いて、
Figure 0007215580000013
によりCを復号し、メッセージM´を得る。
(実施例3)
以降では、実施例3として、鍵発行局50が1つのみである場合について説明する。ここで、鍵発行局50が1つのみである場合、ユーザ端末20の記憶部203及び第2のチャットボット32の記憶部324には、属性付き秘密鍵と認証トークンとが保存されていればよく、秘密鍵テーブルが保存されていなくてもよい。なお、鍵発行局50から属性付き秘密鍵を未だ取得していない場合には認証トークンのみが保存されている。ただし、この属性付き秘密鍵を用いて復号を行うチャットボットIDが、当該認証トークン(及び当該属性付き秘密鍵)に対応付けられていてもよい。これにより、従来のチャットボットのチャットボットIDには属性付き秘密鍵が対応付けられない一方で、チャットボット30のチャットボットIDには属性付き秘密鍵を対応付けることができるため、メッセージ及びチャットボットIDをチャットサーバ10から受信した場合に、このメッセージを復号する必要があるか否かをチャットボットIDから判断することが可能となる。
なお、上述した属性付き秘密鍵に関する条件と鍵発行局50が1つであることの条件以外の条件は実施例2と同様であるとする。
≪ユーザ端末20によるメッセージ送信でチャットボット処理が開始する場合≫
図9は、ユーザ端末20によるメッセージ送信でチャットボット利用処理が開始する場合(実施例3)の流れを説明するための図である。このとき、ユーザID「UID」を持つユーザ端末20がチャットボットを利用する際の一連の処理は以下のようになる。
ステップS501~ステップS513は、図8のステップS401~ステップS413とそれぞれ同様であるため、その説明を省略する。
ステップS514:ユーザUID~ユーザUID及びチャットボットCID~チャットボットCIDは、メッセージCを復号する。以降では、手順20-1~手順20-5でユーザUIDがCを復号する場合について説明し、手順21-1~手順21-5で、チャットボットCID~チャットボットCIDのうち、第2のチャットボット32(つまり、暗号化及び復号機能付きチャットボット)であるチャットボットCIDがCを復号する場合について説明する。
・ユーザUIDがCを復号する場合
手順20-1:ユーザUIDの復号処理部202は、受信したCIDがチャットボットIDであることを確認すると、記憶部203に記憶されている属性付き秘密鍵skを取得する。
手順20-2:一方で、属性付き秘密鍵が記憶部203に保存されていない場合、ユーザUIDの復号処理部202は、記憶部203に保存されている認証トークンTKとUIDとを鍵発行局50に送信する。
手順20-3:鍵発行局50の鍵発行処理部501は、UID及びTKを受信すると、この認証トークンTKを用いて、UIDが正しいことを検証する。そして、正しいことが検証された場合、鍵発行処理部501は、上記の手順18-3と同様に、属性付き秘密鍵sk(UID,s)を得る。
手順20-4:鍵発行局50の鍵発行処理部501は、属性付き秘密鍵sk(UID,s)をユーザUIDに送信する。
手順20-5:ユーザUIDの復号処理部202は、上記の手順20-1の取得した属性付き秘密鍵skをsk(UID,s)として、又は上記の手順20-4で送信された属性付き秘密鍵sk(UID,s)を用いて、上記の手順18-5と同様に、Cを復号し、メッセージM´を得る。
・チャットボットCIDがCを復号する場合
手順21-1:チャットボットCIDの復号処理部323は、受信したCIDがチャットボットIDであることを確認すると、記憶部324に記憶されている属性付き秘密鍵skを取得する。
手順21-2:一方で、属性付き秘密鍵が記憶部324に保存されていない場合、チャットボットCIDの復号処理部323は、記憶部324に保存されている認証トークンTKとCIDとを鍵発行局50に送信する。
手順21-3:鍵発行局50の鍵発行処理部501は、CID及びTKを受信すると、この認証トークンTKを用いて、CIDが正しいことを検証する。そして、正しいことが検証された場合、鍵発行処理部501は、上記の手順19-3と同様に、属性付き秘密鍵sk(CID,s)を得る。
手順21-4:鍵発行局50の鍵発行処理部501は、属性付き秘密鍵sk(CID,s)をチャットボットCIDに送信する。
手順21-5:チャットボットCIDの復号処理部323は、上記の手順21-1の取得した属性付き秘密鍵skをsk(CID,s)として、又は上記の手順21-4で送信された属性付き秘密鍵sk(CID,s)を用いて、上記の手順19-5と同様に、Cを復号し、メッセージM´を得る。
(実施例4)
以降では、実施例4として、各外部サービス40の代理認証情報が同じである場合について説明する。例えば、同一のサービス提供者が複数の外部サービス40を提供している場合等には、同一のユーザ端末20に関して、これら複数の外部サービス40で代理認証情報が同じであることがある。
本実施例では、第1のチャットボット31の記憶部313や第2のチャットボット32の記憶部324に保存されている代理認証情報テーブルに格納される情報が異なる。実施例2の或るチャットボット30の記憶部313(又は記憶部324)には、例えば、以下の表5及び表6に示すような代理認証情報テーブルが保存されている。
Figure 0007215580000014
Figure 0007215580000015
上記の表5は、外部サービスSの代理認証情報が格納された代理認証情報テーブルである。また、上記の表6は、外部サービスSの代理認証情報が格納された代理認証情報テーブルである。
このとき、本実施例では、各jに対して、OID1,j=OID2,jかつCert1,j=Cert2,jである(つまり、ユーザIDが同一であれば、クライアントID及び代理認証情報も同一である。)。このことは、チャットボットIDに対するクライアントID及び代理認証情報の対応関係が格納された代理認証情報テーブルについても同様である。なお、上記では外部サービス40毎に代理認証情報テーブルが保持されている場合について説明したが、OID1,j=OID2,jかつCert1,j=Cert2,jであるため、各チャットボット30は、全ての外部サービス40に対して共通のユーザIDに関する代理認証情報テーブルを1つのみ保持していてもよい。同様に、全ての外部サービス40に対して共通のチャットボットIDに関する代理認証情報テーブルを1つのみ保持していてもよい。
なお、本実施例は、上記の代理認証情報テーブル以外については、実施例1と同様である。
(実施例5)
以降では、実施例5として、実施例2とは時間の設定方法が異なる場合について説明する。本実施例では、暗号方式のアルゴリズム以外は、実施例2と同様である。
本実施例では、IDSETをユーザID及びチャットボットIDの集合、IDをIDSETの部分集合、Nを正の整数として[0,N]={0,1,2,・・・,N}とする。本実施例では、暗号方式は4つアルゴリズム(Setup,KeyGen,Enc,Dec)の4つのアルゴリズムで構成されており、以下の要件を満たすものとする。なお、ここではkはセキュリティパラメータを表す。
セットアップアルゴリズム:Setup(1)→(mpk,msk)
鍵生成アルゴリズム:id∈IDSET、tに対して、KeyGen(id,t,mpk,msk)→sk(id,t)
暗号化アルゴリズム:平文をM、S⊂ID、t,T:正の整数に対して、Enc(S,t,t+T,mpk,M)→C(S,t,T)
復号アルゴリズム:Dec(sk(id,t),C(S,t,T))→M´
また、上記の暗号方式は以下の正当性の要件を満たすものとする。
Figure 0007215580000016
本実施例では、上記の4つアルゴリズム(Setup,KeyGen,Enc,Dec)を用いること以外は、実施例2と同様である(つまり、実施例2の各アルゴリズムを、本実施例のアルゴリズムに置き換えたものが実施例5である。)。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更、組み合わせ等が可能である。
1 チャットボットシステム
10 チャットサーバ
20 ユーザ端末
31 第1のチャットボット
32 第2のチャットボット
40 外部サービス
201 チャット処理部
202 復号処理部
203 記憶部
311 チャット処理部
312 暗号化処理部
313 記憶部
321 チャット処理部
322 暗号化処理部
323 復号処理部
324 記憶部
401 鍵発行処理部
402 記憶部

Claims (6)

  1. 複数のユーザ端末と、チャットボットと、チャットサーバとが含まれるチャットボットシステムであって、
    前記チャットボットは、
    外部サービスから取得したデータからメッセージを作成するメッセージ作成手段と、
    暗号文ポリシー属性ベース暗号の公開鍵と、前記メッセージと、前記データの利用権限を有するユーザ端末のユーザIDが含まれるリストIを入力として、暗号文ポリシー属性ベース暗号の暗号化アルゴリズムにより、前記メッセージを前記公開鍵で暗号化したポリシー付き暗号文を生成する暗号化手段と、
    前記ポリシー付き暗号文を前記チャットサーバに送信する送信手段と、を有し、
    前記ユーザ端末は、
    前記チャットサーバからポリシー付き暗号文を受信する受信手段と、
    自身のユーザIDに基づき生成された属性付き秘密鍵を用いて、前記ポリシー付き暗号文を復号する復号手段と、
    を有することを特徴とするチャットボットシステム。
  2. 前記チャットボットシステムには、鍵発行局が含まれ、
    前記鍵発行局は、
    前記ユーザ端末のユーザIDを入力として、暗号文ポリシー属性ベース暗号の鍵生成アルゴリズムにより前記属性付き秘密鍵を生成する生成手段、を有することを特徴とする請求項1に記載のチャットボットシステム。
  3. 前記チャットサーバには、前記チャットボットから受信したポリシー付き暗号文が保存され、
    前記暗号化手段は、
    前記公開鍵と、前記メッセージと、前記リストIと、復号が可能な時間幅を示す時間幅とを入力として、前記暗号化アルゴリズムにより前記ポリシー付き暗号文を生成し、
    前記生成手段は、
    前記ユーザIDと、現在時刻とを入力として、前記鍵生成アルゴリズムにより前記属性付き秘密鍵を生成する、ことを特徴とする請求項2に記載のチャットボットシステム。
  4. 前記復号手段は、
    前記属性付き秘密鍵が存在しない場合、自身のユーザIDを前記鍵発行局に送信することで前記属性付き秘密鍵を生成し、生成された属性付き秘密鍵を用いて、前記ポリシー付き暗号文を復号する、ことを特徴とする請求項2又は3に記載のチャットボットシステム。
  5. 前記チャットボットには、第1のチャットボットと、第2のチャットボットとが含まれ、
    前記第1のチャットボットは、
    前記メッセージ作成手段と、前記暗号化手段と、前記送信手段とを有し、
    前記第2のチャットボットは、
    前記メッセージ作成手段と、前記暗号化手段と、前記送信手段と、
    前記チャットサーバからポリシー付き暗号文を受信する第2の受信手段と、
    自身のチャットボットIDに基づき生成された属性付き秘密鍵を用いて、前記ポリシー付き暗号文を復号する第2の復号手段と、を有することを特徴とする請求項1乃至4の何れか一項に記載のチャットボットシステム。
  6. 複数のユーザ端末と、チャットボットと、チャットサーバとが含まれるチャットボットシステムに用いられる情報処理方法であって、
    前記チャットボットが、
    外部サービスから取得したデータからメッセージを作成するメッセージ作成手順と、
    暗号文ポリシー属性ベース暗号の公開鍵と、前記メッセージと、前記データの利用権限を有するユーザ端末のユーザIDが含まれるリストIを入力として、暗号文ポリシー属性ベース暗号の暗号化アルゴリズムにより、前記メッセージを前記公開鍵で暗号化したポリシー付き暗号文を生成する暗号化手順と、
    前記ポリシー付き暗号文を前記チャットサーバに送信する送信手順と、を実行し、
    前記ユーザ端末が、
    前記チャットサーバからポリシー付き暗号文を受信する受信手順と、
    自身のユーザIDに基づき生成された属性付き秘密鍵を用いて、前記ポリシー付き暗号文を復号する復号手順と、
    を実行することを特徴とする情報処理方法。
JP2021529653A 2019-07-04 2019-07-04 チャットボットシステム及び情報処理方法 Active JP7215580B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/026634 WO2021001989A1 (ja) 2019-07-04 2019-07-04 チャットボットシステム、情報処理装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2021001989A1 JPWO2021001989A1 (ja) 2021-01-07
JP7215580B2 true JP7215580B2 (ja) 2023-01-31

Family

ID=74100307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021529653A Active JP7215580B2 (ja) 2019-07-04 2019-07-04 チャットボットシステム及び情報処理方法

Country Status (3)

Country Link
US (1) US11882208B2 (ja)
JP (1) JP7215580B2 (ja)
WO (1) WO2021001989A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115209360B (zh) * 2022-07-15 2023-06-09 烽火通信科技股份有限公司 基于对象的聚合容器数据传输方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009033402A (ja) 2007-07-26 2009-02-12 Mitsubishi Electric Corp Idベース暗号システム及び送信端末装置及び配送サーバ装置及び受信端末装置
JP2018200602A (ja) 2017-05-29 2018-12-20 パナソニックIpマネジメント株式会社 データ転送方法およびコンピュータプログラム
JP2019057093A (ja) 2017-09-20 2019-04-11 富士ゼロックス株式会社 情報処理装置及びプログラム
WO2019088279A1 (ja) 2017-11-06 2019-05-09 日本電信電話株式会社 データ共有方法、データ共有システム、データ共有サーバ、通信端末、プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104641591B (zh) * 2012-09-21 2018-02-02 诺基亚技术有限公司 用于基于信任级别提供对共享数据的访问控制的方法和装置
US9647968B2 (en) * 2015-03-25 2017-05-09 Pypestream Inc Systems and methods for invoking chatbots in a channel based communication system
US10735384B2 (en) * 2017-02-17 2020-08-04 Whatsapp Inc. Techniques for key ratcheting with multiple step sizes
EP3628114A4 (en) * 2017-07-06 2020-09-30 Beijing Didi Infinity Technology and Development Co., Ltd. DATA TRANSMISSION SYSTEMS AND METHODS
US11570268B2 (en) * 2017-09-21 2023-01-31 Microsoft Technology Licensing, Llc Proxy system for bot connectivity to communication channels
US10855440B1 (en) * 2017-11-08 2020-12-01 Wickr Inc. Generating new encryption keys during a secure communication session
US10897432B2 (en) * 2017-12-04 2021-01-19 Microsoft Technology Licensing, Llc Chat-enabled messaging
JP6936169B2 (ja) * 2018-02-27 2021-09-15 ヤフー株式会社 認証器管理装置、認証器管理方法、認証器管理プログラム及び認証器管理システム
CN110377240B (zh) * 2018-04-13 2024-06-14 富士胶片商业创新有限公司 消息提供装置、消息提供方法以及非暂时计算机可读介质
US11265300B1 (en) * 2018-12-29 2022-03-01 Whatsapp Llc Methods and systems for transmitting anonymized information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009033402A (ja) 2007-07-26 2009-02-12 Mitsubishi Electric Corp Idベース暗号システム及び送信端末装置及び配送サーバ装置及び受信端末装置
JP2018200602A (ja) 2017-05-29 2018-12-20 パナソニックIpマネジメント株式会社 データ転送方法およびコンピュータプログラム
JP2019057093A (ja) 2017-09-20 2019-04-11 富士ゼロックス株式会社 情報処理装置及びプログラム
WO2019088279A1 (ja) 2017-11-06 2019-05-09 日本電信電話株式会社 データ共有方法、データ共有システム、データ共有サーバ、通信端末、プログラム

Also Published As

Publication number Publication date
US11882208B2 (en) 2024-01-23
US20220368519A1 (en) 2022-11-17
WO2021001989A1 (ja) 2021-01-07
JPWO2021001989A1 (ja) 2021-01-07

Similar Documents

Publication Publication Date Title
Liu et al. Two-factor data security protection mechanism for cloud storage system
KR101130415B1 (ko) 비밀 데이터의 노출 없이 통신 네트워크를 통해 패스워드 보호된 비밀 데이터를 복구하는 방법 및 시스템
JP5313311B2 (ja) 遠隔解読サービスを備えたセキュアメッセージシステム
JP4597784B2 (ja) データ処理装置
US8817986B2 (en) Cross enterprise communication
US10116442B2 (en) Data storage apparatus, data updating system, data processing method, and computer readable medium
JP6049914B2 (ja) 暗号システム、鍵生成装置及び再暗号化装置
WO2014078951A1 (en) End-to-end encryption method for digital data sharing through a third party
CN112784284B (zh) 加密处理系统、加密处理方法以及记录介质
US8732481B2 (en) Object with identity based encryption
CN111193703A (zh) 在分散式网络中使用的通信装置和通信方法
CN116830523A (zh) 阈值密钥交换
JP2007201522A (ja) 暗号通信システム、鍵共有方法、鍵提供装置、および情報処理装置
JP2007312128A (ja) 電子データ閲覧システム、装置及びプログラム
JP7215580B2 (ja) チャットボットシステム及び情報処理方法
Sowmiya et al. Secure cloud storage model with hidden policy attribute based access control
Tabassum et al. Securely Transfer Information with RSA and Digital Signature by using the concept of Fog Computing and Blockchain
JP6907111B2 (ja) 電子証明書管理システムおよび電子証明書管理方法
JP2010272899A (ja) 鍵生成システム及び鍵生成方法及びブラインドサーバ装置及びプログラム
JP5643251B2 (ja) 秘密情報通知システム、秘密情報通知方法、プログラム
JP2021019223A (ja) 鍵交換システム、通信装置、鍵交換方法及びプログラム
JP7254296B2 (ja) 鍵交換システム、情報処理装置、鍵交換方法及びプログラム
JP2001125481A (ja) 暗号通信端末、暗号通信センター装置及び暗号通信システム並びに記録媒体
Geeta et al. VASD2OM: virtual auditing and secure deduplication with dynamic ownership management in cloud
JP6167598B2 (ja) 情報処理装置、情報処理方法、および、コンピュータ・プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221208

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230102

R150 Certificate of patent or registration of utility model

Ref document number: 7215580

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150