Үнэгүй нууцлалын хэрэгсэл

Файлыг битүүмжлэх

Файлаа нэг удаагийн шинэ түлхүүрээр шифрлээд, хүссэн сувгаараа илгээнэ үү. Түлхүүртэй хүн яг энд, энэ хуудсан дээр нээнэ. Юуг ч серверт байршуулахгүй, таалгах нууц хэллэг байхгүй, бид хадгалахаасаа өмнө агуулгыг хардаг үйл явц ч байхгүй.

Энэ таб дээр бүрэн ажиллана. Энэ хуудас ямар ч сервертэй огт ярих боломжгүй.

Параметр бүрийг заасан

Шифр
AES-256-GCM (WebCrypto), нэг хэсэг тутамд 128 битийн шошго
Түлхүүр
CSPRNG хөтчөөс 256 бит, нэг тамга тутамд шинээр үүсгэгдсэн, нэг удаа ашигласан, юу ч бишээс гаралтай
Буцах
шифрлэгдсэн манифест (файлын нэр, хэмжээ, төрөл), дараа нь 1 МБ хэсэг дэх файлыг тус тусад нь баталгаажуулна.
Үгүй ээ
32 битийн санамсаргүй тамга давс ‖ 64 битийн бөөгнөрөл тоологч — файл дотор хэзээ ч давтагддаггүй бөгөөд түлхүүр нь нэг удаагийнх
Баталгаажсан өгөгдөл
Бүтэн 16 байт толгой хэсэг дээр нэмэх нь хэсэг бүрийн индекс ба нийт хэсгүүдийн тоо - хэсгүүдийг дахин эрэмбэлэх, тайрах эсвэл залгах нь шифрлэлтийг эвддэг
Түлхүүрийн мөр
base64url, 47 тэмдэгт: 32 байт түлхүүр, дээр нь 3 байт SHA-256 шалгах нийлбэр, тиймээс үсгийн алдаа нь хог үүсгэхийн оронд цэвэр бүтэлгүйтдэг.

Энэ юу хийдэг талаар үнэнч хариултууд

Таны хөтөч дээр бүх зүйл тохиолддог.

Битүүмжлэх, нээх хоёулаа файлыг энэ хуудасны санах ойд уншиж, AES-256-GCM-г хөтчийнхөө суулгасан WebCrypto хөдөлгүүрээр ажиллуулж, үр дүнг татаж авах хэлбэрээр буцааж өгнө үү. Юуг ч серверт илгээхгүй. Бүртгэл байхгүй, сервер талын боловсруулалт байхгүй. Энэ сайтын бусад хэсгээс ялгаатай нь энэ хуудас нь күүкигүй зочилсон тоолуурыг ч ачаадаггүй. Ямар ч төрлийн аналитик байхгүй.

Энэ бол зүгээр нэг амлалт биш. Хуудасны Content-Security-Policy нь зөвхөн энэ сайтын статик файлыг татахыг зөвшөөрдөг тул таны файл, түлхүүр эсвэл бусад мэдээллийг манайхыг оролцуулаад ямар ч сервер рүү илгээх боломжгүй. Битүүмжлэх үед хөгжүүлэгчийн хэрэгслээр шалгавал сүлжээний хүсэлт гарахгүй. Хамгийн ойлгомжтой баталгаа нь Toolbox-ийг суулгаад онгоцны горимд файл битүүмжлэх: сүлжээ унтарсан үед төхөөрөмжөөс юу ч гарахгүй.

Түлхүүр бол бүх зүйл — харин бидэнд хэзээ ч байдаггүй.

Битүүмжлэх бүрд хөтөч санамсаргүй, шинэ 256 битийн түлхүүр үүсгэнэ. Түлхүүрийг танд ганц удаа харуулах бөгөөд манай систем, хөтчийн хадгалалт, битүүмжилсэн файл гээд хаана ч хадгалахгүй. Тааж болох нууц хэллэг, бүх хувилбарыг шалгах боломж байхгүй. Файл болон түлхүүр хоёуланг нь эзэмшсэн хүн л файлыг нээж чадна.

Түлхүүрээ алдвал файлаа бүрмөсөн алдана: дахин тохируулах, дэмжлэгээр сэргээх ямар ч арга байхгүй. Энэ нь туслахаас татгалзсан хэрэг биш. Бид сэргээж чадах хуулбар хадгалбал өөр хүн түүнийг хулгайлах эсвэл биднээс шаардах боломжтой болно.

Түлхүүр холбоос хэзээ ч серверт хүрдэггүй.

Хуваалцах холбоос нь URL дахь #-ийн ард түлхүүрийг тавьдаг. Тэр хэсэг, фрагмент нь хөтөч дээр үлддэг. Энэ нь хөтчөөс манай эсвэл хэн нэгний сервер рүү илгээдэг зүйлд хэзээ ч ордоггүй. Энэ хуудас холбоос дахь түлхүүрээр ачаалагдах үед энэ нь түлхүүрийг уншиж, Нээх таб руу шилжиж, түлхүүрийг хаягийн талбараас шууд устгана. Тиймээс энэ нь харагдах URL эсвэл хөтчийн түүхэнд үлдэхгүй.

Гэхдээ холбоос болон битүүмжилсэн файл хоёул хэнд байна, тэр нээж чадна. Тиймээс файл, түлхүүрийг өөр өөр сувгаар илгээхийг зөвлөж байна.

Та ямар нэгэн зүйл хадгалагдахаас өмнө дотор нь юу байгааг хардаг.

Нээх ажиллагаа хоёр алхамтай. Эхлээд хуудас зөвхөн анхны файлын нэр, хэмжээ, төрлийг агуулсан жижиг манифестын шифрийг тайлна. Програм, скрипт, суулгагч, макротой баримт, HTML зэрэг код ажиллуулж болох төрөл болон invoice.pdf.exe шиг давхар өргөтгөлөөр халхалсан нэр байвал тод анхааруулна. Та шифр тайлж хадгалах товчийг дарахаас нааш юу ч бичихгүй. Хуудас тайлагдсан агуулгыг өөрөө хэзээ ч нээж, дүрслэхгүй; зөвхөн татаж авах файл болгон өгнө.

Шифрлэлт юуг хамгаалж, юуг нотлохгүйг ялгаарай. Битүүмжилсэн файл дамжуулах үедээ нууц хэвээр байна. Гэхдээ түүнийг хэн илгээсэн, агуулга нь аюулгүй эсэхийг битүүмжлэл нотлохгүй. Танихгүй битүүмжилсэн файлд танихгүй хавсралттай адил болгоомжтой хандана уу.

Итгэлцлийн хил үнэхээр хаана байна.

Та энэ вэб сайтад үйлчлэх кодыг ажиллуулж байна. Хэрэв sealby.app эсвэл таны холболт эвдэрсэн бол хортой хуудас таны оруулсан зүйлийг уншиж болзошгүй. Энэ нь вэбд суурилсан шифрлэлтийн хэрэгсэл бүрт үнэн байдаг бөгөөд бид өөрөөр дүр эсгэхийн оронд үүнийг хэлэх нь дээр. Энэ талаар бид юу хийдэг вэ: хуудас нь статик файл бөгөөд бид үүнийг гуравдагч этгээдийн кодоос чөлөөлдөг. Суулгасан хэрэгслийн хайрцаг нь аль хэдийн ачаалсан хувилбараа үргэлжлүүлэн ашиглах боломжийг танд олгоно. Мөн форматыг доор баримтжуулсан тул үүний эсрэг бие даасан хэрэгслийг бий болгож болно.

Таны төхөөрөмж бас хил дотор байна. Хуудасны хандалт бүхий хөтчийн өргөтгөлүүд эсвэл машин дээрх хортой програмууд нь ямар ч хуудаснаас уншиж чаддаг. Битүүмжилсэн файл нь агуулгыг нь нуудаг, гэхдээ бүгдийг нь биш. Үүнийг барьж буй хэн бүхэн түүний хэмжээг (ойролцоогоор эх хувилбарынх нь) болон Sealby битүүмжилсэн файл гэдгийг харж болно.

Энгийн хэлний хязгаарлалт

  • Түлхүүрээ алдвал файлаа алдана. Энэ нь хийцийн санаатай шинж тул онцгой тохиолдол байхгүй.
  • Бид таны файлууд эсвэл түлхүүрүүдийг харах боломжгүй тул хортой программыг скан хийх боломжгүй. Файлын төрлийн анхааруулга нь зөвхөн файлын нэр дээр тулгуурладаг. Энэ нь аюулгүй байдлын баталгаа биш юм.
  • Битүүмжилсэн файл болон түлхүүртэй хэн ч үүнийг нээж болно. Энэ хэрэгсэл нь хэн болохыг мэдэхгүй эсвэл шалгадаггүй.
  • Битүүмжилсэн файлын хэмжээ нь анхны файлын хэмжээг ойролцоогоор харуулж байна.
  • Нэг тамга бүрт 100 МБ хүртэлх нэг файл. Эхлээд олон файлыг зиплэ.

Формат, байт бүрээр

Техникийн уншигчид энэ хуудасны гаралтыг бие даан шалгах эсвэл Python-ын гучин мөрөнд .sealed файл нээхэд шаардлагатай бүх зүйл:

bytesfieldcontents
0–7таних тэмдэгASCII "SEALBY-W"
8хувилбар0x01 - бусад бүх зүйлийг "шинэ хувилбараар хийсэн" гэж үгүйсгэдэг
9алгоритм0x01 = AES-256-GCM
10–13битүүмжлэх давс4 байт, CSPRNG, нэг тамга тутамд шинэ
14–15нөөцөлсөнтэг байх ёстой
16 - төгсгөлхэсэгчилсэн хүрээтус бүр: uint32 BE шифр текстийн урт, дараа нь AES-GCM шифр текст + 16 байт шошго

0-р хэсэг нь манифест: UTF-8 JSON {"name":…,"size":…,"type":…}. 1…N−1-р хэсгүүд нь файлын 1 MiB хэсгүүд. N хэсгийн i бүрд: nonce = salt ‖ uint64 BE i; баталгаажуулах өгөгдөл = header ‖ uint64 BE i ‖ uint64 BE N. Иймээс өөрчлөх, тайрах, дараалал солих, зөөх, өөр файлтай залгах бүрд баталгаажуулалт амжилтгүй болно. Тохиолдол бүрийг хадгалсан сөрөг тест нотолно.

Түлхүүрийн мөр: 32 байт түлхүүрийн base64url (зайлшгүй), түүний SHA-256-ийн эхний 3 байт, нийт 47 тэмдэгт. Үг үсгийн алдаа нь хог гаргахын оронд шалгах нийлбэрийг бүтэлгүйтдэг.

Лавлагаа онгойлгогч (Python, криптографийн номын сан)
import base64, hashlib, json, struct, sys
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SEALBY-W" and raw[8] == 1 and raw[9] == 1
assert raw[14:16] == b"\x00\x00"
header, salt = raw[:16], raw[10:14]
frames, off = [], 16
while off < len(raw):
    (n,) = struct.unpack(">I", raw[off:off + 4]); off += 4
    frames.append(raw[off:off + n]); off += n
assert off == len(raw)

kb = base64.urlsafe_b64decode(sys.argv[2] + "=")   # 47-char key string
key, check = kb[:32], kb[32:35]
assert hashlib.sha256(key).digest()[:3] == check    # typo check

N = len(frames)
def chunk(i):
    nonce = salt + struct.pack(">Q", i)
    aad = header + struct.pack(">QQ", i, N)
    return AESGCM(key).decrypt(nonce, frames[i], aad)

manifest = json.loads(chunk(0))
data = b"".join(chunk(i) for i in range(1, N))
assert len(data) == manifest["size"]
open(manifest["name"], "wb").write(data)
print("decrypted ->", manifest["name"])

Энэ хэрэгсэл дамжуулж буй файлыг хамгаална. Сейф хадгалж буй файлыг хамгаална.

Битүүмжлэл нь хаа нэгтээ явж буй файлыг хамгаалдаг. Sealby нь таны iPhone дээрх шифрлэгдсэн сейфэд байгаа гэрэл зураг, файл, тэмдэглэл зэрэг бүх зүйлийг хамгаалдаг. Бүртгэлгүй, сервергүй, танаас өөр хэн ч унших боломжгүй.

App Store-оос татах

iPhone & iPad · iOS 17+ · Үнэгүй