უფასო კონფიდენციალურობის ხელსაწყო
დაშიფრეთ ფაილი თქვენს ბრაუზერში.
აირჩიეთ ფაილი და საპაროლო ფრაზა, შემდეგ ჩამოტვირთეთ დაშიფრული ასლი. გამოიყენება AES-256-GCM, ხოლო გასაღები თქვენს ბრაუზერში წარმოიქმნება. არაფერი იტვირთება და გვერდის ერთხელ ჩატვირთვის შემდეგ ხელსაწყო ოფლაინაც მუშაობს. ფორმატი ქვემოთ ბაიტობრივადაა აღწერილი, ამიტომ მხოლოდ ჩვენს სიტყვაზე დაყრდნობა არ გჭირდებათ.
მთლიანად ამ ჩანართში მუშაობს. არაფერი იტვირთება და გვერდის ერთხელ ჩატვირთვის შემდეგ ოფლაინაც მუშაობს.
ნებისმიერი ფაილი. დიდი ფაილები მეხსიერებას საჭიროებს. ქვემოთ იხილეთ შეზღუდვების გულწრფელი აღწერა.
აღდგენა შეუძლებელია. დავიწყებული საპაროლო ფრაზა ნიშნავს, რომ ფაილს ვეღარავინ გახსნის — ვერც ჩვენ.
ყველა პარამეტრი, სრულად
- შიფრი
- AES-256-GCM (WebCrypto), 128-ბიტიანი ტეგი
- გასაღების წარმოქმნა
- PBKDF2-HMAC-SHA-256, 600,000 იტერაცია
- KDF-ის მარილი
- 16 ბაიტი, CSPRNG, თითოეული ფაილისთვის ახალი
- GCM nonce
- 12 ბაიტი, CSPRNG, თითოეული ფაილისთვის ახალი
- ავთენტიფიცირებული მონაცემები.
- მთელი 42-ბაიტიანი სათაური; ამიტომ ნებისმიერი მითითებული პარამეტრის შეცვლა გაშიფვრას არღვევს
- საპაროლო ფრაზის კოდირება
- UTF-8, NFC-ნორმალიზებული (რათა ნებისმიერ მოწყობილობაზე აკრეფილმა ერთსა და იმავე ფრაზამ იგივე გასაღები წარმოქმნას)
გულწრფელი შეზღუდვები
ეს Sealby აპის სეიფის ფორმატი არ არის. აპი გასაღებებს თითოეული მოწყობილობისთვის მორგებული Argon2id-ით წარმოქმნის, მათ Secure Enclave-ში ახვევს და შიგთავსს დამაჯერებლად უარყოფად, ნაწილებად დაყოფილ კონტეინერებში ინახავს. ვებგვერდი ამას ვერ შეძლებს. ეს გვერდი დამოუკიდებელი ხელსაწყოა, რომელიც ბრაუზერების ჩაშენებულ შესაძლებლობებს იყენებს.
PBKDF2 მეხსიერებაზე ინტენსიური არ არის. ეს გასაღების წარმოქმნის ერთადერთი ფუნქციაა, რომელსაც ბრაუზერები ჩაშენებულად გვთავაზობს. 600,000 იტერაცია თითოეულ ცდას ანელებს, თუმცა GPU დანადგარი მას მაინც ბევრად სწრაფად უტევს, ვიდრე Argon2id-ს. ამიტომ დაცვას თქვენი საპაროლო ფრაზა უზრუნველყოფს: სულ მცირე ოთხი შემთხვევითი სიტყვა და არა პაროლი.
WebCrypto დაშიფვრას ერთჯერადად ასრულებს და ნაკადურ დამუშავებას არ იყენებს, ამიტომ პროცესის დროს მთელი ფაილი მეხსიერებაში ორჯერ ან სამჯერ თავსდება. მოწყობილობების უმეტესობა ასობით მეგაბაიტს გაუმკლავდება; მრავალგიგაბაიტიანი არქივებისთვის დესკტოპის ხელსაწყო გამოიყენეთ. დაშიფრული შედეგი ფაილის მიახლოებით ზომასაც ავლენს. სახელი შიგნით დაშიფრულია, ზომა კი დაფარული არ არის.
ფორმატი, ბაიტი-ბაიტად
ყველაფერი, რაც ტექნიკურ მკითხველს ამ გვერდის შედეგის დამოუკიდებლად შესამოწმებლად ან Python-ის ოც სტრიქონში გასაშიფრად სჭირდება:
| bytes | field | contents |
|---|---|---|
| 0–7 | სიგნატურა | ASCII "SBXF0001" |
| 8 | ვერსია. | 0x01 |
| 9 | ალგორითმი. | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | იტერაციები | uint32, big-endian (600,000) |
| 14–29 | salt | 16 ბაიტი |
| 30–41 | nonce | 12 ბაიტი |
| 42–ბოლომდე | დაშიფრული ტექსტი | payload-ის AES-256-GCM დაშიფრული ტექსტი, AAD = 0–41 ბაიტები; ბოლო 16 ბაიტი GCM ტეგია |
დაშიფვრამდე payload: [2-ბაიტიანი სახელის სიგრძე, big-endian][ფაილის სახელი, UTF-8][ფაილის ბაიტები]. თავდაპირველი სახელი დაშიფრული სახით ინახება და გაშიფვრისას აღდგება.
საცნობარო გამშიფრავი (Python, cryptography-ის ბიბლიოთეკა)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0] # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42]) # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)ეს დემოა. პროდუქტი სეიფია.
ერთი ფაილი, ერთი საპაროლო ფრაზა, ერთი გვერდი — ბრაუზერს მხოლოდ ეს შეუძლია. Sealby ამას სრულფასოვნად აკეთებს: თქვენს მოწყობილობაზე მორგებული Argon2id, გასაღებები Secure Enclave-ში და დამალული სეიფები, რომელთა არც სია და არც რაოდენობა არსად ინახება.
iPhone და iPad · iOS 17+ · უფასო