Revault పెద్ద ఫైల్ను సుమారు 5 MiB సెగ్మెంట్లుగా ఎన్క్రిప్ట్ చేస్తుంది, ప్రతిదానికి దాని సొంత ఆథెంటికేషన్ ట్యాగ్ ఉంటుంది, కాబట్టి మొత్తం ఫైల్ ఒకేసారి మెమరీలో ఉండాల్సిన అవసరం లేదు. వెబ్ యాప్లో 1 GiB వరకు ఫైల్స్కు అవకాశం కల్పించేది ఇదే.
మొత్తం ఫైల్ను ఒకేసారి ఎందుకు ఎన్క్రిప్ట్ చేయకూడదు?
పెద్ద ఫైల్లకు పెద్ద మొత్తంలో మెమరీ అవసరం కాకూడదు. Revault ఫైల్లను సుమారు 5 MiB సెగ్మెంట్లుగా చదువుతుంది, ప్రతి సెగ్మెంట్ను బ్రౌజర్లో ఎన్క్రిప్ట్ చేస్తుంది, సైఫర్టెక్స్ట్ను IndexedDBలో స్టేజ్ చేస్తుంది. అసలు ఫైల్ను ఎప్పుడూ ఒకే పెద్ద బఫర్లోకి చదవదు.
సెగ్మెంట్లలో పని చేయడం వల్ల, అంతరాయం కలిగిన అప్లోడ్ మొత్తం ఫైల్ను మళ్లీ ఎన్క్రిప్ట్ చేయకుండా, ఇప్పటికే స్టేజ్ చేసిన సైఫర్టెక్స్ట్ నుంచి కొనసాగవచ్చు.
సెగ్మెంట్ క్రమాన్ని, సంపూర్ణతను ఏది రక్షిస్తుంది?
ప్రతి ఫైల్కు వాల్ట్ మాస్టర్ కీ నుంచి HKDFతో రూపొందించిన సొంత ఎన్క్రిప్షన్ కీ ఉంటుంది. డెరివేషన్ సందర్భంలో వాల్ట్, ఫైల్ ఐడెంటిఫైయర్లు, ఫైల్ బైట్ పొడవు, సెగ్మెంట్ పరిమాణం ఉంటాయి.
ప్రతి సెగ్మెంట్ 12-బైట్ నాన్స్, ఆ ఫైల్ కోసం ఎంచుకున్న యాదృచ్ఛిక ప్రిఫిక్స్ను, నాలుగు-బైట్ సెగ్మెంట్ కౌంటర్ను, చివరి సెగ్మెంట్ను సూచించే ఫ్లాగ్ను కలుపుతుంది. సెగ్మెంట్లు 128-బిట్ GCM ట్యాగ్లను కలిగి ఉంటాయి. సెగ్మెంట్లు మార్చబడినా, సవరించబడినా లేదా కత్తిరించబడినా ధృవీకరణ విఫలమవుతుంది.
అప్లోడ్కు అంతరాయం కలిగితే ఏమవుతుంది?
ఎన్క్రిప్షన్ పూర్తయ్యాక, పేజీ రిఫ్రెష్ తర్వాత కూడా కాష్ చేసిన సైఫర్టెక్స్ట్ నుండి నెట్వర్క్ అప్లోడ్లు కొనసాగవచ్చు. మళ్లీ ప్రయత్నాలు పాత నాన్స్లతో కొత్త సోర్స్ను ఎన్క్రిప్ట్ చేయకుండా, అవే ఎన్క్రిప్టెడ్ బైట్లను పంపుతాయి. ఎన్క్రిప్షన్కే అంతరాయం కలిగితే, ఆ అసంపూర్ణ అప్లోడ్ను రద్దు చేసి, కొత్త ఫైల్ గుర్తింపుతో మళ్లీ మొదలుపెట్టండి.
డౌన్లోడ్లు ఎలా ధృవీకరించబడతాయి?
డౌన్లోడ్లు ప్రతి సెగ్మెంట్ను విడుదల చేసే ముందు ధృవీకరిస్తాయి. ఫైల్ స్ట్రీమ్ అవుతున్నప్పుడే తనిఖీ జరుగుతుంది కాబట్టి, డౌన్లోడ్ చివర్లో లోపం వస్తే అసంపూర్ణ ఫైల్ మిగిలిపోవచ్చు, కాబట్టి దానిపై ఆధారపడే ముందు డౌన్లోడ్ విజయవంతంగా పూర్తయిందని నిర్ధారించుకోండి.
పరిమితులు ఏమిటి?
వెబ్ యాప్లో ప్రతి ఫైల్ 1 GiB వరకు ఉండవచ్చు. ఇమేజ్, వీడియో ప్రివ్యూలకు వేరే మెమరీ పరిమితి ఉంటుంది. లోకల్ బ్రౌజర్ స్టోరేజ్ను క్లియర్ చేస్తే అప్లోడ్ను కొనసాగించడానికి అవసరమైన సైఫర్టెక్స్ట్ తొలగిపోవచ్చు.
స్ట్రీమింగ్ ఫార్మాట్ Tink డాక్యుమెంట్ చేసిన AES-GCM-HKDF స్ట్రీమింగ్ నిర్మాణాన్ని అనుసరిస్తుంది, నేటివ్ Web Crypto ప్రిమిటివ్లను ఉపయోగిస్తుంది. ఫైల్ గుర్తింపు, ఆశించిన పొడవు కీ డెరివేషన్ సందర్భంలో కలపబడతాయి; సెగ్మెంట్ కౌంటర్లు, చివరి మార్కర్ క్రమాన్ని, పూర్తిని కాపాడతాయి. ఈ అమలుకు స్వతంత్ర క్రిప్టోగ్రాఫిక్ ఆడిట్ జరగలేదు.
భద్రతా నమూనా పేజీ స్ట్రీమ్ హెడర్, కీ డెరివేషన్తో సహా పూర్తి నిర్మాణాన్ని వివరిస్తుంది.