标签: entropy

安全混合熵源

让我们假设我们生成非常大的(例如128或256位)数字作为分组密码的密钥.

让我们进一步假设我们戴着锡箔帽(至少在外面时).

如此偏执,我们希望确定我们的可用熵,但我们并不完全信任任何特定的来源.也许政府正在操纵我们的硬币.也许这些骰子是如此微妙的加权.如果硬件中断输入/dev/random只是有点过于一致怎么办?(除了偏执,我们很懒,我们不想手工制作它......)

所以,让我们把它们混合起来.

这样做的安全方法是什么?据推测,只是从每个源连接几个字节并不完全安全 - 如果其中一个源有偏差,理论上它可能适用于诸如相关密钥攻击之类的事情.

在连接的字节上运行SHA-256是否足够?

(是的,在某个时候我很快就会拿起一本密码学工程.:))

random cryptography entropy

4
推荐指数
1
解决办法
1174
查看次数

Windows上有哪些熵源?

我想在Windows上生成随机加密密钥.我在哪里可以获得熵?

我希望我的熵函数在没有网络连接的情况下工作,并且在Windows 2000及更高版本上可靠.即使是可能提供或不提供少量熵的来源也可能是有用的,因为所有来源都将汇集在一起​​.

这是我最初的功能列表:

GetCurrentProcessID, GetCurrentThreadID, GetTickCount, GetLocalTime, QueryPerformanceCounter, GlobalMemoryStatus, GetDiskFreeSpace, GetComputerName, GetUserName, GetCursorPos, GetMessageTime, GetSystemInfo, CryptGenRandom, GetProcessHandleCount, GetProcessMemoryInfo.

windows random winapi cryptography entropy

4
推荐指数
1
解决办法
5832
查看次数

决策树中的Shannon熵测度

为什么Shannon的熵测量用于决策树分支?

熵(S)= - p(+)log(p(+)) - p( - )log(p( - ))

我知道这是衡量否定的标准.编码信息所需的比特数; 分布越均匀,熵越多.但我不明白为什么它经常应用于创建决策树(选择一个分支点).

encoding machine-learning entropy information-theory decision-tree

4
推荐指数
1
解决办法
1728
查看次数

确定甲板洗牌的程度

我正在做一个小型扑克计划,我想确定一个牌组的洗牌程度.我有一张带有52张牌的List然后我运行我的洗牌算法,我希望能够确定牌组在某种程度上的洗牌程度.有人知道怎么做吗?谢谢

编辑:哇.很多回复.一切都很好但不完全是我想要的.这是我没有进一步指出我的问题的错.但我认为Saran最接近我真正想要的.我来说明一下.

我不想马上进行"完美"的洗牌.我已经读完了,我实施了Fisher-Yates.那个人很擅长"完美"的洗牌.我想要做的是模拟一个真实世界的情况,朋友们正在玩德州扑克,经销商拿着套牌并使用混合其他洗牌的浅滩洗牌来洗牌.最后,我想要的是一种衡量现实世界洗牌之间差异的方法.

一个例子.假设牌组总是新鲜的(对于所有四件套装来说,王牌适合王牌,然后是王牌王牌.)乔拿着甲板,做了2次浅口洗牌,其中一次切入.彼得做了5次剥离洗牌.我想找到一种方法,看看哪一个改组"更好".

我越想它越多,我认为它很难确定.

再次感谢.

编辑23.10.2013

这是我想出的方法,将Sarans的想法与我的想法结合起来:

 public int checkShuffle(List<Card> cardDeckToCheck,int[] previousOrder)
    {
        // Higher is worse? Sure.
        int score = 0;

        for (int i = 0; i < cardDeckToCheck.Count; i++)
        {
            Card cardToCheck = cardDeckToCheck[i];
            Card cardToLeft = null;
            Card cardToRight = null;

            // Should cost more since the card has not moved at all.
            // For this I need an array that shows me the arangement of the deck before shuffling.
            if(cardToCheck.index == previousOrder[i])
            {
                score += …
Run Code Online (Sandbox Code Playgroud)

c# random entropy

4
推荐指数
1
解决办法
1849
查看次数

在iOS中使用SecRandomCopyBytes()的随机256位密钥

我一直使用UUIDString作为存储在我的i​​PAD上的文件的加密密钥,但第三方在我的应用程序上完成的安全审查提示如下.

随着应用程序的启动,生成全局数据库密钥并将其存储在密钥链中.在生成期间,使用由iOS提供的类NSUUID的方法UUIDString.此函数生成由字母A到F,数字和连字符组成的随机字符串,并且不必要地限制密钥空间,从而导致熵减弱.由于密钥仅由应用程序逻辑使用,并且不必由个人读取,理解或处理,因此不需要将密钥空间限制为可读字符.因此,SecRandomCopyBytes应使用via ()生成的随机256位密钥作为主密钥.

现在我已经搜索了很多并尝试了一些代码实现,但还没找到确切的东西.我尝试过的:

NSMutableData* data = [NSMutableData dataWithLength:32];
int result = SecRandomCopyBytes(kSecRandomDefault, 32, data.mutableBytes);
NSLog(@"Description %d",result);
Run Code Online (Sandbox Code Playgroud)

我的理解是,这应该给我一个整数,我应该将它转换为NSString并使用它作为我的键,但我很确定这不是这里所需要的,并且上述方法总是将结果给出为0.我完全迷失在这里,任何帮助表示赞赏.

谢谢.

encryption cryptography objective-c entropy ios

4
推荐指数
1
解决办法
8258
查看次数

Linux上的堆栈的ASLR熵位

我正在看麻省理工学院的一个演示文稿,他们解释了不同类型的ASLR实现.

例如,他们指出对于静态ASLR,堆栈具有19位的熵.根据我的理解,这意味着堆栈基地址只能随机化以获取2 ^ 19个不同的值.

我想问一下如何计算堆栈有19位的熵?

编辑:

在线检查后,我在Linux上找到了堆栈ASLR的一些解释.从另一个问题中学习,我认为可能相关的代码是:

#ifndef STACK_RND_MASK
#define STACK_RND_MASK (0x7ff >> (PAGE_SHIFT - 12))     /* 8MB of VA */
#endif

static unsigned long randomize_stack_top(unsigned long stack_top)
{
    unsigned int random_variable = 0;

    if ((current->flags & PF_RANDOMIZE) &&
            !(current->personality & ADDR_NO_RANDOMIZE)) {
            random_variable = get_random_int() & STACK_RND_MASK;
            random_variable <<= PAGE_SHIFT;
    }
#ifdef CONFIG_STACK_GROWSUP
    return PAGE_ALIGN(stack_top) + random_variable;
#else
    return PAGE_ALIGN(stack_top) - random_variable;
#endif
}
Run Code Online (Sandbox Code Playgroud)

我想问一下这是否适合推理我的问题?

linux stack 32-bit entropy aslr

4
推荐指数
1
解决办法
1352
查看次数

如何从np直方图计算熵

我有一个直方图的例子:

mu1 = 10, sigma1 = 10
s1 = np.random.normal(mu1, sigma1, 100000)
Run Code Online (Sandbox Code Playgroud)

并计算

hist1 = np.histogram(s1, bins=50, range=(-10,10), density=True)
for i in hist1[0]:
    ent = -sum(i * log(abs(i)))
print (ent)
Run Code Online (Sandbox Code Playgroud)

现在我想从给定的直方图数组中找到熵,但由于np.histogram返回两个数组,我在计算熵方面遇到了麻烦.我怎样才能调用第一个np.histogram数组并计算熵?即使上面的代码是正确的,我也会得到熵的数学域错误.:(

**编辑:当Mu = 0时如何找到熵?和log(0)产生数学域错误?


所以我想写的实际代码是:

mu1, sigma1 = 0, 1
mu2, sigma2 = 10, 1
s1 = np.random.normal(mu1, sigma1, 100000)
s2 = np.random.normal(mu2, sigma2, 100000)

hist1 = np.histogram(s1, bins=100, range=(-20,20), density=True)
data1 = hist1[0]
ent1 = -(data1*np.log(np.abs(data1))).sum() 

hist2 = np.histogram(s2, bins=100, range=(-20,20), density=True)
data2 = hist2[0]
ent2 = -(data2*np.log(np.abs(data2))).sum() 
Run Code Online (Sandbox Code Playgroud)

到目前为止,第一个示例ent1将产生nan,而第二个示例ent2产生数学域错误:(

python numpy entropy histogram

4
推荐指数
1
解决办法
3133
查看次数

可以应用 Kullback-Leibler 来比较两个图像吗?

我知道 KL 不是一个指标,也不能被视为一个指标。但是,是否可以使用 KL 来衡量一幅图像与另一幅图像的差异?我试图从中得出一种直觉。提前感谢所有回复。

image-processing entropy information-theory

4
推荐指数
1
解决办法
2644
查看次数

我需要一些弱熵.我知道我可以使用一个单元化缓冲区,但如果我只需要一个整数值,它的地址就足够了吗?

我在Linux上,它具有地址空间布局随机化.是否有必要在堆栈上声明一个缓冲区,保持未初始化,并将其用于熵,或者我可以只获取堆栈中已有内容的地址,将其转换为整数并且(知道它有点随机到期)解决空间布局随机化问题)使用那个整数来代替熵?

指针方法的优点在于它不会产生编译器警告,因为当您尝试操作时,单位化缓冲区会执行,但在我的测试中,似乎只有地址的低位部分(可能是最后一个或两个字节)会改变从调用到调用.熵缓冲区似乎表现得更糟,通常根本没有任何东西.

c entropy

3
推荐指数
1
解决办法
187
查看次数

BigQuery:计算列的熵

我对BQ人员有一个建议:我认为如果有一个内置函数可以返回列的熵,那将非常有用.一列离散的类别或值将相对容易.思考?这已经存在但我找不到了吗?

entropy google-bigquery

3
推荐指数
1
解决办法
1489
查看次数