• Используем GPG для шифрования сообщений и файлов

    Кратко о том, как создавать ключи, шифровать и подписывать файлы и отправлять ключи на сервер ключей.



    GPG (также известный как GnuPG) создавался как свободная альтернатива несвободному PGP. GPG используется для шифрования информации и предоставляет различные алгоритмы (RSA, DSA, AES и др.) для решения этой задачи.

    Читать дальше →
    • +26
    • 10,3k
    • 9
  • Мобильное приложение Signal обходит государственную блокировку, пропуская трафик через Google App Engine


      Схема обхода государственной цензуры через крышевание доменов, из научной работы 2015 года

      С 21 декабря 2016 года криптомессенджер Signal от Open Whisper Systems стал использовать оригинальный метод обхода государственной цензуры, из-за которой от сети оказались отключены пользователи из Египта и ОАЭ. Метод называется «крышевание доменов» (domain fronting) и подробно описан в 2015 году в научной работе исследователей из университетов Калифорнии, Беркли и Принстона.

      Цензор видит только домены, указанные в DNS-запросе и в поле TLS SNI, но он не видит HTTP заголовок Host, в котором система и прячет реальное доменное имя для отправки трафика. Реальное доменное имя надёжно спрятано с помощью шифрования HTTPS.
      Читать дальше →
    • Внутренности протокола, которым браузеры передают голос и видео

      • Перевод
      image

      WebRTC, технология голосовых и видеозвонков в браузерах (а еще realtime передачи произвольных данных, peer-to-peer пробивания NAT и захвата экрана) никогда не была простой. Долгая история, несовместимости между браузерами, запутанная документация, множество решаемых задач и используемых протоколов. Возможность позвонить и принять звонок из браузера всегда была одной из ключевых «фишек» нашей платформы Voximplant, и так как мы в этом неплохо разбираемся, то стараемся следить за интересными статьями и адаптировать их для аудитории Хабра. Под катом перевод свежей статьи от ребят из callstats.io — сервиса сбора статистики по качеству звонков для браузера. В небольшой статье они рассказывают о протоколе RTP с помощью которого, собственно, браузер и передает пакеты с голосом или видео.
      Читать дальше →
    • Чего бы почитать. Малоизвестные и замершие научно-популярные статьи и блоги

      Здесь я постарался собрать малоизвестные статьи и блоги, которые заслуживают больше просмотров.

      myak555 Мир сквозь нефтяные очки, автор нефтяник. Десятки статей, где популярно изложено о пике ресурсов и world3, мальтузианстве и уравнениях Ферхюльста, нефти и сланцах. Начните с этого поста.

      Роберт Ибатуллин, Вымышленные миры
      Старая страничка, есть любопытные прогнозы на ближайшие десятилетия. Будущее 2008 года.

      astronet.ru Астрономическая научная картинка Больше ста популярных статей о новых наблюдениях и достижениях астрономии, начиная с 2003 до 2014 года. Начиная с 2010 становится спорадическим, а потом замерзает. Сейчас нечто подобное можно найти на elementy.ru

      flavorchemist Химия вкуса, пищевая промышленность. Предупреждение: После чтения мороженое и йогурты станут менее вкусными.
      Читать дальше →
      • +25
      • 14,6k
      • 6
    • Директивы prefetch и preload в webpack

      • Перевод
      В webpack 4.6.0. появилась поддержка директив prefetch и preload (они выглядят, соответственно, как «магические комментарии» webpackPrefetch и webpackPreload к командам import()). С их помощью браузеру можно давать подсказки о ресурсах, которые могут понадобиться пользователю в недалёком будущем. Браузер заблаговременно загружает такие ресурсы, что позволяет улучшить впечатление пользователя от работы с сайтом.

      image

      В материале, перевод которого мы сегодня публикуем, речь пойдёт о том, как пользоваться этими директивами для оптимизации производительности веб-сайтов.
      Читать дальше →
    • Опыт использования мотошлема пешеходом для защиты от низких температур зимой на Дальнем Востоке России

        Этой статьи, по хорошему, здесь быть не должно, поскольку научность проведенного исследования оставляе… эээ… не соотве… эээ… отсутствует. Тем не менее я оставляю за собой право считать что в нём всё таки пристутсвует некоторая научная новизна и актуальность (как минимум два месяца в году на территории Сибири и ДВ). Кроме того, после того как в хабе «здоровье гика» появилась статья про матрасы…

        Итак, как я думаю что выгляжу когда одеваю зимой мотошлем:

        image

        Как я на самом деле выгляжу:
        Читать дальше →
      • Так ли безопасен Tox, как его малюют?

          Tox Sux
          Всем привет!

          Мне нравится Tox, я уважаю участников этого проекта и их труд, который иногда даже удается использовать по назначению. В стремлении помочь сообществу, я заглянул в код, заметил потенциальные проблемы, которые могут привести людей в погонах к вам домой к весьма печальным последствиям.

          В последнее время наблюдается нездоровая тенденция переоценивать защищенность подобных систем только на основании того, что они P2P. Буду излагать объективные факты и дополнять их своими комментариями, чтобы не бросаться громкими фразами в пространство. Выводы предлагаю делать самостоятельно.

          Заранее отвечу на вопрос: мой pull request был принят.
          А теперь факты:
        • Как я взломал паяльник

          Фраза звучит несколько странно? Спасибо техническому прогрессу — не так давно «сфотографировать на телефон» звучало не менее странно.

          image

          В конце прошлого года я купил паяльную станцию, уже успевшую получить ярлык «народная». Её достоинства: удобные жала-картриджи T12, приличная мощность (до 72W в теории), быстрый нагрев (единицы секунд), невысокая цена. (Подробнее ознакомиться со станцией можно в этом шикарном обзоре)

          Купил я самую последнюю версию hardware 2.1s, и немного расстроился, увидев что прошивка старая. Разумеется руки зачесались обновить. Зная что «сердцем» паяльной станции является STM32F103C8 (популярный микропроцессор ARM Cortex-M3 производства STMicroelectronics) — тем интереснее было покопаться, т.к. я когда-то уже моргал светодиодом на STM32F4Discovery.

          Тут же были припаяны 4 провода SWD интерфейса, подключен программатор, залита прошивка.
          И… Станция потребовала активацию!
          Читать дальше →
        • Вайфай мне в розетку: прокидываем интернет нестандартным путём

            Привет, Geektimes! Сегодня я хочу рассказать об одной штуковине, которая меня здорово выручила и помогла «починить» беспроводную сеть дома у родителей.

            image

            Картинка из комментариев к посту apcsb на Хабре про неочевидные нюансы WiFi

            Началось всё с того, что один из провайдеров подключил очень-очень много квартир в доме и каждому повесил WiFi роутер в прихожей, вне зависимости от того, нужен он там или нет. Просто всем по сплиттеру оптики в витую пару, роутеру и выкидышу на телефонную розетку, пользуйтесь. В результате 2.4 ГГц диапазон оказался загажен настолько, что о 40 МГц полосе и думать не приходилось…
            Читать дальше →
          • Compact varint — уникальность и большие значения за ту же стоимость

              UPD 2018.03.15: Git давно использует свой вариант compact varint. Различия в послесловии.


              Внимание: Код представленный в статье немного отличается от оригинальных EncodeVarint и DecodeVarint и даёт другие результаты. Будьте внимательны.


              В multiformats/unsigned-varint обсуждении правильной записи числа в varint было замечено что многие числа в оригинальном varint могут быть записаны в последовательности разной длинны. Это даст разные блоки и их хеши при идентичных значениях кодированных в протобуфер.


              Оригинальный varint


              Оригинальный varint просто делит число на кусочки по 7 бит. И записывает их в порядке от младшего к старшему добавляя к каждому кусочку старший 8ой бит (MSB — most significant bit). Значение этого бита зависит от того последний это кусочек (0) или нет (1).


              Таким образом например значение 0 мы можем записать во многих вариантах:


              1. 0000 0000 (0x00) varint = 0
              2. 1000 0000 0000 0000 (0x8000) varint = 0
              3. 1000 0000 1000 0000 0000 0000 (0x808000) varint = 0
                и так далее.

              Compact varint


              Я подумал что можно начинать значения контейнера большего размера от максимального значения предыдущего контейнера + 1. Ведь если мы используем контейнер такого размера то число должно быть больше максимума предыдущего контейнера.

              Читать дальше →