Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Linee guida per il client di crittografia C3R
Il client di crittografia C3R è uno strumento che consente alle organizzazioni di riunire dati sensibili per ricavare nuove informazioni dall'analisi dei dati. Lo strumento limita crittograficamente ciò che può essere appreso da qualsiasi parte e durante il processo. AWS Sebbene ciò sia di vitale importanza, il processo di protezione crittografica dei dati può comportare un notevole sovraccarico sia in termini di risorse di elaborazione che di archiviazione. Pertanto, è importante comprendere i compromessi derivanti dall'utilizzo di ciascuna impostazione e come ottimizzare le impostazioni pur mantenendo le garanzie crittografiche desiderate. Questo argomento si concentra sulle implicazioni prestazionali delle diverse impostazioni nel client e negli schemi di crittografia C3R.
Tutte le impostazioni di crittografia del client di crittografia C3R offrono diverse garanzie crittografiche. Le impostazioni a livello di collaborazione sono le più sicure per impostazione predefinita. L'attivazione di funzionalità aggiuntive durante la creazione di una collaborazione indebolisce le garanzie di privacy, consentendo di condurre attività come l'analisi della frequenza sul testo cifrato. Per ulteriori informazioni su come vengono utilizzate queste impostazioni e quali sono le loro implicazioni, consulta. Elaborazione crittografica per Clean Rooms
Argomenti
Implicazioni sulle prestazioni per i tipi di colonna
C3R utilizza tre tipi di colonne: cleartext, fingerprinte sealed. Ciascuno di questi tipi di colonna offre garanzie crittografiche diverse e ha diverse destinazioni d'uso. Nelle sezioni seguenti, vengono discusse le implicazioni prestazionali del tipo di colonna e l'impatto sulle prestazioni di ciascuna impostazione.
Cleartext columns
Cleartext le colonne non vengono modificate rispetto al formato originale e non vengono elaborate crittograficamente in alcun modo. Questo tipo di colonna non può essere configurato e non influisce sulle prestazioni di archiviazione o di calcolo.
Fingerprint columns
Fingerprint le colonne sono pensate per essere utilizzate per unire i dati su più tabelle. A tal fine, la dimensione del testo cifrato risultante deve essere sempre la stessa. Tuttavia, queste colonne sono influenzate dalle impostazioni a livello di collaborazione. Fingerprint le colonne potrebbero avere diversi gradi di impatto sulla dimensione del file di output a seconda del cleartext contenuto nell'input.
Argomenti
Costo generale di base per fingerprint columns
C'è una sovrastruttura di base per fingerprint colonne. Questo sovraccarico è costante e sostituisce le dimensioni del cleartext byte.
Dati in fingerprint le colonne vengono elaborate crittograficamente tramite una funzione HMAC (Message Authentication Code) basata su Hash, che trasforma i dati in un codice di autenticazione dei messaggi (MAC) a 32 byte. Questi dati vengono quindi elaborati tramite un codificatore base64, aggiungendo circa il 33 percento alla dimensione in byte. È preceduto da una designazione C3R a 8 byte per designare il tipo di colonna a cui appartengono i dati e la versione client che li ha prodotti. Il risultato finale è di 52 byte. Questo risultato viene quindi moltiplicato per il conteggio delle righe per ottenere il sovraccarico totale di base (usa il numero di null
valori diversi totali se preserveNulls
è impostato su true).
L'immagine seguente mostra come BASE_OVERHEAD =
C3R_DESIGNATION +
(MAC * 1.33)
Il testo cifrato di output in fingerprint le colonne saranno sempre di 52 byte. Questa può essere una riduzione significativa dello spazio di archiviazione se l'input cleartext la media dei dati supera i 52 byte (ad esempio, indirizzi completi). Questo può essere un aumento significativo dello spazio di archiviazione se l'input cleartext la media dei dati è inferiore a 52 byte (ad esempio, l'età dei clienti).
Impostazioni di collaborazione per fingerprint columns
preserveNulls
Impostazione
Quando l'impostazione a livello di collaborazione preserveNulls
è false
(impostazione predefinita), ogni null
valore viene sostituito con 32 byte casuali univoci ed elaborato come se non lo fosse. null
Il risultato è che ogni null
valore è ora di 52 byte. Ciò può aggiungere requisiti di archiviazione significativi per le tabelle che contengono dati molto scarsi rispetto a quando questa impostazione è true
e null
i valori vengono passati come. null
Se non hai bisogno delle garanzie sulla privacy di questa impostazione e preferisci mantenere null
i valori all'interno dei tuoi set di dati, abilita l'preserveNulls
impostazione al momento della creazione della collaborazione. L'preserveNulls
impostazione non può essere modificata dopo la creazione della collaborazione.
Dati di esempio per un fingerprint column
Di seguito è riportato un set di esempio di dati di input e output per a fingerprint colonna con impostazioni da riprodurre. Altre impostazioni a livello di collaborazione, ad esempio, allowDuplicates
non influiscono sui risultati allowCleartext
e possono essere impostate come true
o false
se si tenta di riprodurre localmente.
Esempio di segreto condiviso: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Esempio di ID di collaborazione: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
allowJoinsOnColumnsWithDifferentNames: True
questa impostazione non influisce sui requisiti di prestazioni o di archiviazione. Tuttavia, questa impostazione rende irrilevante la scelta del nome della colonna quando si riproducono i valori mostrati nelle tabelle seguenti.
Input | null |
preserveNulls |
TRUE |
Output | null |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 0 |
Input | null |
preserveNulls |
FALSE |
Output | 01:hmac:3lkFjthvV3IUu6mMvFc1a+XAHwgw/ElmOq4p3Yg25kk= |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 52 |
Input | empty string |
preserveNulls |
- |
Output | 01:hmac:oKTgi3Gba+eUb3JteSz2EMgXUkF1WgM77UP0Ydw5kPQ= |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 52 |
Input | abcdefghijklmnopqrstuvwxyz |
preserveNulls |
- |
Output | 01:hmac:kU/IqwG7FMmzzshr0B9scomE0UJUEE7j9keTctplGww= |
Deterministico | Yes |
Byte di input | 26 |
Byte di uscita | 52 |
Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 |
preserveNulls |
- |
Output | 01:hmac:ks3htnQbw2vdhCRFF6JNzW5LMndJaHG57uvE26mBtSs= |
Deterministico | Yes |
Byte di input | 62 |
Byte di uscita | 52 |
Risoluzione dei problemi fingerprint columns
Perché il testo cifrato è nel mio fingerprint colonne parecchie volte più grandi della dimensione del cleartext che c'è entrato?
Testo cifrato in un fingerprint la colonna ha sempre una lunghezza di 52 byte. Se i dati di input erano piccoli (ad esempio, l'età dei clienti), mostreranno un aumento significativo delle dimensioni. Ciò può verificarsi anche se l'preserveNulls
impostazione è impostata sufalse
.
Perché il testo cifrato è nel mio fingerprint colonne parecchie volte più piccole della dimensione del cleartext che c'è entrato?
Testo cifrato in un fingerprint la colonna ha sempre una lunghezza di 52 byte. Se i dati di input erano di grandi dimensioni (ad esempio, gli indirizzi completi dei clienti), mostrerà una riduzione significativa delle dimensioni.
Come faccio a sapere se ho bisogno delle garanzie crittografiche fornite da? preserveNulls
Sfortunatamente, la risposta è che dipende. Come minimo, è Parametri di calcolo crittografico necessario verificare in che modo l'preserveNulls
impostazione protegge i dati. Tuttavia, ti consigliamo di fare riferimento ai requisiti di gestione dei dati della tua organizzazione e agli eventuali contratti applicabili alla rispettiva collaborazione.
Perché devo sostenere il sovraccarico di base64?
Per consentire la compatibilità con i formati di file tabulari come CSV, è necessaria la codifica base64. Sebbene alcuni formati di file come Parquet potrebbe supportare rappresentazioni binarie dei dati, è importante che tutti i partecipanti a una collaborazione rappresentino i dati nello stesso modo per garantire risultati di interrogazione corretti.
Sealed columns
Sealed le colonne sono pensate per il trasferimento di dati tra i membri di una collaborazione. Il testo cifrato in queste colonne non è deterministico e ha un impatto significativo sulle prestazioni e sullo storage in base alla configurazione delle colonne. Queste colonne possono essere configurate singolarmente e spesso hanno il maggiore impatto sulle prestazioni del client di crittografia C3R e sulla dimensione del file di output risultante.
Argomenti
Sovraccarico di base per sealed columns
C'è una sovrastruttura di base per sealed colonne. Questo sovraccarico è costante e si aggiunge alla dimensione del cleartext e inserendo (se del caso) i byte.
Prima di qualsiasi crittografia, i dati contenuti in sealed le colonne sono precedute da un carattere di 1 byte che indica il tipo di dati contenuti. Se è selezionato il padding, i dati vengono quindi riempiti e aggiunti con 2 byte che indicano la dimensione del pad. Dopo l'aggiunta di questi byte, i dati vengono elaborati crittograficamente utilizzando AES-GCM e archiviati con IV (12 byte), nonce (32 byte) e Auth
Tag (16 byte). Questi dati vengono quindi elaborati tramite un codificatore base64, aggiungendo circa il 33 percento alla dimensione dei byte. I dati sono preceduti da una designazione C3R a 7 byte per indicare il tipo di colonna a cui appartengono i dati e la versione client utilizzata per produrli. Il risultato è un sovraccarico finale di base di 91 byte. Questo risultato può quindi essere moltiplicato per il numero di righe per ottenere il sovraccarico di base totale (usa il numero di valori totali non nulli se preserveNulls
impostato su true).
L'immagine seguente mostra come BASE_OVERHEAD = C3R_DESIGNATION + ((NONCE + IV + DATA_TYPE + PAD_SIZE + AUTH_TAG)
* 1.33)
Impostazioni di collaborazione per sealed columns
preserveNulls
Impostazione
Quando l'impostazione a livello di collaborazione preserveNulls
è false
(impostazione predefinita), ogni null
valore è unico, casuale di 32 byte ed è elaborato come se non lo fosse. null
Il risultato è che ogni null
valore ora è di 91 byte (di più se inserito). Ciò può aggiungere requisiti di archiviazione significativi per le tabelle che contengono dati molto scarsi rispetto a quando questa impostazione è impostata true
e null
i valori vengono passati come. null
Se non hai bisogno delle garanzie sulla privacy di questa impostazione e preferisci mantenere null
i valori all'interno dei tuoi set di dati, abilita l'preserveNulls
impostazione al momento della creazione della collaborazione. L'preserveNulls
impostazione non può essere modificata dopo la creazione della collaborazione.
Impostazioni dello schema sealed colonne: tipi di imbottitura
Tipo di pad none
La selezione di un tipo di pad none
non aggiunge alcuna imbottitura al cleartext e non aggiunge alcun sovraccarico aggiuntivo al sovraccarico di base descritto in precedenza. L'assenza di imbottitura garantisce la dimensione di output più efficiente in termini di spazio. Tuttavia, non offre le stesse garanzie di privacy dei tipi di imbottitura. fixed
max
Questo perché la dimensione del sottostante cleartext è distinguibile dalla dimensione del testo cifrato.
Tipo di pad di fixed
La selezione di un tipo di pad fixed
è una misura di tutela della privacy per nascondere la lunghezza dei dati contenuti all'interno di una colonna. Questo viene fatto riempiendo tutti i cleartext al fornito pad_length
prima che venga crittografato. Qualsiasi dato che superi tale dimensione causa il fallimento del client di crittografia C3R.
Dato che il padding viene aggiunto al cleartext prima di essere crittografato, AES-GCM dispone di una mappatura 1 a 1 di cleartext per cifrare i byte di testo. La codifica base64 aggiungerà il 33 percento. Il sovraccarico di archiviazione aggiuntivo del padding può essere calcolato sottraendo la lunghezza media del cleartext dal valore di pad_length
e moltiplicandolo per 1,33. Il risultato è il sovraccarico medio del padding per record. Questo risultato può quindi essere moltiplicato per il numero di righe per ottenere il sovraccarico totale del padding (usa il numero di null
valori diversi dal totale se preserveNulls
è impostato su). true
PADDING_OVERHEAD = (PAD_LENGTH - AVG_CLEARTEXT_LENGTH) *
1.33 * ROW_COUNT
Ti consigliamo di selezionare il valore minimo pad_length
che racchiude il valore più grande in una colonna. Ad esempio, se il valore più grande è 50 byte, è sufficiente un valore pad_length
di 50. Un valore superiore a tale valore aggiungerà solo un sovraccarico di archiviazione aggiuntivo.
Il padding fisso non aggiunge alcun sovraccarico di calcolo significativo.
Tipo di pad max
La selezione di un tipo di pad max
è una misura di tutela della privacy per nascondere la lunghezza dei dati contenuti all'interno di una colonna. Questo viene fatto riempiendo tutti i cleartext al valore più grande nella colonna più quello aggiuntivo pad_length
prima che venga crittografato. In genere, il max
padding offre le stesse garanzie del fixed
padding per un singolo set di dati, pur consentendo di non conoscerne il più grande cleartext valore nella colonna. Tuttavia, il max
padding potrebbe non fornire le stesse garanzie di privacy del fixed
padding tra gli aggiornamenti, perché il valore massimo nei singoli set di dati potrebbe essere diverso.
Ti consigliamo di selezionare un valore aggiuntivo pad_length
di 0 quando usi il padding. max
Questa lunghezza riempie tutti i valori in modo che abbiano le stesse dimensioni del valore più grande nella colonna. Un valore maggiore di quello aggiungerà solo un sovraccarico di archiviazione aggiuntivo.
Se il più grande cleartext il valore è noto per una determinata colonna, ti consigliamo di utilizzare invece il tipo di fixed
pad. L'uso del fixed
padding crea coerenza tra i set di dati aggiornati. L'utilizzo del max
padding fa sì che ogni sottoinsieme di dati venga aggiunto al valore più grande presente nel sottoinsieme.
Dati di esempio per un sealed column
Di seguito è riportato un set di esempio di dati di input e output per a sealed colonna con impostazioni da riprodurre. Altre impostazioni a livello di collaborazione, ad esempio allowCleartext
allowJoinsOnColumnsWithDifferentNames
, allowDuplicates
non influiscono sui risultati e possono essere impostate come true
o false
se si tenta di riprodurre localmente. Sebbene queste siano le impostazioni di base da riprodurre, sealed la colonna non è deterministica e i valori cambieranno ogni volta. L'obiettivo è mostrare i byte in entrata rispetto ai byte in uscita. I pad_length
valori di esempio sono stati scelti intenzionalmente. Mostrano che il fixed
padding produce gli stessi valori del max
padding con le pad_length
impostazioni minime consigliate o quando si desidera un riempimento aggiuntivo.
Esempio di segreto condiviso: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Esempio di ID di collaborazione: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
Argomenti
Tipo di pad: none
Input | null |
preserveNulls |
TRUE |
Output | null |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 0 |
Input | null |
preserveNulls |
FALSE |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSPbNIJfG3iXmu6cbCUrizuV |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 91 |
Input | empty string |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSPEM6qR8DWC2PB2GMlX41YK |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 91 |
Input | abcdefghijklmnopqrstuvwxyz |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9sGL5VLDQeHzh6DmPpyWNuI= |
Deterministico | No |
Byte di input | 26 |
Byte di uscita | 127 |
Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4+n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua+1/JfcVjc= |
Deterministico | No |
Byte di input | 62 |
Byte di uscita | 175 |
Tipo di pad di fixed
(esempio 1)
In questo esempio, pad_length
è 62 e l'input più grande è 62 byte.
Input | null |
preserveNulls |
TRUE |
Output | null |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 0 |
Input | null |
preserveNulls |
FALSE |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoNpATs0GzbnLkor4L+/aSuA= |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 175 |
Input | empty string |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoLB53l07VZpA6OwkuXu29CA= |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 175 |
Input | abcdefghijklmnopqrstuvwxyz |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcutBAcO+Mb9tuU2KIHH31AWg= |
Deterministico | No |
Byte di input | 26 |
Byte di uscita | 175 |
Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4+n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua+1/JfcVjc= |
Deterministico | No |
Byte di input | 62 |
Byte di uscita | 175 |
Tipo di pad di fixed
(esempio 2)
In questo esempio, pad_length
è 162 e l'input più grande è 62 byte.
Input | null |
preserveNulls |
TRUE |
Output | null |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 0 |
Input | null |
preserveNulls |
FALSE |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv/xAySX+xcntotL703aBTBb |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 307 |
Input | empty string |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv84lVaT9Yd+6oQx65/+gdVT |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 307 |
Input | abcdefghijklmnopqrstuvwxyz |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwtX5Hnl+WyfO6ks3QMaRDGSf |
Deterministico | No |
Byte di input | 26 |
Byte di uscita | 307 |
Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4+n8GiRfJNmqdP4/QOQ3cXb/pbvPcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwjkJXQZOgPdeFX9Yr/8alV5i |
Deterministico | No |
Byte di input | 62 |
Byte di uscita | 307 |
Tipo di pad di max
(esempio 1)
In questo esempio, pad_length
è 0 e l'input più grande è 62 byte.
Input | null |
preserveNulls |
TRUE |
Output | null |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 0 |
Input | null |
preserveNulls |
FALSE |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoNpATs0GzbnLkor4L+/aSuA= |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 175 |
Input | empty string |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcoLB53l07VZpA6OwkuXu29CA= |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 175 |
Input | abcdefghijklmnopqrstuvwxyz |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcutBAcO+Mb9tuU2KIHH31AWg= |
Deterministico | No |
Byte di input | 26 |
Byte di uscita | 175 |
Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4+n8GiRfJNmqdP4/QOQ3cXb/pbvPcnnohrHIGSX54ua+1/JfcVjc= |
Deterministico | No |
Byte di input | 62 |
Byte di uscita | 175 |
Tipo di pad di max
(esempio 2)
In questo esempio, pad_length
è 100 e l'input più grande è 62 byte.
Input | null |
preserveNulls |
TRUE |
Output | null |
Deterministico | Yes |
Byte di input | 0 |
Byte di uscita | 0 |
Input | null |
preserveNulls |
FALSE |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfssGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv/xAySX+xcntotL703aBTBb |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 307 |
Input | empty string |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfstGSNWfMRp7nSb7SMX2s3JKLOhK1+7r75Tk+Mx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwv84lVaT9Yd+6oQx65/+gdVT |
Deterministico | No |
Byte di input | 0 |
Byte di uscita | 307 |
Input | abcdefghijklmnopqrstuvwxyz |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6pkx9jy48Fcg1yOPvBqRSZ7oqy1V3UKfYTLEZb/hCz7oaIneVsrcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwtX5Hnl+WyfO6ks3QMaRDGSf |
Deterministico | No |
Byte di input | 26 |
Byte di uscita | 307 |
Input | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 |
preserveNulls |
- |
Output | 01:enc:bm9uY2UwMTIzNDU2Nzg5MG5vbmNlMDEyMzQ1Njc4OTBqfRYZ98t5KU6aWfsteEE1GKEPiRzyh0h7t6OmWMLTWCvO2ckr6plwtH/8tRFnn2rF91bcB9G4+n8GiRfJNmqdP4/QOQ3cXb/pbvPcnkB0xbLWD7zNdAqQGR0rXoSESdW0I0vpNoGcBfv4cJbG0A3h1DvtkSSVc2B80OOGppzdDqhrUVN5wFNyn8vgfPMqDaeJk5bn+8o4WtG/ClipNcjDXvXVtK4vfCohcCA6uwrmwjkJXQZOgPdeFX9Yr/8alV5i |
Deterministico | No |
Byte di input | 62 |
Byte di uscita | 307 |
Risoluzione dei problemi sealed columns
Perché il testo cifrato è nel mio sealed colonne parecchie volte più grandi della dimensione del cleartext che c'è entrato?
Ciò dipende da diversi fattori. Per prima cosa, testo cifrato in un Cleartext la colonna ha sempre una lunghezza di almeno 91 byte. Se i dati di input erano piccoli (ad esempio, l'età dei clienti), mostreranno un aumento significativo delle dimensioni. In secondo luogo, se preserveNulls
fossimo impostati su false
e i dati di input contenessero molti null
valori, ognuno di questi null
valori sarebbe stato trasformato in 91 byte di testo cifrato. Infine, se si utilizza il padding, per definizione i byte vengono aggiunti al cleartext dati prima che vengano crittografati.
La maggior parte dei miei dati in un sealed la colonna è davvero piccola e ho bisogno di usare il padding. Posso semplicemente rimuovere i grandi valori ed elaborarli separatamente per risparmiare spazio?
Non è consigliabile rimuovere valori di grandi dimensioni ed elaborarli separatamente. In questo modo vengono modificate le garanzie sulla privacy fornite dal client di crittografia C3R. Come modello di minaccia, supponiamo che un osservatore possa vedere entrambi i set di dati crittografati. Se l'osservatore vede che un sottoinsieme di dati ha una colonna riempita in modo significativo in più o in meno rispetto a un altro sottoinsieme, può fare inferenze sulla dimensione dei dati in ciascun sottoinsieme. Ad esempio, supponiamo che una fullName
colonna venga aggiunta a un totale di 40 byte in un file e venga aggiunta a 800 byte in un altro file. Un osservatore potrebbe supporre che un set di dati contenga il nome più lungo del mondo (747 byte).
Devo fornire un'imbottitura aggiuntiva quando utilizzo il tipo di imbottitura? max
No. Quando si utilizza il max
padding, si consiglia di impostare il paddingpad_length
, noto anche come padding aggiuntivo oltre il valore più grande nella colonna, su 0.
Posso semplicemente scegliere un valore grande pad_length
quando uso il fixed
padding per evitare di preoccuparmi se il valore più grande si adatta?
Sì, ma l'ampia lunghezza del pad è inefficiente e utilizza più spazio di archiviazione del necessario. Ti consigliamo di controllare quanto è grande il valore più grande e di pad_length
impostarlo su quel valore.
Come faccio a sapere se ho bisogno delle garanzie crittografiche fornite da? preserveNulls
Sfortunatamente, la risposta è che dipende. Come minimo, è Elaborazione crittografica per Clean Rooms necessario verificare in che modo l'preserveNulls
impostazione protegge i dati. Tuttavia, ti consigliamo di fare riferimento ai requisiti di gestione dei dati della tua organizzazione e agli eventuali contratti applicabili alla rispettiva collaborazione.
Perché devo sostenere il sovraccarico di base64?
Per consentire la compatibilità con i formati di file tabulari come CSV, è necessaria la codifica base64. Sebbene alcuni formati di file come Parquet potrebbe supportare rappresentazioni binarie dei dati, è importante che tutti i partecipanti a una collaborazione rappresentino i dati nello stesso modo per garantire risultati di interrogazione corretti.
Risoluzione dei problemi relativi agli aumenti imprevisti delle dimensioni del testo cifrato
Supponiamo che tu abbia crittografato i tuoi dati e che la dimensione dei dati risultanti sia sorprendentemente grande. I passaggi seguenti possono aiutarti a identificare dove si è verificato l'aumento delle dimensioni e quali azioni, se del caso, puoi intraprendere.
Identificare dove si è verificato l'aumento delle dimensioni
Prima di poter risolvere il motivo per cui i dati crittografati sono significativamente più grandi dei cleartext dati, è necessario innanzitutto identificare dove si trova l'aumento delle dimensioni. Cleartext le colonne possono essere tranquillamente ignorate perché sono invariate. Guardate le restanti fingerprint e sealed colonne e scegline una che appaia significativa.
Identificare il motivo per cui si è verificato l'aumento delle dimensioni
A fingerprint colonna o a sealed la colonna potrebbe contribuire all'aumento delle dimensioni.
Argomenti
L'aumento delle dimensioni proviene da un fingerprint colonna?
Se la colonna che contribuisce maggiormente all'aumento dello spazio di archiviazione è una fingerprint colonna, ciò è probabilmente dovuto al cleartext i dati sono piccoli (ad esempio, l'età del cliente). Ciascuno risultante fingerprint il testo cifrato ha una lunghezza di 52 byte. Sfortunatamente, non si può fare nulla per risolvere questo problema su una base. column-by-column Per ulteriori informazioni, consulta Costo generale di base per fingerprint columns i dettagli su questa colonna, incluso il modo in cui influisce sui requisiti di archiviazione.
L'altra possibile causa dell'aumento delle dimensioni di un fingerprint la colonna è l'impostazione di collaborazione,preserveNulls
. Se l'impostazione di collaborazione per preserveNulls
è disabilitata (impostazione predefinita), tutti i null
valori in fingerprint le colonne saranno diventate 52 byte di testo cifrato. Non c'è nulla che si possa fare per questo nell'attuale collaborazione. L'preserveNulls
impostazione viene impostata al momento della creazione di una collaborazione e tutti i collaboratori devono utilizzare la stessa impostazione per garantire risultati di interrogazione corretti. Per ulteriori informazioni sull'preserveNulls
impostazione e su come la sua attivazione influisce sulle garanzie di privacy dei dati, consulta. Elaborazione crittografica per Clean Rooms
L'aumento delle dimensioni è dovuto a sealed colonna?
Se la colonna che contribuisce maggiormente all'aumento dello spazio di archiviazione è una sealed colonna, ci sono alcuni dettagli che potrebbero contribuire all'aumento delle dimensioni.
Se il file cleartext i dati sono piccoli (ad esempio l'età del cliente), ciascuno dei quali risulta sealed il testo cifrato ha una lunghezza di almeno 91 byte. Sfortunatamente, non si può fare nulla per risolvere questo problema. Per ulteriori informazioni, consulta Sovraccarico di base per sealed columns i dettagli su questa colonna, incluso il modo in cui influisce sui requisiti di archiviazione.
La seconda causa principale dell'aumento dello spazio di archiviazione in sealed le colonne sono imbottiture. Il padding aggiunge byte aggiuntivi al cleartext prima che sia crittografato per nascondere la dimensione dei singoli valori in un set di dati. Ti consigliamo di impostare il padding sul valore minimo possibile per il tuo set di dati. Come minimo, pad_length
il fixed
padding deve essere impostato in modo da includere il valore più grande possibile nella colonna. Qualsiasi impostazione superiore a quella non aggiunge ulteriori garanzie di privacy. Ad esempio, se sai che il valore più grande possibile in una colonna può essere di 50 byte, ti consigliamo di pad_length
impostarlo su 50 byte. Tuttavia, se sealed la colonna utilizza il max
padding, si consiglia di pad_length
impostarlo su 0 byte. Questo perché il max
padding si riferisce al padding aggiuntivo oltre il valore più grande nella colonna.
L'ultima possibile causa dell'aumento delle dimensioni in un sealed la colonna è l'impostazione di collaborazione,preserveNulls
. Se l'impostazione di collaborazione per preserveNulls
è disabilitata (impostazione predefinita), tutti i null
valori in sealed le colonne saranno diventate 91 byte di testo cifrato. Non c'è nulla che si possa fare per questo nell'attuale collaborazione. L'preserveNulls
impostazione viene impostata al momento della creazione di una collaborazione e tutti i collaboratori devono utilizzare la stessa impostazione per garantire risultati di interrogazione corretti. Per ulteriori informazioni sulle funzionalità di questa impostazione e su come la sua attivazione influisce sulle garanzie di privacy dei dati, consulta. Elaborazione crittografica per Clean Rooms