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 позволит разработчикам создавать более качественные и безопасные продукты.

Гитхаб-репозиторий

Сайт документации

Пакет НПМ