Mật mã học
Namespace: Nalix.Codec.Security (và các namespace con Asymmetric, Aead, Symmetric, Hashing, Engine)
Assembly: Nalix.Codec
Nalix.Codec.Security cung cấp các engine mật mã không cấp phát bộ nhớ và các nguyên thủy giao thức dùng cho mã hóa transport, thỏa thuận khóa X25519, tiếp tục phiên và thử thách Proof-of-Work chống DDoS.
Ánh xạ mã nguồn
src/Nalix.Codec/Security/Asymmetric/X25519.cssrc/Nalix.Codec/Security/Hashing/Keccak256.cssrc/Nalix.Codec/Security/Hashing/HmacKeccak256.cssrc/Nalix.Codec/Security/Hashing/Poly1305.cssrc/Nalix.Codec/Security/Hashing/Pbkdf2.cssrc/Nalix.Codec/Security/Symmetric/ChaCha20.cssrc/Nalix.Codec/Security/Symmetric/Salsa20.cssrc/Nalix.Codec/Security/Aead/ChaCha20Poly1305.cssrc/Nalix.Codec/Security/Aead/Salsa20Poly1305.cssrc/Nalix.Codec/Security/Engine/AeadEngine.cssrc/Nalix.Codec/Security/Engine/SymmetricEngine.cssrc/Nalix.Codec/Security/EnvelopeCipher.cssrc/Nalix.Codec/Security/HandshakeX25519.cssrc/Nalix.Codec/Security/ProofOfWork.cssrc/Nalix.Codec/Security/ProofOfWorkSolver.cssrc/Nalix.Codec/Options/SecurityOptions.cs
Bản đồ chủ đề bảo mật
| Chủ đề | Kiểu chính | Đọc tiếp |
|---|---|---|
| Băm và MAC | Keccak256, HmacKeccak256, Poly1305, Pbkdf2, SecurityOptions | Băm và MAC |
| AEAD và mã hóa Envelope | EnvelopeCipher, AeadEngine, SymmetricEngine, ChaCha20Poly1305, Salsa20Poly1305, ChaCha20, Salsa20 | AEAD và Envelope |
| Giao thức handshake X25519 | X25519, HandshakeX25519, HandshakeHandlers, HandshakeExtensions | Giao thức Handshake |
| Proof-of-Work (chống DDoS) | ProofOfWork, ProofOfWorkSolver, IProofOfWorkPolicy, ProofOfWorkHandlers | Proof-of-Work |
| Tiếp tục phiên | SessionResume, SessionHandlers, SessionService, ResumeExtensions | Tiếp tục phiên |
| Rekey phiên và xoay bộ mật mã | HandshakeX25519.DeriveRekeySecret, SystemControlHandlers, RekeyExtensions, CipherExtensions | Rekey phiên |
| Mức quyền | PermissionLevel, PermissionEvaluation, PacketPermissionAttribute | Mức quyền |
Hướng dẫn nhanh
- Dùng
X25519(Nalix.Codec.Security.Asymmetric.X25519) vàHandshakeX25519cho thỏa thuận khóa kiểu Noise với khóa ephemeral + khóa tĩnh. - Dùng
Keccak256.HashDataToFixed(ReadOnlySpan<byte>)khi bạn cần một digestBytes32không cấp phát bộ nhớ trên stack. - Dùng
EnvelopeCipher(Encrypt,Decrypt,TryDecrypt) để mã hóa và xác thực khung ở phía transport. - Dùng
Pbkdf2(cấu hình quaSecurityOptions.Pbkdf2IterationshoặcPbkdf2.Iterations:150_000ở Release /10_000ở Debug) để băm mật khẩu/thông tin xác thực. - Dùng
Csprng(Nalix.Environment.Random.Csprng) để lấy byte ngẫu nhiên an toàn về mật mã, nonce và lấy mẫu số nguyên không thiên lệch.
Ví dụ nhanh
using Nalix.Abstractions.Primitives;
using Nalix.Codec.Security.Asymmetric;
using Nalix.Codec.Security.Hashing;
using Nalix.Environment.Random;
// 1. Sinh cặp khóa X25519 (trả về struct X25519.X25519KeyPair với PrivateKey, PublicKey và Wipe())
X25519.X25519KeyPair keyPair = X25519.GenerateKeyPair();
Bytes32 publicKey = keyPair.PublicKey;
keyPair.Wipe();
// 2. Băm Keccak-256 không cấp phát bộ nhớ thành Bytes32
Bytes32 digest = Keccak256.HashDataToFixed(payload);
// 3. Băm thông tin xác thực bằng PBKDF2 + kiểm tra theo thời gian hằng số
string encodedCredential = Pbkdf2.Encoded.Hash("my-secret-password");
bool isValid = Pbkdf2.Encoded.Verify("my-secret-password", encodedCredential);
// 4. Nonce CSPRNG và lấy mẫu số nguyên không thiên lệch
byte[] nonce = Csprng.CreateNonce(12);
int shardIndex = Csprng.GetInt32(0, 8);