CoderTools

Mã hóa Salsa20

Mã hóa dòng tốc độ cao với biến thể nonce mở rộng

Bảo mật phía máy khách

Tất cả các thao tác mã hóa và giải mã được thực hiện cục bộ trong trình duyệt của bạn. Không có dữ liệu nào được gửi đến bất kỳ máy chủ nào.

Salsa20: Mã hóa dòng 256-bit với nonce 64-bit và 20 vòng. Nhanh và an toàn cho hầu hết các ứng dụng.

Giá trị bộ đếm khối ban đầu (thường là 0 để mã hóa, cùng giá trị để giải mã)

Tùy chọn định dạng
🔒 100% Xử lý cục bộTệp của bạn được xử lý hoàn toàn trong trình duyệt. Không có dữ liệu nào được gửi đến máy chủ.

Giới thiệu Salsa20

Salsa20 là một mã hóa dòng được thiết kế bởi Daniel J. Bernstein vào năm 2005. Nó sử dụng khóa 256-bit và nonce 64-bit để tạo dòng khóa được XOR với văn bản thuần để tạo văn bản mã hóa. Mã hóa được thiết kế cho hiệu suất cao trong các triển khai phần mềm.

Salsa20 đã được gửi đến dự án eSTREAM và được chọn là ứng cử viên cuối cùng trong hồ sơ phần mềm. Nó tạo thành cơ sở cho họ mã hóa ChaCha.

So sánh thuật toán

Thuật toán Vòng Độ dài Nonce Tốc độ Sử dụng tốt nhất
Salsa20/20 20 64 bits (8 bytes) Tiêu chuẩn Mã hóa chung, bảo mật cao
Salsa20/12 12 64 bits (8 bytes) Nhanh Ứng dụng quan trọng về hiệu suất
Salsa20/8 8 64 bits (8 bytes) Nhanh nhất Kịch bản tốc độ tối đa
XSalsa20 20 192 bits (24 bytes) Tiêu chuẩn Nonce ngẫu nhiên, NaCl/libsodium

Cách Salsa20 hoạt động

Salsa20 hoạt động trên một ma trận 4×4 của các từ 32-bit (tổng cộng 512 bit). Trạng thái ban đầu bao gồm khóa (256 bit), nonce (64 bit), bộ đếm (64 bit) và bốn từ hằng số tạo thành chuỗi 'expand 32-byte k'.

Hàm cốt lõi áp dụng 20 vòng của phép toán quarterround, chỉ sử dụng các phép toán cộng-xoay-XOR (ARX). Điều này làm cho Salsa20 hiệu quả trong phần mềm và chống lại các cuộc tấn công thời gian.

XSalsa20 mở rộng nonce lên 192 bit bằng HSalsa20, một biến thể dẫn xuất khóa phụ từ 128 bit đầu tiên của nonce, để lại 64 bit cho nonce thực tế. Điều này cho phép tạo nonce ngẫu nhiên an toàn.

Biến thể vòng

  • Salsa20/20 (20 vòng) - Biến thể tiêu chuẩn cung cấp biên độ bảo mật đầy đủ. Được khuyến nghị cho hầu hết các ứng dụng.
  • Salsa20/12 (12 vòng) - Lựa chọn danh mục eSTREAM. Cung cấp sự cân bằng tốt giữa tốc độ và bảo mật.
  • Salsa20/8 (8 vòng) - Biến thể nhanh nhất. Không có cuộc tấn công thực tế nào được biết đến, nhưng biên độ bảo mật giảm.

Tính năng chính

  • Hiệu suất cao: Được tối ưu hóa cho phần mềm, đạt 3-4 chu kỳ mỗi byte trên CPU hiện đại
  • Thiết kế đơn giản: Chỉ sử dụng các phép toán ARX, dễ triển khai mà không cần bảng tra cứu
  • Thời gian hằng: Chống lại các cuộc tấn công kênh phụ thời gian cache
  • Bộ đếm lớn: Bộ đếm 64-bit cho phép mã hóa lên đến 2^70 byte mỗi cặp khóa-nonce
  • Nonce mở rộng: Nonce 192-bit của XSalsa20 cho phép tạo nonce ngẫu nhiên

Cân nhắc bảo mật

  • Không bao giờ sử dụng lại nonce với cùng một khóa - điều này phá vỡ hoàn toàn bảo mật
  • Salsa20 chỉ cung cấp mã hóa, không xác thực - kết hợp với Poly1305 cho AEAD
  • Đối với nonce ngẫu nhiên, sử dụng XSalsa20 để giảm thiểu xác suất va chạm
  • Sử dụng KDF phù hợp (HKDF, Argon2) để dẫn xuất khóa từ mật khẩu

Sử dụng thực tế

  • NaCl/libsodium: XSalsa20-Poly1305 là cấu trúc AEAD mặc định
  • Công cụ mã hóa: Nhiều tiện ích mã hóa tệp sử dụng các biến thể Salsa20
  • Trình quản lý mật khẩu: Một số sử dụng Salsa20 để mã hóa thông tin xác thực được lưu trữ
  • Engine trò chơi: Được sử dụng để mã hóa nhanh trong các trò chơi mạng

Tài liệu tham khảo

Câu hỏi thường gặp

Sự khác biệt giữa Salsa20 và ChaCha20 là gì?

ChaCha20 là một sửa đổi của Salsa20 với sự khuếch tán được cải thiện mỗi vòng. ChaCha20 đạt được bảo mật tốt hơn mỗi vòng, đó là lý do tại sao nó trở thành tiêu chuẩn IETF. Đối với các dự án mới, ChaCha20 thường được ưa chuộng.

Tôi nên sử dụng biến thể vòng nào?

Sử dụng Salsa20/20 để bảo mật tối đa. Salsa20/12 là sự cân bằng tốt giữa tốc độ và bảo mật. Chỉ sử dụng Salsa20/8 khi hiệu suất cực kỳ quan trọng và mô hình mối đe dọa của bạn cho phép biên độ bảo mật giảm.

Khi nào tôi nên sử dụng XSalsa20?

Sử dụng XSalsa20 khi bạn cần tạo nonce ngẫu nhiên. Không gian nonce 192-bit của nó làm cho các va chạm thực tế là không thể với việc tạo ngẫu nhiên. Nonce 64-bit của Salsa20 tiêu chuẩn yêu cầu quản lý bộ đếm cẩn thận.

Salsa20 có an toàn mà không có xác thực không?

Salsa20 một mình chỉ cung cấp tính bảo mật, không có tính toàn vẹn. Kẻ tấn công có thể sửa đổi văn bản mã hóa mà không bị phát hiện. Luôn kết hợp với Poly1305 hoặc MAC khác để mã hóa xác thực.

Tôi có thể sử dụng công cụ này cho môi trường sản xuất không?

Công cụ này dành cho mục đích giáo dục và phát triển. Mặc dù triển khai tuân theo đặc tả, các hệ thống sản xuất nên sử dụng các thư viện mã hóa được kiểm tra kỹ lưỡng như libsodium, OpenSSL hoặc các API được nền tảng cung cấp.