Блокчейн в базе 1С

18.06.20

Разработка - Математика и алгоритмы

Вокруг блокчейна в последнее время поднято много шума. Курс биткоина кого-то радует, кого-то злит, но впечатляет всех. За всем этим остается не увиденной и не оцененной по достоинству изящная простота самой технологии. Блокчейн можно без особых затрат добавить к любой базе данных, и база 1С не исключение. В моем рабочем примере менее 200 строк кода в обработке, которая создает цепочку блоков. Еще 30 строчек занимает процедура контроля. Ниже я покажу по шагам - как сделать блокчейн в любой базе 1С, и что это даст в итоге.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Пример обработки для генерации
.epf 7,87Kb
33 2 500 руб. Купить
Пример обработки для контроля
.epf 7,52Kb
32 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

//infostart.ru/public/1114877/

 

Шаг 1. Создадим документ Блокчейн

Цепочку блоков надо где-то хранить. Для простоты я выбрал объект метаданных "Документ". Вобще говоря, хранить цепочку можно и вне базы, хоть в текстовом файле. Также можно использовать справочник или регистр сведений. Я выбрал документ отчасти произвольно, отчасти потому, что в нем есть дата, а она может в дальнейшем пригодиться. Что бы это ни было, нам нужны четыре (всего лишь, впрочем, можно и три) реквизита.

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

Шаг 2. Сделаем обработку генерации цепочки блоков.

Найдем последний элемент цепочки. Я сделал это так:

Функция ПолучитьПоследнийБлок()
	запрос=новый запрос;
	запрос.Текст=
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	Блокчейн.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.Блокчейн КАК Блокчейн
	|
	|УПОРЯДОЧИТЬ ПО
	|	Блокчейн.Номер УБЫВ";
	выб=запрос.Выполнить().Выбрать();
	если выб.Следующий() тогда
		возврат выб.ссылка;
	иначе
		возврат неопределено;
	конецесли;
КонецФункции	

Запомним конечный ключ последнего блока, он станет начальным ключом первого созданного нами блока.

	ПоследнийБлок=ПолучитьПоследнийБлок();
	если ПоследнийБлок=неопределено тогда
		КлючНачальный="";
	иначе
		КлючНачальный=ПоследнийБлок.КлючКонечный;
	конецесли;

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

	запрос=новый запрос;
	текстзапроса=
	"ВЫБРАТЬ
	|	Док.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.<вид> КАК Док
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Блокчейн КАК Блокчейн
	|		ПО Док.Ссылка = Блокчейн.КонтролируемыйДокумент
	|ГДЕ
	|	Док.Проведен
	|	И Блокчейн.Ссылка ЕСТЬ NULL";

Строка <вид> в тексте запроса в дальнейшем заменяется на конкретный вид документа.

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

А вот собственно сама генерация цепочки блоков:

	видыдокументов=настройка.ПолучитьЭлементы();
	для каждого вид из видыдокументов цикл
		если вид.пометка тогда
			запрос.Текст=стрзаменить(текстзапроса,"<вид>",вид.имя);
			выб=запрос.Выполнить().Выбрать();
			пока выб.Следующий() цикл
				новблок=документы.Блокчейн.СоздатьДокумент();
				новблок.Дата=текущаядата();
				новблок.КонтролируемыйДокумент=выб.ссылка;
				новблок.ХешДокумента=ПолучитьХешДокумента(выб.ссылка);
				новблок.КлючНачальный=КлючНачальный;
				новблок.КлючКонечный=ПолучитьКонечныйКлюч(КлючНачальный,новблок.ХешДокумента);
				новблок.Записать();
				КлючНачальный=новблок.КлючКонечный;
			конеццикла;
		конецесли;
	конеццикла;

Функция ПолучитьХэшДокумента() - банальна, но я ее приведу.

Функция ПолучитьДокументСтрокой(ссылка)
	рез="";
	видд=ссылка.метаданные().имя;
	нвид=неопределено;
	ветка=настройка.ПолучитьЭлементы();
	для каждого вид из ветка цикл
		если вид.имя=видд тогда
			нвид=вид;
			прервать;
		конецесли;	
	конеццикла;
	если не нвид=неопределено тогда
		реквизиты=нвид.ПолучитьЭлементы();
		для каждого рек из реквизиты цикл
			если рек.пометка тогда
				поз=стрнайти(рек.имя,".");
				если поз=0 тогда
					рез=рез+строка(ссылка[рек.имя]);
				иначе
					имятч=лев(рек.имя,поз-1);
					имярек=сред(рек.имя,поз+1);
					для каждого стр из ссылка[имятч] цикл
						рез=рез+строка(стр[имярек]);
					конеццикла;
				конецесли;
			конецесли;
		конеццикла;
	конецесли;
	возврат рез;                
КонецФункции


Функция ПолучитьХешДокумента(ссылка)
	хд=новый ХешированиеДанных(ХешФункция.SHA256);
	хд.Добавить(ПолучитьДокументСтрокой(ссылка));
	рез=строка(хд.ХешСумма);
	рез=стрзаменить(рез," ","");
	возврат рез;
КонецФункции	

Строковое представление документа следовало бы сделать более изощренным и включить в него ИД ссылок. Если будете делать рабочую версию, доделайте функцию ПолучитьДокументСтрокой(). 

Чуть более интересна функция ПолучитьКонечныйКлюч(). Собственно здесь и кроется сама суть технологии.

Функция HEX(знач знч)
   рез= "";
   Пока знч > 0 Цикл
      рез = Сред("0123456789ABCDEF", знч%16+1,1) + рез;
      знч = Цел(знч/16) ;
   КонецЦикла;
   Возврат рез;
КонецФункции

Функция ПолучитьКонечныйКлюч(КлючНачальный,хеш)
	нули="00000000000000000000000000000000000000000000";
	нули=лев(нули,сложность);
	рез="";
	сч=0;
	пока истина цикл
		хд=новый ХешированиеДанных(ХешФункция.SHA256);
		рез=HEX(сч);
		хд.Добавить(КлючНачальный+хеш+рез);
		стр=стрзаменить(хд.ХешСумма," ","");
		если сложность=0 тогда
			прервать;
		иначеесли лев(стр,сложность)=нули тогда
			прервать;
		конецесли;
		сч=сч+1;
	конеццикла;	
	возврат рез;
КонецФункции	

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

Полностью процедура генерации цепочки блоков выглядит так:

Процедура ЗапускНаСервере()
	ПоследнийБлок=ПолучитьПоследнийБлок();
	если ПоследнийБлок=неопределено тогда
		КлючНачальный="";
	иначе
		КлючНачальный=ПоследнийБлок.КлючКонечный;
	конецесли;
	
	запрос=новый запрос;
	текстзапроса=
	"ВЫБРАТЬ
	|	Док.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.<вид> КАК Док
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Блокчейн КАК Блокчейн
	|		ПО Док.Ссылка = Блокчейн.КонтролируемыйДокумент
	|ГДЕ
	|	Док.Проведен
	|	И Блокчейн.Ссылка ЕСТЬ NULL";
	видыдокументов=настройка.ПолучитьЭлементы();
	для каждого вид из видыдокументов цикл
		если вид.пометка тогда
			запрос.Текст=стрзаменить(текстзапроса,"<вид>",вид.имя);
			выб=запрос.Выполнить().Выбрать();
			пока выб.Следующий() цикл
				новблок=документы.Блокчейн.СоздатьДокумент();
				новблок.Дата=текущаядата();
				новблок.КонтролируемыйДокумент=выб.ссылка;
				новблок.ХешДокумента=ПолучитьХешДокумента(выб.ссылка);
				новблок.КлючНачальный=КлючНачальный;
				новблок.КлючКонечный=ПолучитьКонечныйКлюч(КлючНачальный,новблок.ХешДокумента);
				новблок.Записать();
				КлючНачальный=новблок.КлючКонечный;
			конеццикла;
		конецесли;
	конеццикла;
	
КонецПроцедуры

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

Шаг 3. Сделаем обработку контроля.

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

и заменил процедуру генерации на процедуру контроля.

Процедура ЗапускНаСервере()
	контрольпройден=истина;
	ключ="";
	выб=документы.Блокчейн.Выбрать();
	пока выб.Следующий() цикл
		если выб.КлючНачальный<>ключ тогда
			сообщить("Блок "+выб.Номер+" нарушена последовательность блоков");
			контрольпройден=ложь;
		иначеесли лев(строка(выб.КонтролируемыйДокумент),1)="<" тогда
			сообщить("Блок "+выб.Номер+" документ удален");
			контрольпройден=ложь;
		иначеесли не выб.КонтролируемыйДокумент.Проведен тогда
			сообщить("Блок "+выб.Номер+" документ распроведен");
			контрольпройден=ложь;
		иначеесли выб.ХешДокумента<>ПолучитьХешДокумента(выб.КонтролируемыйДокумент) тогда
			сообщить("Блок "+выб.Номер+" документ изменен");
			контрольпройден=ложь;
		иначеесли не ЭтоКрасивыйХеш(выб.КлючНачальный,выб.ХешДокумента,выб.КлючКонечный) тогда
			сообщить("Блок "+выб.Номер+" неправильный хеш");
			контрольпройден=ложь;
		конецесли;
		ключ=выб.КлючКонечный;
	конеццикла;
	если контрольпройден тогда
		сообщить("Контроль пройден");
	конецесли;
КонецПроцедуры

Функция ЭтоКрасивыйХеш() - упрощенная вариация того, что мы видели в функции ПолучитьКонечныйКлюч() на предыдущем шаге.

Функция ЭтоКрасивыйХеш(КлючНачальный,хеш,КлючКонечный)
	нули="00000000000000000000000000000000000000000000";
	нули=лев(нули,сложность);
	хд=новый ХешированиеДанных(ХешФункция.SHA256);
	хд.Добавить(КлючНачальный+хеш+КлючКонечный);
	стр=стрзаменить(хд.ХешСумма," ","");
	если сложность=0 тогда
		возврат истина;
	иначе
		возврат лев(стр,сложность)=нули;
	конецесли;
КонецФункции	

 

Что в итоге.

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

Стоит заметить, что возможна также атака путем подмены контролирующей обработки. Но она настолько проста, что ее может визуально контролировать кто угодно. Как вариант можно регулярно скачивать контролирующую обработку (например, с инфостарта ))) ) .

Обработки тестировались на версии 8.3.10.2639.

Update 09.01.2018

Публикация вызвала оживленное и, что еще более важно, плодотворное обсуждение. И я хочу поблагодарить всех, кто принял в нем участие. Ниже я подведу итоги состоявщегося обсуждения и представлю продукт, в котором учтены существенные замечания. 

1. Что это такое?
Блокчейн обычно связывают с криптовалютами. Данная технология не имеет отношения к майнингу криптовалют. Идея состоит в том, чтобы использовать особым образом связанную цепочку блоков (блокчейн) для контроля неизменности документов в информационной базе 1С.

2. Чем это лучше, того что есть сейчас?
В докомпьютерной бухгалтерии существовала (впрочем, она и сейчас существует, только не применяется на практике, по крайней мере в 1С) следующая концепция безопасности. Невозможно предотвратить неправомерные действия, но можно сделать так, что любое такое действие будет быстро выявлено. Современные информационные базы защищены системой прав доступа, паролями и т.д. Но. Когда злоумышленник преодолевает эту защиту, его дествия практически невозможно выявить. Например. Некто меняет в свою пользу в приходном документе количество и цену местами. Условно говоря, вместо 10 пачеки сахара по 1 рублю, ставит 1 по 10. После чего он может спокойно забрать 9 пачек себе. Скорее всего, об этом никто и никогда не узнает. Данная система позволяет создать абсолютную защиту, в том смысле, что любое изменение(удаление) контролируемого документа будет моментально обнаружено. Способов обмануть систему, в том числе путем подмены цепочки, нет. Подробнее см. п.4. 

3. Это - дополнительная нагрузка на информационную базу? Документы будут медленнее проводиться?
Система защиты работает автономно, в процесс проведения документов никак не вмешивается. При построении цепочки происходит однократное чтение нового документа. При контроле чтение каждого документа из цепочки.

4. Зачем нужен "майнинг"?
Майнинг конечно же в кавычках. Дело в том, что в настоящем майнинге основным моментом является поиск т.н. красивого хеша. Такого, который содержит в начале определенное количество нулей. В приведенном выше решении я тоже использовал этот прием. Ищется красивый хеш с количеством нулей, соответствующем заданной пользователем сложности. Моя идея заключалась в том, что злоумышленник всегда будет вынужден догонять. Тогда можно будет подобрать такую сложность, что затраты на подмену цепочки сделают атаку бессмысленной. Тут я несколько увлекся и упустил из виду, что злоумышленник может принять решение о подмене документа и сразу же начать строить альтернативную цепочку. Таким образом, атакующий и система находятся в равном положении. CSiER  обратил внимание на это и предложил отказаться от "майнинга" и дать пользователю возможность визуального контроля цепочки на предмет подмены. Пользователь записывает куда-нибудь ключ последнего на сегодня(или вчера) блока, а на следующий день сверяет свою запись с состоянием цепочки. В таком виде система действительно дает абсолютную защиту и в коммерческом решении я использую этот метод. Но я все равно оставил "майнинг". Дело в том, что если отказаться от него совсем (задать сложность 0), тогда ключ для контроля будет слишком длинным (64 символа). А если задать сложность 2 или 3, тогда ключ будет длиной 2-4 символа, что гораздо удобнее.

Коммерческое решение представляет собой две исходные обработки соединенные в одну и доработанные с учетом п.4. Интерфейс найстройки принципиально не изменился. Добавилась страница состояния, откуда можно переписывать ключи для контроля цепочки.

При выявлении того или иного нарушения, система выдает соответствующее сообщение.

Принципиальным отличием является то, что для хранения цепочки используется не документ информационной базы, а внешний файл XBase. Это дает возможность организовать негласную проверку базы, такую которая будет незаметна в том числе и для ИТ. Более подробное описание можно найти в руководстве пользователя.

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

Update 22.01.2018

Платная версия, которую я представил в прошлый раз, подразумевала не совсем 1С-овский стиль работы. Документ попавший в цепочку блоков уже нельзя было менять совсем. При обнаружении изменения, нужно было вернуть документ в первоначальный вид. Я оставил эту платную версию под новым именем "Докчейн строгий". И в дополнении к ней предлагаю основную версию под названием "Докчейн. Защищенный журнал". В этой версии документы могут изменяться и удаляться. Все такие действия заносятся в ту же цепочку блоков и получается журнал, защищенный от изменений. Чтобы не загромождать данную публикацию, я создал новую:

//infostart.ru/public/728995/

 

 

Вступайте в нашу телеграмм-группу Инфостарт

блокчейн

См. также

Математика и алгоритмы Разработчик 1С 8.3 Абонемент ($m)

Данная внешняя обработка для платформы 1С:Предприятие реализует усовершенствованный алгоритм Левенштейна для вычисления схожести строк с учетом различных лингвистических особенностей русского языка. В отличие от классической реализации, этот алгоритм учитывает фонетические, визуальные и контекстные особенности набора текста.

1 стартмани

07.11.2025    7015    18    InFlach    17    

27

Математика и алгоритмы Запросы Разработчик 1С:Предприятие 8 Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    9180    ivanov660    9    

24

Математика и алгоритмы Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    16980    stopa85    12    

44

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    25249    user1959478    57    

41

Математика и алгоритмы Разное 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    15740    maksa2005    8    

27

Математика и алгоритмы Инструментарий разработчика Разработчик 1С:Предприятие 8 Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    25558    13    SpaceOfMyHead    20    

65

Математика и алгоритмы Разработчик 1С:Предприятие 8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    17745    RustIG    10    

30

Механизмы платформы 1С Математика и алгоритмы Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

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

23.11.2022    16627    gzharkoj    17    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 20 18.12.17 11:44 Сейчас в теме
Интересно. Надо будет по ближе посмотреть.

У вас этот "блокчейн" для какой то практической цели используется?

выб=запрос.Выполнить().Выбрать();
если выб.Следующий() тогда

Результат запроса на пустоту правильно определять
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
КонецЕсли;

Что бы не создавать объект Выборка из пустого результата запроса.
for_sale; jif; top_1c; +3 – Ответить
3. mkalimulin 1651 18.12.17 11:59 Сейчас в теме
(1) Спасибо за замечание!
gigabyte_artur; +1 – Ответить
118. azhilichev 217 19.12.17 09:53 Сейчас в теме
(1) Если в любом случае используете выборку из результата запроса Выборка.Выбрать() , то не нужно проверять результат запроса на пустоту (https://its.1c.ru/db/v8std/content/-2145783209/hdoc).
119. TODD22 20 19.12.17 09:56 Сейчас в теме
(118)Так у автора вроде в том запросе про который я писал как раз и имеется проверка на пустоту. Значит запрос может быть пустым. Что не так?
121. azhilichev 217 19.12.17 10:30 Сейчас в теме
(119)
Что бы не создавать объект Выборка из пустого результата запроса.


Если в коде используете Выборка.Следующий() с последующей обработкой результатов выборки (как у автора), то перед этим Результат.Пустая() не обязательно делать. Вместо этого Выборка.Следующий() вернет Ложь, что и будет означать пустой результат.
122. TODD22 20 19.12.17 10:32 Сейчас в теме
(121)
Что бы не создавать объект Выборка из пустого результата запроса.
123. TODD22 20 19.12.17 10:34 Сейчас в теме
(121)
Там написано что проверять результат на пустоту надо с помощью "Пустой()". Что бы не создавать объект выборка из пустого запроса только для того что бы убедится что он пустой.

А если вы уверены что в результате вашего запроса всегда будет результат то тогда проверка "Пустой()" лишняя.

З.Ы. Хотя да... можно трактовать по разному. Если потом есть обработка то можно делать выборку. Но если результат может быть пустым то наверное всё же лучше через оператор Пустой.

З.Ы.Ы. Это я где то в каком то курсе по программированию видел(на спеца вроде). Там объяснялось что результат запроса надо проверять на пустоту, а не делать выборку из пустого результат, если результат может быть пустым. Если результат есть всегда то проверку на пустоту делать не нужно.

Хотя и в типовых очень часто проверку на пустоту делают Выборка.Следующий(). Или Выборка.Количество().
2. mkalimulin 1651 18.12.17 11:58 Сейчас в теме
Пока еще нигде не использовал. Просто решил продемонстрировать саму идею. Проверял на тестовой базе.
4. TODD22 20 18.12.17 11:59 Сейчас в теме
(2)Понятно. Да я вот то же почитал про технологию. Но вот практического применения пока не придумал :)
5. mkalimulin 1651 18.12.17 12:01 Сейчас в теме
Практическое применение в данной публикации. Вы делаете документы практически не изменяемыми.
6. TODD22 20 18.12.17 12:07 Сейчас в теме
(5)
практически не изменяемыми

"практически" или "не изменяемыми" ?

Дело в том что я и так могу в своей базе сделать что то "практически не изменяемым" программными средствами. То есть, обойтись без "блокчейна".
Вопрос в том какие задачи можно решать эффективно с помощью блокчейна и это будет лучше чем другими средствами. А так получается "блокчейн" ради "блокчейна".

На одном из инфостарт эвентов вроде кто то делал доклад про блокчейн в 1С и видимо как то они его используют. Но давно было... наверное уже не найду.
for_sale; 7OH; spenser123; awk; sCHTASS; Morkhe; gradi; +7 – Ответить
8. mkalimulin 1651 18.12.17 12:22 Сейчас в теме
(6) "Счастье не в деньгах, а в их количестве".
Вы сделаете. И стоимость успешной атаки на вашу защиту - 1 час работы начинающего.
Стоимость атаки на мою защиту зависит от выбранной сложности и может быть сколь угодно большой.
SunShinne; +1 – Ответить
9. TODD22 20 18.12.17 12:23 Сейчас в теме
(8)Если в контексте "атаки" то может так оно и есть. Надо над этим подумать.
Просто я у себя такие риски не рассматриваю. По этому возможно чего то не понимаю...
10. mkalimulin 1651 18.12.17 12:27 Сейчас в теме
(9) Это только кажется паранойей. Я лично наблюдал ситуации. Некто деревня-деревней. Но вот как-то находит способ поменять 10 шт. за 1 руб. на 1 шт. за 10 руб. Откуда только что берется!
11. TODD22 20 18.12.17 12:34 Сейчас в теме
(10)
Я не с критикой :) Я когда сам думал как можно применять вот ничего в голову не приходило. Всё что пришло в голову решалось без блокчейна точно так же или даже проще.
12. mkalimulin 1651 18.12.17 12:37 Сейчас в теме
(11) Так вроде бы это на поверхности. Если первым словом звучит "блокчейн", то вторым "неизменяемость" (ну или "биткоин", для жадных)
7. mkalimulin 1651 18.12.17 12:13 Сейчас в теме
Вот я и делаю программными средствами. И мой способ надежнее всех прочих. Как вы программными средствами исключите атаку со стороны человека с паролем админа?
13. Fragster 1168 18.12.17 12:48 Сейчас в теме
Зачем тут поиск "красивого" хэша? В биткоине понятно - чтобы были "майнеры", а вот тут зачем? Чтобы электричество пожечь?
14. mkalimulin 1651 18.12.17 12:50 Сейчас в теме
(13) Чтобы получить защиту от изменения документов.
15. Fragster 1168 18.12.17 12:57 Сейчас в теме
(14) механизм цепочек эцп хешей + предыдущих подписей вполне с этим справится и без этого
16. mkalimulin 1651 18.12.17 13:00 Сейчас в теме
(15) Здесь нет ЭЦП. Просто база 1С. Самая обычная. Документ проводится, затем попадает в цепочку. И все - с ним уже ничего сделать нельзя. Никаким способом. Даже с паролем админа. Даже если влезть в базу напрямую. Никак. Только за большие деньги.
17. Fragster 1168 18.12.17 13:07 Сейчас в теме
(16) Советую все же почитать, что такое ЭЦП. В данном случае в качестве подписи используется конечный ключ.

>Даже если влезть в базу напрямую. Никак. Только за большие деньги.
в данном случае это заблуждение.
18. mkalimulin 1651 18.12.17 13:11 Сейчас в теме
(17) Смотрите. Вы удаляете что-то из середины цепочки, а потом быстро перестраиваете остаток цепочки. И все в порядке. Процедура контроля ничего не обнаружит. Красивый хеш нужен для того, чтобы исключить быстрое восстановление цепочки.
sulfur17; +1 – Ответить
21. vadim1011985 103 18.12.17 13:19 Сейчас в теме
(18) а как тут красивый хэш поможет ?
23. mkalimulin 1651 18.12.17 13:20 Сейчас в теме
(21) Чтобы его найти, требуется время. Или дорогостоящее оборудование... и все равно время.
26. TODD22 20 18.12.17 13:35 Сейчас в теме
(23)
Чтобы его найти, требуется время. Или дорогостоящее оборудование... и все равно время.

В этом и проблема блокчейна. Палить килловаты энергии ради красивого хэша. Наверное должны быть другие менее ресурсозатратные инструменты.
27. mkalimulin 1651 18.12.17 13:41 Сейчас в теме
(26) "Что ничего не стоит, то ничего не стоит". Это - мудрая пословица.
Безопасность не может быть бесплатной. Мое решение хорошо тем, что уровень затрат на безопасность можно гибко подстраивать под конкретную ситуацию. Он может быть как скромным (но вполне достаточным, для того, чтобы у вас со склада не воровали, например, сахар), так и внушительным, таким, где стоимость атаки начинается от миллионов долларов.
29. TODD22 20 18.12.17 13:54 Сейчас в теме
(27)
Безопасность не может быть бесплатной.

Я не столько про "бесплатность" сколько про то что как бы не очень разумно тратить такие энергоресурсы. Хотелось бы более простой(дешёвый) способ генерации не изменяемых блоков.
32. mkalimulin 1651 18.12.17 14:03 Сейчас в теме
(29) Ну какие такие? Представьте - у вас 10 компов работают с 10 часов до 20 часов. Ну добавили вы к ним еще один, который работает круглосуточно. Какие ресурсы? Для большинства случаев - этого будет достаточно.
А если вы хотите действительно серьезной защиты - купите ASIC. Он будет половину времени работать на вашу безопасность, а половину времени майнить. В этом случае, как ни странно, затраты вообще выходят в ноль.
33. mkalimulin 1651 18.12.17 14:06 Сейчас в теме
(29) Я уж не говорю про тот случай, когда вы запустили процедуры в фоновом задании на сервере. И просто дозагрузили ваш сервер, который скорее всего загружен процентов на 10, а энергию потребляет.
127. Steelvan 317 19.12.17 12:07 Сейчас в теме
(27) "... от миллиона рублей".
60. tailer2 18.12.17 15:23 Сейчас в теме
(26) никто не заставляет
нерентабельный майнер отвалился - требование к красоте уменьшилось

сгорят китайские фермы - люди будут майнить на нотбуках
39. Fragster 1168 18.12.17 14:23 Сейчас в теме
(18) ну а так "медленно" перестраиваете остаток цепочки... для "невозможности" подмены вашего способа также недостаточно. Достаточно разделения ответственности механизма подписи (ну, или контроля целостности, блокчеина или как вам будет удобно) (со временем подписи и, возможно, порядковым номером одноразового пароля) и собственно информационной системы.
+ дополнительным плюсом можно сделать "онлайн" подпись, с абсолютной невозможностью изменений задним числом, не дожидаясь попадания данных в "блокчеин"
20. mkalimulin 1651 18.12.17 13:12 Сейчас в теме
(17) Вы не просто так говорите. Вы атаку предложите. За маленькие деньги.
45. Fragster 1168 18.12.17 14:29 Сейчас в теме
(20) учитывая, что весь механизм находится в той же информационной системе - это пшик. Да и сам алгоритм... можно сделать ВК, которая будет считать мд5 хэши на видеокарте в тысячу раз быстрее, чем код в 1с. Стоимость разработки такой компоненты (по алгоритму из статьи) в пределах 5000 рублей.
OnicaIOn; +1 – Ответить
47. mkalimulin 1651 18.12.17 14:32 Сейчас в теме
(45) Эту самую ВК вы и подключите в функцию ПолучитьКонечныйКлюч(), если захотите усилить свою защиту.
49. Fragster 1168 18.12.17 14:36 Сейчас в теме
(47) я сейчас совсем про другое говорю... при физическом доступе к ИС мы хоть заранее можем все хэши посчитать, изменить сам алгоритм хэшэй, снизив сложность и пересчитав хэши, сделать так, чтобы отчет показывал всегда "ок" (или наобоброт).
Так что безопасность "дутая".
192. Kosstikk 87 20.12.17 09:22 Сейчас в теме
(16) Сделать можно ) просто цепочка документов после будет считаться не валидной. Т.е. я такой "атакер", захожу в базу и меняю самый первый доукмент.. просто.. дальше система становится сбойной, т.к. вся цепочка - нарушена.. вы восстанавливаете систему, кстати как? )

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

Итак, блокчейн - это инструмент для неподменности данных в первую очередь. Но! Для этого требуется децентрализация.
81. SerVer1C 1146 18.12.17 17:02 Сейчас в теме
(14) Чтобы получить защиту от изменения документов, давно придумали цифровую подпись. (Только это не защита, а контроль целостности).
84. mkalimulin 1651 18.12.17 17:09 Сейчас в теме
(81) Подпись - это совсем другое. Здесь нет подписей людей. Они не нужны. Да они и не защищают. Люди сговорились и поставили подписи под старым документом. Моя система исключает изменение "задним числом" в принципе.
SunShinne; +1 – Ответить
19. пользователь 18.12.17 13:12
Сообщение было скрыто модератором.
...
22. mkalimulin 1651 18.12.17 13:20 Сейчас в теме
Чтобы его найти, требуется время. Или дорогостоящее оборудование.
24. kolya_tlt 92 18.12.17 13:26 Сейчас в теме
решение кажется не законченным, так как простой человек не видит результата, от слова совсем.
25. mkalimulin 1651 18.12.17 13:30 Сейчас в теме
(24) Простой человек может скачать обработки и позапускать их в любой базе. Единственное предупреждение - если в базе много проведенных документов цепочка будет строится очень долго. Либо распроведите большинство документов, либо подправьте запрос в обработке генерации.
28. Dzenn 936 18.12.17 13:51 Сейчас в теме
Если я правильно понял, суть любого блокчейна в том, чтобы отвергать любые изменения блока в цепочке. То есть, для эффективной реализации при помещения документа в блокчейн нужно где-то сохранять копию его состояния. И если по какой-либо причине состояние документа изменилось (удалили, изменили, распровели), восстанавливать его из копии.
30. mkalimulin 1651 18.12.17 13:57 Сейчас в теме
(28) Я реализовал только контроль. Восстановление документов делается обычным способом.
Кто-то хитрый взял и поменял местами количество и цену в старом документе. Контроль это обнаружил и выдал ссылку на документ. Бухгалтерия достала первичку и восстановила документ. Из "бумажного" бэкапа, так сказать.
SunShinne; +1 – Ответить
31. TODD22 20 18.12.17 13:58 Сейчас в теме
(30)
Кто-то хитрый взял и поменял местами количество и цену в старом документе.

Так вроде "установка даты запрета редактирования" и ЖР должен решить эту проблему.
34. mkalimulin 1651 18.12.17 14:08 Сейчас в теме
(31) Я зайду в базу напрямую. Мимо всех этих ваших дат и ЖР. Здесь работы даже не на час, а еще меньше.
72. comptr 57 18.12.17 16:27 Сейчас в теме
(34) а как Ваше решение отследит изменение, произведенное напрямую в базе? Путём пересчета всех хешей?
Т.е. КлючКонечный <> Хеш(КлючНачальный + ХешДокумента + Соль) для каждого документа.
При этом ХешДокумента - строка из значений всех реквизитов документа.
И проверять нужно будет с самого начала.
И как быстро оно будет работать, при активном документообороте, скажем, через месяц? 6 месяцев? 2 года?

В итоге появится "Дата запрета редактирования данных".
А когда она появится - мы не узнаем об изменении в документах старого периода.

А кто поменял? Нужно хранить пользователя, который записал. И дату, когда поменял.

В случае прямой записи в базу (что это за база, в которую любой Вася может писать напрямую? Куда админы смотрят?) всё равно мы только сможем факт изменения (а если будем использовать Дату запрета редактирования, то и это можем не узнать), ничего более.

В итоге, получим упрощенное версионирование.

А идея, в принципе, интересная.
73. mkalimulin 1651 18.12.17 16:34 Сейчас в теме
(72) Зачем такие сложности? Если есть изменения в базе, тогда ХешДокумента(в блоке)<>ХешДокумента(рассчитаный для контроля). Хеш документа - строка длиной 64 символа. Можно хранить двоичные данные, тогда это будет 32.
Если же внесли изменения в базу и одновременно заменили ХешДокумента, тогда КлючНачальный+ХешДокумента+КлючКонечный не дадут "красивый" хеш. Посмотрите код, он совсем короткий.
110. comptr 57 19.12.17 07:01 Сейчас в теме
(73) чтобы узнать, что ХешДокумента изменился, нужно проверить всю цепочку блоков, начиная с первого.
124. mkalimulin 1651 19.12.17 11:32 Сейчас в теме
(110) Не обязательно. Можно проверять с любого места. Обрезали основную базу. Отправили часть в архив. То же самое делаете с цепочкой блоков.
126. comptr 57 19.12.17 12:01 Сейчас в теме
(124)
Можно проверять с любого места.
А нужно - с начала цепочки, ибо изменения могли быть где угодно, мы же напрямую в базу лезем.

Обрезали основную базу
Каждые полгода обрезать?

То же самое делаете с цепочкой блоков
А если изменят те документы, цепочка которых в архиве?
Alex_YAM; +1 – Ответить
35. mkalimulin 1651 18.12.17 14:10 Сейчас в теме
(31) Стоимость успешной атаки на вашу схему - около 2000 руб.
37. vadim1011985 103 18.12.17 14:20 Сейчас в теме
(35) Так и у вас решение не защищает, Измените цену - это покажите и ваше предупреждение и ЖР а что конкретно изменили -ни ЖР ни блокчейн не покажет .
41. mkalimulin 1651 18.12.17 14:24 Сейчас в теме
(37) Я изменил документ мимо ЖР. Мое решение это отследит. Ваше - нет.
SunShinne; +1 – Ответить
42. vadim1011985 103 18.12.17 14:25 Сейчас в теме
(41) я удалил последний документ из блокчейна - теперь и ваше решение не отследит
46. mkalimulin 1651 18.12.17 14:29 Сейчас в теме
(42) Удалили последний документ и последний блок. Чудьненько. Пришла бухгалтерия спросила. Вы почему не работаете? Почему до сих пор документы за этот день не ввели?
200. Dementor 1077 20.12.17 20:22 Сейчас в теме
(46)
Почему до сих пор документы за этот день не ввели?

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

Технологию блокчейна теоретически можно применить в нашей работе, но не в указанном вами случае! Зачем вообще нужно проверять всю историю документов в базе, если махинации на практике проводят в текущем оперативном диапазон (до недели), в рамках которого восстановить цепочку будет несложно?

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


В таком случае у меня, как у вашего потенциального взломщика (того самого, который умеет обходить дату запрета редактирования, RLS и все варианты версионирования), есть простой и надежный метод взлома вашей системы. Выборочно беру несколько звеньев и в СУБД напрямую изменяю связанные исходящий и входящий хеши - вам звоночек, что документы кто-то изменил - ищите его бумажную копию в архиве, сверяйте и понимайте что творится какая-то непонятная херня. Вы в панике пытаетесь восстановить какой-то из старых бэкапов для сравнения, но (у меня же по условиям ситуации есть доступ к СУБД), как только я решил ломать систему, я позаботился о том, что бы бэкапы стали "невосстанавливаемыми". И теперь у вас выбор: или плюнуть на весь этот блокчейн и забыть как страшный сон, или заплатить китайским майнерам за восстановление цепи и заметания следов моих преступлений.

Да и запись в блокчейн документа в течении 4-10 минут - это полный бред. Защита имеет смысл в компаниях с большим оборотом, когда каждую минуту вводят несколько документов - ваш централизованный блокчейн на базе Proof-of-Work просто уничтожит бизнес.
vladimirmatancev; +1 – Ответить
216. mkalimulin 1651 20.12.17 23:00 Сейчас в теме
(200) Если некто может провести успешную атаку в последней неделе, значит у вас нет нормальной системы учета и контроля. При нормальной системе успешная атака возможна только в достаточно "древнем" периоде, который никто уже точно проверять не будет. Неделя должна быть проверена и перепроверена. Документ введеный в понедельник, должен быть проверен в понедельник и перепроверен в пятницу.
Поломать ключи и вывести из строя саму систему, не трогая при этом документы - интересная мысль. Но к чему такие сложности? Можно ведь просто выбросить сервер в окно. Успешная атака - это когда вы что-то сделали и никто ничего не узнал.
Какая разница - сколько времени пишется документ в блокчейн? Основной системе от этого ни холодно ни жарко.
219. Dementor 1077 21.12.17 00:31 Сейчас в теме
(216) если есть нормальная система учета и контроля, то никакой блокчейн не нужен! Вполне достаточно или версионирования из БСП или платформенной истории изменения объектов, что бы узнать кто и что изменил. Сама же СУБД должна быть защищена и, если есть параноидальное подозрение, что админы могут сливать какому-то хакеру информацию о пароле доступа, то их можно периодически проверять на полиграфе.

Я скачал обработку вот прямо отсюда. Зашел в базу. Выбрал "файл/открыть". Открыл обработку и нажал кнопку "Запуск". Опишите атаку на эту последовательность действий со стороны "программера уровня Бог".


Каждый день наблюдаю за этой процедурой. В какой-то момент отвлекаю внимание и быстро устанавливаю в браузере расширение Tampermonkey или подобное; скрываю видимость иконки на панели; забрасываю на выполнение мой скриптик. Мой скрипт обнаружив, что просматривается сайт Инфостарт заменяет ссылку на обработку другой ссылкой, которая ведет на мой сервер, где лежит моя обработка, которая всегда будет возвращать успешность проверки.

И это я еще не хакер! Был бы хакером, то установил бы на компьютере резидентную программу, которая анализировала запросы к файловой системы. Если обращается процесс со словом designer, то отдавал бы оригинальную обработку - проверяйте сколько хотите, но если обращается на чтение процесс платформы в режиме предприятия, подсовывал бы свою модифицированную обработку.
vladimirmatancev; +1 – Ответить
223. mkalimulin 1651 21.12.17 01:50 Сейчас в теме
(219) Никакая система визуального контроля не в состоянии контролировать всю базу постоянно. Для этого и нужен блокчейн. Резидентная программа - это интересно. Надо поизучать вопрос.
44. vadim1011985 103 18.12.17 14:27 Сейчас в теме
(41) я вообще никакого решения не предлагал. Просто присоединился к обсуждению так как тема интересна
36. vadim1011985 103 18.12.17 14:16 Сейчас в теме
(28) не копию -просто каждое изменение фиксируется в цепочке и его можно отследить. Суть блокчейна в том что
информация одновременно открыта для чтения - все могут видеть все НО + информация защищена от изменений из вне. изменять могут только те для кого эта информация предназначена
38. mkalimulin 1651 18.12.17 14:21 Сейчас в теме
(36) То, что попало в блок цепочек изменить не может никто. В случае с биткоином - совсем никто. В моем примере - практически никто. Неизменяемость - главное свойство блокчейна.
40. vadim1011985 103 18.12.17 14:24 Сейчас в теме
(38) что мешает пользователю с правами админа в конфигураторе грохнуть ваш документ ?
43. mkalimulin 1651 18.12.17 14:27 Сейчас в теме
(40) Ничего не мешает. Только всю цепочку, начиная со следующего документа придется перестраивать. Иначе контроль это обнаружит.
48. vadim1011985 103 18.12.17 14:35 Сейчас в теме
(43) мне никто не мешает изменить ваш код что бы получить нужный результат
51. mkalimulin 1651 18.12.17 14:57 Сейчас в теме
(48) Код контрольного модуля 30 строк. Его любой может проверить визуально. Также можно просто время от времени скачивать правильный код из публичного доступа.
104. Inkasor 28 18.12.17 21:37 Сейчас в теме
(51)Можно и через http api на другую, аудиторскую, машину вытащить.
50. ADirks 187 18.12.17 14:43 Сейчас в теме
Что-то мне подсказывает, что контроль наличия изменений, и гарантия неизменности данных - это не одно и то же.
vladimirmatancev; artbear; ixijixi; +3 – Ответить
53. mkalimulin 1651 18.12.17 15:02 Сейчас в теме
(50) Мое решение поразумевает, что при обнаружении изменений есть всего три варианта дальнейших действий.

1. Провести расследование и восстановить документ в первоначальном виде.
2. Плюнуть на все и отказаться от дальнейшего использования системы безопасности.
3. Попросить знакомого китайского майнера задействовать его ферму для восстановления правильной цепочки.

Исходя из этого, я и утверждаю, что мой контроль дает гарантию неизменности.
sulfur17; +1 – Ответить
52. karimov_m 18.12.17 15:02 Сейчас в теме
Пока не читал, но сразу напишу что опередил, тоже готовлю статью как реализовать принцип блокчейна средствами 1С ))
54. mkalimulin 1651 18.12.17 15:03 Сейчас в теме
(52) Две статьи лучше, чем одна. Welcome!
55. Йожкин Кот 1009 18.12.17 15:13 Сейчас в теме
Спасибо за пример! Комментирующие, видимо, не совсем понимают суть технологии блокчейна и предлагают использовать ЭЦП, переписать обработку или программно запретить изменение данных базы
SunShinne; support; +2 – Ответить
58. mkalimulin 1651 18.12.17 15:19 Сейчас в теме
(55) Спасибо вам за отзыв! Но я также и всем комментаторам благодарен. Они помогают раскрыть суть технологии для всех.
59. acsent 1209 18.12.17 15:20 Сейчас в теме
(58) А можешь написать статью про Proof of Work. было бы интересно
61. mkalimulin 1651 18.12.17 15:25 Сейчас в теме
(59) Ну разве что придумаю, куда его прикрутить в 1С. Чисто теоретические статьи пока не писал.
64. TODD22 20 18.12.17 15:36 Сейчас в теме
(55)
Комментирующие, видимо, не совсем понимают суть технологии блокчейна

Так объясните?
и предлагают использовать ЭЦП, переписать обработку или программно запретить изменение данных базы

предлагают ту же задачу решать другими способами. Вопрос в чём преимущество именно этой технологии для решения конкретной задачи? А не любой другой технологии.
Вопрос в том когда блокчейн для решения задачи это хорошо. Что бы не было "блокчейна" ради "блокчейна".
67. Йожкин Кот 1009 18.12.17 15:50 Сейчас в теме
(64) Не хочу показаться грубым, но Вас в Яндексе/Гугле забанили?
Одно из преимущество в (56) описано
56. acsent 1209 18.12.17 15:14 Сейчас в теме
Смысл блокчейна не неизменности документов, а в возможности рапределенной сети без доверия.
Но так как тут сеть из 1 узла, то смысла в ней конечно нет.
А для контроля неизменности достаточно версионирования, что в 1с уже есть, и даже в платформе.

Ведь если есть полный доступ к базе, то можно удалить все ключи позднее документа и все пересчитать заново
vladimirmatancev; top_1c; +2 – Ответить
57. mkalimulin 1651 18.12.17 15:17 Сейчас в теме
(56) Неизменность тоже чего-то стоит. Нет?
Я ведь не биткоины майнить предлагаю, а сделать такую систему, чтобы сахар со склада не воровали.
65. TODD22 20 18.12.17 15:38 Сейчас в теме
(57)
чтобы сахар со склада не воровали.

Так блокчейн пока за руку не ловит. То что в программе не изменили, не означает что со склада не унесли.

Значит область сужается до того что система только отслеживает изменения в базе.
vladimirmatancev; top_1c; +2 – Ответить
66. mkalimulin 1651 18.12.17 15:49 Сейчас в теме
(65) Если унесли, не изменив в базе, это не проблема. Вычли из зарплаты и попросили больше так не делать.
Проблема, когда унесли, изменили в базе и никто не узнал.
63. mkalimulin 1651 18.12.17 15:34 Сейчас в теме
(56) Весь смысл этого решения в том, что "все пересчитать заново" нельзя. Не то чтобы совсем-совсем. За приемлемые деньги нельзя. Некто поменял в старом документе 10 пачек сахара по 1 рублю на 1 пачку по 10 рублей и пошел довольный домой с 9 пачками. На версионирование ему начхать. Он в базу напрямую влез. Это если без моей системы.
А с моей системой за эти несчастные 9 пачек придется потратить ресурсы, которых хватит на один биткоин. 9 пачек ведь не стоят один биткоин?
133. TuneSoft 372 19.12.17 13:01 Сейчас в теме
(63)
если юзер с правами админа к примеру изменил документ, удалил версию документа, удалил все записи "вашей системы" то чем поможет "ваша система" ?
140. mkalimulin 1651 19.12.17 13:29 Сейчас в теме
(133) Процедура генерации блоков начнет строить цепочку сначала. Не сможет это сделать за отведенное ей время и факт раскроется.
153. TuneSoft 372 19.12.17 17:12 Сейчас в теме
(140)
Процедура генерации блоков начнет строить цепочку сначала. Не сможет это сделать за отведенное ей время и факт раскроется.


Раскроется факт что что-то изменили, но в каком объекте будет неизвестно.

"А с моей системой за эти несчастные 9 пачек придется потратить ресурсы"

Не придётся.
62. tailer2 18.12.17 15:32 Сейчас в теме
68. acsent 1209 18.12.17 16:04 Сейчас в теме
А сколько по времени подписывается 1 документ?
70. mkalimulin 1651 18.12.17 16:17 Сейчас в теме
(68) Это зависит от выставленного вами уровня сложности. Конкретно я для тестирования использовал 4-й уровень. На моем core i5 выходило около 10 сек. на документ. Сложность 5 давала около минуты. В данном примере я не использовал побитовые операции, поэтому у меня шаг настройки сложности достаточно большой (4 бита). По хорошему, надо бы сделать побитовые шаги.
74. ixijixi 2177 18.12.17 16:41 Сейчас в теме
(70) Мне кажется, или это неприемлемо много?
Прикрепленные файлы:
afk; vladimirmatancev; +2 –2 Ответить
75. ixijixi 2177 18.12.17 16:43 Сейчас в теме
(74) шучу, конечно, минус не ставил, тема интересная, заставила под другим углом посмотреть на модную тенденцию
SunShinne; +1 – Ответить
76. mkalimulin 1651 18.12.17 16:48 Сейчас в теме
(74) В данном случае нет смысла говорить много или мало. Чтобы система работала, время на подпись не должно быть ни большим, ни маленьким. В идеале оно должно быть таким, чтобы 24 часов впритык хватало на подпись вновь поступивших за эти 24 часа документов.
69. Synoecium 794 18.12.17 16:17 Сейчас в теме
Спасибо. Вы смогли простыми словами и примерами поведать о довольно сложных вещах (на самом деле не настолько сложных :)
71. mkalimulin 1651 18.12.17 16:18 Сейчас в теме
(69) Очень хорошо, что вы увидели простоту.
77. starik-2005 3309 18.12.17 16:50 Сейчас в теме
Блокчейн без распределенной базы - штука бессмысленная, ибо суть технологии в том, чтобы данные транзакций были доступны всем держателям распределенной базы, что позволяет без доверительного центра иметь возможность удостовериться в истинности операции.

Но в общем и целом, если сократить круг держателей базы транзакций до участников некоторой хозяйственной деятельности, то интерес к этой технологии может быть оправдан и необходимости в дополнительной математике уже не будет, т.к. любой узел просто не даст поступить изменению, а записи в узле с изменениями при первом входящем пакете с контрольной суммой будут скомпрометированы и признаны недействительными и система перейдет в режим синхронизации разрушенных ("подмененных") блоков.
vladimirmatancev; SunShinne; Di-dog; +3 – Ответить
78. mkalimulin 1651 18.12.17 16:53 Сейчас в теме
(77) Эта статья - заявка на то, что блокчейн и в обычной базе ничего себе блокчейн. Я делаю базу с неизменяемыми транзакциями. И это имеет свой смысл.
SunShinne; +1 – Ответить
79. starik-2005 3309 18.12.17 17:00 Сейчас в теме
(78)
И это имеет свой смысл.
Можно написать триггер для SQL-базы, который будет в запись подставлять некий хеш при INS ERT и просто ничего не делать при UPDATE и DELETE - и этого уже будет достаточно, чтобы сделать таблицу неизменяемой. Дальше при SELE CT триггер на валидацию и флаг того, что строка таблицы не удовлетворяет условию связанности. Т.е. 1С тут как таковая и не нужна.
82. mkalimulin 1651 18.12.17 17:04 Сейчас в теме
(79) Стоимость успешной атаки на вашу систему в пределах 2000 руб. Стоимость успешной атаки на мою систему зависит от выставленного уровня сложности. Это может быть и 20 тыс. долларов (условно 1 биткоин) и миллион долларов. Сравните.
135. TuneSoft 372 19.12.17 13:05 Сейчас в теме
(82) про стоимость непонятно, поясните, пожалуйста. Инсайдер-админ в 1С базе может внести любые изменения и ему неважно что цепочка записей в блокчейн неправильная, может полностью все записи блокчейна удалить.
138. mkalimulin 1651 19.12.17 13:25 Сейчас в теме
(135) Админ может и базу удалить. И не только админ, а даже уборщица.
152. TuneSoft 372 19.12.17 17:10 Сейчас в теме
(138) "Стоимость успешной атаки на мою систему зависит от выставленного уровня сложности."
Не зависит от уровня сложности.
Зависит за какую сумму согласится "уборщица" или "админ" удалить базу. :)
157. mkalimulin 1651 19.12.17 18:10 Сейчас в теме
(152) Вы не знаете - что делать, когда удалили базу? Могу подсказать )))
238. milanse 41 22.12.17 09:37 Сейчас в теме
(82) Каким образом регулируется сложность атаки ?

Да и в чем смысл атаки, если таблица полностью в руках одного участника и он может менять ее как ему заблагорассудится.
239. mkalimulin 1651 22.12.17 10:54 Сейчас в теме
(238) Сложностью нахождения "красивого" хэша. Таблицу нельзя менять, как заблагорассудится. Таблицу надо менять так, чтобы она прошла контроль. Надо заново найти "красивые" хэши, потратить на это большие ресурсы.
80. vadim1011985 103 18.12.17 17:02 Сейчас в теме
(78) Что значит с неизменяемыми транзакциями ?? Документ можно изменить - просто система укажет на это - в данном случае это тот же журнал регистрации.
83. mkalimulin 1651 18.12.17 17:07 Сейчас в теме
(80) Журнал регистрации можно изменить. Можно изменить базу, не меняя журнала регистрации. Ничего этого моя система не позволяет.
88. vadim1011985 103 18.12.17 17:19 Сейчас в теме
(83) Еще раз, вашу систему можно изменить - например поставить сложность 0 поменять документ, сформировать пересчитать хеши (при 0 сложности доли секунды) или вообще изменить код проверки , в общем изменить код вашей обработки. Я уже говорил об этом. Интересно когда пользователь догадается что код изменен ?
91. mkalimulin 1651 18.12.17 17:29 Сейчас в теме
(88) Пользователь с утра выпьет чашечку кофе. Почитает новости на инфостарт, а заодно и скачает контрольную обработку. Вот собственно и все.
Насчет сложности в обработке генерации - примерно то же самое. Вообще атака путем подмены кода - легка, изящна, и... легко отражаема.
95. vadim1011985 103 18.12.17 17:35 Сейчас в теме
(91) У вас есть машина ? Вы каждый раз прежде чем поехать лезите в мотор смотрите каждый винтик шурупчик и т.д. заказываете оригинал двигателя что бы убедится что у вас все ок ?
98. mkalimulin 1651 18.12.17 17:39 Сейчас в теме
(95) Ну я иногда бензин заливаю. Да что там иногда. Постоянно заливаю! ))))
100. vadim1011985 103 18.12.17 17:48 Сейчас в теме
(98) Мотор значит не смотрите ? Так почему вы считаете что пользователь должен каждый раз заходить и проверять не изменился ли код ? так и изменения можно вернуть обратно после своих "грязных дел" ))

или удалили все документы Блоков - и все понятно что кто-то залез а где и что изменяли - непонятно
101. mkalimulin 1651 18.12.17 17:56 Сейчас в теме
(100) Изменения кода вернуть обратно нельзя. Это же атака на код. Она потому и отражается легко, что нельзя. Ваши "грязные дела" спрятаны только до тех пор, пока код изменен. Вернули нормальный код, "дела" тут же и всплыли.
Что касается удаления блоков. Так ведь и базу можно легко удалить. И что вы тогда делать будете?
102. mkalimulin 1651 18.12.17 17:57 Сейчас в теме
(100) Я хочу ездить на машине - я заливаю бензин.
Я хочу иметь безопасную базу - я закачиваю безопасную обработку.
Все просто.
136. TuneSoft 372 19.12.17 13:07 Сейчас в теме
(83) что значит система не позволяет ? администратор не сможет удалить все записи вашей системы ? как вы это обеспечите ?
148. mkalimulin 1651 19.12.17 15:10 Сейчас в теме
(136) Это не останется незамеченным. Также, как не останется незамеченным удаление всей базы.
154. TuneSoft 372 19.12.17 17:13 Сейчас в теме
(148) Согласен, будет заметно что что-то изменили, но кто и что изменил будет неизвестно в случае удаления всех записей блокчейна.
158. mkalimulin 1651 19.12.17 18:11 Сейчас в теме
(154) Вы знаете - что такое бэкап?
171. mkalimulin 1651 19.12.17 18:56 Сейчас в теме
(80) Система укажет на это. Будет проведено расследование и документ будет восстановлен.
85. SerVer1C 1146 18.12.17 17:09 Сейчас в теме
Как быть с тем, если в первичном документе требуется поменять какое-то неправильно введенное значение? Такое часто бывает. При работе. Людей. Тогда придется пересчитать весь остаток цепочки.... Как-то грустно и дОлгО...
vladimirmatancev; +1 – Ответить
86. mkalimulin 1651 18.12.17 17:12 Сейчас в теме
(85) Ввести в систему документ коррекции. Если изменения существенны. Если надо поменять всего лишь комментарий, тогда, при правильной настройке (см. интерфейс обработок), ничего дополнительно делать не надо.
87. SerVer1C 1146 18.12.17 17:18 Сейчас в теме
(86) Вы реально представляете, сколько документов может меняться в прошлых периодах в продакшн-базе? Только и придется затратить все вычислительные мощности, чтобы пересчитывать хэши. Ваша статья интересна в академических целях и для другого применения технологии блокчейн, но не ради того, чтобы знать, что документы не изменялись.
vladimirmatancev; +1 – Ответить
90. mkalimulin 1651 18.12.17 17:25 Сейчас в теме
(87) Представляю. От ни одного до очень много. Вы, быть может, видели только одну "продакшн-базу" с одной идеологией корректировки. А я видел своими глазами множество баз где все изменения вносились отдельными корректирующими документами. И в этих базах не было ни одного документа, измененного задним числом. По крайней мере, владельцы очень на это надеялись.
Кстати, практика работы "задним числом" потому и получила такое широкое распространение, что запрет не имел смысла. Не было надежной гарантии от изменения старых документов.
93. SerVer1C 1146 18.12.17 17:33 Сейчас в теме
(90) До блокчейна было версионирование или простой "триггер" на запись документа. ))) Отследить изменение можно намного более простыми методами. А с применением блокчейна: ну изменили док, ну вы поняли, что док изменен и что дальше? Как блокчейн поможет НЕ изменять документ???
vladimirmatancev; +1 – Ответить
96. mkalimulin 1651 18.12.17 17:36 Сейчас в теме
(93) Он делает цену изменения документа непомерно высокой.
111. comptr 57 19.12.17 07:22 Сейчас в теме
(96) непомерно высокая цена изменений означает такую же цену внесения данных.

Если уж фантазировать, что нашелся человек, который может писать напрямую в базу, то почему бы ему не сделать копию базы, забрать её к себе и там, в спокойной обстановке запустить пересчет хешей за день-два. И потом залить их в реальную базу. Даже пересчет двух хешей, изменённого документа, и следующего за ним, покажет, что изменили второй документ, а не первый. И что делать?
115. SerVer1C 1146 19.12.17 09:10 Сейчас в теме
(96) А вот с этого момента, пожалуйста, подробнее. Может быть вы хотели сказать, что высока цена сокрытия факта изменения документа, а не самого документа?
129. mkalimulin 1651 19.12.17 12:20 Сейчас в теме
(115) А какая, собственно, разница? Если вы не можете скрыть факт изменения, это значит что в современном мире, где уже многие знают значение слова бэкап, вы не можете изменить документ.
139. SerVer1C 1146 19.12.17 13:26 Сейчас в теме
(129) Дешевле сравнить хэш дока из бэкапа с хэшем дока в базе. Имея некоторый доступ к системе можно прописать красивый хэш предыдущему доку, от него рассчитать по данному алгоритму красивый хэш для текущего дока - и вы уже не заметите, что док был изменен, вы же не станете верифицировать весь блокчейн?
147. mkalimulin 1651 19.12.17 15:09 Сейчас в теме
(139) Процедура контроля проверяет всю цепочку. Посмотрите.
89. vadim1011985 103 18.12.17 17:23 Сейчас в теме
(86) Опять же читайте про блокчейн - систему можно взломать , при условии что у злоумышлиников будет доступ к 60-70 % узлов данной сети (в реальности можно считать что такой результат трудно достичь , я бы даже сказал невозможно) - в вашем случае получается все 100 %
94. mkalimulin 1651 18.12.17 17:34 Сейчас в теме
(89) У вас неверные сведения. Есть только одна (гипотетическая конечно) атака на биткоин. Это получение 51% мощностей. Узлы тут вообще ни при чем.
Я не говорю, что мою систему нельзя атаковать. Я говорю, что вы, как пользователь, можете сами установить цену атаки и сделать ее бессмысленной.
92. vadim1011985 103 18.12.17 17:32 Сейчас в теме
И еще один вопрос - многопользовательская работа - допустим какой-то холдинг на 300 пользователей - можете сказать скорость обработки допустим при сложности 3 (ну или 2) на сколько это повесит систему ? А если учесть еще и раздельную работу например один пользователь создает документ - второй проверяет корректирует , третий тоже что-то вносит не существенное , как будет вести себя ваша система.
vladimirmatancev; +1 – Ответить
97. mkalimulin 1651 18.12.17 17:38 Сейчас в теме
(92) Вообще не повесит. Ну работает еще один "пользователь", читает документы время от времени.
99. mkalimulin 1651 18.12.17 17:48 Сейчас в теме
(92) В том то и дело, что система достаточна автономна по отношению к основной системе. Вся нагрузка - однократное (за все время) прочтение каждого контролируемого документа.
103. lastcontra 117 18.12.17 20:40 Сейчас в теме
Михаил, спасибо за публикацию. Согласен, что многие оппоненты отошли от новизны идеи. Появилась мысль: сложность динамически высчитывать в зависимости от времени работы алгоритма блокчейна по исходным документам за 1 день, как в примере биткоина (длина блока зависит от скорости добывания новых блоков). Жалко, конечно, что зависимость скорости от сложности - это не линейная функция.
gubanoff; +1 – Ответить
107. mkalimulin 1651 18.12.17 23:20 Сейчас в теме
(103) Спасибо за отзыв. Ваша мысль интересна. Дополнительно храним в блоке сложность. Непонятно пока как защитится от такой атаки: для перестроения цепочки атакующий подменяет исходную сложность на минимальную.
105. support 4484 18.12.17 21:50 Сейчас в теме
Снимаю шляпу! Реально, все гениальное просто. Технология блокчейн действительно можно использовать для контроля последовательности проведения документов! Это же лежало на поверхности.
Это дает огромные возможности для создание ERP-системы нового поколения.
Можно создать систему с прозрачным и надежным к взлому аудиторским следом, до бесконечности. Именно то, что повышает капитализацию предприятия для инвестора. То, чего не хватало 1С. Это возможность выхода на мировой рынок.
С точки зрения маркетинга это тоже супер!
Надо создать подсистему для типовой, возможно с облачным сервисом, который будет обладать огромными вычислительными мощностями и сдаваться для вычисления красивого хеша. Опять же майнеров перепродавать.
davydoff; +1 – Ответить
106. mkalimulin 1651 18.12.17 23:11 Сейчас в теме
(105) Спасибо за лестный отзыв! Вам, возможно, будет интересно узнать, что идея родилась несколько дней назад здесь:
https://forum.infostart.ru/forum95/topic183216/
Из обсуждения вы можете увидеть, что я сам сначала нелестно отозвался об идее прикрутить блокчейн к обычной базе. Потом подумал: а вдруг в этом что-то есть. Понял, что есть. Идея показалась настолько простой и красивой, что ближайшие выходные были принесены в жертву тому, чтобы донести ее до уважаемого сообщества. Надеюсь, что эта публикация даст старт множеству интересных разработок. Ваша идея насчет облака очень интересна. Тут действительно открываются необыкновенные возможности. Можно наполовину майнить, наполовину обсчитывать безопасность. Можно задействовать майнеров и частично снять с них упреки в том, что они понапрасну тратят электроэнергию. Вот же сахар со склада не воруют. Есть польза? Есть.
112. tiniji 164 19.12.17 07:28 Сейчас в теме
(105) Это отличная идея майнинга за стартмани ;)
117. support 4484 19.12.17 09:42 Сейчас в теме
(112) вообще, в этом виде можно реализовать блокчейн для стартмани. Хранить цепочку транзакций. Хеш брать из суммы, адресата, отправителя, даты. Только что это даст? Надо подумать.
Т.е. это не в чистом виде криптовалюта, а просто контроль последовательности транзакций. Но мне кажется и так все доверяют транзакциям стартмани.
113. ixijixi 2177 19.12.17 08:29 Сейчас в теме
(105) Доржи, что-то Нью-Васюки всомнились )
108. serg_gres 157 19.12.17 01:24 Сейчас в теме
Вот так вот прогресс шел, шел...все ускорял и оптимизировал проведение документов, а тут пришли биткоин с блокчейном, все поломали и развернули вспять...

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

Наверное проще хэши документов хранить в какой то удаленной базе, и документы будут быстро проводиться и контроль будет
DAAbramov; ixijixi; +2 – Ответить
109. unichkin 1627 19.12.17 01:25 Сейчас в теме
Автор, ознакомтесь с ИТС, перед тем как писать код..
https://its.1c.ru/db/v8std/content/2149184103/hdoc
https://its.1c.ru/db/v8std/content/2149184090/hdoc
и т.п.
Если говорить о кодинге в конфигураторе - то соблюдение элементарных правил это хороший тон.. Если про статью - то имхо, обязанность. Кто-то смотрит, учится на таких примерах, копирует их. А учится на подобном не стоит.
Плюсанул только за интерес к контексту и поднятое обсуждение.
vladimirmatancev; li5enok; eden_gmail; artbear; DAAbramov; +5 –4 Ответить
114. DAAbramov 70 19.12.17 08:44 Сейчас в теме
Всем привет! Все же суть блокчейна в его децентрализованности. Чтобы каждый из сети получал полную уверенность в том, что все играют "по-честному". Здесь же вся инфа хранится в одной базе, а так же можно получить физический доступ к ней(Напомню, что ни одна серверная ОС не гарантирует секьюрность в случае получения фактического доступа, и поэтому я считаю, что это противоречит самой идеологии блокчейна.
Тем не менее статья подняла обсуждение и думаю данный алгоритм(не блокчейн) - может применяться в некоторых случаях, а каких надо думать =)
116. support 4484 19.12.17 09:35 Сейчас в теме
(114) Никаких противоречий, цепочку можно хранить децентрализовано. Основной смысл, что физический доступ не дает преимуществ.
Хранить цепочки будут майнеры, которые могут получать доход с каждого проведения. А за хранение проведения будет платить компания, которой нужен блокчейн аудиторский след.
120. VSvintsov 2 19.12.17 10:29 Сейчас в теме
хорошая статья - только зря не рассматриваете эти доработки в качестве нормальных крипто денег.
крипто деньги не могут быть средством накопления, но вот средством обмена запросто : товар - крипта - товар.

ресурсы даже внутри организации ограничены - поэтому можно предположить футуристическую картинку, когда руководство каждому отделу в начале месяца выделяет некоторое количество крипты для оплаты работы сотрудников IT :) .
нужно -потратили, не нужно - хорошо работаете и конвертируете эту крипту в премию :-)
125. AKnyazkov 55 19.12.17 11:38 Сейчас в теме
А зачем такой треш в функции ПолучитьДокументСтрокой() , а чего бы не использовать ЗначениеВСтрокуВнутр(<Значение>) ?
vladimirmatancev; +1 – Ответить
128. mkalimulin 1651 19.12.17 12:09 Сейчас в теме
(125) Я хотел продемонстрировать хэш не по всем реквизитам, а только по выбранным. Для типовых конфигураций это актуально.
141. mkalimulin 1651 19.12.17 13:35 Сейчас в теме
(125) К тому же, строковое представление документа может включать в себя записи движений регистров. Тут уже ЗначениеВСтроку не поможет.
149. AKnyazkov 55 19.12.17 16:00 Сейчас в теме
(141) там в функции вы получаете массив, а вот он то как раз отлично значением в строку и преобразуется, вот что я имел ввиду.
150. mkalimulin 1651 19.12.17 16:03 Сейчас в теме
(149) Действительно можно и так. Массив значений, а потом массив в строку. Заодно и ИД получим.
151. AKnyazkov 55 19.12.17 16:05 Сейчас в теме
(150) Ага, и дешево и сердито и красиво
130. vadim1011985 103 19.12.17 12:51 Сейчас в теме
Я бы в блок добавил автора документа и Текущего пользователя (кто изменяет , удаляет или редактирует) и все изменения писал бы новый блок, а так же реальное время изменения (создания , редактирования документа). Тогда реально можно смотреть историю документа , кто когда и как изменял.

Еще плюс к этому в сейчас блокчейндж работает по одному документу поиск последнего блока идет без привязки к типу документа , может стоит разделить цепочки для каждого из типов?
131. Dach 440 19.12.17 12:57 Сейчас в теме
Спасибо за статью!

Прикручиваем РИБ. Включаем в блоки все документы. И вот, на уровне всей системы уже реальный механизм контроля неизменности документов (это к вопросу о применяемости). Обработку контроля вешаем на регламентное задание с отправкой письма, как только кто-то поменял в документе 100 рублей на 1 рубль и цепочка разрушилась... Вуаля))
134. vadim1011985 103 19.12.17 13:05 Сейчас в теме
(131) тут вопрос синхронизации при добавлении нового блока система должна оповещать всю сеть и каждый узел сети, после проверки должен добавить блок в свою копию цепочки. поэтому с РИБ проблематично
143. Dach 440 19.12.17 14:00 Сейчас в теме
(134)
ут вопрос синхронизации при добавлении нового блока система должна оповещать всю сеть и каждый узел сети, после проверки должен добавить блок в свою копию цепочки. поэтому с РИБ проблематично


если Вы попробуете скачать локальный кошел любой криптовалюты - то именно это и происходит. По сути, Вы себе на свой домашний ПК затаскиваете весь блокчейн от самой первой транзакции до самой последней. И периодичски еще синхроните, если хотите с кошельком работать
132. acsent 1209 19.12.17 13:00 Сейчас в теме
А какова последовательность действий когда документ все-таки изменили?
Теперь он будет пожизненно висеть в измененных?
137. mkalimulin 1651 19.12.17 13:23 Сейчас в теме
(132) Провести расследование и восстановить документ в базе.
181. CheBurator 3235 20.12.17 01:01 Сейчас в теме
(137) имхо, плохая идея. может быть, что не получится восстановить документ в первозданном виде и придется пересчитывать всю цепочку от измененного документа...

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

> Документ проводится, затем попадает в цепочку.
- чем это обеспечивается? если подменили "процедуру" "Документ проводится, затем попадает в цепочку"..? надо обеспечивать неизменность "процедуры"...?
185. mkalimulin 1651 20.12.17 01:38 Сейчас в теме
(181) А еще, бывает, люди базы теряют. Ну что значит "не получится"? Все бэкапы потеряют? И бумажный тоже?
Подмена кода ничего не даст атакующему. Код восстановят и его атака всплывет.
142. HanterVol 9 19.12.17 13:56 Сейчас в теме
Идея то хорошая, но что будет если в документ добавят новый реквизит? или в движениях?
Хэш то изменится....хотя документ никто не трогал
145. mkalimulin 1651 19.12.17 15:00 Сейчас в теме
(142) Посмотрите решение. Там хеш строится по выбранным реквизитам.
144. CSiER 36 19.12.17 14:44 Сейчас в теме
Спасибо за интересную статью, ещё бы код оформить до более читаемого вида и было бы супер :)
Просьба описать подробнее - где и как планируете применять данное решение.
Данный вопрос возник потому, что:
Теоретически, конечно, можно попросить знакомого китайского майнера задействовать его ферму для решения данной задачи.
- в данном случае такой же запас мощности понадобится и Вам, чтобы получить результат функции "ПолучитьКонечныйКлюч". Например, есть блок документа 1 и нужно получить хэш для блока документа 2. В случае запуска ПолучитьКонечныйКлюч с минимальным значением сложности злоумышленнику не составит труда "напакостить". Если же сложность очень высока, то Вам уже понадобятся большие вычислительные ресурсы для подписи каждого блока.
Стоимость атаки на мою защиту зависит от выбранной сложности и может быть сколь угодно большой.
- чем выше сложность, тем больше нужно вычислительной мощности в первую очередь Вам, чтобы система просто работала. Другими словами, в данном варианте защита строится на том, что у Вас изначально мощность больше, чем у злоумышленника (он ведь и за выходные может это пересчитать, а Вам нужно опеспечить онлайн работу системы, то есть функция ПолучитьКонечныйКлюч должна работать за какое-то ограниченное время, скажем, чтобы уложиться в ограничения транзакции СУБД на проведение документа). В этой системе отсутствует "сложность решения обратной задачи" (классический пример - алгоритм RSA), где злоумышленнику нужно приложить намного больше "усилий" для взлома системы, чем самим пользователям. То есть и Вы и злоумышленник будете решать одну и ту же задачу - перебор результатов хэш-фукнции в зависимости от переданной соли.
Представьте - у вас 10 компов работают с 10 часов до 20 часов. Ну добавили вы к ним еще один, который работает круглосуточно. Какие ресурсы? Для большинства случаев - этого будет достаточно.
- злоумышленнику в этом случае понадобится такой же комп, а в случае выбранного алгоритма хэширования - б.у. со средней видяхой двухлетней давности. Если же есть такой "свободный" и надежный комп (ведь если
его скомпрометируют и он начнет выдавать "левые" хэши или перестанет работать - а тут отчетность, простои и т.д.) и хочется использовать блокчейн - имхо проще убрать майнинговую составляющую в функции ПолучитьКонечныйКлюч и хранить последний хэш каждого дня на этом компе (похожий пример с отличным описанием и кодом на Gitbuh можно глянуть тут).
146. mkalimulin 1651 19.12.17 15:08 Сейчас в теме
(144) Идея строится на том, что атакующий будет вынужден догонять. И для этого, ему придется задействовать более серьезные мощности, чем есть у вас. Но ваш вопрос - интересный. Действительно можно придумать ситуацию, когда атакующий будет не догонять, а идти параллельно. Тут надо подумать.
155. CSiER 36 19.12.17 17:14 Сейчас в теме
(146), не до конца понял логику (о том, что атакующий будет догонять) - просьба описать детальнее (если можно, то на примере). Например, злоумышленник решил "прихватизировать" 2 кг сахара, он знает как работает система, имеет доступ к серверу с субд и 1С. Генерация хэшей идет на том же сервере, где работает служба 1С (например, с помощью механизма фоновых заданий). Чтобы сложность была выше, документы добавляются в блок не по одному, а пачкой с разбивкой по часу (то есть можно геренировать 1 хэш за час). За 8 часов рабочего дня получится 8 блоков. Злоумышленник в конце рабочего дня (после генерации последнего хэша) меняет количество сахара в документе. Теперь ему нужно пересчитать 1 хэш и на это у него около 16 часов. С таким запасом времени он может сгенерировать 16 хешей - то есть поменять данные за текущий и предыдущий рабочие дни. Злоумышленник в этом случае впереди.
Вариант, когда у злоумышленника нет доступа к серверу/железу и т.д. думаю рассматривать смысла нет, так как здесь есть более простые реализации защиты (даты запрета, версионирование, сохранять ВерсияДанных при записи и т.д.).
Думаю, что идею защиты нужно строить на том, что злоумышленник всегда впереди, но ему просто невыгодно заниматься взломом (например, потребуется полный перебор, который с учётом закона Мура закончится к моменту, когда защищаемая информация безнадежно устареет).
156. vadim1011985 103 19.12.17 17:23 Сейчас в теме
(155) Кстати да ,злоумышленнику вообще парится не нужно , зная как работает система достаточно внести изменения до момента попадания документа в блок, Автор предлагает делает это разово, что бы уменьшить количество ресурсов на вычисление красивых хешей. т.е. на момент записи мы должны быть уверенны что документ содержит актуальные данные (тут уже гарантии нет) , тогда выходит что документ должен попадать в блок во время его проведения , а это в свою очередь может вести к подвисанию системы а если работает человек 100- 200 будут бить данные документы - где-то ошибаться и т.д.
163. mkalimulin 1651 19.12.17 18:33 Сейчас в теме
(156) При правильно организованной работе по учету и контролю, нет смысла подменять документ в тот же день. Обнаружат. И в эту неделю тоже обнаружат. Есть шанс проскочить незамеченным, если подменять документ полугодовой или хотя бы месячной давности.
160. mkalimulin 1651 19.12.17 18:19 Сейчас в теме
(155) Все не так просто. Атакующий подменит документ, а бухгалтерия его на следующий день проверит. На практике успешные атаки проходили тогда, когда заменяли документ, например, месячной давности. Такой, который никто уже проверять точно не будет. Поэтому я и говорю, что атакующий должен догонять. Но вы правы в том, что есть проблема. Атакующий может начать строить параллельную цепочку и через месяц ее подменить. У этой проблемы есть несколько решений, но их еще надо обдумать.
197. CSiER 36 20.12.17 12:01 Сейчас в теме
(160), Проблема как раз в том, что идет только гонка мощностей системы и злоумышленника - в этом случае система всегда в проигрыше. Как надумаете реальное решение - просьба поделиться.
159. karimov_m 19.12.17 18:18 Сейчас в теме
Как то все не так..
Какова структура вашего блока? Т.е. у вас вы определяете "блок" как документ? Почему вы храните только один Хэш? Ведь по идее,в блоке, надо хранить как хэш текущего рассматриваемого блока, так и хэш предыдущего. При чем создавать блок (у вас документ) только в случае если есть предыдущий хэш.
Ваш подход, конечно же не кошерный (если я все правильно понял из публикации - я человек и тоже могу ошибаться), сейчас поясню:
Для работы блокчейн-пдохода - необходим принцип Доказательства работы.

Что это значит?

Доказательство выполнения работы (Proof-of-work, POW) — принцип защиты распределенных систем, основанный на необходимости выполнения запрашивающей стороной некоторой достаточно сложной длительной работы (POW-задачи), результат которой легко и быстро проверяется обслуживающей стороной (односторонняя функция).

Т.е главная особенность блокчейна заключается в асимметрии затрат времени - затраты значительны для инициатора запроса (взломщика) и весьма малы для проверяющего (нашей системы).

У вас (на сколько я вижу) данный принцип не соблюден - от этого толку от него не много, разве что действительно, тратить вычислительные ресурсы вами же.

Полезно почитать историю, если кому интересно тут: Доказательство выполнения работы
Откуда все началось..


Данные о блоках (документах) и блоки необходимо хранить также децентрализовано (например на клиентах), также необходим механизм принятия блока и сообщения о новых блоках.
Когда кто-то создает новый блок (документ) - он оповещает об этом всех клиентов сети. Когда новый "клиент системы" (пользователь, который может генерировать блоки/документы) - он должен получать информацию о последнем блоке..
И еще немного надо сделать.. уже нет времени писать)) В следующий раз дополню)
vladimirmatancev; Evgen.Ponomarenko; +2 – Ответить
161. mkalimulin 1651 19.12.17 18:27 Сейчас в теме
(159) Один блок - один документ. В нем хранятся начальный хеш, хеш документа и конечный хеш. Смотрите публикацию.
Главная идея - нет никакой распределенной сети. Все работает в одной базе. Ассиметрия есть. Сравните процедуру генерации и процедуру контроля.
168. karimov_m 19.12.17 18:46 Сейчас в теме
(161) И в чем ассиметрия? Если вы и там и там используете SHA256 и при генерации блока и при его проверки?
SHA256 само собой не подходит для задачи ассиметричной проверки..
vladimirmatancev; +1 – Ответить
174. mkalimulin 1651 19.12.17 19:02 Сейчас в теме
(168) Генерация находит красивый хеш. Контроль проверяет на красивость. Вот здесь ассиметрия.
178. karimov_m 19.12.17 19:50 Сейчас в теме
(174)Нда.. понятно.
На этом закроем наш диалог)

ЗЫ почитайте проОдносторонние функции, чтоли..
vladimirmatancev; +1 – Ответить
162. vadim1011985 103 19.12.17 18:32 Сейчас в теме
(159) КлючНачальный содержит хеш предыдущего блока так что с этим все впорядке

а в bitcoin как работает доказательство работы - Вычислением хеша ?
164. CSiER 36 19.12.17 18:36 Сейчас в теме
166. mkalimulin 1651 19.12.17 18:36 Сейчас в теме
(164) Да, да. И двойной хеш. Я сделал одинарный для наглядности.
165. mkalimulin 1651 19.12.17 18:36 Сейчас в теме
(162) Ровно также, как и в публикации. Ищется хеш с определенным количеством нулей в начале. У меня только шаг сложности большой - 4 бита.
169. karimov_m 19.12.17 18:46 Сейчас в теме
(162) это только для проверки связности цепи, но не проверка POW..
167. CSiER 36 19.12.17 18:43 Сейчас в теме
(159), а зачем автору POW? У него блокчейн всегда с одним узлом, сами данные блока - документы. ИМХО, можно вообще убрать вычисление красивого хеша - будет цепочка подписанных блоков.
170. karimov_m 19.12.17 18:51 Сейчас в теме
(167) Все так) тот же "блокчейн в кармане" я их называю)
Суть реализации - создание реестра связанных документов, по алгоритму взятия хэша предыдущих данных (документа) для создания хэша текущего обрабатываемого документа.
Без децентарлизованной сети.. можно начать генерить "свою ветку" правильных документов и сказать что эта ветка - правильная и ничего что там везде суммы уменьшены в два раза))
173. mkalimulin 1651 19.12.17 18:58 Сейчас в теме
(170) Можно. Но надо будет догнать основную ветку. Вот здесь и сработает POW.
176. CSiER 36 19.12.17 19:08 Сейчас в теме
(170), да, я именно в этом и увидел интересность статьи, но практическое применение пока туманно )
172. mkalimulin 1651 19.12.17 18:57 Сейчас в теме
(167) Для того, чтобы атакующему сложно было догнать.
175. CSiER 36 19.12.17 19:06 Сейчас в теме
(172), у атакующего трудозатраты такие же, как и у системы. Вот если бы была какая-то алгоритмическая сложность разная или "секрет" - тогда да. Например, в фукнцию вычисления хэша добавить пароль - без знания данного "секрета" злоумышленнику практически нереально подобрать хэш. При этом администратор системы очень быстро может проверить неразрывность блоков. Но все это не работает, пока у злоумышленника есть доступ к системе.
177. mkalimulin 1651 19.12.17 19:10 Сейчас в теме
(175) Затраты ресурсов у атакующего не могут быть такими же. Он догоняет.
189. CSiER 36 20.12.17 03:35 Сейчас в теме
(177), чтобы не дублироваться - посмотрите комментарий 155 - реальный пример, когда злоумышленник по мощности (и времени на выполнение атаки) обгоняет в 2 (!) раза. Приведите пример, где атакующий будет "догонять".
195. mkalimulin 1651 20.12.17 11:39 Сейчас в теме
(189) Я уже ответил, но, видимо, недостаточно развернуто. Всякая система учета и контроля основана на проверке первичных документов. Бухгалтерия берет бумажную накладную и проверяет соответствующую запись в базе или сама бухгалтерия вносит запись. В серьезных случаях каждый документ проверяется неоднократно. Этот процесс занимает некоторое время и является элементом неопределенности для атакующего. Точно можно сказать, что если подменить сегодняшний документ сегодня, то это 100% раскроется в течение нескольких дней. Для успешной атаки надо подменять достаточно старые записи.
196. CSiER 36 20.12.17 11:55 Сейчас в теме
(195), 160 коммент не увидел сразу :(
179. karimov_m 19.12.17 19:53 Сейчас в теме
(175)Вся суть, что тут нет ассиметричного алгоритма на генерацию блока и его проверки. для показать "концепцию" (хотя тут ее нет, т.к. нет децентрализации) SHA256 сойдет, но для реальной работы, конечно же смешно) Генерировать и проверять блоки за одно и тоже время, не ассиметрично.. увольте.
180. mkalimulin 1651 19.12.17 20:09 Сейчас в теме
(179) Вы можете скачать обе обработки, запустить на любой базе и убедиться в ассиметричности своими, что называется, глазами.
201. Dementor 1077 20.12.17 20:34 Сейчас в теме
(179) Вы невнимательно посмотрели обработки. При "проверке" генерация SHA256 происходит всего один раз, а при "создании контрольного числа" запускается цикл с использованием инкрементируемого счетчика, выходом из которого будет нахождение "красивого" хеша.
182. CheBurator 3235 20.12.17 01:08 Сейчас в теме
... ПолучитьХэшДокумента().. - требуется обеспечивать неизменность реквизитов и реквизитов реквизитов, входящих в документ..? - это сама по себе задача... по уму (?) все что определяет уникальность/ценность документа как объекта желательно должно входить в документ чистыми значениями, а не ссылками для простоыт контроля.. но это - утопия... Клиент попросил чтобы в договоре номер обозначался не "№", а "N" - все, контроль не пройден... включать полное версионирование (?) и при контроле читать именно ту версию которая была на момент создания хеша..?
186. mkalimulin 1651 20.12.17 01:43 Сейчас в теме
(182) Я чистые значения и использую. Но лучше всего - и значения и ссылки. Иначе, можно будет создать дубль с таким же значением.
183. CheBurator 3235 20.12.17 01:10 Сейчас в теме
Но что хорошо, я хоть на этомпримере, надеюсь, хоть чуть понял что такое блокчейн... надеюсь...
188. mkalimulin 1651 20.12.17 01:46 Сейчас в теме
(183) Спасибо. Собственно ради этого и старался.
184. CheBurator 3235 20.12.17 01:14 Сейчас в теме
а.. и это..
теряем процедуру расчета хеша документа и контроль накрывается медным тазиком.
надо обеспечивать а) 100% надежность хранения процедуры расчета хеша и 2) обеспечивать при этом ее неизменность
- кто гарантирует что вот эта процедура расчета хеша - легитимная?
(извините, если бред)
187. mkalimulin 1651 20.12.17 01:45 Сейчас в теме
(184) Инфостарт дает 100% надежность хранения процедур как расчета, так и контроля. Он же обеспечивает их неизменность. Разве нет?
203. CheBurator 3235 20.12.17 21:59 Сейчас в теме
(187) конечно, нет
на моей памяти гибла часть информации, забитая мной на портал. причем безвозвозвратно.
Опять же - ИС представляет свои услуги как площадки по размещению контента на условиях АСИС - то бишь не несет никакой ответсвенности если чтото гдето потеряется ;-) так что все на свой страх и риск.
Единственный вариант имхо более менее даст если эти процедуры станут дефакто стандартом использования в 1С
206. mkalimulin 1651 20.12.17 22:05 Сейчас в теме
(203) Процедура контроля - 30 строк. Ее кто угодно может контролировать визуально. Процедура,лежащая на инфостарте вполне годится для регулярного скачивания. Вообще атака на код - плохая атака. Вы сделали что-то и закрыли это что-то измененным кодом. Код вернули - ваша атака раскрыта. Сложность раскрытия - минимальна, вероятность раскрытия - 100%. Плохая атака.
207. CheBurator 3235 20.12.17 22:11 Сейчас в теме
(206) я не говорю о каких либо атаках.
речь всего лишь об устойчивости системы.
если опираться на какой-то визуальный контроль - внимание вопрос - как часто его надо проводить? как обеспечить чтобы о нем не забыли?
мой мелкий опыт показывает что в тех процессах где важна стабильность работы с воспроизводимым результатом - любую визуальщину и участие человека как звена в цепочке процесса следует исключить.
грубо говоря - я должен иметь возможность КУДАТО обратиться и с высокой степенью гарантии получить верный код с которым я смогу верифицировать текущий код в случае такой необходимости.
то есть дб некий "удостоверяющий центр"
имхо как неспеца
210. mkalimulin 1651 20.12.17 22:27 Сейчас в теме
(207) Вы всегда можете обратиться сюда, в эту публикацию и скачать(скопипастить) правильный код. Какие проблемы? Посмотрите внимательно на функцию:

Функция ПолучитьХешДокумента(ссылка)
	хд=новый ХешированиеДанных(ХешФункция.SHA256);
	хд.Добавить(ПолучитьДокументСтрокой(ссылка));
	рез=строка(хд.ХешСумма);
	рез=стрзаменить(рез," ","");
	возврат рез;
КонецФункции	


Вы думаете никто не заметит?

Функция ПолучитьХешДокумента(ссылка)
	хд=новый ХешированиеДанных(ХешФункция.SHA256);
	хд.Добавить(ПолучитьДокументСтрокой(ссылка));
	рез=строка(хд.ХешСумма);
	рез=стрзаменить(рез," ","");
        если рез="BEA23CC1CAA3165970E3DDE2E87D76454429494B913D71662827751­DAC3FE0D0" тогда
            рез="7154E8F747CEF14824F79E13002AA500503E8D27B266C11134355B0­4A00B9477"
        конецесли;
	возврат рез;
Показать

КонецФункции

А самое главное зачем мне или инфостарту это делать?
213. mixsture 20.12.17 22:41 Сейчас в теме
(210) я не про вас и инфостарт. А про то, что (атакующий) пользователь (программер уровня Бог) с прямым доступом к БД и ко всему может очень многое менять на лету. И даже нельзя быть уверенным, что запускаемый код конфигурации это правильный код, а не замененный им на лету.
Тут мы приходим к ситуации схожей с линукс. Крайне сложно под нее сделать защиту, т.к. любая функция, даже системная, может быть относительно легко подменена.
215. mkalimulin 1651 20.12.17 22:46 Сейчас в теме
(213) Я скачал обработку вот прямо отсюда. Зашел в базу. Выбрал "файл/открыть". Открыл обработку и нажал кнопку "Запуск". Опишите атаку на эту последовательность действий со стороны "программера уровня Бог".
217. CheBurator 3235 20.12.17 23:10 Сейчас в теме
(210) фигня какая.
точно также можно сказать
Всегда можно взять первичку и сверить с тем что в базе.
Зачем блокчейн?
разницы концептуально никакой, разница только в масштабах и длительности проверк и
.
вопрос тривиальный
"Кто будет проверять проверяющих".
решения - нет
.
;-)
218. mkalimulin 1651 20.12.17 23:40 Сейчас в теме
(217) Невозможно каждый день глазами проверять все, что есть в базе. А блокчейн это делает.
240. support 4484 22.12.17 11:03 Сейчас в теме
(203) На ИС никакая информация не теряется. Наш каталог можно считать облачным сервисом, у нас создана система многоуровневых бекапов. Если что-то удаляется, то по желанию автора или модератором согласно правилам. Если что-то надо восстановить, то надо просто обратиться в техподдержку.
Но смысл не в ИС, а в хранении процедуры проверки вне организации, возможно в виде облачного сервиса.
243. CheBurator 3235 22.12.17 16:44 Сейчас в теме
(240) сейчас - может и не теряется. раньше - терялась, при переходе на новый движок. на текущем движке лично две публикации с саппортом стыковался - в поиске не находились/или были "утеряны" - починили, восстановили. так что я бы не стал утверждать беззаговорочно "никакая не теряется"... ;-)
Опять же - если инфа осталась в бэкапах, но по какой
chemezov; +1 – Ответить
245. support 4484 22.12.17 17:07 Сейчас в теме
(243) Сергей, так голословно, без доказательств, обвинять текущее состояние ресурса неправильно. Индекс поиска никакого отношения к надежности хранения данных не имеет. Возможно были косяки с поиском, но это мы внедряли новый продвинутый поисковый движок.
250. CheBurator 3235 23.12.17 15:17 Сейчас в теме
(245) если из-за косяков с поиском невозможно найти материал - то можно считать что материал отсутствует.
внедряли в этот момент новый движок или что-то иное - вот меня как пользователя когда я ищу материал - ну совсем не волнует. и вдобавок косяки исправлялись не самостоятельно службой поддержки сайта, а тогда когда я обращался что отсутствует публикация которая должна быть. Это имеет прямое отношение к надежности хранения данных - в частности верифицируемой процедуре контроля цепочки - на которую ссылается автор что при необходимости ее можно взять с портала. И откуда ее взять - если по поиску ее не найти? вручную лопатить стопицот публикаций? Траблы на сайте случаются. но ОЧЕНЬ РЕДКО. это имеет место быть и это надо признать. И вести работу чтобы это случалось еще реже. Существенного ущерба от таких очень редких траблов вроде не нанесено никому ;-) а вопрос я только поднял в контектсе обсуждения публикации, а не в плане какихто голословных обвинений (обращение в саппорт по утерянной обработке https://infostart.ru/profile/support/3203/, по нераюотающему поиску https://infostart.ru/profile/support/3972/ https://infostart.ru/profile/support/10400/)

а поиск - да, починили
будем надеяться что ок.
и внезапно опять ничего не потеряется не сломается :-)
251. support 4484 23.12.17 18:07 Сейчас в теме
(250) Это обращения 2013-2015 года. Техподдержка отработала прекрасно, ошибки исправлены. С тех у нас сменился поисковый движок. И поменяли его именно из-за плохого старого.
Например, в windows всегда был поиск по файлам плохой, но это не значит, что файлы пропадают.
starik-2005; +1 – Ответить
255. CheBurator 3235 23.12.17 23:30 Сейчас в теме
(251) то что невозможно найти с небольшим количеством усилий - можно считать пропавшим :-)
а техподдержка - да, понемногу становится лучше.
но очень уж медленно :-)
190. vipetrov2 20.12.17 06:16 Сейчас в теме
За старания конечно 5. Но у блокчейна есть не решаемая проблема, это возможность переписать историю. Ее решают всякими извращенскими способами, например, в криптовалютах делают трудоемкими алгоритмы формирования блока, что бы сделать его "красивым". В этой же обработке защиты переписать историю нет. По сути вся эта цепочка дает только одно, гарантированное последовательное проведение документов. Т.е. задним числом не проведешь без переписывания истории.
194. mkalimulin 1651 20.12.17 11:24 Сейчас в теме
(190) Надо переписать историю и сделать это настолько быстро, чтобы успеть до появления новой истории. Придется задействовать дорогостоящие мощности. Попросить какой-нибудь пул майнеров помочь в этом деле.
211. mkalimulin 1651 20.12.17 22:30 Сейчас в теме
(190) Я тоже делаю блок "красивым" посмотрите внимательнее.
191. Boris_1c 39 20.12.17 07:56 Сейчас в теме
Не хочу обидеть автора, но его разработка напоминает блокчейн-троллинг. С удивительным упорством он отстаивает полезность разработки, которая заставляет базу работать как можно медленнее. Что наверняка получится с такой системой, так это завалить работу офиса.. Затронута интересная многим тема, но место применения не самое удачное
chemezov; li5enok; Aspire1C; karimov_m; ixijixi; +5 –4 Ответить
193. mkalimulin 1651 20.12.17 11:20 Сейчас в теме
(191) На скорость работы базы эта система практически никак не влияет. Может скачать обработки и првоверить на рабочей базе. Вся нагрузка на базу - однократное чтение каждого контролируемого документа.
198. Aspire1C 878 20.12.17 18:27 Сейчас в теме
Предлагаю провести ICO на площадке инфостарта. Конкретное предназначение и модные слова по ходу придумаем) А так интересная статья и комментарии. Автору плюс.
199. mkalimulin 1651 20.12.17 19:01 Сейчас в теме
(198) Тогда уж ISO - initial startmoney offering. Спасибо.
Aspire1C; +1 – Ответить
202. Dementor 1077 20.12.17 20:46 Сейчас в теме
Главный минус идеи статьи - это противоречие главной концепции блокчейна: защита одних узлов сети от произвола остальных. Тот же блокчейн можно было бы использовать в торговле для сверки взаиморасчетов. Скажем у двух участников рынка есть или похожие конфигурации 1С или с одной и той же подсистемой блокчейна. Для сверки они просто сообщают друг другу хеш последнего документа по друг другу из ихней базы, который строится на базе цепочки предыдущих документов по контрагенту. Если хеши совпадают, то и количество документов идентично и их содержимое один в один.

А если привлечь компанию 1С, то на базе ее 1С:Сеть можно было бы еще смарт-контракты реализовать, которые бы программировали на языке 1С :)
chemezov; automatizator; Dach; karimov_m; +4 – Ответить
208. mkalimulin 1651 20.12.17 22:12 Сейчас в теме
(202) Блокчейн - это дословно цепочка блоков. Собственно это и используется. Основная идея в том, что блокчейн полезен не только в распределенной сети.
204. mixsture 20.12.17 22:01 Сейчас в теме
Идея пока больше академическая. Если цель защита от воровства - то достаточно версионирования, дат запрета, границ последовательности, бекапов. Это можно обойти при прямом доступе в БД, но при нем можно и конфигурацию "подправить" вместе со всем вашим алгоритмом расчета.
Да и не очень понятно, зачем обычным пользователям предоставлять прямой доступ к БД?

Кроме того, у системы есть еще куча критичных багов :)
1) Имхо, система плохо себя поведет при добавлении реквизита.
2) Может косячить при расширении типов в реквизите (когда Неопределено появится), при изменении представлений справочников.
---
Что будет при довольно типовой операции - добавили новый реквизит в документ и через универсальный подбор заполнили для всех старых доков - десятки часов и дым из под процессора? :)
Это мне чем-то напомнило узкое место 1с7.7 - помните, там была ТА? и если начать распроводить документы с начала времен, то это было адски долго, пропорционально числу доков от начала времен до ТА. Тут мне кажется будет такое же поведение.
205. CheBurator 3235 20.12.17 22:02 Сейчас в теме
(204) не числу доков, а количеству периодов
209. mkalimulin 1651 20.12.17 22:18 Сейчас в теме
(204) Посмотрите внимательнее. В приведенном решении предлагается строить блоки по выбранным реквизитам, а не по всем.
Первое правило безопасности - следует исходить из того, что у атакующего есть все пароли и все компетенции. Правка кода - плохая атака. Она раскрывается легко и со 100% вероятностью.
212. mixsture 20.12.17 22:33 Сейчас в теме
(209)
согласен, проглядел про выбранные реквизиты.

Заменим этот пункт на мое опасение, что вы добавили единую точку блокировки для всех (проверяемых) документов - пока один док проводится, остальные ждут :) Это убивает всю эффективность управляемых (построчных) блокировок и возвращает нас минимум к конфигурацию с неуправляемым режимом (табличными блокировками). А в самом плохом случае - когда мы хотим контролировать все доки в базе, мы даже получаем 1с7.7 с ее журналом документов как самым узким местом системы (ведь любой проводимый док захватывает табличной блокировкой его и все остальные ждут).
214. mkalimulin 1651 20.12.17 22:41 Сейчас в теме
(212) Процесс никак не привязан к очереди на проведение. Проведение само по себе процесс сам по себе. Он вообще не грузит базу. Каждый документ читается один раз за все время. Ну еще запрос, который определяет новые проведенные документы. Основная база ничего от моего процесса не ждет. Работает, как работала.
221. mixsture 21.12.17 00:55 Сейчас в теме
(214)
Проведение само по себе процесс сам по себе.


А когда документ читается то, чтобы хеш сделать (естественно, все для цели "против воровства")?
Моделируем ситуацию:
Пользователь создал документ, провел, через минуту зашел в него и подправил (и так 5 раз, допустим). Когда и как должна запуститься генерация хеша?
226. mkalimulin 1651 21.12.17 01:57 Сейчас в теме
(221) После проведения. Смотрите решение. Выполняется запрос выдающий список проведенных документов еще не попавших в блокчейн.
220. CheBurator 3235 21.12.17 00:38 Сейчас в теме
(209) а своевременно она раскрывается? если раскрыли легко но с опозданием - ущерб уже мб невосполним...
224. mkalimulin 1651 21.12.17 01:54 Сейчас в теме
(220) Ну зачем так трагически?
254. CheBurator 3235 23.12.17 23:26 Сейчас в теме
(224) а зачем тогда вообще блокчейн?
типа стоял вахтер и проверял пропуска, но если пропуска не было - пускал и так :-)
256. mkalimulin 1651 23.12.17 23:40 Сейчас в теме
(254) Чтобы исключить ситуацию когда кто-то что-то сделал, и никто об этом не узнал. Вот в юридической области принято утверждать, что главное не тяжесть наказания, а неотвратимость.
222. vadim1011985 103 21.12.17 01:23 Сейчас в теме
вот кстати еще один вариант - расширение конфигурации например запоминаю хеш редактируемого документа , перехватываю вызов проверки хеша и подсовываю ему правильный хэш. Визуальная проверка ничего не даст (ведь используется расширение) которое можно заментить не сразу .
225. mkalimulin 1651 21.12.17 01:55 Сейчас в теме
(222) Как в 1С можно перехватить вызов функции в модуле формы обработки?
228. vadim1011985 103 21.12.17 09:34 Сейчас в теме
(225) саму обработку поместить в расширение , или вы предлагаете ее запускать как внешнюю ? Это получается в ручном режиме ? Тогда опять же можно поменять документ до попадания в цепочку , даже если ошибку заметили на след. день необходимо исправить документ , удалить все сформированные блоки до этого документа и снова сформировать цепочку , с учётом того что к этому добавятся новые документы , блоков нужно будет сформировать больше , и опять же злоумышленнику ничего не мешает вновь подправить определенный документ, даже не сильного его менять сам документ , достаточно измненить наименование некоторых справочников ( добавить пробел, заменить букву кириллицы , схожей буквой латиницы ) а в одном документе изменить цифры и пользователю опять надо будет проверять все документы где использовалась эта номенклатура и не , а если таких документов 500 шт , и пока он их все не проверит формировать блоки будет нельзя
230. mkalimulin 1651 21.12.17 09:44 Сейчас в теме
(228) Скачал обработку. Запустил фоновое задание. И оно крутится до следующего скачивания.
Как только вы воссстановили документ(справочник), процедура контроля перестает выдавать ошибку. Цепочку исправлять не надо.
231. vadim1011985 103 21.12.17 09:47 Сейчас в теме
(230) вопрос как вы быстро найдёте онибку замените в «молоко» хотя бы одну букву о на латинскую как м таких замен будет не одна а скажем 20-50 как быстро пользователь догадается ?
232. mkalimulin 1651 21.12.17 10:05 Сейчас в теме
(231) Есть много способов парализовать работу организации без интеллектуальных ухищрений. Можно сервер в окно выбросить. Я ищу защиту не от "саботажника", а от "паразита". "Паразит" не заинтересован в том, чтобы работа останавливалась, он заинтересован в том, чтобы работа шла обычным образом и никто не знал о его делах.
233. vadim1011985 103 21.12.17 10:27 Сейчас в теме
(232) ну это одно из средств , если система часто даёт «типа» ложные срабатывания от неё рано или поздно отказываются. ( и это цель паразита не обойти, систему а сделать ее не нужной ) Главный недостаток вашей системы в том что она не децентрализована , Злоумышленник из архива достаёт копию базы ( допустим 2-х недельной давности что бы ушло не так много времени на формирование ) переносит документы из текущей базы , формирует блоки , меняет нужный документ , заново формирует блоки , заменяет основную базу на свою копию.
234. mkalimulin 1651 21.12.17 10:33 Сейчас в теме
(233) Заинтересованный собственник скорее откажется от персонала, чем от системы, котора защищает его интересы. Я согласен, что децентрализация решает все проблемы. Но моя цель - показать, что и без децентрализации можно добиться хороших результатов.
235. vadim1011985 103 21.12.17 10:40 Сейчас в теме
(234) заинтересованный собственник откажется от того , что будет меньше бить по его карману , по моему мнению как-то слишком дорого отказывайся от персонала ( увольнение старых , поиск и приём новых )
236. mkalimulin 1651 21.12.17 10:51 Сейчас в теме
(235) А сохранять старый и работать в убыток - еще дороже. В крайнем случае можно "прикрыть лавочку" и сохранить оставшиеся деньги.
237. vadim1011985 103 21.12.17 11:02 Сейчас в теме
(236) тут скорее всего пойдут на частичное сокращение и дополнение или смену системы
227. CSiER 36 21.12.17 03:49 Сейчас в теме
Предложение по оптимизации/упрощению идеи: убираем из функции "ПолучитьКонечныйКлюч" mining-составляющую (поиск красивого хэша), конечный хэш выносим на неперезаписываемую память (в блокнотик бухгалтера, например). Как говорит сам автор
Атакующий подменит документ, а бухгалтерия его на следующий день проверит. На практике успешные атаки проходили тогда, когда заменяли документ, например, месячной давности. Такой, который никто уже проверять точно не будет.
- в этом случае бухгалтеру нужно сверить только хэш (это быстрее, чем сверять кипу документов с первичкой). При этом хэш будет считаться очень быстро (хоть на каждый документ в транзакции), будет быстро проверяться сама цепочка документов, китаец с асиком взломать не сможет, цель определения факта изменения документа также решена. С точки зрения защиты в данном решении классика - наличие "секрета".
229. mkalimulin 1651 21.12.17 09:41 Сейчас в теме
(227) Согласен. После размышлений, я тоже пришел к выводу, что основной момент - это связанная цепочка. А сложность может идти, как опция. Бухгалтер записывает сегодняшний последний хэш, и проверяет вчерашний последний.
267. mkalimulin 1651 09.01.18 10:43 Сейчас в теме
(227) Вы будете смеятся, но "майнинг" нужен. См. update публикации.
268. CSiER 36 09.01.18 16:08 Сейчас в теме
(267), в этой интерпретации да :) Спасибо, что добавили update - закроет много вопросов для новых читателей.
241. HanterVol 9 22.12.17 15:56 Сейчас в теме
Есть еще предложение. в качестве цепочки использователь не последовательность документов, а к примеру остатки по счетам/субконто, по которым были движения данного документа.
Накидал по-быстрому обработку.. получилось вполне удобоваримо. Остатки записываем в строку xml а потом уже из нее получаем хеш
При этом даже если прямым доступом в БД запишем проводки, то легко вычисляется в какой момент времени изменились остатки по счетам банальной проверкой хеша в обратной последовательности документов
242. mkalimulin 1651 22.12.17 16:43 Сейчас в теме
(241) Да. Можно рассматривать движения по регистрам, как дополнительные табличные части документа. Только все-таки, я думаю, лучше и быстрее брать движения, а не остатки.
244. mkalimulin 1651 22.12.17 17:01 Сейчас в теме
(241) Если построить блокчейн только по остаткам, тогда непонятно, как его восстанавливать. По документам все просто. Процедура контроля указала на неправильный документ. Подняли бумажный бэкап. Восстановили документ. Процедура контроля проходит.
246. HanterVol 9 22.12.17 22:38 Сейчас в теме
Почему непонятно? Раскручиваем документы назад по дате пока хеш не совпадёт и все.. Точка проблемы найдена. А в случае хранения движений возможна ситуация когда правильный хеш хранит 'неправильные' движения
247. mkalimulin 1651 23.12.17 12:38 Сейчас в теме
(246) Получаем остатки на каждый документ? Согласен. Можно и так. Все же процедура восстановления будет более громоздкой. Особенно в том случае, когда потребуется восстановление нескольких документов. Как правильный хеш может хранить неправильные движения? Приведите пример.
248. vadim1011985 103 23.12.17 12:57 Сейчас в теме
(247) тут скорее имелось ввиду что правильный документ может хранить не правильные движения.

Как пример : программно скорректировали проводки документа - ваша проверка этого не покажет. По сути для документа ничего не поменялось (ни один реквизит не изменился).
249. mkalimulin 1651 23.12.17 13:13 Сейчас в теме
(248) Если я включу проводки в хэш, то покажет. В сущности движения по регистрам - это дополнительные табличные части документа.
252. HanterVol 9 23.12.17 19:29 Сейчас в теме
Ну к примеру...
Остаток на 01.12 какого-то товара 1шт на 10руб
Есть документ 10.12 на списание 1шт на 10 руб с рассчитанным хешем.
Если какая-то редиска добавила в 02.12 ещё 1 товар на 200руб, то при сверка хеша остатков будет видно проблему, а вот хеш движений и хеш реквизитов ничего нам не даст
253. mkalimulin 1651 23.12.17 20:09 Сейчас в теме
(252) 02.12 добавят новый документ. Процедура генерации его увидит и попытается внести в цепочку. В этот момент действительно следует проверять дату документа и дату движений. Спасибо за замечание.
С другой стороны - возможность строить цепочку на остатках, пожалуй можно будет давать пользователю системы как опцию.
257. iliabvf 25.12.17 00:15 Сейчас в теме
Интересно и как вы будете с вашим китайским другом запускать 1С клиента на GPU ?
Извините но полная бредятина...
258. mkalimulin 1651 25.12.17 03:22 Сейчас в теме
(257) Запускать клиента 1С на видеокарте - это действительно бредятина. Только зачем это делать? 1С прекрасно взаимодействует с чем угодно.
261. iliabvf 26.12.17 15:50 Сейчас в теме
(258)
Теоретически, конечно, можно попросить знакомого китайского майнера задействовать его ферму для решения данной задачи.

естественно китайский майнер будет майнить на Intel Pentium.
262. mkalimulin 1651 26.12.17 15:52 Сейчас в теме
(261) Вы не знаете как стыковать 1С с другими программами? Есть множество курсов, на которых этому обучают. Потратьте свои усилия в этом направлении. Разработайте, к примеру, внешнюю компоненту для подключения GPU к 1С. Интегрируйте ее с приведенным здесь решением. Денег заработаете.
263. iliabvf 26.12.17 20:02 Сейчас в теме
(262)
зработайте, к примеру, внешнюю компоненту для подключения GPU к 1С. Интегрируйте ее с приведенным здесь решением. Денег заработаете.

Внешняя компонента? Гениально, спасибо пойду разрабатывать на 1С свой майнер, криптовалюту, нейросеть, блокчейн. Вот жеж дураки вокруг, можно же 1С использовать, а они мучаются с питоном, жавой, C++
264. mkalimulin 1651 26.12.17 20:15 Сейчас в теме
(263) Не хотите - дело хозяйское.
259. palsergeich 26.12.17 14:44 Сейчас в теме
В том виде котором описано в статье защита ломается за 5 минут.
Ибо по логике 1с документы это всего лишь данные для движений, а сам учет хранится в регистрах, соответственно, изменив движения, не меняя документы - будет совершено достаточно сложно диагностируемое злодеяние(особенно если проводки формируются не просто переносом реквизитов документа, а значения расчитываются в момент проведения).
Код
Набор = РегистрыНакопления.ИмяРегистра.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ссылкаНаДокумент);
Код злодеяния
Набор.Записать();
Время взлома 5 минут, цена - 100 рублей.
А с учетом того, что в принципе движения могут быть и вперед относительно текущей точки времени, и это не противоречит в общем то ничему, а так же в наборе каждый элемент движения может быть на разную дату - можно натворить сущий бардак, который не сложно устранить, но сложно диагностировать.
(249) Не всегда

Вот еще пример зловредительства:
Набор = РегистрыНакопления.ИмяРегистра.СоздатьНаборЗаписей();
СсылкаНаПустойДокумент = Документы.ИмяДокумента.ПолучитьСсылку(Новый УникальныйИдентификатор);
Набор.Отбор.Регистратор.Установить(СсылкаНаПустойДокумент);
Код злодеяния
Набор.Записать();
И все вокруг бегают не понимая, почему движения есть, а документ пропал и как такое возможно.

Конечно, эти ситуации обойти можно, но это еще как минимум 2 проверки, и это уже будет не так быстро и изящно
HystriX; ixijixi; +2 – Ответить
260. mkalimulin 1651 26.12.17 15:16 Сейчас в теме
(259) Движения можно рассматривать, как дополнительные табличные части. И точно также включать в блокчейн. Я думал об этом в процессе создания публикации, но в итоге решил не загромождать пример. Вы легко можете его доработать в этом направлении.
За примеры атак - спасибо.
265. vipetrov2 27.12.17 05:02 Сейчас в теме
Вот смотришь и поражает с каким упорством автор обработки доказывает полезность блокчейна, при этом к реализации претензий нет. Хотя уже давно всё доказали и расписали по полочкам. У блокчейна есть уязвимость - "атака 51". Поскольку защита здесь СИММЕТРИЧНАЯ, то злоумышлинику надо иметь суммарную производительность на 1% больше, что бы переписать историю(1% это минимум, а лучше 100-200%). Так как для формирования блока системой и переписывания этого блока злоумышлиником нужна одинаковая производительность.
Для того что бы обеспечить системе неуязвимость, необходимо постоянно повышать сложность и производительность системы. В биткоине, например, каждый год в 3-5 раз повышается сложность. Вы готовы покупать каждый год новые сервера?
Тоже самое можно организовать на АССИМЕТРИЧНЫХ алгоритмах, т.е. злоумышленику нужна на порядки большая производительность, что бы переписать историю.
В этой конкретной реализации сложнее получить доступ к БД, чем переписать историю цепочки.
266. mkalimulin 1651 27.12.17 11:12 Сейчас в теме
(265) Этот момент уже обсудили и пришли к выводу, что при необременительном дополнительном контроле со стороны пользователя системы, такая атака будет исключена. Чуть позже я опишу подробнее, а пока смотрите комментарий 227.
Да, и ассиметричный алгоритм в этой разработке как раз и используется. Смотрите внимательнее.
269. felix 13.01.18 18:29 Сейчас в теме
Это мы с Михаилом Харитоновым В 2016 на Инфостарт ивент делали упомянутый доклад по технологии Блокчейн, ее возможностям, и применимости к платформе 1с . Тогда это было воспринято неоднозначно, да и времени не хватило, чтобы обстоятельно тему осветить. Радует, что идея находит последователей. Автору респект. Но в реализации чисто на 1с настоящий блокчейн не сделать хотя бы потому, что невозможно достичь реальной децентрализации. Один из китов блокчейна-это механизм консенсуса, реализуемый самоорганизующеейся распеределенной сетью узлов. А распределенка 1с управляется созданием узлов(нод) из центральной ИБ. А вот приватный блокчейн и контроль неизменности данных-это реально, и, более того, необходимо в широком круге задач. Я в начале 2016 года даже писал в 1с с предложением включить в платформу ещё один тип базы данных на основе,например, multichain.db, но письмо осталось безответным. Тогда ещё не было такого хайпа вокруг технологии, видно время ещё не пришло. Но то, что за этой технологией будущее, я уверен. И, кстати, в качестве внешней информационной базы для хранения хэшей данных, неизменность которых нужно контролировать, вполне можно использовать любой публичный блокчейн. Есть и блокчейны, использующие нулевую стоимость транзакций и быстрый, энергонезатратный принцип консенсуса DPOS (delegated proof of stake)
270. mkalimulin 1651 13.01.18 21:33 Сейчас в теме
(269) Спасибо за отзыв! И за новую информацию. Про multichain.db и DPOS не знал. Будет интересно ознакомиться.
271. SerVer1C 1146 15.01.18 16:15 Сейчас в теме
Если человек полностью проник в вашу базу, то он пересчитает новый блокчейн всех документов на GPU за гораздо короткое обозримое время. И это будет в тысячи раз быстрее, чем расчет на CPU из кода на 1с.
272. mkalimulin 1651 15.01.18 17:03 Сейчас в теме
(271) Пересчитать то он пересчитает, а вот незаметно подменить не сможет. Подробнее читайте в документации. Прелесть блокчейна в том, что нельзя тихонько подменить середину. Все подмены вылезают в конце.
В текущем варианте я использую POW только лишь для того, чтобы получить короткий ключ вместо длинного.
273. SerVer1C 1146 15.01.18 17:31 Сейчас в теме
(272) Я про то, что инсайдер пересчитает ВСЮ цепочку блоков, а т. к. он имеет все явки/пароли от базы, то и, соответственно, перепишет ВСЕ начальные и конечные ключи.
274. mkalimulin 1651 15.01.18 21:27 Сейчас в теме
(273) ... и проверяющий это обнаружит на следующий день.
275. SerVer1C 1146 16.01.18 08:26 Сейчас в теме
(274) Каким образом? Будет выписывать на листочек последний ключ? Так может тогда проще взять все хеши, от них получить 1 хеш и выписать его на листочек?
276. mkalimulin 1651 16.01.18 09:59 Сейчас в теме
(275) Именно это и происходит. Последний ключ и есть хеш от всех хешей. Кстати, вписывание на листочек - не единственный способ, хотя и самый надежный.
277. SerVer1C 1146 16.01.18 10:28 Сейчас в теме
(276) Вы "вокруг да около" даете все ответы. Я понимаю и разбираюсь как работает блокчейн, я только не могу понять, зачем это применять для контроля доков в эске. Это не рационально и затратно по электричеству/времени. Если поставить сложность = 5, то красивый хеш будет вычисляться на процессоре не менее минуты. Вычисление же на видеокарте займет доли секунд. Если взломщик проник в систему, то он может там натворить таких дел, что подобная псевдозащита сведет на нет все усилия по вычислению хешей. Тут нужен децентрализованный подход к вычислению блокчейна.
278. mkalimulin 1651 16.01.18 13:11 Сейчас в теме
(277) Следует разделять собственно блокчейн и POW (proof of work). Блокчейн. как связанная цепочка, используется в любом случае. POW можно использовать, а можно и не использовать (конкретно в моем решении для этого нужно установить сложность 0).
Изначально я полагал, что атакующему придется догонять систему и тогда, можно будет задать такую сложность, что атака станет бессмысленной. Защищающий может подключить ту же видеокарту, для быстрого вычисления хешей. Тогда атакующий должен будет задействовать ASIC. Но если у него есть ASIC, зачем ему атаковать вашу систему? За это же время он заработает гораздо больше, используя свое оборудование по назначению.
В процессе обсуждения в этом топике выяснилось, что атакующий и система находятся в равном положении. Атакующий не обязан догонять. Он может начать строить альтернативную цепочку сразу же, как решит изменить какой-либо документ.
В этот момент я был склонен убрать POW из моего решения, а вместо него использовать систему визуального контроля конечных хешей. Однако, при сложности 2-3, мой POW дает ключи длиной 2-4 символа (например 22A) и работает быстро. А без POW ключ будет длиной 64 символа (например 00024887939293171D6402945C7102B84C12E513D372E5D01FA7676F46FE­A26D) . Проверяющему будет гораздо проще работать с короткими ключами, чем с длинными. Можно было бы вместо POW использовать генератор случайных чисел для получения коротких ключей. Но я решил оставить POW, как возможность установить дополнительную защиту.

Теперь самое главное, что следует понимать. Данная технология как раз и призвана защищать систему от случая "проникновения взломщика", как вы это назвали. В том то и дело, что взломщик не сможет ничего натворить, как бы странным вам это не казалось. Посмотрите еще раз внимательнее на предлагаемое решение. Если вам это не очевидно, предложите вариант действий "взломщика" и я вам объясню - почему это не сработает.
279. mkalimulin 1651 22.01.18 23:48 Сейчас в теме
Платная версия, которую я представил в прошлый раз, подразумевала не совсем 1С-овский стиль работы. Документ попавший в цепочку блоков уже нельзя было менять совсем. При обнаружении изменения, нужно было вернуть документ в первоначальный вид. Я оставил эту платную версию под новым именем "Докчейн строгий". И в дополнении к ней предлагаю основную версию под названием "Докчейн. Защищенный журнал". В этой версии документы могут изменяться и удаляться. Все такие действия заносятся в ту же цепочку блоков и получается журнал, защищенный от изменений. Чтобы не загромождать данную публикацию, я создал новую:

https://infostart.ru/public/728995/
280. mkalimulin 1651 14.12.18 21:52 Сейчас в теме
Небольшой update в тексте статьи.
281. for_sale 901 23.08.19 14:44 Сейчас в теме
Почему это никому не нужно, а защита является фикцией, можно понять здесь:
https://infostart.ru/public/1097521/
https://infostart.ru/public/1097525/
283. mkalimulin 1651 23.08.19 21:10 Сейчас в теме
(281) Дождитесь тестирования на реальных данных. У вас будет отличный шанс взломать и получить вознаграждение.
284. for_sale 901 24.08.19 10:54 Сейчас в теме
(283)
Речь не о взломе а о том, что приватный блокчейн не может быть доверенным. В указанных статьях есть подробный разбор, как владелец приватного блокчейна может влиять на его содержание, незаметно для других пользователей. Более того, есть и ещё одно важное свойство - если приватный блокчейн так сколочен, что в нём действительно нельзя ничего изменить даже владельцу, то сам блокчейн на таких настройках не нужен, его надёжность достигается другими средствами, а не блокчейном.

А в данном материале ничего об этом не сказано, что вводит потенциальных покупателей (пусть их и практически нет) в заблуждение.
285. mkalimulin 1651 24.08.19 12:10 Сейчас в теме
(284) Владелец приватного блокчейна не может изменить данные незаметно. Не вводите людей в заблуждение.
286. for_sale 901 24.08.19 12:38 Сейчас в теме
(285)
Это вы не вводите людей в заблуждение. В указанных статьях описано на примерах, как ваш "блокчейн", как и любой приватный, может быть использован владельцем для подтасовки Вы в своём "материале" не описываете схему, которая бы предотвращала такую подтасовку.
287. mkalimulin 1651 24.08.19 22:08 Сейчас в теме
(286) В ваших статьях ничего нет. Вам неоднократно предлагали изложить свою схему. В том числе и за скромное вознаграждение. Вы каждый раз отказываетесь. И вместо того,чтобы внятно изложить свою идею, вы ссылаетесь на свои статьи, в которых ничего нет. Именно вы, руководствуясь какими-то своими странными мотивами, и вводите людей в заблуждение.
Если вы не согласны с этим утверждением, то прямо здесь, в следующем посте изложите свою идею. Ждем.
288. for_sale 901 24.08.19 23:16 Сейчас в теме
(287)
Опять брешет и не краснеет) Тебе десять раз приводились примеры, как можно приватный блокчейн вертеть владельцу, но ты же не для этого пришёл, чтобы учиться чему-то, а для того, чтобы свой михчейн впаривать! Никакого вознаграждения я с тебя не получил, потому что ты изворачивался как мог.

В общем, любой твой потенциальный покупатель, которых, почему-то нет (странно, да?) может почитать статьи и убедиться самостоятельно в том. что блокчейн в этой реализации либо не нужен, либо не соответствуют заявленной надёжности. А с тобой я опять время терять не собираюсь.
289. mkalimulin 1651 24.08.19 23:39 Сейчас в теме
(288) Т.е никакой идеи у вас нет.
Вы не могли бы заходить в ветку с чем-то конкретным, а не с бурей эмоций?
282. FIGOR 23.08.19 15:18 Сейчас в теме
Имеет смысл для сбора цепочек документов "закрытого периода", чтобы точно знать, что никто не перепроведен в закрытом периоде никакой документ.

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

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

Цепочка = БлокиЦепочкиДокументов.НашаЦепочкаДокументов;

результат = Цепочка.ПроверитьЦелостностьПериодов;
Если НЕ результат тогда
ОбъектыСНарушениями = Цепочка.НайтиНесоответствия;
Конецесли;
290. user928779 25.08.19 15:25 Сейчас в теме
Михаил.

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

Ваш выбор:
1) Продать свое поделие покупателю еще раз
2) Бесплатно внести измения и провести аудит документов, поставив юридически значимую подпись.
3) Начать менять задним числом условия (ну, как вы обычно делаете)
4) Ваш вариант.
292. mkalimulin 1651 25.08.19 19:19 Сейчас в теме
(290) Ваши размышления несколько абстрактны. Давайте конкретно. Когда в типовой бухгалтерии в документе РТиУ в последний раз менялся реквизит "Количество"?
Если изменения затрагивают схему сериализации документа, то вы действуете точно так же, как и в ситуации, когда вы сами по каким-либо причинам решили поменять схему. Перестраиваете журнал.
291. user928779 25.08.19 15:39 Сейчас в теме
... или удалил реквизит, или переименовал. Изменил схему в части "контролируемых" вами реквизитов.

Это что бы вы к формулировке не придирались, а на вопрос о своих действиях ответили.
Для отправки сообщения требуется регистрация/авторизация