一句话:提出 Secure RDTs,利用服务器投影与写中介,为离线可用 JSON 副本数据实施基于角色的访问控制。
复制数据类型(RDT)支持副本在网络中最终一致,适用于间歇联网应用,但客户端不可信时,访问控制难以实施:恶意客户端可读取未授权数据并篡改影响其他副本。论文提出 Secure RDTs(SRDTs),将基于角色的访问控制内建于离线可用 JSON 数据。可信服务器为 SRDT 的字段指定角色读写策略;通过投影数据与策略,只向用户角色暴露可读字段,并作为中介强制执行写权限。作者用 PLT Redex 给出操作语义,借助形式化证明与随机测试验证规范的安全性,从而在离线编辑场景下实现安全策略。
Replicated Data Types (RDTs) are a type of data structure that can be replicated over a network, where each replica can be kept (eventually) consistent with the other replicas. They are used in applications with intermittent network connectivity, since local (offline) edits can later be merged with the other replicas. Applications that want to use RDTs often have an inherent security component that restricts data access for certain clients. However, access control for RDTs is difficult to enforce for clients that are not running within a secure environment, e.g., web applications where the client-side software can be freely tampered with. In essence, an application cannot prevent a client from reading data which they are not supposed to read, and any malicious changes will also affect well-behaved clients. This paper proposes Secure RDTs (SRDTs), a data type that specifies role-based access control for offline-available JSON data. In brief, a trusted application server specifies a security policy based on roles with read and write privileges for certain fields of an SRDT. The server enforces read privileges by projecting the data and security policy to omit any non-readable fields for the user's given role, and it acts as an intermediary to enforce write privileges. The approach is presented as an operational semantics engineered in PLT Redex, which is validated by formal proofs and randomised testing in Redex to ensure that the formal specification is secure.
@article{paperbot1888,
title = {Secure RDTs: Enforcing Access Control Policies for Offline Available JSON Data},
author = {Thierry Renaux and Sam Van den Vonder and Wolfgang De Meuter},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {OOPSLA2},
year = {2023},
doi = {10.1145/3622802}
}