2

パスワードのリストを保存するのは避けたいのですが、代わりに公開されている MATLAB 関数を使用してパスワードを確実に再生成したいと考えています。この関数は、どこにも保存されていない秘密鍵を取得して、乱数ジェネレーターのシードを設定します。

これは、必要に応じてアカウントのパスワードを再生成するための安全な方法ですか? 安全とは、私の秘密鍵が何であるかを誰かが知っているよりも脆弱ですか?

% Start with a blank slate
clear all
clc

% {url, #symbols, #upper, #lower, #numbers}
accounts = { ...
    'www.foo.com', [3,3,3,3]; ...
    'www.bar.com', [0,4,4,4]; ...
    'www.box.com', [0,2,3,2]; ...
    };
key = input('Secret Key: ', 's');
acc = input('Account Name (URL): ', 's');
% Clear display immediately
clc

% Allowed characters
s = { ...
    '@#$%&*=+'; ...                 % symbols
    'ABCDEFGHJKMNPQRSTUVWXYZ'; ...  % upper
    'abcdefghjkmnpqrstuvwxyz'; ...  % lower
'123456789' };                  % numbers

% Find matching accounts
idx = strfind(accounts(:,1), acc);

% Generate password for each matching account
for j = 1:length(idx)
    if isempty(idx{j})
        % Skip if there is no matching account
        continue
    end

    % Salted random number generator seed
    rng(sum([key, ': ', accounts{j,1}]), 'twister');

    ns = accounts{j,2};
    n = sum(ns);

    % Construct password
    p = '';
    for k = 1:length(s)
        v = s{k};
        p = [p v(randi(length(v),1,ns(k)))];
    end
    p = p(randperm(n));
    fprintf('Password for %s is %s\n', accounts{j,1}, p)
end

% Clear all variables for safety
clear all

たとえば、上記の私のプロトタイプは次のようになります

Password for www.foo.com is q*PZry4@8%3F
Password for www.bar.com is 8nZ8NWa6C8am
Password for www.box.com is wUw3Bn9

入力を使用して MATLAB コードを実行するたびに:

Secret Key: MySecretKey
Account Name (URL): www
4

2 に答える 2

1

素晴らしいプログラムです。最も弱い点は、おそらくアルゴリズムではなく、その使用方法です。

明らかに、matlab コマンド ウィンドウでパスワードを入力/出力することはあまり安全ではありません。ログファイルは保持され、パスワードのために何らかの形でスクレイピングされる可能性があります. また、パスワードが時々見えるという事実は、自宅以外で使用する場合に関連する弱点です.

秘密鍵は、このpasswordentrydialogのようなものでおそらく見えないままになる可能性があります。しかし、生成されたパスを実際に使用したい場合は、それを視覚的に観察するか、クリップボードに置く必要があります。どちらも公共の場では良くないかもしれません。


技術的な観点からは、数年間棚に置いておくと、Matlab が同じ乱数を生成できなくなる可能性があります。ただし、古いバージョンをアンインストールする前に、新しいバージョンで動作するかどうかを常に確認していれば問題ありません。


全体として、家庭で使用するための優れたメカニズムになる可能性があると思いますが、個々のパスワードをたくさん覚えることができれば、より安全になることは間違いありません. また、パスワードを保存できる無料のサービスがいくつかあります (マスター パスワードで保護されています)。

于 2013-07-24T13:21:43.790 に答える
0

他の人がすでにあなたの問題を調べており、 Password Safeのような別の解決策を考え出しています。パスワードは安全に保存され、使用後にプログラム自体がバッファのクリアなどを処理します。開示:私は自分でプログラムを使用しています。

于 2013-07-25T13:59:44.390 に答える