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