One Time Pad一次一密是一种传统的对称加密方式,靠替换的一种实现。现在都是基于环,基于群的。在秘钥不泄露的情况下,可以达到perfect secrecy。
一个简单的例子是,Alice想要发送一个消息“Hello”给Bob。首先双方生成一个随机的五个字符的key,假如说“egkLd”,并且这个key是双方共享的。然后Alice将“Hello”和“egkLd”的ASCII码按位异或得到密文,发送给Bob。密文看起来是随机的,Bob收到后,将密文和key重新按位异或就可以恢复出原文。
OTP有几个性质:
- key的长度和明文长度相同。明文很长的时候,密文也很长。
- key每次使用之后就会丢弃。否则如果有一组明文和密文被知道,就会暴露所有的明文。
OTP虽说能达到perfect secrecy,但是他的困难主要在于:
- 生成大量的随机key。
- 如何分发并且保护key,其实将保护明文不被看到变成了key不被恶意人看到。