Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of protecting client software from tampering using a secure server, a portion of the client software running on a client computer and another portion of the client software running on the secure server, the method comprising: the following steps prior to or independent of execution of the client software: integrating a self-protection design into the client software; separating the client software into a server component for running on the secure server and a client component for running on the client computer, the server component performing a remote function critical for successful execution of the client software; designing the client component to request execution of the remote function performed by the server component and depend on return of the necessary results from the remote function, the client component not executing successfully without results from the remote function by the server component; distributing the client component to run on the client computer; developing self-protection design updates for the client software on the secure server, the design updates for the client software including server component design updates for the server component and corresponding client component design updates for the client component; periodically updating the server component on the secure server with the server component design updates and distributing the corresponding client component design updates for updating the client component on the client computer; the client software failing to operate correctly when the server component has the server component design updates and the client component does not have the corresponding client component design updates; the following steps during execution of the client software: receiving a client request from the client component running on the client computer to the secure server for execution of the remote function performed by the server component; verifying the client request on the secure server; if verification is successful during execution of the client software, allowing execution of the remote function performed by the server component on the secure server and return of the necessary results from the remote function to the client component running on the client computer for successful completion of execution of the client software on the client computer; and if verification is not successful during execution of the client software, attempting to update the client component on the client computer from the secure server; and requiring the client computer to reinitialize communication with the secure server for execution of the remote function.
2. The method of claim 1 , wherein periodically updating the server component with the server component design updates and distributing the corresponding client component design updates for updating the client component comprises: on the secure server, determining a triggering event for updating the self-protection design of the client software; distributing the corresponding client component design updates for updating the client component on the client computer at the occurrence of the triggering event; and synchronizing updating of the server component with the server component design updates on the secure server to verify and cooperate with the updated client component on the client computer.
3. The method of claim 2 , wherein the triggering event is a particular time.
4. The method of claim 2 , wherein communication between the client computer and the secure server is encrypted, and wherein verifying the client request on the secure server comprises checking that the proper encryption is used for communication by the client computer.
5. The method of claim 4 , wherein the encryption between the client computer and the secure server uses white box cryptography.
6. The method of claim 5 , wherein developing self-protection design updates for the client software comprises generating a revision of the white box cryptography with a new root key on the secure server.
7. The method of claim 4 , wherein developing self-protection design updates for the client software comprises developing updates to the encryption for communication between the client computer and the secure server.
8. The method of claim 1 , wherein developing self-protection design updates for the client software comprises generating a new version of the server component and a corresponding new version of the client component on the secure server using a unique protection randomization seed value.
9. The method of claim 1 , wherein developing self-protection design updates for the client software comprises: generating server component design updates for the server component and corresponding client component design updates for the client component on the secure server; pre-computing an identifying checksum value on the secure server of some combination of code and/or data within the new version of the client component; wherein periodically updating the server component with the server component design updates and distributing the corresponding client component design updates for updating the client component comprises: on the secure server, determining a triggering event for updating the self-protection design of the client software; distributing the corresponding client component design updates for updating the client component on the client computer at the occurrence of the triggering event; and synchronizing updating of the server component with the server component design updates on the secure server to verify and cooperate with the updated client component on the client computer, including saving the identifying checksum value on the secure server at the triggering event; wherein verifying the client request on the secure server comprises: sending an authentication request from the secure server to the client component on the client computer in response to the client request from the client component; receiving an authentication response from the client component on the client computer to the secure server in response to the authentication request, the authentication response including a client checksum computed by the client component on the client computer; comparing the client checksum to the identifying checksum on the secure server; and successfully verifying the client request only if the client checksum equals the identifying checksum.
10. The method of claim 9 , wherein communication between the client computer and the secure server is encrypted, and wherein verifying the client request on the secure server further comprises checking that the proper encryption is used for communication by the client computer.
11. The method of claim 10 , wherein the encryption between the client computer and the secure server uses white box cryptography.
12. The method of claim 11 , wherein developing self-protection design updates for the client software comprises developing updates to the encryption for communication between the client computer and the secure server.
13. A system using a secure server for protecting client software from tampering, the system comprising: an architecture module for separating the client software into a client component for execution on a client computer and a server component for execution on the secure server, the server component performing a remote function critical for successful execution of the client software, the architecture module further designing the client component to request execution of the remote function performed by the server component and depend on return of the necessary results from the server component; a protection module for developing and integrating a self-protection design into the client software, and for developing self-protection design updates for the client software, the design updates for the client software including server component design updates for the server component and corresponding client component design updates for the client component; the client software failing to operate correctly when the server component has the server component design updates and the client component does not have the corresponding client component design updates; an update module for periodically distributing the corresponding client component design updates for updating the client component on the client computer, and for updating the server component on the secure server to verify and cooperate with the updated client component on the client computer; a network communication port for communicating with the client computer; a communication processor for receiving communications from the client computer to the secure server, including requests from the client computer during execution of the client component for execution of the remote function performed by the server component; a verification module for verifying communications from the client computer to the secure server; wherein the server component on the secure server only cooperates with the client component on the client computer in execution and return of the results from the remote function if the verification module indicates verification is successful; and wherein if the verification module indicates verification is not successful of a client request from the client computer during execution of the client component for execution of the remote function, the secure server attempts to update the client component on the client computer; and requires the client computer to reinitialize communication by sending a new client request to the secure server for execution of the remote function.
14. The system of claim 13 , wherein the update module also determines a triggering event for distributing the corresponding client component design updates for updating the client component on the client computer and for updating the server component on the secure server.
15. The system of claim 14 , wherein the triggering event is a particular time.
16. The system of claim 13 , wherein communication between the client computer and the secure server is encrypted, and wherein the verification module verifies that communications from the client computer to the secure server use the proper encryption.
17. The system of claim 16 , wherein the encryption between the client computer and the secure server uses white box cryptography, and the self-protection design updates for the client software developed by the protection module include revisions of the white box cryptography with a new root key.
18. The system of claim 13 , wherein the self-protection design updates for the client software developed by the protection module comprise server component design updates for the server component and corresponding client component design updates for the client component and an identifying checksum value computed from some combination of code and/or data within the client component after updating with the corresponding client component design updates; wherein the update module determines a triggering event for distributing the corresponding client component design updates to the client computer and for updating the server component on the secure server, and stores the identifying checksum value on the secure server at the triggering event; and wherein the verification module sends an authentication request to the client computer in response to the client request from the client computer, checks an authentication response from the client computer for a client checksum computed by the client component on the client computer, compares the client checksum to the identifying checksum on the secure server, and successfully verifies the client request only if the client checksum equals the identifying checksum.
Unknown
February 16, 2016
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.