vitus_wagner: My photo 2005 (Default)
Завел себе новый GPG-ключ.
А то как-то в 2018 году пользоваться ключом с 1024-битным DSA (который по определению для хэширования только sha-1 может использовать) некузяво.

fingerprint 146E 1042 1041 F57D 8A85 8B8E 2CA8 1D40 F4AA 65EC

Новый ключ опубликован на keys.gnupg.net подписанный старым. Чтобы цепочка доверия хоть как-то выстраивалась.
vitus_wagner: My photo 2005 (Default)
Я тут осознал что к продвигаемой гуглем идее "давайте защищать все соединения TLS-ом", которая распространилась уже не только на веб, но и потихоньку наползает на электронную почту, я отношусь примерно так же, как отношусь уже 20 лет к идее писать одностраничные служебные записки и заявления в процессоре документов из офисного пакета.
vitus_wagner: My photo 2005 (Default)
[personal profile] lumag тут завел на гитхабе проект для системы подписывания ELF-бинарников. (кстати, лично мне непонятно почему gnutls, а не openssl или libnss, в которых код работы с X509 куда более mature).

А я подумал и пришел к выводу, что существует достаточно простое решение для того, чтобы подписывать не только бинарники, но и скрипты.

Почти все скриптовые языки, распространенные в наше время, поддерживают однострочные комментарии, начинающиеся со знака #.

Следовательно если в начало файла (в идеале сразу после шебанга), вставить блок комментариев, содержащих pem-энкодед PKCS7 подпись, выполняться оно будет точно также (ну там еще в питоне нужно позволить до подписи encoding указывать). Ну и проверить подпись тоже не слишком сложно - сначала хэшируем те строчки, которые до
# ----BEGIN PKCS7-----
пототом те, что после
# -----END PKCS7-----


Надо вообще тестовую реализацию наваять на питоне с ctypescrypto. Хотя боевая реализация должна быть на C и подписанным elf-бинарником. В принципе, можно сделать такой проверяющий враппер для интерпретаторов, который будет передавать интерпертатору открытый файловый дескриптор проверенным скриптом, вроде того, как раньше suidperl работал, и запускать эту систему там, где поддержки подписей на уровне ядра нет.

P.S. А еще можно подписывать JAR-файлы.

Правда, с появлением подписи сктиптов в полный рост встает вопрос - где и как должно быть разрешено выполнение скриптов-однодневок, которые пользователь имеет право запускать неподписанными. Вероятно, совпадение владельца файла с запускающим пользователем, при том что владелец не рут должно быть достаточным. Возможно надо поставить ограничение на mtime меньше суток в прошлом. В смысле, если собрался пользоваться скриптом в неизменном виде больше суток - подпиши его.
vitus_wagner: My photo 2005 (Default)
Шнайер сегодня запостил ссылку на описание шифра, который можно использовать без компьютера - вручную.

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

Очень удобно - если шпиона ловят и находят у него в колоду карт, то кто заподозрит, что это инструмент для шифрования?
vitus_wagner: My photo 2005 (Default)
Поскольку все равно выходные, и я еще не настолько выздоровел, чтобы носиться колбасой по лесам, собрался и таки сделал ctypescrypto совместимым с python3.

Ну во всяком случае тесты проходят. В одном месте, правда пришлось изменить поведение.
Функция repr от объекта X509 теперь возвращает конструкцию, содержащую pem, а не der-представление сертификата.

А так в основном обошлось конструкициями вида

 
   def __bytes__(self): 
       ...
   def __unicode__(self):
       ...
   if sys.version[0]=='2':
       __str__ = __bytes__
   else:
       __str__ = __unicode__


и определением своих названий для того, что проверяется в isinstance.
В одном месте сделал

    if sys.version[0]=='2':
        bintype = str
        chartype = unicode
        inttype = (int, long)
     else:
        bintype = bytes
        chartype = str
        inttype = int

ну и в дальнейшем этими переменными пользуюсь.

Еще была идея определить несколько декораторов для фукнций, которые должны возвращать
строку. Чтобы в python2 они возвращали то, что вернула сишная функция как есть, а в python3 конвертили из того, что указано аргументом в юникод. Поскольку у меня, как правило, очевидно откуда конвертить - если на выходе pem или какой идентификатор алгоритма, его из ascii, если поле asn1-структуры или пароль - из utf-8.

Но пока не собрался.

Новой версии пока не выпускал. Сначала надо проверить, не сломал ли я что на Windows и 32-битных архитектурах.

А еще стал отваливаться один тест на верификацию сертификата. Когда я этот тест писал и генерировал для него сертификаты, алгоритм SHA1 считался вполне кошерным. Пришлось новые сертификаты генерировать. Интересно, доживут ли эти сертификаты до естественной смерти (в смысле notAfter)? Или за долго до 2028 года их придется менять потому что опять что-нибудь взломают?
vitus_wagner: My photo 2005 (Default)
Пока я болел, на гитхаб прислали пулл-реквест для ctypescrypto с заголовком Add Python3 support.

"Ура, подумал я, кто-то не поленился это сделать".

Сегодня я наконец добрался и посмотрел. Человек наставил скобочки вокруг аргументов print в setup.py и решил что этого хватит.

Запускать python3 setup.py test он не пробовал.

Потому что если это сделать, то свалятся просто все тесты.

У меня там половина преобразований выходных данных сделана на методах __str__ и __unicode__, которые в python3 нужно менять соответсвенно на __bytes__ и __str__.
Плюс еще надо подумать и аккуратно решить - что делать если в некоторые методы передают питон-3ю строку - конвертировать ее в байты utf-8 или кидать TypeError. По прикладной логике бывает надо и так и так.

Ну и во всем test suite аккуратно расставить b'' перед всеми тестоввыми данными для шифрования или хэширования.


А человек надеялся отделаться тремя парами круглых скобок.
vitus_wagner: My photo 2005 (Default)
Вот интересно, почему проект DigSig сдох почти десять лет назад, а от bsign-а вообще следов не найдешь, кроме как в древних-древних архивах дебиана и убунты?

В принципе ж классная идея. Намного лучше чем всякие aide и integrit.

Особенно если вместо gpg-шных подписей туда положить CMS-ные. Ну и соответствующую ключевую инфраструктуру выстроить (ровно ту, которая у меня в Детях Пространства описана - корень доверия - ключ владельца компьютера, который выписывает на ключ производителя дистрибутива сертификат с pathLen=1).

По нынешним временам, когда все ломают всех верификация бинарника при загрузке - это очень полезная вещь. Причем, при налаженном процессе разработки это не сложнее. чем подписывать пакеты (что делают все rpm-based дистрибутивы) или их метаинформацию
(что делают некоторые rpm-based и все deb-based)
vitus_wagner: My photo 2005 (Default)
Вот!

Конечно, строил в основном Вартан. Теперь бы еще в Федору спонсоров найти.
vitus_wagner: My photo 2005 (Default)
http://www.cbc.ca/news/technology/tapdance-refraction-networking-decoy-routing-test-usenix-1.4249177

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

Работать, правда, будет при условии, что большая часть мира управляется нерепрессивными режимами, которые не только ничего не блокируют, но и всячески поддерживают своих ISP по части преодоления блокировок.
Как раз в выполнение этого условия верится с трудом.
vitus_wagner: My photo 2005 (Default)
Тут, посколькуо в Debian stable пришла openssl 1.1, из которой ГОСТ-ы из дистрибутива выкинули, [personal profile] beldmit сподвиг меня собрать gost-engine в отдельный пакет

Поэтому теперь на github в организации gost-engine завелись два новых репозитория debpkg и rpm где содержится все необходимое чтобы собрать deb- или rpm- пакеты с gost-engine для систем, где в комплекте идет openssl 1.1.0

Пробовалость пока только под Debian stretch и Fedora 26. Ну и всякие мелочи типа аккуратного заполнения файла copyright еще предстоят.
vitus_wagner: My photo 2005 (Default)
Выяснилось, что stretch я похвалить немного поторопился.

Как оказалось он молча, без вопросов апгрейдит keepass 0.43 на keepass 2.0.3.

Засада в том, что keepass <2 и keepass 2.x это программы у которых нет ничего общего, кроме названия и назначения.

Например, несовместим формат файлов. То есть keepass 2.x умеет один раз симпортировать базу от 1.x но записать обратно - уже никак.

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

Поставил пока пакеты из jessie на hold. И думаю - стоит переходить на keepass 2.x
или не стоит?

Что-то мне все андроидные клиенты, совместимые с keepass2 вызывают подозрение:

У keepass2android интерфейс переписан с java на mono. Это для андроид-то!
KeePassMob содержит в себе код работы с сетью (dropbox), что по-моему для пассворд-менеджера под андроид категорически недопустимо. Поскольку уж если в этой дырявой системе есть способ защититься от доступа в сеть, то именно пассворд-менеджер обязан это сделать.

Поэтому я думаю о том, что может быть стоит еще какой password-manager поискать.

Требования:

1. Наличие клиентов для linux и android
2. Приемлемая usability для android, у которого жутко неудобная работа с clipboard
3. Приемлемая юзабилити под X11.
4. Возможность копирования базы паролей с устройства на устройство как файла по ЛЮБОМУ
протоколу передачи файлов scp, obex, smb.
5. Наличие в базе хотя бы пары дополнительных колонок кроме имя и пароль.
В качестве бонусов:
5. Команд-лайн интерфейс под linux.
6. Возможность хранения базы паролей в version control.
vitus_wagner: My photo 2005 (Default)
Для статьи про постквантовую криптографию: "Revenge of SIDH".

Но, блин, 200мс на 2.6ГГц процессоре.,,
vitus_wagner: My photo 2005 (Default)
https://eprint.iacr.org/2017/351.pdf

Я конечно, считаю что все изделья Бернштейна относятся к категории "может это не практично, согласитесь - эстетично" и не понимаю тех, кто держит qmail в продакшне, да и основная претензия к tox у меня такова - почему они DJB-шную криптобиблиотеку используют, но тем не менее штука забаваная.
vitus_wagner: My photo 2005 (Default)
Что-то я не нашел очевидного (казалось бы) решения по защите хранящегося на (хостинговом, доступном всяким нехорошим людям) сервере почтового архива, которое бы работало так:

1. В распоряжении MDA есть открытый ключ gpg/сертификат X,509 для каждого пользователя.
2. Любое письмо, прилетающее по SMTP (в наше время в норме защищенное TLS по дороге) шифруется этим ключом конечного получателя перед тем, как сложиться в его maildir (но после того как оно прошло через фильтры sieve). Ну да, сеансовый ключ придется каждый раз генерировать. Ну и что?
3. В распоряжении IMAP-сервера есть зашифрованный приватный ключ. Когда пользователь логинится на IMAP-сервер, его аутентификация производится путем расшифровки этого ключа. После этого можно любую хранящуюся почту расшифровывать и пользователю выдавать.


Причем шифровать письма совершенно спокойно можно вместе с заголовками.
То есть и метаинформацию without user consent хрен достанешь.

Модификации требуемые для IMAP-сервера достаточно тривиальные.


Но почему-то никто так не сделал. Во всяком случае я такого не нашел.

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

Видиом, идея full-disk encryption (каковая есть зло) людям глаза застит. В то время как никто не мешает maildir шифровать пофайлово.

Правда, немножко непонятно как быть с тренировкой байесовского антиспама в такой ситуации. Ну ладно, допустим ham мы будем в sa-learn скармливать непосредственно в ходе сессии, когда мы его можем расширфровать (а спам и шифровать не обязательно). Но не явится ли байесовская база, которая должна быть доступна на чтение MDA каналом утечки информации?
vitus_wagner: My photo 2005 (Default)
Задумался над идеей назначать клиентам OpenVPN ip-адреса по значению поля subjectAltName в их сертификатах.
RFC 5280 предусматривает тип поля IP в SubjectAltName, и OpenSSL его вполне поддерживает.

Идея хороша тем, что при подключении нового клиента не нужно вообще ничего делать на сервере. Удостоверяющий центр, выписывая клиенту сертификат (что все равно надо сделать) выделяет ему IP и DNS-имя и прописывает иъ в этот сертификат. А задача сервера - просто согласиться с тем что подписано удостоверяющим центром.

Правда, похоже просто так не получится. Что-то я не вижу там, чтобы client-connect скрипто получил доступ ко всему сертификату или хотя бы к subjectAltName.

Upd Благодаря [personal profile] dzz родилось более простое решение:
Сейчас у меня в скрипте client-connect соответствие CN сертификата клиента и выданного ему IP записывается в динамическую зону DNS. Чтобы на того клиента логиниться по имени.

Так вот - сначала надо в DNS посмотреть, и если там это CN есть, то сказать openvpn-у "этому дай вот этот адрес". А вот уж если адреса такого в DNS нет - назначать первый свободный.
Это, конечно, не гарантирует от того что адрес будет переисиользован пока клиент будет в оффлайне. но все же.
vitus_wagner: My photo 2005 (Default)
[personal profile] beldmit где-то раскопал что стандартный набор персонажей для криптографических сказочек пополнился:

Nancy is the Nation-State attacker interested in mass surveillance and breaking as many protocols as possible rather than breaking any particular single instance of a protocol. Traffic analysis, attacks on entire families of keys, hardware and expertise both well beyond other attackers, subversion of cryptographic standards, using legal force to make otherwise trustworthy Trents and Harolds act in bad faith, etc.

Harold is the manufacturer of hardware like routers and NAT boxes, etc. He is often located in nations with adversarial interests in the
activities of the nations or companies where the hardware gets used.

Считайте меня расистом и чинофобом, но я бы второго из этих персонажей обозвал не Гарольдом, а "дядюшкой Хо".
vitus_wagner: My photo 2005 (Default)
http://spectrum.ieee.org/telecom/security/protecting-gps-from-spoofers-is-critical-to-the-future-of-navigation

Интересная статья в IEEE Spectrum про то как подделывается сигнал GPS и как с этим можно пытаться бороться.

Сюжет

Jan. 23rd, 2016 08:38 am
vitus_wagner: My photo 2005 (Default)
Грустная история о том, как девочка по имени Ева Мэллори попала в какую-то тусовку юных криптографов, не имея не малейшего представления о сложившихся названиях для ролей.
vitus_wagner: My photo 2005 (Default)
Сижу, читаю с утра openssl-dev, никого не трогаю...

И вдруг вижу.

А-а-а, это уже не зомби, это прям личи какие-то атакуют! 2016 год послезавтра, а тут народ активно патчит OpenSSL на предмет сборки DJGPP и работы с Waterloo TCP.

Когда я десять лет назад Tcl 8.5 под DJGPP портировал я уже себя некромантом чувствовал...

Ох, чувствую, ждет нас через 22 года веселое разбирательство в том, в каком количестве унаследованных систем остался 32-битный time_t...
vitus_wagner: My photo 2005 (Default)
http://slashdot.org/story/15/12/09/1438201/alleged-bitcoin-creator-raided-by-australian-authorities

Стоило появиться хотя бы слухам о том, кто такой Сатоши Накомото, как подозреваемого в изобретении биткойна посетила полиция (австралийская) с обыском. Делая невинные глаза и утверждая что "биткойны тут ни при чем, мы по поводу уклонения от налогов" (налогов с чего? Не с половины же запасов мировых биткойнов, которыми, опять же по слухом владеет Сатоши).

А когда я заявлял что Сатоши Накомото не надо появляться живьем на Нобелевской лекции, если он получит премию, а надо читать лекцию по видеосвязи через Tor, мне не верили.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

April 2019

S M T W T F S
  1 2 3 456
789 10 11 12 13
14 15 16 17181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 19th, 2019 12:18 pm
Powered by Dreamwidth Studios