
Skiff — это рабочее пространство, ориентированное на конфиденциальность, которое позволяет свободно общаться и сотрудничать. Однако создание нашего продукта со сквозным шифрованием — это новая инженерная задача, требующая быстрого шифрования, интуитивно понятного дизайна и совместимости со всеми нативными и веб-платформами.
Мы рады сообщить, что вся наша криптографическая работа полностью открыта, помогая вам и вашим командам создавать более качественные и безопасные приложения.
Для быстрой справки посетите наш сайт документации здесь.
Представляем @skiff-org/skiff-crypto
Наша библиотека NPM @skiff-org/skiff-crypto, мощная библиотека криптографии и управления версиями объектов с открытым исходным кодом, предназначена для обеспечения безопасного шифрования, дешифрования, хеширования, подписи и управления версиями. С помощью skiff-crypto разработчики могут легко интегрировать надежные алгоритмы шифрования в свои приложения и безопасно управлять версиями объектов. Управление зашифрованными данными для приложений, масштабируемых до миллионов пользователей, — непростая задача, и мы надеемся, что эта библиотека поможет упростить эту задачу.
Skiff Crypto предлагает полный набор криптографических функций и утилит для управления версиями объектов, позволяя разработчикам защищать свои данные и эффективно управлять версиями объектов. Библиотека поддерживает схемы симметричного и асимметричного шифрования, что позволяет шифровать и расшифровывать данные с использованием секретных ключей и аутентификации с открытым ключом. Он также поддерживает генерацию и вывод ключей, а также другие удобные служебные функции, такие как кодирование UTF8 или base64.
Давайте подробнее рассмотрим некоторые ключевые функции и функции, предоставляемые @skiff-org/skiff-crypto.
Симметричное шифрование и дешифрование
Криптовалюта Skiff включает в себя функции для симметричного шифрования и дешифрования с использованием алгоритма секретного ящика NaCl. Разработчики могут шифровать и расшифровывать объекты с помощью общего секретного ключа, обеспечивая конфиденциальность и целостность данных.
Вот пример использования функций encryptSymmetric и decryptSymmetric:
import { encryptSymmetric, createJSONWrapperDatagram, decryptSymmetric, generateSymmetricKey } from '@skiff-org/skiff-crypto';
// A datagram is used to manage object versions and metadata
const TestDatagram = createJSONWrapperDatagram('ddl://test');
const draftSymmetricKey = generateSymmetricKey();
// Encrypting data
const encryptedData = encryptSymmetric('Hello, world!', draftSymmetricKey);
// Decrypting data
const decryptedData = decryptSymmetric(encryptedData, draftSymmetricKey);
console.log(decryptedData); // Output: Hello, world!
Асимметричное шифрование и дешифрование
@skiff-org/skiff-crypto поддерживает асимметричное шифрование и дешифрование с использованием алгоритма коробки NaCl. Разработчики могут использовать открытые и закрытые ключи для безопасного шифрования и расшифровки данных, обеспечивая повышенную безопасность и обмен данными между сторонами.
Посмотрите пример ниже, чтобы увидеть, как использовать функции асимметричного шифрования и дешифрования:
import { stringEncryptAsymmetric, stringDecryptAsymmetric, generatePublicPrivateKeyPair } from '@skiff-org/skiff-crypto';
const plaintext = "Hello, skiff-crypto!";
const keypair = generatePublicPrivateKeyPair();
const encrypted = stringEncryptAsymmetric(keypair.privateKey, { key: keypair.publicKey }, plaintext);
const decrypted = stringDecryptAsymmetric(keypair.privateKey, { key: keypair.publicKey }, encrypted);
console.log('Plaintext:', plaintext);
console.log('Ciphertext:', encrypted);
console.log('Expected to be true:', plaintext === decrypted);
Управление версиями объекта
С помощью Skiff Crypto разработчики могут легко управлять версиями своих объектов, чтобы управлять изменениями данных и поддерживать совместимость между различными версиями своих приложений. Библиотека предоставляет утилиты для создания дейтаграмм, которые кодируют и декодируют сериализуемые в формате JSON данные, обеспечивая беспрепятственное управление версиями объектов.
Вот пример создания дейтаграммы-оболочки JSON:
import { createJSONWrapperDatagram } from '@skiff-org/skiff-crypto';
// Creating a JSON wrapper datagram
const datagram = createJSONWrapperDatagram('ddl://myJSONType', '0.1.0');
// Serializing data
const serializedData = datagram.serialize({ name: 'John', age: 30 });
// Deserializing data
const deserializedData = datagram.deserialize(serializedData);
console.log(deserializedData); // Output: { name: 'John', age: 30 }
Хеширование
Библиотека также предоставляет вспомогательную функцию для генерации хэшей значений SHA-512. Разработчики могут легко генерировать хэш-значения для проверки целостности данных или других криптографических целей.
Вот пример генерации хэша SHA-512:
import { generateHash } from '@skiff-org/skiff-crypto';
const hashedValue = generateHash('Hello, world!');
Проверка подписи
Skiff Crypto предлагает функции для проверки и создания отдельных подписей. Разработчики могут проверять подлинность и целостность сообщений с помощью открытых ключей и проверять, действительны ли подписи в заданном контексте.
Использование контекстно-зависимых подписей может быть важной дополнительной защитой от повторных атак или других проблем, связанных с повторным использованием подписи.
Посмотрите приведенный ниже фрагмент, чтобы создать отдельную подпись:
import { verifyDetachedSignatureAsymmetric } from '@skiff-org/skiff-crypto';
const message = 'Hello, world!';
const signature = 'SIGNATURE_TO_VERIFY';
const publicKey = 'PUBLIC_KEY_TO_USE';
// signature context makes sure that intent is known
const isValid = verifyDetachedSignatureAsymmetric(message, signature, publicKey, 'DOCUMENT_DATA');
console.log(isValid); // Output: true
Начните с @skiff-org/skiff-crypto
Чтобы начать использовать @skiff-org/skiff-crypto в своих проектах, вы можете установить его через npm:
npm install @skiff-org/skiff-crypto
Или с пряжей:
yarn add @skiff-org/skiff-crypto
Подробные инструкции по использованию, включая дополнительные примеры и документацию по API, см. на официальном сайте документации.
Содействие
@skiff-org/skiff-crypto — это проект с открытым исходным кодом, и мы приветствуем вклад и отзывы сообщества. Если вы столкнулись с какими-либо проблемами, у вас есть предложения по улучшению или вы хотите внести свой вклад в проект, посетите репозиторий GitHub.
Мы надеемся, что Skiff Crypto позволит разработчикам создавать более качественные и безопасные продукты.