임의의 데이터를 송신하면 그것을 암호문으로 간주하고 회신해 주는 서비스를 공격자가 이용할 수 있다는 것을 가정한 공격
복호 오라클 : 임의의 데이터를 송신하면 그것을 암호문으로 간주하고 회신해 주는 서비스
임의의 데이터라고 하더라도 공격대상이 되고 있는 암호문 그 자체만은 제외함
복호 오라클을 이용할 수 있다는 것은 공격자에 있어서 유리한 조건(여러가지 데이터를 만들어서 복호 오라클로 복호화하는 것으로서 공격 대상의 암호문을 만들기 위해 사용한 키의 평문 정보를 일부라도 알 가능성이 있기 때문)(선택 암호문 공격에 견딜 수 있는 암호 알고리즘은 강한 알고리즘이라고 할 수 있음
RSA는 선택 암호문 공격으로 해석되어 버린다는 것은 아님. 그러나, 선택 암호문 공격에 의해 공격대상의 암호문에 대응되는 평문 정보가 약간 누설된다는 것이 알려져 있음
RSA-OAEP : RSA를 개량한 알고리즘
RSA-OAEP의 복호화에서는 평문 해시 값과 정해진 개수의 0 등으로 만들어진 인증 정보를 평문의 앞에 추가하고 그 후에 RSA로 암호화함
RSA-OAEP의 복호화에서는 RSA로 복호화한 후 선두에 올바른 인증 정보가 나타나지 않으면 평문을 알고 있는 사람이 만든 암호문이 아니다라고 판단해서 오류로서 decryption error라는 일종의 오류 메시지를 회신함(어떤 오류인지 구체적으로 알리지 않는 것이 중요!)
공격자가 RSA_OAEP의 복호 오라클로부터 정보를 얻을 수가 없어지기 때문에 선택 암호문 공격으로부터 안전하게 됨
실제의 RSA-OAEP에서는 난수를 이용해서 암호문이 매번 다른 패턴이 되도록 하여 보다 안정성을 높이고 있음