How do I change encryption from RC4 to AES in order to allow RDP to my remote servers? [migrated]

I have multiple physical and virtual servers on a company domain. The physical and virtual servers are all still Windows 2008 R2. The clients have all been updated to Windows 10 from Windows 7 in the past couple of weeks.

Continue reading How do I change encryption from RC4 to AES in order to allow RDP to my remote servers? [migrated]

Why does tls_version "TLS 1.2" from howsmyssl rate "Probably Okay" in Chrome on Windows 10 but "Bad" in IE11 on Windows 7?

I’m implementing an API endpoint based on howsmyssl to check the TLS version of clients then notify those clients about whether or not they passed the test. However, several clients have reported failing the test on our site … Continue reading Why does tls_version "TLS 1.2" from howsmyssl rate "Probably Okay" in Chrome on Windows 10 but "Bad" in IE11 on Windows 7?

RC4 basic encrypt message error? [on hold]

I don’t know if this is normal or not, but it seems to me that the rendering (result) of the RC4 encryption that I implemented in C provides me with something else and I’m not convinced where I’m wrong.

#define REF_RC4 0xFF
#define EXP_RC4 0x100

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct s_context{
    unsigned int I;
    unsigned int J;
    unsigned int S[EXP_RC4];
}CONTEXT;

void f_init_rc4( CONTEXT *p, unsigned char Key[], int size ){

    p->I = 0;
    p->J = 0;
    p->S[0] = '\0';

    unsigned int s = 0;
    for( p->I = 0; REF_RC4 > p->I; p->I++ )
        p->S[p->I] = p->I;

    for( p->I = 0; REF_RC4 > p->I; p->I++ ){
        p->J = ( p->J + p->S[p->I] + Key[p->I % size]) & REF_RC4;
        s = p->S[p->I];
        p->S[p->I] = p->S[p->J];
        p->S[p->J] = s;
    }
    p->I = 0;
    p->J = 0;
}

void f_cipher_RC4( CONTEXT *p,unsigned char *pMsg){

    unsigned int i = 0;
    unsigned int s = 0;
    const unsigned long x = (unsigned long)strlen((char*)pMsg);
    for( i = 0; x > i; i++ ){
        p->I = ( p->I + 1 ) & EXP_RC4;
        p->J = ( p->J + p->S[p->I] ) & EXP_RC4;
        s = p->S[p->I];
        p->S[p->I] = p->S[p->J];
        p->S[p->J] = s;
        pMsg[i] = pMsg[i] ^ p->S[(p->S[p->I]+p->S[p->J]) & REF_RC4 ];
    }
}


int main( void ){

    extern int errno;
    CONTEXT *p = NULL;
    unsigned char Key[] = "Wiki\0";
    unsigned char Message[] = "pedia\0";

    errno = 0;
    if( NULL == (p = malloc(1 *sizeof(struct s_context*) ) ) ){
        (void)fprintf(stderr, "Error(%d)\t:%s\n÷t:%s\n", errno,
                      "Error malloc context", strerror(errno) );
        return EXIT_FAILURE;
    }

    (void)memset(p, 0, sizeof(*p));
    f_init_rc4(p, Key, 4 );
    p->I = 0;
    p->J = 0;
    f_cipher_RC4(p, Message);
    (void)fprintf( stdout, "CIPHER\t:%02X\n", (unsigned int)Message );
    free( (NULL==p) ? NULL : p );
    p = NULL;
    return EXIT_SUCCESS;
}

Result:

CIPHER  :5FBFF603
Program ended with exit code: 0

Expected results:

CIPHER :1021BF0420

Continue reading RC4 basic encrypt message error? [on hold]

Posted in RC4

TLS/DTLS: RC4 Stream Cipher and DTLS DoS

I have a few questions about Datagram Transport Layer Security (DTLS) and TLS.

  1. In TLS’s traffic encryption layer (called the TLS Record Layer),
    records are not independent. Cryptographic context (stream cipher key
    stream) is retained between records. DTLS solves the first problem by
    banning stream ciphers. [RFC6347 (3.1)]

    I don’t understand why there is a problem with interrecord depedency and therefore DTLS can not use stream ciphers. If I understood RC4 correctly, only a correct exchange of the key is needed. So if the key was exchanged, for example with Diffie-Hellman, why is there a depedency of the records transmitted before?
    EDIT: I think I understand it now. The records are encrypted with a key and if a record gets lost (after the handshake was done), it is not possible to determine which bit of the key has to be used to decrypt the record you received. Please correct me, if that was wrong.

  2. There are two DoS attacks described. I want to know if the attacks are possible and the counter measures against them would really work. So would it be possible if the attacker can read the communication of his victim, that he can flood his victim with certificates from the server, if the attacker answers the cookie exchange with the IP of his victim? If an attack like that is possible, does the third party help against that? Wouldn’t it be the same with the Third Party? I have problems comprehending why that would make a difference.[DoS Attacks Analysis and Improvement in DTLS Protocol for Internet of Things, An enhanced DTLS protocol for Internet of Things applications] (Looking in one of them is enough)
  3. If the DoS attacks are really working despite the use of cookies, are there other methods against them?

I would appreciate if you could help me with my questions.

Continue reading TLS/DTLS: RC4 Stream Cipher and DTLS DoS

Why is it necessary to minimize redundancy in the ciphertext of a stream cipher?

I am utterly confused about this. I understand why you would want to minimize redundancy if you’re using a substitution cipher, but why is this necessary when using a stream cipher such as RC4? Since the attacker does not h… Continue reading Why is it necessary to minimize redundancy in the ciphertext of a stream cipher?

Why is it necessary to minimize redundancy in the ciphertext of a stream cipher?

I am utterly confused about this. I understand why you would want to minimize redundancy if you’re using a substitution cipher, but why is this necessary when using a stream cipher such as RC4? Since the attacker does not h… Continue reading Why is it necessary to minimize redundancy in the ciphertext of a stream cipher?