Как бороться с квантовым компьютером при помощи WebAssembly

Чем опасен квантовый компьютер

  1. Возможно одновременное  выполнение множества операций
  2. Способность взламавать RSA шифрование

Что такое кубит и как это работает

Алгоритм RSA шифрования

Сложность вычисления простых множетелей т.е. взлома RSA шифра

Алгоритм Шора

Сокращение времени взлома до

RSA, DSA, ECDSA умрут

 

Текущее положение дел

2015 амриканское правительство начало переход на новые алгоритмы

Конференция PQCrypto

Нужно и нам задуматься

New Hope в Chrome

Существует ряд алгоритмов 

SIDH, NTRU,  McEliece, RLWE и прочие

Но они на C (((

Используем SIDH от Microsoft

Портируем их на WebAssembly и попробуем пообщяться с сервером

https://github.com/cyph/sidh.js

Это портирование не мое, но ребята сделали базовое портирование путем вынесения экспортов и просто компиляции WebAssembly кода с помощью Emscripten

Про что я тоже расскажу!

Процесс портирования и взаимодействия с библиотекой на C

Пример шифровки данных

fetch('sidh.wasm')
    .then(response => response.arrayBuffer())
    .then(bytes => instantiate(bytes, {}))
    .then(instance => instance.exports.keyPair());

Получение пар ключей

Пример шифровки данных

fetch('sidh.wasm')
    .then(response => response.arrayBuffer())
    .then(bytes => instantiate(bytes, {}))
    .then(instance => instance.exports.keyPair());

Получение пар ключей

Шифрование обычным AES с новыми ключами

https://github.com/ricmoo/aes-js

Но нужна поддержка и на сервере 

Используем Nodejs и N-API для взаимодействия с SIDH

WebAssembly

By Vladimir

WebAssembly

  • 102