home.social

#onlineprivacy — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #onlineprivacy, aggregated by home.social.

  1. FYI: Explaining COPPA: COPPA: the 1998 US statute barring online services from collecting personal data from under-13s without verifiable parental consent, ad identifiers included. ppc.land/coppa/ #COPPA #PrivacyLaw #ChildSafety #DataProtection #OnlinePrivacy

  2. FYI: Explaining COPPA: COPPA: the 1998 US statute barring online services from collecting personal data from under-13s without verifiable parental consent, ad identifiers included. ppc.land/coppa/ #COPPA #PrivacyLaw #ChildSafety #DataProtection #OnlinePrivacy

  3. FYI: Explaining COPPA: COPPA: the 1998 US statute barring online services from collecting personal data from under-13s without verifiable parental consent, ad identifiers included. ppc.land/coppa/ #COPPA #PrivacyLaw #ChildSafety #DataProtection #OnlinePrivacy

  4. Decentralized browser-based P2P E2EE messaging.

    The key detail that sets this apart from other messaging apps is the browser-based client-side cryptography philosophy.

    No need to install anything. Your ID is crypto-random and so the app doesnt need to rely on any central registration system like phone numbers. Your ID is unguessable and to connect to someone, you have to explicitly share it.

    WebRTC has other nuances like being to route through a shared network for secure/faster transfer.

    I hope this project has reached a level i can share the following details. I've made a genuine effort towards documentation and transparancy. I dont think it'll ever be enough and so im still concerned it isnt ready to share. While im using AI throughout. This is not a vibecoded project. There is attention throughout for unit tests and formal-verification. With your feedback, id like to make improvements for clarity throughout.

    This version of the app demonstrates a fairly unique approach using a browser-based, local-only and webrtc approach. I know it's impossible for any system to be the "world's most secure", but that isnt a reason to not try. By rigorously implementing an exhaustive list of security features and practices, the aim is to get as close as possible.

    * [Enkrypted.Chat](enkrypted.chat/)

    This is intended to demonstrate client-side managed secure cryptography.

    * [Introducing Enkrypted Chat](positive-intentions.com/blog/i)
    * [Whitepaper (work-in-progress)](positive-intentions.com/docs/t)
    * [Protocol Spec (work-in-progress)](positive-intentions.com/docs/t)
    * [Roadmap](positive-intentions.com/docs/t)

    I know ive tried to compress a lot of my journey into one post. The project above is going to be tricky to understand. Feel free to reach out for clarity on any of the details.

    IMPORTANT: While this is aiming to provide a secure experience, It is [not audited or reviewed](reddit.com/r/CyberSecurityAdvi). **Shared for testing, feedback and demo purposes only.** Please use responsibly.

    #Privacy #OnlinePrivacy #DataPrivacy #Infosec #CyberSecurity #OpSec #DigitalRights #AntiSurveillance #DataOwnership #E2EE #P2P #PeerToPeer #WebRTC #LocalFirst #LocalOnly #NoCloud #NoRegistration #PWA #SignalProtocol #PostQuantum #Cryptography #SecureMessaging #PrivateChat #EncryptedChat #Decentralized #OpenSource #SelfHosted #BetaTesting #FeedbackWelcome #TechDemo #ProofOfConcept #BuildInPublic #IndieDev #DevCommunity

  5. Decentralized browser-based P2P E2EE messaging.

    The key detail that sets this apart from other messaging apps is the browser-based client-side cryptography philosophy.

    No need to install anything. Your ID is crypto-random and so the app doesnt need to rely on any central registration system like phone numbers. Your ID is unguessable and to connect to someone, you have to explicitly share it.

    WebRTC has other nuances like being to route through a shared network for secure/faster transfer.

    I hope this project has reached a level i can share the following details. I've made a genuine effort towards documentation and transparancy. I dont think it'll ever be enough and so im still concerned it isnt ready to share. While im using AI throughout. This is not a vibecoded project. There is attention throughout for unit tests and formal-verification. With your feedback, id like to make improvements for clarity throughout.

    This version of the app demonstrates a fairly unique approach using a browser-based, local-only and webrtc approach. I know it's impossible for any system to be the "world's most secure", but that isnt a reason to not try. By rigorously implementing an exhaustive list of security features and practices, the aim is to get as close as possible.

    * [Enkrypted.Chat](enkrypted.chat/)

    This is intended to demonstrate client-side managed secure cryptography.

    * [Introducing Enkrypted Chat](positive-intentions.com/blog/i)
    * [Whitepaper (work-in-progress)](positive-intentions.com/docs/t)
    * [Protocol Spec (work-in-progress)](positive-intentions.com/docs/t)
    * [Roadmap](positive-intentions.com/docs/t)

    I know ive tried to compress a lot of my journey into one post. The project above is going to be tricky to understand. Feel free to reach out for clarity on any of the details.

    IMPORTANT: While this is aiming to provide a secure experience, It is [not audited or reviewed](reddit.com/r/CyberSecurityAdvi). **Shared for testing, feedback and demo purposes only.** Please use responsibly.

    #Privacy #OnlinePrivacy #DataPrivacy #Infosec #CyberSecurity #OpSec #DigitalRights #AntiSurveillance #DataOwnership #E2EE #P2P #PeerToPeer #WebRTC #LocalFirst #LocalOnly #NoCloud #NoRegistration #PWA #SignalProtocol #PostQuantum #Cryptography #SecureMessaging #PrivateChat #EncryptedChat #Decentralized #OpenSource #SelfHosted #BetaTesting #FeedbackWelcome #TechDemo #ProofOfConcept #BuildInPublic #IndieDev #DevCommunity

  6. Decentralized browser-based P2P E2EE messaging.

    The key detail that sets this apart from other messaging apps is the browser-based client-side cryptography philosophy.

    No need to install anything. Your ID is crypto-random and so the app doesnt need to rely on any central registration system like phone numbers. Your ID is unguessable and to connect to someone, you have to explicitly share it.

    WebRTC has other nuances like being to route through a shared network for secure/faster transfer.

    I hope this project has reached a level i can share the following details. I've made a genuine effort towards documentation and transparancy. I dont think it'll ever be enough and so im still concerned it isnt ready to share. While im using AI throughout. This is not a vibecoded project. There is attention throughout for unit tests and formal-verification. With your feedback, id like to make improvements for clarity throughout.

    This version of the app demonstrates a fairly unique approach using a browser-based, local-only and webrtc approach. I know it's impossible for any system to be the "world's most secure", but that isnt a reason to not try. By rigorously implementing an exhaustive list of security features and practices, the aim is to get as close as possible.

    * [Enkrypted.Chat](enkrypted.chat/)

    This is intended to demonstrate client-side managed secure cryptography.

    * [Introducing Enkrypted Chat](positive-intentions.com/blog/i)
    * [Whitepaper (work-in-progress)](positive-intentions.com/docs/t)
    * [Protocol Spec (work-in-progress)](positive-intentions.com/docs/t)
    * [Roadmap](positive-intentions.com/docs/t)

    I know ive tried to compress a lot of my journey into one post. The project above is going to be tricky to understand. Feel free to reach out for clarity on any of the details.

    IMPORTANT: While this is aiming to provide a secure experience, It is [not audited or reviewed](reddit.com/r/CyberSecurityAdvi). **Shared for testing, feedback and demo purposes only.** Please use responsibly.

    #Privacy #OnlinePrivacy #DataPrivacy #Infosec #CyberSecurity #OpSec #DigitalRights #AntiSurveillance #DataOwnership #E2EE #P2P #PeerToPeer #WebRTC #LocalFirst #LocalOnly #NoCloud #NoRegistration #PWA #SignalProtocol #PostQuantum #Cryptography #SecureMessaging #PrivateChat #EncryptedChat #Decentralized #OpenSource #SelfHosted #BetaTesting #FeedbackWelcome #TechDemo #ProofOfConcept #BuildInPublic #IndieDev #DevCommunity

  7. Decentralized browser-based P2P E2EE messaging.

    The key detail that sets this apart from other messaging apps is the browser-based client-side cryptography philosophy.

    No need to install anything. Your ID is crypto-random and so the app doesnt need to rely on any central registration system like phone numbers. Your ID is unguessable and to connect to someone, you have to explicitly share it.

    WebRTC has other nuances like being to route through a shared network for secure/faster transfer.

    I hope this project has reached a level i can share the following details. I've made a genuine effort towards documentation and transparancy. I dont think it'll ever be enough and so im still concerned it isnt ready to share. While im using AI throughout. This is not a vibecoded project. There is attention throughout for unit tests and formal-verification. With your feedback, id like to make improvements for clarity throughout.

    This version of the app demonstrates a fairly unique approach using a browser-based, local-only and webrtc approach. I know it's impossible for any system to be the "world's most secure", but that isnt a reason to not try. By rigorously implementing an exhaustive list of security features and practices, the aim is to get as close as possible.

    * [Enkrypted.Chat](enkrypted.chat/)

    This is intended to demonstrate client-side managed secure cryptography.

    * [Introducing Enkrypted Chat](positive-intentions.com/blog/i)
    * [Whitepaper (work-in-progress)](positive-intentions.com/docs/t)
    * [Protocol Spec (work-in-progress)](positive-intentions.com/docs/t)
    * [Roadmap](positive-intentions.com/docs/t)

    I know ive tried to compress a lot of my journey into one post. The project above is going to be tricky to understand. Feel free to reach out for clarity on any of the details.

    IMPORTANT: While this is aiming to provide a secure experience, It is [not audited or reviewed](reddit.com/r/CyberSecurityAdvi). **Shared for testing, feedback and demo purposes only.** Please use responsibly.

    #Privacy #OnlinePrivacy #DataPrivacy #Infosec #CyberSecurity #OpSec #DigitalRights #AntiSurveillance #DataOwnership #E2EE #P2P #PeerToPeer #WebRTC #LocalFirst #LocalOnly #NoCloud #NoRegistration #PWA #SignalProtocol #PostQuantum #Cryptography #SecureMessaging #PrivateChat #EncryptedChat #Decentralized #OpenSource #SelfHosted #BetaTesting #FeedbackWelcome #TechDemo #ProofOfConcept #BuildInPublic #IndieDev #DevCommunity

  8. Decentralized browser-based P2P E2EE messaging.

    The key detail that sets this apart from other messaging apps is the browser-based client-side cryptography philosophy.

    No need to install anything. Your ID is crypto-random and so the app doesnt need to rely on any central registration system like phone numbers. Your ID is unguessable and to connect to someone, you have to explicitly share it.

    WebRTC has other nuances like being to route through a shared network for secure/faster transfer.

    I hope this project has reached a level i can share the following details. I've made a genuine effort towards documentation and transparancy. I dont think it'll ever be enough and so im still concerned it isnt ready to share. While im using AI throughout. This is not a vibecoded project. There is attention throughout for unit tests and formal-verification. With your feedback, id like to make improvements for clarity throughout.

    This version of the app demonstrates a fairly unique approach using a browser-based, local-only and webrtc approach. I know it's impossible for any system to be the "world's most secure", but that isnt a reason to not try. By rigorously implementing an exhaustive list of security features and practices, the aim is to get as close as possible.

    * [Enkrypted.Chat](enkrypted.chat/)

    This is intended to demonstrate client-side managed secure cryptography.

    * [Introducing Enkrypted Chat](positive-intentions.com/blog/i)
    * [Whitepaper (work-in-progress)](positive-intentions.com/docs/t)
    * [Protocol Spec (work-in-progress)](positive-intentions.com/docs/t)
    * [Roadmap](positive-intentions.com/docs/t)

    I know ive tried to compress a lot of my journey into one post. The project above is going to be tricky to understand. Feel free to reach out for clarity on any of the details.

    IMPORTANT: While this is aiming to provide a secure experience, It is [not audited or reviewed](reddit.com/r/CyberSecurityAdvi). **Shared for testing, feedback and demo purposes only.** Please use responsibly.

    #Privacy #OnlinePrivacy #DataPrivacy #Infosec #CyberSecurity #OpSec #DigitalRights #AntiSurveillance #DataOwnership #E2EE #P2P #PeerToPeer #WebRTC #LocalFirst #LocalOnly #NoCloud #NoRegistration #PWA #SignalProtocol #PostQuantum #Cryptography #SecureMessaging #PrivateChat #EncryptedChat #Decentralized #OpenSource #SelfHosted #BetaTesting #FeedbackWelcome #TechDemo #ProofOfConcept #BuildInPublic #IndieDev #DevCommunity

  9. Leaving digital breadcrumbs of fake info online? 🤔 Not the Jedi mind trick you were hoping for! 🙄 This article's advice is like trying to hide from the Empire with a paper bag over your head. Good luck with that. 🛸
    blog.alcazarsec.com/posts/shou #digitalbreadcrumbs #fakeinfo #JediMindTrick #EmpireHiding #onlineprivacy #HackerNews #ngated

  10. This Is What a Personal Surveillance System Actually Looks Like

    You stop thinking of it as surveillance. It becomes “the system.” Just part of how things run.

    cha1nc0der.wordpress.com/2026/

  11. 👀 Oh, joy! People actually read privacy policies now—who knew? 🙄 Cape and Proton must be so proud of their "genius" #experiment that took a whole two weeks to crack. 🎉 Next time, maybe hide a free trip to the moon—at least that would be original. 🌝
    cape.co/blog/easter-egg-in-pri #privacypolicy #reading #habits #onlineprivacy #technews #satire #HackerNews #ngated

  12. I am back!!!
    And I brought Jacqueline Jayne with me. 🤘✨

    Make some noise for an awesome episode 🎉

    After taking a brief pause, I’m back at full speed with my shows: Redefining #Society & #Technology on ITSPmagazine Podcasts — ready to bring you bold conversations that challenge assumptions and question the role of technology in our lives.

    This is the first episode published for the 2025 season, but trust me, many more are already recorded and coming your way soon.

    And we’re kicking things off with a big one.

    🚨 Australia recently banned social media for kids under 16.
    A bold move? Sure. A solution? Well, that’s where the debate begins.

    In this episode of Redefining Society & Technology, I sit down with my Australian friend Jacqueline Jayne to break it all down. JJ is a cybersecurity and human risk expert, and she’s got some strong thoughts about why prohibition never works.

    Let’s face it—does banning something ever actually solve the problem?

    We explore the unintended consequences:
    ⚠️ Will this really protect kids, or just push them to riskier online spaces?
    ⚠️ What about the communities that rely on #socialmedia for connection and support?
    ⚠️ Who’s actually responsible for educating kids (and adults) about online safety?

    Technology moves fast, but knee-jerk policies don’t always keep up. Instead of banning, maybe it’s time we start educating.

    📺 Start with the teaser video youtu.be/6wKbgTeNux8

    📺 Then move on the full length video youtu.be/5ZehKjNsavc

    🎙️ Or listen to the audio if it is your preferred media redefining-society-podcast.sim

    The importnat thing is that you listen now and join the conversation -- comment below!

    Let’s rethink, redefine, and challenge the way we approach technology in society.

    Subscribe to the podcast for many more stories about our relationship with technology and what it means in our digital-analog hybrid society.

    redefiningsocietyandtechnology

    Enjoy!

    #Technology, #CyberSecurity, #DigitalSafety, #SocialMedia, #OnlinePrivacy, #InternetRegulation, #TechEthics, #DigitalLiteracy, #CyberAwareness, #FutureOfTech, #HumanRisk, #ParentalControls, #OnlineSafety, #HybridSociety, #TechPolicy, #BanningSocialMedia, #DigitalCitizenship, #DataProtection, #CyberEducation, #TechForGood

  13. Don’t Use Session (Signal Fork)

    Last year, I outlined the specific requirements that an app needs to have in order for me to consider it a Signal competitor.

    Afterwards, I had several people ask me what I think of a Signal fork called Session. My answer then is the same thing I’ll say today:

    Don’t use Session.

    The main reason I said to avoid Session, all those months ago, was simply due to their decision to remove forward secrecy (which is an important security property of cryptographic protocols they inherited for free when they forked libsignal).

    Lack of forward secrecy puts you in the scope of Key Compromise Impersonation (KCI) attacks, which serious end-to-end encryption apps should prevent if they want to sit at the adults table. This is why I don’t recommend Tox.

    And that observation alone should have been enough for anyone to run, screaming, in the other direction from Session. After all, removing important security properties from a cryptographic security protocol is exactly the sort of thing a malicious government would do (especially if the cover story for such a change involves the introduction of swarms and “onion routing”–which computer criminals might think sounds attractive due to their familiarity with the Tor network).

    Unfortunately, some people love to dig their heels in about messaging apps. So let’s take a closer look at Session.

    I did not disclose this blog post privately to the Session developers before pressing publish.

    I do not feel that cryptographic issues always require coordinated disclosure with the software vendor. As Bruce Schneier argues, full disclosure of security vulnerabilities is a “damned good idea”.

    I have separated this blog post into two sections: Security Issues and Gripes.

    Security Issues

    1. Insufficient Entropy in Ed25519 Keys
    2. In-Band Negotiation for Message Signatures
    3. Using Public Keys as AES-GCM Keys

    Insufficient Entropy in Ed25519 Keys

    One of the departures of Session from Signal is the use of Ed25519 rather than X25519 for everything.

    Ed25519 Keypairs generated from their KeyPairUtilities object only have 128 bits of entropy, rather than the ~253 bits (after clamping) you’d expect from an Ed25519 seed.

    fun generate(): KeyPairGenerationResult {    val seed = sodium.randomBytesBuf(16)    try {        return generate(seed)    } catch (exception: Exception) {        return generate()    }}fun generate(seed: ByteArray): KeyPairGenerationResult {    val padding = ByteArray(16) { 0 }    val ed25519KeyPair = sodium.cryptoSignSeedKeypair(seed + padding)

    As an implementation detail, they encode a recovery key as a “mnemonic” (see also: a gripe about their mnemonic decoding).

    Does This Matter?

    You might think that clearing the highest 128 bits of the Ed25519 seed is fine for one of the following reasons:

    1. It’s hashed with SHA512 before clamping.
    2. Ed25519 only offers 128 bits of security.
    3. Some secret third (and possibly unreasonable) argument.

    It’s true that Ed25519 targets the 128-bit security level, if you’re focused on the security of the Elliptic Curve Discrete Logarithm Problem (ECDLP).

    Achieving 128 bits of security in this model requires 256-bit secrets, since the best attack against the ECDLP finds a discrete logarithm in guesses.

    Additionally, having 256-bit secrets makes the multi-user security of the scheme easy to reason about, whereas 128-bit secrets makes it a lot harder. (This mostly comes up in criticism of AES, which has a 128-bit block size.)

    When your secret only has possible values, your multi-user security is no longer as secure as Ed25519 expects.

    Additionally, you can shove the SHA512 + clamping in your attack script (thus negating the first objection) and find the corresponding secret key in queries if you know the top 128 bits were initialized to 0, using a modified version of Pollard’s rho for discrete logarithms.

    This means that Session’s KeyPairUtilities class only provides 64 bits of ECDLP security.

    CMYKat

    What does 64 bits of ECDLP Security actually mean?

    I provided a technical definition already, but that’s probably not meaningful to most people outside computer security.

    What this means is that a distributed computing effort can find the secret key for a given Ed25519 public key generated from this algorithm in only queries.

    For flavor, queries is approximately the attack cost to find a SHA1 collision, which we know is possible and economical.

    Based on this attack, the authors projected that a collision attack on SHA-1 may cost between US$75K and US$120K by renting GPU computing time on Amazon EC2 using spot-instances, which is significantly lower than Schneier’s 2012 estimates.

    — from the Shattered paper, page 2.

    I don’t know if this was mere stupidity or an intentional NOBUS backdoor that only well-resourced adversaries can crack. (I also don’t have hundreds of thousands of dollars lying around to test this myself.)

    How would you exploit this in practice?

    If you’re not familiar with Pollard’s rho, then this section might be a bit abstract and difficult to follow.

    Instead of directly passing a full 256-bit value to your oracle with each iteration (like you do with a standard Pollard’s rho implementation), you would need mutate the output the same way Session does (n.b., replace 128 bits of the seed with zeroes), hash & clamp that, and then perform the scalar multiplication.

    It should be a bit more expensive than a raw ECDLP attack against a 128-bit curve (due to the hashing), but the strategy should succeed in the expected number of queries (average case).

    Although this makes the attack totally feasible for a nation state, I do not have the resources to build and test a proof of concept against a candidate keypair. If anyone does, get in touch, it would make for a fun research project.

    CMYKat

    Alternatively, Pollard’s kangaroo might be a better cryptanalysis technique for Session’s setup.

    Note: If there is any classified government algorithm especially suited for cracking Ed25519 keys constructed exactly like Session does, it’s not one I’ve ever heard of. I don’t have any security clearances, nor do I want one.

    However, ECDLP security of elliptic curve-based protocols is extremely well-understood in the cryptography literature.

    In-Band Negotiation for Message Signatures

    If you thought the previous issue was mitigated by the use of Ed25519 signatures on each message, don’t worry, the Session developers screwed this up too!

    // 2. ) Get the message partsval signature = plaintextWithMetadata.sliceArray(plaintextWithMetadata.size - signatureSize until plaintextWithMetadata.size)val senderED25519PublicKey = plaintextWithMetadata.sliceArray(plaintextWithMetadata.size - (signatureSize + ed25519PublicKeySize) until plaintextWithMetadata.size - signatureSize)val plaintext = plaintextWithMetadata.sliceArray(0 until plaintextWithMetadata.size - (signatureSize + ed25519PublicKeySize))// 3. ) Verify the signatureval verificationData = (plaintext + senderED25519PublicKey + recipientX25519PublicKey)try {    val isValid = sodium.cryptoSignVerifyDetached(signature, verificationData, verificationData.size, senderED25519PublicKey)    if (!isValid) { throw Error.InvalidSignature }} catch (exception: Exception) {    Log.d("Loki", "Couldn't verify message signature due to error: $exception.")    throw Error.InvalidSignature}

    What this code is doing (after decryption):

    1. Grab the public key from the payload.
    2. Grab the signature from the payload.
    3. Verify that the signature on the rest of the payload is valid… for the public key that was included in the payload.

    Congratulations, Session, you successfully reduced the utility of Ed25519 to that of a CRC32!

    Art: AJ

    Using Public Keys As AES-GCM Keys

    I wasn’t entirely sure whether this belongs in the “gripes” section or not, because it’s so blatantly stupid that there’s basically no way Quarkslab would miss it if it mattered.

    When encrypting payloads for onion routing, it uses the X25519 public key… as a symmetric key, for AES-GCM. See, encryptPayloadForDestination().

    val result = AESGCM.encrypt(plaintext, x25519PublicKey)deferred.resolve(result)

    Session also does this inside of encryptHop().

    val plaintext = encode(previousEncryptionResult.ciphertext, payload)val result = AESGCM.encrypt(plaintext, x25519PublicKey)

    In case you thought, maybe, that this is just a poorly named HPKE wrapper… nope!

     /** * Sync. Don't call from the main thread. */internal fun encrypt(plaintext: ByteArray, symmetricKey: ByteArray): ByteArray {    val iv = Util.getSecretBytes(ivSize)    synchronized(CIPHER_LOCK) {        val cipher = Cipher.getInstance("AES/GCM/NoPadding")        cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(symmetricKey, "AES"), GCMParameterSpec(gcmTagSize, iv))        return ByteUtil.combine(iv, cipher.doFinal(plaintext))    }}

    This obviously doesn’t encrypt it such that only the recipient (that owns the secret key corresponding to the public key) can decrypt the message. It makes it to where anyone that knows the public key can decrypt it.

    I wonder if this impacts their onion routing assumptions?

    Why should I trust session?

    (…)

    When using Session, your messages are sent to their destinations through a decentralised onion routing network similar to Tor (with a few key differences) (…)

    Session FAQs

    Gripes

    Some of these aren’t really security issues, but are things I found annoying as a security engineer that specializes in applied cryptography.

    1. Mnemonic Decoding Isn’t Constant-Time
    2. Unsafe Use of SecureRandom on Android

    Mnemonic Decoding Isn’t Constant-Time

    The way mnemonics are decoded involves the modulo operator, which implicitly uses integer division (which neither Java nor Kotlin nor Swift implement in constant-time).

    return wordIndexes.windowed(3, 3) { (w1, w2, w3) ->    val x = w1 + n * ((n - w1 + w2) % n) + n * n * ((n - w2 + w3) % n)    if (x % n != w1.toLong()) throw DecodingError.Generic    val string = "0000000" + x.toString(16)    swap(string.substring(string.length - 8 until string.length))}.joinToString(separator = "") { it }

    This isn’t a real security problem, but I did find it annoying to see in an app evangelized as “better than Signal” on privacy forums.

    Unsafe Use of SecureRandom on Android

    The recommended way to get secure random numbers on Android (or any Java or Kotlin software, really) is simply new SecureRandom(). If you’re running a service in a high-demand environment, you can take extra care to make a thread-local instance of SecureRandom. But a local RNG for a single user isn’t that.

    What does Session do? They use SHA1PRNG, of course.

    public static byte[] getSecretBytes(int size) {  try {    byte[] secret = new byte[size];    SecureRandom.getInstance("SHA1PRNG").nextBytes(secret);    return secret;  } catch (NoSuchAlgorithmException e) {    throw new AssertionError(e);  }}

    And again here.

    SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

    Why would anyone care about this?

    On modern Android devices, this isn’t a major concern, but the use of SHA1PRNG used to be a source of vulnerabilities in Android apps. (See also: this slide deck.)

    Closing Thoughts

    There are a lot of Session’s design decisions that are poorly specified in their Whitepaper and I didn’t look at. For example, how group messaging keys are managed.

    When I did try to skim that part of the code, I did find a component where you can coerce Android clients into running a moderately expensive Argon2 KDF by simply deleting the nonce from the message.

    val isArgon2Based = (intermediate["nonce"] == null)if (isArgon2Based) {    // Handle old Argon2-based encryption used before HF16

    That’s hilarious.

    Cryptography nerds should NOT be finding the software that activists trust with their privacy hilarious.

    CMYKat

    So if you were wondering what my opinion on Session is, now you know: Don’t use Session. Don’t let your friends use Session.

    If you’re curious about the cryptography used by other messaging apps, please refer to this page that collects my blogs about this topic.

    #AESGCM #Android #asymmetricCryptography #cryptography #E2EE #Ed25519 #Java #Kotlin #messagingApps #OnlinePrivacy #privateMessaging #Session #Signal #SignalAlternatives #vuln

  14. Reddit has updated its robots.txt to block all web crawlers

    Bing, DuckDuckGo, Yandex, Yahoo, and other search engines have not indexed any pages from Reddit in the past 24 hours.

    Google, on the other hand, still keeps indexing pages.

    stackdiary.com/reddit-has-upda

    #Reddit #WebCrawlers #DataPrivacy #SEO #DataProtection #WebScraping #InternetArchive #OpenAI #PrivacyPolicy #DataControl #SearchEngine #DataMining #RedditBots #PublicContent #TechNews #OnlinePrivacy #DataSecurity

  15. Reddit has updated its robots.txt to block all web crawlers

    Bing, DuckDuckGo, Yandex, Yahoo, and other search engines have not indexed any pages from Reddit in the past 24 hours.

    Google, on the other hand, still keeps indexing pages.

    stackdiary.com/reddit-has-upda

    #Reddit #WebCrawlers #DataPrivacy #SEO #DataProtection #WebScraping #InternetArchive #OpenAI #PrivacyPolicy #DataControl #SearchEngine #DataMining #RedditBots #PublicContent #TechNews #OnlinePrivacy #DataSecurity

  16. Reddit has updated its robots.txt to block all web crawlers

    Bing, DuckDuckGo, Yandex, Yahoo, and other search engines have not indexed any pages from Reddit in the past 24 hours.

    Google, on the other hand, still keeps indexing pages.

    stackdiary.com/reddit-has-upda

    #Reddit #WebCrawlers #DataPrivacy #SEO #DataProtection #WebScraping #InternetArchive #OpenAI #PrivacyPolicy #DataControl #SearchEngine #DataMining #RedditBots #PublicContent #TechNews #OnlinePrivacy #DataSecurity

  17. Reddit has updated its robots.txt to block all web crawlers

    Bing, DuckDuckGo, Yandex, Yahoo, and other search engines have not indexed any pages from Reddit in the past 24 hours.

    Google, on the other hand, still keeps indexing pages.

    stackdiary.com/reddit-has-upda

    #Reddit #WebCrawlers #DataPrivacy #SEO #DataProtection #WebScraping #InternetArchive #OpenAI #PrivacyPolicy #DataControl #SearchEngine #DataMining #RedditBots #PublicContent #TechNews #OnlinePrivacy #DataSecurity