17 декабря, воскресенье 09:12
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Предложение Le Colonel'у - истинному реверс-инженеру

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Предложение Le Colonel'у - истинному реверс-инженеру

    Еще раз прочитав все последние топики, так или иначе посвященые вопросам криптографии в области Интернет-Банкинга, у меня появилось жгучее желание дать участнику Le Colonel'у, так жутко шифрующемуся, точь-в-точь как ранее небезизвестный г-н Cryptolog, более осмысленное имя.

    Например Алексей Анатольевич. Чем не вариант?! Ну или просто Алексей - кому как нравится.

    Пишет Le Colonel по-русски, русский понимает, даже временами колоритно изъясняется.

    Уверен будет Алексей-Le Colonel обязательно участвовать в так горячо им любимой и пропогандируемой конференции абсолютно независимой ассоциации с громким названием "РусКрипто" (а может для пущей крутизны БИФИТу вступить в РусКрипто? Примете, г-н президент?!).

    Вот даже топик Алексей-Le Colonel реанимировал - типа просто сообщил, что будет дескать доклад г-на Чиликова "Слабости алгоритма генерации ключей в системе iBank". И что характерно, даже ссылочку невзначай привел! Типа тонкий и изысканный пиар, раскруточка конференции. Глупые не догадаются.

    А тут такой прокол - ник на французком

    Вот и подумалось дать Le Colonel'у осмысленный ник. Может есть другие русские варианты?!

    И напоследок предложеньеце Алексею-Le Colonel'у попробовать поковыряться с предлагаемом в конце обфусцированном и восстановленном JAD'ом исходнике всего лишь одного из нескольких добрых сотен классов. Многое понятно будет?

    С уважением, Репан Димитрий
    Компания "БИФИТ"
    ==============================================

    public final class b
    {
    class a
    {

    void a(Object obj)
    {
    for(int i = 0; i _fldcase; i++)
    {
    if(obj != _fldnew[i])
    continue;
    for(int j = 0; j _fldbyte[i]; j++)
    {
    _fldif[_flddo] = b.this._fldif[i][j];
    a[_flddo] = _mthgoto(b.this._fldif[i][j]);
    _flddo++;
    a(b.this._fldif[i][j]);
    }

    break;
    }

    }

    Object _fldif[];
    int a[];
    int _flddo;

    a(a a1)
    {
    _flddo = 0;
    Vector vector = new Vector();
    for(int i = 0; i _fldint; i++)
    if(b.this._flddo[i] == 1)
    vector.addElement(b.this.a[i]);

    Object aobj[] = new Object[vector.size()];
    vector.copyInto(aobj);
    b.a(aobj, 0, aobj.length - 1, a1);
    for(int j = 0; j _fldcase; j++)
    b.a(b.this._fldif[j], 0, _fldbyte[j] - 1, a1);

    _fldif = new Object[b.this.a.length];
    a = new int[b.this.a.length];
    for(int k = 0; k aobj.length; k++)
    {
    _fldif[_flddo] = aobj[k];
    a[_flddo] = b.this._flddo[_mthcase(aobj[k])];
    _flddo++;
    a(aobj[k]);
    }

    }
    }


    public b()
    {
    this(10);
    }

    public b(int i)
    {
    _fldcase = 0;
    _fldint = 0;
    _fldfor = new Object();
    _fldtry = i = 0 ? 1 : i;
    _mthint();
    }

    private int _mthcase(Object obj)
    {
    for(int i = 0; i _fldint; i++)
    if(a[i] == obj)
    return i;

    return -1;
    }

    private int _mthdo(Object obj)
    {
    for(int i = 0; i _fldcase; i++)
    if(_fldnew[i] == obj)
    return i;

    return -1;
    }

    public Object a(Object obj)
    {
    Object obj2;
    synchronized(_fldfor)
    {
    obj2 = _mthelse(obj);
    }
    return obj2;
    }

    private Object _mthelse(Object obj)
    {
    for(int i = 0; i _fldcase; i++)
    {
    for(int j = 0; j _fldbyte[i]; j++)
    if(_fldif[i][j] == obj)
    return _fldnew[i];

    }

    return null;
    }

    public Object[] _mthlong(Object obj)
    {
    synchronized(_fldfor)
    {
    int i = _mthdo(obj);
    if(i > -1)
    {
    Object aobj[] = new Object[_fldbyte[i]];
    System.arraycopy(((Object) (_fldif[i])), 0, ((Object) (aobj)), 0, _fldbyte[i]);
    Object aobj1[] = aobj;
    return aobj1;
    }
    }
    return new Object[0];
    }

    public int _mthif(Object obj)
    {
    synchronized(_fldfor)
    {
    int i = _mthdo(obj);
    if(i > -1)
    {
    int j = _fldbyte[i];
    return j;
    }
    }
    return 0;
    }

    public boolean _mthchar(Object obj)
    {
    boolean flag;
    synchronized(_fldfor)
    {
    flag = _mthcase(obj) > -1;
    }
    return flag;
    }

    private void _mthif(int i)
    {
    int j = (int)Math.max(Math.ceil((double)i / (double)_fldtry), 1.0D) * _fldtry;
    if(a.length _fldint + i)
    {
    int k = a.length;
    Object aobj[] = new Object[k + j];
    System.arraycopy(((Object) (a)), 0, ((Object) (aobj)), 0, _fldint);
    a = aobj;
    int ai[] = new int[k + j];
    System.arraycopy(_flddo, 0, ai, 0, _fldint);
    _flddo = ai;
    }
    }

    private void _mthdo(int i)
    {
    int j = (int)Math.max(Math.ceil((double)i / (double)_fldtry), 1.0D) * _fldtry;
    if(_fldnew.length _fldcase + 1)
    {
    Object aobj[] = new Object[_fldnew.length + _fldtry];
    System.arraycopy(((Object) (_fldnew)), 0, ((Object) (aobj)), 0, _fldcase);
    _fldnew = aobj;
    Object aobj1[][] = new Object[_fldnew.length + _fldtry][];
    System.arraycopy(((Object) (_fldif)), 0, ((Object) (aobj1)), 0, _fldcase);
    _fldif = aobj1;
    int ai[] = new int[_fldnew.length + _fldtry];
    System.arraycopy(_fldbyte, 0, ai, 0, _fldcase);
    _fldbyte = ai;
    }
    if(a.length _fldint + i)
    {
    int k = a.length;
    Object aobj2[] = new Object[k + j];
    System.arraycopy(((Object) (a)), 0, ((Object) (aobj2)), 0, _fldint);
    a = aobj2;
    int ai1[] = new int[k + j];
    System.arraycopy(_flddo, 0, ai1, 0, _fldint);
    _flddo = ai1;
    }
    }

    private void a(int i, int j)
    {
    int k = (int)Math.max(Math.ceil((double)i / (double)_fldtry), 1.0D) * _fldtry;
    if(_fldif[j].length _fldbyte[j] + i)
    {
    Object aobj[] = new Object[_fldif[j].length + k];
    System.arraycopy(((Object) (_fldif[j])), 0, ((Object) (aobj)), 0, _fldbyte[j]);
    _fldif[j] = aobj;
    }
    if(a.length _fldint + i)
    {
    int l = a.length;
    Object aobj1[] = new Object[l + k];
    System.arraycopy(((Object) (a)), 0, ((Object) (aobj1)), 0, _fldint);
    a = aobj1;
    int ai[] = new int[l + k];
    System.arraycopy(_flddo, 0, ai, 0, _fldint);
    _flddo = ai;
    }
    }

    public void _mthnew(Object obj)
    {
    if(obj == null)
    throw new NullPointerException("cannot add null to a tree");
    synchronized(_fldfor)
    {
    int i;
    if((i = _mthcase(obj)) > -1)
    a(i);
    _mthif(1);
    a[_fldint] = obj;
    _flddo[_fldint] = 1;
    _fldint++;
    }
    }

    public void a(Object aobj[])
    {
    synchronized(_fldfor)
    {
    for(int i = 0; i aobj.length; i++)
    {
    if(aobj[i] == null)
    throw new NullPointerException("cannot add null");
    int j;
    if((j = _mthcase(aobj[i])) > -1)
    a(j);
    }

    _mthif(aobj.length);
    System.arraycopy(((Object) (aobj)), 0, ((Object) (a)), _fldint, aobj.length);
    for(int k = _fldint; k _fldint + aobj.length; k++)
    _flddo[k] = 1;

    _fldint += aobj.length;
    }
    }

    public void a(Object obj, Object obj1)
    {
    if(obj == null)
    throw new NullPointerException("null specified");
    if(obj1 == null)
    throw new NullPointerException("cannot add null");
    if(obj1 == obj)
    throw new IllegalArgumentException("cannot add child to itself");
    synchronized(_fldfor)
    {
    int i = _mthdo(obj);
    int j = -1;
    if(i 0 && (j = _mthcase(obj)) 0)
    throw new IllegalArgumentException("does not exist");
    int k;
    if((k = _mthcase(obj1)) > -1)
    a(k);
    if(i 0)
    {
    i = _fldcase;
    _mthdo(1);
    _fldnew[i] = obj;
    _fldif[i] = new Object[_fldtry];
    _fldbyte[i] = 0;
    _fldcase++;
    }
    a(1, i);
    _fldif[i][_fldbyte[i]] = obj1;
    int l = _mthint(obj);
    int i1 = j + _fldbyte[i] + 1;
    int j1 = _fldint - i1;
    Object aobj[] = new Object[j1];
    System.arraycopy(((Object) (a)), i1, ((Object) (aobj)), 0, j1);
    a[i1] = obj1;
    System.arraycopy(((Object) (aobj)), 0, ((Object) (a)), i1 + 1, j1);
    int ai[] = new int[j1];
    System.arraycopy(_flddo, i1, ai, 0, j1);
    _flddo[i1] = l + 1;
    System.arraycopy(ai, 0, _flddo, i1 + 1, j1);
    _fldint++;
    _fldbyte[i]++;
    }
    }

    public void a(Object obj, Object aobj[])
    {
    if(obj == null)
    throw new NullPointerException("null specified");
    synchronized(_fldfor)
    {
    int i = _mthdo(obj);
    int j = -1;
    if(i 0 && (j = _mthcase(obj)) 0)
    throw new IllegalArgumentException("parent does not exist");
    for(int k = 0; k aobj.length; k++)
    {
    if(aobj[k] == null)
    throw new NullPointerException("cannot add null");
    if(aobj[k] == obj)
    throw new IllegalArgumentException("cannot add child to itself");
    int l;
    if((l = _mthcase(aobj[k])) > -1)
    a(l);
    }

    if(i 0)
    {
    i = _fldcase;
    _mthdo(1);
    _fldnew[i] = obj;
    _fldif[i] = new Object[Math.max(_fldtry, (aobj.length / _fldtry) * _fldtry)];
    _fldbyte[i] = 0;
    _fldcase++;
    }
    a(aobj.length, i);
    System.arraycopy(((Object) (aobj)), 0, ((Object) (_fldif[i])), _fldbyte[i], aobj.length);
    int i1 = _mthint(obj);
    int j1 = j + _fldbyte[i] + 1;
    int k1 = _fldint - j1;
    Object aobj1[] = new Object[k1];
    System.arraycopy(((Object) (a)), j1, ((Object) (aobj1)), 0, k1);
    System.arraycopy(((Object) (aobj)), 0, ((Object) (a)), j1, aobj.length);
    System.arraycopy(((Object) (aobj1)), 0, ((Object) (a)), j1 + aobj.length, k1);
    int ai[] = new int[k1];
    System.arraycopy(_flddo, j1, ai, 0, k1);
    for(int l1 = j1; l1 j1 + aobj.length; l1++)
    _flddo[l1] = i1 + 1;

    System.arraycopy(ai, 0, _flddo, j1 + aobj.length, k1);
    _fldint += aobj.length;
    _fldbyte[i] += aobj.length;
    }
    }

    private int _mthint(Object obj)
    {
    Object obj1 = _mthelse(obj);
    if(obj1 == null)
    return 1;
    else
    return _mthint(obj1) + 1;
    }

    public void _mthbyte(Object obj)
    {
    if(obj == null)
    return;
    synchronized(_fldfor)
    {
    int i = _mthcase(obj);
    if(i > -1)
    a(i);
    }
    }

    void a(int i)
    {
    int j = 0;
    for(int k = 0; k _fldcase; k++)
    if(_fldnew[k] == a[i])
    {
    int l = _fldbyte[k];
    Object aobj[] = new Object[l];
    System.arraycopy(((Object) (_fldif[k])), 0, ((Object) (aobj)), 0, l);
    for(int j1 = 0; j1 l; j1++)
    {
    int k1 = _mthcase(aobj[j1]);
    if(k1 > -1)
    a(k1);
    }

    if((j = _fldcase - k - 1) > 0)
    {
    System.arraycopy(((Object) (_fldnew)), k + 1, ((Object) (_fldnew)), k, j);
    System.arraycopy(((Object) (_fldif)), k + 1, ((Object) (_fldif)), k, j);
    System.arraycopy(_fldbyte, k + 1, _fldbyte, k, j);
    }
    _fldcase--;
    k--;
    } else
    {
    for(int i1 = 0; i1 _fldbyte[k]; i1++)
    if(_fldif[k][i1] == a[i])
    {
    if((j = _fldbyte[k] - i1 - 1) > 0)
    System.arraycopy(((Object) (_fldif[k])), i1 + 1, ((Object) (_fldif[k])), i1, j);
    _fldbyte[k]--;
    i1--;
    }

    }

    if((j = _fldint - i - 1) > 0)
    {
    System.arraycopy(((Object) (a)), i + 1, ((Object) (a)), i, j);
    System.arraycopy(_flddo, i + 1, _flddo, i, j);
    }
    _fldint--;
    }

    public void _mthif(Object aobj[])
    {
    for(int i = 0; i aobj.length; i++)
    _mthbyte(aobj[i]);

    }

    public void _mthtry(Object obj)
    {
    synchronized(_fldfor)
    {
    _mthfor(obj);
    }
    }

    void _mthfor(Object obj)
    {
    int i = _mthdo(obj);
    if(i > -1)
    {
    for(int j = 0; j _fldbyte[i]; j++)
    _mthfor(_fldif[i][j]);

    _fldif[i] = new Object[_fldtry];
    _fldbyte[i] = 0;
    }
    }

    public void _mthint()
    {
    synchronized(_fldfor)
    {
    _fldnew = new Object[_fldtry];
    _fldcase = 0;
    _fldbyte = new int[_fldtry];
    for(int i = 0; i _fldtry; i++)
    _fldbyte[i] = 0;

    _fldif = new Object[_fldtry][_fldtry];
    a = new Object[_fldtry];
    _flddo = new int[_fldtry];
    _fldint = 0;
    }
    }

    public int _mthgoto(Object obj)
    {
    int j;
    synchronized(_fldfor)
    {
    int i = _mthcase(obj);
    if(i == -1)
    {
    byte byte0 = -1;
    return byte0;
    }
    j = _flddo[i];
    }
    return j;
    }

    public Object[] _mthdo()
    {
    Object aobj1[];
    synchronized(_fldfor)
    {
    Vector vector = new Vector();
    for(int i = 0; i _fldint; i++)
    if(_flddo[i] == 1)
    vector.addElement(a[i]);

    Object aobj[] = new Object[vector.size()];
    vector.copyInto(aobj);
    aobj1 = aobj;
    }
    return aobj1;
    }

    public int _mthfor()
    {
    int j;
    synchronized(_fldfor)
    {
    Vector vector = new Vector();
    for(int i = 0; i _fldint; i++)
    if(_flddo[i] == 1)
    vector.addElement(a[i]);

    j = vector.size();
    }
    return j;
    }

    public Object[] _mthif()
    {
    Object aobj1[];
    synchronized(_fldfor)
    {
    Object aobj[] = new Object[_fldint];
    System.arraycopy(((Object) (a)), 0, ((Object) (aobj)), 0, _fldint);
    aobj1 = aobj;
    }
    return aobj1;
    }

    public int _mthnew()
    {
    return _fldint;
    }

    public boolean a()
    {
    synchronized(_fldfor)
    {
    for(int i = 0; i _fldcase; i++)
    if(_fldbyte[i] > 0)
    {
    boolean flag = true;
    return flag;
    }

    }
    return false;
    }

    public void a(a a1)
    {
    if(a1 == null)
    throw new NullPointerException("null collat");
    synchronized(_fldfor)
    {
    a a2 = new a(a1);
    a = a2._fldif;
    _flddo = a2.a;
    }
    }

    static void a(Object aobj[], int i, int j, a a1)
    {
    int k = i;
    int l = j;
    if(j > i)
    {
    Object obj = aobj[(i + j) / 2];
    while(k = l)
    {
    while(k j && a1.compare(aobj[k], obj) 0)
    k++;
    for(; l > i && a1.compare(aobj[l], obj) > 0; l--);
    if(k = l)
    {
    Object obj1 = aobj[k];
    aobj[k] = aobj[l];
    aobj[l] = obj1;
    k++;
    l--;
    }
    }
    if(i l)
    a(aobj, i, l, a1);
    if(k j)
    a(aobj, k, j, a1);
    }
    }

    int _fldcase;
    Object _fldnew[];
    int _fldbyte[];
    Object _fldif[][];
    int _fldint;
    Object a[];
    int _flddo[];
    int _fldtry;
    Object _fldfor;

    }
    Последний раз редактировалось Димитрий; 09.01.2002, 12:48.
    С уважением, Репан Димитрий
    Компания "БИФИТ" - www.bifit.com

  • #2
    To Димитрий
    А можеь быть Вам криптографию Вашу кривую бесплатно переписать, и ключ от квартиры ...

    Комментарий


    • #3
      отправил Алексей-Le Colonel
      To Димитрий
      А можеь быть Вам криптографию Вашу кривую бесплатно переписать ...
      А почему бы и нет?!

      Может лучше вместо горлопанства и поливания всех и вся грязью взять и сделать в модели OpenSource свободно распространяемые криптобиблиотеки российских ГОСТов?

      Предлагаю начать публичный открытый проект по созданию платформонезависимой криптобиблиотеки российских ГОСТов.

      Думаю выбор Java очевиден - открытость, платформонезависимость.

      Общими усилиями составим ТЗ, внесем в копилку свои наработки. Со стороны БИФИТа, как разработчика прикладных решений, готов внести наше видение к функциональности СКЗИ на Java, соответствия определенным API. Дабы не создавать тяжеловесного монстра, при эксплуатации которого будет использоваться только 5% от всего функционала (был определнный опыт при прикручивании некоторых сертифицированных СКЗИ к iBank'у).

      Ну а некоторые участники ассоциации РусКрипто могли бы вынести на всеобщее обсуждение свое видение реализации на Java генераторов случайных чисел (SeedGenerator) и криптографически стойких генераторов псевдослучайных чисел (SecureRandom)

      Или, Алексей-Le Colonel, и дальше будем теоретизировать, пытаться набирать очки черным пиаром?!

      Ведь ясно же, как Божий день, что если бы Лебедев и Волчков со товарищи наковыряли бы реальный баг в криптобиблиотеках iBank'а, то не стали бы его светить за полтора месяца через тему доклада на РусКрипто, а нанесли бы мощнейший пиаровский удар по всем фронтам, дабы постараться восстановить свой полностью утеренный авторитет в августе прошлого года.

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

      Но возвращаюсь к своему предложению о новом проекте. Может его готовы поддержать Лицензиаты? Силы и средства для такого благого дела отыщутся

      С уважением, Репан Димитрий
      Компания "БИФИТ"
      С уважением, Репан Димитрий
      Компания "БИФИТ" - www.bifit.com

      Комментарий


      • #4
        Для Димитрий

        Поскольку обвинения в "неправдивости" (ложь модератор посоветовал употреблять пореже) надо подкрепить. Подкрепляю

        Вот Ваши исходники, полученные по описанной ранее схеме:
        // Decompiled by Jad v1.5.7. Copyright 1997-99 Pavel Kouznetsov.
        // Jad home page: http://www.geocities.com/SiliconVall.../8617/jad.html
        // Decompiler options: packimports(3)

        package com.bifit.makekeys.client;

        import bifit.security.Certificate;
        import com.bifit.makekeys.security.IcbKeyStore;
        import java.awt.*;
        import java.math.BigInteger;

        // Referenced classes of package com.bifit.makekeys.client:
        // StepPanel, RegistratorFrame, SwitchControl, TextPanelN

        class Step7A extends StepPanel
        {

        public Step7A(SwitchControl switchcontrol)
        {
        super(switchcontrol);
        info = "\u0428\u0430\u0433 7 \u0438\u0437 10.p>\u041F\u0440\u0438 \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0412\u0430\u0449\u0435\u043C\u0443 \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043C\u0443 \u043A\u043B\u044E\u0447\u0443 \u042D\u0426\u041F \u0431\u0430\u043D\u043A\u043E\u043C \u043F\u0440\u0438\u0441\u0432\u043E\u0435\u043D \u043D\u0438\u0436\u0435\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440. \u0417\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u0435\u0433\u043E \u0438\u043B\u0438 \u0437\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u0435. \u042D\u0442\u043E\u0442 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u043D\u0430\u0434\u043E\u0431\u0438\u0442\u0441\u044F \u0412\u0430\u043C \u043F\u0440\u0438 \u043F\u043E\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 \u0411\u0430\u043D\u043A\u0435.";
        GridBagLayout gridbaglayout = new GridBagLayout();
        GridBagConstraints gridbagconstraints = new GridBagConstraints();
        setLayout(gridbaglayout);
        tp = new TextPanelN(info);
        gridbagconstraints.gridwidth = 0;
        gridbagconstraints.anchor = 11;
        gridbaglayout.setConstraints(tp, gridbagconstraints);
        add(tp);
        id = new TextField(20);
        id.setEditable(false);
        id.setBackground(Color.white);
        gridbagconstraints.weighty = 1.0D;
        gridbagconstraints.insets = new Insets(100, 0, 0, 0);
        gridbaglayout.setConstraints(id, gridbagconstraints);
        add(id);
        id.addKeyListener(switcher);
        addComponentListener(this);
        }

        protected void doOperateShown()
        {
        id.setText(RegistratorFrame.keyStore.getCertificate().getSerialNumber().toString());
        switcher.setBackwardEnabled(true);
        switcher.setForwardEnabled(true);
        switcher.doSetFocusToNext();
        }

        protected void storeData()
        {
        doStep();
        }

        TextField id;
        TextPanelN tp;
        String info;
        }


        Так что похоже обфусцировались в очередной раз Вы, а не Ваши исходники.

        Хе-Хе.

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

        Комментарий


        • #5
          Для Димитрий

          Куда куда Вы удалились ???

          Комментарий


          • #6
            2Димитрий:

            "Предлагаю начать публичный открытый проект по созданию платформонезависимой криптобиблиотеки российских ГОСТов."

            Хочу выразить свою поддержку этой Вашей идее. Не являясь специалистом в области СКЗИ (лишь использователь) и, тем более, их разработки, был сильно удивлен, что подобное до сих пор не реализовано. ИМХО абсолютно здравая и очевидная мысль.

            Комментарий


            • #7
              Предлагаю начать публичный открытый проект по созданию платформонезависимой криптобиблиотеки российских ГОСТов.

              Жаль, что на столь здравую идею никто не отреагировал. Видимо у тех же представителей "РусКрипто" сил и средств хватает только на пиаровские акции.

              Комментарий


              • #8
                2 Lazo gordey Димитрий

                Предлагаю начать публичный открытый проект по созданию платформонезависимой криптобиблиотеки российских ГОСТов.

                Во первых чем этот проект будет отличаться от доступных открытых криптобиблиотек типа PGP.
                Во вторых подобные "открытые" проекты неплохо финансировались Intell, MS университетами (библиотека Питера Гутмана) и т.д.
                В третьих производителям средств защиты информации такой проект не нужен по той причине, что они торгуют аналогичным продуктом.
                В четвертых, то что могут сделать в этой области не специалисты уже продемонстрировал БИФИТ.
                Тем не менее, что могут специалисты РусКрипто, так это помочь рекомендациями. Касательно информации о ДСЧ и докладе Чиликова, видимо после конференции выложим их где-то на форуме.

                Алексей.

                Комментарий


                • #9
                  2 Alexey Volchkov

                  К сожалению, Вы поставили идею с ног на голову, видимо по причине неприятия любых предложений БИФИТа.
                  Во-первых, от PGP отличаться он будет реализацией российских ГОСТов.
                  Во-вторых, в связи с реализацией именно российских ГОСТов, заинтересованность в финансировании данного проекта может быть только у российского разработчика (например тот же БИФИТ).
                  В-третьих, производители СКЗИ могут поиметь на этом проекте очень неплохие рекламные дивиденды.
                  В-четвертых, участие в этом проекте предлагалось именно специалистам в области СКЗИ.
                  Ну а полезность проекта, по-моему, достаточно очевидна. Особенно в случае получения сертификата ФАПСИ.

                  Комментарий


                  • #10
                    Lazo
                    Да нет с ног на голову я ничего не ставил. Принципиальное отличие свободно распространяемого открытого софта по криптографии от "продаваемого", в том что за последний кто-то всегда несет ответственность. Ответственность по договору, ответственность по страховке и т.д. так чьей же ответственностью будет подкреплена "свободная открытая библиотека". ГОСТы конечно будут ее отличать от PGP, только вот вопрос актуально ли использование ГОСТов.

                    По финансированию создание полнофункциональной библиотеки 10-15 человеко лет (не я придумал) кто из Российских компаний будет финансировать. Те кто мог, профинансировал для себя сам.

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

                    Ну а полезность проекта, по-моему, достаточно очевидна. Особенно в случае получения сертификата ФАПСИ.

                    Простите но здесь Вы демонстрируете полную неосведомленность.

                    С Уважением Алексей.

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

                    Комментарий


                    • #11
                      2 Alexei Volchkov

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

                      Комментарий


                      • #12
                        По поводу проекта создания платформонезависимой криптобиблиотеки российских ГОСТов.

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

                        Комментарий


                        • #13
                          dann14 Но, к сожалению, интересы ФАПСИ (как госструктуры) и отдельных его чиновников (как физ. лиц), видимо, расходятся.

                          Это верно, но также верно и то, что ФАПСИ - агентство правительственной (и никокай более связи), поэтому коммерческий сектор формально находится за рамками его интересов.

                          должно быть в интересах ФАПСИ и невозможно без его участия
                          Я бы сказал так: "Возможно только без его участия", в противном случае все умрет на стадии написания бумаг типа ТУ и ТЗ (опыт есть).

                          Алексей.

                          Комментарий


                          • #14
                            Alexei Volchkov: ФАПСИ - агентство правительственной (и никокай более связи), поэтому коммерческий сектор формально находится за рамками его интересов.

                            А про информацию в названии Вы забыли? Почитайте на досуге Закон (например, здесь), иногда полезно попробовать устриц до обсуждения их вкуса... Там, кстати, и про лицензирование кое-что есть... :-)) Простите, но ИМХО полную неосведомленность демонстрируете именно ВЫ.

                            Полностью поддерживаю идею о создании криптоядра Open Source на основе ГОСТ'a. В противном случае придется всю дорогу пытаться проапгрейдить Жигули до автомобиля! :-)) Это к разговору о том, что покупатель имеет право знать, ЧТО он покупает...

                            Я не считаю себя профессиональным криптографом, но в некоторой степени :-)) -- специалистом в области защиты банковской информации. Честно говоря (естественно, со своей колокольни :-))), даже та версия iBank'а, с которой начался весь сыр-бор, не представляла реальной угрозы для банков, грамотно построивших свою работу. Заявления же о "дырявости криптографии" выглядят именно PR'ом... Кстати, спасибо за этот PR -- теперь я вряд ли буду иметь дело с компанией ЛАН Крипто... :-))

                            С уважением,
                            Дмитрий Шалгачев

                            P. S.
                            Кстати, расскажите мне хотя бы об одном случае (или хотя бы попытке) взлома iBank'а... Меня больше интересуют именно прикладные вопросы защиты (или я попал не в тот форум? :-)))

                            P. P. S.
                            Г-н Волчков, Le Colonel -- это действительно Вы? Хочется верить, что НЕТ, иначе PR получается уж слишком явным и черным :-((
                            Тем не менее, с интересом прочитаю доклад г-на Чиликова... конечно, если он будет опубликован.

                            Комментарий


                            • #15
                              Dymon
                              Г-н Волчков, Le Colonel Нет, не обращайте внимания, Дмитрий Репанвыступает в стиле д-ра Геббельса.

                              Кстати, расскажите мне хотя бы об одном случае (или хотя бы попытке) взлома iBank'а... Заявления же о "дырявости криптографии" выглядят именно PR'ом...
                              Я уже много раз объяснял, что суть взлома не в том, что кто то атаковал реальную банковскую систему, хотя в случае с Бифитом это реально, подчеркиваю РЕАЛЬНО. А в том, что наличие дырки не позволяет говорить о юридической значимости документов. Проще говоря, клиент, зная о возможности взлома, отказывается от платежа и аппелирует в суде к экспертам, которые подтверждают такую возможность. А то, что взлом возможен подтвердят не только эксперты РусКрипто, но и любые другие, вт.ч. ФАПСИ. После этого безо всякого взлома банк попадает на деньги.

                              В связи с этим, ваше утверждение о том, что версия iBank'а, с которой начался весь сыр-бор, не представляла реальной угрозы для банков слегка некорректно.
                              Доклад Чиликова безусловно будет опубликован.


                              Алексей.

                              Комментарий


                              • #16
                                Доклад г-на Чиликова обязательно прочитаю, спасибо.

                                По поводу попадания на деньги - "эттт вряд ли" (C)тов. Сухов (правда, опять же при грамотной работе банка), т. к. основанием взаимодействия Банка и Клиента являются Договор (в котором и определяется юридическая значимость ЭЦП) и Гражданский Кодекс, и в суде придется доказывать ничтожность Договора или его части... Думаю, разница понятна. Я считаю, что банк имел шанс "попасть на деньги" только в случае реализации той дырки.

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

                                Хотя мне самому больше интересны как раз технические аспекты...

                                С уважением,
                                Дмитрий

                                Комментарий


                                • #17
                                  П. С.

                                  Г-н Волчков, Le Colonel Нет, не обращайте внимания, Дмитрий Репан выступает в стиле д-ра Геббельса.

                                  Договорились, Алексей. Спасибо.

                                  Дмитрий

                                  Комментарий


                                  • #18
                                    А почему Unregistered????????? :-()
                                    Это был я!!!

                                    P. S.
                                    А я думал, тут нельзя писАть, не зарегистрировавшись.......... :-)))))

                                    Комментарий


                                    • #19
                                      Похоже Dymon = Димитрий
                                      Так?

                                      Комментарий


                                      • #20
                                        Alexander: Похоже Dymon = Димитрий

                                        А вот и не угадали!

                                        Как уже могли заметить уважаемые участники форума, мы даже не однофамильцы! :-)))))

                                        С уважением,
                                        Дмитрий Шалгачев

                                        P. S.
                                        Dymon = Димитрий -- это присваивание, а '==' -- сравнение...
                                        Присваивая Дмитрия Репана мне, Вы мне льстите!!!

                                        Комментарий


                                        • #21
                                          Dymon основанием взаимодействия Банка и Клиента являются Договор (в котором и определяется юридическая значимость ЭЦП) и Гражданский Кодекс, и в суде придется доказывать ничтожность Договора или его части

                                          И это правильно. Так вот в стандартном договоре прописывается процедура признания документа. Одним из пунктов стандартно является "невозможность формирования подписи без знания секретного ключа", в противном случае (а как раз такой случай и возникает в случае с БИФИТ) документ может быть опротестован, т.е. клиент может отказаться от платежа, и обосновать свою правоту. Что же касается того, что Вы не знаете таких прецедентов, не означает, что их не было.

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

                                          Алексей.

                                          Комментарий


                                          • #22
                                            Понятно. Просто стиль сообщений (включая орфографию и пунктуацию) идентичен полностью!

                                            Комментарий


                                            • #23
                                              2 Alexei Volchkov
                                              Что же касается того, что Вы не знаете таких прецедентов, не означает, что их не было.
                                              Абсолютно с Вами согласен! Вот и хотелось бы узнать поболее именно о прецедентах...

                                              Что же касается реальной возможности воспользоваться той уязвимостью, то сейчас я не готов говорить об этом предметно -- давно все это было... Но помнится, что в то время мы как раз рассматривали варианты Internet Banking'а, и меня эта "дырка" БИФИТ'а очень даже насторожила. Но в конечном итоге я (именно как специалист банка) сделал вывод о пактической невозможности реализовать ту уязвимость, по крайней мере, в тех наших условиях.

                                              Кстати, в Договоре с Клиентом (опять же "стандартном") есть еще пункт об "ответственности Клиента за сохранность конфиденциальной информации..., в т. ч. секретных ключей Клиента". А еще есть Приложение с порядком разрешения спорных ситуаций... Так что, опротестовывая платеж, Клиенту придется доказывать, что утечка произошла НЕ на его стороне...

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

                                              2 Alexander: А я думал, что орфография и пунктуация больше определяются правилами русского языка, а не стилем...

                                              С уважением,
                                              Дмитрий

                                              Комментарий


                                              • #24
                                                To Герасимов Александр (aka Alexander)
                                                Александр, я никогда, ни разу (в отличие от некоторых других участников) не писал в форумы под анонимным ником, и не пользовался анонимными прокси-серверами (дабы скрыть свой IP-адрес ). Не было такой цели и не было таких задач. В отличие от некоторых, я всегда выступаю в форуме с открытым забралом, не страдаю раздвоением личности и не создаю в форуме полдесятка других "я".

                                                Если же тебе мерещится идентичность между моим стилем, орфографией и пунктуацией и стилем, орфографией и пунктуацией Дмитрия Шалгачева, aka Dymon, можешь попросить Модератора форума - Михаила Лапушинского, чтобы он опубликовал мои IP-адреса. Долгое время это был 195.239.34.162. Потом, после переконфигурации в офисе firewall'а и поднятия NATа, весь офис БИФИТа стал работать с адреса 195.239.34.178.

                                                С уважением, Репан Димитрий
                                                Компания "БИФИТ"
                                                С уважением, Репан Димитрий
                                                Компания "БИФИТ" - www.bifit.com

                                                Комментарий


                                                • #25
                                                  Опять Unregistered!

                                                  Господа Администраторы/Разработчики, может, "что-то поменять в консерватории?!"(C)М.Жванецкий

                                                  Дмитрий Шалгачев
                                                  aka Dymon

                                                  P. S. (Администраторам/Разработчикам, FYI)
                                                  Внизу написан мой ник. Ввожу пароль, нажимаю "Ответить". Получаю Unregistered LogOff/LogOn решают проблему (ввожу имя+пароль и получаю Dymon'а)...
                                                  Может, слишком часто пишу?
                                                  Последний раз редактировалось Dymon; 21.01.2002, 17:47.

                                                  Комментарий


                                                  • #26
                                                    Dymon
                                                    Итак касательно прецедентов.

                                                    Давайте сначала разберемся с простым вопросом. Для чего нужна подпись. Почему недостаточно только шифрования. Ответ очевиден. Она нужна для того, чтобы банк, мог предъявить клиенту его (и только его) распоряжение о платеже (сразу замечу, надо бы и клиенту иметь подтверждение от банка об акцептовании поручения). В шифровании ситуация симметрична, шифрованное сообщение могут сформировать двое (и клиент и банк) поэтому однозначно разобраться в ситуации нельзя.
                                                    Знаю системы в которых использовалось только шифрование, и знаю три конкретных случая, когда клиент подавал в суд на банк (кстати клиенты разные бывают и с некоторыми лучше не связываться). В одном случае выиграл клиент, в другом банк, по третьему идет суд (уже 2 года), суммы во всех трех случаях не детские - с 6 нулями в СКВ.

                                                    В случае с подписью ситуация меняется. Если ситема надежная, то подпись мог сформировать, только владелец ключа. Итак возникает конфликтная ситуация (по крайней мере в одной я участвовал, как эксперт).
                                                    1. Клиент утверждает подпись не ставил и ключ не терял.
                                                    2. Банк предъявляет подписанное сообщение.
                                                    Что делать.
                                                    1. Формально выполняется проверка подписи эталонным программным обеспечением. С использованием открытого ключа клиента, представленного в банк за собственноручной подписью.

                                                    2. На основе проверки признается правильность (ошибочность) подписи.

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

                                                    Алексей.


                                                    Димитрий

                                                    Как видно IP-расслдования для Вас становится любимой темой, поскольку по существу сказать нечего. С прошедшими праздниками .

                                                    Алексей.

                                                    Комментарий


                                                    • #27
                                                      Для обоих Дмитриев.

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

                                                      Комментарий


                                                      • #28
                                                        отправил Волчков Алексей
                                                        И вот здесь в случае использования, упоминаемой системы, любой эксперт, дает ответ- "Да, формирование подписи возможно".
                                                        Чтобы дать столь утвердительный ответ, Алексей, надо как минимум реально на практике доказать такую возможность. Теоретические изыскания, ковыряние в чужих исходниках для своего собственного пиара, написание bifitcrack'ов - это конечно же вещи полезные во всех отношениях. Но не имеющие никакого отношения к реальной системе.

                                                        Более того, Алексей, тот памятный баг со снятием K с обычного рандома был исправлен в августе прошлого года. Многие (если не все) банки постепенно провели плановую смену ключей ЭЦП клиентов, подписав с клиентами акты о завершении действия старых ключей и другие необходимые документы.

                                                        Если речь идет о докладе Чиликова (не будем до конференции раскрывать подробности), то он достаточно интересный, полезный в смысле усиления некоторых алгоритмов в iBank'е, но на практике к твоему сожалению безвредный. В добавок доклад сделан по iBank 1.х, и не учитывает существенных изменений iBank 2.

                                                        В общем интрига создана и поддержена. Поэтому все на РусКрипто

                                                        С уважением, Репан Димитрий
                                                        Компания "БИФИТ"
                                                        С уважением, Репан Димитрий
                                                        Компания "БИФИТ" - www.bifit.com

                                                        Комментарий


                                                        • #29
                                                          Димитрий
                                                          Чтобы дать столь утвердительный ответ, Алексей, надо как минимум реально на практике доказать такую возможность.
                                                          К сожалению (или к счастью), в мире юриспруденции не все так просто как кажется. Вовсе не надо убивать кого то в зале суда табуреткой, чтобы доказать возможность такого убийства. Для этого существуют эксперты.
                                                          Так вот если эксперт скажет "подделка подписи возможна", у стороны с этим не согласной, есть две возможности:
                                                          1. Проиграть суд и оспорить его решение в суде высшей инстанции.
                                                          2. Попытаться отвести эксперта (не является независимым, не квалифицирован и т.д.)

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

                                                          Касательно модифицированной системы ситуация абсолютно аналогичная.


                                                          Алексей.

                                                          Комментарий


                                                          • #30
                                                            Дмитрий (aka Dymon), есть предложение - выслать фотографии (а лучше отсканированные странички из паспортов) господину Герасимову Александру - может его ИМХО измениться

                                                            С уважением, Репан Димитрий
                                                            Компания "БИФИТ"

                                                            P.S. У В. Гайковича есть прекрасное высказывание. Дословно не процитирую, но смысл в следующем: "Паранойя - профессиональная болезнь безопасников. Но у любителей она может принимать крайние формы"
                                                            С уважением, Репан Димитрий
                                                            Компания "БИФИТ" - www.bifit.com

                                                            Комментарий

                                                            Пользователи, просматривающие эту тему

                                                            Свернуть

                                                            Присутствует 1. Участников: 0, гостей: 1.

                                                            Обработка...
                                                            X