Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/crypt.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3003 by maya, Mon Aug 20 14:21:57 2007 UTC revision 3036 by maya, Tue Oct 16 15:28:14 2007 UTC
# Line 48  SOFTWARE, EVEN IF ADVISED OF THE POSSIBI Line 48  SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
48  #define DEATTACK_DETECTED       1  #define DEATTACK_DETECTED       1
49    
50  /*  /*
51   * $Id: crypt.c,v 1.12 2007-08-20 14:21:57 maya Exp $ Cryptographic attack   * $Id: crypt.c,v 1.13 2007-10-16 15:28:14 maya Exp $ Cryptographic attack
52   * detector for ssh - source code (C)1998 CORE-SDI, Buenos Aires Argentina   * detector for ssh - source code (C)1998 CORE-SDI, Buenos Aires Argentina
53   * Ariel Futoransky(futo@core-sdi.com) <http://www.core-sdi.com>   * Ariel Futoransky(futo@core-sdi.com) <http://www.core-sdi.com>
54   */   */
# Line 214  static void no_encrypt(PTInstVar pvar, u Line 214  static void no_encrypt(PTInstVar pvar, u
214    
215    
216  // for SSH2(yutaka)  // for SSH2(yutaka)
217    // 事前に設定する鍵長が違うだけなので、AES256 でも
218    // cAES128_encrypt/cAES128_decrypt を使用できる (2007.10.16 maya)
219  static void cAES128_encrypt(PTInstVar pvar, unsigned char FAR * buf,  static void cAES128_encrypt(PTInstVar pvar, unsigned char FAR * buf,
220                              int bytes)                              int bytes)
221  {  {
# Line 653  BOOL CRYPT_set_supported_ciphers(PTInstV Line 655  BOOL CRYPT_set_supported_ciphers(PTInstV
655    
656          } else { // for SSH2(yutaka)          } else { // for SSH2(yutaka)
657                  // SSH2がサポートするデータ通信用アルゴリズム(公開鍵交換用とは別)                  // SSH2がサポートするデータ通信用アルゴリズム(公開鍵交換用とは別)
658                  cipher_mask = (1 << SSH_CIPHER_3DES_CBC) | (1 << SSH_CIPHER_AES128);                  cipher_mask = (1 << SSH_CIPHER_3DES_CBC)
659                                | (1 << SSH_CIPHER_AES128)
660    #ifdef SSH2_BLOWFISH
661                                | (1 << SSH_CIPHER_BLOWFISH)
662    #endif
663                                | (1 << SSH_CIPHER_AES256);
664          }          }
665    
666          sender_ciphers &= cipher_mask;          sender_ciphers &= cipher_mask;
# Line 1093  BOOL CRYPT_start_encryption(PTInstVar pv Line 1099  BOOL CRYPT_start_encryption(PTInstVar pv
1099    
1100                                  enc = &pvar->ssh2_keys[MODE_OUT].enc;                                  enc = &pvar->ssh2_keys[MODE_OUT].enc;
1101                                  cipher_init_SSH2(&pvar->evpcip[MODE_OUT],                                  cipher_init_SSH2(&pvar->evpcip[MODE_OUT],
1102                                                   enc->key, 24, enc->iv, 8,                                                   enc->key, get_cipher_key_len(pvar->crypt_state.sender_cipher),
1103                                                     enc->iv, get_cipher_block_size(pvar->crypt_state.sender_cipher),
1104                                                   CIPHER_ENCRYPT,                                                   CIPHER_ENCRYPT,
1105                                                   EVP_des_ede3_cbc);                                                   get_cipher_EVP_CIPHER(pvar->crypt_state.sender_cipher));
1106    
1107                                  //debug_print(10, enc->key, 24);                                  //debug_print(10, enc->key, get_cipher_key_len(pvar->crypt_state.sender_cipher));
1108                                  //debug_print(11, enc->iv, 24);                                  //debug_print(11, enc->iv, get_cipher_block_size(pvar->crypt_state.sender_cipher));
1109    
1110                                  pvar->crypt_state.encrypt = c3DES_CBC_encrypt;                                  pvar->crypt_state.encrypt = c3DES_CBC_encrypt;
1111                                  break;                                  break;
# Line 1106  BOOL CRYPT_start_encryption(PTInstVar pv Line 1113  BOOL CRYPT_start_encryption(PTInstVar pv
1113    
1114                          // for SSH2(yutaka)                          // for SSH2(yutaka)
1115                  case SSH_CIPHER_AES128:                  case SSH_CIPHER_AES128:
1116                    case SSH_CIPHER_AES256:
1117                          {                          {
1118                                  struct Enc *enc;                                  struct Enc *enc;
1119    
1120                                  enc = &pvar->ssh2_keys[MODE_OUT].enc;                                  enc = &pvar->ssh2_keys[MODE_OUT].enc;
1121                                  cipher_init_SSH2(&pvar->evpcip[MODE_OUT],                                  cipher_init_SSH2(&pvar->evpcip[MODE_OUT],
1122                                                   enc->key, 16, enc->iv, 16,                                                   enc->key, get_cipher_key_len(pvar->crypt_state.sender_cipher),
1123                                                     enc->iv, get_cipher_block_size(pvar->crypt_state.sender_cipher),
1124                                                   CIPHER_ENCRYPT,                                                   CIPHER_ENCRYPT,
1125                                                   EVP_aes_128_cbc);                                                   get_cipher_EVP_CIPHER(pvar->crypt_state.sender_cipher));
1126    
1127                                  //debug_print(10, enc->key, 24);                                  //debug_print(10, enc->key, get_cipher_key_len(pvar->crypt_state.sender_cipher));
1128                                  //debug_print(11, enc->iv, 24);                                  //debug_print(11, enc->iv, get_cipher_block_size(pvar->crypt_state.sender_cipher));
1129    
1130                                  pvar->crypt_state.encrypt = cAES128_encrypt;                                  pvar->crypt_state.encrypt = cAES128_encrypt;
1131                                  break;                                  break;
# Line 1163  BOOL CRYPT_start_encryption(PTInstVar pv Line 1172  BOOL CRYPT_start_encryption(PTInstVar pv
1172                                  struct Enc *enc;                                  struct Enc *enc;
1173    
1174                                  enc = &pvar->ssh2_keys[MODE_IN].enc;                                  enc = &pvar->ssh2_keys[MODE_IN].enc;
1175                                  cipher_init_SSH2(&pvar->evpcip[MODE_IN],                                  cipher_init_SSH2(&pvar->evpcip[MODE_IN],
1176                                                   enc->key, 24, enc->iv, 8,                                                   enc->key, get_cipher_key_len(pvar->crypt_state.sender_cipher),
1177                                                     enc->iv, get_cipher_block_size(pvar->crypt_state.sender_cipher),
1178                                                   CIPHER_DECRYPT,                                                   CIPHER_DECRYPT,
1179                                                   EVP_des_ede3_cbc);                                                   get_cipher_EVP_CIPHER(pvar->crypt_state.sender_cipher));
1180    
1181                                  //debug_print(12, enc->key, 24);                                  //debug_print(12, enc->key, 24);
1182                                  //debug_print(13, enc->iv, 24);                                  //debug_print(13, enc->iv, 24);
# Line 1177  BOOL CRYPT_start_encryption(PTInstVar pv Line 1187  BOOL CRYPT_start_encryption(PTInstVar pv
1187    
1188                          // for SSH2(yutaka)                          // for SSH2(yutaka)
1189                  case SSH_CIPHER_AES128:                  case SSH_CIPHER_AES128:
1190                    case SSH_CIPHER_AES256:
1191                          {                          {
1192                                  struct Enc *enc;                                  struct Enc *enc;
1193    
1194                                  enc = &pvar->ssh2_keys[MODE_IN].enc;                                  enc = &pvar->ssh2_keys[MODE_IN].enc;
1195                                  cipher_init_SSH2(&pvar->evpcip[MODE_IN],                                  cipher_init_SSH2(&pvar->evpcip[MODE_IN],
1196                                                   enc->key, 16, enc->iv, 16,                                                   enc->key, get_cipher_key_len(pvar->crypt_state.sender_cipher),
1197                                                     enc->iv, get_cipher_block_size(pvar->crypt_state.sender_cipher),
1198                                                   CIPHER_DECRYPT,                                                   CIPHER_DECRYPT,
1199                                                   EVP_aes_128_cbc);                                                   get_cipher_EVP_CIPHER(pvar->crypt_state.sender_cipher));
1200    
1201                                  //debug_print(12, enc->key, 24);                                  //debug_print(12, enc->key, 24);
1202                                  //debug_print(13, enc->iv, 24);                                  //debug_print(13, enc->iv, 24);
# Line 1272  static char FAR *get_cipher_name(int cip Line 1284  static char FAR *get_cipher_name(int cip
1284                  return "3DES-CBC";                  return "3DES-CBC";
1285          case SSH_CIPHER_AES128:          case SSH_CIPHER_AES128:
1286                  return "AES128";                  return "AES128";
1287            case SSH_CIPHER_AES256:
1288                    return "AES256";
1289    
1290          default:          default:
1291                  return "Unknown";                  return "Unknown";

Legend:
Removed from v.3003  
changed lines
  Added in v.3036

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26