[C++] Data set integrity tool
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.6k
- 平均マージ
- 3日 12時間
- マージ済み PR(30日)
- 33
説明
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.*
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
ソースファイル、テスト、実装のエントリーポイントは指定されていません。まず関連する Parquet の modular encryption issue を確認し、dataset-level tool をどこに配置すべきかを判断してください。完了条件には、dataset URI、ファイル数またはファイル一覧、認証、およびファイルごとの AAD プレフィックスを対象とする、定義済みの writer と reader の設計を含めてください。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- cpp
- 領域
- cryptography, data-engineering
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 20/100