Middle
Ինչպես է իրականացվում հաղորդագրությունների կոդավորումը բրաուզերի և սերվերի միջև:
sobes.tech AI
Պատասխան AI-ից
Բրաուզերի և սերվերի միջև գաղտնագրումը կատարվում է HTTPS պրոտոկոլի միջոցով, որը հանդիսանում է HTTP-ի վերին շերտը SSL/TLS (Secure Sockets Layer / Transport Layer Security) պրոտոկոլների օգտագործմամբ:
Համաձայնեցման գործընթացը (Handshake):
- Client Hello: Բրաուզերը ուղարկում է սերվերին հաղորդագրություն, որը պարունակում է աջակցվող SSL/TLS տարբերակները, կոդավորման ալգորիթմների ցանկը (cipher suites), սեղմման ալգորիթմներ և պատահական թիվ (քարտից):
- Server Hello: Սերվերը ընտրում է լավագույն պրոտոկոլի տարբերակը, կոդավորման հավաքածուն և սեղմման ալգորիթմը, ինչպես նաև ստեղծում է իր պատահական թիվը (սերվերից) և ուղարկում դրանք բրաուզերին՝ իր SSL/TLS սերտիֆիկատով միասին:
- Authentication: Բրաուզերը ստուգում է սերվերի սերտիֆիկատը՝
- Կենտրոնական սերտիֆիկատային կենտրոնի վստահելիությունը (Root CA):
- Սերտիֆիկատի ժամկետը:
- Դոմենի անվան համապատասխանությունը սերտիֆիկատում՝ կայքի հասցեին:
- Սերտիֆիկատի չեղարկման ցանկում չլինելը (CRL կամ OCSP):
- Premaster Secret: Բրաուզերը ստեղծում է պատահական թիվ (premaster secret), այն կոդավորում է սերվերի բացահայտ բանալով (սերտիֆիկատից) և ուղարկում սերվերին:
- Session Key Generation: Երկուսն էլ՝ բրաուզերը և սերվերը, օգտագործում են հաճախորդային (Client Random), սերվերային (Server Random) պատահական թվերը և premaster secret-ը՝ սեսիայի բանալին (session key) ստեղծելու համար:
- Change Cipher Spec: Բրաուզերը ուղարկում է սերվերին հաղորդագրություն, որը տեղեկացնում է սեսիայի բանալու օգտագործման անցման մասին:
- Finished: Բրաուզերը ուղարկում է սերվերին բոլոր նախորդ հաղորդագրությունների հեշը՝ սեսիայի բանալով կոդավորված, որը ստուգում է ռուկովի ճշգրտությունը:
- Change Cipher Spec: Սերվերը ուղարկում է բրաուզերին հաղորդագրություն՝ անցնելու կոդավորված կապի:
- Finished: Սերվերը ուղարկում է բրաուզերին բոլոր նախորդ հաղորդագրությունների հեշը՝ սեսիայի բանալով կոդավորված:
Հաջող ռուկովից հետո, բոլոր տվյալների փոխանցումները բրաուզեր և սերվեր միջև կատարվում են սիմետրիկ կոդավորմամբ՝ ստեղծված սեսիայի բանալու հիման վրա: Սիմետրիկ կոդավորումը շատ ավելի արդյունավետ է, քան ասիմետրիկը, ինչը այն դարձնում է հարմար մեծ ծավալների տվյալների կոդավորման համար:
Օգտագործվող ալգորիթմներ (օրինակ):
- Ասիմետրիկ կոդավորում (սեսիայի բանալի փոխանակման համար): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH):
- Սիմետրիկ կոդավորում (տվյալների կոդավորման համար): AES, 3DES, ChaCha20:
- Հեշավորում (հաղորդագրությունների ամբողջականության ստուգման համար): SHA-256, SHA-384: