Test Engineering Notes – Telegram
Test Engineering Notes
3.8K subscribers
177 photos
2 videos
645 links
Україномовний канал про технічні аспекти тестування, розподілені системи, блокчейн.

Консультації з автоматизації, менторинг, тестові співбесіди - @al8xr
Download Telegram
[Простыми словами] Что такое цифровая подпись?

#security #blockchain #cryptography

Зачем это вообще?
В прошлых заметках мы уже кратко познакомились с методами, которые позволяют скрыть передаваемую информацию от третьих лиц (шифрование).

Довольно часто при передаче сообщений между двумя сторонами нужно решить две большие задачи:
1. Как получателю быть уверенным, что сообщение отправлено именно отправителем?
2. Как получателю быть уверенным, что сообщение не было изменено злоумышленником во время передачи?

Обе эти задачи решаются с помощью механизма цифровой подписи (digital signatures).

Какие бывает виды цифровой подписи?
Алгоритмы цифровой подписи могут быть основаны на методах симметричного и асимметричного шифрования. Чаще используется последний.

Как работает цифровая подпись?
Суть цифровой подписи сообщения (в упрощенном виде) заключается в сочетании шифрования и хеширования:
- Вычисляется хеш документа с помощью хеш-функции.
- Хеш документа шифруется с помощью приватного ключа отправителя.
- Документ + зашифрованный хеш отправляются получателю.
- Получатель с помощью той же хеш функции получает хеш сообщения.
- Получатель с помощью публичного ключа отправителя расшифровывает подпись и получает хеш от отправителя.
- Хеш от отправителя и хеш, полученный на стороне получателя сравниваются. Если они равны - то можно сказать, что сообщение не было модифицировано и личность отправителя подтверждена.

Примеры алгоритмов цифровой подписи?
RSA-PSS, DSA, ECDSA, Rabin signature, Schnorr signature.

Как цифровая подпись используется в блокчейне?
Каждый раз, когда вы в кошельке совершаете новую транзакцию, “под капотом” транзакция подписывается вашим ключом. В дальнейшем в блокчейне можно проверить - кто создал ту или иную транзакцию.
В Bitcoin изначально использовался алгоритм ECDSA. Буквально пару лет назад этот алгоритм заменили и сейчас транзакции можно подписывать с помощью алгоритма Шнорра. У него есть ряд весомых преимуществ - особенно для мультиподписи транзакций. Сам алгоритм очень интересный - расскажу о нем подробнее в следующих заметках.
В Ethereum сейчас используется ECDSA, Cardano - Ed25519.

Какие атаки могут быть на сообщение с цифровой подписью?
- Подделка документа (коллизия первого рода) - попытка подбора документа под определенный хеш. Крайне маловероятно - т.к. документы обычно большого размера.
- Получение двух документов с одинаковой цифровой подписью (коллизия второго рода).
- Социальные атаки. Основаны на манипуляциях с ключами: кража приватного ключа, попытка заставить отправителя подписать неправильный документ, замена публичного ключа отправителя.

Звучит интересно, но как “попробовать это руками”?
В следующих заметках, я расскажу об инструментах и приложениях, которые можно использовать для шифрования и подписи сообщений на вашем компьютере.
👍4
Шифруем и подписываем данные с gpg и Mailvelope

#blockchain #security #cryptography
В прошлых заметках мы говорили о шифровании (тут и тут), а также о цифровой подписи.
Но одно дело просто узнать о концепции - а другое дело - “пощупать” своими руками.

Сегодня мы поговорим о том, как легко можно шифровать и ставить цифровые подписи - как с помощью командной строки, так и просто в браузере.

gpg
Открытый стандарт шифрования OpenPGP существует в двух имплементациях PGP и GPG (GnuPG). Если первая - закрытая, то вторую любой пользователь установить на свой компьютер (как в Unix так и в Windows).
Установка утилиты описана - здесь.
Что можно делать с ее помощью:
- генерировать ключи (публичные и приватные): gpg --gen-key
- смотреть какие ключи уже импортированы: gpg --list-keys (а также - gpg --list-public-keys и gpg --list-secret-keys)
- импортировать свои ключи из внешних источников: gpg --import public_key.txt
- экспортировать свои ключи (в файл): gpg --export -a "email" > pub.asc (или gpg --export-secret-key -a "email" > priv.asc). Без перенаправления в файл - можно просто вывести в консоль текст ключа.
- выкладывать свои ключи на открытые сервера ключей для распространения: gpg --keyserver pgp.mit.edu --send-keys KEY_ID
- зашифровать и подписать сообщение для заданного получателя: gpg --encrypt --sign --armor -r samplerecipient@mail.com message.txt
- дешифровать данные: gpg --decrypt message.txt.gpg
- ставить цифровую подпись на сообщение: gpg —detach-sign message.txt
- проверять подлинность подписи: gpg —verify message.txt.sig

Mailvelope
Если утилита командной строки - слишком “дедовский” способ для вас - то есть отличный выход. Можно установить плагин Mailvelope для Google Chrome (есть также для Firefox и Edge). С его помощью можно делать то же самое, что и с gpg - только в браузере и с приятным и удобным интерфейсом.
О том как установить и настроить этот плагин можно почитать тут.

От себя скажу, что этот плагин мега удобен. А платная версия очень плотно интегрируется с Gmail - и позволяет удобно шифровать и подписывать письма (и автоматически расшифровать их) без перехода между сторонними вкладками и окнами.

А вы шифруете свои сообщения?
Учим теорию распределенных систем бесплатно, без регистрации и смс

#distributedsystems #learning #course

Параллельно с погружением в технические аспекты блокчейн систем, не будем забывать и о базовых вещах - о распределенных системах.

Сегодня я хотел бы порекомендовать отличный (и бесплатный!) курс по распределенным системам от Мартина Клепманна. (А он между прочим автор того самого Кабанчика). Осторожно - все на английском!

Курс преподается в University of Cambridge.

Что полезного можно узнать из курса?

- что такое распределенные системы и как узлы могут коммуницировать между собой

- канонические теоретические задачи от двух генералов до Византийских.

- время и как с ним работать в больших системах: физические и логические часы, синхронизация часов и причинно-следственная связь ивентов на разных узлах

- понятие репликации и кворумов, а также алгоритмы броадкаста сообщений

- алгоритмы консенсуса - от самых простых до еще более простых (RAFT)

- как функционирует Google Spanner и разные средства для коллаборации между пользователями

Курс мне очень понравился. Особенно хорошо и подробно автор разбирает алгоритмы консенсуса. RAFT вообще можно просто по слайдам брать и сразу имплементировать (может руки дойдут как-нибудь сделать).

Более упрощенно и живо о распределенных системах говорит Chris Colohan в этом курсе.

Более академично (и слегка монотонно) Lindsey Kooper рассказывает еще в этом курсе. Контент очень перекликается с Клепманном. Чуть более подробно рассматривается время и синхронизация в системах. Мало практического применения.
👍5
Как работает TLS/SSL

#security #cryptography #web

Я тут открыл для себя дополнение к Телеграм заметкам - Telegraph. Тут нет ограничений по количеству символов, легко редактировать посты и вставлять туда картинки и видео. Попробую писать основные заметки в таком формате.

Сегодня мы поговорим о практическом применении шифрования - TLS/SSL.
Почему тестирование - это не просто или в поисках идеального тест инженера

#testing

Сегодня я хотел бы затронуть тему мифов и предубеждений о том, что "тестирование - это просто" и "тестирования - это просто клацать кнопки".

Подробнее - тут
🔥9👍2
Подборка статей о тестировании и инженерии в целом [1]

#testing #engineering #compilation
Не хочу заниматься простым пересказом чужих статей, поэтому решил наиболее интересные из них сохранять и публиковать в виде подборок. По каждой статье будет краткое описание - почему стоит ее читать.
Надеюсь, такой формат тоже будет полезен.

Сегодня - компиляция numero uno.
👍11🔥3
Шпаргалка по Linux command line

#testing #linux

На работе мне частенько приходится коннектиться по ssh к удаленным машинам и работать там без графического интерфейса. Поэтому знание командной строки очень помогает.

Решил тут поделиться своей шпаргалкой по командной строке Linux, а также книгой по этой теме.
Тут только базовые вещи, никакого излишнего хардкора.

А какие команды вы используете чаще всего?
🔥9👍3
Недетерминированные ошибки в распределенных системах

#testing #paper #distributedsystems

Надежны ли известные распределенные системы, такие как Cassandra, ZooKeeper и другие? Какие сложные ошибки возникают в таких системах? Есть ли возможно такие ошибки обнаружить и предотвратить?

Сегодня мы разберем интересную научную работу, которая посвящена distributed concurrency багам в больших системах.
👍7
Как вести себя с разными людьми в IT

#softskills

Нашел интересный сайт с описанием разных типов людей на разных должностях в ИТ (и как с ними вести диалог и работать).
Много всего интересного нашел про тестировщиков и девелоперов.
5👍1