2011-01-01 2 views
0

보안상의 이유로 인코딩 된 문자열은 임의의 잡음과 구분할 수 없으며 모든 암호화마다 다릅니다 같은 텍스트로되어 있기 때문에 사용 된 암호화 알고리즘을 추측하거나 인코딩 된 텍스트에 대해 사전 공격을 수행하는 것은 불가능합니다.이 모드들 중 cbc, cfb, ctr, ecb, ncfb, nofb, ofb, stream은 안전하며 절대적으로 no-no입니다.

둘째 : 출력 문자열 길이가 입력 문자열 길이와 쉽게 일치하지 않으므로 해당 계정에서 추측 할 수 없습니다.

셋째 : 제공된 암호가 올바르지 않아 디코딩 함수가 해독 된 임의의 문자열 대신 false를 반환 할 수 있는지 확인할 수 있습니다.

--- 편집 :

0.554 : cast-128 : ctr : 8 
0.556 : gost : ncfb : 8 
0.5562 : cast-128 : ecb : 8 
0.5566 : cast-128 : ncfb : 8 
0.5579 : gost : cbc : 8 
0.5596 : gost : cfb : 8 
0.5596 : gost : ofb : 8 
0.5601 : gost : ctr : 8 
0.5613 : cast-256 : cfb : 16 
0.5621 : twofish : cbc : 16 
0.5622 : rijndael-128 : ctr : 16 
0.5632 : twofish : cfb : 16 
0.5646 : rijndael-128 : cfb : 16 
0.5656 : rijndael-128 : ofb : 16 
0.5657 : rijndael-128 : ncfb : 16 
0.5658 : loki97 : cbc : 16 
0.5663 : gost : ecb : 8 
0.5667 : cast-128 : cfb : 8 
0.5674 : cast-128 : ofb : 8 
0.5675 : rijndael-128 : ecb : 16 
0.5684 : loki97 : ctr : 16 
0.5684 : rijndael-128 : nofb : 16 
0.5686 : loki97 : ecb : 16 
0.5688 : loki97 : cfb : 16 
0.5692 : gost : nofb : 8 
0.57 : saferplus : ecb : 16 
0.5701 : cast-256 : nofb : 16 
0.5704 : loki97 : ncfb : 16 
0.571 : twofish : ncfb : 16 
0.5719 : cast-256 : ecb : 16 
0.5728 : cast-256 : cbc : 16 
0.573 : twofish : ofb : 16 
0.5731 : cast-256 : ofb : 16 
0.5737 : loki97 : nofb : 16 
0.5741 : saferplus : ctr : 16 
0.5748 : twofish : ecb : 16 
0.575 : rijndael-192 : cfb : 24 
0.5759 : cast-256 : ctr : 16 
0.5769 : cast-128 : nofb : 8 
0.5776 : saferplus : ofb : 16 
0.5778 : saferplus : ncfb : 16 
0.5778 : twofish : nofb : 16 
0.5783 : rijndael-128 : cbc : 16 
0.5795 : rijndael-192 : ecb : 24 
0.5801 : rijndael-192 : cbc : 24 
0.5808 : rijndael-192 : nofb : 24 
0.5809 : saferplus : cbc : 16 
0.581 : saferplus : nofb : 16 
0.5829 : rijndael-192 : ctr : 24 
0.5837 : serpent : ctr : 16 
0.5845 : cast-256 : ncfb : 16 
0.5856 : xtea : ecb : 8 
0.5857 : serpent : cbc : 16 
0.5859 : xtea : ctr : 8 
0.5863 : saferplus : cfb : 16 
0.5877 : twofish : ctr : 16 
0.5881 : xtea : nofb : 8 
0.5887 : xtea : ofb : 8 
0.5891 : cast-128 : cbc : 8 
0.5892 : xtea : ncfb : 8 
0.5895 : rijndael-192 : ncfb : 24 
0.5913 : serpent : cfb : 16 
0.5918 : serpent : ofb : 16 
0.5934 : rijndael-256 : ecb : 32 
0.5935 : rijndael-256 : cbc : 32 
0.5936 : serpent : nofb : 16 
0.5943 : loki97 : ofb : 16 
0.595 : rijndael-192 : ofb : 24 
0.5958 : rijndael-256 : ctr : 32 
0.596 : blowfish-compat : cbc : 8 
0.5962 : serpent : ecb : 16 
0.5972 : rijndael-256 : cfb : 32 
0.5976 : rijndael-256 : ncfb : 32 
0.5977 : xtea : cbc : 8 
0.5982 : rc2 : ctr : 8 
0.5989 : blowfish-compat : cfb : 8 
0.599 : rc2 : cfb : 8 
0.6 : des : cfb : 8 
0.6002 : rc2 : nofb : 8 
0.6009 : blowfish-compat : ctr : 8 
0.6013 : rc2 : cbc : 8 
0.6021 : rc2 : ncfb : 8 
0.604 : rijndael-256 : nofb : 32 
0.6043 : blowfish-compat : ncfb : 8 
0.6043 : des : nofb : 8 
0.6055 : des : ecb : 8 
0.607 : blowfish : cbc : 8 
0.6078 : rc2 : ecb : 8 
0.6081 : blowfish-compat : nofb : 8 
0.6081 : des : cbc : 8 
0.6093 : blowfish : ecb : 8 
0.6098 : des : ofb : 8 
0.6105 : blowfish : cfb : 8 
0.6113 : blowfish-compat : ofb : 8 
0.6137 : rc2 : ofb : 8 
0.6139 : xtea : cfb : 8 
0.6141 : serpent : ncfb : 16 
0.6144 : des : ctr : 8 
0.6174 : blowfish : ofb : 8 
0.6184 : blowfish : ncfb : 8 
0.6218 : des : ncfb : 8 
0.6228 : blowfish-compat : ecb : 8 
0.6228 : rijndael-256 : ofb : 32 
0.6253 : blowfish : nofb : 8 
0.628 : blowfish : ctr : 8 
0.6343 : tripledes : ctr : 8 
0.6356 : tripledes : cfb : 8 
0.6365 : tripledes : cbc : 8 
0.6367 : tripledes : ncfb : 8 
0.6368 : tripledes : ecb : 8 
0.647 : tripledes : ofb : 8 
0.6582 : tripledes : nofb : 8 

안전한 것 위에서 아래로가는 :이 인코딩되는 알고리즘과 모드의 쌍을 주어 얼마나 빨리입니까?

+0

여기에 대한 답변을 찾았습니다 : http://stackoverflow.com/questions/1220751/how-to-choose-an-aes-encryption-mode-cbc-ecb-ctr-ocb-cfb – rsk82

답변

0

여기 좀 보시려면 : http://en.wikipedia.org/wiki/Block_cipher_modes_of_operatio 일부 배경.

모두가 정말로 다릅니다. 일부는 잘 알려진 단점을 가지고 있습니다. 조합 암호/연결 및 사용 방법의 세부 사항을 실제로 살펴야합니다.

"캐주얼 사용"의 경우 블록 암호화 모드가 저온 시스템의 가장 중요한 부분이 아니라고 말할 수 있습니다.

일부는 예를 들어, 당신은 스트림 암호로 블록 암호를 설정 싶어 경우에만 유용합니다

  • CTR
  • CFB
  • OFB 그래서

당신이 할 수있는 필요하지 않는 그것들은 당신에게 유용하지 않습니다.

ECB가 가장 간단한 단점은 동일한 평문 블록이 동일한 암호문이된다는 점입니다. 요즘에는 그걸 쓸 이유가 거의 없습니다.

Adressing 당신의 포인트 :

  1. 정말 블록 암호 모드에 의존하지 않습니다. salt을 사용하거나 미리 계산 된 테이블 공격을 피하기 위해 암호를 N 번 암호화 할 수 있습니다.

  2. 발생하지 않습니다. 입력하기 전에 암호화

  3. 로 채워집니다 ... 당신이 무슨 뜻인지 확실하지

편집 : 나는 당신이 필요하지 않은 경우 바퀴를 재발견하지 않는, 유진에 동의!

+0

PGP를 어떻게 사용할 수 있습니까? PHP? 그것은 두 가지 다른 것들입니다. PHP에서는 mcrypt를 사용해야합니다. 태그를보십시오. – rsk82

+0

@ user393087 귀하의 경우 "필수"란 무엇입니까? 이것은 당신에게 주어진 요구 사항입니까, 아니면 당신이 결정한 사람입니까, 당신은 반드시 mcrypt를 사용해야 만합니까? mcrypt는 라이브러리입니다. OpenPGP는 여러 라이브러리를 사용하여 구현 된 기술입니다 (하지만 다른 질문을해야합니다). 하나의 옵션이 여기에 설명되어 있습니다 : http://devzone.zend.com/article/1265 –

2

둘째 : 이것은 의미가 없습니다. 4 바이트를 암호화 한 결과가 4 메가 ​​바이트를 암호화 한 결과와 다르다는 것을 알고 계십니까? 일반적으로 암호를 암호화 할 때 실제 길이를 마스크하려면 패딩이 사용됩니다. 암호화 할 데이터에 특정 바이트 수가 추가 된 다음 전체가 암호화됩니다.하지만 4 바이트 길이의 암호와 48 바이트 길이의 암호를 암호화하는 데 차이가 있습니다 (64 바이트 패딩을 사용하지 않는 한 아이디어가 있습니다).

세 번째 : 해시가이 용도로 사용됩니다. 나는. 암호화 된 데이터에 원래 데이터 (또는 일부 추가 데이터)의 해시가 포함됩니다. 암호 해독 후 해시가 다시 계산되고 저장된 해시와 비교됩니다. 타이밍 어택은 비교시 가능하므로 비교가 제대로 구현되어야합니다.

일반적으로 휠을 재발 명하려는 것입니다. 보안 키 (또는 심지어 암호)를 사용하여 데이터를 암호화해야하는 경우 OpenPGP를 사용하십시오. 강력한 암호화를 재발 명하면서 질문하고 묻는 모든 질문을 해결합니다. OpenPGP를 사용하면 일반 암호를 암호화에 사용할 수 있습니다.

관련 문제