apache / apache/parquet-java

[C++] Data set integrity tool

Đang mở
#2,251 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Component: C++ Component: Java Component: Parquet Priority: Major Type: enhancement
Ngôn ngữ chính
Java
Star
3.1k
Fork
1.6k
Merge trung bình
3 ngày 12 giờ
Pull request đã merge (30 ngày)
33

Mô tả

Parquet encryption protects integrity of individual files. However, data sets (such as tables) are often written as a collection of files, say

"/path/to/dataset"/part0.parquet.encrypted

..

"/path/to/dataset"/partN.parquet.encrypted

 

In an untrusted storage, removal of one or more files will go unnoticed. Replacement of one file contents with another will go unnoticed, unless a user has provided unique AAD prefixes for each file.

 

The data set integrity tool solves these problems. While it doesn't necessarily belong in Parquet functionality (that is focused on individual files (?)) - it will assist higher level frameworks that use Parquet, to cryptographically protect integrity of data sets comprised of multiple files.

The use of this tool is not obligatory, as frameworks can use other means to verify table (file collection) integrity.

 

The tool works by creating a small file, that can be stored as say

"/path/to/dataset"/.dataset.signature

 

that contains the dataset unique name (URI) and the number of files. It can also contain an explicit list of file names (with or without full path). The file contents is either encrypted with AES-GCM  (authenticated, encrypted) - or hashed and signed (authenticated, plaintext). 

 

On the writer side, the tools creates AAD prefixes for every data file, and creates the signature file itself. The input is the dataset URI, N and the encryption/signature key; plus (optionally) the list of file names (with or without full path).

 

On the reader side, the tool parses and verifies the signature file, and provides the framework with the verified dataset name, number of files that must be accounted for, and the AAD prefix for each file;  plus (optionally) the list of file names (with or without full path). The input is the expected dataset URI and the encryption/signature key.

 

 

 

**Reporter**: [Gidon Gershinsky](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=gershinsky) / @ggershinsky
**Assignee**: [Gidon Gershinsky](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=gershinsky) / @ggershinsky
#### Related issues:
- [Parquet modular encryption](https://github.com/apache/parquet-java/issues/2110) (depends upon)

**Note**: *This issue was originally created as [PARQUET-1457](https://issues.apache.org/jira/browse/PARQUET-1457). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Không có tệp mã nguồn, bài kiểm thử hay điểm bắt đầu của phần triển khai nào được nêu tên. Hãy bắt đầu bằng việc xem xét issue liên quan về mã hóa modular của Parquet và xác định một công cụ ở cấp dataset nên nằm ở đâu. Phần hoàn thành cần bao gồm thiết kế writer và reader được xác định rõ, bao quát URI của dataset, số lượng hoặc danh sách tệp, xác thực và các tiền tố AAD cho từng tệp.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
cpp
Lĩnh vực
cryptography, data-engineering
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
20/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.