A method of generating keys for use in exchanging information, the method comprising: selecting, by a first device, first bits from a shared secret key in the first device, wherein the first bits have a first selected length; sending, by the first device, second bits with the first selected length in signals from the first device to a second device in which the signals have selected types of properties based on the first bits and in which the second bits are encoded in states for the selected types of properties, wherein the signals are comprised of photons, wherein the selected types of properties comprise types of polarization, wherein the second bits are generated randomly or using a pseudorandom number generator; selecting, by the second device, third bits from a shared secret key in the second device, wherein the shared secret key in the first device and the shared secret key in the second device are the same, wherein the selected third bits have a second selected length, wherein the first selected length is the same as the second selected length; identifying, by the second device, expected types of properties from the selected third bits, wherein the expected types of properties are the same as the selected types of properties; sending, by the second device, indications from the second device to the first device identifying the signals with the selected types of properties identified as matching the expected types of properties identified from the selected third bits; generating, by the first device, a first key in the first device in which the first key is based on the second bits that have been indicated by the second device as having the selected types of properties identified as matching the expected types of properties identified from the selected third bits; and generating, by the second device, a second key in the second device in which the second key is based on the second bits received at the second device with the selected types of properties identified as matching the expected types of properties identified from the selected third bits. selecting, by a first device, first bits from a shared secret key in the first device, wherein the first bits have a first selected length; sending, by the first device, second bits with the first selected length in signals from the first device to a second device in which the signals have selected types of properties based on the first bits and in which the second bits are encoded in states for the selected types of properties, wherein the signals are comprised of photons, wherein the selected types of properties comprise types of polarization, wherein the second bits are generated randomly or using a pseudorandom number generator; selecting, by the second device, third bits from a shared secret key in the second device, wherein the shared secret key in the first device and the shared secret key in the second device are the same, wherein the selected third bits have a second selected length, wherein the first selected length is the same as the second selected length; identifying, by the second device, expected types of properties from the selected third bits, wherein the expected types of properties are the same as the selected types of properties; sending, by the second device, indications from the second device to the first device identifying the signals with the selected types of properties identified as matching the expected types of properties identified from the selected third bits; generating, by the first device, a first key in the first device in which the first key is based on the second bits that have been indicated by the second device as having the selected types of properties identified as matching the expected types of properties identified from the selected third bits; and generating, by the second device, a second key in the second device in which the second key is based on the second bits received at the second device with the selected types of properties identified as matching the expected types of properties identified from the selected third bits.