Передача пароля по сети

Смотрю на код (в собственном клиенте для FB) упаковки пароля в буфер, который будет отправлен на сервер:

 m_dpb.AppendMbcString
  (isc_api::ibp_isc_dpb_password_enc,
   L"isc_dpb_password_enc",
   dpb_type::mbc_str_box_type(password_b,password_sz));

И думаю…

1. Пароль передается в «зашифрованном» виде.

2. В FB3 с его SRP, шифрование «поинтереснее».

3. Но пришлось libtommath затащить в код.

4. А в родном NetProvider для FB это «затаскивание» не асилили, поэтому SRP оно не поддерживает.

5. А интересно — «isc_dpb_password_enc» хотя бы используется?

6. Нет, не используется. Пароль передается как есть (через isc_dpb_password):

protected override void SendAttachToBuffer(DatabaseParameterBuffer dpb, string database)
{
	XdrStream.Write(IscCodes.op_attach);
	XdrStream.Write(0);
	if (!string.IsNullOrEmpty(Password))
	{
		dpb.Append(IscCodes.isc_dpb_password, Password);
	}
	dpb.Append(IscCodes.isc_dpb_utf8_filename, 0);
	XdrStream.WriteBuffer(Encoding.UTF8.GetBytes(database));
	XdrStream.WriteBuffer(dpb.ToArray());
}

7. Забавно, забавно …

Leave a Comment