Pull to refresh
76
Karma
0
Rating

User

Постквантовая реинкарнация алгоритма Диффи-Хеллмана: вероятное будущее (изогении)

«Актив» corporate blog Information Security *Cryptography *Algorithms *


Сегодня мы снова поговорим про протокол Диффи-Хеллмана, но уже построенный на более необычных конструкциях — изогениях, которые признаны устойчивыми к атакам на будущем квантовом компьютере. Квантовый компьютер, который сможет удержать в связанном состоянии порядка нескольких тысяч кубит, позволит находить закрытые ключи по открытым ключам у всех используемых сейчас асимметричных криптосистем. Число кубит для взлома RSA равно удвоенному числу бит в модуле (т.е. для разложения на множители модуля RSA длиной 2048 бит потребуется 4096 кубит). Для взлома эллиптических кривых необходимы более скромные мощности «квантового железа»: для решения задачи ECDLP для кривых над простым полем (такие кривые есть и в отечественном стандарте подписи ГОСТ Р 34.10-2012 и в американском ECDSS) c модулем кривой длиной n бит требуется 6n кубит (т. е. для модуля в 256 бит надо ~ 1536 кубит, а для 512 бит ~ 3072 кубит). На днях российско-американская группа ученых установила мировой рекорд, удержав в связанном состоянии 51 кубит. Так что у нас есть еще немного времени для изучения изогений (а также решеток, кодов, multivariate и подписей, основанных на хэшах).
Кстати, изогении считаются одним из наиболее вероятных кандидатов на победу на конкурсе NIST постквантовых алгоритмов для замены RSA и эллиптических кривых в ближайшие несколько лет.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Views 15K
Comments 29

Что под капотом у виртуальных дисков? (на примере VHD и VHDX)

АСЕLab corporate blog


Вы когда-нибудь работали с виртуальными машинами, создавали виртуальные диски? Если да, то наверняка вы обратили внимание на такие удобные возможности, как динамическое увеличение размера диска (возможность хранить только то, что было записано) и возможность создания snapshot'ов — моментальных снимков состояния диска. Если вам интересно узнать, каким именно способом достигаются эти возможности и как хранятся данные в VHD и VHDX файлах — добро пожаловать под кат.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Views 42K
Comments 6

Простое суффиксное дерево

Programming *Algorithms *
Tutorial
ДеревоСуффиксное дерево – мощная структура, позволяющая неожиданно эффективно решать мириады сложных поисковых задач на неструктурированных массивах данных. К сожалению, известные алгоритмы построения суффиксного дерева (главным образом алгоритм, предложенный Эско Укконеном (Esko Ukkonen)) достаточно сложны для понимания и трудоёмки в реализации. Лишь относительно недавно, в 2011 году, стараниями Дэни Бреслауэра (Dany Breslauer) и Джузеппе Италиано (Giuseppe Italiano) был придуман сравнительно несложный метод построения, который фактически является упрощённым вариантом алгоритма Питера Вейнера (Peter Weiner) – человека, придумавшего суффиксные деревья в 1973 году. Если вы не знаете, что такое суффиксное дерево или всегда его боялись, то это ваш шанс изучить его и заодно овладеть относительно простым способом построения.
Читать дальше →
Total votes 41: ↑40 and ↓1 +39
Views 67K
Comments 20

Патчим процессы в Linux на лету при помощи GDB

Python *Debugging *
Техники перехвата функций в Linux хорошо известны и описаны в интернете. Наиболее простой метод заключается в написании динамической библиотеки с «функциями-клонами» и использовании механизма LD_PRELOAD для переопределения таблицы импорта на этапе загрузки процесса.

Недостаток LD_PRELOAD в том что необходимо контролировать запуск процесса. Для перехвата функций в уже работающем процессе или функций отсутствующих в таблице импорта можно использовать «сплайсинг» — запись команды перехода на перехватчик в начало перехватываемой функции.

Также известно, что в Python имеется модуль ctypes позволяющий взаимодействовать с данными и функциями языка Си (т.е. большим числом динамических библиотек имеющих Си интерфейс). Таким образом ничто не мешает перехватить функцию процесса и направить её в Python метод обёрнутый в С-callback с помощью ctypes.
Читать дальше →
Total votes 38: ↑36 and ↓2 +34
Views 14K
Comments 6

J может быть читаемым

Abnormal programming *Functional Programming *
Tutorial
Жесть! Это как программирование через регулярные выражения…
Нет, вы меня не заставите! Больше никогда!
Смотрю на код и чувствую себя идиотом. Это правда не эзотерический язык типа brainfuck? Им кто-то реально пользуется? И эти программы потом читают?
quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
Perl нервно курит в сторонке.
Хабрахабр о J

imageJ — корейский среди языков программирования. Взрыв на фабрике спецсимволов. Куча скобочек, точек, слэшей, и всё это ещё и работает. Не иначе как по велению чёрной магии, а то и самого Сатаны.

Некоторые из тех, кто пишет на J, забывают простые правила написания любого кода в погоне за краткостью или просто увлекшись. Эти правила не новые, но они приобретают критическое значение применительно к APL-подобным языкам, потому как при чтении конструкций вроде ((]i.~[:{.[){([:{:[),]`([:<[$:[:>])@.([:32&=[:3!:0[:>]))"2 0 даже тренированный мозг сворачивается в трубочку.

Итак, простые правила написания читаемого кода на J под катом.

Без словарика под кат лучше не соваться. Вас предупреждали.
И напомню, список полезных ссылок здесь.
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Views 18K
Comments 24

Про компоновку, dependency hell и обратную совместимость

Website development *
Sandbox
В данной статье речь пойдёт о высокоуровневом взгляде на компоновку. Где ищутся разделяемые библиотеки на Linux, BSD*, Mac OS X, Windows, от которых зависят приложения? Что делать с обратной совместимостью? Как бороться с адом зависимостей?

Читать дальше →
Total votes 50: ↑47 and ↓3 +44
Views 20K
Comments 19

Зачем нам всем нужен SAT и все эти P-NP (часть вторая)

Algorithms *Mathematics *
В предыдущей части были освещены общедоступные вопросы, касающиеся SAT и P-NP: история проблемы, интуитивные определения классов и задач, указаны основные приложения SAT и основные последствия, в случаи решения P ?= NP (там же можно найти достаточное число ссылок на различный материал для самостоятельного изучения тематики).

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



картинка из статьи Boolean Satisfiability: From Theoretical Hardness to Practical Success (Communications of ACM)

Читать дальше →
Total votes 54: ↑51 and ↓3 +48
Views 23K
Comments 24

Еще раз об архитектуре Android приложения или джентльменский набор библиотек

Website development *Development for Android *
Вот надумал написать обзор библиотек с помощью которых легко и удобно писать приложения под Android.
Список вырисовывается такой:

Если заинтересованны прошу под кат.
Читать дальше →
Total votes 69: ↑62 and ↓7 +55
Views 57K
Comments 83

OpenCourseWare

Master UP corporate blog
Недавно нам на глаза попался список ссылок на бесплатные онлайн-курсы от различных учебных заведений США. Список показался интересным, его запокетили, чтобы когда-нибудь посмотреть, что эти курсы из себя представляют. Вот, наконец-то, руки дошли.

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

Интересный факт: Оказывается существует целое движение — OpenCourseWare, которое началось в 1999 году в Германии, когда один из университетов разместил видео своих лекций онлайн. Вскоре и други университеты подхватили инциативу и сейчас OpenCourseWare — это достаточно популярная штука, которая представляет из себя курсы и бесплатные учебные материалы, созданные в университетах и распространяющиеся через интернет.
Как правило ресурсы OCW не требуют регистрации и не предлагают никаких сертификатов о прохождении. Все обучение — в качестве self-improvement.

Под катом список бесплатных онлайн-курсов и уроков от лучших учебных заведений
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Views 30K
Comments 5

Ruby: cheatsheet для изучения

Ruby *Programming *
Tutorial
Это — статья-roadmap-cheatsheet для изучающих Ruby. Вместо того, чтобы рассказывать очередной how-to я постараюсь расписать все те вещи, которые, на мой взгляд, можно изложить кратко и емко, с упором на то, что программисту пришедшему с других языков и платформ может показаться не очевидным, антипоисковым и просто затратным по времени на изучение без подсказок — на остальное просто дам ссылки. Не смотря на то, что в природе существует множество туториалов/кастов/книг/чего угодно по чему угодно — именно такого формата мне самому всегда не хватает. И по сути, это те вещи, которые чаще всего рассказываю при вопросах «а как оно вообще?», «с чего начать?», «а как делается такая вот штука?», «а какой gem лучше?». Кстати, пока работал над этой статьей на Хабре появилась похожая про Python — видимо, идея витает в воздухе.
Читать дальше →
Total votes 49: ↑49 and ↓0 +49
Views 58K
Comments 22

Решение (несложных) криптографических задач на языке Haskell

Cryptography *Haskell *
Вторая инкарнация вводного курса по криптографии на Coursera порадовала тем, что в ней для решения задач можно было пользоваться произвольным языком программирования. Ну и поскольку мои познания в криптографии ограничивались тем, что я прочитал в рассказах «Золотой жук» Эдгара По и «Пляшущие человечки» Артура Конан-Дойля, то я с удовольствием прослушал все лекции, порешал задачи и поучаствовал в жизни тамошнего форума.

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

  1. Поточные шифры.
  2. Блочные шифры.
  3. Аутентификация сообщений.
  4. Аутентификация шифровок.
  5. Обмен ключами.
  6. Шифрование при помощи открытых ключей.

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

Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Views 9.5K
Comments 20

Вся правда об XSS или Почему межсайтовое выполнение сценариев не является уязвимостью?

Positive Technologies corporate blog Information Security *Website development *
Должен признаться, что чтение комментариев на Хабре к практически любым постам, описывающим очередную XSS на каком-либо популярном сервисе или сайте, способно повергнуть в уныние любого, кто так или иначе связан с безопасностью веб-приложений. С учетом распространенных среди разработчиков мифов и заблуждений о межсайтовом выполнении сценариев, нет ничего удивительного в том, что он и по сегодняшний день входит в число наиболее распространенных проблем безопасности веб-приложений: согласно данным отчета Positive Technologies за 2010-2011 годы, XSS были подвержены 40% проанализированных веб-приложений, а из отчета Firehost за второй квартал 2012 года следует, что XSS составила 27% от числа зарегистрированных хостером атак.

И поскольку, заминусовать этот пост можно и за один только его заголовок, то поспешу пояснить: межсайтовое выполнение сценариев действительно не является уязвимостью, но только потому, что оно является атакой. В чем разница, почему это важно, как со всем этим бороться и какие еще мифы и заблуждения распространены об XSS — читаем под катом.
Читать дальше →
Total votes 178: ↑169 and ↓9 +160
Views 111K
Comments 48

Руководство по магическим методам в Питоне

Python *
Translation
Tutorial
Это перевод 1.17 версии руководства от Rafe Kettler.


Содержание


  1. Вступление
  2. Конструирование и инициализация
  3. Переопределение операторов на произвольных классах
  4. Представление своих классов
  5. Контроль доступа к атрибутам
  6. Создание произвольных последовательностей
  7. Отражение
  8. Вызываемые объекты
  9. Менеджеры контекста
  10. Абстрактные базовые классы
  11. Построение дескрипторов
  12. Копирование
  13. Использование модуля pickle на своих объектах
  14. Заключение
  15. Приложение 1: Как вызывать магические методы
  16. Приложение 2: Изменения в Питоне 3


Вступление


Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
Читать дальше
Total votes 143: ↑139 and ↓4 +135
Views 431K
Comments 59

NeoQUEST – 2013: начало регистрации

НеоБИТ corporate blog Information Security *CTF *

Приветствуем всех в Новом Году! Утомили затянувшиеся праздники? Кипит возмущенный бездельем разум? Есть шанс направить накопленную энергию на решение интересных задач. Регистрация на NeoQUEST-2013 объявляется открытой, а сам хак-квест начнется уже совсем скоро – 4-го февраля! По результатам NeoQUEST-2012 мы получили большое количество feedback-ов (за что огромное вам всем спасибо), постарались их учесть и сделать NeoQUEST-2013 еще лучше.

Под катом – вся информация о квесте.

Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views 7.6K
Comments 12

Полноценное Python приложение на Android

Self Promo


В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.
Читать дальше →
Total votes 109: ↑106 and ↓3 +103
Views 121K
Comments 45

Подмена XMLHttpRequest или как не трогая тонны готового js-кода изменить поведение всех ajax-запросов

Ajax *JavaScript *
Sandbox
Здравствуйте, в этой маленькой заметке расскажу немного про ООП в JS, объект XMLHttpRequest, паттерн прокси, и дружелюбие джаваскрипта в этом плане.

Была у меня сегодня такая задача — есть проект, который довольно активно использует ajax-запросы, но вот проблема — бекенд у нас так устроен, что разаутентифицирует пользователя, если тот не активен в течение, скажем, получаса. В итоге случалось такое, что пользователь, пытаясь совершить какое-то действие, которое использует аякс, не мог его совершить (уж извините за тавтологию), нужно было решить эту проблему.
Читать дальше →
Total votes 50: ↑43 and ↓7 +36
Views 19K
Comments 39

Sublime Text 2

Programming *
Пару месяцев назад я случайно наткнулся на массу положительных отзывов о текстовом редакторе Sublime Text 2. Попробовав его в деле, я не разочаровался. Теперь это мой основной рабочий инструмент.

Sublime Text 2 — это платный текстовый редактор, написанный на C++, который:

  • Работает в Linux, OS X и Windows
  • Обладает приличной скоростью работы
  • Приятным интерфейсом (включая всевозможные анимации)
  • Гибко настраиваем (правда, не в GUI, а в json-конфигах)
  • Имеет множество плагинов, число которых растёт как на дрожжах
  • Поддерживает VIM-режим
  • Использует fuzzy-поиск
Читать дальше →
Total votes 235: ↑207.5 and ↓27.5 +180
Views 305K
Comments 284

Метаклассы в Python

Python *
Translation
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

Читать дальше →
Total votes 91: ↑88 and ↓3 +85
Views 159K
Comments 17

OutWiker. Open Source программа для хранения заметок

Open source *
Привет, хабравчане.

На днях я выложил новую версию программы для хранения заметок OutWiker. Когда-то, больше года назад, я уже писал про нее на Хабре, за это время программа много раз обновлялась, обрастала новыми возможностями, что уже нет смысла сравнивать последнюю версию программы с ее (поза)прошлогодней версией.



OutWiker — это кроссплатформенная (Windows, Linux) программа для хранения заметок в виде дерева. Распространяется OutWiker с открытыми исходниками. Особенностью программы является то, что все записи хранятся не в одном файле, а структура формируется из вложенных файлов и папок. Кроме того, программа поддерживает несколько типов страниц: простые текстовые страницы, страницы, где для оформления заметок используется HTML и страницы в формате викинотации (напоминающую pmWiki).
Читать дальше →
Total votes 83: ↑74 and ↓9 +65
Views 28K
Comments 67

Взломать Wi-Fi за 10 часов

Журнал Хакер corporate blog Information Security *
Еще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


Читать дальше →
Total votes 304: ↑294 and ↓10 +284
Views 1.5M
Comments 164

Information

Rating
Does not participate
Location
Голицыно (Московская обл.), Москва и Московская обл., Россия
Date of birth
Registered
Activity