ஒரு சர்வர் எப்படி நமது ரகசியங்களைச் சேமித்து ஒத்திசைக்க முடியும்? Confidex அதன் விசைகளை எவ்வாறு உருவாக்குகிறது, அவற்றை ஒரு பூட்டில் பாதுகாக்கிறது மற்றும் தரவை குறியாக்க மற்றும் மாற்றங்களைச் சரிபார்க்க அவற்றைப் பயன்படுத்துவோம்.
பூட்டு
தேர்ந்தெடுக்கப்பட்டவரால் மட்டுமே கதவைத் திறக்க முடியும்
தி மேட்ரிக்ஸ் ரீலோடட்
இரகசியத் தரவைச் சேமிப்பதற்காக மெய்நிகர் vault ஐ உருவாக்குகிறோம் என்று கற்பனை செய்து பாருங்கள். பயன்பாடு மூடிய பிறகு அந்தத் தரவை மடிக்கணினியில் வைத்திருக்க வேண்டும் மற்றும் அதை மற்றொரு சாதனத்தில் திறக்க அனுமதிக்க வேண்டும். பெட்டகத்திற்கு அதன் சொந்த விசைகள் தேவைப்படும். கோப்புகளை நகலெடுப்பது வெளியாட்களுக்கு அவற்றின் உள்ளடக்கங்களைப் படிக்கவோ மாற்றவோ வழியில்லாமல் இருக்கும் வகையில் அவற்றைச் சேமிக்க வேண்டும்.
ஒரு lock விசைகளைப் பாதுகாக்கிறது: ஒரு சிறிய மறைகுறியாக்கப்பட்ட கோப்பு. அதைத் திறப்பதற்கு முதன்மை கடவுச்சொல் மற்றும் ரகசியக் குறியீடு secret_key; கோப்பிலேயே இல்லை. காலை செய்தித்தாளில் முழு பூட்டையும் அச்சிடலாம். வாசகர்கள் ஒரு பிரதியைப் பெறுவார்கள், ஆனால் அதை வெளியிடுவது தனிப்பட்ட விசைகளை வெளிப்படுத்தாது.
வெளியாட்கள் இந்தக் கோப்பைப் பெற்று முதன்மை கடவுச்சொல்லைக் கூட கற்றுக்கொண்டார் என்று வைத்துக்கொள்வோம். கடவுச்சொல் மட்டுமே தேவைப்படும் ஒவ்வொரு கணக்கீட்டையும் அவர்கள் இப்போது மீண்டும் செய்ய முடியும், ஆனால் அந்தக் கணக்கீடுகள் பூட்டைத் திறக்கும் விசையை உருவாக்காது: secret_key என்பதும் உள்ளீடு ஆகும். கோப்பில் கடவுச்சொல்லை மட்டும் தனித்தனியாக சரிபார்க்கவில்லை. அதைத் திறக்க இன்னும் தெரியாத ரகசியக் குறியீடு தேவைப்படுகிறது.
அந்த குறியீடு குறியாக்கவியல் சீரற்ற தரவுகளிலிருந்து வருகிறது; ஒரு நபர் அதை கண்டுபிடிப்பதில்லை. secret_key அறியப்படாத வரை, சரியாக யூகிக்கப்பட்ட முதன்மை கடவுச்சொல் கூட பூட்டைத் திறக்காது: தாக்குபவர் இன்னும் சீரற்ற ரகசியத்தைக் கொண்டிருக்கவில்லை. ஒரு பலவீனமான கடவுச்சொல் மட்டுமே சர்வர் நகலை நடைமுறை அகராதி தாக்குதலாக மாற்றாது.
தாக்குபவர் secret_key ஐப் பெற்றால், அவர் முதன்மை கடவுச்சொல் யூகங்களை ஆஃப்லைனில் சோதிக்கலாம். இது விலை உயர்ந்தது, ஆனால் இறுதியில் சிரமம் கடவுச்சொல்லின் வலிமையைப் பொறுத்தது.
விசைகள்
தந்தையர்களே, விசைகள் என்ன செய்கின்றன? விசைகள்... பொருட்களைத் திறக்கவா?
பைரேட்ஸ் ஆஃப் தி கரீபியன் - இறந்த மனிதனின் மார்பு
பயன்பாடு இயக்க முறைமையின் கிரிப்டோகிராஃபிக் ஜெனரேட்டரிலிருந்து 32 ரேண்டம் பைட்டுகளைப் பெற்று, அவற்றை ஒரு விசையாகப் பயன்படுத்தத் தயார்படுத்துகிறது. இந்த தயாரிக்கப்பட்ட பைட்டுகள் தனிப்பட்ட முதன்மை விசை, master_key.
பயன்பாடு எப்போதும் master_key இலிருந்து ஒரே விசைகளைப் பெறுகிறது: ஒரே பைட்டுகளில் ஒரே கணக்கீடுகளை மீண்டும் செய்வது ஒரே முடிவை அளிக்கிறது. எனவே மடிக்கணினி மற்றும் தொலைபேசி ஒரே மாதிரியான விசைகளை மீட்டெடுக்க முடியும். புதிய சாதனத்தில் master_key ஐப் பெற, பயன்பாடு முதலில் முதன்மை கடவுச்சொல் மற்றும் secret_key உடன் பூட்டைத் திறக்க வேண்டும்.
முதல் ஜோடி: குறியாக்கம்
நான் தான் கீமாஸ்டர்.
பேய்பஸ்டர்கள்
மறைகுறியாக்கப்பட்ட தரவைச் சேமிக்க, பயன்பாடு பொது விசையை master_key: secret_key இலிருந்து கணக்கிடுகிறது. இது பெட்டகத்திற்கான தரவை குறியாக்க முடியும், அதே நேரத்தில் மறைகுறியாக்கத்திற்கு master_key தேவைப்படுகிறது.
"பொது" என்பது அல்காரிதத்தில் இந்த விசையின் பங்கை விவரிக்கிறது, அனைவருக்கும் கொடுக்க வேண்டிய கடமை அல்ல. Confidex இல் அது பயனருடன் இருக்கும். பூட்டைத் திறப்பதற்குத் தேவையான இரண்டாவது ரகசியம் இதுவாகும், எனவே இது உள்ளூரில் இருக்கும் மற்றும் நெட்வொர்க்கில் அனுப்பப்படாது. சொந்தமாக, secret_key பெட்டகத்திற்கான தரவை குறியாக்க யாரையாவது அனுமதிக்கிறது, ஆனால் அதை மறைகுறியாக்கவோ அல்லது அதன் சார்பாக மாற்றங்களில் கையெழுத்திடவோ முடியாது.
X25519 என்பது master_key இலிருந்து secret_key ஐக் கணக்கிடும் வழிமுறை. master_key ஐ secret_key இலிருந்து மீட்டெடுப்பது நடைமுறையில் சாத்தியமற்றது. வினாடிக்கு 10^18 வளைவு செயல்பாடுகளைச் செய்யும் ஒரு கற்பனை மீக்கணினியில் கூட, வழக்கமான தாக்குதலுக்கு சராசரியாக சுமார் 2.3 டிரில்லியன் ஆண்டுகள் தேவைப்படும் (SafeCurves மதிப்பீடு).
இரண்டாவது ஜோடி: கையொப்பங்கள்
ஒரே அசல் கையொப்பம் மட்டுமே
உங்களால் முடிந்தால் என்னைப் பிடிக்கவும்
முதல் ஜோடி உள்ளடக்கங்களை மறைக்க உதவுகிறது. பெட்டகத்தின் உரிமையாளர் மாற்றத்தை அங்கீகரித்துள்ளார் என்பதை உறுதிப்படுத்த எங்களுக்கு இப்போது ஒரு வழி தேவை. சேவையகம் கையொப்பங்களையும் சரிபார்க்க முடியும், எனவே நாங்கள் அதற்கு பொது சரிபார்ப்பு விசையை அனுப்ப வேண்டும். முதல் ஜோடியின் பொதுப் பகுதி secret_key ஆகும், இது சர்வர் பெறக்கூடாது. எனவே கையொப்பங்களுக்காக இரண்டாவது, நிரந்தர விசை ஜோடியை உருவாக்குகிறோம்.
மற்றொரு சுதந்திரமான ரகசியத்தைச் சேமிப்பதற்குப் பதிலாக, நாங்கள் master_key இலிருந்து தனிப்பட்ட கையொப்பமிடும் விசையைப் பெற்று அதை signing_key என்று அழைக்கிறோம். தரவு மற்றும் பூட்டை கையொப்பமிட பயன்பாடு அதைப் பயன்படுத்துகிறது. பிற சாதனங்களும் சேவையகமும் உள்ளடக்கங்களைப் படிக்காமல் கையொப்பங்களைச் சரிபார்க்க அதன் பொதுப் பகுதியைப் பயன்படுத்துகின்றன.
இந்த ஜோடியை அதே master_key இலிருந்து மீட்டெடுக்கலாம். பயன்பாடு அதிலிருந்து ஒரு தொடக்க மதிப்பைப் பெறுகிறது: கையொப்பமிடும் விசையை தனித்துவமாக தீர்மானிக்கும் 32 பைட்டுகள்.
வெவ்வேறு வேலைகளுக்கு வெவ்வேறு விசைகளைப் பெற, கணக்கீட்டில் ஒரு நிலையான லேபிளைச் சேர்க்கிறோம்: இங்கே, confidex/vault/ed25519/v1. அதே master_key மற்றும் அதே லேபிள் எப்போதும் ஒரே விசையை உருவாக்கும்.
முதன்மை கடவுச்சொல் இந்த கணக்கீடுகளை உள்ளிடவில்லை. இரண்டு ஜோடிகளும் master_key இன் சீரற்ற பைட்டுகளைச் சார்ந்தது, ஒருவரால் கண்டுபிடிக்கப்பட்ட சரத்தில் அல்ல. இந்த வேறுபாடு பின்னர் முக்கியமானது: கடவுச்சொல் ஏற்கனவே உள்ள விசைகளுக்கான அணுகலைப் பாதுகாக்கும், எனவே விசைகளை மாற்றாமல் அதை மாற்றலாம்.
வழித்தோன்றல் ஹாஷ் அடிப்படையிலான விசை வழித்தோன்றல் செயல்பாட்டைப் பயன்படுத்துகிறது: HKDF, HMAC-based Extract-and-Expand Key Derivation Function. Confidex இதை SHA-256 உடன் பயன்படுத்துகிறது, எனவே HKDF-SHA256 என்று பெயர். இதன் விளைவாக வரும் 32 பைட்டுகள் Ed25519 ஜோடிக்கான seed ஆகும். signing_key இன் பொதுப் பகுதி secret_key ஐ வெளிப்படுத்தாது, எனவே கையொப்பச் சரிபார்ப்பிற்காக அதை சேவையகத்திற்கு அனுப்பலாம்.
பூட்டு கோப்பு என்றால் என்ன, அது என்ன செய்கிறது?
பாட் பே கதவுகளைத் திற, HAL.
ஒரு விண்வெளி ஒடிஸி
மன்னிக்கவும், டேவ். என்னால் அதைச் செய்ய முடியாது என்று பயப்படுகிறேன்.
பூட்டு ஒரு மறைகுறியாக்கப்பட்ட master_key ஐச் சேமிக்கிறது. அதைத் திறக்க முதன்மை கடவுச்சொல் மற்றும் secret_key தேவை. பொதுத் தலைப்பில் வடிவமைப்பு பதிப்பு, வால்ட் அடையாளங்காட்டி, signing_key இன் பொதுப் பகுதி, உப்பு மற்றும் கடவுச்சொல் செயலாக்க அளவுருக்கள் உள்ளன. அக வடிவமைப்பு பதிப்பு master_key உடன் குறியாக்கம் செய்யப்பட்டுள்ளது.
பூட்டை உருவாக்கும் போது, பயன்பாட்டில் ஏற்கனவே master_key உள்ளது, எனவே இது குறியாக்கத்திற்கு முன் secret_key கணக்கிடுகிறது. அதைத் திறக்கும் போது, பயனர் தனித்தனியாக secret_key ஐ வழங்குகிறார்: இது பூட்டின் பொது நகலில் இல்லை.
மறைகுறியாக்கத்திற்குப் பிறகு, பயன்பாடு X25519 ஐப் பயன்படுத்தி master_key இன் பொதுப் பகுதியைக் கணக்கிடுகிறது மற்றும் அது secret_key உடன் பொருந்த வேண்டும். அது signing_key ஐ மீட்டெடுத்து, அதன் பொதுப் பகுதியை ஹெடரில் உள்ள விசையுடன் ஒப்பிடுகிறது. இந்த வழியில், பூட்டு தன்னை சரிபார்க்கிறது.
முதன்மை கடவுச்சொல் யூகத்தை மெதுவாக்க, ஒவ்வொரு முயற்சிக்கும் நேரத்தையும் நினைவகத்தையும் செலவழிக்க வேண்டும். 64 MiB நினைவகம் மற்றும் மூன்று பாஸ்களுடன் Confidex Argon2id ஐப் பயன்படுத்துகிறது. கடவுச்சொல் செயலாக்கமும் சீரற்ற உப்பைப் பயன்படுத்துகிறது. உப்பு இரகசியமானது அல்ல: இது ஒரே கடவுச்சொல்லை வெவ்வேறு பூட்டுகளில் வெவ்வேறு முடிவுகளை உருவாக்குகிறது.
secret_key ஏற்கனவே தெரிந்திருந்தால், கடவுச்சொல் நீளம் தாக்குதலின் அளவை வியத்தகு முறையில் மாற்றுகிறது. 5 சீரற்ற சிறிய லத்தீன் எழுத்துக்களின் 12 மில்லியன் சேர்க்கைகள் உள்ளன, சுமார் 8 பில்லியன் 7, மற்றும் சுமார் 95 குவாட்ரில்லியன் 12. 7 முதல் 12 எழுத்துக்கள் வரை தேடல் இடம் கிட்டத்தட்ட 12 மில்லியன் மடங்கு அதிகரிக்கிறது. கொடுக்கப்பட்ட இயந்திரத்தில் 7 எழுத்துக்களைத் தேடுவதற்கு சராசரியாக ஒரு நாள் எடுத்தால், 5 க்கு இரண்டு நிமிடங்கள் மற்றும் 12 க்கு சுமார் 33,000 ஆண்டுகள் ஆகும்.
Argon2id முடிவு மற்றும் secret_key இலிருந்து ஒரு விசையைப் பெற, confidex/lock/wrap/v1 லேபிளுடன் முன்பு அறிமுகப்படுத்தப்பட்ட HKDF-SHA256 செயல்பாட்டைப் பயன்படுத்துகிறோம். இதன் விளைவாக wrapping_key, பூட்டை குறியாக்கம் செய்யும் விசை.
நாம் master_key ஐ மறைத்து, சேதமடையாமல் பாதுகாக்க வேண்டும். XChaCha20-Poly1305 அதை wrapping_key உடன் குறியாக்குகிறது மற்றும் ஒரு அங்கீகார குறிச்சொல்லை சேர்க்கிறது. குறிச்சொல் மறைக்குறியீட்டை பொது தலைப்புடன் பிணைக்கிறது: தவறான கடவுச்சொல் அல்லது பாதுகாக்கப்பட்ட பைட்டுகளில் மாற்றம் தோல்வியைத் திறக்கும். குறிச்சொல் மற்றும் சீரற்ற ஒற்றை-பயன்பாட்டு மதிப்பு, nonce, சைபர் உரையுடன் சேமிக்கப்படும்.
ஒவ்வொரு முறையும் பூட்டு உருவாக்கப்பட்டு அல்லது மீண்டும் என்க்ரிப்ட் செய்யப்படும் போது, பயன்பாடு புதிய உப்பு மற்றும் nonce ஐப் பெறுகிறது. மறைகுறியாக்கப்பட்ட உள்ளடக்கங்களில் ஒரு பதிப்பு பைட் மற்றும் master_key இன் 32 பைட்டுகள் அடங்கும்; ஒரு 24-பைட் nonce மற்றும் 16-பைட் குறிச்சொல் அவற்றுடன் சேமிக்கப்படும். அல்காரிதத்தின் ஆவணங்கள் கட்டுமானத்தை விவரிக்கிறது.
மீட்டெடுக்கப்பட்ட விசைகளுக்கு இடையில் பொருந்தாதது வேண்டுமென்றே தவறான பூட்டு அல்லது அதை உருவாக்கிய நிரலில் உள்ள பிழையின் விளைவாக இருக்கலாம். குறிச்சொல் சரிபார்க்கப்படும்போது, ரேண்டம் பைட் சிதைவு பொதுவாக முன்னதாகவே கண்டறியப்படும்.
இந்தக் குறிச்சொல்லைச் சரிபார்க்க தேவையான ரகசியங்கள் சர்வரில் இல்லை. பூட்டை மாற்ற, பயன்பாடு signing_key உடன் செய்யப்பட்ட கையொப்பத்தைச் சேர்க்கிறது. இது பொது தலைப்பு மற்றும் மறைகுறியாக்கப்பட்ட உள்ளடக்கங்கள் உட்பட முழு முடிக்கப்பட்ட கோப்பையும் உள்ளடக்கியது. சேவையகம் கையொப்பத்தைச் சரிபார்த்து, முதல் பதிவேற்றத்தில், signing_key இன் முழுப் பொதுப் பகுதியையும் உள் வால்ட் அடையாளங்காட்டியையும் பின் செய்யும். இந்த விசைக்கு எதிராக அடுத்தடுத்த மாற்றங்களை இது சரிபார்க்கிறது. பூட்டு மற்றும் மறைகுறியாக்கப்பட்ட தரவு அதே signing_key உடன் கையொப்பமிடப்பட்டு, master_key இலிருந்து மீட்டெடுக்கப்பட்டது.
பெட்டகம்
இப்போது பூட்டை வெளியிடலாம். secret_key மற்றும் master password தெரிந்த ஒருவரால் மட்டுமே master_key ஐப் படிக்க முடியும், அதே நேரத்தில் எவரும் பூட்டுக் கோப்பிலிருந்து பொது கையொப்பமிடும் விசையை எடுத்து, பூட்டு அல்லது தரவின் உள்ளடக்கத்தைப் பார்க்காமல் கையொப்பமிடப்பட்ட தரவைச் சரிபார்க்க முடியும்.
கடவுச்சொல்லைக் கவனியுங்கள், SuperPa55worD. இப்போதைக்கு, நாங்கள் அதைச் சேமிக்க விரும்புகிறோம்: பயன்பாட்டை மூடிய பிறகு, பூட்டுக் கோப்பையும் மறைகுறியாக்கப்பட்ட கடவுச்சொல்லையும் எவரும் பார்க்காமல் SuperPa55worD எங்கும் அனுப்ப முடியும். எங்களிடம் secret_key மற்றும் master password இருக்கும்போது என்க்ரிப்ஷன் மீளமைக்கப்பட வேண்டும். ஒரு சமச்சீர் சைஃபர் அதே விசையுடன் குறியாக்கம் மற்றும் மறைகுறியாக்கம் செய்யலாம். நாம் அந்த விசையை சேமிக்காததால், பூட்டைப் பயன்படுத்தி அதை மீட்டெடுக்க முடியும். நாங்கள் அதை message_key என்று அழைப்போம்.
ஒவ்வொரு புதிய குறியாக்கத்திற்கும் ஒரு தனி message_key ஐப் பெறுவோம். அதன் மீட்டெடுப்பை நாம் இன்னும் ஏற்பாடு செய்ய வேண்டும்: மறைக்குறியீட்டிற்கு அருகில் திறந்த இடத்தில் விசையை வைப்பது நகல் உள்ள எவரும் அனைத்தையும் படிக்க அனுமதிக்கும்.
புதிய சீரற்ற பைட்டுகளிலிருந்து, இந்த குறியாக்கத்திற்காக ஒரு தற்காலிக X25519 ஜோடியை பயன்பாடு உருவாக்குகிறது: record_key. இது record_key இன் தனிப்பட்ட பகுதியையும், பெட்டகத்தின் நிரந்தர பொது விசையான secret_keyஐயும் எடுத்து, பகிரப்பட்ட ரகசியத்தைக் கணக்கிடுகிறது. அந்த ரகசியத்திலிருந்து ஒரு தனிச் செயல்பாடு message_key உருவானது; இந்த விசை நமது கடவுச்சொல்லை குறியாக்குகிறது.
படிக்கும் போது, பயன்பாடு மற்றொரு வழியை எடுக்கும். இது master_key மற்றும் record_key இன் பொதுப் பகுதியைப் பயன்படுத்துகிறது. இந்த இரண்டு விசைகளும் ஒரே பகிரப்பட்ட ரகசியத்தை உருவாக்குகின்றன. கணித ரீதியாக, இரண்டு வழிகளும் வளைவில் உள்ள ஒரே ஆரம்ப புள்ளியை வெவ்வேறு வரிசையில் இரண்டு தனிப்பட்ட எண்களால் பெருக்குகின்றன. ஆர்டர் முடிவை மாற்றாது. எனவே record_key இன் தனிப்பட்ட பகுதியை வைத்திருக்காமல் மறைகுறியாக்க விசையை மீட்டெடுக்கலாம்.
இரண்டு பொது விசைகளிலிருந்து இந்த ரகசியத்தைப் பெறுவது நடைமுறையில் சாத்தியமற்றது: எந்த வழியிலும் தொடர்புடைய தனிப்பட்ட விசை தேவை. பொது புள்ளிகள் அவற்றை உருவாக்கிய தனிப்பட்ட எண்களை திறமையாக மீட்டெடுக்க அனுமதிக்கவில்லை. இந்த கணித தந்திரம் பெட்டகத்தின் பாதுகாப்பை உறுதிப்படுத்துகிறது. ஆனால், யாரோ ஒருவர் நமது பூட்டை அதனுடன் இணைத்து வேறு பெட்டகத்தை வழங்குவதை இது தடுக்காது.
இப்போது நாம் மறைக்குறியீட்டை record_key இன் பொதுப் பகுதியுடன் சேர்த்து சேமிக்கலாம். record_key இன் தனிப்பட்ட பகுதி மற்றும் பயன்படுத்தப்பட்ட message_key ஆகியவை எதிர்கால வாசிப்புக்கு இனி தேவைப்படாது. பின்னர், பயன்பாடு master_key இலிருந்து மறைகுறியாக்க விசையையும், record_key இன் சேமிக்கப்பட்ட பொதுப் பகுதியையும் மீட்டெடுக்கிறது. ஒரு நிரந்தர வால்ட் ரகசியமானது தனித்தனியாக மறைகுறியாக்கப்பட்ட பல மதிப்புகளை மறைகுறியாக்க முடியும், ஒவ்வொன்றும் அதன் சொந்த message_key தேவைப்படும்போது மீட்டெடுக்கப்படும்.
உரையை மறைப்பது போதாது: அதைப் படிக்கும்போது சேதப்படுத்துவதையும் நாம் கண்டறிய வேண்டும். எனவே குறியாக்கம் ஒரு அங்கீகரிப்பு குறிச்சொல்லை சேர்க்கிறது, குறியாக்கம் செய்யப்பட்ட தரவுகளுடன் ஒரு சிறிய மதிப்பு சரிபார்க்கப்பட்டது. காசோலை தோல்வியுற்றால், விண்ணப்பம் முடிவை நிராகரிக்கிறது. இது சீரற்ற அல்லது மாற்றப்பட்ட உரையை வெற்றிகரமாக மறைகுறியாக்கப்பட்ட கடவுச்சொல்லாகக் காட்டக்கூடாது.
ஒரு சமச்சீரற்ற ஜோடி பகிரப்பட்ட ரகசியத்தை நிறுவ உதவும் கட்டுமானத்தை நாங்கள் விவரித்துள்ளோம், அதே நேரத்தில் message_key உள்ளடக்கங்களை குறியாக்குகிறது. இது Hybrid Public Key Encryption அல்லது HPKE என அழைக்கப்படுகிறது, மேலும் இது RFC 9180 இல் குறிப்பிடப்பட்டுள்ளது. Confidex இரகசியத்தை ஒப்புக்கொள்ள X25519ஐயும், விசைகளைப் பெற HKDF-SHA256ஐயும், ஒருமைப்பாடு சரிபார்ப்புடன் குறியாக்கத்திற்கு ChaCha20-Poly1305ஐயும் பயன்படுத்துகிறது. இங்கே, HKDF, record_key மற்றும் master_key ஜோடியைப் பயன்படுத்தி ஒப்புக்கொள்ளப்பட்ட பகிரப்பட்ட ரகசியத்தை எடுக்கிறது; இது Ed25519 seed ஐப் பெறுவதில் இருந்து ஒரு தனி வேலை. RFC 5869 HKDFஐ விவரிக்கிறது.
அடுத்த குறியாக்கத்திற்கு, பயன்பாடு புதிய record_key மற்றும் புதிய HPKE சூழலை உருவாக்குகிறது. message_key மற்றும் nonce ஆகியவற்றின் கலவையை மீண்டும் பயன்படுத்துவது மறைக்குறியீட்டின் பாதுகாப்பை உடைக்கிறது. Confidex இல், விசை மற்றும் nonce ஆகியவை HPKE க்குள் பெறப்பட்டு, ஒரு செய்திக்கு பயன்படுத்தப்பட்டு, பின்னர் சூழல் நிராகரிக்கப்படும்.
ChaCha20 256-பிட் message_keyஐப் பயன்படுத்துகிறது. நேரடியான தாக்குதலை உணர, கற்பனையான சூப்பர் கம்ப்யூட்டர் ஒரு வினாடிக்கு ஒரு பில்லியன் பில்லியன் வேட்பாளர்களை சோதிப்பதை கற்பனை செய்து பாருங்கள். 2²⁵⁶ சாத்தியமான விசைகளைத் தேடுவதற்கு சுமார் 1.8 × 10⁵¹ ஆண்டுகள் ஆகும். RFC 8439 அல்காரிதம் மற்றும் அதன் பகுப்பாய்வை விவரிக்கிறது.
ஒரு பதிவு
எங்களுக்கு மகிழ்ச்சியா?
பல்ப் ஃபிக்ஷன்
கடவுச்சொல்லைச் சேமித்துள்ளோம், ஆனால் இணையதளத்தில் உள்நுழைவதற்கு பொதுவாக ஒரு பயனர்பெயர் மற்றும் முகவரி தேவைப்படும். சில சமயங்களில் அவர்களுக்கு அருகில் ஒரு குறிப்பு தேவைப்படும். இந்த மதிப்புகளை நாம் தனித்தனியாக சேமித்தால், பயன்பாடு எப்படியாவது அவை ஒன்றாக இருப்பதை நினைவில் கொள்ள வேண்டும். இந்த "தாள்களை" ஒரு உறைக்குள் வைப்போம். புலங்களை ஒரு தொகுப்பாக இணைத்து அதை record என்று அழைக்கிறோம்.
ஒரு பதிவில் எந்தப் புலங்களின் கலவையும் இருக்கலாம். பயன்பாடு அவற்றை ஒரு பாக்கெட்டாகச் சேகரித்து, அதை சுருக்கி, நாங்கள் விவரித்த கட்டுமானத்தைப் பயன்படுத்தி முழுவதையும் குறியாக்குகிறது. புல மதிப்புகள், பெயர்கள், வகைகள் மற்றும் குறிச்சொற்கள் அனைத்தும் பாதுகாக்கப்படுகின்றன. இணையதள முகவரியை மாற்றுவது, அதே கடவுச்சொல்லை வைத்துக்கொண்டாலும், புதிய record_key உடன் குறியாக்கம் செய்யப்பட்ட முழு பதிவின் புதிய பதிப்பை உருவாக்குகிறது.
ஹாஷ்-செயின்
உங்கள் திட்டமானது பிளாக்செயினைப் பயன்படுத்த வேண்டுமா? → எண்
XKCD 2267
secret_key தெரிந்த ஒருவர், எங்கள் பெட்டகத்திற்கான என்க்ரிப்ட் செய்யப்பட்ட பதிவைத் தயார் செய்யலாம். எங்களுடையது என ஏற்றுக்கொள்வதைத் தவிர்க்க, பயன்பாடு ஒவ்வொரு பதிவுப் பதிப்பிலும் signing_key உடன் கையொப்பமிடுகிறது. இந்த விசை இல்லாமல், சேவையகமும் பிற சாதனங்களும் ஏற்றுக்கொள்ளும் கையொப்பத்துடன் ஒரு பதிப்பை வெளியாட்களால் உருவாக்க முடியாது.
மறைகுறியாக்கப்பட்ட பதிப்பிற்குத் தொடர்புடைய சில தகவல்கள் தேவை: அது எந்த வால்ட் மற்றும் ரெக்கார்டுக்கு சொந்தமானது, எப்போது மாறியது மற்றும் அதற்கு முந்தைய பதிப்புகள். இது பொதுத் தலைப்பாக அமைகிறது. இது கடவுச்சொல்லைக் கொண்டிருக்கவில்லை, ஆனால் அதற்கு இன்னும் பாதுகாப்பு தேவை: இல்லையெனில், மறைக்குறியீட்டைத் தொடாமல் யாரேனும் பொருள்களின் உரிமையையும் உறவுகளையும் மாற்றலாம். பயன்பாடு துல்லியமான தலைப்பு பைட்டுகளை சைபர் உரையுடன் கையொப்பமிடுகிறது. கையொப்பமிடப்பட்ட தரவை மாற்றுவது கையொப்பத்தை செல்லாததாக்குகிறது.
சேவையகம் சீல் செய்யப்பட்ட பார்சல்களின் கிடங்கை ஒத்திருக்கிறது. இது தலைப்பு, மறைகுறியாக்கப்பட்ட உள்ளடக்கங்கள் மற்றும் கையொப்பத்தைப் பார்க்கிறது, ஆனால் கடவுச்சொல்லை உள்ளே பார்க்கவில்லை, மேலும் பெறுநர் நகரத்தில் இருக்கிறார் என்பதை அறியும். இது signing_key இன் பின் செய்யப்பட்ட பொதுப் பகுதியின் கையொப்பத்தைச் சரிபார்த்து, புதிய பதிப்பை ஏற்க வேண்டுமா என்பதைத் தீர்மானிக்கிறது. இதற்கு முதன்மை கடவுச்சொல் அல்லது secret_key அல்லது எந்த தனிப்பட்ட விசையும் தேவையில்லை. படிக்கும் போது, கிளையன்ட் அதே கையொப்பத்தைச் சரிபார்த்து, பின்னர் HPKE அங்கீகார குறிச்சொல்லைப் பயன்படுத்தி, மறைகுறியாக்கத்தின் போது உள்ளடக்கங்களுக்கும் தலைப்புக்கும் இடையே உள்ள பிணைப்பை மீண்டும் சரிபார்க்கிறது.
கையொப்பம் பதிப்புகளுக்கு இடையிலான இணைப்புகளையும் பாதுகாக்கிறது. சரியான தலைப்பு மற்றும் சைபர் டெக்ஸ்ட் பைட்டுகளின் SHA-256 ஹாஷ் பதிப்பின் அடையாளங்காட்டியாக மாறும். அடுத்த பதிப்பின் தலைப்பு முந்தைய பதிப்பின் அடையாளங்காட்டியைக் கொண்டுள்ளது. இணையதள கடவுச்சொல்லை மாற்றும்போது, இந்த இணைப்பின் மூலம் அப்ளிகேஷன் புதிய பொருளை உருவாக்கி கையொப்பமிடுகிறது. பழைய பொருளும் அதன் கையொப்பமும் மாறாமல் இருக்கும். புதிய பதிப்பின் கையொப்பத்தைப் பாதுகாக்கும் போது முன்னோடியை மாற்றுவது தோல்வியடையும். இரண்டு சாதனங்கள் சுயாதீனமான மாற்றங்களைச் செய்தால், இரண்டு கிளைகளும் உயிர்வாழும்; இணைக்கப்பட்ட பதிப்பு இரண்டையும் குறிக்கலாம்.
பிளாக்செயின் நினைவிருக்கிறதா? அங்கே அது :-).
பொதுத் தலைப்பு, டிக்ரிப்ட் செய்யாமல் இணைப்புகளைச் சரிபார்க்க உதவுகிறது, ஆனால் சில தகவல்கள் தெரியும். சேவையகமானது அடையாளங்காட்டிகள், பதிப்பு இணைப்புகள், கிளையன்ட் வழங்கிய மாற்ற நேரம், புலங்களின் எண்ணிக்கை மற்றும் ஒவ்வொரு புல மதிப்பின் குறியிடப்பட்ட அளவும் ஆகியவற்றை அறிந்திருக்கும். குறியாக்கம் பதிவின் உள்ளடக்கங்களை மறைக்கிறது, இந்த கட்டமைப்பு தகவல் அல்ல.
ஒத்திசை
“தரவு கசிவு அல்ல, இலவச விநியோகிக்கப்பட்ட காப்புப்பிரதி.”
இணைய நினைவு.
பல சாதனங்களில் வேலை செய்ய, அவற்றுக்கிடையேயான பூட்டு மற்றும் பதிவு வரலாற்றை மாற்ற வேண்டும். பொருளின் வடிவம் மாறாது: உள்நாட்டில் சேமிக்கப்பட்ட அதே மறைகுறியாக்கப்பட்ட பைட்டுகள் மற்றும் கையொப்பங்களை மாற்றுவோம்.
கைமுறையாக மாற்றுவதற்கு, பயன்பாடு பூட்டு, உள்நாட்டில் சேமிக்கப்பட்ட அனைத்து மறைகுறியாக்கப்பட்ட பதிவு பதிப்புகள் மற்றும் கையொப்பமிடப்பட்ட கோப்பு பட்டியல் ஆகியவற்றைக் கொண்ட ZIP காப்பகத்தை உருவாக்குகிறது. கடவுச்சொல் அல்லது secret_key சேர்க்கப்படவில்லை. மற்றொரு சாதனத்தில், பயன்பாடு முதலில் பூட்டைத் திறக்கிறது, பின்னர் கையொப்பங்களைச் சரிபார்த்து, பதிவுகளை மறைகுறியாக்குகிறது மற்றும் உள்ளூர் வால்ட் நகலை மீட்டெடுக்கிறது. இந்த பெட்டகம் இதுவரை இல்லாத சாதனத்திற்காக இறக்குமதி செய்யப்படுகிறது; இது ஏற்கனவே உள்ள நகலுடன் வரலாற்றை இணைக்காது.
ஒரு ஒத்திசைவு சேவையகம் வேலை செய்யும் நகல்களுக்கு இடையில் மாற்றங்களை மாற்றுகிறது. முதல் பதிவேற்றத்தில், அது கையொப்பமிடப்பட்ட பூட்டைப் பெற்று, கையொப்பத்தைச் சரிபார்த்து, signing_key இன் பொதுப் பகுதியிலிருந்து பொது பெட்டக முகவரியைக் கணக்கிடுகிறது. இது இந்த விசையையும் தலைப்பிலிருந்து வால்ட் அடையாளங்காட்டியையும் நினைவில் கொள்கிறது: இது சர்வரில் பெட்டகத்தை பதிவு செய்கிறது. அடுத்தடுத்த மாற்றங்கள் இந்த அடையாளங்காட்டியுடன் பொருந்த வேண்டும் மற்றும் அதே விசையிலிருந்து கையொப்பத்தை வைத்திருக்க வேண்டும்.
புதிய சாதனத்திற்கு பெட்டக முகவரி மற்றும் secret_key தேவை, எனவே பயன்பாடு அவற்றை செக்சம் உடன் பரிமாற்றக் குறியீட்டாக இணைக்கிறது. பயனர் இந்த குறியீட்டை சாதனத்திற்கு மாற்றுகிறார் மற்றும் முதன்மை கடவுச்சொல்லை தனித்தனியாக உள்ளிடுகிறார்; பொது முகவரி மட்டுமே சேவையகத்திற்கு அனுப்பப்படும்.
பதிவிறக்கம் செய்யப்பட்ட பூட்டைத் திறந்த பிறகு, பயன்பாடு மீட்டெடுக்கப்பட்ட விசைகளின் பொதுப் பகுதிகளை secret_key மற்றும் தலைப்புடன் ஒப்பிட்டு, பரிமாற்றக் குறியீட்டிற்கு எதிராக கணக்கிடப்பட்ட முகவரியைச் சரிபார்க்கிறது. இது பதிவுகளைச் சரிபார்க்க signing_key இன் சரிபார்க்கப்பட்ட பொதுப் பகுதியைச் சேமிக்கிறது.
ஒத்திசைவின் போது, பயன்பாடு விடுபட்ட பதிப்புகளைப் பெற்று அதன் மாற்றங்களைப் பதிவேற்றுகிறது. சேவையகம் கையொப்பங்கள் மற்றும் முந்தைய பதிப்புகளுக்கான இணைப்புகளைச் சரிபார்த்து, ஏற்றுக்கொள்ளப்பட்ட பொருட்களைச் சேமித்து அவற்றை மற்ற சாதனங்களுக்கு அனுப்புகிறது. பெறப்பட்ட தரவைச் சரிபார்த்தல், அதை மறைகுறியாக்கம் செய்தல் மற்றும் முரண்பாடுகளைத் தீர்ப்பது அனைத்தும் பயனரின் சாதனங்களில் நடக்கும்.
பதிவுக்கு பெயர், மின்னஞ்சல் முகவரி அல்லது தனி கடவுச்சொல் எதுவும் இல்லை. சேவையகம் பொது முகவரி, கையொப்ப சரிபார்ப்பு விசை, பொது தலைப்புகள், பொருளின் அளவுகள் மற்றும் பதிப்பு இணைப்புகளை பார்க்கிறது. இது ஐபி முகவரிகள் மற்றும் கோரிக்கை நேரங்களையும் பார்க்கிறது. முதன்மை கடவுச்சொல், secret_key, தனிப்பட்ட விசைகள் மற்றும் எளிய உரை பதிவு உள்ளடக்கங்கள் பயனரின் சாதனங்களில் இருக்கும். பொது முகவரியை அறிந்த எவரும் மறைகுறியாக்கப்பட்ட பொருட்களைப் பதிவிறக்கலாம், ஆனால் அவற்றைப் படிக்க பயனரின் ரகசியங்கள் தேவை.
இந்தச் சோதனைகள் போலியான பொருட்களைக் கண்டறிகின்றன, ஆனால் சேவையகம் முழுமையான வரலாற்றையும் அதன் சமீபத்திய நிலையையும் காட்டியுள்ளது என்பதை நிரூபிக்கவில்லை. கிளையண்ட் இதுவரை பார்த்திராத கிளையை இது மறைக்கலாம் அல்லது நிலையான பழைய தரவுத்தொகுப்பைத் திருப்பித் தரலாம். ஒரு கையொப்பம் ஒரு தனிப்பட்ட பொருளின் நம்பகத்தன்மையை உறுதிப்படுத்துகிறது, சேவையகத்தின் பதிலின் முழுமையை அல்ல. பயனர் மற்றொரு சாதனத்தில் விடுபட்ட மாற்றங்களைக் கவனிக்கலாம், ஆனால் நிலையான பழைய வரலாறு hash-chain சரிபார்ப்பைக் கடந்து செல்லும்.
முதன்மை கடவுச்சொல்லை மாற்றுதல்
எனவே, உங்கள் புனிதமானவர் தனது கடவுச்சொல்லை மாற்ற விரும்புவாரா?
ஹேக்கர்கள் (1995)
முதன்மை கடவுச்சொல்லை மாற்றுவது பூட்டை மட்டும் மீண்டும் குறியாக்குகிறது; உள்ளே master_key அப்படியே இருக்கும். பதிவுகள், அவற்றின் கையொப்பங்கள், secret_key மற்றும் பெட்டக முகவரி மாறாமல் இருக்கும். புதிய பூட்டு அதே signing_key உடன் கையொப்பமிடப்பட்டுள்ளது.
பழைய பூட்டு நகல் இன்னும் பழைய கடவுச்சொல்லுடன் திறக்கிறது மற்றும் அதே secret_key; கடவுச்சொல்லை மாற்றுவது ஏற்கனவே வெளிப்படுத்தப்பட்ட விசைகளை திரும்பப் பெறாது.
முழுப் படம்
பூட்டு master_key ஐப் பாதுகாக்கிறது, message_key பதிவுகளை என்க்ரிப்ட் செய்கிறது, மேலும் signing_key கையொப்பங்களை உருவாக்குகிறது. ZIP காப்பகங்களும் சேவையகமும் கையொப்பங்களுடன் மறைகுறியாக்கப்பட்ட பொருட்களைப் பெறுகின்றன.