A method, executed by one or more computing devices, for providing offline access of one or more heterogeneous digital contents to at least one Digital Rights Management (DRM) user by a DRM server, the method comprising:
- registering, by one or more of the computing devices, the at least one DRM user by generating a digital user certificate corresponding to the at least one DRM user and a digital machine certificate corresponding to a computing machine of the at least one DRM user by the DRM server, wherein the user certificate and the machine certificate are sent to the at least one DRM user, and the machine certificate comprises a stored machine id of the computing machine of the at least one DRM user;
- receiving, by at least one of the computing devices, the one or more heterogeneous digital contents from a publisher, wherein the one or more heterogeneous digital contents are encrypted by the publisher before or after uploading into the DRM server and grant of one or more rights to the at least one DRM user with respect to the one or more heterogeneous digital contents are received from the publisher;
- storing information related to decryption of the one or more encrypted heterogeneous digital contents, the one or more granted rights, the user certificate, the machine certificate, and information related to the at least one DRM user in a repository, wherein the information related to decryption comprises a random symmetric key;
- authenticating, by at least one of the computing devices, the at least one DRM user requesting the one or more heterogeneous digital contents based on the information related to the at least one DRM user previously stored in the repository;
- generating a DRM license in response to the authentication, wherein the DRM license includes the information for decrypting the one or more encrypted heterogeneous digital contents and the one or more granted rights for the at least one authenticated DRM user, wherein the information for decrypting comprises the random symmetric key encrypted with a user public key of the at least one DRM user;
- and
- sending, by at least one of the computing devices, the DRM license to the at least one authenticated DRM user for rendering the one or more heterogeneous digital contents, wherein the one or more heterogeneous digital contents are rendered by using the user certificate and the machine certificate stored at the computing machine of the at least one DRM user and the information stored in the DRM license;
- wherein registering further comprises:
- generating, by one of the computing devices, the user certificate for the at least one DRM user and the machine certificate for the computing machine of the at least one DRM user by the DRM server, wherein the user certificate comprises a user private key and the user public key and the machine certificate comprises a machine private key and a machine public key;
- encrypting the user private key with the machine public key;
- storing a root certificate, the machine certificate and the machine private key in a first sealed object at the computing machine of the at least one DRM user, wherein the first sealed object is generated by the computing machine of the at least one DRM user;
- and
- storing the root certificate, the user certificate and the encrypted user private key in a second sealed object at the computing machine of the at least one DRM user, wherein the second sealed object is generated by the computing machine of the at least one DRM user;
- wherein the digital contents are accessible by performing the following at a current computing machine when a DRM client executing at the current computing machine is offline from the DRM server:
- accessing the DRM license generated at the DRM server and subsequently received by the computing machine of the at least one DRM user from the DRM server;
- verifying integrity of the DRM license based on the first and second sealed objects stored at the computing machine of the at least one DRM user;
- while the DRM client is offline from the DRM server, retrieving the stored machine id of the computing machine of the at least one DRM user from the machine certificate in the first sealed object generated by the DRM client executing at the current computing machine;
- matching a machine identifier of the current computing machine with the retrieved machine id of the computing machine of the at least one DRM user;
- responsive to determining that the machine identifier of the current computing machine matches with the retrieved machine id of the computing machine of the at least one DRM user, recovering the user private key with the machine private key stored in the first sealed object;
- decrypting the encrypted random symmetric key with the user private key;
- and
- consuming the one or more heterogeneous digital contents by the at least one DRM user based on the one or more granted rights.