Jump to content

самая трудоемкая задача sha256


Recommended Posts

Posted

Кто разбирается подскажите какая из элементарных операций самая затратная машиночасы/энергопотребление:

 

 Основной цикл:    для i от 0 до 63        Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22)        Ma := (a and b) xor (a and c) xor (b and c)        t2 := Σ0 + Ma        Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25)        Ch := (e and f) xor ((not e) and g)        t1 := h + Σ1 + Ch + k[i] + w[i]        h := g        g := f        f := e        e := d + t1        d := c        c := b        b := a        a := t1 + t2

чисто визуально тянусь к xor я прав?

Posted

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

Posted

@subw,уже читаю

меня интересует именно аппаратные затраты

счас на КМОП  пересчитаю

я так понимаю зависит от колва транзисторов в элементе

Posted (edited)

я не понимаю что такое "аппаратные затраты".

 

вот почитай что пишут - http://en.wikipedia.org/wiki/Performance_per_watt

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

Edited by subw
Posted (edited)

Даже для очень старых процессоров логические операции выполняются за минимальное количество тактов, сложение дольше выполнялось, для современных процессоров может уже не актуально. В целом, все операции простые. КМОП немного другая тема.

Edited by mv7
Posted (edited)

@subw,

именно при аппаратном майнинге (виртуальный не интересует)

все сводится к элементарщине  перечисленом  в сабже

@mv7,

вот именно это я и пытаюсь выяснить что из перечисленного занимает больше всего машиночасов

вот сейчас имеем операций:

  • and — 5
  • xor — 7
  • rotr  — 6
  • + — 7

это в основном цикл

Edited by infoman
Posted

виртуальный майнинг это что еще такое? ))

я только про облачный слышал

Posted

виртуальный майнинг это что еще такое? ))

я только про облачный слышал

виртуальный - программный(фпга)

аппаратный - на основе логических элементов  жестко зашитыми непрограммируемыми схемами вычисления блоков(asic)

Posted

и ещё вот говрится что используется

но в алгоритме http://ru.wikipedia.org/wiki/SHA-2 не нашел "or"

 

я правильно рассуждаю что "+" это лигическое побитное or ?:

0xFB6FEEE7 := 0x6A09E667 + 0xBB67AE85

или побитно

 

11111011011011111110111011100111 := 1101010000010011110011001100111 or 10111011011001111010111010000101

Posted

OR там в чистом виде нет, в некоторых реализациях есть для циклического сдвига из двух логических. Под + понимается именно сложение, т.е. две единички в одном разряде добавляют единичку в следующем. В процессорах все логические операции NOT, AND, XOR, OR выполняются быстрее всего. При аппаратной реализации, не знаю, не моя область.

Posted (edited)

@mv7,вот знающий человек!!!!

1) тогда обьясните если сложение с добавлением единички то на выходе мы не получим слова по 32 бита

тоесть выходного хеша не получится.... я прав?

 

Добавить полученные значения к ранее вычисленному результату:    h0 := h0 + a    h1 := h1 + b     h2 := h2 + c    h3 := h3 + d    h4 := h4 + e    h5 := h5 + f    h6 := h6 + g     h7 := h7 + hПолучить итоговое значения хеша:digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

в digest = hash = h0 это слово 32 бита  а если как вы предлагаете с добавлением единички то будет другое слово

 

2) меня не интересует скорость в процессорах или не процессорах меня интересует какой из логических аппаратных элементов сьедает больше всего времени машинного или аппаратного

я думаю зависит это от того сколько p-n переходов в аппаратном логическом элементе

ну и их скорости перехода из состояния 0 в 1 (но меня  эта скорость не интересует так как она величина постоянная для всех аппаратных логических элементов)

Edited by infoman
Posted

 

2) меня не интересует скорость в процессорах или не процессорах меня интересует какой из логических аппаратных элементов сьедает больше всего времени машинного или аппаратного

тебе надо понять элементарную вещь, я ее уже озвучил: скорость зависит от КОНКРЕТНОЙ архитектуры, а ты какие то абстракции обсуждаешь, почитай книжки, не забивай форум мусором

Posted (edited)

@temrus63,@subw,

это я то забиваю?

ваши последние 2 сообщения это мусор(если я не прав да убьет мой аккаунт администратор!)

мои конкретные

хорошо берем конкретную архитектуру где у нас имеются все вышеперечисленные элементы логики

@subw,вот по вашему пожеланию вашу любимую и самую вам понятную архитектуру, и теперь когда все это добро ваше, ответте на простой вопрос что сложнее всего вычислить? сложение , и , или , исключающее или , логический сдвиг, циклический сдвиг ?

 

ну и во вторых остается вопрос по сложению, это or или всетаки сложение с добавлением единички(побитно)

Edited by infoman
Posted

@mv7,вот знающий человек!!!!

1) тогда обьясните если сложение с добавлением единички то на выходе мы не получим слова по 32 бита

тоесть выходного хеша не получится.... я прав?

Нет, FFFF+0001=0000, остается все те же 32 бита. Зачем Вам все это? Не стоит пытаться найти здесь золотую жилу без доступа к производству микросхем.

Posted

@mv7,причем тут жила,

я просто пытаюсь понять,

попробовал на калькуляторе посчитать

если я ставлю 4 байта (разрядность) то да остаются теже 32 бита

если 8 байт то добавляется единичка

вы правы + и or разные вещи

тогда что же это "+" с точки зрения элементарной логики(читаю в нете пытаюсь понять 2 мне за забытые уроки информатики)

Posted (edited)

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

Edited by mv7
Posted (edited)

@mv7,помоему это оно http://digteh.ru/digital/sum.php проще говоря сумматоры построенные на xor + перенос

 

если мы отсекаем "все лишнее детям"

 

остаются чисто xor 232

 

итого получается что самое затратное в sha256   это именно xor  ибо элементарно в одном сумматоре для двух слов этих логических элементов будет 32 штуки

и таких операций с сумматорами в алгоритме туева хуча :huh: шифровальщики блин :ph34r:

роем дальше....

 

тогда получается что тут:

Основной цикл:    для i от 0 до 63        Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22)        Ma := (a and b) xor (a and c) xor (b and c)        t2 := Σ0 + Ma        Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25)        Ch := (e and f) xor ((not e) and g)        t1 := h + Σ1 + Ch + k[i] + w[i]

элемент xor тоже 232 ? ведь в цикле мы тоже оперируем 32 битными словами?

Edited by infoman
  • 3 months later...
Posted (edited)

Реализовали бы алгоритм и посмотрели, чего гадать то?

Я реализовывал и смотрел. На x86 самая затратная - rotr, оптимизированный алгоритм на языке высокого уровня там проводит 90% времени.

Если писать все на асме, даже при использовании новых инструкций интеля в хасвеле (пяток rotr и shr с различными сдвигами) все равно голяк на проце получается.

Очень приблизительно, опираясь на цифры данные Интелем (http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/sha-256-implementations-paper.pdf) до 500Мхэш на ядро (?). В итоге зибил, проще купить ЮСБ свисток, чем вспоминать асм.

Edited by Krey

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

×
×
  • Create New...