Slack-ის პლატფორმაზე დაშიფრული (E2EE) კომუნიკაციის დამყარება დიდი ხანია დეველოპერების ინტერესის საგანია. პროგრამისტმა, რომელმაც პროექტი GitHub-ზე გაასაჯაროვა, აღმოაჩინა, რომ Slack-ის „ვიდეო-ბლოკები“ (Video Blocks) ფაქტობრივად iframe-ებია, რომლებიც არ ახდენენ კონტენტის მკაცრ ვალიდაციას.

ამ აღმოჩენამ მას საშუალება მისცა, შეექმნა აპლიკაცია, რომელიც Slack-ის ინტერფეისს კრიპტოგრაფიული ოპერაციებისთვის იყენებს. სისტემა მუშაობს მომხმარებლის ბრაუზერში არსებული კრიპტო-API-ების საშუალებით, სადაც გასაღებების გენერაცია და დაშიფვრა ადგილობრივად ხდება.

პროცესი შემდეგნაირად გამოიყურება: Slack-ის ბრძანების (/e2ee send) საშუალებით იხსნება მოდული, სადაც მომხმარებელი ადრესატს ირჩევს. შეტყობინების გაგზავნისას, ვიდეო-ბლოკი იტვირთება, როგორც კლიენტური გარემო, სადაც ხდება შეტყობინების დაშიფვრა. შედეგად, სერვერი ვერასდროს ხედავს გაშიფრულ ტექსტს, რადგან ყველა კრიპტოგრაფიული პროცესი უშუალოდ გამგზავნის მოწყობილობაზე სრულდება.

ტექნიკური გამოწვევები

პროექტის განხორციელებისას ავტორმა რამდენიმე მოულოდნელი სირთულე გადალახა. აღმოჩნდა, რომ Slack-ი არ უშვებს ვიდეო-ბლოკებს ეფემერულ (დროებით) შეტყობინებებში, რაც დოკუმენტაციაში არსად იყო აღნიშნული. კრიპტოგრაფიული ნაწილისთვის მან Proton-ის მიერ მხარდაჭერილი openpgpjs ბიბლიოთეკა გამოიყენა, რამაც პროცესი საგრძნობლად გაამარტივა.

მონაცემების შესანახად დეველოპერმა გამოიყენა „slug“-სისტემა, რომელიც აუცილებელ ინფორმაციას KV-ბაზაში ათავსებს. ეს უზრუნველყოფს იმას, რომ სერვერზე მინიმალური მონაცემები ინახება, რაც უსაფრთხოების დამატებით ფენას ქმნის.

რატომ არის ეს მნიშვნელოვანი?

მიუხედავად იმისა, რომ პროექტი „ჰაკერულ“ მიდგომად რჩება და სრულად არ შეესაბამება Slack-ის ოფიციალურ დიზაინის კონსტრუქციებს, ის აჩვენებს თანამედროვე ვებ-ტექნოლოგიების მოქნილობას. ავტორი იმედოვნებს, რომ მსგავსი ფუნქციონალი — დამოუკიდებელი აპლიკაციების გაშვება პლატფორმის შიგნით — უფრო მეტმა სერვისმა უნდა დანერგოს, როგორც ეს უკვე ხდება Discord-ის ან Telegram-ის შემთხვევაში.

პროექტის წყარო კოდი ხელმისაწვდომია GitHub-ზე და ნებისმიერ მსურველს შეუძლია მისი საკუთარ Slack-სამუშაო სივრცეში დაყენება დაახლოებით 5 წუთში.