1. Ներածություն

Konstruct-ը ծայրից ծայր գաղտնագրմամբ մեսենջեր է, որը կառուցված է Signal Protocol-ի վրա և կողմնորոշված է դեպի գաղտնիությունը։ Սույն քաղաքականությունը բացատրում է, թե հատկապես ինչ տվյալներ ենք մենք հավաքում, ինչու, և ինչ չենք հավաքում։ Konstruct-ը սկզբից ևեթ նախագծված է այնպես, որ մեզ մոտ Ձեր մասին տվյալները լինեն հնարավորինս քիչ։

Հիմնական սկզբունք. մենք հավաքում ենք գաղտնագրված հաղորդագրությունների երթուղավորման համար անհրաժեշտ բացարձակ նվազագույն տվյալները։ Ձեր հաղորդագրությունների բովանդակությունը գաղտնագրված է ծայրից ծայր՝ մեր սերվերները չեն կարող այն կարդալ, և մենք դրան չենք փորձում։

2. Ինչ տվյալներ ենք հավաքում

2.1 Հաշվի նույնացուցիչ

Konstruct-ը չի պահանջում հեռախոսահամար, էլեկտրոնային փոստի հասցե, գաղտնաբառ կամ իրական անուն։

Հաշիվ ստեղծելու և Konstruct-ն օգտագործելու համար Ձեզ նույնականացնելու հնարավորություն տվող որևէ տեղեկություն պահանջվում չէ։

2.2 Գաղտնագրական բանալիների հավաքածու

Որպեսզի աշխատի Signal Protocol-ի բանալիների փոխանակումը, Ձեր սարքը գեներացնում և սերվեր է վերբեռնում հետևյալ բաց բանալիները։ Համապատասխան գաղտնի բանալիները երբեք չեն լքում սարքը և պահվում են հարթակի պաշտպանված բանալիների պահոցում (iOS Keychain, Android Keystore)։

Բանալի Տեսակ Պահվում է սերվերում Նշանակություն
Identity Public Key X25519 (երկարաժամկետ) Այո, մշտապես Նույնականացնում է Ձեր սարքը. օգտագործվում է X3DH handshake-ում
Signed PreKey X25519 (միջնաժամկետ) Այո, պարբերաբար ռոտացվում է Օգտագործվում է X3DH բանալիների համաձայնեցման մեջ
Միանգամյա նախաբանալիներ (OTPK) X25519 (էֆեմերային) Այո, մինչև օգտագործումը Ծախսվում են մեկական՝ մեկ սեսիայի համար՝ կատարյալ ապագա գաղտնիության (perfect forward secrecy) նպատակով
Գաղտնի բանալիներ — Երբեք Բոլոր գաղտնի բանալիները մնում են միայն Ձեր սարքում

Սերվերը հետևում է, թե քանի միանգամյա նախաբանալի է մնացել, և խնդրում է սարքին համալրել պաշարը, երբ դրանք քիչ են դառնում։ Այն բանից հետո, երբ OTPK-ն օգտագործվել է սեսիա հաստատելու համար, այն անվերադարձ ջնջվում է սերվերից։

2.3 Չառաքված հաղորդագրությունների հերթ

Երբ Դուք հաղորդագրություն եք ուղարկում, այն գաղտնագրվում է Ձեր սարքում՝ փոխանցումից առաջ։ Սերվերը գաղտնագրված հաղորդագրությունը պահում է ստացողի փոստարկղում։ Այն չի ջնջում հաղորդագրությունը միայն այն պատճառով, որ սարքը հայտնել է ստանալու մասին. փոստարկղերը մաքրվում են միայն պահպանման ժամկետով՝ յուրաքանչյուրն ունի ծավալի սահման, և մոտավորապես 7 օրից հին ամեն ինչ ջնջվում է։ Ուստի արդեն առաքված հաղորդագրությունը կարող է մնալ մեր սերվերում՝ գաղտնագրված և մեզ համար անընթեռնելի, մինչև մոտավորապես 7 օր։

Ինչ է պահվում փոստարկղում (մինչև ժամկետի լրանալը)՝

Եթե Ձեր սարքը օֆլայն է, հաղորդագրությունները սպասում են փոստարկղում մինչև հաջորդ միացումը։ Մոտավորապես 7 օրվա ընթացքում չվերցված հաղորդագրությունը ջնջվում է չընթերցված։

Թաքնվածություն՝ ուղարկողի պաշտպանություն (sealed sender). միշտ միացված է օգտատիրոջ համապատասխան տրաֆիկի համար (հաղորդագրություններ, ստացականներ, զանգերի ազդանշանում և այլն. մի քանի սպասարկման ուղիներ ըստ նախագծի բացառված են)։ Ձեր սարքը ծրարից հանում է ուղարկողի User ID-ն և ուղարկողի ստորագրված վկայագիրը կնքում ստացողի նույնականացման բանալու վրա. թե ով է գրել, կարող է իմանալ միայն ստացողը, սերվերը՝ ոչ։ Կնքված ուղարկումների հետ կարող են գնալ Privacy Pass անանուն թոքեններ՝ սպամից պաշտպանվելու համար. թոքենների սերվերային ստուգումը դեռ ներդրվում է։ Ուղարկողի պաշտպանությունը ցանցային մակարդակից չի թաքցնում ո՛չ ուղարկման ժամանակը, ո՛չ չափը, ո՛չ Ձեր IP-հասցեն։

2.4 Կապերը կոնտակտների հետ

Երբ դուք ավելացնում եք կոնտակտ (QR կոդով կամ հրավերի հղումով), սերվերը պահում է այդ կապի գրառումը՝ հաղորդագրությունների երթուղավորումը և հոսքին բաժանորդագրումը որոշելու համար։ Դա թույլ է տալիս Konstruct-ին տեղեկացնել ձեզ, որ ծանոթ կոնտակտը մուտք է գործել ցանց, և բաժանորդագրել ձեզ նրա հաղորդագրությունների հոսքին։ Գրառումը քողարկված է. երկու կողմերը պահվում են որպես հաշվի նույնացուցիչի բանալիավոր հեշ (HMAC-SHA256), այլ ոչ թե բուն նույնացուցիչներ, ուստի տվյալների բազայի արտահոսքը չի տալիս ընթեռնելի սոցիալական գրաֆ։ Արժե ճշգրիտ ասել, թե դա ինչ արժե. բանալին պատկանում է սերվերին, ուստի պաշտպանությունն այստեղ արտահոսքից է, այլ ոչ թե մեզանից։

2.5 Push ծանուցումների թոքեններ

iOS-ում՝ հավելվածի ֆոնային ռեժիմում հաղորդագրությունների մասին ծանուցումներն իրական ժամանակում առաքելու համար (Android-ում push ծառայություններ չկան. հավելվածը պահում է սեփական կապը).

2.6 Սեսիայի նույնականացում

2.7 Ձայնային և տեսազանգեր

Ձայնային և տեսազանգերը պաշտպանված են ծայրից ծայր գաղտնագրմամբ։ Զանգի հաստատումը՝ WebRTC սեսիայի նկարագրությունը (SDP) և ICE կապակցվածության թեկնածուները, փոխանցվում է նույն ծայրից ծայր գաղտնագրված ուղով, ինչ Ձեր նամակագրությունը, ուստի մեր սերվերները չեն կարող այն կարդալ։ Զանգի ձայնն ու պատկերը օգտագործում են WebRTC-ի DTLS-SRTP-ն. քանի որ մեդիայի գաղտնագրման բանալիները փոխանակվում և նույնականացվում են այդ ծայրից ծայր գաղտնագրված ազդանշանման ներսում, մեդիան գաղտնագրված է ծայրից ծայր երկու սարքերի միջև. ո՛չ մեր սերվերները, ո՛չ մեր օգտագործած ռելեները չեն կարող այն վերծանել։ Մեր սերվերը գիտի՝ զանգը սկսվում է որպես ձայնային, թե որպես տեսազանգ, որպեսզի ստացողի հեռախոսը ցուցադրի ճիշտ տեսակի զանգ. տեսախցիկի միացումն ու անջատումը զանգի ընթացքում նրան չի փոխանցվում։ Ռելեն կարող է տարբերել տեսանյութը ձայնից իր փոխանցած գաղտնագրված տրաֆիկի ծավալով։

Զանգը կապելու համար սարքերը փոխանակում են ցանցային հասցեների թեկնածուներ (WebRTC-ի ստանդարտ ICE)՝ ուղիղ ուղի փնտրելով։ Երբ ուղիղ կապը հնարավոր չէ, գաղտնագրված մեդիան ռելեավորվում է TURN սերվերի միջոցով. ռելեն փոխանցում է միայն գաղտնագրված մեդիա, որը չի կարող կարդալ, բայց տեսնում է մասնակիցների ցանցային հասցեները։ Կապի այդ մետատվյալները անհրաժեշտ են զանգի երթուղավորման համար և չեն կապվում հաղորդագրությունների բովանդակության հետ։ iOS-ում մուտքային զանգերը արթնացնում են հավելվածը 2.5 բաժնի PushKit VoIP թոքենի միջոցով. բուն push-ը զանգի բովանդակություն չի կրում։ Android-ում զանգը գալիս է հավելվածի սեփական կապով՝ առանց push-ի։ TURN սերվերն աշխատում է Նիդեռլանդներում։

2.8 Մեդիա կցորդներ

Երբ դուք ուղարկում եք լուսանկար, տեսանյութ, ֆայլ կամ ձայնային հաղորդագրություն, կցորդը սեղմվում և գաղտնագրվում է Ձեր սարքում (AES-256-GCM՝ յուրաքանչյուր ֆայլի համար թարմ բանալիով) մինչև վերբեռնումը։ Վերծանման բանալին ստացողին է հասնում միայն ծայրից ծայր գաղտնագրված հաղորդագրության ներսում. այն երբեք չի փոխանցվում մեդիա սերվերին և նրա մոտ չի պահվում։ Սերվերը պահում է միայն անթափանց գաղտնագրված բլոբը՝ պատահական media ID-ով, և չի կարող կարդալ դրա բովանդակությունը։

Գաղտնագրված մեդիա օբյեկտները ավտոմատ ջնջվում են վերբեռնումից մոտ 7 օր անց (անկախ այն բանից՝ դրանք ներբեռնվել են, թե ոչ). ստացողի սարքն այդ պատուհանում վերցնում և վերծանում է դրանք։ Մենք մեդիան բաց տեսքով չենք պահում. յուրաքանչյուր օբյեկտի մասին սերվերը գիտի միայն բուն գաղտնագրված բլոբը, նրա նույնացուցիչը, լրացումից հետո չափի դասը, գաղտնագրի հեշը, ինչպես նաև վերբեռնման և ջնջման ժամանակը։

2.9 Ինչ ՉԵՆՔ հավաքում

Հետևյալը ակնհայտորեն չի հավաքվում և չի պահվում.

2.10 IP-հասցեներ և կապի մետատվյալներ

Ցանկացած առցանց ծառայության միանալը ցանցային մակարդակում բացում է Ձեր IP-հասցեն նրա սերվերների առաջ. սա անխուսափելի է, և Konstruct-ը բացառություն չէ։ Սակայն մենք Ձեր հում IP-հասցեն չենք գրանցում մեր տվյալների բազաներում։ Սարքերի գրանցման սահմանափակումների և proof-of-work առաջադրանքների համար օգտագործում ենք միայն հասցեի աղով միակողմանի հեշը։ Հաղորդագրությունների ուղարկման և բանալիների հարցումների հաճախականությունը սահմանափակելու համար սերվերը կարճ ժամանակ պահում է հենց հասցեն (IPv6-ի դեպքում՝ նրա /64 ցանցը) օպերատիվ հիշողության հաշվիչում, որը լրանում է մոտավորապես մեկ րոպեում։ «IP — հաշիվ» համապատասխանություն մենք չենք պահում։

Մենք չենք օգտագործում Ձեր հասցեն և նրա հեշ-պիտակը՝ վարքագծային պրոֆիլներ կառուցելու, դրանք Ձեր հաղորդագրությունների բովանդակության հետ կապելու կամ գովազդի համար փոխանցելու նպատակով։ Սակայն աղով հեշը նվազեցնում է բացահայտումը, այլ ոչ թե կատարյալ անանունացնում. IPv4 հասցեների տարածությունը փոքր է, և գաղտնի աղ ունեցող կողմը դեռ կարող է թեկնածու հասցեներ ստուգել։ Այն հանում է հում հասցեն այն ամենից, ինչ մենք պահում ենք. սա երաշխիք չէ, որ կապի ցանցային ծագումը մեր ենթակառուցվածքը երբեք չի կարող որոշել։

Եթե ցանկանում եք Ձեր ցանցային հասցեն ընդհանրապես հեռացնել ուղուց, կարգավորումներում միացրեք ցենզուրայի պաշտպանությունը կամ օգտագործեք VPN կամ Tor, թեև այն կետը, որը վերջնավորում է Ձեր կապը, միևնույն է տեսնում է դրա երևացող աղբյուր-հասցեն։

3. Պաշտպանություն տրաֆիկի վերլուծությունից

Konstruct-ը կիրառում է լրացում և, iOS-ում, ուղարկման ժամանակի պատահական ջիտեր, որպեսզի ցանցային դիտորդի՝ և մեր սերվերի համար ավելի դժվար լինի չափից կամ ճշգրիտ ժամանակից որոշել, թե ինչ եք ուղարկում։ Հաղորդագրությունները լրացվում են մինչև ֆիքսված չափի բաժիններ։ Կցորդները (լուսանկարներ, տեսանյութեր, ձայնային հաղորդագրություններ, ֆայլեր, պրոֆիլի նկարներ) լրացվում են մինչև չափի դասեր. սերվերը պահում է չափի միջակայքը, այլ ոչ թե ֆայլի ճշգրիտ չափը. ֆայլը մեծանում է առավելագույնը 12 %-ով, սովորաբար մոտ 3 %-ով (ամենափոքր ֆայլերը լրացվում են մինչև 4 ԿԲ)՝ և չի ստանում ֆայլի տեսակը։ Այս միջոցները միացված են լռելյայն և կարգավորում չեն պահանջում։

Մենք միտումնավոր չենք ուղարկում պլանավորված կեղծ ծածկող տրաֆիկ։ Մշտական ծածկույթը պահանջում է միշտ բաց կապ և ժամանակացույցով ուղարկումներ, ինչը սպառում է մարտկոցն ու տրաֆիկը. շարժական հաճախորդը դա չի դիմանա, և դա պարտադրելը կնշանակեր իրական հարմարությունը փոխանակել մետատվյալների թույլ ամրապնդման հետ։ Լրացումն ու ջիտերը (վերևում) մեր շարժական պատասխանն են. մշտական ծածկույթը հնարավոր է միայն միշտ միացված աշխատասեղանի հաճախորդի վրա և մնում է բացառապես աշխատասեղանի տարբերակ, այլ ոչ թե շարժականի խոստում։ Մենք նախընտրում ենք ծածկող տրաֆիկ չառաքել ընդհանրապես, քան հայտարարել մի բան, որը չի աշխատում։

Առանձին՝ ցենզուրայի պաշտպանությունը ցանցային մակարդակի քողարկման շերտ է, որն օգնում է Ձեր կապին միախառնվել սովորական HTTPS տրաֆիկի հետ, երբ ուղիղ TLS-ը արգելափակվում է։ Սա գրաքննությունը շրջանցելու մեխանիզմ է, այլ ոչ թե մետատվյալների թաքցման. ինքնին այն չի խանգարում դիտորդին, ով արդեն տեսնում է Ձեր կապը, եզրակացնել հաղորդագրությունների ժամանակն ու չափը։

4. Պաշտպանություն սպամից՝ Proof of Work

Սպամը կանխելու համար՝ առանց հեռախոսահամարի կամ էլ. փոստի, Konstruct-ը պահանջում է Ձեր սարքից կատարել փոքր Proof of Work հաշվարկ գրանցման ժամանակ, ինչպես նաև ուղարկելիս, եթե գերազանցվել է հաճախականության սահմանաչափը։ Սա հաճախորդի կողմում կատարվող հաշվարկ է. բարեխիղճ օգտագործման համար դրա գինը աննշան է, իսկ զանգվածային սպամը դառնում է հաշվողական առումով թանկ։ Անձնական տվյալներ դրանում չեն օգտագործվում։

5. Ինչպես ենք մենք օգտագործում Ձեր տվյալները

Տվյալներ Նպատակ
User ID Ձեր սարքի նույնականացում և հաղորդագրությունների երթուղավորում
Բաց բանալիների փաթեթ Signal Protocol-ի ծայրից ծայր գաղտնագրման բանալիների փոխանակման ապահովում
Չառաքված հաղորդագրությունների հերթ Գաղտնագրված հաղորդագրությունների պահպանում մինչև առաքումը
Կապերը կոնտակտների հետ Հաղորդագրությունների երթուղավորում և հոսքերին բաժանորդագրումներ
APNs թոքեն Ֆոնային push ծանուցումների առաքում
PushKit VoIP թոքեն Հավելվածի արթնացում զանգի մուտքային հրավերների դեպքում
Սեսիայի թոքեն gRPC կապի նույնականացում

Մենք չենք օգտագործում հավաքված տվյալները գովազդի, պրոֆիլավորման, վերլուծության կամ հաղորդագրությունների փոխանակման ծառայության աշխատանքից դուրս որևէ նպատակով։

6. Տվյալների պահպանում և անվտանգություն

6.1 Ենթակառուցվածք

6.2 Գաղտնագրում

6.3 Ինչ է պահվում Ձեր սարքում

Ձեր սարքը պահում է հաղորդագրությունների ամբողջական պատմությունը տեղայնորեն՝ օպերացիոն համակարգով պաշտպանված պահոցում (iOS-ի տվյալների պաշտպանություն. Android-ում՝ հավելվածի մեկուսացված պահոց, բանալիները՝ Android Keystore-ում)։ Այստեղ ներառված են.

Այս տվյալները Ձեր վերահսկողության տակ են։ Հավելվածը ջնջելը անվերադարձ ջնջում է բոլոր տեղային տվյալները։

6.4 Պահպանման ժամկետներ

Տվյալների տեսակ Պահպանում
Չառաքված հաղորդագրություններ Ջնջվում են պահպանման ժամկետով՝ փոստարկղի ծավալի սահմանաչափ և առավելագույնը ~7 օր, այլ ոչ թե առաքման պահին
Մեդիա կցորդներ (գաղտնագրված) Ավտոմատ ջնջում վերբեռնումից մոտ 7 օր անց (օբյեկտի տարիքով, անկախ ներբեռնումից)
Միանգամյա նախաբանալիներ Ջնջվում են սերվերից օգտագործվելիս
Սեսիայի թոքեններ Մուտքի թոքեն՝ 24 ժամ, թարմացման թոքեն՝ 90 օր. չեղարկվում են դուրս գալիս կամ հաշիվը ջնջելիս
APNs թոքեն Պահվում է մինչև հաշվի ջնջումը կամ թոքենի թարմացումը
PushKit VoIP թոքեն Պահվում է մինչև հաշվի ջնջումը կամ թոքենի թարմացումը
Օգտանվան հեշ և User ID Պահվում են մինչև հաշվի ջնջումը
Signed PreKey Փոխարինվում է ռոտացիայի ժամանակ, հին բանալին ջնջվում է
Կապերը կոնտակտների հետ Առայժմ չեն ջնջվում ո՛չ կոնտակտը ջնջելիս, ո՛չ հաշիվը ջնջելիս (քողարկված գրառումներ, տե՛ս 8.3)

7. Տվյալների փոխանցում և երրորդ կողմեր

Մենք չենք վաճառում և վարձակալությամբ չենք տրամադրում Ձեր տվյալները և չենք փոխանցում դրանք գովազդի, պրոֆիլավորման կամ ծառայության աշխատանքի հետ չկապված որևէ նպատակի համար։ Բուն աշխատանքի համար անհրաժեշտ են ստորև թվարկված մատակարարները. յուրաքանչյուրը ստանում է իր խնդրի համար անհրաժեշտ նվազագույնը, և ոչ մեկը չի ստանում հաղորդագրությունների բովանդակությունը։

7.1 Ենթակառուցվածքի մատակարարներ

7.2 Օրենսդրության պահանջների կատարում

Մենք կարող ենք պարտավորվել բացահայտել տվյալներ իրավասու մարմնի վավեր օրինական կարգադրությամբ։ Սակայն.

8. Ձեր իրավունքները

8.1 Անանուն օգտագործում

Դուք կարող եք օգտվել Konstruct-ից՝ առանց Ձեզ նույնականացնելու հնարավորություն տվող որևէ տեղեկություն հայտնելու։ Ձեր User ID-ն պատահական UUID է, որը տրամադրում է սերվերը. դրանում Ձեր մասին ոչինչ կոդավորված չէ։

8.2 Հասանելիություն Ձեր տվյալներին

Դուք կարող եք ցանկացած պահի պահանջել Ձեր հաշվի հետ կապված ցանկացած մետատվյալների պատճենը՝ գրելով մեզ ստորև նշված հասցեով։

8.3 Հաշվի ջնջում

Դուք կարող եք ջնջել հաշիվը հավելվածի կարգավորումներից։ Ջնջման դեպքում.

Ստացողներին արդեն առաքված հաղորդագրությունները պահվում են միայն տեղայնորեն նրանց սարքերում և առաքումից հետո մեր վերահսկողությունից դուրս են։

8.4 Օգտանուն

Դուք կարող եք ավելացնել, փոխել կամ ջնջել օգտանունը ցանկացած պահի՝ հաշվի կարգավորումներում։

9. Նվազագույն տարիք

Konstruct-ը նախատեսված է 16 տարեկան և ավելի մեծ օգտատերերի համար, ինչը համապատասխանում է App Store-ի 16+ տարիքային վարկանիշին։ Այն հասցեագրված չէ և նախատեսված չէ 16 տարեկանից փոքր անձանց համար, և մենք գիտակցաբար տվյալներ չենք հավաքում այդպիսի անձանց մասին։ Քանի որ Konstruct-ը պահում է միայն վերևում նկարագրված նվազագույն երթուղային մետատվյալները և չի պահում հաղորդագրությունների բովանդակություն, ցանկացած հաշվի հետ կապված տվյալները սահմանափակ են հենց նախագծով։ Եթե Դուք կարծում եք, որ Konstruct-ից օգտվում է 16 տարեկանից փոքր որևէ մեկը, կապվեք մեզ հետ (բաժին 12), և մենք կձեռնարկենք միջոցներ։

10. Ով է պատասխանատու Ձեր տվյալների համար

Konstruct-ը անկախ նախագիծ է, ոչ թե ընկերություն։ GDPR-ի համաձայն տվյալների վերահսկիչը Մաքսիմ Ելիսեևն է՝ նախագծի սպասարկողը. հասցեն նշված է 12-րդ բաժնում։ Konstruct-ը բավարար մասշտաբի չէ Data Protection Officer պահանջելու համար, և այդպիսին նշանակված չէ. 8-րդ բաժնի համաձայն հարցումները գալիս են նույն հասցեին, և դրանց պատասխանում է նույն անձը։ Եթե դա փոխվի՝ կստեղծվի իրավաբանական անձ կամ պատասխանատվությունը կանցնի մեկ ուրիշի, ապա կփոխվի նաև այս բաժինը, իսկ փոփոխության մասին կհայտնենք 11-րդ բաժնում նկարագրված եղանակով։

11. Այս քաղաքականության փոփոխությունները

Էական փոփոխությունների մասին օգտատերերին կծանուցենք՝

Konstruct-ի շարունակական օգտագործումը փոփոխություններից հետո նշանակում է թարմացված քաղաքականության ընդունում։

12. Կոնտակտներ

Գաղտնիության հարցերով, տվյալներ մուտք գործելու հարցումների և ցանկացած կասկածի դեպքում՝

Հակիրճ

Չի պահանջվում ո՛չ հեռախոսահամար, ո՛չ էլ. փոստ Ծայրից ծայր գաղտնագրում (Signal Protocol)
Ամբողջովին անանուն օգտագործումը աջակցվում է Հաղորդագրությունները պահվում են միայն գաղտնագրված և ջնջվում են ժամկետով (մինչև ~7 օր)
Ո՛չ հետևում, ո՛չ վերլուծական SDK-ներ Տրաֆիկի քողարկումը ներկառուցված է
Գաղտնի բանալիները երբեք չեն լքում սարքը Միայն նվազագույն մետատվյալներ
Տվյալների վաճառք երրորդ կողմերին չկա GDPR իրավազորություն (ԵՄ. սերվերը՝ Նիդեռլանդներում, պահուստային պատճենները՝ Գերմանիայում)