5

開発中の R パッケージのコンシューマー キーとシークレットが必要です。各ユーザーが適用して独自のものを取得するのはやや面倒ですが、パッケージ機能を使用するにはユーザー名/パスワードで認証する必要があるため、実際には必要ありません。ただし、鍵を公開して共有することは許可されていません。パッケージソースがCRANにあるときに、キー+シークレット(またはそのための情報)をパッケージソースに隠す方法はありますか? 答えはノーだと思いますが、他のアイデアを見逃さないようにしたいと思います。

更新: 私が予見する唯一の悪用は、誰かが別のアプリケーションでキーを抽出して使用し、レート制限を最大化することです。でもそれなら、さっさと取り除けばいいのに。しかし、私が見逃している他の形態の虐待があるかもしれません。たぶん、誰もが自分で申請できるようにする必要があります。

4

1 に答える 1

3

難読化がセキュリティではないことを認識している限り、難読化する簡単な方法がいくつかあります。キーの保存方法は指定されていないため、バイナリ形式でファイルに保存されていると想定します。

最も単純な難読化はxor、何らかの値を使用することです。美味しそうに聞こえるという理由だけで「DEADBEEF」を使用します。

keyFile <- "c:/foo.bin"
obfuscatedKey <- readBin(keyFile, "raw", file.info(keyFile)$size)
key <- xor(obfuscatedKey , as.raw(c(0xde, 0xad, 0xbe, 0xef))) # xor with DEADBEEF

対称であるためxor、同じコードを使用して元のキーから obfuscatedKey を作成することもできます。

もう 1 つの方法は、ベクトルをスクランブルすることです。「秘密の」シード (42) で乱数ジェネレーターを使用することにより、キーが難読化されます。

# obfuscate
key <- 101:110
n <- length(key)
set.seed(42, "Mersenne-Twister") # To get the same permutation
perm <- sample.int(n)
obfuscatedKey <- key[perm]

# unobfuscate
orgKey <- integer(n)
set.seed(42, "Mersenne-Twister") # To get the same permutation
perm <- sample.int(n)
orgKey[perm] <- obfuscatedKey

identical(key, orgKey) # TRUE

...もちろん、両方の方法を組み合わせることができます...

于 2012-02-29T19:13:35.753 に答える