Privacy-preserving data collection

By deploying the agent partially encrypting text strings of GUI elements on the terminal device, the problem of collecting and processing sensitive data in compliance with privacy protection regulations is solved, enabling effective data collection and processing, while reducing server load and power consumption.

JP7623351B2Active Publication Date: 2025-01-28WALKME
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2022507565
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-08-10
Filing Date
2021-08-04
Publication Date
2025-01-28
Estimated Expiration
2041-08-04

AI Technical Summary

Technical Problem

How to collect and process data that may contain sensitive information, such as location, health status and financial information, from terminal devices without violating user privacy, without violating user privacy.

Method used

By deploying an agent on a terminal device, partially encrypt the text string of the GUI element, only partially transmitting part of the unencrypted text to the server. The server analyzes the partially encrypted text to avoid exposing the original text content.

Benefits of technology

It realizes that without revealing user privacy, it can effectively collect and process sensitive data, meet privacy protection requirements, and reduces server processing load and power consumption.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007623351000001
    Figure 0007623351000001
  • Figure 0007623351000002
    Figure 0007623351000002
  • Figure 0007623351000003
    Figure 0007623351000003
Patent Text Reader

Abstract

The present invention provides a method, system, and product comprising: obtaining a GUI element of a graphical user interface (GUI) of an end device, the GUI element being associated with a text string included in the GUI; transforming at least a portion of the text string according to a transformation function, thereby obtaining a fully transformed or semi-transformed text string, the semi-transformed text string including a transformed portion and a clear text portion; and providing the fully transformed or semi-transformed text string to a server, thereby enabling the server to perform string-based analysis without being exposed to the content of the text string.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of U.S. Application No. 16 / 988,904, filed August 10, 2020, entitled "PRIVACY-PROTECTING DATA COLLECTION," which is incorporated by reference in its entirety for all purposes without denial.

[0002]

[0002] This disclosure relates generally to storing information, and more particularly to systems, products, and methods for storing information while maintaining user privacy. [Background technology]

[0003]

[0003] Personal data protection regulations such as the European Union's (EU) General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA) impose meaningful limitations on businesses' ability to conduct commercial activities without violating privacy requirements.

[0004]

[0004] In the Personal Information Protection Law, protection of confidential information such as personal information (PII) is an important issue. In many cases, even if filtering technology that removes confidential information is used on the server side, confidential information must not be transferred from the end user's machine without the user's consent. Summary of the Invention

[0005]

[0005] One exemplary embodiment of the disclosed subject matter is a method performed on an end device, the method including: obtaining a GUI element of a graphical user interface (GUI) of the end device, the GUI element associated with a text string included in the GUI, the text string including a first portion and a second portion; transforming the first portion of the text string in accordance with a transformation function, where the transformation is not performed on the second portion of the text string, thereby obtaining a semi-transformed text string including a transformed portion and a clear text portion; and providing the semi-transformed text string to a server, whereby the server can perform string-based analysis without being exposed to the content of the text string.

[0006]

[0006] Optionally, the method includes the steps of obtaining an element identifier for the GUI element, the element identifier including the semi-transformed text string; and locating a second GUI element within the GUI that corresponds to the GUI element, the locating step including the steps of performing a string-based search of elements of the GUI using a plain text portion of the semi-transformed text string to identify candidate elements associated with the text string; transforming a portion of the text string associated with the candidate element according to a transformation function to obtain a transformed portion of the text string associated with the candidate element; and comparing the transformed portion of the text string associated with the candidate element with the transformed portion of the semi-transformed text string.

[0007] Optionally, the second portion is one of a suffix of the text string, a prefix of the string, an internal portion of the text string, and the second portion has a predetermined size.

[0008]

[0008] Optionally, the method includes a step of defining a relative position of the second portion within the text string based on a number of candidate elements in the GUI associated with a text string corresponding to the second portion at a corresponding relative position.

[0009]

[0009] Optionally, the method includes the step of defining the number of characters in the second portion based on a number of candidate elements in the GUI associated with a text string corresponding to the number of characters in the second portion.

[0010] Optionally, the providing step comprises providing a number of characters of the first portion to the server, the number of characters comprising a number of characters in the first portion.

[0011] Optionally, the step of converting a first portion of the text string is performed in response to a determination that the text string is a potentially sensitive phrase.

[0012]

[0012] Optionally, the determination that the text string is a potentially sensitive word or phrase is based on one or more of: the text string is not included in a whitelist of non-sensitive words or phrases; the text string is included in a blacklist of sensitive words or phrases; and the application of classification rules to determine whether the inspected GUI element is associated with potentially sensitive content.

[0013]

[0013] Optionally, the method includes the steps of adding the semi-translated text string and the text string to a dictionary in response to determining that the text string is not a potentially sensitive phrase, and providing the dictionary to the server, thereby enabling the server to replace the semi-translated text string with the text string.

[0014]

[0014] Optionally, the server is configured to provide a display to an administrator user, the display including information about a plurality of GUI elements including the GUI element and other GUI elements, the other GUI elements not included in the dictionary, and the display indicating a text string associated with the GUI element and a semi-converted text string associated with the other GUI elements.

[0015]

[0015] Optionally, the display is a GUI display having a plurality of GUI elements, some of the plurality of GUI elements being associated with semi-converted text strings, some of the plurality of GUI elements including the other GUI element, and the server is configured to receive an indication from the administrative user that the semi-converted text string associated with the other GUI element contains non-sensitive content, and the method includes a step of adding unconverted content of the semi-converted text string to the dictionary.

[0016] Optionally, the transformation function includes a one-way hash function, a symmetric encryption function, an asymmetric encryption function, or the like.

[0017] Optionally, different conversion functions are used for different types of GUI elements.

[0018]

[0018] Optionally, the method includes the steps of selecting a transformation function for the text string, selecting a second transformation function for a second text string, and transforming a first portion of the second text string according to the second transformation function, thereby obtaining a second semi-transformed text string comprising a transformed portion of the second text string and a plain text portion of the second text string.

[0019] Optionally, said string-based analysis is the identification of an identifier useful for retrieving said GUI element, said identifier being based on said semi-transformed text string.

[0020] Optionally, the GUI is one or more of a website, a web-based application, a native mobile application, and a desktop application.

[0021]

[0021] Another exemplary embodiment of the disclosed subject matter is a computer program product including a non-transitory computer-readable storage medium holding program instructions which, when read by a processor of an end device, cause the processor to perform the following steps: obtaining a GUI element of a GUI of the end device, the GUI element associated with a text string included in the GUI, the text string including a first portion and a second portion; transforming the first portion of the text string according to a transformation function, where the transformation is not performed on the second portion of the text string, thereby obtaining a semi-transformed text string including a transformed portion and a clear text portion; and providing the semi-transformed text string to a server, whereby the server can perform string-based analysis without being exposed to the content of the text string.

[0022]

[0022] Yet another exemplary embodiment of the disclosed subject matter is a system in an end device, the system including a processor and associated memory, the processor adapted to perform the steps of: obtaining a GUI element of a GUI of the end device, the GUI element associated with a text string included in the GUI, the text string including a first portion and a second portion; transforming the first portion of the text string according to a transformation function, the transformation not being performed on the second portion of the text string, thereby obtaining a semi-transformed text string including a transformed portion and a plain text portion; and providing the semi-transformed text string to a server, thereby enabling the server to perform string-based analysis without being exposed to the content of the text string.

[0023]

[0023] Yet another exemplary embodiment of the disclosed subject matter is a method performed on an end device, the method including the steps of obtaining an element identifier of a first GUI element, the element identifier being associated with a semi-transformed text string, the semi-transformed text string including a transformed portion and a plain text portion, the semi-transformed text string being the result of a semi-transformation using a transformation function applied to a text string; locating a second GUI element associated with the element identifier in a GUI displayed on the end device, the locating step including the steps of performing a string-based search using the plain text portion of the semi-transformed text string to identify candidate elements in the GUI; transforming a portion of the text string associated with the candidate element according to the transformation function to obtain a transformed portion of the text string associated with the candidate element; and comparing the transformed portion of the text string associated with the candidate element to the transformed portion of the semi-transformed text string.

[0024]

[0024] Optionally, the method includes a step of determining that a converted portion of a text string associated with the candidate element is identical to a converted portion of the semi-converted text string and therefore the second GUI element has been successfully located using the element identifier.

[0025]

[0025] Optionally, the element identifier includes a character count of a portion of the text string transformed by the transformation function, the character count including the number of characters in the portion before it was semi-transformed, and the locating step includes using the character count to identify the candidate element.

[0026] Optionally, the transformation function includes a one-way hash function, a symmetric encryption function, an asymmetric encryption function, or the like.

[0027] Optionally, different conversion functions are used for different types of GUI elements.

[0028] Optionally, the GUI is one or more of a website, a web-based application, a native mobile application, and a desktop application.

[0029]

[0029] Yet another exemplary embodiment of the disclosed subject matter is a computer program product including a non-transitory computer-readable storage medium holding program instructions that, when read into a processor of an end device, are adapted to perform the steps of: obtaining an element identifier of a first GUI element, the element identifier being associated with a semi-transformed text string, the semi-transformed text string including a transformed portion and a plain text portion, the semi-transformed text string being a result of being semi-transformed using a transformation function applied to a text string; and locating a second GUI element associated with the element identifier in a GUI displayed on the end device, the locating steps including: performing a string-based search using the plain text portion of the semi-transformed text string to identify candidate elements within the GUI; transforming a portion of the text string associated with the candidate element according to the transformation function to obtain a transformed portion of the text string associated with the candidate element; and comparing the transformed portion of the text string associated with the candidate element to the transformed portion of the semi-transformed text string.

[0030]

[0030] Yet another exemplary embodiment of the disclosed subject matter is a system in an end device, the system including a processor and associated memory, the processor adapted to perform the steps of: obtaining an element identifier of a first GUI element, the element identifier associated with a semi-transformed text string, the semi-transformed text string including a transformed portion and a plain text portion, the semi-transformed text string being a result of a semi-transformation using a transformation function applied to a text string; and locating a second GUI element associated with the element identifier in a GUI displayed on the end device, the locating steps including: performing a string-based search using the plain text portion of the semi-transformed text string to identify candidate elements in the GUI; transforming a portion of the text string associated with the candidate element according to the transformation function to obtain a transformed portion of the text string associated with the candidate element; and comparing the transformed portion of the text string associated with the candidate element to the transformed portion of the semi-transformed text string.

[0031]

[0031] Yet another exemplary embodiment of the disclosed subject matter includes, in a method, the steps of obtaining a formatted document depicting at least a portion of a GUI of an end device, the formatted document including a structure defining a plurality of sub-elements, at least one sub-element being associated with a text string; performing a semi-conversion of the formatted document using a transformation function, thereby obtaining a semi-converted formatted document, the semi-converted formatted document retaining a structure of the formatted document, the semi-converted formatted document including a transformed version of the text string, the transformed version of the text string having been transformed according to the transformation function; and providing the semi-converted formatted document to a second device, whereby the second device can perform string-based analysis of the formatted document without being exposed to the content of the text string.

[0032]

[0032] Optionally, in this method, the step of performing the semi-conversion includes the steps of identifying tokens and keywords in the format document and preventing the conversion function from being applied to the tokens and keywords prior to the providing step.

[0033]

[0033] Optionally, the formatted document is defined in a markup language, the formatted document includes elements defined by tags in the markup language, a first element of the formatted document includes content and a second element of the formatted document includes one or more pairs of attributes and corresponding attribute values, and the step of performing the semi-conversion includes the steps of selecting a text string to be converted from the formatted document, the text string being selected from one or more text strings not used to define the tags or attributes in the formatted document, and applying the conversion function to the text string.

[0034]

[0034] Optionally, selecting the text string comprises selecting a text string that defines an attribute value for the attribute based on a determination that the attribute defines a sensitive attribute.

[0035] Optionally, the transformation function includes a one-way hash function, a symmetric encryption function, an asymmetric encryption function, or the like.

[0036] Optionally, different conversion functions are used for different types of GUI elements.

[0037] Optionally, the GUI is one or more of a website, a web-based application, a native mobile application, and a desktop application.

[0038]

[0038] Yet another exemplary embodiment of the disclosed subject matter is a computer program product including a non-transitory computer-readable storage medium holding program instructions which, when read by a processor, cause a processor to perform the following steps: obtaining a formatted document depicting at least a portion of a GUI of an end device, the formatted document including a structure defining a plurality of sub-elements, at least one sub-element being associated with a text string; performing a semi-conversion of the formatted document using a transformation function, thereby obtaining a semi-converted formatted document, the semi-converted formatted document retaining a structure of the formatted document, the semi-converted formatted document including a transformed version of the text string, the transformed version of the text string having been transformed according to the transformation function; and providing the semi-converted formatted document to a second device, whereby the second device can perform string-based analysis of the formatted document without being exposed to the content of the text string.

[0039]

[0039] Yet another exemplary embodiment of the disclosed subject matter is a system including a processor and associated memory, the processor adapted to perform the steps of: obtaining a formatted document depicting at least a portion of a GUI of an end device, the formatted document including a structure defining a plurality of sub-elements, at least one sub-element being associated with a text string; performing a semi-conversion of the formatted document using a transformation function, thereby obtaining a semi-converted formatted document, the semi-converted formatted document retaining a structure of the formatted document, the semi-converted formatted document including a transformed version of the text string, the transformed version of the text string having been transformed according to the transformation function; and providing the semi-converted formatted document to a second device, whereby the second device can perform string-based analysis of the formatted document without being exposed to the content of the text string.

[0040]

[0040] Yet another exemplary embodiment of the disclosed subject matter includes a method comprising: obtaining an element identifier of a first GUI element associated with a transformed version of a text string, the transformed version of the text string being the result of applying a transformation function to at least a portion of the text string; and locating a second GUI element associated with the element identifier in a GUI presented by an end device, the locating step including: querying the element identifier to identify candidate elements in the GUI; transforming at least partially the text string associated with the candidate element according to the transformation function to obtain a transformed version of the text string associated with the candidate element; and comparing the transformed version of the text string associated with the candidate element to the transformed version of the text string.

[0041]

[0041] Optionally, a format document depicts at least a portion of a GUI, the format document includes a structure defining a plurality of sub-elements, at least one sub-element being associated with the text string, the end device includes a rendering engine configured to render a display based on the format document, the element identifier includes a query, and executing the query includes querying the rendering engine to identify candidate elements within the format document.

[0042]

[0042] Optionally, the element identifier is identified based on a semi-converted format document, the semi-converted format document being obtained based on semi-converting a format document using a conversion function, the semi-converted format document retaining a structure of the format document, and the semi-converted format document being renderable by the rendering engine.

[0043] Optionally, the transformation function includes a one-way hash function, a symmetric encryption function, an asymmetric encryption function, or the like.

[0044] Optionally, different conversion functions are used for different types of GUI elements.

[0045]

[0045] Optionally, the GUI is one or more of a website, a web-based application, a native mobile application, and a desktop application.

[0046]

[0046] Yet another exemplary embodiment of the disclosed subject matter is a computer program product including a non-transitory computer-readable storage medium holding program instructions which, when read by a processor, cause the processor to perform the following steps: obtain an element identifier of a first GUI element associated with a transformed version of a text string, where the transformed version of the text string is a result of applying a transformation function to at least a portion of the text string; and locating a second GUI element associated with the element identifier in a GUI presented by an end device, where the locating step includes: querying the element identifier to identify candidate elements within the GUI; transforming at least partially the text string associated with the candidate element according to the transformation function to obtain a transformed version of the text string associated with the candidate element; and comparing the transformed version of the text string associated with the candidate element to the transformed version of the text string.

[0047]

[0047] Yet another exemplary embodiment of the disclosed subject matter is a system including a processor and coupled memory, the processor adapted to perform the steps of: obtaining an element identifier of a first GUI element associated with a transformed version of a text string, the transformed version of the text string being a result of applying a transformation function to at least a portion of the text string; and locating a second GUI element associated with the element identifier in a GUI presented by an end device, the locating steps including: querying the element identifier to identify candidate elements within the GUI; transforming at least partially the text string associated with the candidate element according to the transformation function to obtain a transformed version of the text string associated with the candidate element; and comparing the transformed version of the text string associated with the candidate element to the transformed version of the text string. [Brief description of the drawings]

[0048]

[0048] The subject matter of the present disclosure will be more fully understood and appreciated from the following detailed description taken in conjunction with the drawings in which corresponding or like numerals or characters indicate corresponding or like components. Unless otherwise specified, the drawings provide illustrative embodiments or aspects of the present disclosure and are not intended to limit the scope of the present disclosure. [Figure 1]

[0049] FIG. 1 illustrates a schematic diagram of an example environment and architecture in which the disclosed subject matter can be utilized, according to some example embodiments of the disclosed subject matter. [Diagram 2]

[0050] FIG. 2 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Diagram 3]

[0051] FIG. 3 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Figure 4]

[0052] FIG. 4 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Diagram 5]

[0053] FIG. 5 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Figure 6]

[0054] FIG. 6 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Figure 7]

[0055] FIG. 7 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Figure 8]

[0056] FIG. 8 illustrates a flowchart diagram of a method according to some example embodiments of the disclosed subject matter. [Figure 9]

[0057] FIG. 9 illustrates a schematic diagram of an exemplary server-side display and a corresponding client-side display in accordance with some exemplary embodiments of the disclosed subject matter. [Figure 10]

[0058] FIG. 10 illustrates a schematic diagram of an exemplary server-side display and a corresponding client-side display in accordance with some exemplary embodiments of the disclosed subject matter. [Figure 11]

[0059] FIG. 11 shows a block diagram in accordance with some example embodiments of the disclosed subject matter. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0049]

[0060] One technical challenge addressed by the disclosed subject matter is accumulating potentially sensitive data from user devices without violating, for example, privacy regulations. In some exemplary embodiments, it is desirable to enable privacy-preserving data collection, since the data may include at least some sensitive information. In some exemplary embodiments, as part of the data collection model, potentially sensitive information may be provided to a central server for analysis. Such information may include personally identifiable information (PII), protected health information (PHI), business sensitive data, and the like. For example, sensitive information may include the end user's home location, the user's comings and goings, health status information, financial information, and the like. In some exemplary embodiments, uploading such data to a central server may violate different privacy regulations and statutes, such as the European Union's (EU) General Data Protection Regulation (GDPR), the California Consumer Privacy Act (CCPA), and the like. It may be desirable to protect user privacy and process personal information in a manner that complies with such regulations. In some exemplary embodiments, third-party entities that may provide complementary services to the provider of the main service may also desire data processing. For example, such third parties may provide monetization (e.g., ad serving), information augmentation (e.g., providing mobility data, enhancing user experience (UX), e.g., using digital adoption platforms), and data analytics (e.g., data analytics services). Third parties may want to retrieve information from user devices and retain them on their servers, e.g., while complying with privacy requirements. In some cases, clients, such as service providers, may require that third parties not collect PII or other sensitive information.

[0050]

[0061] Another technical challenge addressed by the disclosed subject matter is to perform the capture in a privacy-preserving manner. The capture may be based on unique or global identifiers of Graphical User Interface (GUI) elements that may be presented at an end device. In some exemplary embodiments, the GUI elements may be buttons, labels, tooltips, widgets, input fields, text boxes, etc. In some exemplary embodiments, it is desired to identify global identifiers of GUI elements displayed in an application, web page, etc., where the GUI elements may be displayed slightly differently, for example, on different end devices (also referred to as client devices, user devices, etc.). In some exemplary embodiments, identifying the global identifiers of GUI elements may enable performing analysis of the GUI elements, such as usage analytics, statistics, etc. For example, to identify usage statistics of a "search" text box in a particular application, it is necessary to identify the "search" text box. It may be desired to identify usage of the same "search" text box by multiple end devices using a particular application, for example, the Google™ mobile application. The same "search" text box may be displayed in slightly different ways on different end devices, for example, due to different operating systems, device types, platforms, etc. GUI acquisition is described in detail in U.S. Patent No. 10,620,975, entitled "GUI Element Acquisition Using a Plurality of Alternative Representations of the GUI Element," which is incorporated herein by reference in its entirety for all purposes without denial. In some exemplary embodiments, identifying GUI elements globally across multiple end devices allows for the execution of walkthroughs, gathering information for analysis, automating processes, adding display layers, enhancing GUI functionality, etc.As an example, a walkthrough may be a tutorial that, when executed, sequentially presents GUI-related descriptive elements, as disclosed in U.S. Patent No. 9,922,008, entitled "Calling Scripts Based Tutorials," which is incorporated herein by reference in its entirety for all purposes without disclaimer. These descriptive elements may include usage instructions and / or examples, and may be associated with respective GUI elements, such as particular HyperText Markup Language (HTML) objects in a Web document.

[0051]

[0062] A possible simple solution to this problem involves full encryption (also called transformation or hashing) of the text strings of the GUI elements before sending them to the server, so that the server cannot obtain their contents. In some exemplary embodiments, instead of sending the content of the web page the user is viewing, each element of it may be transformed and only the transformed version may be sent. In some exemplary embodiments, transforming the entire text may provide a high level of privacy on the one hand, but may have significant drawbacks on the other hand. As an example, the server may provide an identification method based on the transferred values, not the original values. As a result, the original version of the GUI presented on the client device cannot be used to locate the elements and utilize that information for GUI retrieval purposes. Instead, to locate a GUI element on the client device, it may be necessary to iterate through all GUI elements in the GUI and calculate a transformation value for each. This may cause performance issues, since it takes time to calculate at least the transformation value for each element. Furthermore, if the GUI is an HTML-based application, such as a web page, each screen usually contains These may contain thousands of elements, such as elements, and converting all of them would require a significant effort in terms of central processing unit (CPU) and power usage.

[0052]

[0063] Yet another technical challenge addressed by the disclosed subject matter is locating a GUI element with a global identifier within an end device without full access to the end device's data, e.g., due to privacy regulations. In some exemplary embodiments, privacy regulations, such as those imposed by regulations or other laws, require that sensitive data not be transferred from an end user's machine without explicit consent, which is not always available. In some exemplary embodiments, it may be desirable to identify an identifier for a GUI element that can be used to locate the same GUI element within one or more end devices without accessing potentially sensitive end device data. For example, a server may be configured to provide a walk-through that includes displaying specific instructions for a particular GUI element of a program, such as a button element. The server may not be able to access GUI elements displayed on the end device, e.g., due to privacy regulations, which may make it difficult to locate and provide instructions for a desired button element.

[0053]

[0064] Yet another technical problem addressed by the disclosed subject matter is to retain information accumulated on a server from a user of a user device in such a way that the data cannot be used in a way that would violate the user's privacy. In some exemplary embodiments, customers, end users, etc. may not necessarily approve of sending sensitive information to a server, even if, for example, server-side filtering of data is employed. In some exemplary embodiments, it may be desirable to provide a system that, on the one hand, complies with privacy regulations, and, on the other hand, allows retaining data that is useful for advertising, walkthroughs, analytics, test automation, navigation, or any other third-party application.

[0054]

[0065] One technical solution is to deploy an agent on the end device configured to encrypt a portion of the data to be sent to the server, for example, before transmitting the data. In some exemplary embodiments, the data transmitted may include text strings, attributes, images, etc. associated with one or more GUI elements of a GUI displayed on the end device (referred to as "text strings"). In some exemplary embodiments, the GUI may include GUIs, screens, forms, web documents, ANDROID™ layouts, iOS™ Swift™ Playground objects, etc. of a program executed by the end device. In some exemplary embodiments, the program may include websites, web-based applications, native mobile applications, desktop applications, etc. For example, the data transmitted may include text strings of a GUI element selected by the user, the entire GUI (e.g., a Document Object Model (DOM) file), DOM properties such as inner text and attribute text, a subset of the GUI, its particular elements, one or more types of GUI elements within the GUI, etc. In some exemplary embodiments, the text strings and images within the GUI may include confidential information such as personally identifiable information (PII), protected health information (PHI), business sensitive data, financial information, or any other type of confidential data that is private or sensitive to the user.

[0055]

[0066] In some exemplary embodiments, the agent on the end device may semi-convert one or more text strings of the GUI determined to be sent to the server. In some exemplary embodiments, instead of converting the entire text string, only a portion of each text string may be converted. In some exemplary embodiments, this partial conversion may be useful to overcome drawbacks of converting the entire text string, such as performance issues. In some exemplary embodiments, the semi-conversion of the text string may be performed by leaving some characters as the original unconverted version and remaining in the clear. In some exemplary embodiments, the remaining characters of the text string that are not left as the clear text may be converted, for example, to protect the privacy of the user. In some exemplary embodiments, having the clear text portion contain a relatively small number of characters, such as 1, 2, 3, 4, etc., ensures that the text string does not contain sensitive information that violates the privacy of the user. For example, a plain text length of 10 characters may be enough to contain PII information or other substrings that are sensitive to the user and may violate the privacy of the user if left in the clear text.

[0056]

[0067] In some exemplary embodiments, before providing the text string to the server, the agent may transform a first portion of the text string according to a transformation function, such as a one-way hash function, an encryption function, or any other encryption technique that prevents a third party, such as the server, from recovering the contents of the transmitted data. In some exemplary embodiments, the transformation function is not applied to a second portion of the text string, and this portion remains unencrypted in the clear. In some exemplary embodiments, the second portion, which contains unhashed plaintext characters, may be defined as a prefix of the text string, a suffix of the text string, or an intermediate portion of the text string. For example, a partial hashing of "Submit" to produce " Su 5Fd3fds, Xf3gd bm FDS432, FDSF34 it ", etc. In this example, the underlined text is the plain text portion. In some exemplary embodiments, the second portion may have a predefined length, size, number of characters, etc., which may be agreed upon between the server and one or more end devices, for example, prior to uploading the data to the server. In some exemplary embodiments, an administrator user may set properties such as the relative position, size, etc. of the first portion. In some exemplary embodiments, different characteristics may be applied to different types of strings. As an example, in an "href" attribute, the first portion may have a relatively large size (e.g., 8 characters) after the first 8 characters (considering the https: / / or http: / / prefix) since most domain names are 6 characters or more and are not PII in themselves. In contrast, the string in the "value" attribute of an "input" tag may be considered potentially more sensitive, and therefore only the first 2 characters may be retained as part of the first portion.

[0057]

[0068] In some exemplary embodiments, by transforming the first portion and not the second portion, the agent can obtain a semi-transformed text string (also referred to as "partially encrypted data"), which includes, for example, a transformed portion, i.e., a transformed version of the first portion, and an original version of the plaintext portion, i.e., the second portion. In some exemplary embodiments, the semi-transformed text string can be provided to a server, a third party device, or any other apparatus. In some exemplary embodiments, by sending the partially encrypted data to the server, it can be ensured that the data obtained at the server does not include sensitive data, since the content is partially encrypted and cannot be restored by a third party. In some exemplary embodiments, the server receiving the semi-transformed text string can perform string-based analysis without being exposed to the content of the obtained text string, for example, since the content is partially encrypted. For example, the server can generate a walkthrough that can identify GUI elements based on the partially encrypted text string of the GUI element, the position of the text string on the GUI element, the neighbors of the GUI element, etc., without being exposed to the entire content of the text string. In some exemplary embodiments, in the case of a one-way transformation function, the server can obtain the transformation function even if it cannot restore the encrypted content using the transformation function. In some exemplary embodiments, the intended functionality of the server may include walkthroughs, analytics such as user behavior analytics, session recording, automation, automation of quality assurance, security purposes, and the like.

[0058]

[0069] In some example embodiments, to increase the usefulness of the partially encrypted data to the server, the agent may identify one or more non-sensitive information on the end device and provide the non-sensitive information to the server so that the server can recover or identify the content of the non-sensitive information. For example, to provide a translation of a phrase, the server needs to obtain the phrase in clear text.

[0059]

[0070] In some exemplary embodiments, the first portion of the text string may be converted in response to a determination that the text string is a potentially sensitive phrase. Otherwise, the first portion may not be converted and the entire text string may be provided to the server in clear text. In some exemplary embodiments, whether the text string is a potentially sensitive phrase may be determined based on the text string being included in a blacklist of sensitive phrases, the text string not being included in a whitelist of non-sensitive phrases, a machine learning based predictor determining, application of classification rules, such as whether the inspected GUI element contains or is associated with potentially sensitive content, etc. In some exemplary embodiments, if the text string is not identified as potentially sensitive or is identified as non-sensitive, the first portion may not be converted before being sent to the server.

[0060]

[0071] In some exemplary embodiments, the agent identifies potentially sensitive words and phrases and performs a semi-translation of all provided data containing non-sensitive information identified as non-sensitive. In some exemplary embodiments, the agent may provide the server with a dictionary that can translate or replace the semi-translated text string with its clear text version if the semi-translated text string is non-sensitive. In some exemplary embodiments, whether a text string is a non-sensitive text string can be determined based on the text string not being included in a blacklist indicating sensitive words and phrases, the text string being included in a whitelist indicating non-sensitive words and phrases, a machine learning based predictor's determination, or a human operator, such as an administrative user, indicating that the semi-translated text string is not sensitive, e.g., based on application of classification rules that determine whether the inspected GUI element contains potentially sensitive content, indicating that the text string is not sensitive. In some exemplary embodiments, in response to determining that the text string is not a sensitive word or phrase, the text string may be added to the dictionary along with the semi-translated version of the text string, e.g., in the same entry of the dictionary, in clear text. In some exemplary embodiments, the dictionary may be provided to a server, for example to enable the server to replace a semi-transformed text string with a text string to recover the content of the text string.

[0061]

[0072] Another technical solution is to deploy an agent on the end device, for example to perform a semi-conversion of the formatted document. In some exemplary embodiments, the agent may be configured to encrypt a portion of the formatted document with the content or representation to be sent to the server. In some exemplary embodiments, the semi-conversion of the formatted document may be performed. In some exemplary embodiments, the formatted document depicts a GUI of the end device or a portion thereof. In some exemplary embodiments, the GUI of the end device may include a GUI of a program executed by the end device, a screen, a form, a web document, an ANDROID™ layout, an iOS™ Swift™ Playground object, etc. In some exemplary embodiments, the formatted document or its contents may be retrieved by the agent.

[0062]

[0073] In some exemplary embodiments, the format document may include a structure, format, form, layout, etc., which may define sub-elements, their positions, etc. within the format document. In some exemplary embodiments, the sub-elements may include GUI elements, associated text strings, structural elements, graphic elements, hidden tags or marks, etc. In some exemplary embodiments, at least one sub-element defined by the structure, e.g., a GUI element, is defined by the structure and may include at least one text string. For example, the text string may be a visible or invisible text string associated with a GUI element in the format document.

[0063]

[0074] In some exemplary embodiments, an agent on an end device may semi-transform a formatted document. In some exemplary embodiments, instead of transforming the entire formatted document, only a portion of the formatted document may be transformed. In some exemplary embodiments, the semi-transformation may utilize a transformation function that is applied to one or more portions, sub-elements, etc. of the formatted document and not to one or more remaining portions. In some exemplary embodiments, the transformation function may include a one-way hash function, an encryption function, or any other encryption technique that prevents a receiving party, such as a server, from recovering the contents of the data transmitted in the transformed state. In some exemplary embodiments, the semi-transformation may allow for a semi-transformed formatted document to be obtained that includes one or more transformed elements and one or more untransformed elements.

[0064]

[0075] In some exemplary embodiments, the transformation function may be applied to a first portion of the formatted document (e.g., a text portion or portion thereof) and not to a second portion of the formatted document (e.g., a portion that constitutes part of the structure of the formatted document, such as a token or keyword). In some exemplary embodiments, the semi-transformed formatted document may preserve the structure of the formatted document, the layout of the formatted document, or other areas of the formatted document that are not considered sensitive by not transforming these portions. In some exemplary embodiments, the semi-transformed formatted document may not preserve sensitive information, text strings, or other elements of the formatted document by partially or fully transforming these portions. In some exemplary embodiments, the agent may determine whether a text string includes sensitive data based on one or more rules, user indications, blacklist or whitelist indications, heuristics, classifiers, etc. In some cases, the semi-transformed formatted document may include transformed versions of one or more text strings of multiple sub-elements (e.g., including at least one text string of at least one sub-element). In this case, the transformed versions of the text strings may be transformed according to the transformation function.

[0065]

[0076] In some exemplary embodiments, the semi-transformation may transform some text strings in the formatted document and not transform other text strings. In some exemplary embodiments, performing the semi-transformation may include selecting the text strings to be transformed from the formatted document and not transforming the unselected text strings. In some exemplary embodiments, a transformation function may be applied to the selected text strings and not to the unselected text strings.

[0066]

[0077] In some exemplary embodiments, any elements of the formatted document necessary for rendering the formatted document by the rendering engine may be preserved and not transformed. In some exemplary embodiments, text strings that define compilation elements, such as syntactic elements of a markup language, tokens of a markup language, elements required for lexical analysis, reserved keywords, elements required for syntactic analysis such as scanning and parsing, elements required for semantic analysis, etc. may not be transformed. In some exemplary embodiments, tags, attributes, or other structural or non-sensitive text strings in the formatted document may not be selected for transformation.

[0067]

[0078] In some exemplary embodiments, text strings that are not compilation elements, such as text strings inserted between tags, text strings that define values ​​for attributes, etc., may or may not be transformed based on, for example, whether they are determined to contain potentially sensitive information. In some exemplary embodiments, a text string may be selected based on a determination that an attribute defines a sensitive attribute and that the text string for the attribute defines an attribute value for the attribute. In such cases, the attribute is preserved, while the attribute value may or may not be transformed (e.g., based on whether it is potentially sensitive).

[0068]

[0079] In some exemplary embodiments, the formatted document may be defined in a language, such as a markup language, that includes elements defined with tags, marks, etc. In other cases, the formatted document may be defined in any other language or format. In some exemplary embodiments, a first element of the markup language may include content, while a second element of the markup language may include one or more pairs of attributes and corresponding attribute values. In some exemplary embodiments, the first element may be semi-transformed or fully transformed, while the second element may be retained (e.g., because it is not sensitive).

[0069]

[0080] In some exemplary embodiments, performing the semi-transformation includes identifying tokens, keywords, structural elements, etc. in the formatted document and not applying the transformation function to them. In some exemplary embodiments, performing the semi-transformation may include identifying static elements that are not content-based and therefore not sensitive and preserving those elements without transformation. In some exemplary embodiments, performing the semi-transformation may include identifying tags or attributes that do not define potentially sensitive content and preserving the tags or attributes along with their content.

[0070]

[0081] As an example, consider a GUI implemented using HTML, certain tag or mark attributes (e.g., user-supplied input, displayed strings, Uniform Resource Locators (URLs), etc.) can be considered to be potentially sensitive, while other attributes (e.g., element color attributes, element height attributes, border attributes, etc.) are inherently insensitive. For example, a formatted document might look like this: This is a paragraph. For example, The tags are preserved and not transformed, but the text within the attribute pair, e.g. "This is a paragraph", may be at least partially transformed. As another example, the type attribute in HTML <style>はセンシティブでない属性として定義し、その内容とともに保持してもよい。別の例として、<img src="example.gif”alt="Example”width="200”height="100”>を記述されたHTMLコードを分析する。キーワードimg、src、alt、width、heightとともに、トークン「<」、「>」、「=」、「”」が保持される。追加的または代替的に、width属性の値、height属性の値など、一部の属性の内容は本質的にセンシティブでないと判定することができる。src属性(画像自体のソース)の値、およびalt属性で定義された代替テキストなどの潜在的にセンシティブな内容は、全体または一部が変換され得る。

[0071]

[0082] いくつかの例示的な実施形態では、半変換フォーマット文書の指示やテスト文字列が、第2のデバイス(例えば、サーバまたは他のデバイス)に提供されてもよい。いくつかの例示的な実施形態では、例えば、内容が少なくとも部分的に変換されているため、第2のデバイスは、センシティブ情報の内容に曝される(exposed)ことなく、フォーマット文書の分析(例えば、文字列ベースの分析)を実行することが可能になる。

[0072]

[0083] さらなる別の技術的な解決策は、エンドデバイスにおいて、例えばサーバから、第1のGUI要素の要素識別子を取得することである。いくつかの例示的な実施形態では、要素識別子は、複数のエンドデバイスのいずれかで利用され得るGUI、画面、表示などにおけるGUI要素をグローバルに識別するように構成され得る。いくつかの例示的な実施形態では、要素識別子は半変換テキスト文字列を含むか、またはそれに対応し、この半変換テキスト文字列は、例えば、異なるエンドデバイスで、または同じエンドデバイスで、変換関数に従って半変換されたテキスト文字列を含み得る。いくつかの例示的な実施形態では、テキスト文字列は、テキスト文字列の第1部分を変換し、テキスト文字列の第2部分を変換しないことによって半変換され得る。いくつかの例示的な実施形態では、半変換テキスト文字列は、例えば、第1部分の変換されたバージョンに対応する変換部分と、例えばテキスト文字列の第2部分に対応する平文部分を含み得る。いくつかの例示的な実施形態では、複数のエンドデバイスのうちの1以上のエンドデバイスは、それらのGUI、画面、表示などに、半変換テキスト文字列に対応する1以上の第2のGUI要素を配置してもよい。いくつかの例示的な実施形態では、サーバは、テキスト文字列の第1部分の文字数、文字長などを(例えば、変換部分へと変換される前に)要素識別子とともに、提供してもよい。

[0073]

[0084] いくつかの例示的な実施形態では、エンドデバイスに配備されたエージェントは、例えばエンドデバイスのGUIにおいて、要素識別子に関連付けられた第2のGUI要素をロケートするようにしてもよい。いくつかの例示的な実施形態では、例えば要素識別子に基づいて、エンドデバイスのGUI内のGUI要素の文字列ベースの検索を実行することによって、第2のGUI要素をロケートすることができる。いくつかの例示的な実施形態では、この文字列ベースの検索は、半変換テキスト文字列の平文部分を使用して、同じ平文部分を含むそれぞれのテキスト文字列に関連付けられているエンドデバイスのGUI内の1以上の候補要素を、例えば、テキスト文字列内の同じ相対位置で特定または識別することを含み得る。いくつかの例示的な実施形態では、各候補要素は、少なくとも1つのテキスト文字列に関連付けられ得る。いくつかの例示的な実施形態では、各候補要素のテキスト文字列の残りの部分は、変換関数(例えば、異なるエンドデバイスまたは同じエンドデバイスで以前にテキスト文字列の変換に使用されたのと同じ変換関数)に従って変換され得る。いくつかの例示的な実施形態では、変換関数に従って変換された候補要素のテキスト文字列の変換部分を、要素識別子内の半変換テキスト文字列の変換部分と比較して、例えばそれらが同一であるかどうかを識別してもよい。それらが同一である場合、エージェントは、第1および第2のGUI要素が同一の要素識別子を有すると判断することができ、したがってGUI内の第2のGUI要素を成功裏にロケートすることができる。

[0074]

[0085] いくつかの例示的な実施形態では、要素識別子は、例えばサーバとエンドデバイスの1以上のエージェントとの連携に基づいて、1以上の有用な機能を提供するために利用することができる。いくつかのケースでは、要素識別子を使用して、サーバはエージェントに要素識別子を使用して1つ以上のクエリを実行するように要求してもよい。例えば、サーバは、モバイルアプリケーションにおいて選択された単語の単語カウントを実行するように要求し、エージェントは、単語の要素識別子を使用してクエリを実行して、サーバに答えを提供することができる。いくつかのケースでは、要素識別子を使用して、サーバは、複数のエンドデバイスのそれぞれの複数のエージェントに対して、要素識別子が示すGUI要素に関連する利用情報を提供するように要求してもよい。例えば、サーバは、対応するデバイスのユーザが要素識別子の要素を選択した回数に関する情報を蓄積するように各エージェントに要求してもよい。各エージェントは、要素識別子を利用して、ある時間枠でのそのような発生を識別し、当該時間枠における発生の総数を計算し、その数を報告してもよい。サーバは、各エージェントから使用統計を取得し、その統計に基づいて分析を実行することができる。

[0075]

[0086] いくつかの例示的な実施形態では、要素識別子は、半変換テキスト文字列に関連付けられたクエリを含んでもよい。いくつかの例示的な実施形態では、1以上のエンドデバイスは、半変換テキスト文字列に関連付けられたクエリをGUIに適用することによって、GUI要素をロケートすることができる。一例として、1以上のエンドデバイスは、例えば、プラットフォーム、オペレーティングシステム、ネットワーク接続状況、利用可能な帯域幅などが異なるために、異なるデバイスでわずかに異なる方法で配置または提示される場合がある同じGUI要素を有する同じモバイルアプリケーション(例えば、Waze(商標)アプリケーション)を実行することができる。いくつかの例示的な実施形態では、1以上のエンドデバイスは、モバイルアプリケーション内の特定の要素をグローバルに、例えばすべての1以上のエンドデバイスにわたってグローバルに識別するクエリをサーバから受信してもよい。このように要素識別子は、各エンドデバイスにおいて、例えばウォークスルーや他の任意の機能を提供するために、わずかな変化を有する可能性がある同じGUI要素を識別することができる。いくつかの例示的な実施形態では、要素識別子は、エンドデバイスでの第2のGUI要素の使用の統計を取得するリクエストや、エンドデバイスでのテキスト文字列のカウントを取得するリクエストなどのリクエストの一部として、サーバから提供される。いくつかの例示的な実施形態では、第2のGUI要素は、リクエストに応じてGUI内でロケートされ、第2のGUI要素のリクエストされた統計が蓄積されてもよい。いくつかの例示的な実施形態では、クエリは、サーバに配備され得る機械学習分類器によって、1以上のルール、ヒューリスティックなどによって決定され、異なるエンドデバイスにわたって同じGUI要素をグローバルにロケートする任意のクエリを含むことができる。いくつかの例示的な実施形態では、クエリは、テキスト文字列の半変換された内容、テキスト文字列の位置、テキスト文字列の近隣物などに基づくことができる。

[0076]

[0087] いくつかの例示的な実施形態では、クエリは文字列ベースの検索を含むことができ、これは半変換テキスト文字列の平文部分を用いて実行され、例えば通常表現を用いるなどしてクエリで示され得るテキスト文字列内の正しい相対位置に、その平文に関連するテキスト文字列を有する少なくとも1つの候補要素が各エンドデバイスで特定される。いくつかの例示的な実施形態では、候補要素はさらに、例えばサーバによって提供され得る、関連するテキスト文字列の残りの部分の文字長に従ってフィルタリングされてもよい。例えば、文字の長さが正しくない候補要素のテキスト文字列(例えば、半変換テキスト文字列と長さが一致しないテキスト文字列)は破棄することができる。いくつかの例示的な実施形態では、平文部分を除いた後の候補要素のテキスト文字列の残りの部分を、変換関数に従って変換して、候補要素のテキスト文字列の変換部分を得ることができる。いくつかの例示的な実施形態では、候補要素のテキスト文字列の変換部分を、例えば、半変換テキスト文字列の変換部分と比較して、それらが同一であるかどうかを識別することができる。

[0077]

[0088] さらなる別の技術的な解決策は、例えば1以上のエンドデバイスで、サーバから、または任意の他の供給源から、第1のGUI要素の要素識別子を取得することである。いくつかの例示的な実施形態では、要素識別子は、複数のエンドデバイスのいずれかで利用され得るGUI、画面、表示などにおいて、GUI要素(例えば、第1のGUI要素)をグローバルに識別するように構成され得る。いくつかの例示的な実施形態では、1以上のエンドデバイスは、それらのGUI、画面、表示などにおいて、要素識別子に対応する1以上の第2のGUI要素をロケートしてもよい。いくつかの例示的な実施形態では、要素識別子は、わずかな変更を有し得る同じGUI要素を各エンドデバイスにおいて識別することができ、例えば分析やGUI向上といったアプリケーション用のGUI要素のロバストな取得を提供する。いくつかの例示的な実施形態では、異なるオペレーティングシステム、ソフトウェアプラットフォーム、構成などに起因してバリエーションが生じる場合がある。追加的または代替的に、基盤となるソフトウェアの更新、難読化(obfuscation)など、またはその他の状況やシナリオが原因で、バリエーションが生じる場合がある。

[0078]

[0089] いくつかの例示的な実施形態では、第1のGUI要素の要素識別子は、テキスト文字列の変換されたバージョンに関連付けられてもよい。いくつかの例示的な実施形態では、テキスト文字列の変換されたバージョンは、例えば要素識別子を取得した同じエンドデバイスで、または異なるエンドデバイスで、テキスト文字列の少なくとも一部に変換関数を適用した結果であり得る。いくつかの例示的な実施形態では、テキスト文字列は、フォーマット文書に描写される(depicted)か、関連付けられ得る。いくつかの例示的な実施形態では、フォーマット文書は、要素識別子や、同じプログラムの類似のGUIなどを取得したエンドデバイスのGUIの少なくとも一部を描写してもよい。いくつかの例示的な実施形態では、フォーマット文書は、複数のサブ要素を定義する構造を含んでもよい。いくつかの例示的な実施形態では、フォーマット文書内の少なくとも1つのサブ要素は、テキスト文字列に関連付けられたGUI要素(例えば、第1のGUI要素)を含み得る。

[0079]

[0090] いくつかの例示的な実施形態では、エンドデバイスに配備されたエージェントは、そのエンドデバイスのGUIにおいて、要素識別子に関連付けられた第2のGUI要素をロケートすることができる。いくつかの例示的な実施形態では、要素識別子はクエリを含み得る。いくつかの例示的な実施形態では、第2のGUI要素をロケートするステップは、要素識別子のクエリを実行してGUI内の候補要素を特定することを含み得る。いくつかの例示的な実施形態では、エンドデバイスは、フォーマット文書に基づいて表示をレンダリングするように構成されたレンダリングエンジンを含み得る。いくつかの例示的な実施形態では、クエリを実行することは、クエリを用いてレンダリングエンジンにクエリを実行し、フォーマット文書内で候補要素を識別することを含み得る。いくつかの例示的な実施形態では、レンダリングエンジンは、フォーマット文書の1以上の構造的または非センシティブな要素または部分に基づいて表示をレンダリングするように構成され、これはクエリによって利用され得る。

[0080]

[0091] いくつかの例示的な実施形態では、クエリの結果から1以上の候補要素を特定すると、例えば、各候補要素に関連付けられたテキスト文字列の変換されたバージョンを得るために、各候補要素に関連付けられたテキスト文字列を、変換関数に従って少なくとも部分的に変換することができる。いくつかの例示的な実施形態では、候補要素に関連付けられた変換バージョンは、第1のGUI要素のテキスト文字列に関連付けられた変換バージョンと比較されてもよい。それらが同一である場合、エージェントは、第1および第2のGUI要素が同じ要素識別子を有すると判断し、したがって、GUI内の第2のGUI要素を成功裏にロケートすることができる。あるいは、エージェントは、要素識別子で表されるGUI要素がロケートできなかったと判断してもよい。

[0081]

[0092] いくつかの例示的な実施形態では、クエリは、それぞれが関連するテキスト文字列を有する少なくとも1つの候補要素を各エンドデバイスで特定するために、第1のGUI要素のテキスト文字列に関連付けられた構造的または非センシティブな要素を用いて実行できる検索を含み得る。例えば、クエリは、例えば通常表現(regular expressions)を用いて、第1のGUI要素のテキスト文字列に関連付けられるフォーマット文書内の相対位置を定義してもよい。別の例として、クエリは、第1のGUI要素の属性またはタグのタイプを定義してもよい。さらに別の例として、クエリは、第1の要素を識別するのに用いたのと同様のプロパティを利用して、第1のGUI要素を含む要素や、第1のGUI要素に隣接する要素などの別のGUI要素を識別することができる。

[0082]

[0093] いくつかの例示的な実施形態では、サーバは1以上のエンドデバイスに、要素識別子とともに、第1のGUI要素のテキスト文字列の、例えば、変換前の元のバージョンの文字数、文字長などを提供してもよい。いくつかの例示的な実施形態では、第1のGUI要素のテキスト文字列の一部のみが変換された場合、文字数は、テキスト文字列の変換された部分にのみ関連してもよい。追加的または代替的に、文字数は文字列全体に関連してもよい。いくつかの例示的な実施形態では、文字数を使用して、各候補要素に関連付けられたテキスト文字列の変換を実行する前に、候補要素をフィルタリングすることができる。

[0083]

[0094] 例えば、「hello」という文字列を変換して、変換されたテキスト文字列「76r5ve56uV&g57e」とすることができる。したがって、要素識別子とともに提供される文字数は、5の値(「hello」の文字数)を含み得る。いくつかのケースでは、変換されたテキスト文字列の文字数は、変換されていないテキスト文字列の文字数よりも多くてもよい。他のケースでは、変換されたテキスト文字列の文字数は、変換されていないテキスト文字列の文字数と同じか、それよりも小さくてもよい。

[0084]

[0095] いくつかの例示的な実施形態では、要素識別子は、フォーマット文書の半変換されたバージョン(例えば、半変換フォーマット文書と呼ぶ)に基づいて特定することができる。いくつかの例示的な実施形態では、半変換フォーマット文書は、例えば、変換関数を使用して、フォーマット文書の半変換に基づいて得ることができる。いくつかの例示的な実施形態では、半変換フォーマット文書はフォーマット文書の構造を保持してもよく、これにはタグ、属性などのフォーマット文書のレンダリングに必要とされる任意のコンパイル要素が含まれる。いくつかの例示的な実施形態では、フォーマット文書の構造を保持することにより、元のフォーマット文書を解析する際に作成された抽象構文ツリーと、半変換フォーマット文書を解析する際に作成される抽象構文ツリーとが同一構造の、潜在的に1以上のノードの内容が異なるものとなる。いくつかの例示的な実施形態では、半変換フォーマット文書は、エンドデバイスのレンダリングエンジンによってレンダリング可能であり、フォーマット文書が準拠する構文解析規則と同じようにすべての規則に準拠し得る。

[0085]

[0096] 開示された主題は、データがエンドデバイスから収集され、必ずしもエンドデバイスにそのような処理の結果を提供することなく処理されるシステムに実装されてもよいことに留意されたい。例として、ある実施形態では、統計データが時間をかけて収集され、そこから洞察を導き出すことができる。いくつかのケースでは、ユーザのセッションを追跡して、ユーザがシステムとどのようにやりとりしたかを確認することができる。管理者ダッシュボードを使用するなどして情報が管理者ユーザに表示される場合、半変換テキスト文字列を使用して管理者ユーザに表示を提供し、ユーザが入力または閲覧したPII(名前、住所、アカウント残高など)や他の個人情報を漏らさずにユーザのアクティビティを理解できるようにすることができる。本開示では、開示を明確にするために、GUIベースのデータを使用して、GUIの取得に有用な識別子を取得する実施形態に焦点を当てている。しかしながら、開示される主題はそのような実施形態に限定されるものではなく、任意の処理を行ってもよい。

[0086]

[0097] 開示された主題を用いることによる1つの技術的効果は、エンドユーザからセンシティブ情報の内容を取得することなく、サーバが意図した機能を実現することを可能にすることであり、したがって、顧客のデバイスから情報を蓄積する前に当該顧客から特別な同意を取得する必要がなくなる。

[0087]

[0098] 開示された主題を用いることによる別の技術的効果は、ユーザデバイスからセンシティブ情報を出すことなく、ユーザデバイスから蓄積されたデータを保持できることである。いくつかの例示的な実施形態では、開示された主題は、広告関係者、デジタル採用プラットフォームのプロバイダなどのエンティティが、例えばプライバシー要件を遵守しながら、ユーザデバイスから情報を取得し、それらをサーバに保持することを可能にし得る。

[0088]

[0099] 開示される主題を用いることによるさらなる別の技術的効果は、プライベートデータを提供するためのリソース効率の高いソリューションを提供することである。開示された主題により、サーバや他のサードパーティが半変換テキスト文字列を取得し、それに基づいてルールを規定できるようになる。これらのルールは、変換されていない文字列が利用可能なエンドデバイスに適用することができる。開示された主題は、テキストベースのクエリを利用して、変換する必要のある潜在的な候補の数を減らし、それによってCPUリソースと電力リソースを節約し、ユーザエクスペリエンスに悪影響を与える遅延を引き起こすことなく迅速な処理とルールの適用を可能にする。

[0089]

[0100] 開示された主題を用いることによるさらなる別の技術的効果は、GUI要素のプライバシーを保持した取得である。開示された主題は、プライバシーを保持した方法で、1以上のプログラムのGUI要素を取得することを可能にする。具体的には、開示された主題では、GUI要素のグローバル識別子の特定が可能であり、これによって複数のエンドデバイスにわたってGUI要素を識別することを可能にし、プライバシーを維持した方法でGUI要素を分析することを可能にする。いくつかの例示的な実施形態では、GUI要素をグローバルに識別することにより、ウォークスルー、GUI上での拡張表示の提供、分析のための情報収集、ユーザまたはユーザアクションの分析、テスト自動化、プロセス自動化、GUIの拡張機能の実行などの有用なプロセスの実行が可能になり得る。

[0090]

[0101] 開示された主題を用いることによるさらなる別の技術的効果は、半変換されたデータのみに基づいて、GUI内でGUI要素をロケートすること(locating)である。いくつかの例示的な実施形態では、開示された主題はGUI要素の識別子を提供することが可能であり、1以上のエンドデバイス内で、わずかな変更を有し得る同じGUI要素をGUI要素のテキスト文字列の完全な内容を取得することなくロケートするために、これを利用することができる。いくつかの例示的な実施形態では、開示された主題は、テキストまたは属性に頼って要素をロケートするように構成された任意のアルゴリズムに有用であり得る。

[0091]

[0102] 開示された主題を用いることによるさらなる別の技術的効果は、プライバシー規制に違反することなく、またエンドデバイスで実行されているプログラムへのアクセスや通信を必ずしも受けることなく、例えばその機能の増強、そのための適応可能なウォークスルーの提供、GUI上への表示レイヤの追加、利用統計の収集などによって、プログラムのGUIを実行する際のユーザエクスペリエンスを向上させることである。

[0092]

[0103] 開示された主題は、任意の既存の技術および当該技術分野において以前にルーチン化または慣用化された任意の技術に対する1つまたは複数の技術的改良を提供し得る。さらなる技術的問題、解決策、および効果は、本開示に鑑みて、当業者には明らかとなろう。

[0093]

[0104] ここで図1を参照すると、開示された主題のいくつかの例示的な実施形態による環境が示されている。

[0094]

[0105] 環境100は、複数のクライアントデバイス110を含み得る。クライアントデバイス110は、パーソナルコンピュータ(PC)、タブレット、スマートフォンなどであり得る。クライアントデバイス110は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、無線ネットワーク、インターネット、イントラネットなどのようなコンピュータ化されたネットワーク105に接続され得る。

[0095]

[0106] いくつかの例示的な実施形態では、エージェント115が、クライアントデバイス110上で実行されている。いくつかの例示的な実施形態では、各クライアントデバイス110が、対応するエージェント115を実行する。追加的または代替的に、一部のクライアントデバイス110のみがエージェント115を実行してもよい。エージェント115は、スクリプト、クローラ、ソフトウェア、ブラウザの拡張機能、モバイルアプリケーション、ウェブアプリケーション、ソフトウェア開発キット(SDK)、共有ライブラリ、ダイナミックリンクライブラリ(DLL)などのコンピュータによって実行可能なプログラム製品であり得るが、これらに限定されない。

[0096]

[0107] クライアントデバイス110は、GUIを有するプログラムを実行するように構成され得る。プログラムは、例えば、ウェブページ、ウェブアプリケーション、ブラウザ拡張機能、モバイルアプリケーション、デスクトップアプリケーションなどであり得る。このプログラムは、GUI要素を含むGUIを構成する1以上の画面をエンドユーザに表示することができる。

[0097]

[0108] いくつかの例示的な実施形態では、エージェント115は、GUIに現れる少なくとも1つのGUI要素を取得するように構成され得る。いくつかの例示的な実施形態では、エージェント115は表示されたGUIのデジタル表現を取得することができ、これにはHTML文書、画面キャプチャ画像、GUIの要素およびそれらのプロパティを表す拡張可能マークアップ言語(XML)文書、文書オブジェクトモジュール(DOM)ファイル、ANDROID(商標)レイアウト、またはGUIの他のデジタル表現などがある。例えばエージェント115は、クライアントデバイス110によって実行されるプログラムにおいて、特定のインタラクティブボタン、テキスト要素、ツールチップなどを取得することができる。

[0098]

[0109] 環境100は、コンピュータ化されたネットワーク105に接続されたサーバ120を含み得る。サーバ120は、リモートサーバ、クラウドサーバ、ドメインネームシステム(DNS)、ゲートウェイ(GW)サーバ、仮想プライベートネットワーク(VPN)サーバなどであり得る。いくつかの例示的な実施形態では、サーバ120は、エージェント115からの情報を蓄積し、プログラムに関するユーザアクティビティを追跡し、GUI要素に関連する使用統計をモニタし、GUI要素の要素識別子を特定するように構成され得る。いくつかの例示的な実施形態では、エージェント115は、エージェント115が遭遇(encount)したGUIまたはその要素のテキスト文字列をサーバ120に送信するように構成され得る。いくつかの例示的な実施形態では、エージェント115は、半変換されたフォーマット文書またはその表現をサーバ120に送信するように構成され得る。いくつかの例示的な実施形態では、遭遇したGUIのテキスト文字列は、半変換された態様で、または完全に変換された方法で、サーバ120に送信され得る。あるいは、テキスト文字列がエージェント115によって非センシティブであると識別された場合、それらは平文バージョンで、または平文バージョンを含む辞書とともにサーバ120に送信されてもよい。エージェント115は、GUIのデジタル表現全体を、例えばDOMファイル、HTMLファイルなどでサーバ120に送信することができることに留意されたい。そのようなデジタル表現は加工されてもよく、潜在的にセンシティブな各文字列は少なくとも半変換され得る。例として、HTMLを使用して実装されたGUIを考えると、タグの特定の属性は潜在的にセンシティブと考えられるが(例えば、ユーザ提供の入力、表示された文字列、ツールチップの内容、URLなど)、他の属性は本来的に非センシティブと考えられる(例えば、要素のcolor属性、要素のheight属性、border属性など)。いくつかの例示的な実施形態では、GUIをレンダリングするために必要なトークン、キーワードなどのコンパイル要素はセンシティブとは見なされず、したがって変換されなくてもよい。

[0099]

[0110] いくつかの例示的な実施形態では、サーバ120は、エージェント115からの半変換または完全に変換されたテキスト文字列および平文テキスト文字列を、それらの位置、コンテキスト、近隣物などの対応する識別子とともに保持する。いくつかのケースでは、サーバ120は、半変換テキスト文字列に基づいて、場合によっては追加のコンテキスト情報を使用して、複数のクライアントデバイス110にわたってGUI要素をロケートすることができる要素識別子を特定(determine)することができる。いくつかのケースでは、サーバ120は、完全に変換されたテキスト文字列に基づいて、例えば相対位置や構造などの追加のコンテキスト情報を使用して、複数のクライアントデバイス110にわたってGUI要素をロケートすることができる要素識別子を特定することができる。いくつかの例示的な実施形態では、サーバ120は、半変換または完全に変換されたテキスト文字列、テキスト文字列のコンテキストなどを検索するクエリを含む要素識別子を生成することができる。いくつかの例示的な実施形態では、半変換テキスト文字列を検索するクエリは、半変換テキスト文字列の平文部分に基づいてもよい。いくつかの例示的な実施形態では、完全変換テキスト文字列を検索するクエリは、テキスト文字列の構造要素(例えば、属性のタイプ、相対的な位置など)に基づいてもよい。いくつかの例示的な実施形態では、サーバ120は、GUI要素をロケートするクエリを含むGUI要素の要素識別子をエージェント115に送信することによって、クライアントデバイス110内のGUI要素をロケートしようと試みることができる。いくつかの例示的な実施形態では、要素を取得しようとするエージェント115に応答して、クエリを適用した結果として1以上の要素候補が識別され得る。いくつかの例示的な実施形態では、クエリは、候補のテキスト文字列に半変換または完全変換を適用し、候補のテキスト文字列の間にターゲットの半変換テキスト文字列を配置するように構成され得る。

[0100]

[0111] いくつかの例示的な実施形態では、サーバ120は、分析の実行、ウォークスルーの提供、統計の決定などのためにGUI要素をロケートしてもよい。いくつかのケースで、エージェント115は、例えばサーバ120から取得されたウォークスルーを実装し、このウォークスルーの要素が、要素識別子を使用してロケートされたGUI要素に隣接する位置に表示されてもよい。他のケースでは、エージェント115は他の機能を実装してもよい。

[0101]

[0112] 例として、第1のクライアントデバイス110のエージェント115は、税務プログラムのフォームなどのプログラムGUIにおいてテキスト文字列「申請(apply)」を有する第1のGUI要素を取得し、このテキスト文字列の少なくとも一部に変換関数を適用して、サーバ120に提供する前にテキスト文字列の変換バージョンを得ることができる。いくつかの例示的な実施形態では、サーバ120は、「申請」のテキスト文字列の変換バージョンの要素識別子を特定(determine)し、この要素識別子を用いて、第2のクライアントデバイス110において税務プログラムのフォーム内で「申請」のテキスト文字列を識別する。いくつかの例示的な実施形態では、これによって、サーバ120が、例えばクライアントデバイス110の各ユーザがこの第1のGUI要素を押した回数をカウントすることが可能になる。例えば、サーバ120はクライアントデバイス110のすべてのエージェント115に、この「申請」のテキスト文字列のような、要素識別子で識別される要素のクリック数をカウントするように指示することができる。

[0102]

[0113] ここで、開示された主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図2を参照する。

[0103]

[0114] ステップ200において、ユーザのエンドデバイスにエージェントが展開され得る。いくつかの例示的な実施形態では、エージェントを展開している間、エンドデバイスは、1以上のプログラム、例えば、モバイルプログラム、デスクトッププログラム、ウェブプログラムなどを実行することができる。いくつかの例示的な実施形態では、エージェントは、1以上のクローラ、スクリプト、ソフトウェア製品、ユーザ操作型クライアントなどを含み得る。いくつかの例示的な実施形態では、エージェントはユーザ操作型クライアントであり、ここでユーザは、セッションでユーザが遭遇する特定の画面を保存するようにクライアントに指示することができる。追加的または代替的に、エージェントは、ユーザの指示がなくてもユーザがアクセスしたウェブサイト、画面、DOMなどを報告(report)してもよい。追加的または代替的に、エージェントはウェブサイトその他の実行されたプログラムをクロールし、それらを自律的に報告してもよい。

[0104]

[0115] いくつかの例示的な実施形態では、エージェントは、クライアントデバイス上で実行され、クライアントデバイスとサーバ間で情報を通信することができる。いくつかの例示的な実施形態では、サーバは、GUI要素の一意の識別子を特定するために情報を利用することができ、これによってウォークスルー、分析、プロセス自動化、表示レイヤの追加、GUIの機能の増強などを実行することができる。

[0105]

[0116] ステップ210において、エージェントは、サーバに送信されるべきGUI要素のテキスト文字列を取得し得る。いくつかの例示的な実施形態では、送信されるデータは、ユーザによって選択されたGUI要素に関連付けられているテキスト文字列、GUI要素に含まれ、ユーザに提示または非表示にされ得る1以上のテキスト文字列、GUI全体に関連付けられているテキスト文字列、GUIのサブセットに関連付けられている1つ以上のテキスト文字列、その特定の要素に関連付けられているテキスト文字列、1つ以上のタイプのGUI要素に関連付けられているテキスト文字列などを含み得る。いくつかの例示的な実施形態では、テキスト文字列は、テキスト、属性、URL、URI(Uniform Resource Identifiers)、内部テキストまたは属性テキストなどのDOMプロパティ、1以上のGUI要素の非表示または表示部分などを含み得る。例えばHTMLドキュメントの場合、テキスト文字列は、タグの間の内部テキスト(例えば、テキスト)を含み得る。別の例として、テキスト文字列は、<divtitle="Text”>などのHTML属性のテキストを含み得る。いくつかの例示的な実施形態では、GUI要素がウェブページやウェブサイトなどの一部である場合、GUI要素のテキスト文字列はHTML要素を含み得る。例として、エンドデバイスで実行されるプログラムのGUIは、Google(商標)ホームページであり得る。GUI要素は、ユーザが文字入力できる検索領域であってもよく、それはHTML要素であり得る。この例では、検索領域は、「div id=searchBox」を検索することによって取得することができる。別の例として、GUIは、ウェブアプリケーションではなく、Google(商標)Searchモバイルアプリケーションの画面であってもよい。画面は、検索ボックスなどのGUI要素を含むことができ、その場合は「android:id="searchBox”」のように異なる方法で識別されてもよい。

[0106]

[0117] いくつかの例示的な実施形態では、テキスト文字列は、自動化プロセス、ウォークスルーなどの一部として、エージェントによって取得され得る。追加的または代替的に、テキスト文字列は、例えばパフォーマンス測定値が追跡される要素などの、関心のある定義された要素に基づいて、エージェントによって自動的に取得されてもよい。いくつかの例示的な実施形態では、テキスト文字列は、例えばウォークスルーなどの機能をユーザに提供するためにサーバがGUI要素を分析できるように、ユーザによるGUI要素の選択に応答してエージェントによって取得されてもよい。いくつかの例示的な実施形態では、テキスト文字列は、他の任意のアクションに応答して、またはユーザのアクションに関係なく、エージェントによって取得されてもよい。いくつかの例示的な実施形態では、エージェントによって取得されるテキスト文字列は、トークン、キーワード、タグなどを除外してもよい例えば、HTML文書の場合、エージェントはタグや「title」キーワードなどのHTMLトークンを取得しなくてもよい。他のケースでは、トークン、キーワード、タグなどは除外されなくてもよい。

[0107]

[0118] ステップ220において、エージェントはGUI要素のテキスト文字列を半変換して、例えば、変換部分と平文部分とを含む半変換テキスト文字列を得ることができる。いくつかの例示的な実施形態では、半変換するステップは、変換関数に従ってGUI要素のテキスト文字列の第1部分をハッシュまたは他の方法で変換して変換部分を取得し、一方で残りの第2部分(例えば平文部分)を平文に維持することを含む。いくつかの例示的な実施形態では、変換部分と平文部分とはそれぞれ、互いに隣接するか、あるいは分離されているテキスト文字列の1以上の部分を含み得る。

[0108]

[0119] いくつかの例示的な実施形態では、変換関数は、一方向性ハッシュ関数、対称暗号化関数、非対称暗号化関数などを含み得る。いくつかのケースでは、変換関数は、SHA-256やMD5などの汎用ハッシュ関数、またはカスタマイズされた一方向性関数などの非汎用ハッシュ関数を含み得る。いくつかのケースでは、受信側(サーバなど)が暗号化キーを保持せず送信側(クライアント)のみがキーを保持する場合には、対称または非対称の暗号化を用いてもよい。

[0109]

[0120] いくつかの例示的な実施形態では、異なるテキスト文字列に異なる変換関数を選択して使用してもよい。例えば、第1の変換関数が第1のテキスト文字列に対して選択され、第2の変換関数が第2のテキスト文字列に対して選択され得る。この例によれば、第1のテキスト文字列の第1部分が第1の変換関数に従って変換され、第2のテキスト文字列の第1部分が第2の変換関数に従って変換されて、それによって第1および第2の半変換されたテキスト文字列が得られる。いくつかの例示的な実施形態では、異なる変換関数を、クライアントデバイスの異なるグループにそれぞれ使用することができる。例えば、特定の銀行の銀行員に関連付けられているクライアントデバイスがデータを暗号化するために第1ハッシュ関数を使用し、Zara(商標)などの特定のファッションストアに関連付けられているクライアントデバイスがデータの暗号化に第2のハッシュ関数を使用してもよい。いくつかの例示的な実施形態では、異なるタイプのGUI要素にそれぞれ異なる変換関数を使用することができる。例えば、ボタンタイプやテキストボックスタイプなどのHTML要素タイプごとに、異なる変換関数を関連付けることができる。いくつかの例示的な実施形態では、他の分類規則に従って、異なる変換関数を使用することができる。いくつかの例示的な実施形態では、エンドデバイスに対して同じ変換関数を使用してもよい。

[0110]

[0121] いくつかの例示的な実施形態では、変換されるテキスト文字列の部分の長さまたは文字数が、例えばテキスト文字列とともに、エージェントによって保持されてもよい。変換される部分の文字列の長さがメッセージの受信者によって事前に知られていない場合、この部分の文字列の長さが、例えば半変換テキスト文字列とともにサーバに提供されてもよい。例えば、変換関数は、「her」といった3文字の部分を、「hc7ays」といった6文字の変換部分へと変換することができる。この例によれば、エージェントは、テキスト文字列または半変換テキスト文字列とともに、元のサイズ(例えば3)を保持することができる。いくつかの例示的な実施形態では、テキスト文字列に加えて、画像などの属性も半変換またはハッシュされてもよい。

[0111]

[0122] いくつかの例示的な実施形態では、各テキスト文字列で変換されない平文文字の量は、例えば、サーバ、エージェント、ユーザ、管理者ユーザなどによって定義または合意されてもよい。いくつかの例示的な実施形態では、各半変換テキスト文字列内の平文文字の量は、例えば、1、2、3、4、5文字など、センシティブなテキストを含むことができないように十分に短く定義することができる。いくつかの例示的な実施形態では、システムは、GUIにおいて一意である長い平文の長さを定義するのでなく、センシティブでないことを保証できる非ユニークなテキストで妥協してもよい。例えば、12文字の平文の長さは、機密性の高い完全な単語が含まれる可能性があるため、長すぎるとされ得る。いくつかの例示的な実施形態では、各半変換テキスト文字列内の平文文字の量は、規則に基づいて、単語長、ヒューリスティック、命令などに基づいて、一定であってもよいし、動的であってもよい。例えば、第1のタイプのGUI要素について第1の量の平文文字を決定し、第2のタイプのGUI要素について異なる量の平文文字を決定することができる。あるいは、変換されたテキスト文字列は、同じ量の平文文字を含んでもよい。いくつかの例示的な実施形態では、各半変換テキスト文字列内の平文文字の量は、ページ内で一意であってもよいし、または類似した文字列の数が少なく、候補リストが短くなるような最短の文字列をロケートすることによって、動的に決定されてもよい。

[0112]

[0123] いくつかの例示的な実施形態では、各テキスト文字列内の平文文字の位置は、例えば、サーバ、エージェント、ユーザなどによって定義または合意され得る。いくつかの例示的な実施形態では、各テキスト文字列内の平文文字の位置は、一定であっても、動的であっても、規則に基づくなどしてもよい。いくつかの例示的な実施形態では、各テキスト文字列内の平文文字の位置は、特定の長さの接頭辞、特定の長さの接尾辞、または特定の長さのテキスト文字列の他の任意の部分文字列(substring)の位置として定義することができ、それはプライバシーを保護しながらGUI内で候補の短いリストを提供するように比較的ユニークであってよい。例えば、平文の文字の位置は、文字列の最初と最後の文字、最初と3番目の文字などとして定義されてもよい。いくつかのケースでは、各テキスト文字列内の平文文字の場所は、ページ内で一意の場所をロケートすることによって、または少数の同様の結果が得られる位置をロケートすることによって、動的に決定されてもよい。

[0113]

[0124] いくつかの例示的な実施形態では、半変換テキスト文字列は、複数の非連続的な平文シーケンスを含んでもよい。例えば、2文字の接頭辞がそのまま保持され、その後に続く5文字を変換し、その後の3文字を保持し、文字列の残りの部分が変換されるようにしてもよい。そのような実施形態では、保持される平文文字の総数を増やすことができ、個人情報を漏らすことなく文字列ベースのクエリ分析に利用することができる。

[0114]

[0125] いくつかの例示的な実施形態では、テキスト文字列が長い場合には、文字列全体ではなく、半変換された部分文字列のみによって識別可能とすることができる。他のケースでは、長い文字列全体を半変換してもよい。例えば、「Please click here to enable your account(アカウントを有効にするには、ここをクリックして下さい)」というテキスト文字列は、長い文字列と考えられる。したがって、「our acc」の部分文字列を、この要素を迅速にロケートするのに十分にユニークであると判断することができる。この例によれば、部分文字列「our acc」は部分的に「ouFCVX34」に変換され、一方で残りのテキスト文字列はサーバに提供されない。例として、部分的に「ouFCVX34」として変換され得る部分文字列「our acc」の場合、{plaintext:"ou”,hash:"FCVX34”,hash-length:5}というメッセージがサーバに送信され、ここでhash-length(ハッシュ長)は、ハッシュ部分「r acc」の長さが含まれる。いくつかの例示的なケースでは、長いテキスト文字列の部分文字列を半変換すると、例えばサーバが分析目的で利用される場合などに、1以上の不利益が生じる可能性がある。例えば、管理者ユーザは、ユーザの行動を追跡したいキーワードを定義することができる。例えば、管理者ユーザは、半変換された方法で、テキスト「test(テスト)」を含むGUI要素がクリックされた回数をカウントしたい場合がある。これには、指定されたプログラムの「test(テスト)」、「this is a test(これはテストです)」、「hi test bye(ハイ テスト バイ)」などのGUI要素テキストが含まれる場合がある。「test」という単語は全文を含む長いテキスト文字列の一部として現れる可能性があるため、文全体の部分文字列を半変換したら、管理者ユーザはその中にある「test」という単語を、平文バージョンでも半変換バージョンでも見つけられなくなる。いくつかの例示的な実施形態では、とり得る解決策は、文中の各単語を別々に半変換し、それらを独立してサーバに送信することがある。

[0115]

[0126] いくつかの例示的な実施形態では、変換関数に加えてソルト(salt)を使用することができる。ソルトは、変換前に部分文字列に付加できるランダムデータを含み得る。いくつかの例示的な実施形態では、付加された部分文字列は、一方向性ハッシュ関数などの使用される変換関数で変換され得る。例えば、「Submit」という単語は、第1のソルトを用いた例では「Su5Fd3fds」に変換されるが、第2のソルトを用いた別の例では「SuJggb436」に変換される。いくつかの例示的な実施形態では、文字列を最初に変換するのに用いられたソルトは、1以上のエージェントで保持され、後の段階で文字列を検索またはロケートするときに再使用され得る。いくつかの例示的な実施形態では、異なるクライアント、異なるエンドユーザのグループ、異なるタイプのGUI要素などに対して、異なるソルトを使用することができる。いくつかの例示的な実施形態では、同じ変換関数を異なるソルトで使用してもよいし、同じソルトを異なる変換関数に使用してもよいし、異なるソルトを異なる変換関数に使用してもよい。例えば、さまざまな組織のユーザが自分の組織のソルトに関連付けられているが、すべて同じ変換関数を共有してもよい。いくつかの例示的な実施形態では、ソルトは、レインボーテーブル、ブルートフォース攻撃などを使用して、変換されたテキストを逆にすることを計算上困難にすることによって、セキュリティレベルを強化することができる。

[0116]

[0127] ステップ230において、エージェントは、GUI要素の半変換テキスト文字列をサーバに送信することができる。いくつかの例示的な実施形態では、エージェントは、例えばステップ220で実行されたように、部分的にハッシュ化、暗号化、または他の方法で変換されたGUI要素のテキスト、属性などをサーバに送信してもよい。

[0117]

[0128] いくつかの例示的な実施形態では、半変換テキスト文字列に加えて、第1部分の文字長(「文字数」とも呼ばれる)がサーバに提供されてもよい。いくつかの例示的な実施形態では、文字長は、第1部分の文字数、第1部分のサイズ、第1部分の長さなどを示す。いくつかの例示的な実施形態では、半変換テキスト文字列の変換部分は、テキスト文字列の元の第2部分とは異なる文字単位(character-wise)の長さを有し得る。他のケースでは、長さは類似または同一であってもよい。いくつかの例示的な実施形態では、平文部分(例えば、第2部分)の位置および長さは、サーバに提供されてもよいし、事前定義されてもよい。

[0118]

[0129] いくつかの例示的な実施形態では、平文部分(例えば、第2部分)の文字数は、第2部分の文字数に対応するテキスト文字列を含むかそれに関連付けられたGUI内の候補のカウント数に基づいて定義または決定(determine)される。いくつかの例示的な実施形態では、比較的少数の候補要素をもたらす定義された文字数のクエリが、例えば、プライバシーの制約の下で選択されるが、多くの候補要素をもたらす定義された文字数は選択されない。例えば、2文字の平文部分のクエリでは5つの候補要素が得られ、3文字の平文部分のクエリでは1つの候補要素が得られる場合がある。このような場合、プライバシーの制約により3文字の長さを選択できる場合には、3文字の長さを選択することができる。他の場合には、平文部分の文字数は、事前定義されるか、サーバによって提供されるか、ユーザによって決定されるか、または他の方法で決定され得る。

[0119]

[0130] いくつかの例示的な実施形態では、テキスト文字列内における第2部分の相対的な位置が、例えばテキスト文字列に関連して決定(determine)または定義されてもよい。この相対位置は、相対位置に対応するテキスト文字列に関連付けられている、またはそれを含む、GUI内の候補要素のカウントに基づいて選択することができる。他のケースでは、平文部分の相対的な位置は、事前定義されるか、サーバによって提供されるか、ユーザによって決定されるか、その他の方法で決定され得る。いくつかの例示的な実施形態では、例えばプライバシー制約の下で、比較的少数の候補要素をもたらす決定された相対位置(例えば、接頭辞)を選択し、これに対し多くの候補要素をもたらす平文部分の相対位置は選択されないようにする。例えば、第2部分を文字列の接頭辞として決定すると2つの候補が得られ、第2部分を文字列の接尾辞として決定すると10の候補が得られるような場合がある。このような場合、相対位置を接頭辞として選択することができる。いくつかの例示的な実施形態では、相対位置は、文字数の異なる複数の平文について決定されてもよいし、その逆であってもよい。いくつかの例示的な実施形態では、決定は、特定のテキスト文字列、特定のフォーマット文書、フォーマット文書のタイプ(例えば、特定のウェブサイトまたはアプリケーションのページ)などに固有であってもよい。いくつかの例示的な実施形態では、決定は、特定の文書または文書のコーパス内の候補数の具体的な決定の代わりに、またはそれに加えて、予想される候補数の統計分析に基づいて実行されてもよい。

[0120]

[0131] いくつかの例示的な実施形態では、エンドデバイスにおける表示は、サーバに提供された要素を表示してもよいし、表示しなくてもよい。例えば、エンドデバイスのユーザはマウスクリックで選択されたGUI要素をアップロードすることができ、ユーザが選択したそのようなGUI要素はそれぞれ、サーバへの送信前または送信中にユーザに表示される半変換テキスト文字列となる。半変換テキスト文字列は、GUI要素のHTML属性など、GUI要素に関連付けられたテキストの半変換バージョンが含み得る。他のケースでは、半変換テキスト文字列は、ユーザの表示に影響を与えることなく自動的にアップロードされてもよい。

[0121]

[0132] ここで、開示された主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図3を参照する。

[0122]

[0133] ステップ300において、エージェントがユーザのエンドデバイスに配備され得る。いくつかの例示的な実施形態では、エージェントを展開している間、エンドデバイスは、1以上のプログラム(例えば、モバイルプログラム、デスクトッププログラム、ウェブプログラムなど)を実行してもよい。いくつかの例示的な実施形態では、エージェントは、1以上のクローラ、スクリプト、ソフトウェア製品、ユーザ操作型クライアントなどを含み得る。いくつかの例示的な実施形態では、エージェントは、ユーザ操作型クライアントであり、ユーザはセッションでユーザが遭遇(encount)した特定の画面を保存するようにクライアントに指示することができる。追加的または代替的に、エージェントは、ユーザの指示なしにユーザがアクセスしたウェブサイト、画面、DOMなどを報告してもよい。追加的または代替的に、エージェントは、ウェブサイトやその他のリンクされたフォーマット文書をクロールし、それらを自律的に報告してもよい。

[0123]

[0134] いくつかの例示的な実施形態では、エージェントは、クライアントデバイス上で実行され、クライアントデバイスとサーバとの間で情報を通信することができる。いくつかの例示的な実施形態では、サーバは、GUI要素の一意の識別子を特定するために情報を利用することができ、これによってウォークスルー、分析、プロセス自動化、表示レイヤの追加、GUIの機能の拡張などを行うことができる。

[0124]

[0135] ステップ310において、エージェントは、サーバに送信されるべき表示されたGUIの少なくとも一部を描写したフォーマット文書またはその表現(フォーマット文書と呼ぶ)を取得することができる。いくつかの例示的な実施形態では、フォーマット文書は、フォーマット文書内の複数のサブ要素やそれらの位置などを定義し得る構造、フォーマット、フォーム、レイアウトなどを含み得る。いくつかの例示的な実施形態では、複数のサブ要素は、GUI要素、関連するテキスト文字列、構造要素、グラフィック要素、隠れたタグやマークなどを含み得る。いくつかの例示的な実施形態では、送信されるデータは、フォーマット文書内の可視または不可視のテキスト文字列、フォーマット文書のフォーマット要素または構造要素などを含み得る。

[0125]

[0136] いくつかの例示的な実施形態では、フォーマット文書は、自動化プロセスやウォークスルーなどの一部としてエージェントによって取得され得る。追加的または代替的に、フォーマット文書はエージェントによって自動的に、例えばパフォーマンス測定値を追跡する要素などの、定義された関心のある要素に基づいて取得され得る。いくつかの例示的な実施形態では、フォーマット文書はユーザによるGUI領域の選択に応答してエージェントによって取得され、それによって、例えばサーバがユーザに機能を提供するためにそのGUI領域を分析したり、相互作用やそのエンゲージメントメトリックなどを監視したりなどができる。いくつかの例示的な実施形態では、フォーマット文書は、他の任意のアクションに応答して、またはユーザのアクションに関係なく、エージェントによって取得されてもよい。

[0126]

[0137] ステップ320において、エージェントは、例えば、変換部分および保存された部分を含む半変換フォーマット文書を取得するために、フォーマット文書を半変換することができる。いくつかの例示的な実施形態では、半変換は、残りのフォーマット文書、例えば、フォーマット文書の構造、フォーマット文書の機密性の低い部分など。いくつかの例示的な実施形態では、フォーマット文書の各部分は、GUI内の1以上の領域、サブ要素、要素のタイプ、属性などを含み得る。

[0127]

[0138] いくつかの例示的な実施形態では、変換関数は、一方向性ハッシュ関数、対称暗号化関数、非対称暗号化関数などを含み得る。いくつかのケースでは、変換関数は、SHA-256やMD5などの汎用ハッシュ関数、またはカスタマイズされた一方向性関数などの非汎用ハッシュ関数を含み得る。いくつかのケースでは、受信側(サーバなど)が暗号化キーを保持せず、送信側(クライアント)のみがキーを保持する場合に、対称または非対称の暗号化を使用してもよい。いくつかの例示的な実施形態では、変換関数は、サーバなどの第三者が暗号化技術を使用して送信されたデータのコンテンツを復元できないようにする任意の暗号化技術を含み得る。いくつかの例示的な実施形態では、異なるタイプの属性、GUI要素などに対して、異なる変換関数を使用してもよい。

[0128]

[0139] いくつかの例示的な実施形態では、変換関数に加えてソルトを使用してもよい。ソルトには、変換前に部分文字列に付加できるランダムデータが含まれ得る。いくつかの例示的な実施形態では、付加された部分文字列は、一方向性ハッシュ関数などの用いられる変換関数で変換される。いくつかの例示的な実施形態では、文字列を最初に変換するときに使用されたソルトが1以上のエージェントで保持され、後の段階で文字列を検索またはロケートするときに再使用することができる。いくつかの例示的な実施形態では、異なるクライアント、異なるエンドユーザのグループ、異なるタイプのGUI要素などに対して、異なるソルトを使用してもよい。いくつかの例示的な実施形態では、同じ変換関数を異なるソルトで使用してもよいし、同じソルトを異なる変換関数に使用してもよいし、異なるソルトを異なる変換関数に使用してもよい。例えば、さまざまな組織のユーザが自分の組織のソルトに関連付けられているが、すべて同じ変換関数を共有してもよい。いくつかの例示的な実施形態では、ソルトは、レインボーテーブル、ブルートフォース攻撃などを使用して、変換されたテキストを逆にすることを計算上困難にすることによって、セキュリティレベルを強化することができる。

[0129]

[0140] いくつかの例示的な実施形態では、変換関数は、テキスト部分または任意の他の部分などのフォーマット文書の第1部分に適用され、フォーマット文書の構造部などの第2部分には適用されない。いくつかの例示的な実施形態では、半変換を行うステップは、フォーマット文書から変換されるテキスト文字列を選択することを含み、選択されていないテキスト文字列は変換されない。いくつかの例示的な実施形態では、変換関数が選択されたテキスト文字列に適用され、選択されていないテキスト文字列には適用されない。

[0130]

[0141] いくつかの例示的な実施形態では、レンダリングエンジンによってフォーマット文書をレンダリングするために必要とされるフォーマット文書の任意の要素が保持され、変換されなくてもよい。いくつかの例示的な実施形態では、マークアップ言語の構文要素、マークアップ言語のトークン、字句解析に必要な要素、スキャンやパーシングなどの構文解析に必要な要素、意味解析などに必要な要素などのコンパイル要素を定義するテキスト文字列は変換されなくてもよい。いくつかの例示的な実施形態では、フォーマット文書内のタグ、属性、または他の構造的または非センシティブなテキスト文字列は、変換のために選択されなくてもよい。いくつかの例示的な実施形態では、潜在的にセンシティブではないテキスト文字列は、変換されずに保持され得る。いくつかの例示的な実施形態では、GUI要素が非センシティブであるとの表示に基づいて、語句が非センシティブであることを示すリストに基づいて、分類器やヒューリスティックなどに基づいて、テキスト文字列を非センシティブであると特定することができる。

[0131]

[0142] いくつかの例示的な実施形態では、タグの間に挿入されたテキスト文字列や、属性の値を定義するテキスト文字列などの、コンパイル要素でないテキスト文字列は、例えば、潜在的にセンシティブ情報を含むと判断されたかどうかに基づいて、変換される場合とされない場合があってよい。いくつかの例示的な実施形態では、テキスト文字列は、属性がセンシティブな属性を定義し、属性のテキスト文字列が当該属性の属性値を定義するという判定に基づいて選択されてもよい。そのような場合、属性は保持されるが、属性値は、例えばそれが潜在的に機密であり得るかどうかに基づいて、変換されてもよいしされなくてもよい。

[0132]

[0143] いくつかの例示的な実施形態では、テキスト文字列自体の変換は、全体的(例えば、全体を変換)であってもよいし、部分的(例えば、半変換)であってもよい。

[0133]

[0144] ステップ330において、エージェントは、半変換されたフォーマット文書をサーバに送信することができる。いくつかの例示的な実施形態では、エージェントは、フォーマット文書のテキスト、属性などをサーバに送信することができ、それらのいくつかは変換されずに保持されてもよく、それらのいくつかは、ステップ320に従ってハッシュ化、暗号化、または他の方法で少なくとも部分的に変換されてもよい。

[0134]

[0145] 例えば、内容が少なくとも部分的に変換されているため、いくつかの例示的な実施形態では、第2のデバイスが、センシティブ情報の内容に曝される(being exposed)ことなく、フォーマット文書の構造ベースの分析を実行することを可能にしてもよい。

[0135]

[0146] ここで、開示された主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図4を参照する。

[0136]

[0147] ステップ400において、サーバは、1以上のエンドデバイスから、半変換または完全変換されたテキスト文字列(変換テキスト文字列と呼ぶ)を受信することができる。いくつかの例示的な実施形態では、サーバは、GUI要素の変換されたテキスト文字列を第1のエンドデバイスから受信する。例えば、GUI要素は、ネイティブモバイルアプリケーションで値「Submit」を持つ「title」属性を有する要素を含み得る。半変換の場合、第1のエンドデバイスのエージェントは、テキスト文字列「Submit」を取得し、それを半変換して、半変換テキスト文字列「SuKy5stjfk67e7d」を取得することができる。次に、第1のエンドデバイスのエージェントは、テキスト文字列「SuKy5stjfk67e7d」を、例えば、残りのテキストの長さ(例えば、残りの部分文字列「bmit」の文字長4)とともにサーバに提供することができる。いくつかの例示的な実施形態では、サーバは、第1のエンドデバイスから変換テキスト文字列を取得する。完全変換の場合、第1のエンドデバイスのエージェントはテキスト文字列「Submit」を取得し、それを変換して完全変換テキスト文字列「psojtsdmvi7d8Ky5stjfk67e7d」を取得する。次に、第1のエンドデバイスのエージェントは、テキスト文字列「psojtsdmvi7d8Ky5stjfk67e7d」を、例えば当該テキスト文字列の位置、元の文字列の文字長(例えば、列「Submit」の文字長6)、テキスト文字列のコンテキストなどの構造的識別子とともにサーバに提供することができる。いくつかの例示的な実施形態では、サーバは、第1のエンドデバイスから変換テキスト文字列を取得することができる。

[0137]

[0148] ステップ410において、サーバは、変換されたテキスト文字列を、自身が実行する計算または処理に使用する。一例として、サーバは、GUI要素の要素識別子を特定することができる。要素識別子は、対象要素の属性、他の要素の属性、要素間の関係などに基づくことができる。いくつかの例示的な実施形態では、要素識別子は、異なるデバイス、プラットフォーム、プログラムバージョンなどにわたってGUI要素を一意に識別することができる。いくつかの例示的な実施形態では、複数のデバイスにわたってGUI要素を識別するために利用可能な要素識別子(例えば、グローバル識別子)を用いて、その後にGUI要素を取得することができる。いくつかの例示的な実施形態では、特定された要素識別子は、半変換テキスト文字列、完全変換テキスト文字列、GUI要素のコンテキスト、GUI要素の位置などに関連するクエリを含んでもよい。いくつかの例示的な実施形態では、半変換テキスト文字列の場合、クエリは、最初に半変換された文字列の平文部分を使用して文字列ベースの演算を実行して潜在的な候補を識別し、次に候補のテキスト文字列に半変換を適用し、半変換テキスト文字列の変換部分を考慮に入れてその間の要素を選択するように構成され得る。完全変換テキスト文字列の場合、クエリは、最初に半変換されたフォーマット文書の構造を使用して構造ベースのクエリを実行して潜在的な候補を識別し、次に候補のテキスト文字列に変換関数を適用し、完全変換テキスト文字列を考慮に入れてその間の要素を選択するように構成され得る。

[0138]

[0149] いくつかの例示的な実施形態では、要素識別子は、エンドデバイスによってアップロードされた1以上の変換テキスト文字列に基づいて特定される。例えば、エンドデバイスがボタンなどのGUI要素のテキスト文字列の変換テキスト文字列をアップロードし、サーバがボタンの要素識別子を特定し、GUI内で変換テキスト文字列をロケートするクエリを含めることができる。

[0139]

[0150] いくつかの例示的な実施形態では、要素識別子により、サーバが行動パターンを分析したり、格納されたデータへのアクセスを分析者に提供したりすることが可能となる。いくつかの例示的な実施形態では、広告、ナビゲーションなどに有用であり得る1以上の行動パターンおよび統計結果が、異なるエンドデバイスにおける要素の識別に基づいて特定され得る。例えば、これにより、サーバは、ウォークスルーが必要なGUI要素を識別したり、さまざまなクライアントデバイスで識別されたGUI要素に関する統計を収集したりすることができる。

[0140]

[0151] ステップ420で、サーバは、GUI要素に関する統計を収集するため、または任意の他の利用のためにそれらの対応するGUI要素またはテキスト文字列を識別するために、例えば、第2のエンドデバイスにGUI要素の要素識別子を提供してもよい。いくつかの例示的な実施形態では、要素識別子に基づいて、第2のエンドデバイスのエージェントが、要素識別子を適用して、要素識別子によって識別される対応するGUI要素をロケートすることができる。これは、要素識別子のクエリを適用することで行われてもよい。いくつかの例示的な実施形態では、クライアント側(例えば、第2のエンドデバイス)でGUI要素をロケートしようとする際に、アルゴリズムが第2のエンドデバイスで関連する要素のすべてを反復(iterate)することができる。

[0141]

[0152] いくつかのケースでは、半変換テキスト文字列を含むクエリについて、アルゴリズムは、GUI要素と同じタイプのすべての要素を反復し、定義された位置で同じ平文部分を有する要素を検索し、平文の長さを除いて要素識別子が示す残りの文字長を有する要素を検索し、各候補要素のテキスト文字列の残りのテキストの変換値を計算し、要素識別子が示す変換値と同じ変換値(存在する場合)を持つ1以上の要素をロケートすることができる。

[0142]

[0153] 例えば、元の文字列が「hello」の場合を考える。半変換テキスト文字列は「he3f5KFvc3」である。いくつかの例示的な実施形態では、第2のエンドデバイスのエージェントは、半変換テキスト文字列の平文部分「he」を含み、残りのテキストの変換関数を実装するときに、元の長さが3である「3f5KFvc3」の値を有するタイプのGUI要素のテキスト文字列を検索するクエリをフェッチする。ダウンロードされた要素識別子は、「平文が「he」に等しく、変換されたテキストは長さが3の「3f5KFvc3」に等しい」として保持され得る。他の場合には、ダウンロードされた要素識別子は、他の任意の方法、順序などで保持されてもよい。いくつかの例示的な実施形態では、半変換テキスト文字列「he3f5KFvc3」によって識別されるGUI要素をロケートする際に、エージェントは、最初に部分文字列「he」で始まるすべての要素を識別する。次に、残りの長さが3文字の一致する文字列ごとに、残りのテキストの変換値を計算する。いくつかの例示的な実施形態では、テキストの残りの部分の変換値がクエリで定義された変換値(例えば、3f5KFvc3)に等しい場合、一致が見出されたと判断することができる。例えば、あるウェブページの検索結果は、テキスト「head」、「heels」、「hello」を有する3つの要素を返す。「heels」と「hello」は両方とも3文字の正しい長さであるため、これらの下線部分の変換値のみについて計算すればよい。特定された変換値が「3f5KFvc3」と一致する場合、つまり部分文字列「llo」の場合、この要素は識別および検出されたと判断される。

[0143]

[0154] いくつかのケースでは、完全変換テキスト文字列を含むクエリの場合、アルゴリズムは、GUI要素と同じタイプの要素のすべてを反復し、GUI内で同じ相対位置を有する要素を検索し、GUI要素と同じコンテキストを有する要素を検索し、要素識別子で示される文字長を持つ要素を検索し、各候補要素のテキスト文字列の変換値を計算し、要素識別子で示される変換値と同じ変換値を有する1以上の要素(存在する場合)を検索し得る。

[0144]

[0155] いくつかの例示的な実施形態では、これにより、センシティブデータのプライバシーレベルを損なうことなく、例えば、暗号化されていないデータを有するクライアントによって適用される要素識別子を提供するなど、サーバが必要な機能を達成することを実現することができる。

[0145]

[0156] 次に、開示された主題のいくつかの例示的な実施形態による、半変換テキスト文字列の要素識別子を利用する方法のフローチャートを示す図5を参照する。

[0146]

[0157] ステップ500において、サーバは、エンドデバイスに配備されたエージェントに、GUI要素の半変換テキスト文字列を示す要素識別子を提供することができる。いくつかの例示的な実施形態では、半変換テキスト文字列は、テキスト文字列を半変換しうた結果を含み得る。いくつかの例示的な実施形態では、半変換は、変換関数に従って、テキスト、属性、画像などを含むテキスト文字列を半変換することを含み得る。いくつかの例示的な実施形態では、半変換テキスト文字列は、テキスト文字列の一部に変換関数を適用した結果であり得る。例えば、元のテキスト文字列が「Submit」である場合、半変換されたバージョンは「Su5Fd3fds」であり、ここで「5Fd3fds」は変換部分であり、「Su」が変換されていない平文部分である。

[0147]

[0158] いくつかの例示的な実施形態では、サーバは、GUI要素の半変換テキスト文字列とともに、変換関数で変換されたテキスト文字列の部分の文字数、対応するウォークスルー命令などのGUI要素に関連付けられ得る追加情報、GUI内のGUI要素の相対位置などの追加識別情報などを提供してもよいし、しなくてもよい。いくつかの例示的な実施形態では、文字数は、例えば半変換の前のテキスト文字列の部分の文字数を含み得る。いくつかの例示的な実施形態では、文字数は、要素識別子の一部として、または別個になどで提供され得る。

[0148]

[0159] いくつかの例示的な実施形態では、エージェントは、サーバから要素識別子を取得することができる。いくつかの例示的な実施形態では、エージェントは、クライアント側(例えばエンドデバイスに表示されたGUI内)で要素識別子によって識別される表現されたGUI要素をロケートまたは見つけようとする。いくつかの例示的な実施形態では、使用された変換関数が一方向関数であったり、クライアントがサイファーテキストを復号するのに利用できる復号鍵にアクセスできない場合、エンドデバイスのエージェントが、半変換テキスト文字列を復号して当該半変換テキスト文字列の平文バージョンを取得できない場合がある。エンドデバイスの半変換テキスト文字列をロケートするために、エージェントは要素識別子を利用して、GUI内(例えば、その平文バージョン内)で関連するGUI要素を識別してもよい。いくつかの例示的な実施形態では、要素識別子は、平文部分を有するテキスト文字列を有する潜在的な候補をロケートする、半変換テキスト文字列の平文部分に対するクエリと、残りの部分の長さに関するクエリと、残りの部分の変換値(これは、変換値が部分的に暗号化された要素の値と等しいことを保証するように算出される)に関するクエリを含み得る。例えば、GUI要素の外観を変更したり、その隣に要素を導入したり、既存のGUIにウォークスルーを挿入するために実装できる類似の操作を行うために、GUI要素をロケートすることが望ましい場合がある。

[0149]

[0160] ステップ510において、エージェントは、GUI要素の半変換テキスト文字列の変換部分と平文部分とを区別することができる。いくつかの例示的な実施形態では、半変換テキスト文字列の平文部分の位置と長さは、事前に決定されたり、プロトコルで事前定義されたり、サーバなどによって提供され得る。

[0150]

[0161] ステップ520で、エージェントは、例えば平文部分と関連するテキスト文字列を有する候補要素をGUI内で検出するために、平文部分を有するエンドデバイスのGUIにクエリを実行することができる。いくつかの例示的な実施形態では、エンドデバイスで部分的に変換されたGUI要素をロケートしようとするとき、平文部分の文字列が最初に識別され得る。いくつかの例示的な実施形態では、任意の他の順序でクエリを利用してもよい。

[0151]

[0162] ステップ530において、エージェントは、ステップ520から生じる候補のリストを、候補リストの残りの部分文字列の目標とする文字数に従ってフィルタリングすることができる。いくつかの例示的な実施形態では、半変換テキスト文字列をロケートするステップは、文字数を利用して、対応する文字数を有する関連するテキスト文字列を有する1以上の候補要素(存在する場合)を特定することを含み得る。いくつかの例示的な実施形態では、サーバは、潜在的な候補のリスト内で、元のGUI要素の変換部分の提供された文字長に対応する文字数を有する関連するテキスト文字列を有する1以上の候補を検出するためのクエリを実行し得る。いくつかの例示的な実施形態では、テキスト文字列の残りの部分文字列は、平文部分のないテキスト文字列を含み得る。いくつかの例示的な実施形態では、エンドデバイスのページにおける平文の部分文字列の出現ごとに、残りの部分文字列の長さが特定され、目標とする文字長と比較される。いくつかの例示的な実施形態では、候補のリストが2以上の候補を含まない場合や、サーバが残りの部分文字列の文字長を提供しない場合、ステップ530は実行されず、方法はステップ540に続いてもよい。他の場合には、候補のリストが1つの候補のみを含む場合であっても、ステップ530を実行することができる。

[0152]

[0163] ステップ540で、エージェントは、例えば、ステップ520またはステップ530を実行した結果である、候補リストのテキスト文字列内の残りの部分文字列それぞれの変換値を計算することができる。いくつかの例示的な実施形態では、エージェントは、変換関数を使用することができる。いくつかの例示的な実施形態では、残りの部分文字列の変換値は、変換関数に従って計算され得る。

[0153]

[0164] ステップ550において、エージェントは、計算された変換値を半変換テキスト文字列の変換部分と比較して、例えば、半変換テキスト文字列の半変換される前の元の文字列と同一の文字列であることを示す、同一の変換値を有するGUI要素を選択することができる。いくつかの例示的な実施形態では、候補要素に関連付けられているテキスト文字列の変換部分が、半変換テキスト文字列の変換部分と同一であると特定されると、そのGUI要素は要素識別子を使用して成功裏にロケートされたことを示す。

[0154]

[0165] 例えば、「FCVX34」の変換部分について、エンドデバイスのページの候補リストのテキスト文字列に残っている各部分文字列の変換値を計算して、その値が「FCVX34」に等しいかどうかを判定することができる。残りの部分文字列の変換値が「FCVX34」の値を持っていることが判明した場合、残りの部分文字列に関連付けられたGUI要素を、検索されたGUI要素であると同定することができる。

[0155]

[0166] 上記は、GUI内の任意の要素に関しても実行できることに留意されたい。いくつかのケースでは、ターゲット要素は、当該ターゲット要素を含む要素、ターゲット要素の近くに位置する要素などの他の要素に基づいて識別されてもよい。ターゲット要素を直接的または間接的に識別するために利用できるそのような各要素は、テキスト属性の値などのそのテキスト特性に基づいて識別可能であり、開示された主題によるクエリの対象とすることができる。一例として、第1のクエリは包含要素(containing element)を識別し、第2のクエリは包含要素内の第2要素を識別し、第3のクエリは第2要素との関係に基づいてターゲット要素を識別するために利用することができる。

[0156]

[0167] 次に、開示された主題のいくつかの例示的な実施形態による、完全変換されたテキスト文字列の要素識別子を利用する方法のフローチャート図を示す図6を参照する。

[0157]

[0168] ステップ600において、サーバは、エンドデバイスに配備されたエージェントに、第1のGUI要素のテキスト文字列の完全変換バージョンを示す第1のGUI要素の要素識別子を提供することができる。いくつかの例示的な実施形態では、変換されたバージョンは、変換関数によって第1のGUI要素のテキスト文字列を変換した結果を含み得る。いくつかの例示的な実施形態では、例えば、異なるデバイスまたは同じエンドデバイスなどで、変換関数をテキスト文字列に適用することができる。

[0158]

[0169] いくつかの例示的な実施形態では、要素識別子は、複数のエンドデバイスのいずれかで利用され得るGUI、画面、表示(display)などにおいてGUI要素をグローバルに識別するように構成されてもよい。いくつかの例示的な実施形態では、エージェントは、サーバから要素識別子を取得することができる。いくつかの例示的な実施形態では、エージェントは、要素識別子によって識別される表現されたGUI要素を、クライアント側(例えばエンドデバイスに表示されたGUI内)でロケートまたは見つけようとすることができる。

[0159]

[0170] いくつかの例示的な実施形態では、クライアントがサイファーテキストを復号するのに利用できる復号鍵にアクセスできない場合、エンドデバイスのエージェントが、変換テキスト文字列を復号して当該変換テキスト文字列の平文バージョンを取得できない場合がある。エンドデバイスの変換されたテキスト文字列をロケートするために、エージェントは要素識別子を利用して、GUI内の関連するGUI要素のコンテキストを識別することができる。

[0160]

[0171] いくつかの例示的な実施形態では、例えばテキスト文字列に変換関数を適用した後に文字数が変わる場合があるため、サーバは、GUI要素の変換テキスト文字列とともに、変換関数によって変換されたテキスト文字列の文字数を提供してもよいし、しなくてもよい。いくつかの例示的な実施形態では、文字数は、例えば変換前のテキスト文字列の文字数を含み得る。いくつかの例示的な実施形態では、文字数は、要素識別子の一部として提供されてもよいし、別個になど提供されてもよい。

[0161]

[0172] ステップ610において、エージェントは、GUI内で候補要素を検出するために、エンドデバイスのGUI上でクエリを実行することができる。いくつかの例示的な実施形態では、エージェントはクエリを使用して、例えばエンドデバイスのGUI内で要素識別子に関連付けられた第2のGUI要素をロケートしてもよい。いくつかの例示的な実施形態では、要素識別子は、第1のGUI要素と同じコンテキストを有する、第1のGUI要素と同じ構造を有する、第1のGUIと同じ属性タイプを有する、第1のGUI要素と同じ長さを有する、第1のGUI要素のテキスト文字列の変換バージョンと同じ変換値を有する要素などの潜在的な候補をロケートする、変換されたテキスト文字列に対するクエリを含み得る。いくつかの例示的な実施形態では、クエリは、テキスト文字列に関連付けられた構造的または非センシティブな要素を使用して実行され得る検索を含み得る。いくつかの例示的な実施形態では、第2のGUI要素をロケートするステップは、GUI内の1以上の候補要素を特定するために要素識別子のクエリを実行することを含み得る。

[0162]

[0173] ステップ620で、エージェントは、ステップ610の1以上のクエリで得られた候補のリストを、ターゲット文字数に従ってフィルタリングすることができる。いくつかの例示的な実施形態では、文字数を利用して、対応する文字数を有する関連するテキスト文字列を有する1以上の候補要素(存在する場合)を特定することができる。いくつかの例示的な実施形態では、サーバは、潜在的な候補のリスト内で、元のGUI要素の変換部分の提供された文字長に対応する文字数を有する関連するテキスト文字列を有する1以上の候補を検出するためにクエリを実行し得る。いくつかの例示的な実施形態では、候補のリストに2以上の候補が含まれない場合や、サーバが残りの部分文字列の文字長を提供していない場合は、ステップ620は実行されず、方法はステップ630に続いてもよい。他の場合には、候補のリストが1の候補のみを含む場合であっても、ステップ620を実行することができる。

[0163]

[0174] ステップ630において、エージェントは、例えばステップ610またはステップ620を実行して得た候補リストのテキスト文字列の変換値を計算することができる。いくつかの例示的な実施形態では、エージェントは、変換関数を使用して変換値を計算することができる。いくつかの例示的な実施形態では、候補要素に関連付けられたテキスト文字列は、例えば、候補要素の変換バージョンを得るために、変換関数に従って少なくとも部分的に変換され得る。

[0164]

[0175] ステップ640において、エージェントは、候補要素のテキスト文字列の変換バージョンを、テキスト文字列の変換バージョンと比較することができる。それらが同一である場合、エージェントは、第1および第2のGUI要素が同じ要素識別子を有すると判断し、したがって、GUI内の第2のGUI要素を成功裏にロケートすることができる。

[0165]

[0176] 例えば、変換されたテキスト文字列が「FCVX34」の場合、エンドデバイスのページにある候補リストの残りの各テキスト文字列の変換値を計算して、その値が「FCVX34」に等しいかどうかを判断することができる。残りのテキスト文字列の変換値が「FCVX34」の値を有することが判明した場合、残りのテキスト文字列に関連付けられたGUI要素は、例えば、検索されたGUI要素として正常に検出されたと判断され得る。

[0166]

[0177] 次に、開示された主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図7を参照する。

[0167]

[0178] ステップ700において、1以上の非センシティブな要素または語句の標示(indications)が、例えばエンドデバイスの1以上のエージェント、管理者カウンセルなどで取得され得る。いくつかの例示的な実施形態では、GUI内のすべてのテキスト文字列がセンシティブであるとは限らない。いくつかの例示的な実施形態では、GUIは通常、メニュー、ラベル、固定テキスト位置などに一般的なテキストを含み、一方で、センシティブなテキストは通常、入力フィールドやデータフィールドに配置され得る。例として、「開く」や「保存」のボタンはセンシティブではない。別の例として、ラベル「名前(First Name)」はセンシティブではないが、そのラベルの下のデータエントリに表示された名前「Alice」はセンシティブである場合がある。いくつかの例示的な実施形態では、すべての単語を半変換または完全変換すると、1以上の不利な点を有する場合がある。これは、サーバが単語を翻訳したり、語句全体を必要とする他の機能を実行する際の妨げとなり得るからである。したがって、センシティブでない平文文字列は、部分的にでも変換せずに、取得することが有利な場合がある。追加的または代替的に、キャプチャされてサーバに報告されたGUIのプレゼンテーションを表示したい管理者ユーザが、暗号化されたテキストを見た場合に、当該管理者ユーザがGUIを表示して関連する決定を行うのが困難になる場合がある。いくつかの例示的な実施形態では、1以上の非センシティブな要素の標示が、ステップ702~708の少なくとも1つに規定されてもよい。

[0168]

[0179] ステップ702では、1以上の非センシティブな要素の標示は、1つ以上の事前定義された分類規則を含み得る。いくつかの例示的な実施形態では、分類規則は、センシティブではなく、したがって変換されないで送信されてもい語句または要素を定義し得る。いくつかの例示的な実施形態では、標示は、アプリケーションを分析する人によって、ユーザによって、ヒューリスティックなどに基づいて、定義された規則のセットなどの事前定義された規則を含み得る。いくつかの例示的な実施形態では、分類規則は、非センシティブなGUI要素タイプ、非センシティブなクラス、非センシティブなテキスト語句などを識別するように訓練された機械学習プレディクタから取得され得る。例えば、事前定義された規則は、クラス「アクション」のすべてのボタンは非センシティブ、すべてのメニュー項目は非センシティブなどと定義することができる。いくつかの例示的な実施形態では、分類規則は、GUI内の要素を分類するために、ユーザデバイスのGUI上で実行され得る。

[0169]

[0180] 例えば、分類規則が、タイプ「ラベル(label)」のGUI要素がセンシティブではないことを示すとする。これにより、「ラベル」を用いたGUIのクエリからの結果をすべて含む「ラベル」バケットが定義され得る。例えば、タイプ「ラベル」のGUI要素の一部であるすべてのテキストは、非センシティブと判断することができる。

[0170]

[0181] ステップ704では、1以上の非センシティブな要素の標示は、ブラックリストの一部として取得され得る。いくつかの例示的な実施形態では、ブラックリストは、センシティブであって変換されずには送信されない語句または要素を定義または示し得る。いくつかの例示的な実施形態では、ブラックリストで示されていないテキスト文字列のみを変換するために、ブラックリストを使用することができる。いくつかの例示的な実施形態では、ブラックリストを使用する場合、ブラックリストによってセンシティブとして示されるテキスト文字列は、半変換または完全変換され得る。他のテキスト文字列は、規則ベースの決定、機械学習(ML)ベースの決定など、追加の方法の利用に応じて変換されてもよいし、されなくてもよい。いくつかの例示的な実施形態では、ブラックリストは、安全でないと見なされる単語のセットを含み得る、事前定義された単語リストによって定義され得る。いくつかの例示的な実施形態では、ブラックリストは、例えば要素のタイプ、定義されたカテゴリなどに基づいて、他の任意の方法でセンシティブな語句または要素を示してもよい。

[0171]

[0182] ステップ706では、1以上の非センシティブな要素の標示は、ホワイトリストの一部として取得され得る。いくつかの例示的な実施形態では、ホワイトリストは、センシティブではない語句または要素を定義または示すことができる。いくつかの例示的な実施形態では、ホワイトリストは、安全であると見なされる単語のセットを含む、事前定義された単語のリストによって定義され得る。例えば、「開く(Open)」、「保存(Save)」、「送信(submit)」という語句は、非センシティブであると考えることができる。いくつかの例示的な実施形態では、ホワイトリストは、例えば要素のタイプ、定義されたカテゴリなどに基づいて、他の任意の方法で非センシティブな語句や要素を示してもよい。いくつかの例示的な実施形態では、非センシティブなテキストは、通常、ユーザ間またはレコード間で一定のままであり得る。したがって、ホワイトリストを使用すると、非センシティブな要素または単語が分かり、それに完全変換または半変換を適用しないで済むのに役立ち得る。いくつかの例示的な実施形態では、ある用語がホワイトリストにある場合、他の決定方法の判定に拘わらず、それがセンシティブではないと判断してもよい。

[0172]

[0183] ステップ708では、1以上の非センシティブな要素の標示は、人間のオペレータから取得され得る。いくつかの例示的な実施形態では、人間のオペレータがバックオフィスシステムを用いて、例えばサーバに提出されたような変換された形態のGUIを見ることができる。その人は、例えばクリックまたは他の任意の指示手段を介して、特定の要素に入力を提供し、それらが変換されないように要求することができる。選択された要素は非センシティブとして示され、将来に新しいGUIテキスト文字列が取得されたときに、要求された要素は自動的に変換されずにアップロードされるか、サーバが例えば辞書を使用してそれらを再変換できるようにしてアップロードされる。いくつかの例示的な実施形態では、ユーザ入力に基づいて、ブラックリストまたはホワイトリストが更新されてもよい。追加的または代替的に、ユーザ入力は、MLベースの分類器の教師あり学習、および要素が機密データを含むかどうかを自動的に推定するためのトレーニングに使用できる。

[0173]

[0184] ステップ710では、標示によって非センシティブと示された要素が、エンドデバイスのGUIにおいて識別され得る。いくつかの例示的な実施形態では、エンドデバイスのGUI内のテキスト文字列は、それらが潜在的にセンシティブであるかどうかを判定するために、ホワイトリスト、ブラックリスト、ユーザ指示、分類規則などと比較され得る。

[0174]

[0185] ステップ720において、例えばステップ710で非センシティブとして示された要素のテキスト文字列が、平文でサーバに提供され得る。いくつかの例示的な実施形態では、テキスト文字列は、変換部分のない平文だけで構成され得る。例えば、ホワイトリストを利用する場合、当該ホワイトリストは、ホワイトリストにリストされている非センシティブなテキスト文字列を変換することなく、センシティブなテキスト文字列だけを変換するために利用され得る。これにより、サーバは、テキスト文字列を翻訳目的などの追加分析を実行するために利用できるようになる。

[0175]

[0186] 追加的または代替的に、非センシティブなテキスト文字列も変換されて、その形でサーバに提供されされてもよい。ただし、以下でより詳細に説明されるように、変換されたテキスト文字列に加えて辞書を提供することができる。

[0176]

[0187] ここで、開示された主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図8を参照する。

[0177]

[0188] ステップ800において、1以上の非センシティブな要素または語句の標示が得られる。ステップ800は、図7のステップ700と同様の方法で実行することができる。

[0178]

[0189] ステップ810において、非センシティブな要素が、例えば、標示に基づいて、エンドデバイスのGUIにおいて識別され得る。ステップ810は、図7のステップ710と同様の方法で実行することができる。

[0179]

[0190] ステップ820において、例えばステップ810において非センシティブであると識別されたテキスト文字列が、変換関数によって半変換または完全変換され得る。いくつかの例示的な実施形態では、クライアントから平文で単語を送信することは、1以上の不利な点を有する場合がある。すなわち、少なくとも1つの単語が誤ってホワイトリストに載っていたら、プライバシー規制、法律、またはポリシーに違反している情報を含む場合があるため、取得されたすべてのデータを破棄する必要が生じる。いくつかの例示的な実施形態では、これらの1以上の不利な点を克服するために、エンドデバイスからのすべてのテキスト文字列が、変換されたバージョン(例えば、半変換バージョンまたは完全変換バージョン)で提供され得る。

[0180]

[0191] ステップ830において、テキスト文字列とその変換バージョンを含むように辞書を生成することができる。いくつかの例示的な実施形態では、この辞書は、例えば、非センシティブなテキスト文字列それぞれについてその対応する平文バージョンを示すように、変換されたテキスト文字列とともにサーバに提供され得る。例えば、辞書の各エントリには、同じテキスト文字列の平文バージョンとともに、当該テキスト文字列の変換バージョンを含み得る。いくつかの例示的な実施形態では、サーバは、変換された文字列を取得し、辞書にリストされている変換された文字列を、例えば分析目的で、対応する平文バージョンに置き換えることができる。

[0181]

[0192] いくつかの例示的な実施形態では、例えば人間のオペレータからの入力に基づいて、追加の語句や規則を辞書に追加されてもよい。いくつかの例示的な実施形態では、サーバは、管理者ユーザなどの人間のオペレータに表示を提供するように構成され得る。いくつかの例示的な実施形態では、この表示は、複数のGUI要素を有するGUIの表示であり、これらのGUI要素の少なくとも一部(例えば、潜在的にセンシティブな部分)が変換されるが、平文のGUI要素を辞書によって特定することができる(存在する場合)。いくつかの例示的な実施形態では、変換された要素は、辞書に基づいて、例えばサーバなどで、その表示内で平文のGUI要素に置換され、それによって管理者ユーザがそれらを確認することができる。いくつかの例示的な実施形態では、表示は、辞書に含まれており平文で提示されるテキスト文字列に関連付けられたGUI要素と、辞書に含まれない(例えば、潜在的にセンシティブであり、したがって半変換または完全変換された)変換テキスト文字列に関連付けられた別のGUI要素とを含む、複数のGUI要素に関する情報を含み得る。いくつかの例示的な実施形態では、表示は、潜在的にセンシティブなGUI要素のテキスト文字列を半変換された態様で表示することができ、ここでは部分文字列のみが平文で表示されるか、平文部分のない完全変換された態様で表示される。いくつかの例示的な実施形態では、管理者ユーザは、他のGUI要素に関連付けられている変換テキスト文字列が非センシティブなコンテンツを含むことを示してもよい。いくつかの例示的な実施形態では、示されたGUI要素の変換されていないコンテンツは、例えば管理者ユーザの指示に応じて、辞書に追加されてもよい。例えば、サーバは、クライアントデバイスの1以上のエージェントに、変換されたテキスト文字列を平文バージョンとともに辞書に追加するように要求してもよい。いくつかの例示的な実施形態では、管理者ユーザは、GUI要素の平文テキスト文字列がセンシティブなコンテンツを含むことを示してもい。いくつかの例示的な実施形態では、テキスト文字列の平文バージョンを提供する辞書のエントリが、例えば、管理者ユーザの指示に応じて削除されてもよい。

[0182]

[0193] この方法は、1以上の利点を有し得る。少なくとも、1以上の非センシティブな要素または語句の標示が誤ってセンシティブな語句または要素を含む場合でも、すべてが暗号化されているため、取得データのすべてを破棄する必要がないからである。代わりに、すべてのテキスト文字列を調べてサーバから削除するのではなく、センシティブな語句または要素を辞書から削除するだけで済む。例えば、エンドユーザの住所を表すデータフィールドが誤って非センシティブとして標示されていた場合、そのような問題が特定されると、プライバシーの問題を解決するために辞書を更新することができる。辞書から住所ラベルを削除するだけで、取得した住所の内容を特定できないようにすることができる。対照的に、変換テキスト文字列が提供されていない場合、センシティブなデータが変換されていないと分かったときに、エンドユーザのプライバシーを保護するためにレコード全体を削除する必要がある。

[0183]

[0194] ここで、開示された主題のいくつかの例示的な実施形態による、例示的なサーバ側の表示および対応するクライアント側の表示を示す図9を参照する。

[0184]

[0195] いくつかの例示的な実施形態では、クライアント側ディスプレイの画面900は、ウェブサイトのGUI、ウェブベースのアプリケーション、ネイティブモバイルアプリケーション、デスクトップアプリケーションなどのプログラムGUIを表示することができる。いくつかの例示的な実施形態では、図9に示されるように、画面900は、Waze(商標)アプリケーションなどのモバイルナビゲーションアプリケーションのGUIを表示することができる。いくつかの例示的な実施形態では、画面900では、クライアントデバイスのユーザにとってセンシティブであろうと非センシティブであろうと、GUI要素のテキスト文字列が平文で表示される。

[0185]

[0196] いくつかの例示的な実施形態では、クライアントデバイスのエージェントは、センシティブまたは非センシティブな語句、センシティブまたは非センシティブなタイプの要素などの1以上の標示を取得する。例えば、画面900内のGUI要素920のテキスト文字列「ホーム(Home)」は、自宅住所ではなく単なるテキストであるため、センシティブではないことが示され得る。追加的または代替的に、表示は、画面900のボタンのキャプションとして使用されている、記載された文字列「戻る(Back)」および「閉じる(Close)」がセンシティブでないことを示す。

[0186]

[0197] いくつかの例示的な実施形態では、標示に基づいて、クライアントデバイスはGUI要素930のテキスト文字列「Paper St.MC」およびGUI要素940の「Great Minds Opening」が潜在的にセンシティブであり、例えばこれらはホワイトリスト、分類規則などで非センシティブとは表示されない。あるいは、これらはブラックリスト、訓練された分類器、1以上の規則などによってセンシティブとして示され得る。

[0187]

[0198] いくつかの例示的な実施形態では、クライアントデバイスは、サーバに提供されるテキスト文字列を半変換することができる。例えば、クライアントデバイスは、GUI全体や、その一部などを半変換することができる。図9に示すように、いくつかのケースでは、プログラムのGUI全体からのテキスト文字列がサーバに提供され、例えば、サーバ側の画面910に表示される。この例によれば、すべてのテキスト文字列は、一方向性ハッシュ関数、暗号化関数などの変換関数に従って半変換され得る。いくつかの例示的な実施形態では、クライアントデバイスは、文字列全体または単語を個別に半変換することができる。例えば、GUI要素930のテキスト文字列「Paper St.MC」は全体を半変換して文字列935を得る一方で、GUI要素940のテキスト文字列「Great Minds Opening」は各単語を個別に半変換して半変換文字列945を得ることができる。いくつかの例示的な実施形態では、クライアントデバイスは、変換関数にソルトを追加してもよいし、しなくてもよい。

[0188]

[0199] いくつかの例示的な実施形態では、クライアントデバイスは、非センシティブなテキスト文字列それぞれについて、その半変換バージョンを含むように辞書を生成することができる。その場合のいくつかの例示的な実施形態では、辞書は、GUI要素920のテキスト文字列「Home」とともにその半変換バージョン、テキスト文字列「Work」とともにその半変換バージョンなどを含み得る。いくつかの例示的な実施形態では、辞書は、潜在的にセンシティブな語句を含まなくてもよい。例えば、ユーザが検索した場所を示すGUI要素930のテキスト文字列「Paper St.MC」、ユーザがナビゲートしたイベントを示すGUI要素940の「Great Minds Opening」、および画面900のタイトル「Navigate」は辞書に含まれなくてもよい。

[0189]

[0200] いくつかの例示的な実施形態では、サーバは、クライアントデバイスから半変換された文字列および辞書を取得することができる。いくつかの例示的な実施形態では、サーバは、辞書にリストされている任意の半変換文字列を、辞書に示されている対応する平文バージョンに置き換えることができる。画面910は、サーバによって、例えば、管理者ユーザ、クライアントデバイスのユーザ以外のユーザなどに提供される表示であり得る。いくつかのケースでは、辞書に含まれないテキスト文字列「Paper St.MC」、「Great Minds Opening」、および画面900のタイトル「Navigate」は半変換された態様で提供されるため、潜在的にセンシティブな内容がサーバで復元されることがない。例として、元のテキスト文字列「Paper St.MC」の代わりに、半変換文字列935が画面910に表示され得る。別の例として、元のテキスト文字列「Great Minds Opening」の代わりに、半変換文字列945が画面910に表示され得る。

[0190]

[0201] いくつかの例示的な実施形態では、サーバは、管理者ユーザなどの人間のオペレータに画面910の表示を提供するように構成されてもよい。いくつかの例示的な実施形態では、画面910は複数のGUI要素を含んでもよく、その少なくとも一部は、例えばテキスト文字列「Paper St.MC」、「Great Minds Opening」、およびタイトル「Navigate」の半変換バージョンのような、半変換テキスト文字列に関連付けられ得る。いくつかの例示的な実施形態では、画面910は、例えば辞書に基づいて特定された、平文バージョンのテキスト文字列を有するGUI要素を含んでもよい。

[0191]

[0202] いくつかの例示的な実施形態では、管理者ユーザは、画面910内のGUI要素に関連付けられた半変換テキスト文字列が非センシティブな内容を含むことを指示することができる。例えば、管理者ユーザは、画面910のタイトルはセンシティブと考えなくてよいことを示すことができる。いくつかの例示的な実施形態では、管理者ユーザの指示に応答して、サーバがクライアントデバイスや、場合によっては同じプログラム(例えば、Waze(商標))を使用している1以上の他のクライアントデバイスと通信して、画面900のタイトルはセンシティブと考えなくてよいと示すことができる。いくつかの例示的な実施形態では、受信クライアントは、画面900のタイトルを非センシティブ情報の表示のリストに追加し、将来のシナリオで画面900をアップロードする際に、画面900のタイトルを辞書に追加してサーバに提供してもよい。その後、画面910は、平文形式(図示せず)でタイトル「Navigate」を含むことができる。

[0192]

[0203] いくつかのケースでは、管理者ユーザは、画面910のGUI要素に関連付けられている平文文字列が、センシティブな内容を含むことを示すことができる(図示せず)。いくつかの例示的な実施形態では、管理者ユーザからのそのような指示に応答して辞書の対応するエントリが削除され、センシティブなテキスト文字列の平文バージョンをそこから除外することができる。その結果、サーバは将来に当該センシティブな内容を平文文字列に戻すことができなくなる。

[0193]

[0204] 次に、開示された主題のいくつかの例示的な実施形態による、例示的なサーバ側の表示および対応するクライアント側の表示を示す図10を参照する。

[0194]

[0205] いくつかの例示的な実施形態において、クライアント側ディスプレイの画面1000は、図9の画面900に対応し得る。図10に示すように、いくつかのケースでは、プログラム全体のGUIからのテキスト文字列が、例えば、サーバ側の画面1010に表示されるようにサーバに提供される。いくつかの例示的な実施形態では、クライアントデバイスは、サーバに提供されるテキスト文字列の少なくとも一部は完全に変換し、一方でサーバに提供される構造要素および非センシティブなテキスト文字列は変換しないようにする。この例によれば、テキスト文字列の少なくとも一部は、一方向性ハッシュ関数、暗号化関数などの変換関数に従って変換することができる。

[0195]

[0206] いくつかの例示的な実施形態では、クライアントデバイスは、クライアントデバイスのレンダリングエンジンによって画面1000をレンダリングするために必要とされる画面1000の要素を変換する。いくつかの例示的な実施形態では、隠しタグ、属性、またはフォーマット文書内の他の構造的または非センシティブなテキスト文字列などのコンパイル要素を定義する画面1000のテキスト文字列は、変換するように選択されなくてもよい。例えば、ホームの画像1020の表示を定義する1以上の非表示のHTML属性はセンシティブでないため、自動的に保持されてもよい。

[0196]

[0207] いくつかの例示的な実施形態では、クライアントデバイスは、文字列全体を変換してもよいし、個別の単語を変換してもよい。例えば、GUI要素1030のテキスト文字列「Paper St.MC」全体を変換して文字列1035を取得し、一方でGUI要素1040のテキスト文字列「Great Minds Opening」は各単語を個別に変換して変換文字列を取得することができる。いくつかの例示的な実施形態では、クライアントデバイスは、変換関数にソルトを付加してもよいし、付加しなくてもおよい。

[0197]

[0208] いくつかの例示的な実施形態では、サーバは、クライアントデバイスから、変換された潜在的にセンシティブなテキスト文字列と、未変換の構造要素と、未変換の非センシティブなテキスト文字列とを取得することができる。

[0198]

[0209] 次に、開示された主題のいくつかの例示的な実施形態による装置を示す図11を参照する。いくつかの例示的な実施形態において、装置1100は、図1のクライアントデバイス110のようなクライアントデバイスであり得る。

[0199]

[0210] いくつかの例示的な実施形態において、装置1100は、プロセッサ1102を含み得る。プロセッサ1102は、CPU、マイクロプロセッサ、電子回路、集積回路(IC)などであり得る。プロセッサ1102は、ユーザデバイス1100またはそのサブコンポーネントのいずれかによって必要とされる計算を実行するために利用され得る。プロセッサ1102は、図2、3、4、5、6、7、8などの方法を実行するのに有用なコンピュータプログラムを実行するように構成され得る。

[0200]

[0211] 開示された主題のいくつかの例示的な実施形態において、入力 / 出力(I / O)モジュール1105を利用して、ユーザに出力を提供し、ユーザから入力を受け取ることができる。I / Oモジュール1105は、タッチスクリーン、マウス、キーボード、またはユーザからの入力を受け取るのに使用できる類似のデバイスに動作可能に結合され得る。I / Oモジュール1105は、ディスプレイ(図示せず)、スピーカ(図示せず)、またはユーザにフィードバックまたはレポートを提供するために使用できる類似のデバイスに動作可能に結合され得る。I / Oモジュール1105はさらに、ユーザまたは図1のサーバ120のようなそれと通信する任意の他の装置との間で情報を送受信するために使用され得る。例えば、I / Oモジュール1105は、サーバから要素識別子を受信する、サーバにGUI要素の半変換テキスト文字列を提供する、サーバにGUI要素の完全変換テキスト文字列を提供する、サーバにGUIの構造のコンパイル要素を提供する、サーバにGUI要素の使用情報を提供する、サーバに1以上の辞書をアップロードするなどのように構成され得る。

[0201]

[0212] いくつかの例示的な実施形態では、装置1100は、メモリユニット1107を含み得る。メモリユニット1107は、短期記憶装置または長期記憶装置であり得る。メモリユニット1107は、永続的記憶装置または揮発性記憶装置であり得る。メモリユニット1107は、ディスクドライブ、フラッシュディスク、ランダムアクセスメモリ(RAM)、メモリチップなどであり得る。いくつかの例示的な実施形態では、メモリユニット1107は、プロセッサ1102に装置1100のサブコンポーネントのいずれかに関連する動作を実行させるように動作するプログラムコードを保持することができる。いくつかの例示的な実施形態では、メモリユニット1107は、プロセッサ1102に図2、3、4、5、6などのステップのいずれかに関連する動作を実行させるように動作するプログラムコードを保持することができる。

[0202]

[0213] メモリユニット1107は、非センシティブな語句または要素のタイプの1以上の標示を含む非センシティブ標示1140を保持するために利用され得る。あるいは、非センシティブ標示1140は、センシティブな語句または要素のタイプを示してもよい。非センシティブ標示1140は、サーバから提供されてもよいし、装置1100のソフトウェアエージェント1150によって決定されてもよいし、装置1100のユーザによって決定されてもよい。

[0203]

[0214] メモリユニット1107は、非センシティブな語句ごとに、完全変換または半変換されたバージョンから平文バージョンへの復号を示す辞書1145を保持するために利用され得る。いくつかのケースでは、辞書1145は、サーバから提供されてもよいし、装置1100のユーザによって決定されてもよいし、装置1100のエージェント1150によって決定されてもよい。

[0204]

[0215] 以下に詳述される構成要素は、例えばプロセッサ1102または別のプロセッサによって実行される、相互に関連するコンピュータ命令の1以上のセットとして実装することができる。これらの構成要素は、任意のプログラミング言語および任意のコンピューティング環境でプログラムされた、1以上の実行可能ファイル、動的ライブラリ、静的ライブラリ、メソッド、関数、サービスなどとして構成することができる。

[0205]

[0216] メモリユニット1107は、画面取得部1110を含むことができる。画面取得部1110は、プログラムのGUIの1以上の部分を取得するように構成され得る。一例として、ユーザ(図示せず)は、ウェブベースのアプリケーション、モバイルアプリケーション、デスクトップアプリケーションなどを利用するために、自分のニーズに合わせて装置1100を使用することができる。ウォークスルー、使用状況分析、機能拡張などのサービスを提供するために、画面取得部1110は、ユーザが使用している現在の画面の1以上の部分を取得することができる。画面の取得は、画面を表すXMLファイルの取得、画面を表すHTMLファイルの取得、画面を表すレイアウトファイルの取得、画面を表すプレイグラウンドオブジェクトの取得、JavaScript(商標)ベースのGUIなどのDOMファイルの取得、画面のスクリーンキャプチャ画像の取得など、GUIのデジタル表現をキャプチャすることによることができる。

[0206]

[0217] メモリユニット1107は、文字列変換部1120を含むことができる。文字列変換部1120は、GUI要素の1以上のデジタル表現のテキスト文字列を画面取得器1110から取得し、一方向性ハッシュ関数、暗号化関数などの変換関数に従って、それらの少なくとも一部を完全変換または半変換するように構成され得る。

[0207]

[0218] いくつかの例示的な実施形態では、文字列変換部1120は、非センシティブ標示1140や他の任意の情報を利用して、センシティブでないテキスト文字列を識別する。いくつかの例示的な実施形態では、文字列変換部1120は、センシティブでないと示されたテキスト文字列を、例えばサーバに送信する前に、完全変換または半変換しなくてもよい。いくつかの例示的な実施形態では、文字列変換部1120は、構造テキスト文字列(例えば、コンパイルタグ、属性など)であるテキスト文字列を変換しなくてもよい。追加的または代替的に、文字列変換部1120は、センシティブでないと示されたテキスト文字列のエントリを辞書1145に追加し、サーバに送信する前にすべてのテキスト文字列を完全変換または半変換し、変換テキスト文字列とともに辞書1145を提供してもよい。

[0208]

[0219] メモリユニット1107は、要素ロケータ1130を含むことができる。要素ロケータ1130は、サーバなどから第1のGUI要素をグローバルに識別する要素識別子を取得するように構成され得る。いくつかの例示的な実施形態では、要素ロケータ1130は、要素識別子のクエリを適用して、クライアントデバイス内の対応する第2のGUI要素をロケートすることができる。

[0209]

[0220] メモリユニット1107は、ソフトウェアエージェント1150を含むことができる。エージェント1150は、非センシティブ標示1140、辞書1145、スクリーン取得部1110、文字列変換部1120、要素ロケータ1130、またはそれらの一部のいずれかを包含してもよい。いくつかの例示的な実施形態では、エージェント1150は、クライアントデバイスに配備された装置1100やコンピュータなどによって実行可能なプログラム製品を含み得る。いくつかの例示的な実施形態では、エージェント1150は、非センシティブ標示1140、辞書1145、スクリーン取得部1110、文字列変換部1120、および要素ロケータ1130のいずれかを制御または処理するように構成され得る。

[0210]

[0221] 開示される主題の例示的な実施形態は、アプリケーションのウォークスルーを実行することを含む。例えば、ウォークスルーは、プログラムにおいてアクションを実行する方法を説明するか示す拡張表示をユーザデバイスの画面上に提示したり、GUI要素の近くに命令を含む説明要素を提供したりすることを含み得る。いくつかの例示的な実施形態では、ウォークスルーを作成するために、エンドデバイスのユーザは、一連のGUI要素を実行または選択することによって、例えばウォークスルーの目的であるターゲットアクションを実行することができる。エンドデバイスに展開されたエージェントは、選択された各GUI要素のテキスト文字列を完全変換または半変換し、GUI要素の変換テキスト文字列をサーバに提供することができる。エージェントまたはサーバは、GUI要素の変換テキスト文字列、GUI要素の位置、GUI要素のコンテキスト、GUI要素の構造要素などに基づいて、選択された各GUI要素の一意の識別子を決定することができる。いくつかの例示的な実施形態では、一意の識別子は変換テキスト文字列に基づいており、エンドデバイスで変換テキスト文字列を識別するクエリを含み得る。いくつかの例示的な実施形態では、サーバは、一意の識別子を取得した後、一意の識別子および関連する拡張標示または命令を提供することによって、複数のエンドデバイスへのウォークスルーを提供することができる。複数のエンドデバイスのそれぞれは、一意の識別子を使用して現在のGUI要素をロケートすることができる。

[0211]

[0222] 開示された主題の例示的な実施形態は、例えば、GUI要素の使用状況分析を実行することを含む。例えば、複数のエンドデバイスによるウェブページの「Submit(送信)」ボタンなどのGUI要素の使用状況に関する統計を取得することが望まれる場合がある。いくつかの例示的な実施形態では、統計を取得するために、サーバは、GUI要素の要素識別子を複数のエンドデバイスに提供することができる。いくつかの例示的な実施形態では、サーバで要素識別子を決定するために、エンドデバイスに配備されたエージェントは、テキスト文字列「submit」を完全変換または半変換し、変換テキスト文字列をサーバに提供する。サーバは、変換テキスト文字列、ボタンの位置、ボタンの近隣のGUI要素、GUI要素のテキスト文字列、またはGUI要素のタイプなどに基づいて、テキスト文字列「submit」の一意の識別子を決定することができる。いくつかのケースでは、一意の識別子は変換テキスト文字列に基づき、エンドデバイスで変換されたテキスト文字列を識別するクエリを含んでいてもよい。例えば、変換テキスト文字列は、半変換テキスト文字列「sueaf98hihd」を含み、クエリは、「su」で始まり残りの部分が「eaf98hihd」のハッシュ値を持つテキスト文字列を検索することを含み得る。例えば、変換テキスト文字列は、完全変換されたテキスト文字列「Uys787eaf98hihd」を含み、クエリは、テキスト文字列に関連付けられた構造要素を検索して候補要素を見つけて、これらの候補要素のテキスト文字列の変換値が「Uys787eaf98hihd」と等しいかどうかを判断することを含み得る。いくつかの例示的な実施形態では、一意の識別子を取得した後、サーバは、複数のエンドデバイスに一意の識別子を提供し、示されたGUI要素に関する統計を蓄積するように各エンドデバイスに要求することができる。いくつかの例示的な実施形態では、複数のエンドデバイスの各エージェントは、一意の識別子を適用して関連するGUI要素を識別し、関連するGUI要素の使用統計を蓄積することができる。例えば、ある要素は、停止などを示す指示を受け取るまでの時間枠の間に、ユーザがGUI要素の機能を利用した回数を特定してもよい。次に、複数のエンドデバイスは、特定された統計をサーバに提供し、サーバは1以上の目的のために結果を処理することができる。

[0212]

[0223] 開示された主題の例示的な実施形態は、ウェブサイトにおける単語カウントを実行することを含む。例えば、ウェブページで「Pegasus」という語句の単語数を取得したい場合がある。いくつかの例示的な実施形態では、単語数を取得するために、サーバは、語句「Pegasus」の変換されたバージョンを識別する要素識別子を提供する。例えば、サーバは、テキスト文字列「Pegasus」を表す半変換テキスト文字列「Pe8ha8wg9r8ga」の出現回数を特定するようにエンドデバイスに要求することができる。別の例として、サーバは、テキスト文字列「Pegasus」を表す完全変換されたテキスト文字列「unzfiY8ha8wg9r8ga」の出現回数を特定するようにエンドデバイスに要求することができる。いくつかの例示的な実施形態では、エンドデバイスに配備されたエージェントは、要素識別子のクエリを適用して、所望の語句が平文語句「Pegasus」に対応することを特定することができる。いくつかの例示的な実施形態では、エージェントは、要求されたウェブページで「Pegasus」という語句のクエリを実行し、その結果をサーバに提供してもよい。ここで、サーバはどのステップにおいても内容「Pegasus」に曝されないことに留意されたい。

[0213]

[0224] 本発明は、システム、方法、および / またはコンピュータプログラム製品であり得る。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含み得る。

[0214]

[0225] コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体の具体的な例の非網羅的なリストには、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能なプログラマブルリードオンリーメモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリスティック、フロッピーディスク、命令が記録されたパンチカードまたは溝内の隆起した構造などの機械的にエンコードされたデバイス、およびこれらの任意の適切な組み合わせなどを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波や他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通る光パルス)、または電線を介して送信される電気信号などの一時的な信号自体であると解釈されるものではない。

[0215]

[0226] 本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング / 処理デバイスに、またはネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび / またはワイヤレスネットワーク)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および / またはエッジサーバで構成され得る。各コンピューティング / 処理デバイスのネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング / 処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。

[0216]

[0227] 本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1以上のプログラミング言語の任意の組み合わせで記述されたいずれかのソースコードまたはオブジェクトコードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピューター上で、部分的にユーザのコンピューター上で、スタンドアロンソフトウェアパッケージとして、一部がユーザのコンピューター上で一部がリモートコンピューター上で、または完全にリモートコンピューターまたはサーバ上で実行され得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよいし、外部コンピュータに接続されてもよい(例えば、インターネットサービスプロバイダを使用したインターネット経由で)。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路が、本発明の態様を実行するように電子回路をパーソナライズするために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することができる。

[0217]

[0228] 本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および / またはブロック図を参照して本明細書に記載されている。フローチャート図および / またはブロック図の各ブロック、ならびにフローチャート図および / またはブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されよう。

[0218]

[0229] これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび / またはブロック図のブロックで指定された機能 / 行為を実施するための手段を作成するような機械を構成し得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、および / または他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に格納され、その結果、その中に記憶された命令を有するコンピュータ可読記憶媒体は、フローチャートおよび / またはブロック図のブロックで指定された機能 / 行為の態様を実装する命令を含む製造品を構成する。

[0219]

[0230] コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他の装置にロードされて、コンピュータ、他のプログラム可能な装置または他の装置上で一連の操作ステップを実行させて、コンピュータ実装プロセスを生成し得る。コンピュータ、他のプログラム可能な装置、または他の装置上で実行される命令は、フローチャートおよび / またはブロック図のブロックで指定された機能 / 行為を実施する。

[0220]

[0231] 図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装例のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替実装例では、ブロックに示されている機能は、図に示されている順序とは異なってもよい。例えば、連続的に示される2つのブロックは、実際には実質的に同時に実行されてもよい。または、関連する機能に応じて、ブロックが逆の順序で実行されてもよい。ブロック図および / またはフローチャート図の各ブロック、およびブロック図および / またはフローチャート図のブロックの組み合わせは、指定された機能または動作を実行する特別な目的のハードウェアベースのシステムによって、または専用ハードウェアとコンピュータ命令の組み合わせによって実装できることに留意されたい。

[0221]

[0232] 本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図するものではない。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈が明らかに他のことを示さない限り、複数形も含むことが意図される。さらに、「含む」および / または「含んでいる」という用語は、本明細書で使用される場合、記載された特徴、整数、ステップ、操作、要素、および / または構成要素の存在を特定するが、1以上の他の特徴、整数、ステップ、操作、要素、構成要素、および / またはそれらのグループの存在または追加を排除するものではないことが理解される。

[0222]

[0233] 特許請求の範囲におけるすべての手段またはステッププラス機能要素の対応する構造、材料、動作、および均等物は、具体的に記載された他のクレーム要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことを意図している。本発明の説明は、例示および説明の目的で提示されたが、網羅的であることや、開示された形態の本発明に限定されることを意図するものではない。多くの変更および変形が、本発明の範囲および精神から逸脱することなく、当業者には明らかであろう。実施形態は、本発明の原理および実際の適用を最もよく説明し、当業者が、企図される特定の使用に適した様々な変更を伴う様々な実施形態について本発明を理解できるようにするために選択され説明されたものである。< / style>

Claims

1. 1. A method performed in a system including a client device and a second device, the client device configured to display a graphical user interface (GUI) to a user of the client device; The method comprises: obtaining, at the client device, a GUI element of the GUI, the GUI being depicted in a formatted document, the formatted document comprising a structure defining a plurality of GUI elements including the GUI element, the GUI element having a text string, the text string including a first portion and a second portion; at the client device, performing a semi-conversion of the formatted document using a conversion function to obtain a semi-converted formatted document, the semi-converted formatted document retaining a structure of the formatted document, and performing the semi-conversion of the formatted document includes transforming a first portion of the text string according to a conversion function, where the transformation is not performed on a second portion of the text string, thereby obtaining a semi-converted text string including a transformed portion and a plain text portion, the plain text portion being the second portion; providing the semi-transformed format document to the second device, thereby enabling the second device to perform string-based analysis without being exposed to the content of the text strings.

2. The method of claim 1 further comprising: obtaining an element identifier for the GUI element, the element identifier including the semi-converted text string; and locating, within the GUI, a second GUI element corresponding to the GUI element, the locating step comprising: performing a string-based search of elements of the GUI using the plaintext portion of the semi-transformed text string to identify candidate elements associated with the text string; transforming a portion of a text string associated with the candidate element according to a transformation function to obtain a transformed portion of a text string associated with the candidate element; comparing a transformed portion of a text string associated with the candidate element with a transformed portion of the semi-transformed text string.

3. 3. The method of claim 1 or 2, wherein the second portion is one of a suffix of the text string, a prefix of the text string, and an internal portion of the text string, and the second portion has a predetermined size.

4. 4. The method of claim 1, further comprising: defining a relative position of the second portion in the text string based on a number of candidate elements in the GUI that are associated with a text string corresponding to the second portion at a corresponding relative position.

5. 5. The method of claim 1, further comprising: defining a number of characters in the second portion based on a number of candidate elements in the GUI associated with a text string corresponding to the number of characters in the second portion.

6. 6. The method of claim 1, wherein the providing step includes providing a number of characters of the first portion to the second device, the number of characters including a number of characters in the first portion.

7. The method of any one of claims 1 to 6, wherein the semi-transformed format document is renderable by a rendering engine to provide a GUI display.

8. 8. The method of claim 7, wherein the conversion of the first portion of the text string is performed in response to a determination that the text string is a potentially sensitive phrase, the determination that the text string is a potentially sensitive phrase being performed by: If the text string is not included in the whitelist of non-sensitive words, If the text string is included in a blacklist of sensitive words, and application of classification rules to determine whether the inspected GUI element is associated with potentially sensitive content.

9. 9. The method of claim 1, further comprising the step of adding the semi-transformed text string and the text string to a dictionary in response to determining that the text string is not a potentially sensitive phrase; providing the dictionary to the second device, thereby enabling the second device to replace the semi-translated text string with the text string.

10. 10. The method of claim 9, wherein the second device is configured to provide a display to an administrator user, the display including information about a plurality of GUI elements including the GUI element and other GUI elements, where the other GUI elements are not included in the dictionary, and the display indicating a text string associated with the GUI element and a semi-converted text string associated with the other GUI elements.

11. 11. The method of claim 10, wherein the display is a display of a GUI having a plurality of GUI elements, some of which are associated with semi-converted text strings, some of which include the other GUI elements, and the second device is configured to receive an indication from the administrative user that the semi-converted text strings associated with the other GUI elements contain non-sensitive content, and the method includes the step of adding unconverted content of the semi-converted text strings to the dictionary.

12. The method of any one of claims 1 to 10, wherein the transformation function is one or more of the group consisting of a one-way hash function, a symmetric encryption function, an asymmetric encryption function.

13. The method according to any one of claims 1 to 11, wherein different conversion functions are used for different types of GUI elements.

14. 14. The method of any one of claims 1 to 13, further comprising the steps of selecting a transformation function for the text string, selecting a second transformation function for a second text string, and transforming a first portion of the second text string according to the second transformation function, thereby obtaining a second semi-transformed text string comprising a transformed portion of the second text string and a clear text portion of the second text string.

15. The method of any one of claims 1 to 14, wherein the string-based analysis is the identification of an identifier useful for retrieving the GUI element, the identifier being based on the semi-transformed text string.

16. The method of any one of claims 1 to 15, wherein the GUI is one or more of a website, a web-based application, a native mobile application, and a desktop application.

17. 1. A method performed on a client device, comprising: obtaining an element identifier for a first graphical user interface (GUI) element, the element identifier being associated with a semi-transformed text string, the semi-transformed text string including a transformed portion and a plain text portion, the semi-transformed text string being a result of a semi-transformation performed on another client device using a transformation function applied to a text string, the transformed portion being obtained by applying a transformation function to a first portion of the text string and the plain text portion being a second portion of the text string; and locating a second GUI element associated with the element identifier in a GUI displayed on the client device, the locating step comprising: performing a string-based search using the clear text portion of the semi-transformed text string to identify candidate elements within the GUI; transforming a portion of a text string associated with the candidate element according to the transformation function to obtain a transformed portion of a text string associated with the candidate element; 23. A method comprising: comparing a transformed portion of a text string associated with the candidate element with a transformed portion of the semi-transformed text string.

18. 20. The method of claim 17, further comprising determining that a transformed portion of a text string associated with the candidate element is identical to a transformed portion of the semi-transformed text string and thus successfully locating the second GUI element using the element identifier.

19. 19. The method of claim 17 or 18, wherein the element identifier comprises a character count of a portion of a text string transformed by the transformation function, the character count comprising a character count of the portion before it was semi-transformed, and the locating step comprises identifying the candidate element using the character count.

20. obtaining, at a client device, a formatted document that describes at least a portion of a graphical user interface (GUI), the formatted document including a structure that defines a plurality of sub-elements, at least one of the sub-elements being associated with a text string; performing, at the client device, a semi-transformation of the formatted document using a transformation function, thereby obtaining a semi-transformed formatted document, the semi-transformed formatted document retaining a structure of the formatted document, the semi-transformed formatted document including a transformed version of the text string, the transformed version of the text string having been transformed according to the transformation function; and providing the semi-converted formatted document to a second device, thereby enabling the second device to perform string-based analysis of the formatted document without being exposed to the content of the text strings.

21. 21. The method of claim 20, wherein the step of performing the semi-transformation includes the steps of identifying tokens and keywords in the formatted document and preventing the transformation function from being applied to the tokens and keywords prior to the providing step.

22. 22. The method of claim 20 or 21, wherein the formatted document is defined in a markup language, the formatted document includes elements defined by tags in the markup language, a first element of the formatted document includes content, and a second element of the formatted document includes one or more pairs of attributes and corresponding attribute values, and the step of performing a semi-conversion comprises: selecting a text string to be converted from the formatted document, the text string being selected from one or more text strings not used in the formatted document to define the tag or the attribute; and applying the transformation function to the text string.

23. 23. The method of claim 22, wherein selecting the text string comprises selecting a text string that defines an attribute value for the attribute based on a determination that the attribute defines a sensitive attribute.

24. obtaining, at a client device, an element identifier of a first graphical user interface (GUI) element associated with a semi-transformed text string, the semi-transformed text string comprising a transformed portion and a plain text portion, the semi-transformed text string being a result of performing a semi-transformation on a text string at another client device (110, 1100) using a transformation function, the text string comprising a first portion and a second portion, the transformed portion being obtained by applying the transformation function to the first portion of the text string, and the plain text portion being the second portion of the text string; and locating a second GUI element associated with the element identifier in a GUI presented by a client device, the locating step comprising: Querying the element identifiers to identify candidate elements within the GUI; at least partially transforming a text string associated with the candidate element according to the transformation function to obtain a transformed version of the text string associated with the candidate element; and comparing a version of a transformed text string associated with the candidate element to the semi-transformed text string.

25. 25. The method of claim 24, wherein a formatting document depicts at least a portion of the GUI, the formatting document includes a structure defining a plurality of sub-elements, at least one sub-element in the formatting document is associated with the text string, the client device includes a rendering engine configured to render a display based on the formatting document, the element identifier includes a query, and executing the query includes querying the rendering engine to identify candidate elements in the formatting document.

26. 26. The method of claim 25, wherein the element identifiers are identified based on a semi-transformed formatted document, the semi-transformed formatted document being obtained based on semi-transforming the formatted document using a transformation function, the semi-transformed formatted document retaining a structure of the formatted document, and the semi-transformed formatted document being renderable by the rendering engine.

Citation Information

Patent Citations

  • Character string conversion device, character string conversion method and character string conversion program

    JP2013114287A

  • Meta-complete data storage

    US20150371058A1

  • System and method to anonymize data transmitted to a destination computing device

    US9323818B1

  • Mathematical method for performing homomorphic operations

    US9946810B1