6

公開/秘密鍵情報を iOS デバイスに安全に保存することを検討しています。これを KeyChain に保存したいことはわかっていますが、SecRecord. 私は次のようなことをするつもりでした:

// private key
SecKeyChain.Add(new SecRecord(SecKind.Key)
{
    Accessible = SecAccessible.AlwaysThisDeviceOnly,
    KeySizeInBits = 512,
    KeyClass = SecKeyClass.Private,
    CanSign = true,
    ValueData = privateKeyValue,
    Account = publicKeyValue
});

これは秘密鍵を保存し、公開鍵についても同様のアプローチに従い、Account属性をユーザー名などのユーザーに固有の値に置き換えます。ただし、これがこれを使用する正しい方法であるかどうかはわかりません。

キーに対して具体的にこれを行う方法について、誰かが良い例を持っていますか?

4

1 に答える 1

4

次のアプローチを採用することにしました。

// store public key
SecKeyChain.Add(new SecRecord(SecKind.Key)
{
    ApplicationLabel = userName,
    Accessible = SecAccessible.AlwaysThisDeviceOnly,
    KeySizeInBits = 512,
    KeyClass = SecKeyClass.Public,
    ValueData = NSData.FromString(publicKey)
});

// store private key
SecKeyChain.Add(new SecRecord(SecKind.Key)
{
    ApplicationLabel = publicKey,
    Accessible = SecAccessible.AlwaysThisDeviceOnly,
    KeySizeInBits = 512,
    KeyClass = SecKeyClass.Private,
    CanSign = true,
    ValueData = NSData.FromString(secretKey)
});

これは、各公開鍵が個々のユーザーにマップされ、各秘密鍵が公開鍵にマップされることを意味します。これにより、現在ログインしているユーザーのみを保存するのではなく、複数のユーザー キーを保存できます。

正常に動作しているように見えますが、この種のことを行う正しい方法であることをまだ 100% 確信しているわけではないため、いくつかの明確化が必要です。

于 2012-09-28T19:33:57.937 に答える