привет всем, тема этой сессии - одитинг криптографии, и у нас есть потрясающая панель, чтобы обсудить, что означает аудит криптографии, включая лучшие практики мы также хотели бы поговорить о том, что мы видим как будущее криптографии аудиты и контекст блокчейнов криптовалют и других распределенная технология, особенно с точки зрения конфиденциальности, чтобы кто мы? Я Льюис Штайнингер, генеральный директор с наименьшим авторитетом и сторонник технологии повышения конфиденциальности доступны как можно большему количеству людей я здесь как модератор этой панели, и с нами у нас также есть четыре участника дискуссии, и это jp amazon thomas pornin Тейлор Хорнби и Исида Агора Лавкрафт Итак, прежде чем мы начнем обсуждение, давайте представимся вчетвером должен начать делать это хорошо, всем привет, я очень рад быть на этой панели с эээ, все эти люди, так что я jp, я занимаюсь криптовалютой уже 15 лет примерно, и я занимаюсь криптоаудом, может быть, девять или 10 лет много блокчейнов, все это в последнее время, а также полное раскрытие для Forza Cash, так что вы очень рады поделиться моими опыт об этом хорошо, так что я tomaporna, я занимаюсь криптографией для 25 лет и аудит, в частности, около четырех лет я работаю в группе ntc и это то, что я делаю все время и до этого я делал много вещи, включая реализации, и я несколько известен библиотекой tls, называемой очень ssl, и я много над этим делаю для dt Привет, я Тейлор, я относительно новичок по сравнению с другими участники дискуссии, но я в значительной степени начал в криптоаудит путем нахождения кучи ужасных проблем в случайных php проектах и написал об этом в блоге, а потом я вроде как закончил консультационную работу по аудиту файловых систем, и теперь я работая в компании по производству электрических монет, помогая обеспечить zcash Привет всем, я изис, для кого я занимаюсь криптовалютой эм около 10 лет в прошлом я работал для тур-проекта я работал над проектами с eff и сигнализируйте, что я работал с фондом Zed Cash и множество других, для которых я проводил криптоаудит примерно меньше, чем другие люди здесь, наверное, лет пять и я очень рад присоединиться к этой панели и Большое спасибо за эти представления, ладно, так что я просто скажу аудитории, пожалуйста, не стесняйтесь присылать свои вопросы в чат, и мы возьмем немного в последние 10 минут сеанса так что давайте перейдем к теме, я собираюсь начать с здесь принципиальный вопрос в чем важность аудита криптографии и почему это важно в контексте блокчейны криптовалют и распределенные технологии хорошо, начну, важно провести аудит, потому что у нас ничего нет лучше и этого недостаточно, но мы знаем, что криптография настолько высока, потому что нравится все в безопасности, но, может быть, тем более, что это много математики, которую вы не можете проверить на безопасность, вы можете попробовать есть работы по доказательству, но в конечном итоге единственный известный способ сделать что-то безопасное - это попытаться сломать его и посмотреть, сопротивляется ли оно, и это то, что мы делай, и у тебя нет выбора, иначе ты можешь получить все ваши деньги разграблены, например, да, действительно важным аспектом также является то, что если вы создаете что-то, войдите в это мышление, когда вы строите вещь и проектируете вещь, которую вы убеждаете себя, что это безопасно, и на нее сложно смотреть на это сами и постарайтесь найти проблемы в своих работа, поэтому это действительно важно гм нанять кого-то постороннего, чтобы он вошел и хотел сначала изучить систему время и посмотреть на это свежим взглядом, чтобы найти эти проблемы гм, и это действительно важно для криптовалюты, в частности, потому что на кону деньги, так что да, я бы добавил, что хотя у нас есть некоторые машинные методы, которые мы тестируем, у нас есть формальные проверка, которая никогда не убедит вас, что код соответствует математике, вам нужен человек посмотреть на него, чтобы сказать, что это правильно, и он делает идеальную вещь Я думаю, что для всей вашей аудитории очень важно знать кое-что Я повторяю это последние 10 лет, но люди этого не понимают так что если вы организуете аудит безопасности, это не аудит соответствия например, аудит sub-2 или isaiah не означает, что ваше приложение безопасно после аудита лучше назвать это ммм возможно, оценка безопасности, проверка безопасности, и это просто часть жизненного цикла разработки программного обеспечения sdlc безопасности и, как говорили мои друзья, это может быть дополнение для других методов тестирования он дополняет первое тестирование до модульного тестирования эээ, но другой аудит безопасности никогда не найдет всех возможных ошибок эм, ты не проходишь аудит, ты проводишь аудит, и ты проводишь еще один, и еще один друг друга вы продолжаете находить ошибки хорошо, это все отличные точки зрения на то, почему аудит важен, я уверен, что некоторые из нашей аудитории слышали об этом раньше но это не повредит повторять, как вы говорили мы говорим это годами, и это еще нужно сказать так что действительно хорошо дать контекст нашему разговору тоже так что, я думаю, давайте немного поговорим о различных подходах к аудиту криптографии, особенно криптографии, так что да, что делать что вы все думаете о разных подходах и да, как это может помочь повысить ценность, помимо важности мы упомянули, так что мне действительно любопытно услышать, что за другие участники дискуссии должны сказать об этом, потому что у них намного больше опыта чем я, но я вижу, что есть два разных один из видов аудита похож на процесс типа контрольного списка, в котором вы по-настоящему познакомиться со всеми видами ошибки, которые произошли в прошлом, и вы как бы просто смотрите на дизайн, читающий код и проблемы, которые вы видели раньше, и действительно знакомы а есть еще и другой процесс, более творческий где это больше похоже на исследовательскую задачу где вам представлена ​​система, и вы пытаетесь найти действительно новая атака, как если бы это была уникальная система, например, с нулевым разглашением система доказывания, например, там, где просто нет огромной базы данных из действительно распространенных проблем, таких как повторное использование nonce и генерация слабых случайных чисел и все такие вещи, так что мне любопытно, как другие панели любят сбалансировать эти два процесса в своих собственных аудитах Контрольный список по сравнению с творческими процессами Я думаю, что важно, ты знаешь, когда мы нанимаем людей в мою компанию один из вопросов, которые мы задаем, - как определить ошибку? и люди говорят, что что-то не работает правильно, но как вы определяете это в конечном итоге у вас есть что-то вроде земли правда о том, чего вы хотите достичь, когда вы когда вы пишете код и проводите его аудит, вы в первую очередь сравните реализацию против этой основной истины, которая может быть спецификацией, которая может быть исследовательской работой а потом вы, в свою очередь, можете найти недостатки или неполные определения в основном правиле, которое у вас есть в спецификации спецификация может быть неполной Возможно, в нем не хватает чего-то нового, так что да, с моей точки зрения, просто подведите итог когда вы приближаетесь к редактированию, первым делом как в ручном тесте, если вы определяете область охвата, на что вы смотрите какое ограничение тебе тоже нужно другие зависимости, чего вы хотите достичь эм, а что вы пытаетесь защитить и какие знания могут вам понадобиться понимание, чтобы уметь определять, что будет чем вы хотите найти в качестве аудитора да эм, большая часть первоначальных усилий состоит в том, чтобы выработать правильную терминологию, потому что клиент всегда говорит о своих вещах какими-то словами, и поэтому на которых есть точное значение и что точное значение не обязательно совпадает с тем, в которое верит заказчик и у них есть определения с ограничениями, и мы должны строго точно понимаю, где они останавливаются, так что одна часть моего опыта здесь не о криптографии, а о споре в сети новостей о придираться к системе, которая и x509, и выяснять, как слова можно замучить, чтобы сказать что-то еще и многие птицы прячутся там, потому что люди просто предполагают, что интуитивный представление о том, что это слово означало, было истинным одним из моих эээ любимая мозоль заключается в том, что люди, использующие, например, слово "подпись" означать что-то, что не похоже на все подпись, но хеш-функции или хеш-метка или что-то в этом роде и из-за этого может возникнуть много путаницы я помню, когда я редактировал часть zcash ммм кое-что обновили в прошлом году, когда произошли большие изменения в терминологии, и я был очень запутан, как будто ключи имеют разные имена. это не только понимание того, что нужно клиенту, но я много думаю они также разговаривают со своими разработчиками, чтобы понять что было проверено раньше, как я думаю, это было JP, когда вы были глядя на далека, в какой-то момент ты подумал, что хорошо, какие части части, на которые все смотрели, так что мне не нужно смотреть на те или подобные Я просто отсканирую их, но вы хотели знать, какие части я подумал были там, где могли быть ошибки, и это важно помнить, что вроде клиент или разработчики клиентов не ваш враг, они не вы знаете, это не похоже на какую-то военную игру где ты как будто охотишься за ошибкой, а они хотят их спрятать как и все хотят, чтобы ошибки были обнаружены, поэтому это важно да, так что важно помнить, что как будто вы должны работать с ними потому что они знают код лучше всех, да, есть много здесь работает психология, когда вы смотрите на исходный код, вы должны подумайте, как бы вы вернули тот же код, чтобы когда он отклоняется, вы знаете, что все в порядке, они делают что-то по-другому и возможно, плохо, плохо, и иметь представление о том, где они могли бы пошалить каким-то образом, что за э-э ошибки или упущения могут произойти, я имею в виду у всех разные карьеры на других сайтах и я пытаюсь узнать немного о себе но я также стараюсь узнать об этом других людей и поэтому также полезно иметь внешних аудиторов они не делают ошибок в одном и том же месте, поэтому они могут видеть других людей ошибки да полностью второе, что ISIS говорила о том, чтобы приветствовать разработчиков, что очень важно действительно иметь непрерывный канал связи с разработчиками, вот что я найти наиболее эффективный, чтобы вместо того, чтобы знать, как получить код и тратить одну неделю, а затем отправка отчета - это каждый раз, когда у вас есть проблема сомневаться в том, в чем вы не уверены, возможно, когда у вас есть потенциал найти поделитесь этим с разработчиками, может быть, они скажу вам, что вы что-то пропустили, это не ошибка Или, может быть, они скажут вам, что это гонка, которую мы принимаем так что это экономит много времени, да, чтобы вернуться к тому, что говорил Томас э-э, смотришь на код и думаешь, как будто я не знаю, что они здесь делали, как зачем вам это делать вот так это выглядит забавно, это не так, как я бы сделал лучшее, что я думаю сделать нужно вернуться к разработчику, который написал код, и быть такими, как эй, почему Вы делаете это так, и они такие, ну, нам не нужно, чтобы это было постоянным время там, потому что вы знаете, что они дадут вам какую-то причину Как будто нам это не нужно в нашей системе, как будто все в порядке и тогда это действительно может сэкономить вам много времени Итак, каковы некоторые подходы, у которых есть um или, может быть, если вы хотите сделать такой случай, как провести тематическое исследование или представить, может быть, аудит, эээ, вы думаете, что было бы неплохо поговорить об этом в качестве примера или различные подходы, в частности, которые вы обнаружили, работали с разными типами проекты [Музыка] эм, я могу немного рассказать о моем общем процессе хм, просто чтобы дать действительно высокий обзор того, что я что я делаю, когда сталкиваюсь с аудитом, я всегда начинаю с фаза мозгового штурма, чтобы попытаться получить все то же самое ошибки, которые я видел в прошлом в моей рабочей памяти, подумайте о том, что система использует это, попробуйте поиграть со всеми ее функции и подумайте о том, что может пойти не так, и я буквально просто запишите страницы, страницы и страницы идей о том, что может пойти не так и это переносит все в рабочую память. Идея состоит в том, что как только вы начните читать код, глядя на дизайнерские вещи начнут открываться вам, и вы не пропустите потому что вы уже только что видели список всего, что может что может пойти не так с такой системой гм, а затем оттуда это похоже на гипотезу эм, фактические ошибки в том, что я заметил, я вроде как прохожу и и если я вижу это, я думаю, что вижу ошибку, я не вникаю в нее, я просто пишу это вниз и вернусь к нему позже, я получаю этот большой список лайков идеи о том, что может пойти не так, и расставить приоритеты оттуда копаться в наиболее вероятных или самых экстремальных, в которых есть самые большие последствия, если это настоящие ошибки и как бы сократить его и написать отчет после этого, но мне действительно любопытно что более опытные люди делают конкретно во время аудита рабочие процессы Обычно я пытаюсь работать снизу вверх, я имею в виду, что я я начинаю с примитивов, потому что тогда, когда я смотрю на функции, которые вызывает этот примитив, я точно знаю, что примитивы ожидают и что они возвращают и что обычно не очень хорошо документируются, что именно они делают, если значение немного не по-французски, поэтому я постепенно продвигаюсь вверх сейчас в моей работе нас несколько человек, и мы обычно назначить как минимум двух консультантов на каждого клиента, потому что у нас разные подходы и у них есть коллеги но мы начнем обычно сверху вниз, поэтому в какой-то момент мы встречаемся где-нибудь в другом месте, но это много из моей части чтения исходного кода глазами и есть Я делаю вещи в старом стиле, которые не пытаюсь компилировать я не изучаю иде для автоматического дополнительного анализа я не занимаюсь фаззингом все это возможно, некоторые из моих коллег делают это и делают так хорошо, но они просто не соответствуют моему способу мышление я думаю, что следую тому же подходу снизу вверх, по крайней мере, для некоторых внешние животы, потому что вы знаете, что это не гитара, у вас она есть один не страх, но ты знаешь, делаешь ли ты дело и никого не найдешь не расстраивайтесь, поэтому сначала посмотрите, что знаете низко висящие фрукты, так что сначала посмотрите, используют ли они хорошую случайность. используйте ключи подходящего размера, если не используете повторно iv и, возможно, вы получите небольшой пик дофамина, обнаружив такую ​​ошибку а потом случается, что вы можете нести еще одну самую сложную вещь и, может быть, это просто напоминание для людей, которые только что присоединились к нам ох, безопасность, которая не является гарантией безопасности, и не говорите, что вы прошли аудит, пожалуйста, на самом деле это приносит хороший вопрос об эм, так что безопасности не может быть гарантировано, и вы знаете, что мы говорили об эм, это немного, как уже упоминалось, это управление рисками, вы знаю, пытаясь улучшить безопасность, но мы не можем мы не можем этого гарантировать, поэтому как узнать, когда вы закончили поэтому, когда вы думаете о своем рабочем процессе и собираетесь через это, как да, я имею в виду, что у нас есть объем аудита в начало, но потом вы в самом разгаре процесса и вы знаете, что находите то, чего не находите, да, как вы все выясняют, когда вы закончите Я не думаю, что ты сможешь когда-нибудь закончить, всегда есть эм, в каждой проверке, которую я проводил, я начинал с некоторого представления о том, что объем был бы, и мне пришлось сократить объем в окончательном отчете и Скажи, как будто мы на самом деле не успели взглянуть на это зависимость, мы фактически не смогли посмотреть, как эта библиотека используется ммм, так что я не думаю, что я не думаю, что аудит никогда не заканчивается так, как jp говорил, что вы не можете гарантировать безопасность, там всегда больше работы, которую нужно сделать, больше вещей, которые нужно проверить, я думаю, что самое главное в том, что вы честны об этом в отчете и просто поясняете, что вы сделали чек и что еще осталось на будущее Работа ну обычно я бы сказал, что я закончил, когда я достигну точки, где Я начинаю думать, ну ладно, мы должны удалить все, что я покажу им, как это должен быть написан, и это момент, когда я должен остановиться Так что я остановился, так что я думаю, что сделал отличную мысль, ммм так, потому что вы обычно делаете отчет эм которые также можно обсудить, если вам нужен отчет, но вы пишете что вы нашли эм какие ошибки улучшение работы но я думаю, что это также ценно для клиента чтобы знать, что вы пробовали и что не использовало никаких ошибок, например, вы используете статические анализаторы, я пытаюсь найти этот класс атак и я ничего не нашел и так что что не сработало а ты также хочу сказать, что вы делали или не делали, что, может быть, если у вас есть временные рамки и, может быть, у вас не было времени сделать все, что вы хотели вместо рекомендаций, ладно, я рекомендую это вы делаете это из-за этого или потому что я совсем не уверен в этом будьте честны и прозрачны со своими клиентами я думаю, что это особенно полезно в отчетах, которые я получил, и тех, которые я получил созданы также, чтобы отметить, какие зависимости вы не смотрели на, потому что, особенно если вы используете восходящий подход очень важно смотреть на очень мелкие детали того, что называется когда и часто особенно в больших проектах у которых есть множество зависимостей, которые просто невыполнимо, и, возможно, вы посмотрите на те, которые кажутся более подозрительными как будто вы, как эти, с большей вероятностью испортят но вы не можете смотреть на все из них, поэтому лучше быть прозрачным и сказать, как эй, я посмотрел на тебя, ты знаешь, константа раз вы знаете примитивную библиотеку, я посмотрел на вы знаете реализацию подписи, которую вы используете i не смотрел ни на что другое да это может быть большой проблемой в некоторых языки, которые я не буду называть, но если у вас есть как сотни пассивов, так как здесь говорилось, что вы, возможно, спросите клиента, хорошо ли вы, чтобы мы посмотрели на эти три потому что они делают некоторую визуализацию они делают некоторые криптовалюты, и мы думаем, что это важно, но вы можете посмотреть весь код что используется так вы все находите, что аудит криптографии даёт об особых проблемах по сравнению с аудитом других типов проектов, таких как мобильное приложение или что-то в этом роде. О да, крошечная опечатка может означать целый мир разница делает так, как будто вы знаете два бара, а не один столбец. вроде логично или вместо эксклюзивного искусства ужасно, ваш код теперь внезапно не постоянное время и это как один символ и вы знаете, что вы просто читаете это лично, вы как то или это но как тип, который вы используете, внезапно имеет решающее значение и когда вы находитесь в мире одного типа вопросов, читать намного сложнее код я думаю, что многие из обычных уязвимостей безопасности приложений могут можно смягчить с помощью выбора языка, например, использования ржавчина вместо c uh, и такие вещи, как sql-инъекция, могут быть можно смягчить, просто используя подготовленные операторы, так что много больше приложений типа безопасности материал и вы бы просто порекомендовали использовать те вещи, которые делают код очевидно не уязвим для целого класса атак но криптовалюта - это немного по-другому, просто там так много разные вещи, ну, ну, это похоже на то, если вы используете библиотеки криптографии с действительно хорошими API которые трудно использовать неправильно, тогда вы можете быть уверены, что любое приложение, использующее эти действительно хорошие API, будет в порядке гм, но если это похоже на реализацию какого-то нового криптопротокола тогда на самом деле нет ... нет контрольного списка, это похоже на творческое задание найти тот единственный персонаж, которого не хватает или вещи, которые меняются местами ммм да, это намного сложнее, я бы сказал, я думаю возможно, мы можем провести аналогию с тестированием на зависимость, потому что вы знаете, что младший неопытный одитор будет кто просто будет следовать своего рода контрольному списку, они будут смотреть на наблюдение контрольный список и делайте один за другим и более опытные люди постараются творчески найти баги новые ошибки пытаются понять, что происходит, и потенциально находить новые типы слабости я думаю, что криптовалюта такая же, может быть, у нас гораздо меньше документации, чем при тестировании изображений, но вы можете сложить базовый подход к контрольному списку, а затем вам нужно это творчество, чтобы действительно попытаться понять что может пойти не так, особенно с незрелыми технологиями я не люблю доказательства с нулевым разглашением и многосторонние вычисления эм, тебе нужно думать, чтобы рассуждать о том, что происходит Вы знаете, что скрывается за самим кодом, и вам нужен этот набор навыков, который вы нет в тестировании приложений, и иначе я бы не смог я бы сказал, что делать хорошее мобильное тестирование просто совершенно разные навыки что криптография новая и они сохраняют изобретать новую криптографию, чтобы она не была автоматизирована в промышленном масштабе например, вы можете автоматизировать множество проверок sql инъекции секретная инъекция мы знаем, как автоматизировать сканирование исходный код, чтобы найти места, где это может произойти, и это потому что это было вокруг достаточно много лет, что мы знаем, как это сделать, а для криптографии мы еще не знаем Значит, мы знаем, что часть этого мы знаем, как схватить например, для md5 мы знаем, что всякий раз, когда md5 где-то есть место для дурака, поэтому мы знаем, как проверьте это, но эта криптовалюта 30 лет назад и мы, так как есть много новых криптовалют, особенно в криптовалюте прочее и так далее, и он наличными, это все новое, все от как в прошлом году или в прошлом году, так что это всегда новая территория для исследования и для этого мы также должны понимать публичные исследования и это документы, написанные людьми, которые это делают весь день, и мы делали это весь день в течение нескольких лет, так что это непросто понять на пустом месте, так что это э-э не так много людей, которые действительно могут провести это исследование, потому что это требует некоторого академического образования да, так что говоря о более широкой перспективе времени, откуда мы идем вот так это ново, это сложно Трудно сказать, что это когда-либо было сделано, так что откуда мы идем? здесь как с точки зрения аудита, так и внесения вклада в более широкое сообщество да, у меня был вопрос, ребята, Томас использовал слово md5, которое эта относительно слабая хеш-функция, которую вам не следует используйте, однако, представьте себе следующий сценарий, это мой вопрос к моим коллегам-редакторам трески вы видите кого-то, использующего md5, но не в способ, которым можно воспользоваться таким образом, чтобы вы просто беспокоились о предпосылках сопротивление, потому что я был в этой ситуации, и мой коллега, который сказал мне JP, я обнаружил большую ошибку высокой степени серьезности у вас 75. вроде все в порядке подожди, что ты ничего не можешь сделать, кроме 75 я сказал хорошо, моя рекомендация будет скажите им нет, это выглядит не очень хорошо, вы, вероятно, захотите использовать что-то еще но само по себе это не большая ошибка, но, возможно, имеет смысл сказать о поставьте это как высокую степень серьезности, потому что таким образом вы действительно отпугнете э-э, ваш клиент не использует md5, поэтому я не знаю, хорошо, у меня ситуация только на прошлой неделе я имею в виду, что написал абзац вчера и я специально написал хорошо, что там 75 штук я проверил их все, на что они все полагаются образ Ubuntu для второго готового нет практический перерыв, но это могло быть так в течение многих лет иди так что ты не горишь Было бы полезно иметь план перехода для миграции в мир, отличный от md5 заказанным способом, потому что в случае возникновения чрезвычайной ситуации это не будет заказано, это будет чисто, а вы этого не хотите так что совет в порядке, вы знаете об этом я должен правильно этого не делать, потому что в противном случае некоторые другие аудиторы может указать, что Томас не видел md5, что он сделал, поэтому я должен это написать вниз, чтобы прикрыться, и я рекомендую людям затем, чтобы иметь план и не реагировать на это просто для того, чтобы изменить это но важная часть - сначала начать с того, что вы не горите не бросайте все, что не является приоритетом номер один я обычно объясняю это клиентам потому что это как язык, который понимают разработчики, это то, что это код пахнет, как будто ты знаешь, что это не проблема, это не ошибка, но это заставило бы меня поверить, что что-то еще в области этого кода также может быть неправильным, например, если вы используете md5 где-нибудь, что еще может быть странным выбором вы делаете это может быть ошибкой да, это дает вам представление о том, что они не знают, что делают так здесь вы использовали md5, возможно, они используют rc4 где-то еще в моем случае файлы исходного кода запускаются с датой, которая была 1993. Итак, когда все хорошо, я имею в виду в то время это было неплохо, но такая эвристика, как, например, одна из Первое, что я делаю, когда смотрю на базу кода, - это запуск интер вы знаете, как Cargo vp, просто чтобы получить представление о гигиене в общем, вы знаете уровень качества кода и если у вас куча предупреждений на компиляции 20, вам кажется, что они не сделал q не сделал не очень хорошо работал э и дать вам представление о качествах генерала и внимании к тигру это важный момент, я экономлю много времени предполагая, что многие ошибки были бы названы по их собственному тесту, например, если кто-то напишет реализация эллиптической кривой, мне действительно не нужно проверять их используйте правильные формулы, потому что если они эээ, если они ошиблись в формулах, это никогда не сработает, вот и все, я имею в виду, что я должны сосредоточиться на hkz те, которые они не увидят с один тестовый вектор, но много всего в криптовалюте, когда Вы ошиблись, это очень заметно, что это неправильно, так что это не самые интересные ошибки и я могу сэкономить много времени в этом случае Я также сначала компилирую код и обычно запускаем собственные тесты разработчика, мы сначала посмотрим, есть ли у них код тестов без тестов обычно заставляет меня довольно напуган, но да, видя, как их код компилирует, какие предупреждения они игнорировали, ища вы знаете, заглушили ли они любые предупреждения о сборке, особенно если они могут Посмотрим, включены ли у них все предупреждения или ошибки, ммм да, глядя на то, как разработчики тестируют свой код, а также вы знаете, если вы видите что-то, что похоже на то, что тест отключен, например он никогда не запускается в их системе сборки, которая также что-то, что заставило бы меня поверить, что мне нужно на что-то посмотреть или если у них есть тестовые векторы, которые, как мне кажется, выглядят неправильно откуда вы это взяли, откуда они взялись, они как о, мы сгенерировали их с помощью python, и вы, как будто у вас не может быть собственного тестирования кода ваш собственный код, вы должны получить его откуда-то, он должен совпадать с другим код, это то, что я часто ищу поэтому я думаю, что это может привести к хорошему вопросу о эм, если кто-то пойдет, если в нашей аудитории есть люди, которые собираются стать клиентов и собираются готовиться к аудит их криптографии, что они могли бы сделать или что бы вы как они сделать в процессе подготовки, прежде чем они придут к вам для аудита документальный фильм и выяснить, какие части не необходимо я имею в виду, что мы предпочитаем не иметь клиентов скажите хорошо, код запускается в этом проекте github и вы просто следите за зависимостями, их 37 какие из них нам нравятся, когда у клиентов есть достаточно хорошо ограниченный объем на что посмотреть, и потому что они знают, как их код работает, поэтому они намного лучше узнают, где все должно быть интересно один из лучших дней в моей жизни - это когда я проводил одитинг сложный криптопротокол, и когда я смотрю на код я вижу, что есть ссылка на бумагу и к строке at для каждой строки кода, выполняющей что-то криптовалютное в протокол они сказали о в алгоритме номер пять это строка номер восемь, и они используют те же обозначения, что и бумага эм, я не поверил, что это личность сценарий, но вариант здесь - если вы что-то реализуете, пожалуйста, дайте ссылка на то, что вы реализуете, и, если возможно старайтесь придерживаться подобных обозначений, это значительно облегчит нашу работу документацию и выписывая математику рядом со строкой кода, предполагается реализовать, это очень полезно, потому что тогда вы можете бумага открыта и код открыт, и вы можете быть похожими ну, они используют ту же нотацию, они делают то же самое, что я вижу это подходит круто, мне не нужно копать, какую бумагу они реализованы для какого-то многостороннего протокола, мне не нужно копать вы знаете, что они имели в виду, говоря о Петерсоне в 1991 году, вы знаете Я могу просто пойти и посмотреть на это и сказать, что это правильно я могу отдать должное разработчикам zcash, потому что я думаю, что недавно э-э Я участвую в аудите первого и первого Думаю, сказал Челси, что я читал работу ИГИЛ над этим и код был очень хорошо задокументирован с вашим объяснением какая часть что делала, так что это было очень очень хороший пример да, я нахожу в своих собственных аудитах большую часть времени просто уходит особенно если это огромная кодовая база, время просто уходит на то, чтобы найти, где что-то реализовано, прежде чем вы сможете даже начните проверять их правильно, чтобы иметь что-то, что связывает ваши спецификацию протокола с вашим фактическим кодом, чтобы вы могли легко перейти от один к другому и открывайте их рядом, и вы не тратить часы на просмотр кода это действительно помогает и более абстрактно быть хорошим клиентом, если вы просто сторона поиска ошибок, как будто вы не хотите, чтобы аудит просто проводил галочка, что вы прошли аудит, если действительно хотите, чтобы аудиторы нашли ошибок, и вы сообщаете им об этом, что помогает, потому что это позволяет нам знать, что ты на нашей стороне и хочешь, чтобы мы преуспели так что вы все думаете о том, чтобы делиться результатами аудитов? публиковать отчеты и делиться выводами и как да что ты думаешь об этом блоха, если можно, я имею в виду, что публичные отчеты являются известным источником напряжение вредно для хорошей работы и хорошо говорить, поэтому лучше, когда нет такого давления, потому что там является очень сильным стимулом для клиента иметь хороший результат аудита то, что говорит о том, что они хорошие мы действительно очень не хотим превращать это в лесть, мы хотим быть эээ тем более, скажем так, точные научные, только факты мне кажется, что нас как бы подталкивают к тому, чтобы все выглядит более позитивно, но я думаю, это просто способ заставить все выглядеть положительный результат - это фаза повторного тестирования, во время которой вы вы просматриваете исправления, которые ваш клиент применил после теста, а затем в отчете будет сказано, что, возможно, у них был критический или высокий ошибка серьезности, но теперь она исправлена, и я подтверждаю это, так что я имею в виду, что это на самом деле хорошо, если вы критически настроены клиенты, которым нужен публичный отчет, также хотят что в отчете все в порядке и он не должен говорить, что это подозрительно, если в нем говорится, что в хорошем отчете написано хорошо мы обнаружили, что там был большой бургер, но мы его нашли это означает, что мы посмотрели на это, и его больше не было, и он был исправлен это был бы хороший результат, и очень трудно убедить идею группы по связям с общественностью на стороне клиента но, честно говоря, по моему опыту, я думаю, что подавляющее большинство клиенты ээээээээ, вы действительно знаете, искренне заинтересованы в том, чтобы мы провели хороший аудит, они хотели, чтобы мы нашли ошибку, и очень, очень редко мы чувствовали Давление, чтобы вы знали, чтобы отчет выглядел хорошо, а я означает, что если отчет был правильным, нейтральная цель иногда мы обсуждать серьезность, это нормально, но в большинстве случаев все хотят просто справедливая оценка, и проблема в том, то, что я видел, - это не сам клиент, а когда вы делаете проект для блокчейна проект, как и все сообщество, которое на него отреагирует, и сообщество из других блокчейн-проектов мы могли бы взять отрывки из контекст, и это может быть потенциальным финансовым риск это здорово, что связано с одним из вопросов нашей аудитории который мы можем начать переключаться на один из вопросов аудитории о том, чувствуют ли аудиторы давление, чтобы добиться определенных результатов В связи с этим возникает второй вопрос: чувствуют ли аудиторы давление, чтобы найти что-то, и да, вы все чувствуете давление, чтобы найти определенные вещи и что клиенты могут сделать, чтобы уменьшить это давление Я не знаю, такое ли давление, но разочарование, когда ты не находишь что-то это также успокаивает, потому что тогда вы получаете чтобы написать хороший отчет, вам нужно быть как эй, вы знаете, я смотрел на все это сложные части вашей системы, но на самом деле все в порядке, я нашел вас знаю пару мелких проблем, но я, ты знаешь, я ни о чем не беспокоюсь Я думаю, это намного лучшая ситуация, ммм это действительно разочаровывает, хотя кажется, и есть что-то вроде такое чувство, что, может быть, если я буду присматриваться, я найду что-то, но в какой-то момент вы знаете, что не можете не могу смотреть на все вечно да, я думаю то же самое, единственный случай, когда это разочаровывает или больше разочарование с точки зрения одитора - это когда вы чувствуете, что действительно нет времени заново разбираться в карте и вы уж не чувствуете себя уверенно или, может быть, вы не чувствуете, что делали хорошо а затем лучше всего передать это, чтобы сказать, может быть, мне нужно больше время или, может быть, вам нужно нанять кого-то другого но просто ничего не найти, если вы чувствуете себя комфортно с этим, тогда это не проблема сама по себе хорошо, я думаю, это действительно полезно для всех знать, что точка зрения аудиторской группы по сравнению с клиент и ожидания, так что у нас есть еще один вопрос: есть ли разница в уровне образования, необходимая для создание внедрения криптографии по сравнению с аудиторской фотографией что вы все думают и каков был твой опыт ну, это не совсем разница в образовании, это скорее вопрос опыт, который является другим названием старости и это очень помогает вернуть реализацию, когда нужно проводить аудит, потому что чем бы ни занимались разработчики, над которыми вы работали их обувь раньше, так что вы каким-то образом интуитивно понимаете, где они потерпел бы неудачу, потому что вы сделали то же самое ошибки несколько лет назад это помогает, но в конечном итоге то же самое тот же набор навыков, что и для полного понимания эээ что вы делаете на уровне Mac и как это будет переведено в различных игроках до 20 магазинов на процессоре, и поэтому он в основном такой же, за исключением конечно, можно сказать, что разработчик мышление функционально, потому что он хочет, чтобы код работал, а аудитор хочет чтобы сломать код, но на самом деле разработчик также должен попытаться сломать его собственный код, если что-то произвести что безопасно, разработчик всегда должен враждебно относиться к самому себе и это относительно сложно, и аудиторы просто делают это весь день и это обычно разница, на мой взгляд я бы сказал, что навыки идут рука об руку они очень похожи друг на друга, и, сделав что-то одно, вы можете узнать о много о другом хорошо, еще один вопрос из аудитории имеет более одной реализации обычно помогают аудиторам любым способом гм, это происходит в некоторых случаях, когда, скажем, у вас есть два реализации симметричного криптопримитива, такого как шифрованная хеш-функция как что-то подобное, тогда вы можете сделать как арендовать автоматическое автоматическое как рандомизированное тестирование для сравнения двух реализации и тому подобное, если у вас есть другие вещи в аудите, на которых нужно сосредоточиться эм, как будто есть целый другой протокол для аудита, и вы действительно не хотите нужно погрузиться в эту реализацию хеш-функции, это действительно помогает просто быть в состоянии написать этот тест и гм, и уметь это сделать эм, да и обычно, когда ты это делаешь, то, что я упоминал в первую очередь, ты может проводить такое дифференциальное тестирование или дифференциальное форсирование, но часто вы также найдете ошибки в других реализация, за рассмотрение которой вам не платят но особенно если вы обнаружите ошибки, вы сообщите о них, вы обнаружите проблему чтобы побочный продукт они получили бесплатный аудит худший случай - когда вы обнаруживаете ошибку в зависимости и тогда вы как о нет, кто еще использует эту зависимость, и вы идете, и вы посмотрите на github, там есть 37 других блокчейнов, у которых все одинаковые зависимость о боже, теперь я должен доложить обо всем этом нравится, и мне не платят за это, мне платит только один из них это случилось в худшем случае, когда вы обнаружите ошибку в стандартный, особенно тот, который используется повсюду это плохо, да, на самом деле я думаю, что это вызывает действительно увлекательный момент, который вы упомянули, мы не понимаем оплачивается за эту часть, если мы обнаружим ошибку, которая используется другие, и мы должны сообщить об этом в другом месте так что да, как мы справляемся с этим не только с точки зрения аудитора, но также и с точки зрения более широкого сообщество есть что-то, что мы можем сделать может быть, чтобы помочь, потому что это может быть большой проблемой для меня это легко, потому что у ncc есть команда, посвященная раскрытие, поэтому я просто преследую их картошкой и это их работа, так что это легкая часть для меня а теперь на практике, конечно, ты не хочешь Заставь мир гореть, за исключением того, что иногда мир нужно сжечь, но не уходи болтаю об этом в твиттере прямо сейчас, я имею в виду просто подожди пять минут, стоит подумать о последствия Томас, можешь дать мне адрес ваша команда по управлению раскрытием информации я также думаю, что мне нужна их помощь, я бы люблю нанимать их, да, потому что часто я обнаружил ошибку, я как будто не хочу проходить процесс найти, где сообщить об этом, объясните, что следуйте формату и бесконечные обсуждения с разработчиками, поэтому иногда я бы просто это не что-то критическое и вроде хорошо кто-то найдет, я бы просто разместил вопрос на проект, но да, это может быть не пустая трата времени, но большие затраты времени, чтобы сделать это правильно хорошо, у нас осталась всего пара минут, поэтому я хочу дать вам все возможность сказать что-нибудь вроде последних мыслей в заключение указывает на все, что вы хотите да ладно, я пойду первым хорошо спасибо за то, что пригласили меня и за организацию этого это еще одна вещь была хорошей дискуссией, которую мы могли бы продолжить для четыре часа эм не конкретно в последний момент, но да, опять же, так что это не гарантия безопасности, как мы говорили ранее ммм ничего конкретного да, я также хотел бы повторить, что это была действительно отличная панель и Спасибо за то, что пригласили нас, а также еще раз за то, что мне нравится, пожалуйста, не делайте этого попросите нас проверить, какую галочку на вашем коде мы не хотим наше имя рядом с большой галочкой, которая говорит, что все в порядке да, спасибо всем панелям за то, что это было действительно весело и спасибо все слушают и смотрят хорошо, подождите, Томас, спасибо всем, спасибо миру, мир во всем мире - это здорово и так далее да, так что да ладно, я думаю, что есть некоторые некоторые вещи, которые были затронуты во время этой панели, были действительно хорошими моментами и так что я благодарю вас всех за то, что поделились своим опытом и вашим мысли об аудите криптографии и, надеюсь, аудитория почувствует немного больше подготовлен, возможно, стать клиентом или прочитать аудиторский отчет или просто знать о криптографии и инструменты, которые они используют, так что еще раз спасибо спасибо участникам дискуссии за то, что присоединились к нам, и спасибо econ 2 за zikan и zcash foundation за организовываю конференцию и благодарим аудиторию за то, что пришли увидеть вас позже пока