Claims
- 1. A method for protecting data integrity in a network attached block-device in a network, comprising:
(a) receiving from a client a request to access data on the network attached block-device; (b) determining if the client is permitted to access the requested data (c) if the client is permitted to access the data, issuing a block-device access package containing capability data to the client over a secure channel, the capability data identifying a range of blocks in the network-attached block-device containing the data; (d) at the network attached block-device, receiving a block access request from the client, the request including the capability data; (e) at the network attached block-device, verifying that the block access request is consistent with the capability data; and (f) if the block access request is verified, granting the block access request and executing the block access request at the network attached block-device.
- 2. The method claim 1, wherein the block access request includes a value that enables the block access request to be authenticated as having been sent by the client; and
the verifying includes authenticating the block access request as having been sent by the client.
- 3. The method claim 2, wherein the verifying includes verifying that a capability represented by the capability data has not been revoked.
- 4. The method claim 3, wherein the verifying includes verifying that the request is not a duplicate presentation of an earlier processed request.
- 5. The method claim 2, wherein the verifying includes verifying that the request is not a duplicate presentation of an earlier processed request.
- 6. The method claim 1, wherein the block access request includes a range of blocks in the network attached block-device to be accessed.
- 7. The method claim 1, wherein (a), (b) and (c) are performed by a metadata server, separate from the network attached block-device at which (d), (e) and (f) are performed.
- 8. The method claim 7, including establishing a common secret key shared by the metadata server and the network attached block-device;
wherein the block-device access package includes a capability secret that is a function of the capability data and the common secret key; and the block access request includes an operation secret that is a function of the block access request and the capability secret; wherein the verifying includes recalculating the capability secret as a function of the capability data in the block access request and the common secret key, and computing a second operation secret as a function of the block access request and the recalculated capability secret, and then verifying that the second operation secret is consistent with the operation secret in the block access request.
- 9. The method of claim 8, wherein the capability secret and the operation secret are generated using a message authentication code (MAC) hash function.
- 10. The method of claim 8, wherein establishing a common secret key comprises:
starting the network attached block-device in a state in which it trusts a first party that communicates with it; initiating a communication between the metadata server and the network attached block-device; and negotiating the common secret key using a key exchange algorithm.
- 11. The method of claim 8, wherein the block-device access package further comprises:
a block map, wherein the block map comprises a list of physical blocks to be accessed; and an access mode selected from the group consisting of read, write, and read-write.
- 12. The method of claim 8, wherein the block access request further comprises:
a list of physical blocks to be accessed; an access mode selecting from the group consisting of read and write; and the capability data.
- 13. The method of claim 1, wherein the capability data comprises:
a capability identification; a group identification for indicating a group to which the capability data belongs; a block-device identification for specifying the network attached block-device; a list of extents for indicating ranges of physical blocks to which access is granted; and an access mode for indicating a permitted mode of access.
- 14. The method of claim 1, wherein the network attached block-device is a first network attached block-device of a plurality of network attached block-devices, and the capability data comprises:
a capability identification; a group identification for indicating a group to which the capability data belongs; a block-device identification for specifying the first network attached block-device; a list of extents for indicating ranges of physical blocks to which access is granted; and an access mode for indicating a permitted mode of access.
- 15. A system for protecting data integrity in a network attached block-device in a network, comprising:
at least a metadata server having one or more processing units for executing computer programs, and having one or more network interfaces for exchanging information with devices coupled to the network; at least a network attached block-device having one or more processing units for executing computer programs, and having one or more network interfaces for exchanging information with devices coupled to the network, wherein the network attached block-device stores data in a range of data blocks; the metadata server including a capability issuer module, the capability issuer module including one or more computer programs containing instructions for:
receiving from a client a request to access data on the network attached block-device; determining if the client is permitted to access the requested data; if the client is permitted to access the data, issuing a block-device access package containing capability data to the client over a secure channel, the capability data identifying a range of blocks in the network attached block-device containing the data; the network attached block-device including a capability checker module, the capability checker module including one or more computer programs containing instructions for:
receiving a block access request from the client, the request including the capability data; verifying that the block access request is consistent with the capability data; and if the block access request is verified, granting the block access request and executing the block access request at the network attached block-device.
- 16. The system of claim 15, wherein the block access request includes a value that enables the block access request to be authenticated as having been sent by the client; and
the verifying includes authenticating the block access request as having been sent by the client.
- 17. The system of claim 16, wherein the verifying includes verifying that a capability represented by the capability data has not been revoked.
- 18. The system of claim 17, wherein the verifying includes verifying that the request is not a duplicate presentation of an earlier processed request.
- 19. The system of claim 16, wherein the verifying includes verifying that the request is not a duplicate presentation of an earlier processed request.
- 20. The system of claim 15, wherein the block access request includes a range of blocks in the network attached block-device to be accessed.
- 21. The system of claim 15, wherein the metadata server and the network attached block-device are configured to establish a common secret key shared by the metadata server and the network attached block-device;
wherein the block-device access package includes a capability secret that is a function of the capability data and the common secret key; and the block access request includes an operation secret that is a function of the block access request and the capability secret; wherein the verifying includes recalculating the capability secret as a function of the capability data in the block access request and the common secret key, and computing a second operation secret as a function of the block access request and the recalculated capability secret, and then verifying that the second operation secret is consistent with the operation secret in the block access request.
- 22. The system of claim 21, wherein a message authentication code (MAC) hash function is used for generating the capability secret and the operation secret.
- 23. The system of claim 21, wherein the system is configured to establish the common secret by:
starting the network attached block-device in a state in which it trusts a first party that communicates with it; initiating a communication between the metadata server and the network attached block-device; and negotiating the common secret key using a key exchange algorithm.
- 24. The system of claim 21, wherein the block-device access package further comprises:
a block map, wherein the block map comprises a list of physical blocks to be accessed; and an access mode selecting from the group consisting of read, write, and read-write.
- 25. The system of claim 21, wherein the block access request further comprises:
a list of physical blocks to be accessed; an access mode selecting from the group consisting of read and write; and the capability data.
- 26. The system of claim 15, wherein the capability data comprises:
a capability identification; a group identification for indicating a group to which the capability data belongs; a block-device identification for specifying the network attached block-device; a list of extents for indicating ranges of physical blocks to which access is granted; and an access mode for indicating a permitted mode of access.
- 27. The system of claim 15, wherein the network attached block-device is a first network attached block-device of a plurality of network attached block-devices, and the capability data comprises:
a capability identification; a group identification for indicating a group to which the capability data belongs; a block-device identification for specifying the first network attached block-device; a list of extents for indicating ranges of physical blocks to which access is granted; and an access mode for indicating a permitted mode of access.
- 28. A computer program product, comprising a medium storing computer programs for execution by one or more computer systems, the computer program comprising:
a capability issuer module, for use in conjunction with a metadata server, the capability issuer module including one or more computer programs containing instructions for: receiving from a client a request to access data on a network attached device in a network; determining if the client is permitted to access the requested data; if the client is permitted to access the data, issuing a block-device access package containing capability data to the client over a secure channel, the capability data identifying a range of blocks in the network attached block-device containing the data; a capability checker module for use in conjunction with a network attached block-device, the capability checker module including one or more computer programs containing instructions for: receiving a block access request from the client, the request including the capability data; verifying that the block access request is consistent with the capability data; and if the block access request is verified, granting the block access request and executing the block access request at the network attached block-device.
- 29. The computer program product of claim 28, wherein the block access request includes a value that enables the block access request to be authenticated as having been sent by the client; and
the verifying includes authenticating the block access request as having been sent by the client.
- 30. The computer program product of claim 29, wherein the verifying includes verifying that a capability represented by the capability data has not been revoked.
- 31. The computer program product of claim 30, wherein the verifying includes verifying that the request is not a duplicate presentation of an earlier processed request.
- 32. The computer program product of claim 29, wherein the verifying includes verifying that the request is not a duplicate presentation of an earlier processed request.
- 33. The computer program product of claim 28, wherein the block access request includes a range of blocks in the network attached block-device to be accessed.
- 34. The computer program product of claim 28, wherein the metadata server and the network attached block-device are configured to establish a common secret key shared by the metadata server and the network attached block-device;
wherein the block-device access package includes a capability secret that is a function of the capability data and the common secret key; and the block access request includes an operation secret that is a function of the block access request and the capability secret; wherein the verifying includes recalculating the capability secret as a function of the capability data in the block access request and the common secret key, and computing a second operation secret as a function of the block access request and the recalculated capability secret, and then verifying that the second operation secret is consistent with the operation secret in the block access request.
- 35. The computer program product of claim 34, wherein a message authentication code (MAC) hash function is used for generating the capability secret and the operation secret.
- 36. The computer program product of claim 34, wherein the system in configured to establish the common secret by:
starting the network attached block-device in a state in which it trusts a first party that communicates with it; initiating a communication between the metadata server and the network attached block-device; and negotiating the common secret key using a key exchange algorithm.
- 37. The computer program product of claim 34, wherein the block-device access package further comprises:
a block map, wherein the block map comprises a list of physical blocks to be accessed; and an access mode selecting from the group consisting of read, write, and read-write.
- 38. The computer program product of claim 34, wherein the block access request further comprises:
a list of physical blocks to be accessed; an access mode selecting from the group consisting of read and write; and the capability data.
- 39. The computer program product of claim 28, wherein the capability data comprises:
a capability identification; a group identification for indicating a group to which the capability data belongs; a block-device identification for specifying the network attached block-device; a list of extents for indicating ranges of physical blocks to which access is granted; and an access mode for indicating a permitted mode of access.
- 40. The computer program product of claim 28, wherein the network attached block-device is a first network attached block-device of a plurality of network attached block-devices, and the capability data comprises:
a capability identification; a group identification for indicating a group to which the capability data belongs; a block-device identification for specifying the first network attached block-device; a list of extents for indicating ranges of physical blocks to which access is granted; and an access mode for indicating a permitted mode of access.
RELATED APPLICATIONS
[0001] This application is related to a patent application entitled Method and System for Managing Access Control, Ser. No. 10/______, filed on ______, Attorney Docket 9772-0347-999, which is hereby incorporated by reference.