ഷാഡോസോക്സ് ഡോക്യുമെന്റേഷൻ
നാവിഗേഷൻ
എഇഎഡി
എഇഎഡി അസോസിയേറ്റഡ് ഡാറ്റ വിത്ത് ഓതന്റിക്കേറ്റഡ് എൻക്രിപ്ഷൻ എന്നതിന്റെ അർത്ഥം. 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
ഒരു എഇഎഡി എൻക്രിപ്റ്റ് ചെയ്ത ടിസിപി സ്ട്രീം ആരംഭിക്കുന്നത് ക്രമരഹിതമായി സൃഷ്ടിച്ച ഉപ്പ് ഉപയോഗിച്ച് ഓരോ സെഷൻ സബ്കീയും, അതിനുശേഷം എത്ര എൻക്രിപ്റ്റ് ചെയ്ത ചങ്കുകളും. ഓരോ ഭാഗത്തിനും ഇനിപ്പറയുന്ന ഘടനയുണ്ട്:
[എൻക്രിപ്റ്റ് ചെയ്ത പേലോഡ് ദൈർഘ്യം][ദൈർഘ്യം ടാഗ്][എൻക്രിപ്റ്റ് ചെയ്ത പേലോഡ്][പേലോഡ് ടാഗ്]
പേലോഡ് ദൈർഘ്യം 2x0FFF-ൽ ക്യാപ് ചെയ്തിരിക്കുന്ന 3-ബൈറ്റ് ബിഗ്-എൻഡിയൻ സൈൻ ചെയ്യാത്ത പൂർണ്ണസംഖ്യയാണ്. ഉയർന്ന രണ്ട് ബിറ്റുകൾ റിസർവ് ചെയ്തിരിക്കുന്നു, അവ പൂജ്യമായി സജ്ജീകരിക്കണം. അതിനാൽ പേലോഡ് 16*1024 - 1 ബൈറ്റായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.
ആദ്യത്തെ AEAD എൻക്രിപ്റ്റ്/ഡീക്രിപ്റ്റ് ഓപ്പറേഷൻ 0 മുതൽ ആരംഭിക്കുന്ന ഒരു കൗണ്ടിംഗ് നോൺസ് ഉപയോഗിക്കുന്നു. ഓരോ എൻക്രിപ്റ്റ്/ഡീക്രിപ്റ്റ് ഓപ്പറേഷനും ശേഷം, നോൺസ് സൈൻ ചെയ്യാത്ത ലിറ്റിൽ-എൻഡിയൻ പൂർണ്ണസംഖ്യ പോലെ ഒന്നായി വർദ്ധിപ്പിക്കും. ഓരോ TCP ചങ്കിലും രണ്ട് AEAD എൻക്രിപ്റ്റ്/ഡീക്രിപ്റ്റ് പ്രവർത്തനങ്ങൾ ഉൾപ്പെടുന്നു എന്നത് ശ്രദ്ധിക്കുക: ഒന്ന് പേലോഡ് ദൈർഘ്യത്തിനും മറ്റൊന്ന് പേലോഡിനും. അതിനാൽ ഓരോ ചങ്കും ഒന്നല്ല രണ്ടുതവണ വർദ്ധിപ്പിക്കുന്നു.
TCP
ഒരു എഇഎഡി എൻക്രിപ്റ്റ് ചെയ്ത ടിസിപി സ്ട്രീം ആരംഭിക്കുന്നത് ക്രമരഹിതമായി സൃഷ്ടിച്ച ഉപ്പ് ഉപയോഗിച്ച് ഓരോ സെഷൻ സബ്കീയും, അതിനുശേഷം എത്ര എൻക്രിപ്റ്റ് ചെയ്ത ചങ്കുകളും. ഓരോ ഭാഗത്തിനും ഇനിപ്പറയുന്ന ഘടനയുണ്ട്:
[എൻക്രിപ്റ്റ് ചെയ്ത പേലോഡ് ദൈർഘ്യം][ദൈർഘ്യം ടാഗ്][എൻക്രിപ്റ്റ് ചെയ്ത പേലോഡ്][പേലോഡ് ടാഗ്]
പേലോഡ് ദൈർഘ്യം 2x0FFF-ൽ ക്യാപ് ചെയ്തിരിക്കുന്ന 3-ബൈറ്റ് ബിഗ്-എൻഡിയൻ സൈൻ ചെയ്യാത്ത പൂർണ്ണസംഖ്യയാണ്. ഉയർന്ന രണ്ട് ബിറ്റുകൾ റിസർവ് ചെയ്തിരിക്കുന്നു, അവ പൂജ്യമായി സജ്ജീകരിക്കണം. അതിനാൽ പേലോഡ് 16*1024 - 1 ബൈറ്റായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.
ആദ്യത്തെ AEAD എൻക്രിപ്റ്റ്/ഡീക്രിപ്റ്റ് ഓപ്പറേഷൻ 0 മുതൽ ആരംഭിക്കുന്ന ഒരു കൗണ്ടിംഗ് നോൺസ് ഉപയോഗിക്കുന്നു. ഓരോ എൻക്രിപ്റ്റ്/ഡീക്രിപ്റ്റ് ഓപ്പറേഷനും ശേഷം, നോൺസ് സൈൻ ചെയ്യാത്ത ലിറ്റിൽ-എൻഡിയൻ പൂർണ്ണസംഖ്യ പോലെ ഒന്നായി വർദ്ധിപ്പിക്കും. ഓരോ TCP ചങ്കിലും രണ്ട് AEAD എൻക്രിപ്റ്റ്/ഡീക്രിപ്റ്റ് പ്രവർത്തനങ്ങൾ ഉൾപ്പെടുന്നു എന്നത് ശ്രദ്ധിക്കുക: ഒന്ന് പേലോഡ് ദൈർഘ്യത്തിനും മറ്റൊന്ന് പേലോഡിനും. അതിനാൽ ഓരോ ചങ്കും ഒന്നല്ല രണ്ടുതവണ വർദ്ധിപ്പിക്കുന്നു.