diff --git a/cryptography/hazmat/backends/interfaces.py b/cryptography/hazmat/backends/interfaces.py
index 19d6fb7..524e0a5 100644
--- a/cryptography/hazmat/backends/interfaces.py
+++ b/cryptography/hazmat/backends/interfaces.py
@@ -142,11 +142,18 @@
         generation.
         """
 
-    def load_rsa_numbers(self, numbers):
+    @abc.abstractmethod
+    def load_rsa_private_numbers(self, numbers):
         """
         Returns an RSAPrivateKey provider.
         """
 
+    @abc.abstractmethod
+    def load_rsa_public_numbers(self, numbers):
+        """
+        Returns an RSAPublicKey provider.
+        """
+
 
 @six.add_metaclass(abc.ABCMeta)
 class DSABackend(object):
diff --git a/cryptography/hazmat/backends/multibackend.py b/cryptography/hazmat/backends/multibackend.py
index 5acec33..f3c7937 100644
--- a/cryptography/hazmat/backends/multibackend.py
+++ b/cryptography/hazmat/backends/multibackend.py
@@ -178,9 +178,16 @@
         raise UnsupportedAlgorithm("RSA is not supported by the backend.",
                                    _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM)
 
-    def load_rsa_numbers(self, numbers):
+    def load_rsa_private_numbers(self, numbers):
         for b in self._filtered_backends(RSABackend):
-            return b.load_rsa_numbers(numbers)
+            return b.load_rsa_private_numbers(numbers)
+
+        raise UnsupportedAlgorithm("RSA is not supported by the backend",
+                                   _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM)
+
+    def load_rsa_public_numbers(self, numbers):
+        for b in self._filtered_backends(RSABackend):
+            return b.load_rsa_public_numbers(numbers)
 
         raise UnsupportedAlgorithm("RSA is not supported by the backend",
                                    _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM)
diff --git a/cryptography/hazmat/backends/openssl/backend.py b/cryptography/hazmat/backends/openssl/backend.py
index e5870f3..ffe0966 100644
--- a/cryptography/hazmat/backends/openssl/backend.py
+++ b/cryptography/hazmat/backends/openssl/backend.py
@@ -377,23 +377,23 @@
         return (public_exponent >= 3 and public_exponent & 1 != 0 and
                 key_size >= 512)
 
-    def load_rsa_numbers(self, numbers):
-        if isinstance(numbers, rsa.RSAPublicNumbers):
-            return rsa.RSAPublicKey(
-                public_exponent=numbers.e,
-                modulus=numbers.n
-            )
-        elif isinstance(numbers, rsa.RSAPrivateNumbers):
-            return rsa.RSAPrivateKey(
-                p=numbers.p,
-                q=numbers.q,
-                private_exponent=numbers.d,
-                dmp1=numbers.dmp1,
-                dmq1=numbers.dmq1,
-                iqmp=numbers.iqmp,
-                public_exponent=numbers.public_numbers.e,
-                modulus=numbers.public_numbers.n
-            )
+    def load_rsa_private_numbers(self, numbers):
+        return rsa.RSAPrivateKey(
+            p=numbers.p,
+            q=numbers.q,
+            private_exponent=numbers.d,
+            dmp1=numbers.dmp1,
+            dmq1=numbers.dmq1,
+            iqmp=numbers.iqmp,
+            public_exponent=numbers.public_numbers.e,
+            modulus=numbers.public_numbers.n
+        )
+
+    def load_rsa_public_numbers(self, numbers):
+        return rsa.RSAPublicKey(
+            public_exponent=numbers.e,
+            modulus=numbers.n
+        )
 
     def _new_evp_pkey(self):
         evp_pkey = self._lib.EVP_PKEY_new()
diff --git a/docs/hazmat/backends/interfaces.rst b/docs/hazmat/backends/interfaces.rst
index c7d5667..a32829f 100644
--- a/docs/hazmat/backends/interfaces.rst
+++ b/docs/hazmat/backends/interfaces.rst
@@ -322,18 +322,21 @@
 
         :raises ValueError: When plaintext is too long for the key size.
 
-    .. method:: load_rsa_numbers(numbers):
+    .. method:: load_rsa_private_numbers(numbers):
 
         :param numbers: An instance of
-            :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers` or
-            :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicNumbers`.
+            :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers`.
 
         :returns: A provider of
-            :class:`~cryptography.hazmat.primitives.interfaces.RSAPrivateKey` or
-            :class:`~cryptography.hazmat.primitives.interfaces.RSAPublicKey`
-            depending on if it's input was an
-            :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers` or
-            :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicNumbers`.
+            :class:`~cryptography.hazmat.primitives.interfaces.RSAPrivateKey`.
+
+    .. method:: load_rsa_public_numbers(numbers):
+
+        :param numbers: An instance of
+            :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers`.
+
+        :returns: A provider of
+            :class:`~cryptography.hazmat.primitives.interfaces.RSAPublicKey`.
 
 
 .. class:: TraditionalOpenSSLSerializationBackend
diff --git a/tests/hazmat/backends/test_multibackend.py b/tests/hazmat/backends/test_multibackend.py
index 71755f9..5a62420 100644
--- a/tests/hazmat/backends/test_multibackend.py
+++ b/tests/hazmat/backends/test_multibackend.py
@@ -113,7 +113,10 @@
     def encrypt_rsa(self, public_key, plaintext, padding):
         pass
 
-    def load_rsa_numbers(self, numbers):
+    def load_rsa_private_numbers(self, numbers):
+        pass
+
+    def load_rsa_public_numbers(self, numbers):
         pass
 
 
@@ -239,7 +242,9 @@
 
         backend.decrypt_rsa("private_key", "encrypted", padding.PKCS1v15())
 
-        backend.load_rsa_numbers(rsa.RSAPublicNumbers(e=3, n=1))
+        backend.load_rsa_private_numbers("private_numbers")
+
+        backend.load_rsa_public_numbers("public_numbers")
 
         backend = MultiBackend([])
         with raises_unsupported_algorithm(
@@ -287,7 +292,12 @@
         with raises_unsupported_algorithm(
             _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM
         ):
-            backend.load_rsa_numbers(rsa.RSAPublicNumbers(e=3, n=1))
+            backend.load_rsa_private_numbers("private_numbers")
+
+        with raises_unsupported_algorithm(
+            _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM
+        ):
+            backend.load_rsa_public_numbers("public_numbers")
 
     def test_dsa(self):
         backend = MultiBackend([
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index a165259..a76c0ec 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -1787,19 +1787,19 @@
         # Test a modulus < 3.
 
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(rsa.RSAPublicNumbers(e=7, n=2))
+            backend.load_rsa_public_numbers(rsa.RSAPublicNumbers(e=7, n=2))
 
         # Test a public_exponent < 3
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(rsa.RSAPublicNumbers(e=1, n=15))
+            backend.load_rsa_public_numbers(rsa.RSAPublicNumbers(e=1, n=15))
 
         # Test a public_exponent > modulus
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(rsa.RSAPublicNumbers(e=17, n=15))
+            backend.load_rsa_public_numbers(rsa.RSAPublicNumbers(e=17, n=15))
 
         # Test a public_exponent that is not odd.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(rsa.RSAPublicNumbers(e=16, n=15))
+            backend.load_rsa_public_numbers(rsa.RSAPublicNumbers(e=16, n=15))
 
     def test_invalid_private_numbers_argument_values(self, backend):
         # Start with p=3, q=11, private_exponent=3, public_exponent=7,
@@ -1808,7 +1808,7 @@
 
         # Test a modulus < 3.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1825,7 +1825,7 @@
 
         # Test a modulus != p * q.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1842,7 +1842,7 @@
 
         # Test a p > modulus.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=37,
                     q=11,
@@ -1859,7 +1859,7 @@
 
         # Test a q > modulus.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=37,
@@ -1876,7 +1876,7 @@
 
         # Test a dmp1 > modulus.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1893,7 +1893,7 @@
 
         # Test a dmq1 > modulus.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1910,7 +1910,7 @@
 
         # Test an iqmp > modulus.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1927,7 +1927,7 @@
 
         # Test a private_exponent > modulus
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1944,7 +1944,7 @@
 
         # Test a public_exponent < 3
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1961,7 +1961,7 @@
 
         # Test a public_exponent > modulus
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1978,7 +1978,7 @@
 
         # Test a public_exponent that is not odd.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -1995,7 +1995,7 @@
 
         # Test a dmp1 that is not odd.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
@@ -2012,7 +2012,7 @@
 
         # Test a dmq1 that is not odd.
         with pytest.raises(ValueError):
-            backend.load_rsa_numbers(
+            backend.load_rsa_private_numbers(
                 rsa.RSAPrivateNumbers(
                     p=3,
                     q=11,
