షాడోసాక్స్ డాక్యుమెంటేషన్
నావిగేషన్
AEAD
AEAD అసోసియేటెడ్ డేటాతో ప్రామాణీకరించబడిన గుప్తీకరణను సూచిస్తుంది. AEAD సాంకేతికలిపిలు ఏకకాలంలో గోప్యత, సమగ్రత మరియు ప్రామాణికతను అందిస్తాయి. వారు ఆధునిక హార్డ్వేర్పై అద్భుతమైన పనితీరు మరియు శక్తి సామర్థ్యాన్ని కలిగి ఉన్నారు. వినియోగదారులు వీలైనప్పుడల్లా AEAD సాంకేతికలిపిలను ఉపయోగించాలి.
కింది AEAD సాంకేతికలిపిలు సిఫార్సు చేయబడ్డాయి. కంప్లైంట్ షాడోసాక్స్ అమలులు తప్పనిసరిగా AEAD_CHACHA20_POLY1305కి మద్దతివ్వాలి. హార్డ్వేర్ AES త్వరణం ఉన్న పరికరాల కోసం అమలులు AEAD_AES_128_GCM మరియు AEAD_AES_256_GCMలను కూడా అమలు చేయాలి.
పేరు | అలియాస్ | కీ పరిమాణం | ఉప్పు పరిమాణం | నాన్స్ సైజు | ట్యాగ్ సైజు |
AEAD_CHACHA20_POLY1305 | chacha20-ietf-poly1305 | 32 | 32 | 12 | 16 |
AEAD_AES_256_GCM | aes-256-gcm | 32 | 32 | 12 | 16 |
AEAD_AES_128_GCM | aes-128-gcm | 16 | 16 | 12 | 16 |
దయచేసి చూడండి IANA AEAD రిజిస్ట్రీ పేరు పెట్టే పథకం మరియు స్పెసిఫికేషన్ కోసం.
కీ ఉత్పన్నం
మాస్టర్ కీ వినియోగదారు నుండి నేరుగా ఇన్పుట్ చేయబడుతుంది లేదా పాస్వర్డ్ నుండి రూపొందించబడుతుంది.
HKDF_SHA1 అనేది రహస్య కీ, రహస్యం కాని ఉప్పు, సమాచార స్ట్రింగ్ మరియు ఇన్పుట్ రహస్య కీ బలహీనంగా ఉన్నప్పటికీ క్రిప్టోగ్రాఫికల్గా బలంగా ఉండే సబ్కీని ఉత్పత్తి చేసే ఫంక్షన్.
HKDF_SHA1(కీ, ఉప్పు, సమాచారం) => సబ్కీ
సమాచార స్ట్రింగ్ ఉత్పత్తి చేయబడిన సబ్కీని నిర్దిష్ట అప్లికేషన్ సందర్భానికి బంధిస్తుంది. మా విషయంలో, ఇది కోట్లు లేకుండా స్ట్రింగ్ “ss-subkey” అయి ఉండాలి.
మేము HKDF_SHA1ని ఉపయోగించి ముందుగా షేర్ చేసిన మాస్టర్ కీ నుండి ప్రతి సెషన్ సబ్కీని పొందుతాము. ముందుగా షేర్ చేసిన మాస్టర్ కీ జీవితాంతం ఉప్పు తప్పనిసరిగా ప్రత్యేకంగా ఉండాలి.
ప్రామాణీకరించబడిన ఎన్క్రిప్షన్/డిక్రిప్షన్
AE_encrypt అనేది ఒక రహస్య కీ, రహస్యం కాని నాన్స్, సందేశం మరియు సాంకేతికత మరియు ప్రమాణీకరణ ట్యాగ్ని ఉత్పత్తి చేసే ఒక ఫంక్షన్. ప్రతి ఆహ్వానంలో ఇచ్చిన కీ కోసం నాన్స్ తప్పనిసరిగా ప్రత్యేకంగా ఉండాలి.
AE_encrypt(కీ, నాన్స్, మెసేజ్) => (సిఫర్టెక్స్ట్, ట్యాగ్)
AE_decrypt అనేది ఒక రహస్య కీ, నాన్-సీక్రెట్ నాన్స్, సైఫర్టెక్స్ట్, ప్రామాణీకరణ ట్యాగ్ని తీసుకుని, అసలు సందేశాన్ని ఉత్పత్తి చేసే ఒక ఫంక్షన్. ఇన్పుట్లో ఏదైనా ట్యాంపర్ చేయబడితే, డిక్రిప్షన్ విఫలమవుతుంది.
AE_decrypt(కీ, నాన్స్, సాంకేతికలిపి, ట్యాగ్) => సందేశం
TCP
AEAD ఎన్క్రిప్టెడ్ TCP స్ట్రీమ్ ప్రతి సెషన్ సబ్కీని పొందేందుకు యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన ఉప్పుతో ప్రారంభమవుతుంది, దాని తర్వాత ఎన్ని ఎన్క్రిప్ట్ చేయబడిన భాగాలు ఉంటాయి. ప్రతి భాగం క్రింది నిర్మాణాన్ని కలిగి ఉంటుంది:
[ఎన్క్రిప్టెడ్ పేలోడ్ పొడవు][పొడవు ట్యాగ్][ఎన్క్రిప్టెడ్ పేలోడ్][పేలోడ్ ట్యాగ్]
పేలోడ్ పొడవు 2-బైట్ పెద్ద-ఎండియన్ సంతకం చేయని పూర్ణాంకం 0x3FFF వద్ద క్యాప్ చేయబడింది. అధిక రెండు బిట్లు రిజర్వ్ చేయబడ్డాయి మరియు తప్పనిసరిగా సున్నాకి సెట్ చేయాలి. కాబట్టి పేలోడ్ 16*1024 – 1 బైట్లకు పరిమితం చేయబడింది.
మొదటి AEAD ఎన్క్రిప్ట్/డీక్రిప్ట్ ఆపరేషన్ 0 నుండి ప్రారంభమయ్యే గణనను ఉపయోగిస్తుంది. ప్రతి ఎన్క్రిప్ట్/డీక్రిప్ట్ ఆపరేషన్ తర్వాత, నాన్స్ సంతకం చేయని లిటిల్-ఎండియన్ పూర్ణాంకం వలె ఒకదానితో పెంచబడుతుంది. ప్రతి TCP భాగం రెండు AEAD ఎన్క్రిప్ట్/డీక్రిప్ట్ ఆపరేషన్లను కలిగి ఉంటుందని గమనించండి: ఒకటి పేలోడ్ పొడవు కోసం మరియు మరొకటి పేలోడ్ కోసం. అందువల్ల ప్రతి భాగం నాన్స్ను రెండుసార్లు పెంచుతుంది.
TCP
AEAD ఎన్క్రిప్టెడ్ TCP స్ట్రీమ్ ప్రతి సెషన్ సబ్కీని పొందేందుకు యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన ఉప్పుతో ప్రారంభమవుతుంది, దాని తర్వాత ఎన్ని ఎన్క్రిప్ట్ చేయబడిన భాగాలు ఉంటాయి. ప్రతి భాగం క్రింది నిర్మాణాన్ని కలిగి ఉంటుంది:
[ఎన్క్రిప్టెడ్ పేలోడ్ పొడవు][పొడవు ట్యాగ్][ఎన్క్రిప్టెడ్ పేలోడ్][పేలోడ్ ట్యాగ్]
పేలోడ్ పొడవు 2-బైట్ పెద్ద-ఎండియన్ సంతకం చేయని పూర్ణాంకం 0x3FFF వద్ద క్యాప్ చేయబడింది. అధిక రెండు బిట్లు రిజర్వ్ చేయబడ్డాయి మరియు తప్పనిసరిగా సున్నాకి సెట్ చేయాలి. కాబట్టి పేలోడ్ 16*1024 – 1 బైట్లకు పరిమితం చేయబడింది.
మొదటి AEAD ఎన్క్రిప్ట్/డీక్రిప్ట్ ఆపరేషన్ 0 నుండి ప్రారంభమయ్యే గణనను ఉపయోగిస్తుంది. ప్రతి ఎన్క్రిప్ట్/డీక్రిప్ట్ ఆపరేషన్ తర్వాత, నాన్స్ సంతకం చేయని లిటిల్-ఎండియన్ పూర్ణాంకం వలె ఒకదానితో పెంచబడుతుంది. ప్రతి TCP భాగం రెండు AEAD ఎన్క్రిప్ట్/డీక్రిప్ట్ ఆపరేషన్లను కలిగి ఉంటుందని గమనించండి: ఒకటి పేలోడ్ పొడవు కోసం మరియు మరొకటి పేలోడ్ కోసం. అందువల్ల ప్రతి భాగం నాన్స్ను రెండుసార్లు పెంచుతుంది.