侧通道攻击

时间:2017-05-17 20:04:42

标签: c security

我的作业中有这段代码,这是一个破解的一部分。现在,我们被要求对此crackme实施侧通道攻击以找到正确的密码。 我知道你可以通过查看计算所需的时间来找到它。这也取决于角色的不同。 我不知道如何开始编码攻击,而且时间变化,并且是随机的。 通过尝试一些可能性并查看打印答案所需的时间,密钥的长度等于6.

有人可以帮忙吗?

代码片段(用C编写):

int compare_key() {
    unsigned int len = strlen(key_input);
    unsigned int correct_len = strlen(correct_key);
    int i, wait_time = 0, random_time, diff;
    struct timeval t;
    gettimeofday(&t, NULL);
    srand(t.tv_usec * t.tv_sec);

    if (len != correct_len) return 1;
    for (i = 0; i < correct_len; i++) {
        if (key_input[i] != correct_key[i]) {
            diff = key_input[i] - correct_key[i]; 
            if (diff < 0)
                diff = -diff;
            // delay stops brute force attack
            wait_time += diff;
        }
    }

    random_time = rand() % 10;
    usleep(10000 * (wait_time + random_time));

    return wait_time > 0;
}

0 个答案:

没有答案