Легковажний криптографічний набір інструментів на основі експоненціації матриць Фібоначчі (fibcrypt)

В епоху сучасної криптографії дедуктивні та ефективні механізми похідних ключів набувають все більшої популярності. Одним з таких інструментів є бібліотека fibcrypt, яка використовує рідкісні математичні підходи для генерації ключів на основі чисел Фібоначчі через матричне піднесення до степеня. Цей метод є швидким і прозорим, дозволяючи генерувати криптографічні ключі, які потім можна використовувати для шифрування даних.

Основною метою розробки fibcrypt є спрощення процесу створення похідних ключів у легких середовищах, де інші механізми, такі як PBKDF2 або Argon2, можуть бути занадто ресурсномісткими. fibcrypt використовує матричне піднесення до степеня для обчислення чисел Фібоначчі, що дозволяє досягти високої ефективності навіть для великих індексів.

Числа Фібоначчі через матричне піднесення до степеня

Традиційно числа Фібоначчі визначаються через рекурсію, однак для підвищення ефективності fibcrypt застосовує матричне піднесення до степеня. Це дозволяє обчислювати числа Фібоначчі значно швидше, що є особливо корисним для великих індексів. В основі цього методу лежить квадратичне піднесення до степеня, що робить обчислення дуже швидким.

pic

Процес генерації ключа

Процес генерації криптографічного ключа в fibcrypt виглядає наступним чином:

  1. Спочатку поєднуються пароль та сіль, після чого їх хешують за допомогою алгоритму SHA-256.
  2. Отриманий хеш перетворюється на ціле число, після чого обчислюється індекс Фібоначчі за допомогою модуля.
  3. Далі виконується генерація псевдовипадкових чисел на основі числа Фібоначчі (PRNG).

Згенерований ключ потім перетворюється в 256-байтовий масив для шифрування за допомогою AES.

Шифрування та дешифрування

fibcrypt використовує стандартний режим AES-256-CBC для шифрування та дешифрування даних. Кожен раз при шифруванні генерується випадковий IV, що забезпечує унікальність зашифрованого тексту.

Продуктивність

Під час тестування на сучасному ноутбуці (MBP M3 Max), час виконання процесу шифрування та дешифрування складає менше ніж 0.5 секунди, що є досить швидким навіть для великих обсягів даних.

Encrypt process started…
[⏱️] KDF seed hashing time: 0.0000 s
[⏱️] KDF Fibonacci loop time: 0.2374 s
[⏱️] KDF total time: 0.2375 s
[⏱️] KDF time: 0.2375 s
[⏱️] Key conversion: 0.0000 s
[⏱️] AES encryption: 0.0001 s
[⏱️] Total time: 0.2376 s
Encrypt process completed…
Decrypt process started…
[⏱️] KDF seed hashing time: 0.0000 s
[⏱️] KDF Fibonacci loop time: 0.2355 s
[⏱️] KDF total time: 0.2355 s
[⏱️] KDF time: 0.2355 s
[⏱️] Key conversion: 0.0000 s
[⏱️] AES decryption: 0.0001 s
[⏱️] Total time: 0.2356 s
Decrypt process completed…
Decrypt process completed…
[⏱️] Grand Total Time: 0.4732 s

Тестування на Google Colab показало ще більшу швидкість, що свідчить про ефективність алгоритму у хмарних середовищах.

[⏱️] KDF seed hashing time: 0.0000 s
[⏱️] KDF Fibonacci loop time: 0.0731 s
[⏱️] KDF total time: 0.0731 s
[⏱️] KDF time: 0.0733 s
[⏱️] Key conversion: 0.0000 s
[⏱️] AES encryption: 0.0002 s
[⏱️] Total time: 0.0734 s
Encrypted: ff2420e97097206426f7845ed936882298ca2da87cffeed9f92677f5d114e80421cfd9814734f06dc452d3327d01568b
[⏱️] KDF seed hashing time: 0.0000 s
[⏱️] KDF Fibonacci loop time: 0.0682 s
[⏱️] KDF total time: 0.0683 s
[⏱️] KDF time: 0.0683 s
[⏱️] Key conversion: 0.0000 s
[⏱️] AES decryption: 0.0001 s
[⏱️] Total time: 0.0684 s
Decrypted: This is a secret message

Встановлення та використання

Для встановлення fibcrypt достатньо виконати команду:

pip install fibcrypt

Простий приклад використання бібліотеки для шифрування та дешифрування повідомлень:

from fibcrypt.crypto_utils import encrypt, decrypt

msg = "This is a secret message"
password = "strongPassword"
salt = "[email protected]"

cipher = encrypt(msg, password, salt)
plain = decrypt(cipher, password, salt)

print("Encrypted:", cipher.hex())
print("Decrypted:", plain)

Дизайн і філософія

fibcrypt — це бібліотека з детермінованим, простим і швидким отриманням криптографічних ключів. Вона мінімізує залежності і легко розширюється для використання інших алгоритмів, таких як HMAC або токен-системи. Проект є відкритим і добре документованим, що дозволяє іншим розробникам швидко впроваджувати і використовувати його в своїх проектах.

Заключення

fibcrypt є інноваційним і ефективним інструментом для роботи з криптографічними ключами, використовуючи унікальний підхід на основі чисел Фібоначчі. Завдяки високій продуктивності і простоті використання, ця бібліотека є перспективною для реалізації в різних проектах, де потрібен високий рівень безпеки та ефективності.

Перекладено з: A Lightweight Cryptographic Toolkit Based on Fibonacci Matrix Exponentiation (fibcrypt)